Turinys:
- 1 žingsnis: patarimas prisiminti
- 2 veiksmas: MCP23016
- 3 žingsnis: adresas
- 4 žingsnis: komandos
- 5 žingsnis: kategorijos
- 6 žingsnis: bendravimo struktūra
- 7 žingsnis: programa
- 8 veiksmas: MCP23016
- 9 veiksmas: ESP-01
- 10 veiksmas: ESP01 montavimas
- 11 veiksmas: bibliotekos ir kintamieji
- 12 veiksmas: sąranka
- 13 žingsnis: ciklas
- 14 veiksmas: „ParserData“
- 15 veiksmas: „ConfigurePort“
- 16 žingsnis: „WritePinData“
- 17 veiksmas: „WriteBlockData“ir „SetupWiFi“
- 18 veiksmas: programa
- 19 veiksmas: atsisiųskite
Video: Pigių išlaidų automatizavimas naudojant ESP01: 19 žingsnių
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Šiandien mes aptarsime automatizavimą naudojant ESP01 su 16 relių. Tai itin pigus dizaino modelis, kuriame galite padauginti modulius ir gauti iki 128 relių, nes šiame mikrovaldiklyje galima įdėti iki aštuonių prievadų plėtiklių.
Mūsų grandinėje turėsite programą išmaniajame telefone, kuri bendrauja su ESP01. Jame bus plėtiklis su 16 prievadų, kiekvienas prijungtas prie relės. Taip pat turime 3v3 reguliuojamą šaltinį. Todėl mes valdysime 16 kanalų relės modulį, naudodami ESP01 per „Android“programą, kurią jums pateikiu.
1 žingsnis: patarimas prisiminti
Mano draugai, svarbu pažymėti, kad aš naudoju šį lustą grandinėje, pavadintoje MCP23016. Taip pat jums svarbu žiūrėti vaizdo įrašą „EXPANSOR OF IOS“, skirtas ESP32, ESP8266 IR ARDUINO, kuriame išbandau įrenginį ir parodau, kad jis tinka šių trijų tipų plokštėms.
2 veiksmas: MCP23016
Čia mes turime MCP23016 vaizdą, kuris yra lustas su 28 kaiščiais. Svarbu paminėti, kad taip pat yra MCP23017 modelis, kuris yra labiau paplitęs ir jam nereikia rezistoriaus ir kondensatoriaus, nes jis turi vidinį laikrodį. Tai palengvina, tačiau jo prisegimas skiriasi nuo to, ką parodome šiame vaizdo įraše.
3 žingsnis: adresas
Norėdami apibrėžti MCP23016 adresą, naudojame kaiščius A0, A1 ir A2. Galite tiesiog palikti juos HIGH arba LOW, kad pakeistumėte adresą.
Adresas bus suformuotas taip:
MCP_Address = 20 + (A2 A1 A0)
Kai A2 A1 A0 gali turėti HIGH / LOW reikšmes, dvejetainis skaičius nuo 0 iki 7 formų.
Pavyzdžiui:
A2> GND, A1> GND, A0> GND (reiškia 000, tada 20 + 0 = 20)
Arba kitaip, A2> HIGH, A1> GND, A0> HIGH (reiškia 101, tada 20 + 5 = 25)
4 žingsnis: komandos
Čia yra lentelė su komandomis bendravimui:
5 žingsnis: kategorijos
GP0 / GP1 - duomenų prievadų registrai
Yra du registrai, suteikiantys prieigą prie dviejų GPIO prievadų.
Registro rodmenys pateikia to prievado kaiščių būseną.
Bit = 1> HIGH Bit = 0> LOW
IODIR0 / IODIR1
Yra du registrai, valdantys kaiščio režimą. (Įvestis arba išvestis)
Bitas = 1> Įvesties bitas = 0> IŠVESTIS
6 žingsnis: bendravimo struktūra
Čia mes kalbame apie lusto adresą ir pasiekiame komandą bei duomenis, kurie yra tam tikras protokolas, kurį reikia atlikti norint išsiųsti informaciją.
7 žingsnis: programa
Mes atliksime programą, kurią sudarys ryšys su ESP01 su MCP23016, kad būtų galima naudoti daugiau GPIO. Šie 16 naujų GPIO, kuriuos turėsime, valdys 16 kanalų relės modulį.
Komandos bus siunčiamos į ESP01 per „Android“programą.
8 veiksmas: MCP23016
9 veiksmas: ESP-01
Tai yra 16 relių lenta.
10 veiksmas: ESP01 montavimas
11 veiksmas: bibliotekos ir kintamieji
Įtrauksime bibliotekas, atsakingas už „i2c“bendravimą, prieigos taško ir žiniatinklio serverio kūrimą. Mes nustatome lusto adresą ir prievadus. Galiausiai mes apibrėžiame kintamuosius, kad būtų išsaugotos MCP kaiščių vertės.
#include // responseável pela comunicação i2c. #include // responseável por criar o accesspoint eo webserver WiFiServer server (80); // weberver para acessarmos através do aplicativo // endereço I2C do MCP23016 #define MCPAddress 0x20 // ENDEREÇOS DE REGISTR define GP0 0x00 // DATA PORT REGISTER 0 #define GP1 0x01 // DATA PORT REGISTER 1 #define IODIR0 0x06 // I/O DIRECTION REGISTER 0 #define IODIR1 0x07 // I/O DIRECTION REGISTER 1 // guarda os valores dos pinos padaryti MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
12 veiksmas: sąranka
Mes inicijuojame ESP01 ir konfigūruojame prievadus. Taip pat konfigūruojame prieigos tašką ir inicijuojame serverį.
void setup () {Serial.begin (9600); vėlavimas (1000); Viela.pradėti (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // konfigūruoti prieigos taško serverį.begin (); // inicializacija arba serveris}
13 žingsnis: ciklas
Čia aš patikrinu, ar prie serverio buvo prijungti klientai. Mes taip pat perskaitėme pirmąją užklausos eilutę. Mes ištraukiame duomenis manipuliavimui, nustatome numatytąją atsakymo antraštę ir siunčiame šį atsakymą klientui.
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); // a partir da requisição extrai os dados para manipulação} else {Serial.println ("negaliojantis prašymas"); grįžti; } client.flush (); Eilutė s = "HTTP/1.1 200 Gerai / r / n"; // cabeçalho padrão de resposta client.print (s); // envia a resposta para o cliente delay (1); } // pabaigos kilpa
14 veiksmas: „ParserData“
Iš užklausos ieškome duomenų, susijusių su relėmis. Tada siunčiame duomenis į MCP23016.
// a partir da requisição busca os dados referente aos relésvoid parserData (Styginių duomenys) {uint8_t relė = -1; uint8_t gp = -1; uint8_t reikšmė = -1; int indeksas = data.indexOf ("/MR"); // busca o index do prefixo MR if (data [indeksas+5] == '/') ///MR01/1, onde 0 = GP; 1 = RELE; 1 = ESTADO (įjungta/išjungta) {gp = duomenys [indeksas+3]-'0'; relė = duomenys [indeksas+4]-'0'; vertė = duomenys [indeksas+6]-'0'; // envia os dados para o MCP23016 // [relay-1] porque o MCP vai de 0-7 os pinos writePinData (relė-1, vertė, gp); }}
15 veiksmas: „ConfigurePort“
Mes nustatome GPIO kaiščio režimą (GP0 arba GP1).
// konfigūracija arba modo dos pinos GPIO (GP0 arba GP1) // bendri parametrai passamos: // prievadas: GP0 ou GP1 // Įvestis, kaip viskas, kaip portas do GP trabalharem como entrada // OUTPUT para todos as portas do GP trabalharem como saida // custom um valor de 0-255 indicando o modo das portas (1 = INPUT, 0 = OUTPUT) // pvz: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 trabalhará como entrada, o restante como saida void configurePort (uint8_t prievadas, uint8_t pasirinktinis) {if (custom == INPUT) {writeBlockData (prievadas, 0xFF); } else if (custom == OUTPUT) {writeBlockData (prievadas, 0x00); } else {writeBlockData (prievadas, pasirinktinis); }}
16 žingsnis: „WritePinData“
Šioje kodo dalyje keičiame norimo kaiščio būseną ir siunčiame duomenis į MCP.
// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; vertė = 0/1 (įjungta/išjungta); gp = 0/1 (PORT do MCP) void writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; if (gp == GP0) statusGP = currentValueGP0; else statusGP = currentValueGP1; if (vertė == 0) {statusGP & = ~ (B00000001 << (kaištis)); // muda o pino para LOW} else if (vertė == 1) {statusGP | = (B00000001 << (kaištis)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; else currentValueGP1 = statusGP; // envia os dados para arba MCP writeBlockData (gp, statusGP); vėlavimas (10); }
17 veiksmas: „WriteBlockData“ir „SetupWiFi“
Čia mes siunčiame duomenis į MCP23016 per „i2c“magistralę. Tada sukonfigūruojame ypatybes, kad įjungtumėte prieigos tašką. Galiausiai sukonfigūravome „WiFi“prieigos taško režimui ir sukūrėme AP su SSID ir PASSWORD.
// envia dados para o MCP23016 através do barramento i2c // reg: REGISTRADOR // duomenys: dados (0-255) void writeBlockData (uint8_t prievadas, uint8_t duomenys) {Wire.beginTransmission (MCPAddress); Wire.write (prievadas); Wire.write (duomenys); Wire.endTransmission (); vėlavimas (10); }
// configura as propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); „WiFi.softAP“(„ESP01_RELAY“, „12345678“); }
18 veiksmas: programa
Norėdami sukurti programą, naudojame „MIT App Inventor 2“, kurią galima pasiekti per nuorodą:
ai2.appinventor.mit.edu/
Programą sudaro du ekranai, kuriuose kiekvienoje yra aštuonios mygtukų poros, nurodančios kiekvienos relės būseną.
Toliau pateikiami kai kurie naudojami programavimo blokai:
SVARBU: numatytasis ESP IP adresas, nes prieigos taškas yra 192.168.4.1
1. Kai ekranas inicijuojamas, mes išsaugome IP atmintyje ir iškviečiame procedūrą, kaip atkurti mygtukų būseną (ON / OFF).
2. Skambinkite į kitą ekraną
1. Paspaudę vienos iš relių mygtuką ON, mes padarysime vizualius mygtuko pakeitimus (žalios spalvos kaladėlės). WebViewer1. GoToUrl pateikia užklausą dėl mūsų ESP01, susiedamas MR01 / 1 duomenis URL.
2. Spustelėję vienos iš relių mygtuką OFF, mes padarysime vizualius mygtuko pakeitimus (žalios spalvos blokai). WebViewer1. GoToUrl pateikia užklausą mūsų ESP01, susiedamas MR01 / 0 duomenis URL.
Ši procedūra naudojama atkurti mygtukų (relių) būseną, nes keičiant ekraną, jis grįžta prie kūrimo modelio.
Geltonas blokas kartojasi kiekvienai mygtukų porai.
19 veiksmas: atsisiųskite
Čia galite atsisiųsti projekto failus:
„MIT App Inventor 2“projekto failas - atsisiųskite
Programos APK įdiegti „Android“- atsisiųskite
Atsisiųskite kitus failus:
AŠ NE
Rekomenduojamas:
Naujos kartos namų automatizavimas naudojant „Eagle Cad“(1 dalis. PCB): 14 žingsnių
Naujos kartos namų automatizavimas naudojant „Eagle Cad“(1 dalis. PCB): Įvadas: Kodėl aš sakau, kad tai naujos kartos: nes jame naudojami kai kurie komponentai, kurie yra daug geresni nei tradiciniai namų automatikos įrenginiai. Jis gali valdyti prietaisus: „Google Voice Commands“jutiklinis skydelis įrenginio valdyme iš programos
„Pasidaryk pats“pigių namų automatizavimas naudojant „Esp8266“: 6 žingsniai
„Pasidaryk pats“pigių namų automatizavimas naudojant „Esp8266“: Sveiki visi! Šiandien šioje instrukcijoje aš jums parodysiu, kaip aš paruošiau savo namų automatiką kaip žingsnį link protingų namų, naudodamas ESP 8266 modulį, paprastai žinomą kaip „nodemcu“, taip negaišdami laiko Pradėkime:)
Namų automatizavimas naudojant „Raspberry Pi“naudojant relės lentą: 7 žingsniai
Namų automatizavimas naudojant „Raspberry Pi“naudojant relės lentą: Dauguma žmonių nori didelio komforto, tačiau už priimtiną kainą. Jaučiamės tingūs apšviesti namus kiekvieną vakarą, kai saulė nusileidžia, ir kitą rytą, vėl išjungdami šviesą arba įjungdami/išjungdami oro kondicionierių/ventiliatorių/šildytuvus
Pigių išlaidų valdiklis: 5 žingsniai (su nuotraukomis)
Pigių išlaidų valdiklis: saulės apšvietimo valdiklis, pagrįstas PIC12F675 mikrovaldikliu, skirtas naudoti su saulės skydeliu, akumuliatoriumi ir 12V šviesos diodų lempute, jis pagamintas iš prieinamų medžiagų ir yra paruoštas naudoti, tiesiog prijunkite savo prietaisus ir viskas bus padaryta, šis valdiklis veiks funkcija
„IPod“/ „Mp4“prijungimo stotelė arba „MP3“serveris valdomas iš lovos be jokių išlaidų: 12 žingsnių
„IPod“/ „Mp4“prijungimo stotelė arba „MP3“serveris valdomas iš lovos be jokių išlaidų: Sveiki, norėčiau klausytis savo mp3 dainų savo namų kino teatre, tačiau namų kino teatras yra mano miegamajame, o kompiuteris - kitoje mano namų pusėje. Pavargau nuo degimo diskų, aš išsprendžiau šią problemą … man reikėjo visko su nuolatiniu maitinimu, valdymu