Talaan ng mga Nilalaman:

Mababang Gastos na Awtomatiko Sa ESP01: 19 Mga Hakbang
Mababang Gastos na Awtomatiko Sa ESP01: 19 Mga Hakbang

Video: Mababang Gastos na Awtomatiko Sa ESP01: 19 Mga Hakbang

Video: Mababang Gastos na Awtomatiko Sa ESP01: 19 Mga Hakbang
Video: ANG GANDA NG MISIS NI RIGOR!😍#johnestrada #prescillameirelles 2024, Nobyembre
Anonim
Image
Image
MCP23016
MCP23016

Ngayon, tatalakayin namin ang pag-aautomat gamit ang ESP01 na may 16 na relay. Ito ay isang sobrang murang modelo ng disenyo kung saan maaari mong i-multiply ang mga module at makakuha ng hanggang sa 128 relay, dahil posible na maglagay ng hanggang walong mga port expander sa microcontroller na ito.

Sa aming circuit, magkakaroon ka ng isang application sa isang smartphone na nakikipag-usap sa ESP01. Magkakaroon ito ng isang expander na may 16 port, bawat isa ay konektado sa isang relay. Mayroon din kaming 3v3 na naaakma na mapagkukunan. Samakatuwid makokontrol namin ang isang 16-channel module ng relay gamit ang ESP01 sa pamamagitan ng Android application, na ginagawa kong magagamit sa iyo.

Hakbang 1: Tip na Tandaan

Mahalagang tandaan, mga kaibigan, na ginamit ko ang chip na ito sa isang circuit na tinatawag na MCP23016. Mahalaga rin para sa iyo na panoorin ang video na EXPANSOR OF IOS PARA SA ESP32, ESP8266 AT ARDUINO, kung saan sinusubukan ko ang aparato at ipinapakita na gumagana ito para sa tatlong uri ng mga board.

Hakbang 2: MCP23016

Narito mayroon kaming isang imahe ng MCP23016, na kung saan ay isang maliit na tilad na may 28 mga pin. Mahalagang banggitin mayroon ding modelo ng MCP23017, na mas karaniwan at hindi nangangailangan ng risistor at kapasitor, sapagkat mayroon itong panloob na orasan. Ginagawa nitong mas madali, ngunit ang pag-pin nito ay naiiba sa ipinapakita namin sa video na ito.

Hakbang 3: Address

Address
Address

Upang tukuyin ang address ng MCP23016, gumagamit kami ng mga pin na A0, A1, at A2. Iiwan mo lang sila sa TAAS o LOW para sa pagbabago ng address.

Ang address ay mabubuo tulad ng sumusunod:

MCP_Address = 20 + (A2 A1 A0)

Kung saan ang A2 A1 A0 ay maaaring tumagal ng TAAS / Mababang halaga, isang binary number mula 0 hanggang 7 na form.

Halimbawa:

A2> GND, A1> GND, A0> GND (nangangahulugang 000, pagkatapos ay 20 + 0 = 20)

O kung hindi man, A2> TAAS, A1> GND, A0> TAAS (nangangahulugang 101, pagkatapos 20 + 5 = 25)

Hakbang 4: Mga Utos

Utos
Utos

Narito ang isang talahanayan na may mga utos para sa komunikasyon:

Hakbang 5: Mga Kategorya

GP0 / GP1 - Mga Rehistro sa Port ng Data

Mayroong dalawang rehistro na nagbibigay ng pag-access sa dalawang port ng GPIO.

Ang pagbasa ng rehistro ay nagbibigay ng katayuan ng mga pin sa port na iyon.

Bit = 1> MATAAS Bit = 0> Mababa

IODIR0 / IODIR1

Mayroong dalawang mga rehistro na kumokontrol sa mode ng pin. (Input o Output)

Bit = 1> INPUT Bit = 0> OUTPUT

Hakbang 6: Istraktura para sa Komunikasyon

Istraktura para sa Komunikasyon
Istraktura para sa Komunikasyon

Pinag-uusapan natin dito ang tungkol sa address ng chip, at i-access ang utos at data, na isang uri ng protokol na kailangang gawin upang magpadala ng impormasyon.

Hakbang 7: Programa

Programa
Programa

Gagawa kami ng isang programa na binubuo ng pakikipag-usap sa ESP01 sa MCP23016 upang magkaroon ng maraming GPIO na magagamit. Ang 16 na bagong GPIO na magkakaroon kami ay makokontrol ang isang 16-channel module ng relay.

Ipapadala ang mga utos sa ESP01 sa pamamagitan ng isang Android application.

Hakbang 8: MCP23016

MCP23016
MCP23016

Hakbang 9: ESP-01

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

Ito ay isang 16-relay board.

Hakbang 10: Pag-mount ng ESP01

Pag-mount ng ESP01
Pag-mount ng ESP01

Hakbang 11: Mga Aklatan at Variable

Isasama namin ang mga aklatan na responsable para sa komunikasyon ng i2c, at para sa paglikha ng Access Point at webserver. Tinutukoy namin ang address ng maliit na tilad at mga port. Sa wakas, tinutukoy namin ang mga variable upang maiimbak ang mga halaga ng mga MCP pin.

#include // responsável pela comunicação i2c. # isama // responsable sa pag-access sa webserver server ng WiFiServer (80); // webserver para sa acessarmos através gawin aplicativo // endereço I2C gawin ang MCP23016 #define MCPAddress 0x20 // ENDEREÇOS DE REGIST tukuyin ang 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 gawin MCP uint8_t kasalukuyangValueGP0 = 0; uint8_t kasalukuyangValueGP1 = 0;

