Innholdsfortegnelse:
- Trinn 1: Tips å huske
- Trinn 2: MCP23016
- Trinn 3: Adresse
- Trinn 4: Kommandoer
- Trinn 5: Kategorier
- Trinn 6: Struktur for kommunikasjon
- Trinn 7: Program
- Trinn 8: MCP23016
- Trinn 9: ESP-01
- Trinn 10: Montering av ESP01
- Trinn 11: Biblioteker og variabler
- Trinn 12: Oppsett
- Trinn 13: Sløyfe
- Trinn 14: ParserData
- Trinn 15: ConfigurePort
- Trinn 16: WritePinData
- Trinn 17: WriteBlockData & SetupWiFi
- Trinn 18: App
- Trinn 19: Last ned
Video: Lavprisautomatisering med ESP01: 19 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
I dag diskuterer vi automatisering ved bruk av ESP01 med 16 reléer. Dette er en superbillig designmodell hvor du kan multiplisere modulene og få opptil 128 reléer, da det er mulig å sette opptil åtte portutvidere i denne mikrokontrolleren.
I vår krets vil du ha en applikasjon på en smarttelefon som kommuniserer med ESP01. Den vil ha en ekspander med 16 porter, hver koblet til et relé. Vi har også en 3v3 justerbar kilde. Vi vil derfor kontrollere en 16-kanals relemodul ved bruk av ESP01 gjennom Android-appen, som jeg gjør tilgjengelig for deg.
Trinn 1: Tips å huske
Det er viktig å merke seg, venner, at jeg brukte denne brikken i en krets kalt MCP23016. Det er også viktig for deg å se videoen EXPANSOR OF IOS FOR ESP32, ESP8266 AND ARDUINO, der jeg tester enheten og viser at den fungerer for disse tre typene brett.
Trinn 2: MCP23016
Her har vi et bilde av MCP23016, som er en brikke med 28 pinner. Det er viktig å nevne at det også er modellen MCP23017, som er mer vanlig og ikke trenger motstand og kondensator, fordi den har en intern klokke. Dette gjør det enklere, men festingen er forskjellig fra det vi viser i denne videoen.
Trinn 3: Adresse
For å definere adressen til MCP23016 bruker vi pinnene A0, A1 og A2. Du kan bare la dem stå på HIGH eller LOW for adresseendringen.
Adressen vil bli dannet som følger:
MCP_Address = 20 + (A2 A1 A0)
Der A2 A1 A0 kan ta HIGH / LOW verdier, dannes et binært tall fra 0 til 7.
For eksempel:
A2> GND, A1> GND, A0> GND (betyr 000, deretter 20 + 0 = 20)
Hvis ikke, A2> HØY, A1> GND, A0> HØY (betyr 101, deretter 20 + 5 = 25)
Trinn 4: Kommandoer
Her er en tabell med kommandoer for kommunikasjon:
Trinn 5: Kategorier
GP0 / GP1 - Dataportregistre
Det er to registre som gir tilgang til de to GPIO -portene.
Registeravlesningen gir status for pinnene på den porten.
Bit = 1> HIGH Bit = 0> LAV
IODIR0 / IODIR1
Det er to registre som styrer pin -modus. (Inngang eller utgang)
Bit = 1> INNGANG Bit = 0> UTGANG
Trinn 6: Struktur for kommunikasjon
Her snakker vi om adressen til brikken, og får tilgang til kommandoen og dataene, som er en slags protokoll som må gjøres for å sende informasjon.
Trinn 7: Program
Vi gjør et program som består i å kommunisere ESP01 med MCP23016 for å ha flere GPIO -er å bruke. Disse 16 nye GPIO-ene vi kommer til å styre en 16-kanals relemodul.
Kommandoer blir sendt til ESP01 via en Android -applikasjon.
Trinn 8: MCP23016
Trinn 9: ESP-01
Dette er et 16-stafettbrett.
Trinn 10: Montering av ESP01
Trinn 11: Biblioteker og variabler
Vi vil inkludere bibliotekene som er ansvarlige for i2c -kommunikasjon, og for å lage tilgangspunktet og webserveren. Vi definerer adressen til brikken og portene. Til slutt definerer vi variablene for å lagre verdiene til MCP -pinnene.
#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 definere 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 gjør MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
Trinn 12: Oppsett
Vi initialiserer ESP01 og konfigurerer portene. Vi konfigurerer også tilgangspunktet og initialiserer serveren.
ugyldig oppsett () {Serial.begin (9600); forsinkelse (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}
Trinn 13: Sløyfe
Her sjekker jeg om noen klienter har blitt koblet til serveren. Vi leste også den første forespørselslinjen. Vi trekker ut dataene for manipulasjon, definerer standard svaroverskrift og sender dette svaret til klienten.
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 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 ("ugyldig forespørsel"); komme tilbake; } client.flush (); String 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); } // ende sløyfe
Trinn 14: ParserData
Fra forespørselen ser vi etter dataene relatert til reléene. Vi sender deretter dataene til 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 verdi = -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 (på/av) {gp = data [indeks+3]-'0'; relé = data [indeks+4]-'0'; verdi = data [indeks+6]-'0'; // envia os dados para o MCP23016 // [relay-1] porque o MCP vai de 0-7 os pinos writePinData (relay-1, value, gp); }}
Trinn 15: ConfigurePort
Vi angir GPIO -pin -modus (GP0 eller GP1).
// konfigura 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 // tilpasset verdi for 0-255 indikasjoner for portas (1 = INNGANG, 0 = UTGANG) // eks: 0x01 eller B00000001 eller 1: indikasjon som åpner for GPX.0-inngang, eller restant for å si ugyldig konfigureringPort (uint8_t port, uint8_t tilpasset) {if (custom == INPUT) {writeBlockData (port, 0xFF); } annet hvis (tilpasset == OUTPUT) {writeBlockData (port, 0x00); } annet {writeBlockData (port, tilpasset); }}
Trinn 16: WritePinData
I denne delen av koden endrer vi tilstanden til en ønsket pin og sender dataene til MCP.
// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; verdi = 0/1 (på/av); gp = 0/1 (PORT do MCP) void writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; hvis (gp == GP0) statusGP = currentValueGP0; ellers statusGP = currentValueGP1; hvis (verdi == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} annet hvis (verdi == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; ellers currentValueGP1 = statusGP; // envia os dados para o MCP writeBlockData (gp, statusGP); forsinkelse (10); }
Trinn 17: WriteBlockData & SetupWiFi
Her sender vi data til MCP23016 via i2c -bussen. Deretter konfigurerer vi egenskapene for å aktivere tilgangspunktet. Til slutt konfigurerte vi WiFi for tilgangspunktmodus og opprettet en AP med SSID og PASSORD.
// 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 (); forsinkelse (10); }
// konfigura as propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }
Trinn 18: App
For å lage programmet bruker vi MIT App Inventor 2, som du kan få tilgang til via lenken:
ai2.appinventor.mit.edu/
Applikasjonen består av to skjermer som inneholder åtte par knapper i hver, som angir statusen til hvert relé.
Følgende er noen av programmeringsblokkene som brukes:
VIKTIG: Standard IP -adresse for ESP, ettersom tilgangspunktet er 192.168.4.1
1. Når skjermen initialiseres, lagrer vi IP -en i minnet og kaller fremgangsmåten for å gjenopprette tilstanden til knappene (PÅ / AV).
2. Ring den andre skjermen
1. Når du klikker på PÅ -knappen på et av reléene, vil vi gjøre visuelle endringer i knappen (grønne blokker). WebViewer1. GoToUrl sender en forespørsel om ESP01 ved å koble MR01 / 1 -dataene i URL -en.
2. Når du klikker på AV -knappen på en av reléene, vil vi gjøre visuelle endringer i knappen (grønne blokker). WebViewer1. GoToUrl sender en forespørsel til ESP01 vår ved å koble MR01 / 0 -dataene i URL -en.
Denne prosedyren brukes til å gjenopprette tilstanden til knappene (releer), fordi når du endrer skjermen, går den tilbake til opprettelsesmønsteret.
Den gule blokken gjentas for hvert av knappeparene.
Trinn 19: Last ned
Her er prosjektfilene for nedlasting:
MIT App Inventor 2 prosjektfil - last ned
Applikasjons -APK for å installere på Android - last ned
Last ned de andre filene:
INO
Anbefalt:
ESP01 programmering kretskort: 5 trinn
ESP01 Programmering kretskort: Nylig måtte jeg skrive en kode på ESP01 og bestemte meg for å bruke en adapter for å overføre koden til CHIP. Det var imidlertid nødvendig å gjøre noen endringer i adapteren slik at koden kunne overføres. Det vil si at adapteren ikke var hel
Totoro Project - IoT & MQTT & ESP01: 7 trinn (med bilder)
Totoro Project - IoT & MQTT & ESP01: Totoro Project er et fint IoT -prosjekt du kan kopiere i mange andre forskjellige former. Ved hjelp av ESP01 -kortet, med MQTT -protokollen, kan du kommunisere statusen til knappen til MQTT -megleren (i min case AdafruitIO). En nyttig guide for MQTT og Ad
ESP01 Moodlight With Firebase i sanntid + OTA: 7 trinn
ESP01 Moodlight With Firebase i sanntid + OTA: Den støtter R-G-B-modus og Fade-effekt. Det er også støtte for lysstyrkekontroll. Støtte for OTA -oppdatering
Flash AT Command -fastvare til ESP01 -modul (krever en USB til TTL -adapter): 5 trinn
Flash AT Command -fastvare til ESP01 -modul (krever en USB til TTL -adapter): Av Jay Amiel AjocGensan PHfacebook.com/geeamealyoutube.com/jayamielajoc
ESP01/01S RELAY MODULE TUTORIAL: 4 trinn
ESP01/ 01S RELAY MODULE TUTORIAL: Beskrivelse Dette WiFi-reléet er basert på AI-Thinker ESP-01/ 01S WiFi-modul, vi bruker GPIO0 til ESP-01/ 01S for å kontrollere reléet med lavt nivå. Det er enkelt å gjøre smartbryteren din til hvilken som helst enhet med telefonen hvor som helst med dette smarte reléet. SpesifikasjonerW