Агуулгын хүснэгт:
- Алхам 1: Танилцуулга
- Алхам 2: Онцлог шинж чанар
- Алхам 3: ESP01 нь 128 GPIO -тэй байж болно
- Алхам 4: MCP23016
- Алхам 5: ЦАГ
- Алхам 6: Хаяг
- Алхам 7: Тушаалууд
- Алхам 8: Ангилалууд:
- Алхам 9: Харилцааны бүтэц
- Алхам 10: Хөтөлбөр
- Алхам 11: ESP01
- Алхам 12: ESP01 -ийг суурилуулах
- Алхам 13: NodeMCU ESP-12E
- Алхам 14: NodeMCU ESP-12E холбох
- Алхам 15: WiFi NodeMCU-32S ESP-WROOM-32
- Алхам 16: WiFi холбох цэгMCU-32S ESP-WROOM-32
- Алхам 17: Номын сан ба хувьсагчид
- Алхам 18: Тохиргоо
- Алхам 19: Портыг тохируулна уу
- Алхам 20: WriteBlockData & CheckButton
- Алхам 21: ReadPin & ValueFromPin
- Алхам 22: ESP8266 програм
- Алхам 23: ЧУХАЛ
- Алхам 24: Файлууд
Видео: ESP32, ESP8266, Arduino -д зориулсан IO Expander: 24 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:04
Та ESP32, ESP8266 эсвэл Arduino -ийн IO -г өргөжүүлэхийг хүсч байна уу? I2C автобус ашиглан удирдах боломжтой 16 шинэ GPIO -ийн талаар та бодож үзсэн үү? Өнөөдөр би танд GPIO өргөтгөгч MCP23016 -ийг танилцуулах гэж байна. Түүнчлэн, би MCP23016 -тай микроконтроллертой хэрхэн холбогдохыг танд үзүүлэх болно. Өргөтгөгчтэй харилцахын тулд энэ микроконтроллерийн зөвхөн 2 зүү ашиглах програмыг бий болгох талаар би бас ярих болно. Бид эдгээрийг LED болон товчлуурыг хянахад ашиглах болно.
Алхам 1: Танилцуулга
MCP23016 төхөөрөмж нь I2C автобусыг ашиглан GPIO өргөтгөл хийхэд 16 битээр хангадаг. Бит бүрийг дангаар нь тохируулах боломжтой (оролт эсвэл гаралт).
MCP23016 нь оролт, гаралт, туйлыг сонгох олон 8 битийн тохиргооноос бүрдэнэ.
Өргөтгөгч нь унтраалга, мэдрэгч, товчлуур, LED -д IO шаардлагатай бол бусад жишээнүүдийн дунд энгийн шийдлийг өгдөг.
Алхам 2: Онцлог шинж чанар
16 оролт / гаралтын тээглүүр (16 оролтын стандарт)
Хурдан I2C автобусны цагийн давтамж (0-400 кбит/сек)
Гурван тоног төхөөрөмжийн хаягийн зүү нь найм хүртэлх төхөөрөмжийг ашиглах боломжийг олгодог
Порт барих бичигчийг таслах
Оролтын портын өгөгдлийн туйлыг тохируулах туйлшралыг буцаах бүртгэл
Ихэнх микроконтроллеруудтай нийцдэг
Алхам 3: ESP01 нь 128 GPIO -тэй байж болно
Энэхүү өргөтгөлийн цар хүрээг харуулсан жишээ бол ESP01 -ийг ашиглах явдал бөгөөд үүнийг хоёр GPOS -тэй хоёр хүртэл IOS ашиглан найм хүртэл өргөтгөгчтэй холбож болно.
Алхам 4: MCP23016
Энд бид найман битийн хоёр бүлэгтэй өргөжүүлэгчийн схемийг авч үзье. Энэ нь нийт 16 портыг бий болгодог. Таслах зүүгээс гадна конденсатор ба резисторыг холбосон CLK зүүтэй бөгөөд дотооддоо логик портоор холбогддог. Энэ бол 1МГц цаг шаардлагатай болор осцилляторын санааг ашиглан цагийг бий болгох явдал юм. TP зүү нь цагийг хэмжихэд хэрэглэгддэг. A0, A1, A2 зүү нь хоёртын хаяг юм.
Алхам 5: ЦАГ
Тиймээс MCP23016 нь дотоод цагны хурдыг тодорхойлохын тулд гадаад RC хэлхээг ашигладаг. Төхөөрөмжийг зөв ажиллахын тулд 1 МГц -ийн дотоод цаг шаардлагатай (ихэвчлэн). Дотоод цагийг TP зүүгээр хэмжих боломжтой. REXT ба CEXT -ийн санал болгож буй утгыг доор харуулав.
Алхам 6: Хаяг
MCP23016 хаягийг тодорхойлохын тулд бид A0, A1, A2 зүү ашигладаг. Хаяг солихын тулд тэдгээрийг HIGH эсвэл LOW түвшинд үлдээгээрэй.
Хаягийг дараах байдлаар бүрдүүлэх болно.
MCP_Address = 20 + (A0 A1 A2)
A0 A1 A2 нь HIGH / LOW утгыг авах боломжтой тохиолдолд энэ нь 0 -ээс 7 хүртэлх хоёртын тоог үүсгэдэг.
Жишээлбэл:
A0> GND, A1> GND, A2> GND (000 гэсэн утгатай, дараа нь 20 + 0 = 20)
Эсвэл өөр, A0> HIGH, A1> GND, A2> HIGH (101 гэсэн утгатай, дараа нь 20 + 5 = 25)
Алхам 7: Тушаалууд
Харилцах командын хүснэгтийг доор харуулав. GP0, GP1, IODIR0, IODIR1 -ийг ашиглацгаая.
Алхам 8: Ангилалууд:
GP0 / GP1 - Мэдээллийн портын бүртгэл
Хоёр GPIO порт руу нэвтрэх боломжийг олгодог хоёр бүртгэл байдаг.
Бүртгэлийн уншилт нь тухайн порт дээрх тээглүүрийн статусыг өгдөг.
Bit = 1> HIGH Bit = 0> LOW
OLAT0 / OLAT1 - LACTCH регистрийн гаралт
Хоёр портын гаралтын порт руу нэвтрэх боломжийг олгодог хоёр бүртгэл байдаг.
IPOL0 / IPOL1 - Оролтын туйлшралын бүртгэлүүд
Эдгээр регистрүүд нь хэрэглэгчид оролтын портын өгөгдлийн туйлыг тохируулах боломжийг олгодог (GP0 ба GP1).
IODIR0 / IODIR1
Пин горимыг хянадаг хоёр регистр байдаг. (Оролт эсвэл гаралт)
Bit = 1> INPUT Bit = 0> OUTPUT
INTCAP0 / INTCAP1 - Таслах бүртгэлийг тасалдуулах
Эдгээр нь тасалдал үүсгэсэн портын утгыг агуулсан бүртгэлүүд юм.
IOCON0 / IOCON1 - I / O Expander Control Register
Энэ нь MCP23016 -ийн ажиллагааг хянадаг.
Бит 0 -ийг тохируулах (IARES> Тасалдлын үйл ажиллагааны шийдэл) нь GP портын голын дээж авах давтамжийг хянадаг.
Bit0 = 0> (анхдагч) Порт идэвхжүүлэлтийг илрүүлэх хамгийн дээд хугацаа нь 32ms (бага эрчим хүчний хэрэглээ)
Bit0 = 1> порт дээрх хамгийн их идэвхжил илрүүлэх хугацаа 200usec (илүү их эрчим хүчний хэрэглээ)
Алхам 9: Харилцааны бүтэц
Би энд Wire ангийг харуулав, энэ бол бидний үндсэн Arduino дахь I2C харилцаа холбоо бөгөөд өргөтгөгч нь Arduino Uno болон Mega -тай ажиллах боломжийг олгодог. Гэсэн хэдий ч сүүлийнх нь хэд хэдэн IO -тэй байна. Бид энд чипийн хаяг, бүртгэлийн код болох хандалтын хяналт, өгөгдлийг авч үздэг.
Алхам 10: Хөтөлбөр
Манай програм нь илүү олон GPIO ашиглахын тулд ESP32 -ийг MCP23016 -тэй холбохоос бүрдэнэ. Дараа нь бидэнд товчлуур болон MCP23016 -тай холбогдсон зарим LED байх болно. Бид зөвхөн I2C автобусыг ашиглан бүгдийг хянах болно. Тиймээс зөвхөн хоёр ESP32 тээглүүрийг ашиглах болно. Та доорх зургийн хэлхээг видеоноос харж болно.
Алхам 11: ESP01
Энд би ESP01 -ийн Pinout -ийг харуулж байна.
Алхам 12: ESP01 -ийг суурилуулах
Энэ жишээнд бид GPIO0 -ийг SDA -д, GPIO2 -ийг SCL -д холбосон байна. Мөн бид буухиа самбар, дуугаралт, LED -тэй. Нөгөө порт дээр GP1.0 дээр резистортой бас нэг LED байна.
Алхам 13: NodeMCU ESP-12E
Энд бидэнд NodeMCU ESP-12E-ийн Pinout байна.
Алхам 14: NodeMCU ESP-12E холбох
Энэ тохиолдолд эхний жишээнээс ялгаа нь та D1 ба D2 -ийг SDA болон SCL -д тус тус холбосон явдал юм.
Алхам 15: WiFi NodeMCU-32S ESP-WROOM-32
Энд WiFi NodeMCU-32S ESP-WROOM-32-ийн Pinout байна.
Алхам 16: WiFi холбох цэгMCU-32S ESP-WROOM-32
Энэ удаад бусад хоёр жишээнээс гол ялгаа нь товчлуур, анивчдаг гурван LED юм. Энд SDA нь GPIO19 -тэй холбогдсон бол SCL нь GPIO23 -тэй холбогдсон байна.
Алхам 17: Номын сан ба хувьсагчид
Нэгдүгээрт, i2c холболтыг хариуцдаг Wire.h, мөн MCP23016 -ийн i2c хаягийг тохируулах болно. Би хэд хэдэн тушаалуудыг харуулдаг, тэр ч байтугай бидний энэ төсөлд ашигладаггүй заримыг.
#include // Wire.h номын сангийн хэрэглээг зааж өгнө үү. // endereço I2C do MCP23016 #MCPAddress 0x20 -ийг тодорхойлно уу // ХАРИЛЦАА БҮРТГҮҮЛЭХИЙГ ТУШААРЛАХ ХҮСЭГ: Хүснэгт: Microchip MCP23016 - DS20090A 1-3 ПОРТЫН БҮРТГЭГЧ 1 #OLAT0 0x02 -ийг тодорхойлох // ОРОЛТЫН ТҮЦИЙН БҮРТГЭГЧ 0 #тодорхойлох OLAT1 0x03 // ОРОЛТЫН ТҮЦИЙН БҮРТГЭГЧ 1 #тодорхойлох IPOL0 0x04 // ОРОЛЦООХ ПОРТЫН ПОРТЫН БҮРТГЭЛ 0 #IPOL1 0x0AR ПОТОРЫН 1 оролтыг оруулна уу. /I/O ЧИГЛЭЛИЙН БҮРТГЭГЧ 0 #IODIR1 0x07 -ийг тодорхойлно // I/O ЧИГЛЭЛИЙН БҮРТГЭГЧ 1 #INTCAP0 -ийг тодорхойлно 0x08 // INTERRUPT CAPTURE регистр 0 БҮРТГҮҮЛЭХ 0 #тодорхойлох IOCON1 0x0B // I/O ТЭРГЭГЧИЙН ХЯНАЛТЫН БҮРТГЭГЧ 1
Алхам 18: Тохиргоо
Энд бид дөрвөн төрлийн микроконтроллерийг эхлүүлэх функцтэй. Бид мөн давтамжийг шалгаж, GPIO -г тохируулж, тээглүүрийг тохируулдаг. Loop дээр бид товчлуурын статусыг шалгадаг.
void setup () {Serial.begin (9600); саатал (1000); Утас.begin (19, 23); // ESP32 // Wire.begin (D2, D1); // nodemcu ESP8266 // Wire.begin (); // arduino // Wire.begin (0, 2); // ESP-01 Wire.setClock (200000); // давтамж // тохиргоо o GPIO0 como OUTPUT (to os os pinos) configurePort (IODIR0, OUTPUT); // GPIO1 тохиргооны тохиргоо эсвэл GP1.0 эсвэл гарч ирэх GP1 configurePort (IODIR1, 0x01); // GPIO0 командыг LOW writeBlockData (GP0, B00000000) хийх; // GPIO1 -ийг LOW writeBlockData (GP1, B00000000) ашиглан хийх; } void loop () {// verifica e o botão GP foi pressionado checkButton (GP1); } // төгсгөлийн гогцоо
Алхам 19: Портыг тохируулна уу
Энэ алхамд бид GPIO тээглүүрийн горимыг тохируулж, портуудын горимыг тодорхойлдог.
// GPIO тохиргоо (GP0 эсвэл GP1) // комо параметрийн дамжуулалт: // порт: GP0 эсвэл GP1 // өөрчлөн: INPUT нь todos шиг портууд GP trabalharem como entrada хийдэг // ОРУУЛАХ нь портуудын адилаар 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, or restando como saida void configurePort (uint8_t порт, uint8_t custom) {if (custom == INPUT) {writeBlockData (порт, 0xFF); } else if (custom == OUTPUT) {writeBlockData (порт, 0x00); } өөр {writeBlockData (порт, өөрчлөн тохируулсан); }}
Алхам 20: WriteBlockData & CheckButton
Энд бид i2c автобусаар дамжуулж өгөгдлийг MCP23016 руу илгээж, товчлуурын статусыг шалгаж, дарагдсан эсвэл дарагдаагүй байдлыг харгалзан дараагийн алхамыг зааж өгнө.
// envia dados para o MCP23016 através do barramento i2c // cmd: COMANDO (бүртгэгч) // өгөгдөл: dados (0-255) хүчингүй writeBlockData (uint8_t cmd, uint8_t өгөгдөл) {Wire.beginTransmission (MCPAddress); Утас. бичих (cmd); Wire.write (өгөгдөл); Wire.endTransmission (); саатал (10); }
// verifica se o botão foi pressionado // parametro GP: GP0 ou GP1 void checkButton (uint8_t GP) {// faz a leitura do pino 0 no GP fornecido uint8_t btn = readPin (0, GP); // дарна уу, хэрэв та GP0 -ийг порт гэж тодорхойлсон бол (btn) {writeBlockData (GP0, B11111111); } // caso contrario deixa todas em estado LOW else {writeBlockData (GP0, B00000000); }}
Алхам 21: ReadPin & ValueFromPin
Бид энд тодорхой зүү унших, битийн утгыг хүссэн байрлал руу буцаах асуудлыг авч үзнэ.
// 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 (MCPA хаяг); Утас. бичих (gp); Wire.endTransmission (); Wire.requestFrom (MCPA хаяг, 1); // ler do chip 1 байтын statusGP = Wire.read (); буцах утгаFromPin (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 << зүү)) == 0? 0: 1; }
Алхам 22: ESP8266 програм
Эндээс бид ESP-01 болон nodeMCU ESP-12E дээр ашигласан програмыг хэрхэн бүтээсэн болохыг харах болно.
Бид зөвхөн Wire объектын эхлэл болох i2c холбооны бүтээгчийн шугамыг өөрчлөх болно.
Зүгээр л бидний эмхэтгэх гэж байгаа хавтангийн дагуу мөрийг тайлна уу.
// Wire.begin (D2, D1); // nodemcu ESP8266 // Wire.begin (0, 2); // ESP-01
Тохируулах
Барилгачныг тайлбарласан хэвээр байгааг анхаарна уу. Тиймээс, самбарынхаа дагуу саналаа бичнэ үү (ESP-01 эсвэл nodeMCU ESP12-E).
void setup () {Serial.begin (9600); саатал (1000); // Wire.begin (D2, D1); // nodemcu ESP8266 // Wire.begin (0, 2); // ESP-01 Wire.setClock (200000); // давтамж // тохиргоо o GPIO0 como OUTPUT (to os os pinos) configurePort (IODIR0, OUTPUT); // GPIO1 como OUTPUT тохиргоо (to os os pinos) configurePort (IODIR1, OUTPUT); // GPIO0 командыг LOW writeBlockData (GP0, B00000000) хийх; // GPIO1 -ийг LOW writeBlockData (GP1, B00000001) ашиглан хийх; }
Гогцоо
Гогцоонд бид тээглүүрийг 1 секунд тутамд сольж өгдөг. Тиймээс, GP0 -ийн pin0 асаалттай үед GP1 -ийн зүү унтраасан байна. GP1 -ийн pin0 асаалттай үед GP0 зүү унтраасан байна.
void loop () {// set0 o pino 7 to GP0 como HIGH e os demais como LOW writeBlockData (GP0, B10000000); // GPIO1 -ийг LOW writeBlockData (GP1, B00000000) ашиглан хийх; саатал (1000); // GPIO0 командыг LOW writeBlockData (GP0, B00000000) хийх; // set1 o pino 0 to GP1 como HIGH e os demais como LOW writeBlockData (GP1, B00000001); саатал (1000); } // төгсгөлийн гогцоо
Алхам 23: ЧУХАЛ
Ашигласан хувьсагч ба номын сан нь бидний ESP32 -д хийсэн програмынхтай адил, configurePort болон writeBlockData аргуудын адил байна.
Алхам 24: Файлууд
Файлуудыг татаж авах:
INO (ESP8266)
INO (ESP32)
Зөвлөмж болгож буй:
Аливаа төсөлд WiFi хяналтыг хэрхэн нэмэх вэ -- ESP32 эхлэгчдэд зориулсан гарын авлага: 5 алхам
Аливаа төсөлд WiFi хяналтыг хэрхэн нэмэх вэ || ESP32 эхлэгчдэд зориулсан гарын авлага: Энэхүү төсөлд ямар ч электроникийн төсөлд WiFi хяналтыг нэмэхийн тулд Arduino IDE -тэй ESP32 ашиглах нь хичнээн хялбар/хэцүү болохыг харуулах болно. Замдаа би ESP32 -ийг ашиглан энгийн WiFi сервер үүсгэх, хэрхэн бүтээхийг үзүүлэх болно
ESP32-д зориулсан COVID-19 бодит цаг хугацааны ажиглагч: 3 алхам
ESP32-д зориулсан COVID-19 бодит цаг хугацааны ажиглагч: Энэхүү бяцхан трекер нь корона вирусын дэгдэлт, танай улсын нөхцөл байдлын талаар мэдээлэл авахад туслах болно. Дэлгэц нь өөр өөр улс орнуудын одоогийн мэдээллийг ээлжлэн харуулдаг. Өгөгдлийг www.wo вэбсайтаас цуглуулдаг
Тамил хэл дээр мултиметрийг хэрхэн ашиглах вэ - Эхлэгчдэд зориулсан гарын авлага - Эхлэгчдэд зориулсан мултиметр: 8 алхам
Тамил хэл дээр мултиметрийг хэрхэн ашиглах вэ | Эхлэгчдэд зориулсан гарын авлага | Эхлэгчдэд зориулсан мультиметр: Сайн байна уу найзуудаа, энэ хичээлээр би мультиметрийг бүх төрлийн электроникийн хэлхээнд 7 өөр үе шаттайгаар хэрхэн ашиглахыг тайлбарласан болно. Үүнд: 1) эвдрэлийг арилгах тоног төхөөрөмжийн тасралтгүй байдлыг шалгах тест 2) тогтмол гүйдлийг хэмжих 3) диод ба LED турших 4) хэмжих Рези
Товчлуурт зориулсан "Металл цооног залгуур" ашиглан ESP32 багтаамжтай мэдрэгчтэй оролт: 5 алхам (зурагтай)
"Металл цооног залгуур" ашиглан ESP32 багтаамжийн мэдрэгчтэй оролт: Гурван товчлуур оруулах шаардлагатай ESP32 WiFi Kit 32 дээр суурилсан төслийн дизайны шийдвэрийг эцэслэн боловсруулж байх үед WiFi Kit 32 дээр ганцхан механик товчлуур байхгүй байсан нь анхаарал татаж байв. Гэсэн хэдий ч дангаараа гурван механик товчлуур, f
Линуксд зориулсан Windows дэд систем дээр ESP32 хөгжүүлэлт: 7 алхам
Линуксд зориулсан Windows дэд систем дээр ESP32 хөгжүүлэлт: ESP32 бол Espressif-ийн хямд, бага чадалтай микроконтроллер самбар юм. Энэ нь хямд өртөгтэй, WiFi болон Bluetooth-ийг багтаасан дагалдах хэрэгслүүдээс шалтгаалан үйлдвэрлэгчдийн дунд түгээмэл хэрэглэгддэг. Гэсэн хэдий ч ESP32-ийг хөгжүүлэх хэрэгсэл нь Unix-тэй төстэй