Përmbajtje:
- Hapi 1: Këshillë për të mbajtur mend
- Hapi 2: MCP23016
- Hapi 3: Adresa
- Hapi 4: Komandat
- Hapi 5: Kategoritë
- Hapi 6: Struktura për Komunikim
- Hapi 7: Programi
- Hapi 8: MCP23016
- Hapi 9: ESP-01
- Hapi 10: Montimi i ESP01
- Hapi 11: Bibliotekat dhe variablat
- Hapi 12: Konfigurimi
- Hapi 13: Lak
- Hapi 14: ParserData
- Hapi 15: Konfiguro Portën
- Hapi 16: Shkruani të dhënat
- Hapi 17: ShkruaniBlockData & SetupWiFi
- Hapi 18: Aplikacioni
- Hapi 19: Shkarkoni
Video: Automatizim me kosto të ulët Me ESP01: 19 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:25
Sot, ne do të diskutojmë automatizimin duke përdorur ESP01 me 16 stafetë. Ky është një model dizajni super i lirë ku mund të shumëzoni modulet dhe të merrni deri në 128 stafetë, pasi është e mundur të vendosni deri në tetë zgjerues portesh në këtë mikrokontrollues.
Në qarkun tonë, do të keni një aplikacion në një smartphone që komunikon me ESP01. Do të ketë një zgjerues me 16 porte, secila e lidhur me një stafetë. Ne gjithashtu kemi një burim të rregullueshëm 3v3. Prandaj ne do të kontrollojmë një modul stafetë me 16 kanale duke përdorur ESP01 përmes aplikacionit Android, të cilin e vë në dispozicion për ju.
Hapi 1: Këshillë për të mbajtur mend
Isshtë e rëndësishme të theksohet, miqtë e mi, që e kam përdorur këtë çip në një qark të quajtur MCP23016. Alsoshtë gjithashtu e rëndësishme për ju të shikoni videon EXPANSOR OF IOS FOR ESP32, ESP8266 AND ARDUINO, në të cilën unë testoj pajisjen dhe tregoj se funksionon për këto tre lloje të bordeve.
Hapi 2: MCP23016
Këtu kemi një imazh të MCP23016, i cili është një çip me 28 kunja. Importantshtë e rëndësishme të përmendet se ekziston edhe modeli MCP23017, i cili është më i zakonshëm dhe nuk ka nevojë për rezistencë dhe kondensator, sepse ka një orë të brendshme. Kjo e bën më të lehtë, por fiksimi i tij është i ndryshëm nga ai që tregojmë në këtë video.
Hapi 3: Adresa
Për të përcaktuar adresën e MCP23016, ne përdorim kunjat A0, A1 dhe A2. Thjesht mund t'i lini në HIGH ose LOW për ndryshimin e adresës.
Adresa do të formohet si më poshtë:
MCP_Adresa = 20 + (A2 A1 A0)
Aty ku A2 A1 A0 mund të marrë vlera HIGH / LOW, formohet një numër binar nga 0 në 7.
Për shembull:
A2> GND, A1> GND, A0> GND (do të thotë 000, pastaj 20 + 0 = 20)
Ose ndryshe, A2> LART, A1> GND, A0> LART (do të thotë 101, pastaj 20 + 5 = 25)
Hapi 4: Komandat
Këtu është një tabelë me komanda për komunikim:
Hapi 5: Kategoritë
GP0 / GP1 - Regjistrat e Portit të të Dhënave
Ekzistojnë dy regjistra që sigurojnë qasje në dy portat GPIO.
Leximi i regjistrit siguron statusin e kunjave në atë port.
Bit = 1> Bit i lartë = 0> I POSHT
IODIR0 / IODIR1
Ekzistojnë dy regjistra që kontrollojnë modalitetin pin. (Hyrja ose Dalja)
Bit = 1> HYRJE Bit = 0> dalje
Hapi 6: Struktura për Komunikim
Këtu flasim për adresën e çipit, dhe qasemi në komandën dhe të dhënat, që është një lloj protokolli që duhet bërë për të dërguar informacion.
Hapi 7: Programi
Ne do të bëjmë një program që konsiston në komunikimin e ESP01 me MCP23016 në mënyrë që të kemi më shumë GPIO për t'u përdorur. Këto 16 GPIO të reja që do të kemi do të kontrollojnë një modul stafetë me 16 kanale.
Komandat do t'i dërgohen ESP01 përmes një aplikacioni Android.
Hapi 8: MCP23016
Hapi 9: ESP-01
Ky është një bord me 16 stafetë.
Hapi 10: Montimi i ESP01
Hapi 11: Bibliotekat dhe variablat
Ne do të përfshijmë bibliotekat përgjegjëse për komunikimin i2c, dhe për krijimin e Access Point dhe serverit të uebit. Ne përcaktojmë adresën e çipit dhe porteve. Së fundi, ne përcaktojmë variablat për të ruajtur vlerat e kunjave MCP.
#include // responsável pela comunicação i2c. #include // responsável por criar ose accesspoint eo webserver WiFiServer server (80); // webserver për më shumë qasje për të aplikuar // endereço I2C do MCP23016 #define MCPAddress 0X20 // #ENDEREE përcakto GP0 0x00 // REGJISTRI I PORTVE TAT TAT DHNAVE 0 #përcakto GP1 0x01 // REGJISTRI I PORTVE TAT TAT DHNAVE 1 #përcakto IODIR0 0x06 // REGJISTRI I DREJTIMIT I I/O 0 #përcakto IODIR1 0x07 // I/O REGJISTRI I DREJTIMIT 1 // guarda os valores dos pinos bëni MCP uint8_t aktualeVleraGP0 = 0; uint8_t aktualeVleraGP1 = 0;
Hapi 12: Konfigurimi
Ne inicializojmë ESP01 dhe konfigurojmë portet. Ne gjithashtu konfigurojmë pikën e hyrjes dhe inicojmë serverin.
void setup () {Serial.begin (9600); vonesa (1000); Wire.filloni (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // konfiguroni për Access Point server.begin (); // inicializa ose server}
Hapi 13: Lak
Këtu kontrolloj nëse ndonjë klient është lidhur me serverin. Ne gjithashtu lexojmë rreshtin e parë të kërkesës. Ne nxjerrim të dhënat për manipulim, përcaktojmë kokën e përgjigjes së paracaktuar dhe ia dërgojmë këtë përgjigje klientit.
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 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} tjetër {Serial.println ("kërkesë e pavlefshme"); kthim; } client.flush (); Vargu s = "HTTP/1.1 200 OK / r / n"; // cabeçalho padrão de resposta client.print (s); // envia a resposta para o vonesa e klientit (1); } // lak përfundimi
Hapi 14: ParserData
Nga kërkesa, ne kërkojmë të dhënat që lidhen me stafetat. Ne pastaj i dërgojmë të dhënat në MCP23016.
// a partir da requisição busca os dados referente aos relésvoid parserData (Të dhënat e vargut) {uint8_t stafetë = -1; uint8_t gp = -1; uint8_t vlera = -1; int index = data.indexOf ("/MR"); // busca o index do prefixo MR if (të dhënat [indeksi+5] == '/') ///MR01/1, onde 0 = GP; 1 = RELE; 1 = ESTADO (ndezur/fikur) {gp = të dhëna [indeksi+3]-'0'; stafetë = të dhënat [indeksi+4]-'0'; vlera = të dhënat [indeksi+6]-'0'; // envia os dados para o MCP23016 // [rele-1] porque ose MCP në 0-7 os pinos writePinData (stafetë-1, vlera, gp); }}
Hapi 15: Konfiguro Portën
Ne kemi vendosur modalitetin e pinit GPIO (GP0 ose GP1).
// configura o modo dos pinos GPIO (GP0 ose GP1) // parametrat e kalimit të parametrave: // porta: GP0 ou GP1 // HYRJE për të hyrë si porta të GP në trabalharem como entrada // OUTPUT para të gjitha gjërave si porta të GP trabalharem como said // me porosi nga 0-255 tregues për modalitetin e portave (1 = HYRJE, 0 = dalje) // psh: 0x01 ose B00000001 ose 1: tregues të apenave në GPX.0 trabalhará como entrada, ose rivendosjen e një cilësie të pavlefshme të konfigurimitPort (uint8_t port, uint8_t me porosi) {if (custom == INPUT) {writeBlockData (port, 0xFF); } else if (me porosi == OUTPUT) {writeBlockData (port, 0x00); } else {writeBlockData (port, me porosi); }}
Hapi 16: Shkruani të dhënat
Në këtë pjesë të kodit, ne ndryshojmë gjendjen e një kunj të dëshiruar dhe i dërgojmë të dhënat në MCP.
// muda o estado de um pino desejado, kaloni si parametër: // pin = pino desejado; vlera = 0/1 (ndezur/fikur); gp = 0/1 (PORT do MCP) void writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; nëse (gp == GP0) statusGP = aktualeVleraGP0; tjetër statusGP = aktualeVleraGP1; nëse (vlera == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} tjetër nëse (vlera == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} nëse (gp == GP0) aktualeValueGP0 = statusiGP; përndryshe currentValueGP1 = statusGP; // envia os dados para o MCP writeBlockData (gp, statusGP); vonesa (10); }
Hapi 17: ShkruaniBlockData & SetupWiFi
Këtu, ne i dërgojmë të dhënat MCP23016 përmes autobusit i2c. Tjetra, ne konfigurojmë vetitë për të aktivizuar Pikën e Qasjes. Më në fund, ne konfiguruam WiFi për modalitetin e Pikës së Qasjes dhe krijuam një AP me SSID dhe 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 (të dhënat); Wire.endTransmission (); vonesa (10); }
// configura as propriedades para habilitar o ACCESS POINTë shmang setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }
Hapi 18: Aplikacioni
Për të krijuar aplikacionin, ne përdorim MIT App Inventor 2, i cili mund të arrihet përmes lidhjes:
ai2.appinventor.mit.edu/
Aplikacioni përbëhet nga dy ekrane që përmbajnë tetë palë butona në secilën, duke treguar statusin e secilës stafetë.
Më poshtë janë disa nga blloqet e programimit të përdorura:
E RORTNDSISHME: Adresa IP e paracaktuar e ESP, pasi Pika e Hyrjes është 192.168.4.1
1. Kur ekrani fillon, ne ruajmë IP -në në memorje dhe thërrasim procedurën për të rikuperuar gjendjen e butonave (ON / OFF).
2. Thirrni ekranin tjetër
1. Kur klikojmë në butonin ON të njërit prej stafetëve, ne do të bëjmë ndryshime vizuale në butonin (blloqet jeshile). WebViewer1. GoToUrl bën një kërkesë për ESP01 tonë duke lidhur të dhënat MR01 / 1 në URL.
2. Kur klikojmë butonin OFF të njërit prej stafetëve, do të bëjmë ndryshime vizuale në butonin (blloqet jeshile). WebViewer1. GoToUrl i bën një kërkesë ESP01 -it tonë duke lidhur të dhënat MR01 / 0 në URL.
Kjo procedurë përdoret për të rikuperuar gjendjen e butonave (stafetë), sepse kur ndryshoni ekranin, kthehet në modelin e krijimit.
Blloku i verdhë përsëritet për secilën nga çiftet e butonave.
Hapi 19: Shkarkoni
Këtu janë skedarët e projektit për shkarkim:
Skedari i projektit MIT App Inventor 2 - shkarko
Aplikacioni APK për tu instaluar në android - shkarkoni
Shkarkoni skedarët e tjerë:
INO
Recommended:
Reometër me kosto të ulët: 11 hapa (me fotografi)
Reometër me kosto të ulët: Qëllimi i këtij udhëzuesi është të krijojë një reometër me kosto të ulët për të gjetur në mënyrë eksperimentale viskozitetin e një lëngu. Ky projekt u krijua nga një ekip i Universitetit Brown të diplomuar dhe studentë të diplomuar në klasën Vibration of Systems mekanike.
Si të ndërtoni një pajisje EKG me kosto të ulët: 26 hapa
Si të ndërtoni një pajisje EKG me kosto të ulët: Përshëndetje të gjithëve! Emri im është Mariano dhe unë jam një inxhinier biomjekësor. Kam kaluar disa fundjavë për të hartuar dhe realizuar një prototip të një pajisjeje me kosto të ulët EKG bazuar në bordin Arduino të lidhur përmes Bluetooth me një pajisje Android (smartphone ose tablet). Do të
Komunikim pa tela LoRa 3Km deri në 8Km me kosto të ulët E32 (sx1278/sx1276) Pajisja për Arduino, Esp8266 ose Esp32: 15 hapa
Komunikim pa tela LoRa 3Km deri në 8Km me kosto të ulët E32 (sx1278/sx1276) Pajisje për Arduino, Esp8266 ose Esp32: Unë krijoj një bibliotekë për të menaxhuar EBYTE E32 bazuar në serinë Semtech të pajisjes LoRa, pajisje shumë të fuqishme, të thjeshta dhe të lira. Ju mund të gjeni Versioni 3Km këtu, versioni 8Km këtu Ata mund të punojnë në një distancë prej 3000m deri në 8000m, dhe ato kanë shumë karakteristika të një
Pandemi: Sistemi Robotik i Dezinfektimit me kosto të ulët: 7 hapa
Pandemi: Sistemi Robotik i Dezinfektimit me Kosto të Ulët: Ky është një robot i lirë, i lehtë për t’u bërë. Mund të sterilizojë dhomën tuaj me dritë UV-C, është e lehtë dhe e shkathët, mund të shkojë në çdo terren dhe mund të përshtatet në çdo hyrje. Alsoshtë gjithashtu i sigurt për njerëzit dhe plotësisht autonom
DIY Automatizimi me kosto të ulët në shtëpi duke përdorur Esp8266: 6 hapa
DIY Automatizimi me kosto të ulët në shtëpi duke përdorur Esp8266: Përshëndetje të gjithëve, sot në këtë udhëzues do t'ju tregoj se si kam përgatitur automatizimin e shtëpisë time si një hap drejt një shtëpie të zgjuar duke përdorur një modul ESP 8266 i njohur përgjithësisht si nodemcu kështu që pa humbur kohë le të fillojmë:)