Obsah:

Nízká cena automatizace s ESP01: 19 kroků
Nízká cena automatizace s ESP01: 19 kroků

Video: Nízká cena automatizace s ESP01: 19 kroků

Video: Nízká cena automatizace s ESP01: 19 kroků
Video: Automatizace konferenčního centra v Karlíně – Loxone 2024, Prosinec
Anonim
Image
Image
MCP23016
MCP23016

Dnes budeme diskutovat o automatizaci pomocí ESP01 se 16 relé. Jedná se o super levný designový model, kde můžete znásobit moduly a získat až 128 relé, protože do tohoto mikrokontroléru je možné vložit až osm portových expandérů.

V našem okruhu budete mít aplikaci ve smartphonu, která komunikuje s ESP01. Bude mít expandér se 16 porty, každý připojený k relé. Máme také nastavitelný zdroj 3v3. Budeme tedy ovládat 16kanálový reléový modul pomocí ESP01 prostřednictvím aplikace pro Android, kterou vám dávám k dispozici.

Krok 1: Tip k zapamatování

Je důležité, přátelé, že tento čip jsem použil v obvodu nazvaném MCP23016. Je také důležité, abyste sledovali video EXPANZOR IOS PRO ESP32, ESP8266 A ARDUINO, ve kterém zařízení testuji a ukazuji, že funguje pro tyto tři typy desek.

Krok 2: MCP23016

Zde máme obrázek MCP23016, což je čip s 28 piny. Je důležité zmínit, že existuje také model MCP23017, který je běžnější a nepotřebuje odpor a kondenzátor, protože má vnitřní hodiny. To je jednodušší, ale jeho připnutí se liší od toho, co zobrazujeme v tomto videu.

Krok 3: Adresa

Adresa
Adresa

K definování adresy MCP23016 používáme piny A0, A1 a A2. Pro změnu adresy je můžete nechat na VYSOKÉ nebo NÍZKÉ.

Adresa bude vytvořena následovně:

MCP_Address = 20 + (A2 A1 A0)

Tam, kde A2 A1 A0 může nabývat VYSOKÝCH / NÍZKÝCH hodnot, je binární číslo od 0 do 7 forem.

Například:

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

Nebo jinak, A2> VYSOKÝ, A1> GND, A0> VYSOKÝ (znamená 101, pak 20 + 5 = 25)

Krok 4: Příkazy

Příkazy
Příkazy

Zde je tabulka s příkazy pro komunikaci:

Krok 5: Kategorie

GP0 / GP1 - registry datových portů

Existují dva registry, které poskytují přístup ke dvěma portům GPIO.

Čtení registru poskytuje stav pinů na tomto portu.

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

IODIR0 / IODIR1

Režim pinů ovládají dva registry. (Vstup nebo výstup)

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

Krok 6: Struktura pro komunikaci

Struktura pro komunikaci
Struktura pro komunikaci

Zde hovoříme o adrese čipu a přístupu k příkazu a datům, což je druh protokolu, který je třeba provést pro odesílání informací.

Krok 7: Program

Program
Program

Uděláme program, který spočívá v komunikaci ESP01 s MCP23016, abychom mohli používat více GPIO. Těchto 16 nových GPIO, které budeme mít, bude ovládat 16kanálový reléový modul.

Příkazy budou odeslány na ESP01 prostřednictvím aplikace pro Android.

Krok 8: MCP23016

MCP23016
MCP23016

Krok 9: ESP-01

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

Toto je deska se 16 relé.

Krok 10: Montáž ESP01

Montáž ESP01
Montáž ESP01

Krok 11: Knihovny a proměnné

Zahrneme knihovny zodpovědné za komunikaci i2c a za vytvoření přístupového bodu a webového serveru. Definujeme adresu čipu a porty. Nakonec definujeme proměnné pro uložení hodnot pinů MCP.

#include // responzel pela comunicação i2c. #include // responzel por criar o accesspoint eo webserver WiFiServer server (80); // webserver para acessarmos através do aplicativo // endereço I2C do MCP23016 #define MCPAddress 0x20 // ENDEREOES DE REGIS definujte GP0 0x00 // REGISTR DATOVÉHO PORTU 0 #definujte GP1 0x01 // REGISTR DATOVÉHO PORTU 1 #definujte IODIR0 0x06 // I/O DIRECTION REGISTER 0 #define IODIR1 0x07 // I/O DIRECTION REGISTER 1 // guarda os valores dos pinos do MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;

Krok 12: Nastavení

Inicializujeme ESP01 a konfigurujeme porty. Rovněž konfigurujeme přístupový bod a inicializujeme server.

neplatné nastavení () {Serial.begin (9600); zpoždění (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, VÝSTUP); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // konfigurace přístupového bodu server.begin (); // inicializace serveru}

Krok 13: Smyčka

Zde kontroluji, zda byli k serveru připojeni nějací klienti. Četli jsme také první řádek požadavku. Extrahujeme data pro manipulaci, definujeme výchozí záhlaví odpovědi a odesíláme tuto odpověď klientovi.

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); // další část požadavku na další manipulaci} else {Serial.println ("neplatný požadavek"); vrátit se; } client.flush (); Řetězec 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); } // koncová smyčka

Krok 14: ParserData

Data analyzátoru
Data analyzátoru

Z požadavku hledáme data související s relé. Data pak odešleme na MCP23016.

// část požadavku na odkazování na referenční hodnotu parserData (řetězcová data) {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 = SPOLEČNOST; 1 = ESTADO (zapnuto/vypnuto) {gp = data [index+3]-'0'; relé = data [index+4]-'0'; hodnota = data [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 jsme režim GPIO pin (GP0 nebo GP1).

// konfigurace nebo režim GPIO (GP0 nebo GP1) // parametry parametru: // port: GP0 nebo GP1 // VSTUP para todos jako porty do GP trabalharem como entrada // OUTPUT para todos as portas do GP trabalharem como saida // vlastní počet barev 0-255 indikátorů nebo modů portů (1 = VSTUP, 0 = VÝSTUP) // ex: 0x01 nebo B00000001 ou 1: indikace quen apenas o GPX.0 trabalhará como entrada, o restante como saida void configurePort (port uint8_t, uint8_t vlastní) {if (custom == INPUT) {writeBlockData (port, 0xFF); } else if (custom == VÝSTUP) {writeBlockData (port, 0x00); } else {writeBlockData (port, vlastní); }}

Krok 16: WritePinData

V této části kódu změníme stav požadovaného pinu a odešleme data na MCP.

// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; hodnota = 0/1 (zapnuto/vypnuto); 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 os dados para o MCP writeBlockData (gp, statusGP); zpoždění (10); }

Krok 17: WriteBlockData & SetupWiFi

Zde odesíláme data na MCP23016 přes sběrnici i2c. Dále nakonfigurujeme vlastnosti, abychom povolili přístupový bod. Nakonec jsme nakonfigurovali WiFi pro režim přístupového bodu a vytvořili AP s SSID a PASSWORD.

// 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 (); zpoždění (10); }

// konfigurace konfigurace jako přístupový bod Vyhněte se setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP („ESP01_RELAY“, „12345678“); }

Krok 18: App

Aplikace
Aplikace
Aplikace
Aplikace
Aplikace
Aplikace
Aplikace
Aplikace

K vytvoření aplikace používáme MIT App Inventor 2, ke kterému je přístup prostřednictvím odkazu:

ai2.appinventor.mit.edu/

Aplikace se skládá ze dvou obrazovek, z nichž každá obsahuje osm párů tlačítek, indikujících stav každého relé.

Níže jsou uvedeny některé z použitých programovacích bloků:

DŮLEŽITÉ: Výchozí IP adresa ESP, protože přístupový bod je 192.168.4.1

1. Když se obrazovka inicializuje, uložíme IP do paměti a zavoláme proceduru pro obnovení stavu tlačítek (ON / OFF).

2. Zavolejte na druhou obrazovku

1. Po kliknutí na tlačítko ON u jednoho z relé provedeme v tlačítku vizuální změny (zelené bloky). WebViewer1. GoToUrl vytvoří požadavek na náš ESP01 propojením dat MR01 / 1 s URL.

2. Po kliknutí na tlačítko VYPNOUT jednoho z relé provedeme v tlačítku vizuální změny (zelené bloky). WebViewer1. GoToUrl vytvoří požadavek na náš ESP01 propojením dat MR01 / 0 s URL.

Tento postup slouží k obnovení stavu tlačítek (relé), protože při změně obrazovky se vrátí do vzoru vytváření.

Žlutý blok se opakuje pro každou dvojici tlačítek.

Krok 19: Stažení

Zde jsou soubory projektu ke stažení:

Soubor projektu MIT App Inventor 2 - stažení

Aplikace APK k instalaci na Android - stažení

Stáhněte si další soubory:

PDF

INO

Doporučuje: