Përmbajtje:

Automatizim me kosto të ulët Me ESP01: 19 hapa
Automatizim me kosto të ulët Me ESP01: 19 hapa

Video: Automatizim me kosto të ulët Me ESP01: 19 hapa

Video: Automatizim me kosto të ulët Me ESP01: 19 hapa
Video: 10 MAKINAT MË TË MIRA TË VITIT 2020 2024, Nëntor
Anonim
Image
Image
MCP23016
MCP23016

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

Adresë
Adresë

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

Komandat
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

Struktura për komunikim
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

Program
Program

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

MCP23016
MCP23016

Hapi 9: ESP-01

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

Ky është një bord me 16 stafetë.

Hapi 10: Montimi i ESP01

Montimi ESP01
Montimi 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

ParserData
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

Aplikacion
Aplikacion
Aplikacion
Aplikacion
Aplikacion
Aplikacion
Aplikacion
Aplikacion

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ë:

PDF

INO

Recommended: