Sadržaj:

Automatizacija s niskim troškovima s ESP01: 19 koraka
Automatizacija s niskim troškovima s ESP01: 19 koraka

Video: Automatizacija s niskim troškovima s ESP01: 19 koraka

Video: Automatizacija s niskim troškovima s ESP01: 19 koraka
Video: Crypto Pirates Daily News - January 22nd 2022 - Latest Crypto News Update 2024, Novembar
Anonim
Image
Image
MCP23016
MCP23016

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

Adresa
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

Komande
Komande

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

Struktura za komunikaciju
Struktura za komunikaciju

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

Program
Program

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

MCP23016
MCP23016

Korak 9: ESP-01

ESP-01
ESP-01
ESP-01
ESP-01

Ovo je ploča sa 16 releja.

Korak 10: Montiranje ESP01

Montaža ESP01
Montaža 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

ParserData
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

Aplikacija
Aplikacija
Aplikacija
Aplikacija
Aplikacija
Aplikacija
Aplikacija
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:

PDF

JA NE

Preporučuje se: