Taula de continguts:
- Pas 1: Consell per recordar
- Pas 2: MCP23016
- Pas 3: adreça
- Pas 4: ordres
- Pas 5: categories
- Pas 6: Estructura de la comunicació
- Pas 7: programa
- Pas 8: MCP23016
- Pas 9: ESP-01
- Pas 10: muntatge de ESP01
- Pas 11: biblioteques i variables
- Pas 12: Configuració
- Pas 13: bucle
- Pas 14: ParserData
- Pas 15: ConfigurePort
- Pas 16: WritePinData
- Pas 17: WriteBlockData i SetupWiFi
- Pas 18: aplicació
- Pas 19: baixada
Vídeo: Automatització de baix cost amb ESP01: 19 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Avui parlarem de l’automatització mitjançant ESP01 amb 16 relés. Es tracta d’un model de disseny molt barat on podeu multiplicar els mòduls i obtenir fins a 128 relés, ja que és possible posar fins a vuit expandidors de ports en aquest microcontrolador.
Al nostre circuit, tindreu una aplicació en un telèfon intel·ligent que es comunica amb l’ESP01. Tindrà un expansor amb 16 ports, cadascun connectat a un relé. També tenim una font ajustable de 3v3. Per tant, controlarem un mòdul de retransmissió de 16 canals mitjançant ESP01 mitjançant l’aplicació Android, que poso a la vostra disposició.
Pas 1: Consell per recordar
És important tenir en compte, amics meus, que he utilitzat aquest xip en un circuit anomenat MCP23016. També és important que vegeu el vídeo EXPANSOR OF IOS PER ESP32, ESP8266 I ARDUINO, en què provo el dispositiu i demostro que funciona per a aquests tres tipus de taules.
Pas 2: MCP23016
Aquí tenim una imatge del MCP23016, que és un xip amb 28 pins. És important esmentar que també hi ha el model MCP23017, que és més comú i no necessita resistència ni condensador, perquè té un rellotge intern. Això ho fa més fàcil, però el seu fixació és diferent del que mostrem en aquest vídeo.
Pas 3: adreça
Per definir l'adreça de l'MCP23016, fem servir els pins A0, A1 i A2. Podeu deixar-los a HIGH o LOW per al canvi d’adreça.
L'adreça es formarà de la següent manera:
MCP_Address = 20 + (A2 A1 A0)
On A2 A1 A0 pot prendre valors ALT / BAIX, es forma un número binari de 0 a 7.
Per exemple:
A2> GND, A1> GND, A0> GND (vol dir 000, llavors 20 + 0 = 20)
O d’una altra manera, A2> ALTA, A1> GND, A0> ALTA (vol dir 101, llavors 20 + 5 = 25)
Pas 4: ordres
Aquí hi ha una taula amb ordres per a la comunicació:
Pas 5: categories
GP0 / GP1: registres de ports de dades
Hi ha dos registres que proporcionen accés als dos ports GPIO.
La lectura del registre proporciona l'estat dels pins d'aquest port.
Bit = 1> ALT Bit = 0> BAIX
IODIR0 / IODIR1
Hi ha dos registres que controlen el mode pin. (Entrada o sortida)
Bit = 1> INPUT Bit = 0> OUTPUT
Pas 6: Estructura de la comunicació
Aquí parlem de l'adreça del xip i accedim a l'ordre i a les dades, que és una mena de protocol que cal fer per enviar informació.
Pas 7: programa
Farem un programa que consisteix a comunicar l’ESP01 amb l’MCP23016 per tal de tenir més GPIO a utilitzar. Aquests 16 nous GPIO que tindrem controlaran un mòdul de relé de 16 canals.
Els comandaments s’enviaran a ESP01 mitjançant una aplicació per a Android.
Pas 8: MCP23016
Pas 9: ESP-01
Es tracta d’una placa de 16 relés.
Pas 10: muntatge de ESP01
Pas 11: biblioteques i variables
Inclourem les biblioteques responsables de la comunicació i2c i de la creació del punt d’accés i del servidor web. Definim l'adreça del xip i els ports. Finalment, definim les variables per emmagatzemar els valors dels pins MCP.
. define GP0 0x00 // REGISTRE PORT DADES 0 #define GP1 0x01 // REGISTRE PORT DADES 1 #define IODIR0 0x06 // REGISTRE DIRECCIÓ E / S 0 #define IODIR1 0x07 // REGISTRE DIRECCIÓ E / S 1 // guarda os valores dos pinos fer MCP uint8_tValorGP0 actual = 0; uint8_tCurrentValueGP1 = 0;
Pas 12: Configuració
Inicialitzem l’ESP01 i configurem els ports. També configurem el punt d’accés i inicialitzem el servidor.
configuració nul·la () {Serial.begin (9600); retard (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // configuració del punt d'accés server.begin (); // inicialització del servidor}
Pas 13: bucle
Aquí comprovo si hi ha clients connectats al servidor. També llegim la primera línia de sol·licitud. Extraiem les dades per manipular-les, definim la capçalera de resposta predeterminada i enviem aquesta resposta al client.
bucle buit () {client WiFiClient = servidor.available (); // Verifica se um cliente foi conectado if (! Client) {return; } String req = client.readStringUntil ('\ r'); // Faz a leitura da primera 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 ("invalid request"); tornar; } client.flush (); Cadena s = "HTTP / 1.1 200 OK / r / n"; // cabeçalho patró de resposta client.print (s); // envia a resposta per o client delay (1); } // final de bucle
Pas 14: ParserData
Des de la sol·licitud, busquem les dades relacionades amb els relés. A continuació, enviem les dades al MCP23016.
// a partir da requisição busca os dados referente aos relésvoid parserData (String data) {uint8_t relay = -1; uint8_t gp = -1; valor uint8_t = -1; int index = data.indexOf ("/ MR"); // busca o index do prefixo MR if (data [index + 5] == '/') // / MR01 / 1, onde 0 = GP; 1 = RELE; 1 = ESTADO (activat / desactivat) {gp = data [index + 3] - '0'; relé = dades [índex + 4] - '0'; valor = dades [índex + 6] - '0'; // envia os dados para o MCP23016 // [relay-1] porque o MCP vai de 0-7 os pinos writePinData (relay-1, value, gp); }}
Pas 15: ConfigurePort
Establim el mode de pin GPIO (GP0 o GP1).
// configura o modo dos pinos GPIO (GP0 ou GP1) // com a paràmetre passem: // port: GP0 o GP1 // INPUT per a tots com portes de GP treballant com a entrada // OUTPUT per a tots com portes de GP treballant com a saida // custom um valor de 0-255 indicando o modo das portas (1 = INPUT, 0 = OUTPUT) // ex: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 treballant com a entrada, o restant com a said void configurePort (port uint8_t, uint8_t personalitzat) {if (personalitzat == INPUT) {writeBlockData (port, 0xFF); } else if (personalitzat == OUTPUT) {writeBlockData (port, 0x00); } else {writeBlockData (port, personalitzat); }}
Pas 16: WritePinData
En aquesta part del codi, canviem l’estat d’un pin desitjat i enviem les dades al MCP.
// muda o estat de um pinyol deixat, passant com a paràmetre: // pin = pinyo deixat; valor = 0/1 (activat / desactivat); gp = 0/1 (PORT do MCP) void writePinData (pin int, valor int, uint8_t gp) {uint8_t statusGP = 0; if (gp == GP0) statusGP = currentValueGP0; else statusGP = ValorValentGP1; if (valor == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} else if (valor == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; elseValorGP1 actual = estatGP; // envia os dados para o MCP writeBlockData (gp, statusGP); retard (10); }
Pas 17: WriteBlockData i SetupWiFi
Aquí, enviem dades al MCP23016 mitjançant el bus i2c. A continuació, configurem les propietats per habilitar el punt d'accés. Finalment, vam configurar el WiFi per al mode de punt d'accés i vam crear un AP amb SSID i la contrasenya.
// 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 (dades); Wire.endTransmission (); retard (10); }
// configura com a propietats per habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }
Pas 18: aplicació
Per crear l'aplicació, fem servir MIT App Inventor 2, al qual es pot accedir mitjançant l'enllaç:
ai2.appinventor.mit.edu/
L’aplicació consta de dues pantalles que contenen vuit parells de botons cadascun, que indiquen l’estat de cada relé.
Els següents són alguns dels blocs de programació utilitzats:
IMPORTANT: l'adreça IP per defecte de l'ESP, ja que el punt d'accés és 192.168.4.1
1. Quan la pantalla s’inicialitza, emmagatzemem l’IP a la memòria i cridem al procediment per recuperar l’estat dels botons (ON / OFF).
2. Truqueu a l'altra pantalla
1. En fer clic al botó ON d’un dels relés, farem canvis visuals al botó (blocs verds). WebViewer1. GoToUrl fa una sol·licitud del nostre ESP01 enllaçant les dades MR01 / 1 a l'URL.
2. En fer clic al botó OFF d’un dels relés, farem canvis visuals al botó (blocs verds). WebViewer1. GoToUrl fa una sol·licitud al nostre ESP01 mitjançant l'enllaç de les dades MR01 / 0 a l'URL.
Aquest procediment s’utilitza per recuperar l’estat dels botons (relés), ja que en canviar la pantalla, torna al patró de creació.
El bloc groc es repeteix per a cadascun dels parells de botons.
Pas 19: baixada
Aquests són els fitxers del projecte per descarregar:
Fitxer del projecte MIT App Inventor 2: descàrrega
APK d'aplicació per instal·lar a Android: descarregar
Descarregueu els altres fitxers:
INO
Recomanat:
Automatització xerraire -- Àudio des d’Arduino -- Automatització controlada per veu -- Mòdul Bluetooth HC-05: 9 passos (amb imatges)
Automatització xerraire || Àudio des d’Arduino || Automatització controlada per veu || Mòdul Bluetooth HC - 05: …………………………. SUBSCRIU-vos al meu canal de YouTube per obtenir més vídeos
El 'Sup: un ratolí per a persones amb tetraplegia: de baix cost i de codi obert: 12 passos (amb imatges)
The Sup: un ratolí per a persones amb tetraplegia: de baix cost i de codi obert: a la primavera del 2017, la família del meu millor amic em va preguntar si volia volar a Denver i ajudar-los amb un projecte. Tenen un amic, Allen, que té quadriplegia com a conseqüència d’un accident de bicicleta de muntanya. Fèlix (el meu amic) i jo vam fer una investigació ràpida
Robot de dibuix compatible amb Arduino de baix cost: 15 passos (amb imatges)
Robot de dibuix compatible amb Arduino de baix cost: Nota: Tinc una nova versió d’aquest robot que utilitza una placa de circuit imprès, és més fàcil de construir i té detecció d’obstacles IR. Mireu-ho a http://bit.ly/OSTurtle. Vaig dissenyar aquest projecte per a un taller de 10 hores per a ChickTech.org que té com a objectiu
Mini suport de micròfon d'aspecte professional a baix cost i amb presses: 7 passos (amb imatges)
Mini suport de micròfon d'aspecte professional a baix preu i de pressa: així que em vaig endur un escabetx. Vaig acceptar gravar una sessió de D & D el dissabte, avui és dimecres. Dues setmanes abans vaig agafar una interfície d’àudio (comprovar), la setmana següent vaig aconseguir una oferta molt bona en alguns micròfons (comprovar), el cap de setmana passat
UDuino: Tauler de desenvolupament compatible amb Arduino de molt baix cost: 7 passos (amb imatges)
UDuino: Taula de desenvolupament compatible amb Arduino de molt baix cost: les plaques Arduino són ideals per prototipar. No obstant això, són bastant cars quan teniu diversos projectes simultanis o necessiteu moltes plaques de control per a un projecte més gran. Hi ha algunes alternatives fantàstiques i econòmiques (Boarduino, Freeduino), però