Sadržaj:
- Korak 1: Savjet za pamćenje
- Korak 2: MCP23016
- Korak 3: Adresa
- Korak 4: Naredbe
- Korak 5: Kategorije
- Korak 6: Struktura komunikacije
- Korak 7: Program
- Korak 8: MCP23016
- Korak 9: ESP-01
- Korak 10: Montiranje ESP01
- Korak 11: Knjižnice i varijable
- Korak 12: Postavljanje
- Korak 13: Petlja
- Korak 14: ParserData
- Korak 15: Konfigurirajte port
- Korak 16: WritePinData
- Korak 17: WriteBlockData & SetupWiFi
- Korak 18: Aplikacija
- Korak 19: Preuzmite
Video: Automatizacija s niskim troškovima s ESP01: 19 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
Danas ćemo raspravljati o automatizaciji pomoću ESP01 sa 16 releja. Ovo je super jeftin model dizajna u kojem možete pomnožiti module i dobiti do 128 releja, jer je moguće staviti do osam proširivača portova u ovaj mikrokontroler.
U našem krugu imat ćete aplikaciju na pametnom telefonu koja komunicira s ESP01. Imat će ekspander sa 16 priključaka, svaki spojen na relej. Imamo i podesivi izvor 3v3. Stoga ćemo kontrolirati 16-kanalni relejni modul pomoću ESP01 putem Android aplikacije, koju vam stavljam na raspolaganje.
Korak 1: Savjet za pamćenje
Važno je napomenuti, prijatelji moji, da sam ovaj čip koristio u krugu zvanom MCP23016. Također vam je važno pogledati video EKSPANZOR IOS -a ZA ESP32, ESP8266 I ARDUINO, u kojem testiram uređaj i pokazujem da radi za ove tri vrste ploča.
Korak 2: MCP23016
Ovdje imamo sliku MCP23016, koji je čip sa 28 pinova. Važno je napomenuti da postoji i model MCP23017, koji je češći i ne treba otpornik i kondenzator, jer ima unutarnji sat. To olakšava posao, ali njegovo prikvačivanje razlikuje se od onoga što prikazujemo u ovom videu.
Korak 3: Adresa
Za definiranje adrese MCP23016 koristimo pinove A0, A1 i A2. Za promjenu adrese možete ih ostaviti na VISOKO ili NISKO.
Adresa će se formirati na sljedeći način:
MCP_Address = 20 + (A2 A1 A0)
Tamo gdje A2 A1 A0 može uzeti VISOKE / NISKE vrijednosti, formira se binarni broj od 0 do 7.
Na primjer:
A2> GND, A1> GND, A0> GND (znači 000, zatim 20 + 0 = 20)
Ili drugačije, A2> HIGH, A1> GND, A0> HIGH (znači 101, zatim 20 + 5 = 25)
Korak 4: Naredbe
Evo tablice s naredbama za komunikaciju:
Korak 5: Kategorije
GP0 / GP1 - Registri portova za podatke
Postoje dva registra koji omogućuju pristup dvama GPIO priključcima.
Očitavanje registra osigurava status pinova na tom priključku.
Bit = 1> HIGH Bit = 0> LOW
IODIR0 / IODIR1
Postoje dva registra koji kontroliraju pin način rada. (Ulaz ili izlaz)
Bit = 1> ULAZ Bit = 0> IZLAZ
Korak 6: Struktura komunikacije
Ovdje govorimo o adresi čipa, te pristupu naredbi i podacima, što je svojevrsni protokol koji je potrebno učiniti za slanje informacija.
Korak 7: Program
Napravit ćemo program koji se sastoji od komunikacije ESP01 s MCP23016 kako bismo imali više GPIO -ova za korištenje. Ovih 16 novih GPIO-a koje ćemo imati kontrolirat će 16-kanalni relejni modul.
Naredbe će se slati na ESP01 putem Android aplikacije.
Korak 8: MCP23016
Korak 9: ESP-01
Ovo je ploča sa 16 releja.
Korak 10: Montiranje ESP01
Korak 11: Knjižnice i varijable
Uključit ćemo knjižnice odgovorne za i2c komunikaciju, te za stvaranje pristupne točke i web poslužitelja. Definiramo adresu čipa i portove. Na kraju, definiramo varijable za spremanje vrijednosti MCP pinova.
#include // responvel pela comunicação i2c. #include // responvel por criar o accesspoint eo webserver WiFiServer poslužitelj (80); // webserver para acessarmos através to applicativo // endereço I2C do MCP23016 #define MCPAddress 0x20 // ENDEREADOS REGES definirati GP0 0x00 // REGISTAR PORTA PODATAKA 0 #define GP1 0x01 // REGISTAR PORTA PODATAKA 1 #define IODIR0 0x06 // REGISTAR I/O SMJERNICE 0 #define IODIR1 0x07 // REGISTAR I/O SMJERNICE 1 // guarda os valores dos pinos do MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
Korak 12: Postavljanje
Pokrećemo ESP01 i konfiguriramo portove. Također konfiguriramo pristupnu točku i inicijaliziramo poslužitelj.
void setup () {Serial.begin (9600); kašnjenje (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // konfiguracija pristupne točke server.begin (); // inicijalizacija poslužitelja}
Korak 13: Petlja
Ovdje provjeravam jesu li neki klijenti povezani s poslužiteljem. Pročitali smo i prvi redak zahtjeva. Izdvajamo podatke za manipulaciju, definiramo zadano zaglavlje odgovora i šaljemo ovaj odgovor klijentu.
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 prefiksu zaglavlja za sablju se zahtijeva kao esperada za os relés */if (req.indexOf ("/MR")! = -1) {parserData (req); // dio da requisição extrai os dados para manipulação} else {Serial.println ("nevažeći zahtjev"); povratak; } client.flush (); Niz 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); } // završna petlja
Korak 14: ParserData
Od zahtjeva tražimo podatke vezane za releje. Zatim šaljemo podatke na MCP23016.
// partir da requisição busca os dados referente aos relésvoid parserData (Podaci o nizu) {uint8_t relay = -1; uint8_t gp = -1; vrijednost 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 (uključeno/isključeno) {gp = podaci [indeks+3]-'0'; relej = podaci [indeks+4]-'0'; vrijednost = podaci [indeks+6]-'0'; // envia os dados para o MCP23016 // [relay-1] porque o MCP vai de 0-7 os pinos writePinData (relej-1, vrijednost, gp); }}
Korak 15: Konfigurirajte port
Postavili smo GPIO pin način rada (GP0 ili GP1).
// konfiguracija o načinu rada za GPIO (GP0 ili 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 // prilagođena 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 trabalhará como entrada, o restante como saida void configurePort (uint8_t port, uint8_t custom) {if (custom == INPUT) {writeBlockData (port, 0xFF); } else if (custom == OUTPUT) {writeBlockData (port, 0x00); } else {writeBlockData (port, prilagođeno); }}
Korak 16: WritePinData
U ovom dijelu koda mijenjamo stanje željenog pina i šaljemo podatke MCP -u.
// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; vrijednost = 0/1 (uključeno/isključeno); gp = 0/1 (PORT do MCP) void writePinData (int pin, int vrijednost, uint8_t gp) {uint8_t statusGP = 0; if (gp == GP0) statusGP = currentValueGP0; else statusGP = currentValueGP1; if (vrijednost == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} else if (value == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; else currentValueGP1 = statusGP; // envia os dados para o MCP writeBlockData (gp, statusGP); kašnjenje (10); }
Korak 17: WriteBlockData & SetupWiFi
Ovdje podatke šaljemo na MCP23016 putem sabirnice i2c. Zatim konfiguriramo svojstva za omogućavanje pristupne točke. Konačno, konfigurirali smo WiFi za način pristupne točke i stvorili AP sa SSID -om i lozinkom.
// envia dados para 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 (podaci); Wire.endTransmission (); kašnjenje (10); }
// konfigurirati kao prilagođene parametre za o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }
Korak 18: Aplikacija
Za izradu aplikacije koristimo MIT App Inventor 2, kojem se može pristupiti putem veze:
ai2.appinventor.mit.edu/
Aplikacija se sastoji od dva zaslona koji sadrže po osam parova gumba u svakom, koji pokazuju status svakog releja.
Slijede neki od programskih blokova koji se koriste:
VAŽNO: Zadana IP adresa ESP -a, jer je pristupna točka 192.168.4.1
1. Kad se zaslon inicijalizira, spremamo IP u memoriju i pozivamo postupak za oporavak stanja gumba (UKLJ. / ISKLJ.).
2. Pozovite drugi zaslon
1. Klikom na gumb ON na jednom od releja izvršit ćemo vizualne promjene u gumbu (zeleni blokovi). WebViewer1. GoToUrl upućuje zahtjev za naš ESP01 povezivanjem podataka MR01 / 1 u URL -u.
2. Kada kliknemo gumb OFF na jednom od releja, izvršit ćemo vizualne promjene u gumbu (zeleni blokovi). WebViewer1. GoToUrl upućuje zahtjev našem ESP01 povezivanjem podataka MR01 / 0 u URL -u.
Ovaj se postupak koristi za oporavak stanja gumba (releja), jer se pri promjeni zaslona vraća na obrazac stvaranja.
Žuti blok se ponavlja za svaki od parova gumba.
Korak 19: Preuzmite
Evo datoteka projekta za preuzimanje:
Datoteka projekta MIT App Inventor 2 - preuzimanje
APK aplikacije za instaliranje na androidu - preuzimanje
Preuzmite ostale datoteke:
INO
Preporučeni:
LoRa bežična komunikacija od 3 do 8 km s niskim troškovima E32 (sx1278/sx1276) uređaj za Arduino, Esp8266 ili Esp32: 15 koraka
LoRa bežična komunikacija od 3 km do 8 km s niskim troškovima E32 (sx1278/sx1276) Uređaj za Arduino, Esp8266 ili Esp32: Stvaram knjižnicu za upravljanje EBYTE E32 na temelju Semtech serije LoRa uređaja, vrlo snažan, jednostavan i jeftin uređaj. Možete pronaći Ovdje je verzija od 3 km, verzija od 8 kilometara Ovdje mogu raditi na udaljenostima od 3000 do 8000 metara, a imaju mnogo mogućnosti i
Ručno izrađena lemilica za lemljenje s niskim talištem: 5 koraka
Ručno izrađena lemilica za lemljenje s niskim talištem: Napravite lemljenje za lemljenje s niskim talištem radi lakšeg odlemljivanja. Posjetite moj blog.MaterijaliBismuth metal 2,5g63/37 Kolofonijsko jezgro 2,5 g
Dupin-prijenosni izvor svjetlosti s više valova po iznimno niskim cijenama: 11 koraka
Dupin-prijenosni viševaljni svjetlosni izvor s iznimno niskim cijenama: Nazvan po Augusteu Dupinu, koji se smatra prvim izmišljenim detektivom, ovaj prijenosni izvor svjetla beži od bilo kojeg 5V USB punjača za telefon ili napajanja. Svaka LED glava magnetski se uključuje. Koristeći jeftine LED diode sa zvjezdicom od 3 W, koje aktivno hladi mali ventilator
Mikroskop: Interaktivni mikroskop s niskim troškovima: 12 koraka (sa slikama)
Mikroskop: Interaktivni mikroskop s niskim cijenama: Pozdrav i dobrodošli! Moje ime je Picroscope. Ja sam pristupačan, uradi sam, mikroskop na RPi koji vam omogućuje stvaranje i interakciju s vlastitim mikro svijetom. Ja sam izvrstan praktični projekt za nekoga tko je zainteresiran za biotehnologiju i zanimanja
Senzor protoka vode s niskim troškovima i ambijentalni zaslon: 8 koraka (sa slikama)
Senzor protoka vode s niskim troškovima i ambijentalni zaslon: Voda je dragocjen resurs. Milijuni ljudi nemaju pristup čistoj vodi za piće, a čak 4000 djece svakodnevno umire od zagađenih voda. Ipak, i dalje smo rasipni sa svojim resursima. Sveobuhvatni cilj