Mündəricat:

ESP01: 19 Addımlı Aşağı Qiymətli Avtomatlaşdırma
ESP01: 19 Addımlı Aşağı Qiymətli Avtomatlaşdırma

Video: ESP01: 19 Addımlı Aşağı Qiymətli Avtomatlaşdırma

Video: ESP01: 19 Addımlı Aşağı Qiymətli Avtomatlaşdırma
Video: Модуль для работы с ESP-01 (ESP8266). 2024, Noyabr
Anonim
Image
Image
MCP23016
MCP23016

Bu gün 16 röle ilə ESP01 istifadə edərək avtomatlaşdırma haqqında danışacağıq. Bu mikrokontrolördə səkkiz port genişləndiricisini yerləşdirmək mümkün olduğu üçün modulları çoxalda və 128 röle əldə edə biləcəyiniz super ucuz dizayn modelidir.

Dövrümüzdə, ESP01 ilə ünsiyyət quran bir smartfonda bir tətbiqiniz olacaq. Hər biri bir röle ilə əlaqəli 16 portu olan bir genişləndiriciyə sahib olacaq. 3v3 tənzimlənən bir mənbəyimiz də var. Buna görə sizə təqdim etdiyim Android proqramı vasitəsilə ESP01 istifadə edərək 16 kanallı bir relay modulunu idarə edəcəyik.

Addım 1: Yadda saxlamaq üçün məsləhət

Dostlarım, bu çipi MCP23016 adlı bir dövrədə istifadə etdiyimi qeyd etmək vacibdir. Cihazı sınadığım və bu üç növ lövhə üçün işlədiyini göstərdiyim ESP32, ESP8266 və ARDUINO İOS İÇİN EXPANSOR videosuna baxmaq da sizin üçün vacibdir.

Addım 2: MCP23016

Burada 28 sancaqlı bir çip olan MCP23016 görüntüsü var. Daxili saatı olduğu üçün daha çox yayılmış və rezistora və kondansatörə ehtiyac duymayan MCP23017 modelinin də olduğunu qeyd etmək vacibdir. Bu, işi asanlaşdırır, lakin onun bağlanması bu videoda göstərdiyimizdən fərqlidir.

Addım 3: Ünvan

Ünvan
Ünvan

MCP23016 ünvanını təyin etmək üçün A0, A1 və A2 sancaqlarından istifadə edirik. Onları ünvan dəyişikliyi üçün YÜKSƏK və ya DÜŞÜK olaraq tərk edə bilərsiniz.

Ünvan aşağıdakı kimi formalaşacaq:

MCP_Address = 20 + (A2 A1 A0)

A2 A1 A0 -un YÜKSƏK / DÜŞÜK dəyərləri götürə biləcəyi yerlərdə, 0 -dan 7 -ə qədər olan ikili ədəd.

Misal üçün:

A2> GND, A1> GND, A0> GND (000 deməkdir, sonra 20 + 0 = 20)

Yoxsa başqa cür, A2> YÜKSEK, A1> GND, A0> Yüksək (101 deməkdir, sonra 20 + 5 = 25)

Addım 4: Əmrlər

Əmrlər
Əmrlər

İşdə ünsiyyət əmrləri olan bir cədvəl:

Addım 5: Kateqoriyalar

GP0 / GP1 - Məlumat Portu Qeydləri

İki GPIO limanına çıxışı təmin edən iki qeyd var.

Qeyd oxunuşu həmin limandakı sancaqların vəziyyətini təmin edir.

Bit = 1> HIGH Bit = 0> LOW

IODIR0 / IODIR1

Pin rejimini idarə edən iki qeyd var. (Giriş və ya Çıxış)

Bit = 1> GİRİŞ Bit = 0> Çıxış

Addım 6: Ünsiyyət quruluşu

Ünsiyyət quruluşu
Ünsiyyət quruluşu

Burada çipin ünvanı haqqında danışırıq və məlumat göndərmək üçün edilməsi lazım olan bir növ protokol olan əmr və məlumatlara daxil oluruq.

Addım 7: Proqram

Proqram
Proqram

Daha çox GPIO istifadə etmək üçün ESP01 -in MCP23016 ilə əlaqə qurmasından ibarət bir proqram edəcəyik. Əldə edəcəyimiz bu 16 yeni GPIO, 16 kanallı bir relay modulunu idarə edəcək.

Əmrlər Android tətbiqi ilə ESP01 -ə göndəriləcək.

Addım 8: MCP23016

MCP23016
MCP23016

Addım 9: ESP-01

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

Bu 16 relay lövhəsidir.

Addım 10: ESP01 -in quraşdırılması

Montaj ESP01
Montaj ESP01

Addım 11: Kitabxanalar və Dəyişənlər

İ2c ünsiyyətindən, Access Point və web serverinin yaradılmasından məsul olan kitabxanaları daxil edəcəyik. Çipin və limanların ünvanını təyin edirik. Nəhayət, MCP pinlərinin dəyərlərini saxlamaq üçün dəyişənləri təyin edirik.

#include // responsável pela comunicação i2c. #include // cavablar daxil olmaq üçün WiFiServer serveri (80); // web server serverləri üçün heç bir fayda yoxdur // endereço I2C do MCP23016 #MCPAddress təyin edin 0x20 TƏDBİR EDİN #ENDEREÇ. GP0 0x00 təyin edin // DATA PORT QEYDİYYATI 0 #GP1 təyin edin 0x01 // DATA PORT QEYDİYYATI 1 #IODIR0 0x06 təyin edin // I/O YÖN QEYDİYYATÇI 0 #təyin IODIR1 0x07 // I/O YÖNÜ QEYDİYYATÇI 1 // guarda os valores dos MCP uint8_t currentValueGP0 = 0 edin; uint8_t currentValueGP1 = 0;

Addım 12: Quraşdırma

ESP01 -i işə salırıq və portları konfiqurasiya edirik. Giriş nöqtəsini konfiqurasiya edirik və serveri işə salırıq.

