Cov txheej txheem:
- Kauj ruam 1: Taw qhia
- Kauj Ruam 2: Yam ntxwv
- Kauj Ruam 3: ESP01 Muaj 128 GPIOs
- Kauj Ruam 4: MCP23016
- Kauj ruam 5: QHIA
- Kauj Ruam 6: Chaw Nyob
- Kauj Ruam 7: Cov lus txib
- Kauj Ruam 8: Pawg:
- Kauj Ruam 9: Tus Qauv rau Kev Sib Txuas Lus
- Kauj ruam 10: Txoj haujlwm
- Kauj ruam 11: ESP01
- Kauj ruam 12: Mounting ESP01
- Kauj Ruam 13: NodeMCU ESP-12E
- Kauj Ruam 14: NodeMCU ESP-12E
- Kauj Ruam 15: WiFi NodeMCU-32S ESP-WROOM-32
- Kauj Ruam 16: WiFi Mounting NodeMCU-32S ESP-WROOM-32
- Kauj Ruam 17: Cov Tsev Qiv Ntawv thiab Cov Txiaj Ntsig
- Kauj Ruam 18: Teeb tsa
- Kauj ruam 19: ConfigurePort
- Kauj ruam 20: SauBlockData & CheckButton
- Kauj ruam 21: ReadPin & ValueFromPin
- Kauj Ruam 22: ESP8266 Txoj Haujlwm
- Kauj ruam 23: TSEEM CEEB
- Kauj ruam 24: Cov ntaub ntawv
Video: IO Expander rau ESP32, ESP8266, thiab Arduino: 24 Kauj Ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:29
Koj puas xav nthuav IOs ntawm koj ESP32, ESP8266, lossis Arduino? Thiab koj puas tau xav txog qhov ua tau ntawm 16 GPIOs tshiab uas tuaj yeem tswj tau siv I2C npav? Zoo hnub no, Kuv yuav los qhia koj rau GPIO nthuav dav MCP23016. Tsis tas li, kuv yuav qhia koj yuav ua li cas sib txuas tus tswj hwm microcontroller nrog MCP23016. Kuv tseem yuav tham txog kev tsim txoj haujlwm uas peb yuav siv tsuas yog 2 tus pin ntawm lub microcontroller no los tham nrog tus nthuav dav. Peb yuav siv cov no los tswj cov LEDs thiab khawm.
Kauj ruam 1: Taw qhia
Cov cuab yeej MCP23016 muab 16 khoom rau GPIO nthuav dav siv I2C npav. Txhua qhov me me tuaj yeem teeb tsa ib tus zuj zus (tawm tswv yim lossis tso tawm).
MCP23016 suav nrog ntau qhov 8-ntsis teeb tsa rau kev tawm tswv yim, tso tawm, thiab kev xaiv polarity.
Cov neeg nthuav dav muab cov kev daws teeb meem yooj yim thaum IOs xav tau rau cov hloov pauv, ntsuas, khawm, thiab LEDs, ntawm lwm qhov piv txwv.
Kauj Ruam 2: Yam ntxwv
16 Input / Output pins (16 tus qauv tawm tswv yim)
Ceev I2C npav npav zaus (0-400 kbits/s)
Peb qhov chaw nyob khoos phis tawj tso cai siv txog li yim lub cuab yeej
Cuam tshuam Chaw Nres Nkoj Nkag Mus Rau Lub Cev
Polarity thim rov qab rau npe rau teeb tsa polarity ntawm cov ntaub ntawv chaw nres nkoj nkag
Tau tshaj nrog feem ntau microcontrollers
Kauj Ruam 3: ESP01 Muaj 128 GPIOs
Ib qho piv txwv uas qhia qhov loj ntawm qhov nthuav dav no yog nws siv nrog ESP01, uas tuaj yeem txuas nrog txog li yim tus nthuav nrog tsuas yog ob qho IOS, mus txog 128 GPIOs.
Kauj Ruam 4: MCP23016
Ntawm no, peb muaj cov phiaj xwm ntawm tus nthuav dav, uas muaj ob pab pawg ntawm yim khoom. Qhov no ua rau tag nrho ntawm 16 chaw nres nkoj. Ntxiv nrog rau tus pin cuam tshuam, nws muaj tus lej CLK, uas txuas tus capacitor thiab tus tiv thaiv, uas txuas nrog sab hauv hauv qhov chaw nres nkoj logic. Qhov no yog los tsim lub moos, siv lub tswv yim ntawm cov siv lead ua oscillator, uas xav tau 1MHz moos. TP tus pin yog siv los ntsuas lub moos. Pins A0, A1, thiab A2 yog qhov chaw nyob binary.
Kauj ruam 5: QHIA
MCP23016 yog li ntawd siv sab nrauv RC Circuit los txiav txim siab nrawm ntawm Sab Hauv. Yuav tsum muaj lub moos sab hauv ntawm 1 MHz (feem ntau) rau lub cuab yeej ua haujlwm kom raug. Lub moos sab hauv tuaj yeem ntsuas ntawm tus pin TP. Cov lus pom zoo rau REXT thiab CEXT tau qhia hauv qab no.
Kauj Ruam 6: Chaw Nyob
Txhawm rau txheeb xyuas qhov chaw nyob ntawm MCP23016, peb mam li siv tus pin A0, A1, thiab A2. Tsuas yog tso lawv ntawm HIGH lossis LOW rau qhov chaw nyob hloov pauv.
Qhov chaw nyob yuav tsim raws li hauv qab no:
MCP_Address = 20 + (A0 A1 A2)
Qhov twg A0 A1 A2 tuaj yeem nqa qhov siab / qis, qhov no tsim cov lej binary los ntawm 0 txog 7.
Piv txwv li:
A0> GND, A1> GND, A2> GND (txhais tau tias 000, ces 20 + 0 = 20)
Los yog lwm tus, A0> HIGH, A1> GND, A2> HIGH (lub ntsiab lus 101, tom qab ntawd 20 + 5 = 25)
Kauj Ruam 7: Cov lus txib
Hauv qab no yog lub rooj nrog cov lus txib rau kev sib txuas lus. Cia peb siv GP0 thiab GP1, ntxiv rau IODIR0 thiab IODIR1.
Kauj Ruam 8: Pawg:
GP0 / GP1 - Cov Chaw Teev Npe Cov Ntaub Ntawv
Muaj ob daim ntawv sau npe uas nkag mus rau ob lub GPIO chaw nres nkoj.
Kev sau npe sau qhia qhov xwm txheej ntawm tus pin ntawm qhov chaw nres nkoj ntawd.
Bit = 1> HIGH Bit = 0> LOW
OLAT0 / OLAT1 - Tso Tawm LACTCH REGISTERS
Muaj ob daim ntawv sau npe uas muab kev nkag mus rau cov chaw tso tawm ntawm ob lub chaw nres nkoj.
IPOL0 / IPOL1 - Kev Sau Npe Polarity Sau Npe
Cov ntawv sau npe no tso cai rau tus neeg siv teeb tsa qhov sib txawv ntawm cov ntaub ntawv chaw nres nkoj nkag (GP0 thiab GP1).
IODIR0 / IODIR1
Muaj ob daim ntawv sau npe uas tswj tus lej tus pin. (Tawm tswv yim lossis tso tawm)
Bit = 1> INPUT Bit = 0> OUTPUT
INTCAP0 / INTCAP1 - cuam tshuam kev sau npe
Cov no yog cov npe uas muaj tus nqi ntawm qhov chaw nres nkoj uas ua rau muaj kev cuam tshuam.
IOCON0 / IOCON1 - I / O Expander Control Register
Qhov no tswj hwm kev ua haujlwm ntawm MCP23016.
Teeb me ntsis 0 (IARES> cuam tshuam kev ua haujlwm daws teeb meem) tswj hwm qhov piv txwv ntawm GP chaw nres nkoj pins.
Bit0 = 0> (default) Lub sijhawm ua haujlwm siab tshaj plaws ntawm chaw nres nkoj pom yog 32ms (kev siv hluav taws xob tsawg)
Bit0 = 1> lub sijhawm ua haujlwm siab tshaj plaws ntawm lub chaw nres nkoj yog 200usec (siv zog ntau dua)
Kauj Ruam 9: Tus Qauv rau Kev Sib Txuas Lus
Kuv qhia ntawm no Cov Chav Kawm Hlau, uas yog I2C kev sib txuas lus hauv peb cov tub ntxhais kawm Arduino, uas tseem tso cai rau kev nthuav dav ua haujlwm nrog Arduino Uno thiab Mega. Txawm li cas los xij, tom kawg twb muaj ntau IOs. Peb cuam tshuam nrog cov chaw nyob ntawm tus nti, tswj kev nkag mus, uas yog cov lej ntawm cov npe, nrog rau cov ntaub ntawv.
Kauj ruam 10: Txoj haujlwm
Peb txoj haujlwm suav nrog kev sib txuas lus ESP32 nrog MCP23016 kom muaj GPIOs ntau dua los siv. Tom qab ntawd peb yuav muaj lub pob thiab qee qhov LED txuas nrog MCP23016. Peb yuav tswj lawv txhua tus siv tsuas yog lub npav I2C. Yog li, tsuas yog siv ob tus ESP32 tus pin. Koj tuaj yeem pom daim duab duab hauv qab no hauv video.
Kauj ruam 11: ESP01
Ntawm no, kuv qhia Pinout ntawm ESP01.
Kauj ruam 12: Mounting ESP01
Hauv qhov piv txwv no, peb muaj GPIO0 txuas hauv SDA, thiab GPIO2 txuas nrog hauv SCL. Peb kuj muaj lub rooj tsav xwm sib txuas, lub tswb nrov, thiab LED. Ntawm lwm qhov chaw nres nkoj, hauv GP1.0, peb muaj ib qho ntxiv LED nrog tus tiv thaiv.
Kauj Ruam 13: NodeMCU ESP-12E
Ntawm no, peb muaj Pinout ntawm NodeMCU ESP-12E.
Kauj Ruam 14: NodeMCU ESP-12E
Hauv qhov no, qhov sib txawv ntawm thawj qhov piv txwv yog tias koj tau txuas D1 thiab D2 hauv SDA thiab SCL, feem.
Kauj Ruam 15: WiFi NodeMCU-32S ESP-WROOM-32
Nov yog Pinout ntawm WiFi NodeMCU-32S ESP-WROOM-32.
Kauj Ruam 16: WiFi Mounting NodeMCU-32S ESP-WROOM-32
Lub sijhawm no, qhov sib txawv tseem ceeb los ntawm lwm qhov piv txwv yog lub khawm, thiab peb qhov ntsais LEDs. Ntawm no, SDA txuas nrog GPIO19, thaum SCL txuas nrog GPIO23.
Kauj Ruam 17: Cov Tsev Qiv Ntawv thiab Cov Txiaj Ntsig
Ua ntej, peb yuav suav nrog Wire.h, uas yog lub luag haujlwm rau i2c kev sib txuas lus, nrog rau teeb tsa i2c chaw nyob ntawm MCP23016. Kuv qhia ntau cov lus txib, txawm tias qee qhov uas peb tsis siv hauv txoj haujlwm no.
#suav nrog // qhia meej siv Wire.h lub tsev qiv ntawv. // endereço I2C to MCP23016 #define MCPAddress 0x20 // COMMAND BYTE TO REGISTER RELATIONSHIP: Table: 1-3 of Microchip MCP23016 - DS20090A // ENDEREÇOS DE REGISTRADORES #define GP0 0x00 // DATA PORT REGISTER 0 #de 0x1 PORT REGISTER 1 #define OLAT0 0x02 // OUTPUT LATCH REGISTER 0 #define OLAT1 0x03 // OUTPUT LATCH REGISTER 1 #define IPOL0 0x04 // INPUT POLARITY PORT REGISTER 0 #define IPOL1 0x05 // INPUT POLAR0 #1 /I/O DIRECTION REGISTER 0 #define IODIR1 0x07 // I/O DIRECTION REGISTER 1 #define INTCAP0 0x08 // INTERRUPT CAPTURE REGISTER 0 #define INTCAP1 0x09 // INTERRUPT CAPTURE REGISTER 1 #define IOCON0 0xTRC REGISTER 0 #define IOCON1 0x0B // I/O EXPANDER CONTROL REGISTER 1
Kauj Ruam 18: Teeb tsa
Ntawm no peb muaj cov haujlwm los pib plaub hom sib txawv ntawm microcontrollers. Peb kuj txheeb xyuas qhov zaus, teeb tsa GPIOs, thiab teeb tsa tus pin. Hauv Loop, peb txheeb xyuas qhov xwm txheej ntawm lub pob.
teeb tsa tsis muaj dab tsi () {Serial.begin (9600); ncua (1000); Wire.begin (19, 23); // ESP32 // Wire.begin (D2, D1); // nodemcu ESP8266 // Wire.begin (); // arduino // Wire.begin (0, 2); // ESP-01 Wire.setClock (200000); // frequencia // configura o GPIO0 com OUTPUT (todos os pinos) configurePort (IODIR0, OUTPUT); // configura o GPIO1 como INPUT o GP1.0 e 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); } // kawg lub voj
Kauj ruam 19: ConfigurePort
Hauv cov kauj ruam no, peb teeb tsa hom GPIO pins thiab txheeb xyuas hom chaw nres nkoj.
// configura o GPIO (GP0 ou GP1) // como parametro passamos: // port: GP0 ou GP1 // custom: 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 chaw nres nkoj, uint8_t kev cai) {yog (kev cai == INPUT) {writeBlockData (chaw nres nkoj, 0xFF); } lwm tus yog (kev cai == OUTPUT) {writeBlockData (chaw nres nkoj, 0x00); } lwm {writeBlockData (chaw nres nkoj, kev cai); }}
Kauj ruam 20: SauBlockData & CheckButton
Ntawm no, peb xa cov ntaub ntawv mus rau MCP23016 los ntawm lub tsheb npav i2c, txheeb xyuas qhov xwm txheej ntawm lub pob, thiab taw qhia cov kauj ruam tom ntej thaum txiav txim siab qhov xwm txheej raug nias lossis tsis.
// envia dados para o MCP23016 através do barramento i2c // cmd: COMANDO (tus sau npe nkag) // cov ntaub ntawv: dados (0-255) tsis muaj dab tsi writeBlockData (uint8_t cmd, uint8_t cov ntaub ntawv) {Wire.beginTransmission (MCPAddress); Hlau.write (cmd); Wire.write (cov ntaub ntawv); Wire.endTransmission (); ncua (10); }
// verifica se o botão foi pressionado // parametro GP: GP0 lossis 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, seta HIGH as portas GP0 if (btn) {writeBlockData (GP0, B11111111); } // caso contrario deixa todas em estado LOW lwm tus {writeBlockData (GP0, B00000000); }}
Kauj ruam 21: ReadPin & ValueFromPin
Peb cuam tshuam ntawm no nrog kev nyeem ntawm tus pin tshwj xeeb, thiab rov qab los ntawm tus nqi me ntsis rau txoj haujlwm xav tau.
// 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); Hlau.write (gp); Wire.endTransmission (); Wire.requestFrom (MCPAddress, 1); // ler do chip 1 byte statusGP = Wire.read (); return valueFromPin (tus pin, xwm txheej GP); } // 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; }
Kauj Ruam 22: ESP8266 Txoj Haujlwm
Los ntawm no, peb yuav pom yuav ua li cas txoj haujlwm peb siv hauv ESP-01 thiab hauv nodeMCU ESP-12E tau tsim, uas tso cai rau peb nkag siab tias kev sib txawv ntawm lawv tsawg npaum li cas.
Peb tsuas yog hloov kho kab ntawm i2c tus neeg sib txuas lus tsim, uas yog txoj hauv kev pib ntawm Cov Khoom Hlau.
Tsuas yog tsis suav nrog kab raws li phaj uas peb tab tom yuav suav sau.
// Wire.begin (D2, D1); // nodemcu ESP8266 // Wire.begin (0, 2); ESP-01 NPE
Teeb
Daim ntawv ceeb toom tias tus tsim tawm tseem tau tawm lus. Yog li, tsis pom zoo raws li koj lub rooj tsavxwm (ESP-01 lossis nodeMCU ESP12-E).
teeb tsa tsis muaj dab tsi () {Serial.begin (9600); ncua (1000); // Wire.begin (D2, D1); // nodemcu ESP8266 // Wire.begin (0, 2); // ESP-01 Wire.setClock (200000); // frequencia // configura o GPIO0 com 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); }
Loop
Hauv lub voj, peb hloov cov pins txhua 1 thib ob. Yog li, thaum tus pin0 ntawm GP0 nyob, tus pin ntawm GP1 tau tawm. Thaum tus pin0 ntawm GP1 nyob, GP0 tus pin tau tawm.
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); ncua (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); ncua (1000); } // kawg lub voj
Kauj ruam 23: TSEEM CEEB
Cov kev hloov pauv thiab tsev qiv ntawv siv yog tib yam li cov haujlwm uas peb tau ua rau ESP32, ntxiv rau kev teeb tsa chaw nres nkoj thiab kev sau ntawvBlockData.
Kauj ruam 24: Cov ntaub ntawv
Rub tawm cov ntawv:
NPE (ESP8266)
NPE (ESP32)
Pom zoo:
Yuav Tsim Li Cas thiab Ntxig Ib Lub Rooj Thiab Ntxiv Kab Ntxiv Thiab/lossis Kab Rau Cov Lus Hauv Microsoft Office Word 2007: 11 Cov Kauj Ruam
Yuav Tsim Li Cas thiab Ntxig Cov Lus Thiab Ntxiv Kab Ntxiv Thiab/lossis Kab Rau Cov Lus Hauv Microsoft Office Word 2007: Koj puas tau muaj cov ntaub ntawv ntau uas koj ua haujlwm nrog thiab xav rau koj tus kheej … " Kuv yuav ua li cas ntawm cov ntaub ntawv no saib zoo dua thiab nkag siab yooj yim dua? " Yog tias yog, tom qab ntawd lub rooj hauv Microsoft Office Word 2007 yuav yog koj cov lus teb
Txuas Kev Ua Haujlwm thiab Arduino thiab Ua 7 Segment thiab Servo GUI Controller: 4 Cov Kauj Ruam
Kev Sib Txuas Ua Haujlwm thiab Arduino thiab Ua 7 Segment thiab Servo GUI Controller: Rau qee qhov haujlwm koj yuav tsum tau siv Arduino raws li nws muab lub platform yooj yim qauv ua qauv tab sis tso saib cov duab hauv kev saib xyuas ntawm Arduino tuaj yeem siv sijhawm ntev thiab tseem nyuaj ua. Koj tuaj yeem tso saib kab lus ntawm Arduino Serial Monitor bu
3.3V Mod rau Ultrasonic Sensors (npaj HC-SR04 rau 3.3V Logic ntawm ESP32/ESP8266, Particle Photon, thiab lwm yam): 4 Kauj Ruam
3.3V Mod rau Ultrasonic Sensors (npaj HC-SR04 rau 3.3V Logic ntawm ESP32/ESP8266, Particle Photon, Etc.): TL; DR: Ntawm lub sensor, txiav cov kab rau Echo tus pin, tom qab ntawd txuas nws dua qhov faib hluav taws xob (Echo trace -> 2.7kΩ -> Echo pin -& 4.tkΩ -> GND) .Edit: Muaj qee qhov kev sib cav txog seb ESP8266 puas yog 5V zam rau GPIO hauv
Txaus Siab Rau Koj Tus Kheej Tsuas Yog Siv 12V-rau-AC-kab Inverter rau LED Lub Teeb Hluav Taws Xob Tsis txhob Rov Ua Rau Lawv rau 12V.: 3 Cov Kauj Ruam
Txaus Siab Rau Koj Tus Kheej Tsuas Yog Siv 12V-rau-AC-kab Inverter rau LED Lub Teeb Hluav Taws Xob Tsis txhob Rewiring Lawv rau 12V: Kuv txoj kev npaj tau yooj yim. Kuv xav txiav cov phab ntsa uas siv hluav taws xob LED teeb ua ib daim ces rov txuas nws kom khiav tawm 12 volts. Lwm txoj hauv kev yog siv lub zog hloov pauv, tab sis peb txhua tus paub tias lawv tsis muaj txiaj ntsig zoo, puas yog? Txoj cai? Los yog lawv?
Ntxiv Pc Sync Jack rau Nikon Sc-28 Ttl Cable (siv Auto Settings rau lub Koob Yees Duab Flash thiab Ua Rau Lub Koob Yees Duab Tawm !!): 4 Kauj Ruam
Ntxiv Pc Sync Jack rau Nikon Sc-28 Ttl Cable (siv Auto Settings rau ntawm Lub Koob Yees Duab Flash thiab Ua Rau Lub Koob Yees Duab Tawm Tsam !!): Hauv cov lus qhia no kuv yuav qhia koj yuav tshem tawm ib qho ntawm cov khoom ntiag tug 3pin TTL txuas txuas ntawm ib sab ntawm Nikon SC-28 tawm lub koob yees duab TTL cable thiab hloov nws nrog tus qauv PC txuas txuas. qhov no yuav tso cai rau koj siv lub siab nyem, s