Obsah:

Nízkonákladová automatizácia s ESP01: 19 krokov
Nízkonákladová automatizácia s ESP01: 19 krokov

Video: Nízkonákladová automatizácia s ESP01: 19 krokov

Video: Nízkonákladová automatizácia s ESP01: 19 krokov
Video: PZEM-004T и ESP8266 ESP-01 Wi-Fi-монитор энергопотребления | ESP-01 Домашняя автоматизация 2024, November
Anonim
Image
Image
MCP23016
MCP23016

Dnes budeme diskutovať o automatizácii pomocou ESP01 so 16 relé. Jedná sa o super lacný dizajnový model, kde môžete znásobiť moduly a získať až 128 relé, pretože do tohto mikrokontroléra je možné vložiť až osem expandérov portov.

V našom obvode budete mať aplikáciu v smartfóne, ktorá komunikuje s ESP01. Bude mať expandér so 16 portami, každý pripojený k relé. Máme tiež nastaviteľný zdroj 3v3. Budeme preto ovládať 16-kanálový reléový modul pomocou ESP01 prostredníctvom aplikácie pre Android, ktorú vám dávam k dispozícii.

Krok 1: Tip na zapamätanie

Je dôležité poznamenať, priatelia, že som použil tento čip v obvode s názvom MCP23016. Je tiež dôležité, aby ste si pozreli video EXPANZOR IOS PRE ESP32, ESP8266 A ARDUINO, v ktorom zariadenie otestujem a ukážem, že funguje pre tieto tri typy dosiek.

Krok 2: MCP23016

Tu máme obrázok MCP23016, čo je čip s 28 kolíkmi. Je dôležité spomenúť, že existuje aj model MCP23017, ktorý je bežnejší a nepotrebuje odpor a kondenzátor, pretože má vnútorné hodiny. Je to jednoduchšie, ale jeho pripnutie sa líši od toho, čo uvádzame v tomto videu.

Krok 3: Adresa

Adresa
Adresa

Na definovanie adresy MCP23016 používame piny A0, A1 a A2. Na zmenu adresy ich môžete nechať na HIGH alebo LOW.

Adresa bude mať nasledujúci tvar:

MCP_Address = 20 + (A2 A1 A0)

Ak A2 A1 A0 môže nadobúdať VYSOKÉ / NÍZKE hodnoty, tvorí binárne číslo od 0 do 7.

Napríklad:

A2> GND, A1> GND, A0> GND (znamená 000, potom 20 + 0 = 20)

Alebo inak, A2> VYSOKÝ, A1> GND, A0> VYSOKÝ (znamená 101, potom 20 + 5 = 25)

Krok 4: Príkazy

Príkazy
Príkazy

Tu je tabuľka s príkazmi na komunikáciu:

Krok 5: Kategórie

GP0 / GP1 - Registre dátových portov

Existujú dva registre, ktoré poskytujú prístup k dvom portom GPIO.

Čítanie registra poskytuje stav pinov na tomto porte.

Bit = 1> VYSOKÝ Bit = 0> NÍZKY

IODIR0 / IODIR1

Režim pinov ovládajú dva registre. (Vstup alebo výstup)

Bit = 1> VSTUP Bit = 0> VÝSTUP

Krok 6: Štruktúra pre komunikáciu

Štruktúra pre komunikáciu
Štruktúra pre komunikáciu

Tu hovoríme o adrese čipu a prístupe k príkazu a údajom, čo je druh protokolu, ktorý je potrebné vykonať na odosielanie informácií.

Krok 7: Program

Program
Program

Urobíme program, ktorý pozostáva z komunikácie ESP01 s MCP23016, aby bolo možné použiť viac GPIO. Týchto 16 nových GPIO, ktoré budeme mať, bude ovládať 16-kanálový reléový modul.

Príkazy budú odoslané do ESP01 prostredníctvom aplikácie pre Android.

Krok 8: MCP23016

MCP23016
MCP23016

Krok 9: ESP-01

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

Toto je 16-reléová doska.

Krok 10: Montáž ESP01

Montáž ESP01
Montáž ESP01

Krok 11: Knižnice a premenné

Zahrneme knižnice zodpovedné za komunikáciu i2c a za vytvorenie prístupového bodu a webového servera. Definujeme adresu čipu a porty. Nakoniec definujeme premenné na ukladanie hodnôt pinov MCP.

#include // responzel pela comunicação i2c. #include // responzel por criar o accesspoint eo webserver WiFiServer server (80); // webserver para acessarmos através do application // endereco I2C do MCP23016 #define MCPAddress 0x20 // ENDEREORES DE REGIS definovať GP0 0x00 // REGISTRÁCIA DÁTOVÝCH ÚDAJOV 0 #definovať GP1 0x01 // REGISTRÁCIA DÁTOVÝCH ÚDAJOV 1 #definovať IODIR0 0x06 // REGISTRÁCIA I/O SMERU 0 #definovať IODIR1 0x07 // I/O REGISTRÁCIA 1 // strážca os valores dos pinos do MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;

Krok 12: Nastavenie

Inicializujeme ESP01 a nakonfigurujeme porty. Tiež nakonfigurujeme prístupový bod a inicializujeme server.

