Tartalomjegyzék:

Olcsó automatizálás ESP01 segítségével: 19 lépés
Olcsó automatizálás ESP01 segítségével: 19 lépés

Videó: Olcsó automatizálás ESP01 segítségével: 19 lépés

Videó: Olcsó automatizálás ESP01 segítségével: 19 lépés
Videó: Olcsó és egyszerű kapumotor - De mennyire megbízható? 2024, November
Anonim
Image
Image
MCP23016
MCP23016

Ma megvitatjuk az automatizálást az ESP01 használatával, 16 relével. Ez egy szuper olcsó tervezési modell, ahol megsokszorozhatja a modulokat, és akár 128 relét kaphat, mivel akár nyolc portbővítőt is elhelyezhet ebben a mikrokontrollerben.

Az áramkörünkben lesz egy alkalmazás az okostelefonon, amely kommunikál az ESP01 -tel. 16 bővítővel rendelkezik, mindegyik egy reléhez van csatlakoztatva. Van egy 3v3 állítható forrásunk is. Ezért egy 16 csatornás relé modult irányítunk az ESP01 használatával az Android alkalmazáson keresztül, amelyet elérhetővé teszek.

1. lépés: Tipp az emlékezéshez

Fontos megjegyezni, barátaim, hogy ezt a chipet az MCP23016 nevű áramkörben használtam. Az Ön számára is fontos, hogy megnézze az IOS EXPANSOR ESP32, ESP8266 ÉS ARDUINO című videót, amelyben teszteltem az eszközt, és megmutattam, hogy ez a három típusú tábla működik.

2. lépés: MCP23016

Itt van egy képünk az MCP23016 -ról, amely egy 28 tűs chip. Fontos megemlíteni, hogy létezik az MCP23017 modell is, amely gyakoribb, és nem igényel ellenállást és kondenzátort, mert belső órája van. Ez megkönnyíti, de a rögzítése eltér attól, amit ebben a videóban mutatunk.

3. lépés: Cím

Cím
Cím

Az MCP23016 címének meghatározásához az A0, A1 és A2 csapokat használjuk. A címváltoztatáshoz egyszerűen hagyja őket a HIGH vagy LOW állásban.

A cím a következőképpen alakul:

MCP_cím = 20 + (A2 A1 A0)

Ahol A2 A1 A0 HIGH / LOW értékeket vehet fel, egy bináris szám 0 és 7 között.

Például:

A2> GND, A1> GND, A0> GND (000, majd 20 + 0 = 20)

Vagy más módon, A2> HIGH, A1> GND, A0> HIGH (101, majd 20 + 5 = 25)

4. lépés: Parancsok

Parancsok
Parancsok

Itt van egy táblázat a kommunikációs parancsokkal:

5. lépés: Kategóriák

GP0 / GP1 - Adatport -nyilvántartók

Két regiszter biztosítja a hozzáférést a két GPIO porthoz.

A regiszter leolvasása megadja az adott porton lévő csapok állapotát.

Bit = 1> HIGH Bit = 0> LOW

IODIR0 / IODIR1

Két regiszter szabályozza a pin módot. (Bemenet vagy kimenet)

Bit = 1> BEMENET Bit = 0> KIMENET

6. lépés: A kommunikáció felépítése

A kommunikáció szerkezete
A kommunikáció szerkezete

Itt a chip címéről beszélünk, és hozzáférünk a parancshoz és az adatokhoz, ami egyfajta protokoll, amelyet el kell végezni az információk küldéséhez.

7. lépés: Programozás

Program
Program

Csinálunk egy programot, amely az ESP01 és az MCP23016 közötti kommunikációból áll, hogy több GPIO -t használhassunk. Ez a 16 új GPIO vezérli majd a 16 csatornás relé modult.

A parancsokat Android -alkalmazáson keresztül küldjük az ESP01 -nek.

8. lépés: MCP23016

MCP23016
MCP23016

9. lépés: ESP-01

ESP-01
ESP-01
ESP-01
ESP-01

Ez egy 16 relés tábla.

10. lépés: Az ESP01 felszerelése

Szerelés ESP01
Szerelés ESP01

11. lépés: Könyvtárak és változók

Ide tartoznak az i2c kommunikációért, valamint az Access Point és a webszerver létrehozásáért felelős könyvtárak. Meghatározzuk a chip címét és a portokat. Végül definiáljuk a változókat az MCP csapok értékeinek tárolására.

#include // responseável pela comunicação i2c. #include // responseável por criar o accesspoint eo webserver WiFiServer server (80); // webserver para acessarmos através do aplicativo // endereço I2C do MCP23016 #define MCPAddress 0x20 // ENDEREÇOS DE REGISTR define GP0 0x00 // DATA PORT REGISTER 0 #define GP1 0x01 // DATA PORT REGISTER 1 #define 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;

12. lépés: Beállítás

Inicializáljuk az ESP01 -et és konfiguráljuk a portokat. Konfiguráljuk a hozzáférési pontot és inicializáljuk a szervert.

