ESP01: 19 qadamli arzon narxlardagi avtomatlashtirish
ESP01: 19 qadamli arzon narxlardagi avtomatlashtirish
Anonim
Image
Image
MCP23016
MCP23016

Bugun biz ESP01 yordamida 16 ta o'rni bilan avtomatlashtirishni muhokama qilamiz. Bu juda arzon dizayn modeli, bu erda siz modullarni ko'paytirishingiz va 128 ta o'rni olishingiz mumkin, chunki bu mikrokontrollerda sakkiztagacha port kengaytirgichni qo'yish mumkin.

Bizning davrimizda sizda ESP01 bilan aloqa qiladigan smartfonda dastur bo'ladi. U 16 portli kengaytirgichga ega bo'ladi, ularning har biri o'z o'rni bilan bog'langan. Bizda 3v3 sozlanishi manba ham bor. Shuning uchun biz ESP01 yordamida 16 kanalli o'rni modulini Android ilovasi orqali boshqaramiz.

1 -qadam: eslab qolish uchun maslahat

Shuni ta'kidlash kerakki, do'stlarim, men bu chipni MCP23016 deb nomlangan sxemada ishlatganman. IOS uchun ESP32, ESP8266 va ARDUINO uchun EXPANSOR videoni tomosha qilish siz uchun ham muhim, unda men qurilmani sinab ko'raman va uning ushbu uch turdagi taxtalarda ishlashini ko'rsataman.

2 -qadam: MCP23016

Bu erda bizda 28 pinli chip bo'lgan MCP23016 tasviri bor. Shuni ta'kidlash kerakki, MCP23017 modeli ham keng tarqalgan bo'lib, rezistor va kondansatkichga muhtoj emas, chunki uning ichki soati bor. Bu ishni osonlashtiradi, lekin uning mahkamlanishi biz bu videoda ko'rsatganidan farq qiladi.

3 -qadam: Manzil

Manzil
Manzil

MCP23016 manzilini aniqlash uchun biz A0, A1 va A2 pinlaridan foydalanamiz. Manzilni o'zgartirish uchun ularni "HIGH" yoki "LOW" da qoldirishingiz mumkin.

Manzil quyidagicha shakllantiriladi:

MCP_Address = 20 + (A2 A1 A0)

Bu erda A2 A1 A0 yuqori / past qiymatlarni olishi mumkin, ikkilik raqam 0 dan 7 gacha.

Masalan:

A2> GND, A1> GND, A0> GND (000 degan ma'noni anglatadi, keyin 20 + 0 = 20)

Yoki boshqacha, A2> YUQORI, A1> GND, A0> YUQORI (101 degan ma'noni anglatadi, keyin 20 + 5 = 25)

4 -qadam: Buyruqlar

Buyruqlar
Buyruqlar

Bu erda aloqa uchun buyruqlar bilan jadval:

5 -qadam: toifalar

GP0 / GP1 - Ma'lumot portlari registrlari

Ikkita GPIO portiga kirishni ta'minlaydigan ikkita registr mavjud.

Ro'yxatdan o'tish kitobi portdagi pinlarning holatini ko'rsatadi.

Bit = 1> HIGH Bit = 0> LOW

IODIR0 / IODIR1

Pin rejimini boshqaruvchi ikkita registr mavjud. (Kirish yoki chiqish)

Bit = 1> INPUT Bit = 0> Chiqish

6 -qadam: Aloqa tuzilishi

Aloqa tuzilishi
Aloqa tuzilishi

Bu erda biz chipning manzili haqida gapiramiz va ma'lumotlarni yuborish uchun bajarilishi kerak bo'lgan protokol turiga kiradigan buyruq va ma'lumotlarga kiramiz.

7 -qadam: Dastur

Dastur
Dastur

Biz ko'proq GPIO -larga ega bo'lish uchun ESP01 -ni MCP23016 bilan bog'lashni o'z ichiga oladigan dasturni tuzamiz. Bizda mavjud bo'lgan 16 ta yangi GPIO 16 kanalli o'rni modulini boshqaradi.

Buyruqlar Android ilovasi orqali ESP01 ga yuboriladi.

8 -qadam: MCP23016

MCP23016
MCP23016

9-qadam: ESP-01

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

Bu 16 o'rni bo'lgan taxta.

10 -qadam: ESP01 -ni o'rnatish

ESP01 o'rnatish
ESP01 o'rnatish

11 -qadam: Kutubxonalar va o'zgaruvchilar

Biz i2c aloqasi, kirish nuqtasi va veb -serverni yaratish uchun javob beradigan kutubxonalarni o'z ichiga olamiz. Biz chip va portlarning manzilini aniqlaymiz. Nihoyat, biz MCP pinlarining qiymatlarini saqlash uchun o'zgaruvchilarni aniqlaymiz.

#include // responsável pela comunicação i2c. #include // javob berish yoki kirish nuqtasi eo veb -serveri WiFiServer serveri (80); // veb -serverlar uchun javob berish // endereço I2C dan MCP23016gacha #MCPAddressni aniqlash 0x20 // ENDEREÇ. GP0 0x00 ni belgilang // DATA PORTI Ro'yxatga oluvchisi 0 #GP1ni belgilang 0x01 // Ma'lumot portini ro'yxatga oluvchi 1 #IODIR0ni belgilang 0x06 // I/U YO'NALISH Ro'yxatga oluvchisi 0 #aniqlang IODIR1 0x07 // I/U YO'NALISHINI Ro'yxatga oluvchi 1 // gorda os valores dos. MCP uint8_t currentValueGP0 = 0 ni bajaring; uint8_t currentValueGP1 = 0;

12 -qadam: sozlash

Biz ESP01 -ni ishga tushiramiz va portlarni sozlaymiz. Shuningdek, biz kirish nuqtasini sozlaymiz va serverni ishga tushiramiz.

void setup () {Serial.begin (9600); kechikish (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); sozlashWiFi (); // kirish nuqtasi serverini sozlash.begin (); // serverni rasmiylashtirish}

13 -qadam: Loop

Bu erda men mijozlar serverga ulanganligini tekshiraman. Shuningdek, biz birinchi so'rov satrini o'qiymiz. Biz ma'lumotlarni manipulyatsiya qilish uchun ajratamiz, standart javob sarlavhasini aniqlaymiz va bu javobni mijozga yuboramiz.

void loop () {WiFiClient client = server.available (); // Verifica se um cliente foi conectado if (! Mijoz) {qaytish; } String req = client.readStringUntil ('\ r'); // Bosh sahifa talablari/ */MR va uning boshi prefiksi uchun zarur bo'lgan talablar */if (req.indexOf ("/MR")! = -1) {parserData (req); // a partir da Requisição extrai os dados para manipulação} else {Serial.println ("yaroqsiz so'rov"); qaytish; } client.flush (); String s = "HTTP/1.1 200 OK / r / n"; // cabeçalho padrão de resposta client.print (lar); // envia a resposta para o cliente kechiktirish (1); } // oxiri

14 -qadam: ParserData

ParserData
ParserData

So'rovdan biz o'z o'rni bilan bog'liq ma'lumotlarni qidiramiz. Keyin ma'lumotlarni MCP23016 ga yuboramiz.

// a partir da Requisição busca os dados referente aos relésvoid parserData (String data) {uint8_t relay = -1; uint8_t gp = -1; uint8_t qiymati = -1; int indeksi = data.indexOf ("/MR"); // buska yoki indeks MR prefiksi bo'lsa (ma'lumotlar [indeks+5] == '/') ///MR01/1, 0 = GP; 1 = RELE; 1 = ESTADO (yoqish/o'chirish) {gp = ma'lumotlar [indeks+3]-'0'; o'rni = ma'lumotlar [indeks+4]-'0'; qiymat = ma'lumotlar [indeks+6]-'0'; // envia os dados para MCP23016 // [relay-1] porque or MCP vai 0-7 os pinos writePinData (relay-1, value, gp); }}

15 -qadam: Portni sozlash

Biz GPIO pin rejimini o'rnatdik (GP0 yoki GP1).

// GPIO GPO (GP0 yoki GP1) // konfiguratsiya parametrlari: // port: GP0 yoki GP1 // INPUT - to port to do as GP to trabalharem como entrada // OUTPUT - to port to do as GP to trabalharem como saida. // 0-255 ko'rsatkichlari (1 = INPUT, 0 = OUTPUT) // masalan: 0x01 yoki B00000001 yoki 1: indikator yoki GPX.0 trabalhará como entrada, or restante como saida void configurePort (uint8_t port, uint8_t custom) {if (custom == INPUT) {writeBlockData (port, 0xFF); } if if (custom == OUTPUT) {writeBlockData (port, 0x00); } boshqa {writeBlockData (port, maxsus); }}

16 -qadam: WritePinData

Kodning bu qismida biz kerakli pin holatini o'zgartiramiz va ma'lumotlarni MCP ga yuboramiz.

// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; qiymat = 0/1 (yoqish/o'chirish); gp = 0/1 (PORT do MCP) yozishPinData bekor (int pin, int qiymati, uint8_t gp) {uint8_t statusGP = 0; agar (gp == GP0) statusGP = currentValueGP0; else statusGP = currentValueGP1; if (qiymat == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} else if if (value == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; else currentValueGP1 = statusGP; // MCP yozish uchun blokirovka qilish (gp, statusGP); kechikish (10); }

17 -qadam: WriteBlockData va SetupWiFi

Bu erda biz ma'lumotlarni MCP23016 ga i2c avtobusi orqali yuboramiz. Keyinchalik, biz kirish nuqtasini yoqish uchun xususiyatlarni sozlaymiz. Nihoyat, biz kirish nuqtasi uchun WiFi rejimini sozladik va SSID va PASSWORD bilan AP yaratdik.

// MCP23016 através to barramento i2c // reg: REGISTRADOR // data: dados (0-255) writeBlockData (uint8_t port, uint8_t data) {Wire.beginTransmission (MCPAddress); Wire.write (port); Wire.write (ma'lumotlar); Wire.endTransmission (); kechikish (10); }

// ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }

18 -qadam: dastur

Ilova
Ilova
Ilova
Ilova
Ilova
Ilova
Ilova
Ilova

Ilovani yaratish uchun biz MIT App Inventor 2 -dan foydalanamiz, unga havola orqali kirish mumkin:

ai2.appinventor.mit.edu/

Ilova har bir o'rni holatini ko'rsatuvchi sakkiz juft tugmani o'z ichiga olgan ikkita ekrandan iborat.

Quyida dasturlash bloklari ishlatilgan:

MUHIM: ESP standart IP -manzili, chunki kirish nuqtasi 192.168.4.1

1. Ekran ishga tushganda, biz IP -ni xotirada saqlaymiz va tugmalar holatini tiklash jarayonini chaqiramiz (ON / OFF).

2. Boshqa ekranga qo'ng'iroq qiling

1. O'rnimizni birining ON tugmachasini bosganimizda, biz tugmachani vizual o'zgartiramiz (yashil bloklar). WebViewer1. GoToUrl MR01 / 1 manzilini URL manziliga bog'lash orqali ESP01 uchun so'rov yuboradi.

2. O'rnimizni birining O'chirish tugmachasini bosganimizda, biz tugmachada vizual o'zgarishlar qilamiz (yashil bloklar). WebViewer1. GoToUrl MR01 / 0 manzilini URL manziliga bog'lash orqali ESP01 -ga so'rov yuboradi.

Ushbu protsedura tugmalar (o'rni) holatini tiklash uchun ishlatiladi, chunki ekranni o'zgartirganda, u yaratish naqshiga qaytadi.

Sariq blok har bir tugma juftligi uchun takrorlanadi.

19 -qadam: Yuklab oling

Bu erda yuklab olish uchun loyiha fayllari:

MIT App Inventor 2 loyiha fayli - yuklab olish

Android -ga o'rnatish uchun APK ilovasi - yuklab oling

Boshqa fayllarni yuklab oling:

PDF

INO

Tavsiya: