Orodha ya maudhui:

Utengenezaji wa bei ya chini na ESP01: 19 Hatua
Utengenezaji wa bei ya chini na ESP01: 19 Hatua

Video: Utengenezaji wa bei ya chini na ESP01: 19 Hatua

Video: Utengenezaji wa bei ya chini na ESP01: 19 Hatua
Video: SKR 1.4 - SKR 1.4 Turbo Firmware load 2024, Novemba
Anonim
Image
Image
MCP23016
MCP23016

Leo, tutajadili automatisering kutumia ESP01 na 16 relays. Huu ni mfano bora wa muundo wa bei rahisi ambapo unaweza kuzidisha moduli na upate hadi relay 128, kwani inawezekana kuweka hadi kupanua bandari nane kwenye microcontroller hii.

Katika mzunguko wetu, utakuwa na programu kwenye simu mahiri inayowasiliana na ESP01. Itakuwa na expander na bandari 16, kila moja imeunganishwa na relay. Pia tuna chanzo kinachoweza kubadilishwa cha 3v3. Kwa hivyo tutadhibiti moduli ya kupeleka njia 16 kutumia ESP01 kupitia programu ya Android, ambayo ninakupa.

Hatua ya 1: Kidokezo cha Kukumbuka

Rafiki zangu, ni muhimu kutambua kwamba nilitumia kifaa hiki kwenye mzunguko uitwao MCP23016. Ni muhimu pia kwako kutazama video EXPANSOR YA IOS YA ESP32, ESP8266 NA ARDUINO, ambayo ninajaribu kifaa na kuonyesha kuwa inafanya kazi kwa aina hizi tatu za bodi.

Hatua ya 2: MCP23016

Hapa tuna picha ya MCP23016, ambayo ni chip na pini 28. Ni muhimu kutaja pia kuna mfano wa MCP23017, ambao ni wa kawaida zaidi na hauitaji kontena na capacitor, kwa sababu ina saa ya ndani. Hii inafanya iwe rahisi, lakini kubandika kwake ni tofauti na ile tunayoonyesha kwenye video hii.

Hatua ya 3: Anwani

Anwani
Anwani

Kufafanua anwani ya MCP23016, tunatumia pini A0, A1, na A2. Unaweza kuwaacha kwa HALI YA juu au CHINI kwa mabadiliko ya anwani.

Anwani itaundwa kama ifuatavyo:

Anwani ya MCP_Adress = 20 + (A2 A1 A0)

Ambapo A2 A1 A0 inaweza kuchukua viwango vya juu / chini, nambari ya binary kutoka fomu 0 hadi 7.

Kwa mfano:

A2> GND, A1> GND, A0> GND (inamaanisha 000, halafu 20 + 0 = 20)

Au vinginevyo, A2> JUU, A1> GND, A0> JUU (inamaanisha 101, halafu 20 + 5 = 25)

Hatua ya 4: Amri

Amri
Amri

Hapa kuna meza na amri za mawasiliano:

Hatua ya 5: Jamii

GP0 / GP1 - Sajili za Bandari ya Takwimu

Kuna rejista mbili ambazo hutoa ufikiaji wa bandari mbili za GPIO.

Usomaji wa rejista hutoa hadhi ya pini kwenye bandari hiyo.

Kidogo = 1> JUU kidogo = 0> CHINI

IODIR0 / IODIR1

Kuna rejista mbili zinazodhibiti hali ya siri. (Ingiza au Pato)

Bit = 1> Pembejeo Bit = 0> Pato

Hatua ya 6: Muundo wa Mawasiliano

Muundo wa Mawasiliano
Muundo wa Mawasiliano

Hapa tunazungumza juu ya anwani ya chip, na ufikie amri na data, ambayo ni aina ya itifaki ambayo inahitaji kufanywa kutuma habari.

Hatua ya 7: Programu

Programu
Programu

Tutafanya programu ambayo inajumuisha kuwasiliana na ESP01 na MCP23016 ili kuwa na GPIO nyingi za kutumia. Hizi GPIO 16 mpya ambazo tutakuwa nazo zitadhibiti moduli ya kupeleka njia 16.

Amri zitatumwa kwa ESP01 kupitia programu ya Android.

Hatua ya 8: MCP23016

MCP23016
MCP23016

Hatua ya 9: ESP-01

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

Hii ni bodi ya relay 16.

Hatua ya 10: Kuweka ESP01

Kuweka ESP01
Kuweka ESP01

Hatua ya 11: Maktaba na Vigeuzi

Tutajumuisha maktaba zinazohusika na mawasiliano ya i2c, na kwa kuunda Kituo cha Ufikiaji na seva ya wavuti. Tunafafanua anwani ya chip na bandari. Mwishowe, tunafafanua anuwai ya kuhifadhi maadili ya pini za MCP.

# ni pamoja na // respondável pela comunicação i2c. # ni pamoja na // respondável por criar of accesspoint eo webserver WiFiServer server (80); fafanua GP0 0x00 // USAJILI WA BANDARI YA DATA 0 #fafanua GP1 0x01 // USAJILI WA BANDARI YA DATA 1 #fafanua IODIR0 0x06 // I / O USAJILI WA MAELEKEZO 0 #fafanua IODIR1 0x07 // I / O USAJILI WA MAELEZO 1 // guarda os valores dos pinos fanya MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;

Hatua ya 12: Sanidi

Tunaanzisha ESP01 na tunasanidi bandari. Tunasanidi pia Kituo cha Ufikiaji na kuanzisha seva.

kuanzisha batili () {Serial.begin (9600); kuchelewesha (1000); Waya.anza (0, 2); // ESP01 Wire.setClock (200000); sanidiPort (IODIR0, OUTPUT); sanidiPort (IODIR1, OUTPUT); kuandikaBlockData (GP0, 0x00); kuandikaBlockData (GP1, 0x00); kuanzishaWiFi (); // configuração do Access Point server.begin (); // inicializa o server}

Hatua ya 13: Kitanzi

Hapa ninaangalia ikiwa wateja wowote wameunganishwa kwenye seva. Tulisoma pia laini ya ombi la kwanza. Tunatoa data ya kudanganywa, kufafanua kichwa cha majibu chaguomsingi, na kutuma jibu hili kwa mteja.

kitanzi batili () {Wateja wa Wateja wa WiFi = seva haipatikani (); // Verifica se um cliente foi conectado if (! Mteja) {kurudi; } Kamba req = mteja.readStringUntil ('r r'); ("/ MR")! = -1) {parserData (req); // a partir da requisição extrai os dados para manipulação} mwingine {Serial.println ("ombi batili"); kurudi; } mteja.flush (); Kamba s = "HTTP / 1.1 200 sawa / r / n"; // cabeçalho padrão de resposta client.print (s); // envia a resposta para o cliente kuchelewa (1); } // kitanzi cha mwisho

Hatua ya 14: ParserData

ParserData
ParserData

Kutoka kwa ombi, tunatafuta data inayohusiana na relays. Kisha tunatuma data kwa MCP23016.

// a partir da requisição busca os dados referente aos relésvoid parserData (String data) {uint8_t relay = -1; uint8_t gp = -1; thamani ya uint8_t = -1; int index = data.indexOf ("/ MR"); // busca o index fanya prefixo MR ikiwa (data [index + 5] == '/') // / MR01 / 1, onde 0 = GP; 1 = HABARI; 1 = ESTADO (imewashwa / imezimwa) {gp = data [index + 3] - '0'; relay = data [index + 4] - '0'; thamani = data [index + 6] - '0'; // envia os dados kwa o MCP23016 // [relay-1] porque o MCP vai de 0-7 os pinos writePinData (relay-1, value, gp); }}

Hatua ya 15: SanidiPort

Tunaweka hali ya pini ya GPIO (GP0 au GP1).

// usanidi wa njia za GPIO (GP0 ou GP1) // como parametro passamos: // port: GP0 ou GP1 // INPUT para todos as portas do GP trabalharem como entada // OUTPUT para todos as portas do GP trabalharem como saida // desturi ya ustadi wa 0-255 indicando o modo das portas (1 = INPUT, 0 = OUTPUT) // ex: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 trabalhará como entada, o restante como saida void configurePort (bandari ya uint8_t, uint8_t desturi) {if (custom == INPUT) {writeBlockData (port, 0xFF); } vingine ikiwa (desturi == OUTPUT) {writeBlockData (bandari, 0x00); } mwingine {writeBlockData (bandari, desturi); }}

Hatua ya 16: AndikaPinData

Katika sehemu hii ya nambari, tunabadilisha hali ya pini inayotarajiwa na tutume data kwa MCP.

// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; thamani = 0/1 (on / off); gp = 0/1 (PORT do MCP) batili writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; ikiwa (gp == GP0) hadhiGP = sasaValueGP0; hali nyingineGP = sasaValueGP1; ikiwa (thamani == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} mwingine ikiwa (value == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} ikiwa (gp == GP0) currentValueGP0 = statusGP; mwingine sasaValueGP1 = statusGP; // envia os dados kwa o MCP writeBlockData (gp, statusGP); kuchelewesha (10); }

Hatua ya 17: AndikaBlockData & SetupWiFi

Hapa, tunatuma data kwa MCP23016 kupitia basi ya i2c. Ifuatayo, tunasanidi mali ili kuwezesha Kituo cha Ufikiaji. Mwishowe, tulisanidi WiFi kwa hali ya Ufikiaji wa Akaunti na tukaunda AP na SSID na PASSWORD.

// envia dados para o MCP23016 através do barramento i2c // reg: REGISTRADOR // data: dados (0-255) batili writeBlockData (uint8_t port, uint8_t data) {Wire.beginTransmission (MCPAddress); Andika waya (bandari); Andika waya (data); Uwasilishaji wa waya (); kuchelewesha (10); }

// usanidi kama viambatisho vya habilitar o UPATIKANAJI WA MAFUNZOPuuza usanidiWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }

Hatua ya 18: App

Programu
Programu
Programu
Programu
Programu
Programu
Programu
Programu

Ili kuunda programu, tunatumia MIT App Inventor 2, ambayo inaweza kupatikana kupitia kiunga:

ai2.appinventor.mit.edu/

Maombi yana skrini mbili zilizo na jozi nane za vifungo katika kila moja, ikionyesha hali ya kila relay.

Zifuatazo ni baadhi ya vizuizi vya programu kutumika:

MUHIMU: Anwani chaguomsingi ya IP ya ESP, kwani Kituo cha Ufikiaji ni 192.168.4.1

1. Wakati skrini inapoanza, tunahifadhi IP kwenye kumbukumbu na tunaita utaratibu wa kurejesha hali ya vifungo (ON / OFF).

2. Piga skrini nyingine

1. Wakati wa kubonyeza kitufe cha ON cha mojawapo ya njia, tutafanya mabadiliko ya kuona kwenye kitufe (vitalu vya kijani). WebViewer1. GoToUrl hufanya ombi kwa ESP01 yetu kwa kuunganisha data ya MR01 / 1 kwenye URL.

2. Wakati wa kubofya kitufe cha OFF cha mojawapo ya njia, tutafanya mabadiliko ya kuona kwenye kitufe (vitalu vya kijani). WebViewer1. GoToUrl hufanya ombi kwa ESP01 yetu kwa kuunganisha data ya MR01 / 0 kwenye URL.

Utaratibu huu hutumiwa kuokoa hali ya vifungo (relays), kwa sababu wakati wa kubadilisha skrini, inarudi kwa muundo wa uundaji.

Kizuizi cha manjano kinarudia kwa kila jozi ya vifungo.

Hatua ya 19: Pakua

Hapa kuna faili za mradi wa kupakua:

Faili ya mradi wa MIT App Inventor 2 - pakua

Programu ya APK kusakinisha kwenye android - pakua

Pakua faili zingine:

PDF

INO

Ilipendekeza: