Obsah:
- Krok 1: Tip k zapamatování
- Krok 2: MCP23016
- Krok 3: Adresa
- Krok 4: Příkazy
- Krok 5: Kategorie
- Krok 6: Struktura pro komunikaci
- Krok 7: Program
- Krok 8: MCP23016
- Krok 9: ESP-01
- Krok 10: Montáž ESP01
- Krok 11: Knihovny a proměnné
- Krok 12: Nastavení
- Krok 13: Smyčka
- Krok 14: ParserData
- Krok 15: ConfigurePort
- Krok 16: WritePinData
- Krok 17: WriteBlockData & SetupWiFi
- Krok 18: App
- Krok 19: Stažení
Video: Nízká cena automatizace s ESP01: 19 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:23
Dnes budeme diskutovat o automatizaci pomocí ESP01 se 16 relé. Jedná se o super levný designový model, kde můžete znásobit moduly a získat až 128 relé, protože do tohoto mikrokontroléru je možné vložit až osm portových expandérů.
V našem okruhu budete mít aplikaci ve smartphonu, která komunikuje s ESP01. Bude mít expandér se 16 porty, každý připojený k relé. Máme také nastavitelný zdroj 3v3. Budeme tedy ovládat 16kanálový reléový modul pomocí ESP01 prostřednictvím aplikace pro Android, kterou vám dávám k dispozici.
Krok 1: Tip k zapamatování
Je důležité, přátelé, že tento čip jsem použil v obvodu nazvaném MCP23016. Je také důležité, abyste sledovali video EXPANZOR IOS PRO ESP32, ESP8266 A ARDUINO, ve kterém zařízení testuji a ukazuji, že funguje pro tyto tři typy desek.
Krok 2: MCP23016
Zde máme obrázek MCP23016, což je čip s 28 piny. Je důležité zmínit, že existuje také model MCP23017, který je běžnější a nepotřebuje odpor a kondenzátor, protože má vnitřní hodiny. To je jednodušší, ale jeho připnutí se liší od toho, co zobrazujeme v tomto videu.
Krok 3: Adresa
K definování adresy MCP23016 používáme piny A0, A1 a A2. Pro změnu adresy je můžete nechat na VYSOKÉ nebo NÍZKÉ.
Adresa bude vytvořena následovně:
MCP_Address = 20 + (A2 A1 A0)
Tam, kde A2 A1 A0 může nabývat VYSOKÝCH / NÍZKÝCH hodnot, je binární číslo od 0 do 7 forem.
Například:
A2> GND, A1> GND, A0> GND (znamená 000, pak 20 + 0 = 20)
Nebo jinak, A2> VYSOKÝ, A1> GND, A0> VYSOKÝ (znamená 101, pak 20 + 5 = 25)
Krok 4: Příkazy
Zde je tabulka s příkazy pro komunikaci:
Krok 5: Kategorie
GP0 / GP1 - registry datových portů
Existují dva registry, které poskytují přístup ke dvěma portům GPIO.
Čtení registru poskytuje stav pinů na tomto portu.
Bit = 1> VYSOKÝ Bit = 0> NÍZKÝ
IODIR0 / IODIR1
Režim pinů ovládají dva registry. (Vstup nebo výstup)
Bit = 1> VSTUP Bit = 0> VÝSTUP
Krok 6: Struktura pro komunikaci
Zde hovoříme o adrese čipu a přístupu k příkazu a datům, což je druh protokolu, který je třeba provést pro odesílání informací.
Krok 7: Program
Uděláme program, který spočívá v komunikaci ESP01 s MCP23016, abychom mohli používat více GPIO. Těchto 16 nových GPIO, které budeme mít, bude ovládat 16kanálový reléový modul.
Příkazy budou odeslány na ESP01 prostřednictvím aplikace pro Android.
Krok 8: MCP23016
Krok 9: ESP-01
Toto je deska se 16 relé.
Krok 10: Montáž ESP01
Krok 11: Knihovny a proměnné
Zahrneme knihovny zodpovědné za komunikaci i2c a za vytvoření přístupového bodu a webového serveru. Definujeme adresu čipu a porty. Nakonec definujeme proměnné pro uložení hodnot pinů MCP.
#include // responzel pela comunicação i2c. #include // responzel por criar o accesspoint eo webserver WiFiServer server (80); // webserver para acessarmos através do aplicativo // endereço I2C do MCP23016 #define MCPAddress 0x20 // ENDEREOES DE REGIS definujte GP0 0x00 // REGISTR DATOVÉHO PORTU 0 #definujte GP1 0x01 // REGISTR DATOVÉHO PORTU 1 #definujte IODIR0 0x06 // I/O DIRECTION REGISTER 0 #define IODIR1 0x07 // I/O DIRECTION REGISTER 1 // guarda os valores dos pinos do MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
Krok 12: Nastavení
Inicializujeme ESP01 a konfigurujeme porty. Rovněž konfigurujeme přístupový bod a inicializujeme server.
neplatné nastavení () {Serial.begin (9600); zpoždění (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, VÝSTUP); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // konfigurace přístupového bodu server.begin (); // inicializace serveru}
Krok 13: Smyčka
Zde kontroluji, zda byli k serveru připojeni nějací klienti. Četli jsme také první řádek požadavku. Extrahujeme data pro manipulaci, definujeme výchozí záhlaví odpovědi a odesíláme tuto odpověď klientovi.
void loop () {WiFiClient client = server.available (); // Verifica se um cliente foi conectado if (! Client) {return; } String req = client.readStringUntil ('\ r'); // Faz a leitura da primeira linha da requisição/ */MR é o header prefixo para saber se a requisição é a esperada para os relés */if (req.indexOf ("/MR")! = -1) {parserData (req); // další část požadavku na další manipulaci} else {Serial.println ("neplatný požadavek"); vrátit se; } client.flush (); Řetězec s = "HTTP/1,1 200 OK / r / n"; // cabeçalho padrão de resposta client.print (s); // envia a resposta para o cliente delay (1); } // koncová smyčka
Krok 14: ParserData
Z požadavku hledáme data související s relé. Data pak odešleme na MCP23016.
// část požadavku na odkazování na referenční hodnotu parserData (řetězcová data) {uint8_t relay = -1; uint8_t gp = -1; hodnota uint8_t = -1; int index = data.indexOf ("/MR"); // busca o index do prefixo MR if (data [index+5] == '/') ///MR01/1, onde 0 = GP; 1 = SPOLEČNOST; 1 = ESTADO (zapnuto/vypnuto) {gp = data [index+3]-'0'; relé = data [index+4]-'0'; hodnota = data [index+6]-'0'; // envia os dados para o MCP23016 // [relay-1] porque o MCP vai de 0-7 os pinos writePinData (relay-1, value, gp); }}
Krok 15: ConfigurePort
Nastavili jsme režim GPIO pin (GP0 nebo GP1).
// konfigurace nebo režim GPIO (GP0 nebo GP1) // parametry parametru: // port: GP0 nebo GP1 // VSTUP para todos jako porty do GP trabalharem como entrada // OUTPUT para todos as portas do GP trabalharem como saida // vlastní počet barev 0-255 indikátorů nebo modů portů (1 = VSTUP, 0 = VÝSTUP) // ex: 0x01 nebo B00000001 ou 1: indikace quen apenas o GPX.0 trabalhará como entrada, o restante como saida void configurePort (port uint8_t, uint8_t vlastní) {if (custom == INPUT) {writeBlockData (port, 0xFF); } else if (custom == VÝSTUP) {writeBlockData (port, 0x00); } else {writeBlockData (port, vlastní); }}
Krok 16: WritePinData
V této části kódu změníme stav požadovaného pinu a odešleme data na MCP.
// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; hodnota = 0/1 (zapnuto/vypnuto); gp = 0/1 (PORT do MCP) neplatné writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; if (gp == GP0) statusGP = currentValueGP0; else statusGP = currentValueGP1; if (hodnota == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} else if (hodnota == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; else currentValueGP1 = statusGP; // envia os dados para o MCP writeBlockData (gp, statusGP); zpoždění (10); }
Krok 17: WriteBlockData & SetupWiFi
Zde odesíláme data na MCP23016 přes sběrnici i2c. Dále nakonfigurujeme vlastnosti, abychom povolili přístupový bod. Nakonec jsme nakonfigurovali WiFi pro režim přístupového bodu a vytvořili AP s SSID a PASSWORD.
// envia dados para o MCP23016 através do barramento i2c // reg: REGISTRADOR // data: dados (0-255) void writeBlockData (uint8_t port, uint8_t data) {Wire.beginTransmission (MCPAddress); Wire.write (port); Wire.write (data); Wire.endTransmission (); zpoždění (10); }
// konfigurace konfigurace jako přístupový bod Vyhněte se setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP („ESP01_RELAY“, „12345678“); }
Krok 18: App
K vytvoření aplikace používáme MIT App Inventor 2, ke kterému je přístup prostřednictvím odkazu:
ai2.appinventor.mit.edu/
Aplikace se skládá ze dvou obrazovek, z nichž každá obsahuje osm párů tlačítek, indikujících stav každého relé.
Níže jsou uvedeny některé z použitých programovacích bloků:
DŮLEŽITÉ: Výchozí IP adresa ESP, protože přístupový bod je 192.168.4.1
1. Když se obrazovka inicializuje, uložíme IP do paměti a zavoláme proceduru pro obnovení stavu tlačítek (ON / OFF).
2. Zavolejte na druhou obrazovku
1. Po kliknutí na tlačítko ON u jednoho z relé provedeme v tlačítku vizuální změny (zelené bloky). WebViewer1. GoToUrl vytvoří požadavek na náš ESP01 propojením dat MR01 / 1 s URL.
2. Po kliknutí na tlačítko VYPNOUT jednoho z relé provedeme v tlačítku vizuální změny (zelené bloky). WebViewer1. GoToUrl vytvoří požadavek na náš ESP01 propojením dat MR01 / 0 s URL.
Tento postup slouží k obnovení stavu tlačítek (relé), protože při změně obrazovky se vrátí do vzoru vytváření.
Žlutý blok se opakuje pro každou dvojici tlačítek.
Krok 19: Stažení
Zde jsou soubory projektu ke stažení:
Soubor projektu MIT App Inventor 2 - stažení
Aplikace APK k instalaci na Android - stažení
Stáhněte si další soubory:
INO
Doporučuje:
Nízká poly LED lampa nálady: 9 kroků (s obrázky)
Low Poly LED LED nálada: Skvělý doplněk ke každému stolu, polici nebo stolu! Diskrétní tlačítko umístěné na základně vám umožňuje procházet různými vzory LED osvětlení. Nezáleží na tom, zda chcete lampu používat ke studiu, relaxaci nebo dokonce párty … existuje několik
VISUINO Zobrazit živou měnu Forex Cena z internetu: 9 kroků
VISUINO Zobrazení živé měny Cena měny z internetu: V tomto tutoriálu použijeme NodeMCU Mini, OLED Lcd a Visuino k zobrazení ceny živé měny EUR/USD každých pár sekund z internetu na LCD. Podívejte se na ukázkové video
Nízká gravitační růstová komora: 4 kroky
Nízká gravitační růstová komora: Tuto růstovou komoru jsem navrhl pro použití ve vesmíru. Používá fusion 360, který používám jako student. obsahuje světlo rovnoměrně rozmístěné po celé komoře, takže rostlina roste do veškerého dostupného prostoru, takže je zde více rostlin pro
Hlasová automatizace domácí automatizace Raspberry Pi: 5 kroků
Hlasová automatizace domácí automatizace Raspberry Pi: Cílem této instrukce je poskytnout podrobný návod, jak nastavit malinový pi, který dokáže automatizovat světla / LED pomocí vašich hlasových příkazů
Automatizace domácí automatizace Bluetooth: 7 kroků (s obrázky)
Bluetooth Control Home Automation: Dobrý den, v tomto projektu jde o stavbu nejjednoduššího zařízení pro domácí automatizaci pomocí arduina a modulu bluetooth. Tenhle se velmi snadno staví a dá se postavit za pár hodin. Ve své verzi, kterou právě vysvětluji, mohu