Satura rādītājs:
- 1. darbība. Ievads
- 2. darbība. Raksturlielumi
- 3. darbība. ESP01 var būt 128 GPIO
- 4. darbība: MCP23016
- 5. solis: pulkstenis
- 6. darbība: adrese
- 7. solis: komandas
- 8. darbība. Kategorijas:
- 9. solis: saziņas struktūra
- 10. solis: programma
- 11. darbība: ESP01
- 12. darbība: ESP01 uzstādīšana
- 13. darbība: NodeMCU ESP-12E
- 14. darbība: NodeMCU ESP-12E montāža
- 15. solis: WiFi mezglsMCU-32S ESP-WROOM-32
- 16. solis: WiFi montāžas mezglsMCU-32S ESP-WROOM-32
- 17. darbība: bibliotēkas un mainīgie
- 18. darbība: iestatīšana
- 19. darbība. ConfigurePort
- 20. solis: WriteBlockData & CheckButton
- 21. darbība: ReadPin un ValueFromPin
- 22. darbība: ESP8266 programma
- 23. darbība: SVARĪGI
- 24. darbība: faili
Video: IO Expander ESP32, ESP8266 un Arduino: 24 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Vai vēlaties paplašināt ESP32, ESP8266 vai Arduino IO? Un vai esat domājuši par iespēju izveidot 16 jaunus GPIO, kurus var kontrolēt, izmantojot I2C kopni? Nu šodien es jūs iepazīstināšu ar GPIO paplašinātāju MCP23016. Es arī parādīšu, kā sazināties ar mikrokontrolleri ar MCP23016. Es arī runāšu par programmas izveidi, kurā saziņai ar paplašinātāju izmantosim tikai 2 šī mikrokontrollera tapas. Mēs tos izmantosim, lai kontrolētu gaismas diodes un pogu.
1. darbība. Ievads
MCP23016 ierīce nodrošina 16 bitus GPIO paplašināšanai, izmantojot I2C kopni. Katru bitu var konfigurēt atsevišķi (ievadi vai izvadi).
MCP23016 sastāv no vairākiem 8 bitu iestatījumiem ievades, izvades un polaritātes izvēlei.
Paplašinātāji nodrošina vienkāršu risinājumu gadījumos, kad IO ir nepieciešami slēdžiem, sensoriem, pogām un gaismas diodēm.
2. darbība. Raksturlielumi
16 ieejas / izejas tapas (16 ieejas standarts)
Ātra I2C kopnes pulksteņa frekvence (0-400 kbits/s)
Trīs aparatūras adatu tapas ļauj izmantot līdz astoņām ierīcēm
Pārtraukt portu uzņemšanas ierakstītāju
Polaritātes maiņas reģistrs ievades porta datu polaritātes iestatīšanai
Savietojams ar lielāko daļu mikrokontrolleru
3. darbība. ESP01 var būt 128 GPIO
Piemērs, kas parāda šī paplašinātāja lielumu, ir tā izmantošana kopā ar ESP01, kuru var savienot līdz astoņiem paplašinātājiem tikai ar diviem IOS, sasniedzot 128 GPIO.
4. darbība: MCP23016
Šeit mums ir paplašinātāja shēma, kurā ir divas astoņu bitu grupas. Tas kopumā nodrošina 16 ostas. Papildus pārtraukšanas tapai tam ir CLK tapa, kas savieno kondensatoru un rezistoru, kas ir iekšēji savienoti loģiskajā portā. Tas ir pulksteņa veidošanai, izmantojot kristāla oscilatora ideju, kurai nepieciešams 1MHz pulkstenis. TP tapu izmanto pulksteņa mērīšanai. Tapas A0, A1 un A2 ir bināras adreses.
5. solis: pulkstenis
Tāpēc MCP23016 izmanto ārēju RC ķēdi, lai noteiktu iekšējā pulksteņa ātrumu. Lai ierīce darbotos pareizi, ir nepieciešams (parasti) 1 MHz iekšējais pulkstenis. Iekšējo pulksteni var izmērīt uz TP tapas. REXT un CEXT ieteicamās vērtības ir norādītas zemāk.
6. darbība: adrese
Lai definētu MCP23016 adresi, mēs izmantojam tapas A0, A1 un A2. Vienkārši atstājiet tos HIGH vai LOW, lai mainītu adresi.
Adrese tiks veidota šādi:
MCP_Address = 20 + (A0 A1 A2)
Ja A0 A1 A2 var iegūt HIGH / LOW vērtības, tas veido bināru skaitli no 0 līdz 7.
Piemēram:
A0> GND, A1> GND, A2> GND (nozīmē 000, tad 20 + 0 = 20)
Vai arī, A0> HIGH, A1> GND, A2> HIGH (tas nozīmē 101, tad 20 + 5 = 25)
7. solis: komandas
Zemāk ir tabula ar saziņas komandām. Izmantosim GP0 un GP1, kā arī IODIR0 un IODIR1.
8. darbība. Kategorijas:
GP0 / GP1 - datu portu reģistri
Ir divi reģistri, kas nodrošina piekļuvi abiem GPIO portiem.
Reģistra nolasījums nodrošina tapas statusu šajā ostā.
Bits = 1> HIGH Bit = 0> LOW
OLAT0 / OLAT1 - izvades LACTCH REĢISTRI
Ir divi reģistri, kas nodrošina piekļuvi abu portu izejas portiem.
IPOL0 / IPOL1 - ievades polaritātes reģistri
Šie reģistri ļauj lietotājam konfigurēt ievades porta datu (GP0 un GP1) polaritāti.
IODIR0 / IODIR1
Ir divi reģistri, kas kontrolē tapas režīmu. (Ievads vai izvads)
Bits = 1> IEVADES bits = 0> IZEJA
INTCAP0 / INTCAP1 - pārtraukt uztveršanas reģistrus
Tie ir reģistri, kuros ir porta vērtība, kas radīja pārtraukumu.
IOCON0 / IOCON1 - I / O paplašinātāja vadības reģistrs
Tas kontrolē MCP23016 funkcionalitāti.
Iestatīšanas bits 0 (IARES> Pārtraukt darbības izšķirtspēju) kontrolē GP porta kontaktu paraugu ņemšanas biežumu.
Bit0 = 0> (noklusējums) Maksimālais ostas darbības noteikšanas laiks ir 32 ms (zems enerģijas patēriņš)
Bit0 = 1> maksimālais aktivitātes noteikšanas laiks ostā ir 200usec (lielāks enerģijas patēriņš)
9. solis: saziņas struktūra
Šeit es parādīšu Wire klasi, kas ir I2C komunikācija mūsu kodolā Arduino, kas arī ļauj paplašinātājam strādāt ar Arduino Uno un Mega. Tomēr pēdējam jau ir vairāki IO. Šeit mēs risinām mikroshēmas adreses, piekļuves kontroli, kas ir reģistru kodi, kā arī datus.
10. solis: programma
Mūsu programma sastāv no saziņas ar ESP32 ar MCP23016, lai būtu vairāk GPIO, ko izmantot. Pēc tam mums būs poga un dažas gaismas diodes, kas savienotas ar MCP23016. Mēs tos visus kontrolēsim, izmantojot tikai I2C kopni. Tādējādi tiks izmantotas tikai divas ESP32 tapas. Tālāk redzamo attēla shēmu varat redzēt videoklipā.
11. darbība: ESP01
Šeit es parādīju ESP01 Pinout.
12. darbība: ESP01 uzstādīšana
Šajā piemērā GPIO0 ir pievienots SDA, bet GPIO2 - SCL. Mums ir arī releja dēlis, skaņas signāls un gaismas diode. Otrā ostā, GP1.0, mums ir vēl viens LED ar rezistoru.
13. darbība: NodeMCU ESP-12E
Šeit mums ir NodeMCU ESP-12E pinout.
14. darbība: NodeMCU ESP-12E montāža
Šajā gadījumā vienīgā atšķirība no pirmā piemēra ir tāda, ka SDA un SCL esat pievienojis D1 un D2.
15. solis: WiFi mezglsMCU-32S ESP-WROOM-32
Šeit ir WiFi mezgla pinoutMCU-32S ESP-WROOM-32 pinout.
16. solis: WiFi montāžas mezglsMCU-32S ESP-WROOM-32
Šoreiz galvenā atšķirība no pārējiem diviem piemēriem ir poga un trīs mirgojošās gaismas diodes. Šeit SDA ir savienots ar GPIO19, bet SCL - ar GPIO23.
17. darbība: bibliotēkas un mainīgie
Pirmkārt, mēs iekļausim Wire.h, kas ir atbildīgs par i2c komunikāciju, kā arī iestatīs MCP23016 i2c adresi. Es rādu vairākas komandas, pat dažas, kuras mēs neizmantojam šajā projektā.
#include // norādiet Wire.h bibliotēkas izmantošanu. // endereço I2C do MCP23016 #define MCPAddress 0x20 // COMMAND BYTE REĢISTRĒT ATTIECĪBAS: Tabula: Microchip MCP23016 - DS20090A // 1-3. tabula. PORTU REĢISTRS 1 #define OLAT0 0x02 // OUTPUT LATCH REEGISTER 0 #define OLAT1 0x03 // IZEJAS LATVIJAS REĢISTRS 1 #define IPOL0 0x04 // IEJAS POLARITĀTES PORTĀLA REĢISTRS 0 #define IPOL1 0x05 // IEJAS IENĀDE /I/O DIRECTION REGISTER 0 #define IODIR1 0x07 // I/O DIRECTION REGISTER 1 #define INTCAP0 0x08 // INTERRUPT CAPTURE REEGISTER 0 #define INTCAP1 0x09 // INTERRUPT CAPTURE REGISTER 1 #define IOC0 REĢISTRĀTS 0 #define IOCON1 0x0B // I/O PAPLAŠINĀTĀJA VADĪBAS REĢISTRS 1
18. darbība: iestatīšana
Šeit mums ir funkcijas četru dažādu veidu mikrokontrolleru inicializēšanai. Mēs arī pārbaudām frekvenci, iestatām GPIO un iestatām tapas. Cilpā mēs pārbaudām pogas statusu.
void setup () {Serial.begin (9600); kavēšanās (1000); Wire.begin (19, 23); // ESP32 // Wire.begin (D2, D1); // nodemcu ESP8266 // Wire.begin (); // arduino // Wire.begin (0, 2); // ESP-01 Wire.setClock (200000); // frekvence // konfigurācija vai GPIO0 como OUTPUT (todos os pinos) configurePort (IODIR0, OUTPUT); // konfigurācija GPIO1 como INPUT vai GP1.0 un como OUTPUT os outros GP1 configurePort (IODIR1, 0x01); // seta todos os pinos do GPIO0 como LOW writeBlockData (GP0, B00000000); // seta todos os pinos do GPIO1 como LOW writeBlockData (GP1, B00000000); } void loop () {// verifica e o botão GP foi pressionado checkButton (GP1); } // beigu cilpa
19. darbība. ConfigurePort
Šajā solī mēs konfigurējam GPIO tapu režīmu un identificējam portu režīmu.
// GPIO konfigurācija (GP0 vai GP1) // komo parametri passamos: // ports: GP0 vai GP1 // pielāgots: INPUT para todos as 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) // ex: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 trabalhará como entrada, o restando como saida void configurePort (uint8_t ports, uint8_t custom) {if (custom == INPUT) {writeBlockData (ports, 0xFF); } cits if (custom == OUTPUT) {writeBlockData (ports, 0x00); } else {writeBlockData (ports, pielāgots); }}
20. solis: WriteBlockData & CheckButton
Šeit mēs nosūtām datus uz MCP23016 caur i2c kopni, pārbaudām pogas statusu un norādām nākamo soli, vienlaikus ņemot vērā nospiešanas stāvokli.
// envia dados para o MCP23016 através do barramento i2c // cmd: COMANDO (reģistrators) // dati: dados (0-255) void writeBlockData (uint8_t cmd, uint8_t data) {Wire.beginTransmission (MCPAddress); Wire.write (cmd); Wire.write (dati); Wire.endTransmission (); kavēšanās (10); }
// verifica se o botão foi pressionado // parametrs GP: GP0 vai GP1 void checkButton (uint8_t GP) {// faz a leitura do pino 0 no GP fornecido uint8_t btn = readPin (0, GP); // se botão pressionado, set para HIGH as portas GP0 if (btn) {writeBlockData (GP0, B11111111); } // caso contrario deixa todas em estado LOW else {writeBlockData (GP0, B00000000); }}
21. darbība: ReadPin un ValueFromPin
Šeit mēs nodarbojamies ar konkrētas tapas nolasīšanu un bitu vērtības atgriešanu vēlamajā pozīcijā.
// faz a leitura de um pino específico // pin: pino desejado (0-7) // gp: GP0 ou GP1 // retorno: 0 ou 1 uint8_t readPin (uint8_t pin, uint8_t gp) {uint8_t statusGP = 0; Wire.beginTransmission (MCPAddress); Wire.write (gp); Wire.endTransmission (); Wire.requestFrom (MCPAddress, 1); // ler do mikroshēmas 1 baita statussGP = Wire.read (); atgriezt vērtībuFromPin (pin, statusGP); } // retorna o valor do bit na posição desejada // pin: posição do bit (0-7) // statusGP: valor lido do GP (0-255) uint8_t valueFromPin (uint8_t pin, uint8_t statusGP) {return (statusGP & (0x0001 << pin)) == 0? 0: 1; }
22. darbība: ESP8266 programma
No šejienes mēs redzēsim, kā tika izveidota programma, kuru izmantojām ESP-01 un mezglā MCU ESP-12E, kas ļauj mums saprast, cik atšķirības starp tām ir minimālas.
Mēs mainīsim tikai i2c sakaru konstruktora līniju, kas ir Wire objekta sākuma metode.
Vienkārši atceliet rindu saskaņā ar plāksni, kuru mēs apkoposim.
// Wire.begin (D2, D1); // nodemcu ESP8266 // Wire.begin (0, 2); // ESP-01
Uzstādīt
Ņemiet vērā, ka celtnieks joprojām ir komentēts. Tāpēc izsauciet komentārus saskaņā ar savu dēli (ESP-01 vai nodeMCU ESP12-E).
void setup () {Serial.begin (9600); kavēšanās (1000); // Wire.begin (D2, D1); // nodemcu ESP8266 // Wire.begin (0, 2); // ESP-01 Wire.setClock (200000); // frekvence // konfigurācija vai GPIO0 como OUTPUT (todos os pinos) configurePort (IODIR0, OUTPUT); // configura o GPIO1 como OUTPUT (todos os pinos) configurePort (IODIR1, OUTPUT); // seta todos os pinos do GPIO0 como LOW writeBlockData (GP0, B00000000); // seta todos os pinos do GPIO1 como LOW writeBlockData (GP1, B00000001); }
Cilpa
Cilpā mēs mainām tapas ik pēc 1 sekundes. Tādējādi, kad GP0 pin0 ir ieslēgts, GP1 tapas ir izslēgtas. Kad GP1 pin0 ir ieslēgts, GP0 tapas ir izslēgtas.
void loop () {// seta o pino 7 do GP0 como HIGH e os demais como LOW writeBlockData (GP0, B10000000); // seta todos os pinos do GPIO1 como LOW writeBlockData (GP1, B00000000); kavēšanās (1000); // seta todos os pinos do GPIO0 como LOW writeBlockData (GP0, B00000000); // seta o pino 0 do GP1 como HIGH e os demais como LOW writeBlockData (GP1, B00000001); kavēšanās (1000); } // beigu cilpa
23. darbība: SVARĪGI
Izmantotie mainīgie un bibliotēka ir tādi paši kā programmā, ko izmantojām ESP32, kā arī metodes configurePort un writeBlockData.
24. darbība: faili
Lejupielādējiet failus:
INO (ESP8266)
INO (ESP32)
Ieteicams:
LoRa bezvadu sakari no 3 km līdz 8 km ar zemām izmaksām E32 (sx1278/sx1276) ierīce Arduino, Esp8266 vai Esp32: 15 soļi
LoRa bezvadu sakari no 3 km līdz 8 km ar zemām izmaksām E32 (sx1278/sx1276) ierīce Arduino, Esp8266 vai Esp32: es izveidoju bibliotēku, lai pārvaldītu EBYTE E32, pamatojoties uz LoRa ierīces Semtech sēriju, ļoti jaudīgu, vienkāršu un lētu ierīci. 3Km versija šeit, 8Km versija šeitTie var strādāt 3000m līdz 8000m attālumā, un tiem ir daudz iespēju
Kā nosūtīt e -pastus ar pielikumiem, izmantojot Arduino, Esp32 un Esp8266: 6 soļi
Kā nosūtīt e -pastus ar pielikumiem ar Arduino, Esp32 un Esp8266: Šeit es gribētu izskaidrot savas bibliotēkas EMailSender 2. versiju, kas ir liela evolūcija attiecībā uz 1. versiju, ar atbalstu Arduino ar w5100, w5200 un w5500 Ethernet vairogu un enc28J60 klonēt ierīces un atbalstu esp32 un esp8266. Tagad varat reklamēt
ESP32 Bluetooth apmācība - Kā izmantot ESP32 iebūvēto Bluetooth: 5 soļi
ESP32 Bluetooth apmācība | Kā izmantot ESP32 iebūvēto Bluetooth: Sveiki puiši Tā kā ESP32 padomei ir WiFi un amp; Bluetooth gan, bet lielākoties mūsu projektos mēs parasti izmantojam tikai Wifi, mēs neizmantojam Bluetooth. Tātad šajā pamācībā es parādīšu, cik viegli ir izmantot ESP32 Bluetooth & Jūsu pamata projektiem
Darba sākšana ar ESP32 CAM - Video straumēšana, izmantojot ESP CAM, izmantojot Wifi - ESP32 drošības kameru projekts: 8 soļi
Darba sākšana ar ESP32 CAM | Video straumēšana, izmantojot ESP CAM, izmantojot Wifi | ESP32 drošības kameru projekts: Šodien mēs uzzināsim, kā izmantot šo jauno ESP32 CAM plati un kā mēs varam to kodēt un izmantot kā drošības kameru un iegūt straumēšanas video, izmantojot WiFi
Darba sākšana ar ESP32 - ESP32 dēļu instalēšana Arduino IDE - ESP32 mirgojošs kods: 3 soļi
Darba sākšana ar ESP32 | ESP32 dēļu instalēšana Arduino IDE | ESP32 mirgošanas kods: šajā pamācībā mēs redzēsim, kā sākt strādāt ar esp32 un kā instalēt esp32 plates Arduino IDE, un mēs programēsim esp 32, lai palaistu mirgojošu kodu, izmantojot arduino ide