Hakbang 12: Pag-setup

Pinasimuno namin ang ESP01 at ise-configure ang mga port. Inaayos din namin ang Access Point at pinasimulan ang server.

void setup () {Serial.begin (9600); pagkaantala (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // configuração do Access Point server.begin (); // inicializa o server}

Hakbang 13: Loop

Narito ko suriin kung ang anumang mga kliyente ay konektado sa server. Nabasa din namin ang unang linya ng kahilingan. Kinukuha namin ang data para sa pagmamanipula, tinutukoy ang default na header ng tugon, at ipinapadala ang tugon na ito sa kliyente.

void loop () {WiFiClient client = server.available (); // Verifica se um cliente foi conectado kung (! 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 ("invalid request"); bumalik; } client.flush (); String 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); } // end loop

Hakbang 14: ParserData

ParserData
ParserData

Mula sa kahilingan, hinahanap namin ang data na nauugnay sa mga relay. Ipinadala namin ang data sa MCP23016.

// 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 halaga = -1; int index = data.indexOf ("/ MR"); // busca o index do prefixo MR if (data [index + 5] == '/') // / MR01 / 1, onde 0 = GP; 1 = RELE; 1 = ESTADO (on / off) {gp = data [index + 3] - '0'; relay = data [index + 4] - '0'; halaga = 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); }}

Hakbang 15: I-configure ang Port

Itinakda namin ang GPIO pin mode (GP0 o GP1).

// configura o modo dos pinos GPIO (GP0 ou GP1) // como parametro passamos: // port: GP0 ou GP1 // INPUT para sa mga todos bilang mga porta na gagawin ng GP trabalharem como entrada // OUTPUT para sa mga todo tulad ng mga porta do GP trabalharem como saida // custom um valor de 0-255 indikasyon o modo das portas (1 = INPUT, 0 = OUTPUT) // hal: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 trabalhará como entrada, o restante como saida void configurePort (uint8_t port, uint8_t pasadyang) {kung (pasadyang == INPUT) {writeBlockData (port, 0xFF); } iba pa kung (pasadyang == OUTPUT) {writeBlockData (port, 0x00); } iba pa {writeBlockData (port, pasadyang); }}

Hakbang 16: WritePinData

Sa bahaging ito ng code, binabago namin ang estado ng isang nais na pin at ipadala ang data sa MCP.

// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; halaga = 0/1 (on / off); gp = 0/1 (PORT gawin MCP) walang bisa ang writePinData (int pin, int halaga, uint8_t gp) {uint8_t statusGP = 0; kung (gp == GP0) statusGP = kasalukuyangValueGP0; iba statusGP = kasalukuyangValueGP1; kung (halaga == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} iba pa kung (halaga == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} kung (gp == GP0) kasalukuyangValueGP0 = statusGP; iba pa kasalukuyangValueGP1 = statusGP; // envia os dados para o MCP writeBlockData (gp, statusGP); antala (10); }

Hakbang 17: WritingBlockData & SetupWiFi

Dito, nagpapadala kami ng data sa MCP23016 sa pamamagitan ng i2c bus. Susunod, iko-configure namin ang mga pag-aari upang paganahin ang Access Point. Panghuli, na-configure namin ang WiFi para sa mode ng Access Point at lumikha ng isang AP na may SSID at ang 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 (); antala (10); }

// configura as propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }

Hakbang 18: App

App
App
App
App
App
App
App
App

Upang likhain ang application, gumagamit kami ng MIT App Inventor 2, na maaaring ma-access sa pamamagitan ng link:

ai2.appinventor.mit.edu/

Ang application ay binubuo ng dalawang mga screen na naglalaman ng walong mga pares ng mga pindutan sa bawat isa, na nagpapahiwatig ng katayuan ng bawat relay.

Ang mga sumusunod ay ilan sa mga bloke ng programa na ginamit:

MAHALAGA: Ang default IP address ng ESP, dahil ang Access Point ay 192.168.4.1

1. Kapag pinasimulan ang screen, iniimbak namin ang IP sa memorya at tawagan ang pamamaraan upang mabawi ang estado ng mga pindutan (ON / OFF).

2. Tumawag sa kabilang screen

1. Kapag nag-click sa pindutang ON ng isa sa mga relay, gagawa kami ng mga visual na pagbabago sa pindutan (berdeng mga bloke). Ang WebViewer1. GoToUrl ay humihiling para sa aming ESP01 sa pamamagitan ng pag-link sa MR01 / 1 data sa URL.

2. Kapag nag-click sa OFF button ng isa sa mga relay, gagawa kami ng mga visual na pagbabago sa pindutan (berdeng mga bloke). Ang WebViewer1. GoToUrl ay humihiling sa aming ESP01 sa pamamagitan ng pag-link sa data ng MR01 / 0 sa URL.

Ginagamit ang pamamaraang ito upang mabawi ang estado ng mga pindutan (relay), dahil kapag binabago ang screen, bumalik ito sa pattern ng paglikha.

Ang dilaw na bloke ay inuulit para sa bawat isa sa mga pares ng pindutan.

Hakbang 19: Mag-download

Narito ang mga file ng proyekto para sa pag-download:

File ng proyekto ng MIT App Inventor 2 - mag-download

Application APK upang mai-install sa android - i-download

I-download ang iba pang mga file:

PDF

INO

Inirerekumendang: