
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: Programirajte
- Korak 8: MCP23016
- Korak 9: ESP-01
- Korak 10: Montiranje ESP01
- Korak 11: Biblioteke 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
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-23 14:37



Danas ćemo razgovarati 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 portova, 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 trebaju mu otpornik i kondenzator, jer ima unutarnji sat. To olakšava posao, ali njegovo prikvačivanje se razlikuje od onog š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ćavaju pristup do dva GPIO porta.
Očitavanje registra pruža status pinova na tom portu.
Bit = 1> HIGH Bit = 0> LOW
IODIR0 / IODIR1
Postoje dva registra koji kontroliraju pin način. (Ulaz ili izlaz)
Bit = 1> INPUT Bit = 0> OUTPUT
Korak 6: Struktura komunikacije

Ovdje govorimo o adresi čipa i pristupu naredbi i podacima, što je svojevrsni protokol koji je potrebno učiniti za slanje informacija.
Korak 7: Programirajte

Napravit ćemo program koji se sastoji od komunikacije ESP01 s MCP23016 kako bismo imali više GPIO -a za upotrebu. Ovih 16 novih GPIO-a koje ćemo imati kontrolirat će 16-kanalni relejni modul.
Komande ć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: Biblioteke i varijable
Uključit ćemo biblioteke odgovorne za i2c komunikaciju, te za kreiranje 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 ili accesspoint eo webserver WiFiServer server (80); // webserver za pristup aplikacijama // endereço I2C do MCP23016 #define MCPAddress 0x20 // ENDEREADOS definirati GP0 0x00 // REGISTAR PORTA PODATAKA 0 #define GP1 0x01 // REGISTAR PORTA PODATAKA 1 #define IODIR0 0x06 // REGISTRACIJA I/O SMJERNICE 0 #define IODIR1 0x07 // REGISTAR I/O UPUTSTVA 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 tačke server.begin (); // inicijalizacija servera}
Korak 13: Petlja
Ovdje provjeravam jesu li neki klijenti povezani sa serverom. Pročitali smo i prvu liniju zahtjeva. Izvlačimo podatke za manipulaciju, definiramo zadano zaglavlje odgovora i šaljemo ovaj odgovor klijentu.
void loop () {WiFiClient client = server.available (); // Provjeri da li je klijent povezan sa if (! Client) {return; } String req = client.readStringUntil ('\ r'); // Faz a leitura da primeira linha to requisição/ */MR je prefiks zaglavlja za sablju koji se zahtijeva kao esperada za os relés */if (req.indexOf ("/MR")! = -1) {parserData (req); // dio koji zahtijeva dodatni zahtjev za manipulaciju} else {Serial.println ("nevažeći zahtjev"); return; } 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); } // završna petlja
Korak 14: ParserData

Od zahtjeva tražimo podatke vezane za releje. Zatim šaljemo podatke na MCP23016.
// dio koji zahtijeva da se busca os dados referencira aos relésvoid parserData (podaci niza) {uint8_t relay = -1; uint8_t gp = -1; uint8_t vrijednost = -1; int index = data.indexOf ("/MR"); // sabira indeks za prefiks MR if (podaci [indeks+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'; // envas os dados para 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 GPIO (GP0 ili GP1) // zajednički parametar passamos: // port: GP0 ili GP1 // INPUT para todos as portas to GP trabalharem como entrada // OUTPUT para todos as portas do GP trabalharem como saida // prilagođena vrijednost od 0-255 označava modo das portas (1 = INPUT, 0 = OUTPUT) // primjer: 0x01 ili B00000001 ili 1: indikatori za GPX.0 trabalhará como entrada, ili ostatak koji je rekao da je 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; // Zahtjev za 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.
// sa podacima o MCP23016 através do barramento i2c // reg: REGISTRADOR // podaci: dados (0-255) void writeBlockData (uint8_t port, uint8_t podaci) {Wire.beginTransmission (MCPAddress); Wire.write (port); Wire.write (podaci); Wire.endTransmission (); kašnjenje (10); }
// konfigurirati kao prilagođene parametre za TOČKU PRISTUPNOSTIpostavi 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 ekrana koji sadrže po osam parova gumba u svakom, koji pokazuju status svakog releja.
Ovo su neki od programskih blokova koji se koriste:
VAŽNO: Zadana IP adresa ESP -a kao pristupne tačke je 192.168.4.1
1. Kada se zaslon inicijalizira, spremamo IP u memoriju i pozivamo proceduru za oporavak stanja tipki (ON / OFF).
2. Pozovite drugi ekran
1. Kada kliknemo na dugme UKLJUČENO na jednom od releja, izvršićemo vizuelne promene u dugmetu (zeleni blokovi). WebViewer1. GoToUrl postavlja zahtjev za naš ESP01 povezivanjem podataka MR01 / 1 u URL -u.
2. Kada kliknemo dugme OFF na jednom od releja, izvršićemo vizuelne promene u dugmetu (zeleni blokovi). WebViewer1. GoToUrl upućuje zahtjev našem ESP01 povezivanjem podataka MR01 / 0 u URL -u.
Ova procedura se koristi za oporavak stanja dugmadi (releja), jer se pri promjeni ekrana vraća na obrazac kreiranja.
Žuti blok se ponavlja za svaki od parova dugmadi.
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:
JA NE
Preporučuje se:
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 do 8 km s niskim troškovima E32 (sx1278/sx1276) Uređaj za Arduino, Esp8266 ili Esp32: Stvaram biblioteku 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 funkcija i
Ručno izrađena lemilica za lemljenje s niskim tačkama topljenja: 5 koraka

Ručno izrađena lemilica za lemljenje s niskim tačkama topljenja: Napravite lemljenje lemljenja s niskim tačkama topljenja radi lakšeg raspakiranja.Molimo vas da posjetite moj blog.MaterijaliBismuth metal 2.5g63/37 Kolofonijsko jezgro lemilo 2.5g
MOLBED - Modularni Brajevo pismo s niskim cijenama: 5 koraka (sa slikama)

MOLBED - Modularni Brajev elektronski ekran sa niskim troškovima: Opis Cilj ovog projekta je stvaranje elektronskog sistema Brajevog pisma koji je pristupačan i koji ovu tehnologiju može učiniti dostupnom svima. Nakon početne procjene, bilo je jasno da je tako dizajn individualnog lika h
Pametna kuća s niskim troškovima - kontrola s bilo kojeg mjesta u SVIJETU: 6 koraka

Povoljna pametna kuća - kontrola s bilo kojeg mjesta u SVIJETU: OOdavno oba roditelja rade na tome da imaju ugodan život za porodicu. Tako da u svom domu imamo puno elektroničkih uređaja poput grijača, klima uređaja, perilice rublja itd. Kada se vrate kući trebali bi se osjećati vrlo ugodno u ter
LM317 Napajanje sa niskim troškovima: 6 koraka

LM317 Namjensko napajanje sa niskim troškovima: Zdravo momci, ovo je moj prvi projekt s uputama. ovdje ću vam pokazati kako sam napravio svoje jeftino napajanje LM317 za klupu. Nadam se da ćete uživati