void setup () {Serial.begin (9600); késleltetés (1000); Vezeték.kezdet (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // konfigurálja a hozzáférési pont szerverét.begin (); // inicializa vagy szerver}

13. lépés: Hurok

Itt ellenőrzöm, hogy vannak -e ügyfelek csatlakoztatva a szerverhez. Az első kérés sort is elolvastuk. Kivonjuk az adatokat a manipulációhoz, meghatározzuk az alapértelmezett válaszfejlécet, és elküldjük ezt a választ az ügyfélnek.

void loop () {WiFiClient kliens = 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); // a partir da requisição extrai os dados para manipulação} else {Serial.println ("érvénytelen kérés"); Visszatérés; } client.flush (); Karakterlánc 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); } // vége ciklus

14. lépés: ParserData

ParserData
ParserData

A kérésből megkeressük a relékhez kapcsolódó adatokat. Ezután elküldjük az adatokat az MCP23016 -nak.

// a partir da requisição busca os dados referente aos relésvoid parserData (String data) {uint8_t relé = -1; uint8_t gp = -1; uint8_t érték = -1; int index = adat.indexOf ("/MR"); // busca o index do MR prefixo if (adatok [index+5] == '/') ///MR01/1, onde = GP; 1 = RELE; 1 = ESTADO (be/ki) {gp = adatok [index+3]-'0'; relé = adat [index+4]-'0'; érték = adatok [index+6]-'0'; // envia os dados para o MCP23016 // [relé-1] porque o MCP vai de 0-7 os pinos writePinData (relé-1, érték, gp); }}

15. lépés: ConfigurePort

Beállítjuk a GPIO pin módot (GP0 vagy GP1).

// konfiguráció vagy modo dos pinos GPIO (GP0 ou GP1) // como parametro passamos: // port: GP0 ou GP1 // INPUT para todos as portas do GP trabalharem como entrada // OUTPUT para todos as portas do GP trabalharem como saida // custom um valor de 0-255 indicando o modo das portas (1 = INPUT, 0 = OUTPUT) // például: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 trabalhará como entrada, o restante como saida void configurePort (uint8_t port, uint8_t custom) {if (custom == INPUT) {writeBlockData (port, 0xFF); } else if (egyéni == KIMENET) {writeBlockData (port, 0x00); } else {writeBlockData (port, egyéni); }}

16. lépés: Írja be a PinData -t

A kód ezen részében megváltoztatjuk a kívánt tű állapotát, és elküldjük az adatokat az MCP -nek.

// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; érték = 0/1 (be/ki); gp = 0/1 (PORT do MCP) void writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; if (gp == GP0) állapotGP = aktuálisértékGP0; else statusGP = currentValueGP1; if (érték == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} else if (érték == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; else currentValueGP1 = állapotGP; // envia os dados para vagy MCP writeBlockData (gp, statusGP); késleltetés (10); }

17. lépés: WriteBlockData & SetupWiFi

Itt az i2c buszon keresztül küldünk adatokat az MCP23016 -nak. Ezután konfiguráljuk a tulajdonságokat a hozzáférési pont engedélyezéséhez. Végül beállítottuk a WiFi -t hozzáférési pont módra, és létrehoztunk egy hozzáférési pontot SSID -vel és jelszóval.

// envia dados para o MCP23016 através do barramento i2c // reg: REGISTRADOR // adatok: dados (0-255) void writeBlockData (uint8_t port, uint8_t data) {Wire.beginTransmission (MCPAddress); Wire.write (port); Wire.write (adatok); Wire.endTransmission (); késleltetés (10); }

// configura as propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }

18. lépés: kb

Kb
Kb
Kb
Kb
Kb
Kb
Kb
Kb

Az alkalmazás létrehozásához az MIT App Inventor 2 programot használjuk, amely a következő linken érhető el:

ai2.appinventor.mit.edu/

Az alkalmazás két képernyőből áll, amelyek mindegyikében nyolc pár gomb található, amelyek jelzik az egyes relék állapotát.

Az alábbiakban bemutatunk néhány használt programozási blokkot:

FONTOS: Az ESP alapértelmezett IP -címe, mivel a hozzáférési pont 192.168.4.1

1. Amikor a képernyő inicializálódik, tároljuk az IP -t a memóriában, és meghívjuk az eljárást a gombok állapotának helyreállításához (ON / OFF).

2. Hívja a másik képernyőt

1. Amikor az egyik relé BE gombjára kattint, vizuálisan módosítjuk a gombot (zöld blokkok). WebViewer1. GoToUrl kérést küld az ESP01 -hez azáltal, hogy összekapcsolja az MR01 / 1 adatokat az URL -ben.

2. Amikor az egyik relé OFF gombjára kattint, vizuálisan módosítjuk a gombot (zöld blokkok). WebViewer1. GoToUrl kérést küld az ESP01 -hez azáltal, hogy összekapcsolja az MR01 / 0 adatokat az URL -ben.

Ez az eljárás a gombok (relék) állapotának helyreállítására szolgál, mert a képernyő megváltoztatásakor visszatér a létrehozási mintához.

A sárga blokk minden gombpár esetében megismétlődik.

19. lépés: Töltse le

Íme a letölthető projektfájlok:

MIT App Inventor 2 projektfájl - letöltés

Alkalmazás APK telepítése androidra - letöltés

Töltse le a többi fájlt:

PDF

ÉN NEM

Ajánlott: