Cuprins:
- Pasul 1: Cablarea MCP23008
- Pasul 2: Construirea unui consiliu
- Pasul 3: Utilizarea unui modul de bibliotecă
- Pasul 4: Programul Kitt Car
- Pasul 5: 7 segmente LED
- Pasul 6: Concluzie
Video: NODEMCU LUA ESP8266 Cu MCP23008 IC de expansiune port 8 biți: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:46
MCP23008 este un expansor I / O de 8 biți cu interfață serială și funcționează între 1,8 și 5,5 volți, deci este ideal pentru ESP8266, Arduino, Raspberry Pi, PIC Chips și multe altele.
Dacă mi-ați văzut celălalt Instructable pe MCP23017, s-ar putea să vă întrebați de ce fac și unul pentru MCP23008, deoarece este într-adevăr o versiune mai mică a aceluiași lucru.
Motivele sunt că registrele sale sunt diferite atât în nume, cât și în număr și aș dori să vă arăt cum să utilizați un modul de bibliotecă gata pregătit. Nu toată lumea este pricepută când folosește NodeMCU lua, așa că aș dori să arăt acest aspect al programării, precum și modul de utilizare a MCP23008.
Biblioteca și programele sunt disponibile la github.com.
Fișa tehnică pentru MCP23008 este disponibilă de la Microchip.
Pasul 1: Cablarea MCP23008
MCP23008 IC are un aspect simplu, iar construirea unei plăci este foarte ușoară pentru aceasta. De asemenea, puteți configura circuitul pe o placă pentru pâine.
Pin Conexiuni pe placa mea
- Pinul 18 (VDD) la 3v3
- Pinul 9 (VSS) la GND
- Pinul 7 (NC) la GND (Nu este necesar)
- Pinul 1 (SCL) la ESP GPIO2
- Pinul 2 (SDA) la ESP GPIO0
- Pinul 5 (A0) la GND
- Pinul 4 (A1) la GND
- Pinul 3 (A2) la GND
- Pinul 6 (RESET) la 3v3
Conectați pinii pentru a fi citiți la Gnd pe portul A (pinii 10 - 17)
Notă: aici toți pinii de adresă sunt conectați la Gnd pentru a utiliza MCP23008 la adresa 0x20 pe magistrala de adrese I2C.
Dacă ați utiliza adresa 0x21, atunci A0 ar fi conectat la 3,3V, cu A1 și A2 conectate la Gnd.
În mod similar, dacă se utilizează adresa 0x22, atunci A1 ar trebui să fie conectat la 3,3V cu A0 și A2 conectate la Gnd.
etc …
Pasul 2: Construirea unui consiliu
Am folosit o placă cu bandă Vero de 25 mm x 64 mm (9 rânduri x 25 de găuri) pentru a-mi construi placa. Este puțin strâns, dar, deoarece majoritatea pinilor de care aveți nevoie sunt de ambele părți ale CI, este adecvat pentru ceea ce trebuie să facă.
Am folosit 8 pini și 8 prize de antet pentru portul A, astfel încât să pot conecta diversele module, precum și alte cabluri pentru diferite proiecte. Am adăugat pini Gnd și 3.3V suplimentari, deoarece găsesc întotdeauna o lipsă a acestora la conectarea modulelor împreună.
Pasul 3: Utilizarea unui modul de bibliotecă
Modulele de bibliotecă conțin în mod normal o selecție de subrutine, funcții și variabile care pot fi accesate de un alt program. Programul în sine nu rulează, dar funcțiile sale pot fi accesate de programul apelant. Înseamnă că poți avea rutinele tale în bibliotecă și le poți apela ori de câte ori ai nevoie de ele, făcând un mic program de apelare. Devine mai valoros dacă aveți multe programe diferite care folosesc aceleași sub-rutine, nu trebuie să includeți sub-rutinele în fiecare program.
Notă: programul mcp23008.lua trebuie încărcat în memoria ESP8266 la fel ca celelalte programe.
Am inclus aici programele github.com, precum și un program simplu (test.lua) pentru a arăta că biblioteca funcționează.
Există cel puțin 2 moduri de a include biblioteca în programul dvs.
require ("mcp23008")
mcp23008.begin (0x0, gpio2, gpio0, i2c. SLOW)
sau
mcp = require ("mcp23008")
mcp.begin (0x0, gpio2, gpio0, i2c. SLOW)
Ambele de mai sus fac același lucru, dar a doua metodă vă permite să utilizați propria variabilă în locul numelui programului.
Pasul 4: Programul Kitt Car
Am inclus programul KittCar23008.lua și KittLib.lua care utilizează biblioteca pentru a arăta diferențele în modul de scriere a programelor în acest fel. Ambele programe fac același lucru.
Plug-ul cu 8 LED-uri este disponibil de la Ebay sub formă de kit și este cunoscut sub numele de Kit de bricolaj LED cu lumină de apă curentă cu 8 canale, 99p din China. Trebuie să-l lipiți singur.
Notă: Dacă aveți o problemă la încercarea de a rula programul KittLib.lua, încercați să conectați momentan pinul RESET MCP23008 la Gnd. Știu că acest lucru va da un scurtcircuit direct (deoarece este conectat la 3,3V) și trebuie să resetați orice altceva. Funcționează și prin conectarea la Gnd printr-un rezistor de 10 ohmi, probabil o modalitate mai bună de a o face.
De asemenea, am constatat că KittLib.lua va rula fără probleme după ce ați rulat test.lua (Nu mă întrebați de ce?)
Am încercat diferite modalități de a rezolva problema programului KittLib.lua, dar până acum nu găsesc niciun motiv logic pentru care se blochează. Ai cineva vreo idee?
Nu am scris eu toate aceste programe, așa că nu sunt în măsură să spun de ce există o problemă, deși după ce am analizat codarea, nu pare să existe ceva în mod evident greșit.
Pasul 5: 7 segmente LED
Ca și în cazul programului KittCar.lua de mai sus, am inclus un program independent și un program dependent de bibliotecă pentru a conduce un afișaj LED pe 7 segmente.
Din nou, ambele programe fac același lucru, dar demonstrează cum să utilizați un modul de bibliotecă fie scris de dvs., fie de altcineva.
Pasul 6: Concluzie
Am încercat să demonstrez cum să folosesc module de cod în mediul Lua și să le aplic la un anumit IC în același timp.
Chiar dacă am avut o problemă în a face acest lucru, cred că este suficient pentru a arăta cum funcționează aceste module, precum și pentru a demonstra o aplicație din viața reală.
Recomandat:
Proiectarea unui PCB de expansiune (Intel® IoT): 20 de pași
Proiectarea unui PCB de expansiune (Intel® IoT): acest instructabil a fost scris ca punct de plecare pentru cei care sunt dornici să utilizeze Intel® Edison la maximul său potențial, prin încorporarea acestuia într-un proiect încorporat complet dezvoltat. Pentru a face acest lucru, va trebui probabil să faceți - așa cum apelează Intel®
Raspberry Pi MMA8452Q 3-Axis Tutorial accelerator digital Python pe 12 biți / 8 biți: 4 pași
Raspberry Pi MMA8452Q 3-Axis 12-bit / 8-bit Accelerometru digital Python Tutorial: MMA8452Q este un accelerometru inteligent, de mică putere, cu trei axe, capacitiv, micromachined, cu 12 biți de rezoluție. Opțiuni flexibile programabile de utilizator sunt furnizate cu ajutorul funcțiilor încorporate în accelerometru, configurabile pentru două întreruperi
Movilă în expansiune: 4 pași
Movilă în expansiune: movila în expansiune arată doar ca o movilă normală. Cu toate acestea, când vă apropiați de ea, se întâmplă ceva. Se extinde și se aprinde
NLDWRTG placa de expansiune ULTIMATE WRT54G: 8 pași (cu imagini)
NLDWRTG placa de expansiune ULTIMATE WRT54G: Modific routerele WRT54G din 2006, dar nu am avut timp să proiectez o placă dedicată pentru aceasta până anul trecut. să fie ținut în viață
NODEMCU LUA ESP8266 Cu MCP23017 IC de expansiune port 16 biți: 6 pași (cu imagini)
NODEMCU LUA ESP8266 Cu MCP23017 IC cu port de 16 biți: MCP23017 este un IC relativ ușor de realizat, deoarece are porturile A și B pe ambele părți ale cipului, iar pinii sunt în ordine secvențială. toate împreună. Există 2 pini pe acest IC care sunt neutilizați, deoarece