void setup () {Serial.begin (9600); gecikmə (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, Çıxış); configurePort (IODIR1, Çıxış); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // Access Point server.begin () konfiqurasiya edin; // serverə daxil olun}

Addım 13: Döngə

Burada hər hansı bir müştərinin serverə bağlı olub olmadığını yoxlayıram. İlk istək sətirini də oxuduq. Manipulyasiya üçün məlumatları çıxarırıq, standart cavab başlığını təyin edirik və bu cavabı müştəriyə göndəririk.

void loop () {WiFiClient client = server.available (); // Verifica se um cliente foi conectado if (! Client) {return; } String req = client.readStringUntil ('\ r'); // Başlanğıcda və/və/və ya başlıqdakı prefiks üçün bir ön sözün tələbi */if (req.indexOf) ("/MR")! = -1) {parserData (req); // başqa bir şeyə ehtiyac yoxdur} başqa {Serial.println ("etibarsız istək"); qayıtmaq; } client.flush (); String s = "HTTP/1.1 200 OK / r / n"; // cabeçalho padrão de resposta client.print (s); // müştəri gecikməsi (1); } // son döngə

Addım 14: ParserData

ParserData
ParserData

İstəkdən, rölelerle əlaqəli məlumatları axtarırıq. Sonra məlumatları MCP23016 -a göndəririk.

// bir hissə ayrılıqda ayrılıqda parserData (String data) {uint8_t relay = -1; uint8_t gp = -1; uint8_t dəyəri = -1; int indeksi = data.indexOf ("/MR"); // indeks MR prefiksindədirsə (data [index+5] == '/') ///MR01/1, on 0 = GP; 1 = RELE; 1 = ESTADO (açma/söndürmə) {gp = data [index+3]-'0'; röle = məlumat [indeks+4]-'0'; dəyər = məlumatlar [indeks+6]-'0'; // MCP23016 üçün envia os dados // [relay-1] 0 və ya 7-7 pinPinData (röle-1, dəyər, gp); }}

Addım 15: Portu konfiqurasiya edin

GPIO pin rejimini təyin edirik (GP0 və ya GP1).

// GPIO (GP0 və ya GP1) konfiqurasiya parametrləri: // keçid: GP0 və ya GP1 // GİRİŞ, GP -lərin daxil olduğu kimi, GP -lərin daxil olduğu kimi, Çıxışlar da GP -lərin çıxışları ilə əlaqədardır. // 0-255 göstərişləri var (1 = GİRİŞ, 0 = ÇIXIŞ) // məsələn: 0x01 ya da B00000001 ya da 1: göstərici və ya GPX.0 trabalhará como entrada, or restante como saoid void configurePort (uint8_t port, uint8_t custom) {if (custom == INPUT) {writeBlockData (port, 0xFF); } başqa if (xüsusi == ÇIXIŞ) {writeBlockData (port, 0x00); } başqa {writeBlockData (port, xüsusi); }}

Addım 16: WritePinData

Kodun bu hissəsində, istədiyiniz bir pin vəziyyətini dəyişdiririk və məlumatları MCP -yə göndəririk.

// çox güman ki, parametrlər: // pin = pino desejado; dəyər = 0/1 (açma/söndürmə); gp = 0/1 (PORT do MCP) yazmaPinData boşluğu (int pin, int dəyəri, uint8_t gp) {uint8_t statusGP = 0; əgər (gp == GP0) statusGP = currentValueGP0; başqa statusGP = cariValueGP1; if (dəyər == 0) {statusGP & = ~ (B00000001 << (pin)); // LOW} üçün aşağı} başqa if (dəyər == 1) {statusGP | = (B00000001 << (pin)); // YÜKSEK} üçün}} (əgər gp == GP0) currentValueGP0 = statusGP; başqa currentValueGP1 = statusGP; // MCP yazmaq üçün blockBataData (gp, statusGP); gecikmə (10); }

Addım 17: WriteBlockData və SetupWiFi

Burada məlumatları i2c avtobusu ilə MCP23016 -a göndəririk. Sonra, Giriş nöqtəsini aktiv etmək üçün xüsusiyyətləri konfiqurasiya edirik. Nəhayət, WiFi -ni Giriş nöqtəsi rejimi üçün konfiqurasiya etdik və SSID və PASSWORD ilə bir AP yaratdıq.

// MCP23016 através to barramento i2c // reg: REGISTRADOR // data: dados (0-255) writeBlockData (uint8_t port, uint8_t data) {Wire.beginTransmission (MCPAddress); Wire.write (liman); Wire.write (məlumatlar); Wire.endTransmission (); gecikmə (10); }

// ACCESS POINT üçün lazım olan konfiqurasiyaTwoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }

Addım 18: Tətbiq

Tətbiq
Tətbiq
Tətbiq
Tətbiq
Tətbiq
Tətbiq
Tətbiq
Tətbiq

Tətbiq yaratmaq üçün MIT App Inventor 2 -dən istifadə edirik, bu linkə daxil olmaq mümkündür:

ai2.appinventor.mit.edu/

Tətbiq, hər rölin vəziyyətini göstərən, hər birində səkkiz cüt düymə olan iki ekrandan ibarətdir.

İstifadə olunan proqramlaşdırma bloklarından bəziləri bunlardır:

Vacibdir: Giriş nöqtəsi 192.168.4.1 olduğu üçün ESP -nin standart IP ünvanıdır

1. Ekran işə salındıqda, IP -ni yaddaşda saxlayırıq və düymələrin vəziyyətini bərpa etmək üçün proseduru çağırırıq (ON / OFF).

2. Digər ekrana zəng edin

1. Rölelərdən birinin ON düyməsini sıxarkən düymədə vizual dəyişikliklər edəcəyik (yaşıl bloklar). WebViewer1. GoToUrl, MR01 / 1 məlumatlarını URL -də əlaqələndirməklə ESP01 üçün bir sorğu edir.

2. Rölelərdən birinin OFF düyməsini sıxarkən düymədə vizual dəyişikliklər edəcəyik (yaşıl bloklar). WebViewer1. GoToUrl, URL -dəki MR01 / 0 məlumatlarını əlaqələndirməklə ESP01 -ə müraciət edir.

Bu prosedur düymələrin (rölelərin) vəziyyətini bərpa etmək üçün istifadə olunur, çünki ekranı dəyişdirərkən yaradılış nümunəsinə qayıdır.

Sarı blok düymə cütlərinin hər biri üçün təkrarlanır.

Addım 19: Yükləyin

Yükləmək üçün layihə faylları:

MIT App Inventor 2 layihə faylı - yükləyin

Android -də quraşdırmaq üçün APK tətbiqi - yükləyin

Digər faylları yükləyin:

PDF

MƏN YOX

Tövsiyə: