Cuprins:

NODEMCU LUA ESP8266 Cu MCP23008 IC de expansiune port 8 biți: 6 pași
NODEMCU LUA ESP8266 Cu MCP23008 IC de expansiune port 8 biți: 6 pași

Video: NODEMCU LUA ESP8266 Cu MCP23008 IC de expansiune port 8 biți: 6 pași

Video: NODEMCU LUA ESP8266 Cu MCP23008 IC de expansiune port 8 biți: 6 pași
Video: Введение в плату разработки NodeMCU ESP8266 WiFi с примером HTTP-клиента 2024, Noiembrie
Anonim
NODEMCU LUA ESP8266 Cu MCP23008 IC de expansiune port 8 biți
NODEMCU LUA ESP8266 Cu MCP23008 IC de expansiune port 8 biți

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

Cablarea MCP23008
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

Construirea unui consiliu
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ă

Utilizarea unui modul de bibliotecă
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

Programul Kitt Car
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

LED cu 7 segmente
LED cu 7 segmente

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

Concluzie
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: