Innehållsförteckning:
- Steg 1: Tips att komma ihåg
- Steg 2: MCP23016
- Steg 3: Adress
- Steg 4: Kommandon
- Steg 5: Kategorier
- Steg 6: Struktur för kommunikation
- Steg 7: Programmera
- Steg 8: MCP23016
- Steg 9: ESP-01
- Steg 10: Montering av ESP01
- Steg 11: Bibliotek och variabler
- Steg 12: Konfiguration
- Steg 13: Loop
- Steg 14: ParserData
- Steg 15: ConfigurePort
- Steg 16: WritePinData
- Steg 17: WriteBlockData & SetupWiFi
- Steg 18: App
- Steg 19: Ladda ner
Video: Lågkostnadsautomation med ESP01: 19 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Idag diskuterar vi automatisering med ESP01 med 16 reläer. Detta är en superbillig designmodell där du kan multiplicera modulerna och få upp till 128 reläer, eftersom det är möjligt att sätta upp till åtta portutbyggare i denna mikrokontroller.
I vår krets har du en applikation på en smartphone som kommunicerar med ESP01. Den kommer att ha en expander med 16 portar, var och en ansluten till ett relä. Vi har också en 3v3 justerbar källa. Vi kommer därför att styra en 16-kanals relämodul med ESP01 via Android-appen, som jag gör tillgänglig för dig.
Steg 1: Tips att komma ihåg
Det är viktigt att notera, mina vänner, att jag använde detta chip i en krets som heter MCP23016. Det är också viktigt för dig att titta på videon EXPANSOR OF IOS FOR ESP32, ESP8266 AND ARDUINO, där jag testar enheten och visar att den fungerar för dessa tre typer av kort.
Steg 2: MCP23016
Här har vi en bild av MCP23016, som är ett chip med 28 stift. Det är viktigt att nämna att det också finns modellen MCP23017, som är vanligare och inte behöver ett motstånd och kondensator, eftersom den har en intern klocka. Detta gör det enklare, men dess fästning skiljer sig från det vi visar i den här videon.
Steg 3: Adress
För att definiera adressen till MCP23016 använder vi stiften A0, A1 och A2. Du kan bara lämna dem på HIGH eller LOW för adressändringen.
Adressen kommer att formas enligt följande:
MCP_Address = 20 + (A2 A1 A0)
Där A2 A1 A0 kan ta HIGH / LOW -värden, bildas ett binärt tal från 0 till 7.
Till exempel:
A2> GND, A1> GND, A0> GND (betyder 000, då 20 + 0 = 20)
Eller annars, A2> HÖG, A1> GND, A0> HÖG (betyder 101, sedan 20 + 5 = 25)
Steg 4: Kommandon
Här är en tabell med kommandon för kommunikation:
Steg 5: Kategorier
GP0 / GP1 - Dataportregister
Det finns två register som ger åtkomst till de två GPIO -portarna.
Registeravläsningen ger status för stiften på den porten.
Bit = 1> HIGH Bit = 0> LÅG
IODIR0 / IODIR1
Det finns två register som styr stiftläget. (Ingång eller utmatning)
Bit = 1> INPUT Bit = 0> OUTPUT
Steg 6: Struktur för kommunikation
Här pratar vi om chipets adress och får tillgång till kommandot och data, vilket är ett slags protokoll som måste göras för att skicka information.
Steg 7: Programmera
Vi gör ett program som består av att kommunicera ESP01 med MCP23016 för att få fler GPIO: er att använda. Dessa 16 nya GPIO: er som vi kommer att styra en 16-kanals relämodul.
Kommandon skickas till ESP01 via en Android -applikation.
Steg 8: MCP23016
Steg 9: ESP-01
Detta är en 16-stafettkort.
Steg 10: Montering av ESP01
Steg 11: Bibliotek och variabler
Vi kommer att inkludera de bibliotek som är ansvariga för i2c -kommunikation och för att skapa åtkomstpunkten och webbservern. Vi definierar adressen till chipet och portarna. Slutligen definierar vi variablerna för att lagra värdena på MCP -stiften.
#include // responsável pela comunicação i2c. #include // responsá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 // ENDEREOS definiera 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 gör MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
Steg 12: Konfiguration
Vi initierar ESP01 och konfigurerar portarna. Vi konfigurerar också åtkomstpunkten och initierar servern.
void setup () {Serial.begin (9600); fördröjning (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // konfiguração do Access Point server.begin (); // inicializa o server}
Steg 13: Loop
Här kontrollerar jag om några klienter har anslutits till servern. Vi läste också den första förfrågningsraden. Vi extraherar data för manipulation, definierar standardsvarhuvudet och skickar detta svar till klienten.
void loop () {WiFiClient -klient = 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 ("ogiltig begäran"); lämna tillbaka; } klient.flush (); Sträng 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); } // slutslinga
Steg 14: ParserData
Från begäran letar vi efter data relaterade till reläerna. Vi skickar sedan data till MCP23016.
// a partir da requisição busca os dados referente aos relésvoid parserData (String data) {uint8_t relay = -1; uint8_t gp = -1; uint8_t värde = -1; int index = data.indexOf ("/MR"); // busca o index gör prefixo MR if (data [index+5] == '/') ///MR01/1, onde 0 = GP; 1 = RELE; 1 = ESTADO (på/av) {gp = data [index+3]-'0'; relä = data [index+4]-'0'; värde = 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); }}
Steg 15: ConfigurePort
Vi ställer in GPIO -pinläget (GP0 eller GP1).
// konfiguration o 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 // anpassad om värde av 0-255 indikering o modo das portas (1 = INPUT, 0 = OUTPUT) // ex: 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); } annars if (custom == OUTPUT) {writeBlockData (port, 0x00); } annat {writeBlockData (port, anpassad); }}
Steg 16: WritePinData
I denna del av koden ändrar vi tillståndet för en önskad pin och skickar data till MCP.
// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; värde = 0/1 (på/av); gp = 0/1 (PORT do MCP) void writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; om (gp == GP0) statusGP = currentValueGP0; annars statusGP = currentValueGP1; om (värde == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} annars if (värde == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; annars currentValueGP1 = statusGP; // envia os dados para o MCP writeBlockData (gp, statusGP); fördröjning (10); }
Steg 17: WriteBlockData & SetupWiFi
Här skickar vi data till MCP23016 via i2c -bussen. Därefter konfigurerar vi egenskaperna för att aktivera åtkomstpunkten. Slutligen konfigurerade vi WiFi för åtkomstpunktsläge och skapade ett AP med SSID och LÖSENORD.
// 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 (); fördröjning (10); }
// konfigura as propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }
Steg 18: App
För att skapa programmet använder vi MIT App Inventor 2, som kan nås via länken:
ai2.appinventor.mit.edu/
Applikationen består av två skärmar som innehåller åtta par knappar i varje, vilket indikerar status för varje relä.
Följande är några av de programmeringsblock som används:
VIKTIGT: Standard -IP -adressen för ESP, eftersom åtkomstpunkten är 192.168.4.1
1. När skärmen initialiseras lagrar vi IP: n i minnet och kallar proceduren för att återställa status för knapparna (ON / OFF).
2. Ring den andra skärmen
1. När du klickar på PÅ -knappen på ett av reläerna kommer vi att göra visuella ändringar i knappen (gröna block). WebViewer1. GoToUrl begär vår ESP01 genom att länka MR01 / 1 -data i URL: en.
2. När du klickar på AV -knappen på ett av reläerna gör vi visuella ändringar i knappen (gröna block). WebViewer1. GoToUrl gör en begäran till vår ESP01 genom att länka MR01 / 0 -data i URL: en.
Denna procedur används för att återställa status för knapparna (reläer), eftersom när du ändrar skärmen återgår den till skapningsmönstret.
Det gula blocket upprepas för vart och ett av knappparen.
Steg 19: Ladda ner
Här är projektfilerna att ladda ner:
MIT App Inventor 2 projektfil - ladda ner
Applikations -APK för att installera på Android - ladda ner
Ladda ner de andra filerna:
INO
Rekommenderad:
ESP01 Programmering kretskort: 5 steg
ESP01 Programmering kretskort: Nyligen var jag tvungen att skriva en kod på min ESP01 och bestämde mig för att använda en adapter för att överföra koden till CHIP. Det var dock nödvändigt att göra några ändringar av adaptern så att koden kunde överföras. Det vill säga, adaptern var inte hel
Totoro Project - IoT & MQTT & ESP01: 7 steg (med bilder)
Totoro Project - IoT & MQTT & ESP01: Totoro Project det är ett trevligt IoT -projekt som du kan kopiera i många andra olika former. Med ESP01 -kortet, med MQTT -protokollet, kan du kommunicera status på knappen till MQTT -mäklaren (i min case AdafruitIO). En användbar guide för MQTT och Ad
ESP01 Moodlight With Firebase i realtid + OTA: 7 steg
ESP01 Moodlight With Firebase i realtid + OTA: Den stöder R-G-B-läge och Fade-effekt. Det finns också stöd för ljusstyrka. Stöd för OTA -uppdatering
Flash AT Command Firmware to ESP01 Module (kräver en USB till TTL -adapter): 5 steg
Flash AT Command Firmware till ESP01 -modul (kräver en USB till TTL -adapter): Av Jay Amiel AjocGensan PHfacebook.com/geeamealyoutube.com/jayamielajoc
ESP01/01S RELAY MODULE TUTORIAL: 4 steg
ESP01/ 01S RELAY MODULE TUTORIAL: Beskrivning Detta WiFi-relä baserat på AI-Thinker ESP-01/ 01S WiFi-modul, vi använder GPIO0 i ESP-01/ 01S för att styra reläet med låg nivå. Det är enkelt att göra din smarta switch till vilken enhet som helst med din telefon var som helst med detta smarta relä.SpecifikationerW