void setup () {Serial.begin (9600); oneskorenie (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, VÝSTUP); configurePort (IODIR1, VÝSTUP); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // konfigurácia servera Access Point.begin (); // inicializácia servera}

Krok 13: Slučka

Tu skontrolujem, či boli k serveru pripojení nejakí klienti. Čítali sme aj prvý riadok žiadosti. Extrahujeme údaje na manipuláciu, definujeme predvolenú hlavičku odpovede a odošleme túto odpoveď klientovi.

void loop () {WiFiClient client = server.available (); // Overenie počtu klientov, ktorí pripojili if (! Client) {return; } Reťazec req = client.readStringUntil ('\ r'); // Faz a leitura da primeira linha da requisição/ */MR é o hlavička prefixo para para saber a a requisição é a esperada para os oss */if (req.indexOf ("/MR")! = -1) {parserData (požiadavka); // čiastočná požiadavka na dodatočnú manipuláciu} else {Serial.println ("neplatná žiadosť"); návrat; } client.flush (); Reťazec s = "HTTP/1,1 200 OK / r / n"; // cabeçalho padrão de resposta client.print (s); // záväzné alebo oneskorené oneskorenie klienta (1); } // koncová slučka

Krok 14: ParserData

ParserData
ParserData

Z požiadavky hľadáme údaje súvisiace s relé. Údaje potom odošleme na MCP23016.

// a časť požadovaných odkazov na referencie a opakované vyhýbanie sa parserData (reťazcové údaje) {uint8_t relay = -1; uint8_t gp = -1; hodnota uint8_t = -1; int index = data.indexOf ("/MR"); // busca o index do prefixo MR if (data [index+5] == '/') ///MR01/1, onde 0 = GP; 1 = SPOJENIE; 1 = ESTADO (zapnuté/vypnuté) {gp = údaje [index+3]-'0'; relé = údaje [index+4]-'0'; hodnota = údaje [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); }}

Krok 15: ConfigurePort

Nastavili sme režim GPIO pin (GP0 alebo GP1).

// konfigurácia alebo režim GPIO (GP0 alebo GP1) // kombinované parametre: // port: GP0 alebo GP1 // VSTUP pre všetky porty ako porty pre GP trabalharem como entrada // VÝSTUP pre všetky typy portov ako pre GP trabalharem como saida // vlastná hodnota 0-255 indikátorov alebo režimov portov (1 = VSTUP, 0 = VÝSTUP) // ex: 0x01 alebo B00000001 ou 1: indikácia ukončenia platnosti GPX.0 trabalhará como entrada, o restante como saida void configurePort (port uint8_t, vlastný uint8_t) {if (custom == INPUT) {writeBlockData (port, 0xFF); } else if (custom == VÝSTUP) {writeBlockData (port, 0x00); } else {writeBlockData (port, vlastny); }}

Krok 16: WritePinData

V tejto časti kódu zmeníme stav požadovaného pinu a odošleme údaje do MCP.

// muda o estado de um pino desejado, passando como parameter: // pin = pino desejado; hodnota = 0/1 (zapnuté/vypnuté); gp = 0/1 (PORT do MCP) neplatné writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; if (gp == GP0) statusGP = currentValueGP0; else statusGP = currentValueGP1; if (hodnota == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} else if (hodnota == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; else currentValueGP1 = statusGP; // envia alebo dda o para o MCP writeBlockData (gp, statusGP); oneskorenie (10); }

Krok 17: WriteBlockData & SetupWiFi

Tu odosielame údaje na MCP23016 cez zbernicu i2c. Ďalej nakonfigurujeme vlastnosti tak, aby povolili prístupový bod. Nakoniec sme nakonfigurovali WiFi pre režim prístupového bodu a vytvorili AP s SSID a HESLOM.

// všetky údaje 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 (údaje); Wire.endTransmission (); oneskorenie (10); }

// konfigurácia ako proprietárny program pre prístupový bod Vyhnite sa setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP („ESP01_RELAY“, „12345678“); }

Krok 18: Aplikácia

Aplikácia
Aplikácia
Aplikácia
Aplikácia
Aplikácia
Aplikácia
Aplikácia
Aplikácia

Na vytvorenie aplikácie používame MIT App Inventor 2, ku ktorému sa dostanete prostredníctvom odkazu:

ai2.appinventor.mit.edu/

Aplikácia pozostáva z dvoch obrazoviek, z ktorých každá obsahuje osem párov tlačidiel indikujúcich stav každého relé.

Nasledujú niektoré z použitých programovacích blokov:

DÔLEŽITÉ: Predvolená adresa IP ESP, pretože prístupový bod je 192.168.4.1

1. Keď sa obrazovka inicializuje, uložíme IP do pamäte a zavoláme procedúru na obnovenie stavu tlačidiel (ON / OFF).

2. Zavolajte na druhú obrazovku

1. Po kliknutí na tlačidlo ON jedného z relé vykonáme v tlačidle vizuálne zmeny (zelené bloky). WebViewer1. GoToUrl odošle žiadosť o náš ESP01 prepojením údajov MR01 / 1 s adresou URL.

2. Po kliknutí na tlačidlo VYPNUTIE jedného z relé vykonáme v tlačidle vizuálne zmeny (zelené bloky). WebViewer1. GoToUrl odošle požiadavku na náš ESP01 prepojením údajov MR01 / 0 s adresou URL.

Tento postup sa používa na obnovenie stavu tlačidiel (relé), pretože pri zmene obrazovky sa vráti do vzoru vytvárania.

Žltý blok sa opakuje pre každý z párov tlačidiel.

Krok 19: Stiahnutie

Tu sú súbory projektu na stiahnutie:

Súbor projektu MIT App Inventor 2 - stiahnutie

Aplikácia APK na inštaláciu na Android - stiahnutie

Stiahnite si ostatné súbory:

PDF

INO

Odporúča: