Cuprins:

Tabloul de bord Cricket folosind NodeMCU: 9 pași (cu imagini)
Tabloul de bord Cricket folosind NodeMCU: 9 pași (cu imagini)

Video: Tabloul de bord Cricket folosind NodeMCU: 9 pași (cu imagini)

Video: Tabloul de bord Cricket folosind NodeMCU: 9 pași (cu imagini)
Video: Nicolae Guta - Ce tablou nebun [video oficial] 2024, Iulie
Anonim
Image
Image
Planul
Planul

Buna! Am fost introdus recent în lumea IoT (Internet of Things), deoarece am dat peste cel mai popular dispozitiv din acest domeniu, ESP8266. Am fost uimit de numărul final de posibilități care au fost deschise de acest dispozitiv mic și ieftin. Deoarece sunt în acest moment nou în acest sens, am decis să fac un proiect folosindu-l și să învăț pe parcurs. Așadar, am început să caut pe internet proiecte și idei.

Am dat peste un proiect uimitor numit Arduino Cricket Score Ticker de W. A. Smith. În acest proiect, Arduino împreună cu Ethernet Shield și cardul SD sunt utilizate pentru a afișa scoruri live de cricket de la Cricbuzz. Acest proiect m-a pus pe gânduri.

Sunt din India și primul lucru care îmi vine în minte după ce am auzit India este Cricket. Aici, greierul este religie. Uneori devine dificil să stai în fața unui televizor pentru a urmări întregul meci. Deci, de ce să nu faci ceva care face ca vizionarea scorului să fie ușoară, wireless și portabilă. Un dispozitiv mic dedicat, care prezintă suficiente informații pentru a vă ține la curent cu doar o privire.

Nu ești un fan de cricket? Nici o problemă! Codul conține analizorul XML care poate fi utilizat pentru a obține date din orice fișier XML. Folosiți doar funcțiile corecte pentru a obține datele.

Pasul 1: Planul

Planul
Planul

Planul este de a utiliza placa de dezvoltare NodeMCU (cu modul ESP-12E) pentru a accesa internetul și a solicita codul XML de la Cricbuzz care conține toate informațiile despre meciurile în curs / viitoare. Acest cod este salvat pe cardul SD ca fișier.xml. Fișierul este apoi citit de pe cardul SD pentru a analiza datele necesare din codul XML. Voi folosi codul lui W. A. Smith pentru a analiza informațiile. Mulțumită eforturilor sale. Verificați proiectul său dacă doriți să faceți același lucru folosind Arduino și Ethernet Shield.

Ideea mea este să-l fac cât mai mic posibil, să construiască un PCB personalizat și o carcasă pentru el. Deocamdată, să facem un prototip. Dar mai întâi, să ne familiarizăm cu componentele utilizate în acest proiect.

Să începem

Pasul 2: Afișaj OLED

Afișaj OLED
Afișaj OLED
Afișaj OLED
Afișaj OLED

Am decis să merg cu un ecran OLED din cauza dimensiunilor sale reduse și sunt disponibile la prețuri ieftine. Folosesc un afișaj de 0,96 , care va fi suficient pentru afișarea informațiilor despre meci. Puteți utiliza orice dimensiune a afișajului.

Afișajul pe care îl folosesc este unul monocrom cu driverul SSD1306 și interfața I2C (2 fire). Sunt disponibile și versiunile SPI ale afișajului. Executarea lor este o sarcină ușoară. Descărcați bibliotecile SSD1306 și GFX necesare pentru a rula afișajele. Mulțumim Adafruit pentru că a scris aceste biblioteci.

Conexiunile sunt foarte simple.

  • GND la GND
  • VCC la 3,3V
  • SCL la D1
  • SDA la D2.

Pasul 3: Card SD și adaptor

Card și adaptor SD
Card și adaptor SD

Cardul SD stochează fișierul XML de la Cricbuzz până când toate informațiile au fost analizate. Odată afișate informațiile necesare, fișierul este șters. Utilizarea unui card SD pentru a stoca un fișier XML de 10 - 20 kB este un pic excesiv, dar face analiza mult mai ușoară și mai ușor de înțeles.

Poate fi utilizat orice card de memorie. Am ales cardul micro SD pentru factorul său de formă mic. Puteți lipi direct firele pe cardul SD, dar utilizarea unei plăci de rupere ușurează lucrarea. Trebuie remarcat faptul că toate cardurile SD sunt menite să ruleze pe 3.3V. Aceasta înseamnă că nu numai că ar trebui să fie alimentat utilizând 3,3V, dar și comunicația dintre microcontroler și cardul SD trebuie să fie la nivel logic de 3,3V. Tensiunea peste 3,3 V îl va ucide! Nu ne vom deranja în ceea ce privește NodeMCU, deoarece NodeMCU în sine rulează pe 3.3V, ceea ce este bine. Dacă intenționați să utilizați orice alt microcontroler cu nivel logic de 5V, asigurați-vă că placa dvs. de breakout are un schimbător de nivel încorporat (așa cum se arată în imagine). Practic convertește sau „schimbă” 5V de la microcontroler la card SD de 3,3V. Utilizarea schimbătorului de nivel împreună cu 3,3V (așa cum am făcut-o) nu afectează funcționarea acestuia.

Cardul SD utilizează interfața SPI pentru comunicare. Pinul CS sau Chip Select poate fi conectat la oricare dintre pinii GPIO. Am ales GPIO15 (D8). Efectuați modificările necesare în cod dacă ați folosit un alt pin decât GPIO15

  • SCK la D5
  • MISO până la D6
  • MOSI la D7
  • CS la D8
  • VCC la 3,3V
  • GND la GND

Formatați cardul SD

Biblioteca pe care o vom folosi acceptă sisteme de fișiere FAT16 sau FAT32. Asigurați-vă că formatați cardul SD în formatul corect.

Pasul 4: Realizarea tastaturii

Realizarea tastaturii
Realizarea tastaturii
Realizarea tastaturii
Realizarea tastaturii
Realizarea tastaturii
Realizarea tastaturii

Vreau să mențin proiectul cât mai mic posibil. Deci, am decis să fac o placă separată pentru tastatură și să o montez mai sus deasupra plăcii principale. Acest lucru va economisi puțin spațiu.

Se poate achiziționa o matrice de chei gata pregătită, dar aveam butoane care se întindeau. De asemenea, am vrut să-l fac cât mai mic posibil. Un aranjament tipic de conectare a rândurilor și coloanelor ar avea nevoie de un total de 6 pini GPIO pentru 3 x 3 matrice. Acest lucru este destul de mare, având în vedere că afișajul OLED și cardul SD vor fi conectate și ele.

Când aveți dubii, Google it out! Asta am făcut și am găsit o cale care va avea nevoie de doar 1 pin pentru a controla întreaga matrice. Acest lucru este posibil folosind Matricea divizorului de tensiune. Rezistoarele sunt conectate între fiecare rând și coloană. Când este apăsată o tastă, o anumită combinație de rezistențe este conectată în serie, ceea ce creează un divizor de tensiune. Consultați schema de circuit. Tensiunea variabilă va fi citită de microcontroler. Fiecare tastă va produce o tensiune diferită și astfel se poate afla cu ușurință ce tastă a fost apăsată citind tensiunea de ieșire a matricei. Întrucât dorim să citim niveluri variate de tensiune și acum doar mari și mici, vom avea nevoie de un pin analogic. Din fericire, există un pin analogic etichetat ca A0 pe NodeMCU. Problema rezolvata!

Dacă doriți să cumpărați o matrice verificați conexiunile interne prezentate în diagramă. Se poate utiliza o matrice de orice dimensiuni. Asigurați-vă că utilizați un rezistor de 2,2 kΩ între rânduri și un rezistor de 680Ω între coloane.

Conectarea butoanelor push

Pinii 1 și 2 sunt conectați intern. La fel cu pinii 3 și 4. Când butonul este apăsat, toți pinii sunt conectați împreună. Consultați imaginea pentru a vă face o idee despre conectarea întrerupătoarelor de pe un panou perfector.

Am conectat un antet masculin cu 3 pini, astfel încât să poată fi conectat ulterior la placa principală.

Pasul 5: Puneți totul împreună

Punând totul împreună
Punând totul împreună
Punând totul împreună
Punând totul împreună
Punând totul împreună
Punând totul împreună

Puteți planifica plasarea componentelor oriunde doriți. Fără restricții. Vă voi arăta cum am făcut-o pentru a o face compactă, deoarece am vrut ceva care să încapă în palmă. Poate deveni un pic dezordonat, așa că încercați-mi cum să vă simțiți bine cu lipirea. Am decis să populez ambele părți ale plăcii așa cum ar fi un PCB cu două straturi. NodeMCU și placa de separare a cardului SD pe o parte și OLED și tastatură pe cealaltă parte.

Schimbarea cardului SD se întâmplă doar să se potrivească între cele două anteturi feminine care sunt pentru NodeMCU. Am desoldat anteturile masculine unghiulare cu care a venit placa de rupere, l-am rotit și l-am lipit din nou, astfel încât știfturile să meargă perpendicular în jos, așa cum se arată în imagine. Accesarea slotului pentru card SD devine mai ușoară.

Am îndoit pinii unui antet feminin cu 4 pini la unghi drept și l-am lipit pe partea de cupru a panoului de perfecționare, așa cum se arată în imagine.

Acoperiți îmbinările de lipit sub tastatură pentru a preveni scurtcircuitele. Adăugați o bucată subțire de spumă dură (aproximativ 5 mm grosime) între tastatură și placă de bază pentru o protecție și rigiditate suplimentară. În cele din urmă, lipiți tastatura pe care am realizat-o mai devreme. A avea un fier de lipit cu vârful ascuțit vă va ușura cu siguranță treaba. A fost o treabă dezordonată, făcându-l cât mai compact posibil, dar în cele din urmă a reușit să o facă.

Verificați din nou toate conexiunile pentru orice scurtcircuit înainte de a porni dispozitivul

Pasul 6: Configurarea tastaturii

Configurarea tastaturii
Configurarea tastaturii

După ce ați verificat toate conexiunile, sunteți gata să vă alimentați dispozitivul pentru prima dată. Degete încrucișate! Fără fum magic? Felicitări!

Acum suntem gata să configurăm tastatura. Reamintim funcționarea tastaturii. La fiecare apăsare a tastei se va emite o tensiune diferită care este alimentată la pinul analogic al NodeMCU. ESP-12E are un convertor analog la digital (ADC) cu rezoluție de 10 biți. 2 ridicat la putere 10 va da 1024. Aceasta înseamnă că vom primi o citire între 0 și 1024 pentru fiecare tastă apăsată. Să vedem ce lecturi obținem. Dar mai întâi, trebuie să scriem un mic program pentru a obține acele valori. Deschideți Arduino IDE, copiați lipiți următorul cod și încărcați-l pe NodeMCU.

tastatura intPin = A0;

void setup () {Serial.begin (115200); } void loop () {int r = analogRead (keypadPin); Serial.println (r); }

  • Deschideți monitorul serial. Setați rata de transmisie la 115200.
  • Acum apăsați orice buton. Ar trebui să obțineți o citire constantă pe monitorul serial. Fluctuațiile mici sunt în regulă. Acestea vor fi îngrijite în codul principal. Faceți același lucru pentru fiecare tastă.
  • Fiecare cheie ar trebui să aibă o lectură diferită.
  • Notați toate valorile. Vom avea nevoie de ele mai târziu.

Pasul 7: Să codificăm

Să Codificăm
Să Codificăm
Să Codificăm
Să Codificăm
Să Codificăm
Să Codificăm

Descărcați fișierul Scoreboard.ino furnizat mai jos pe computer și deschideți-l folosind IDE-ul Arduino.

Înainte de a încărca

1) Setați timpul de reîmprospătare pentru tabloul de bord. De exemplu, 15L pentru 15secs.

2) Introduceți SSID-ul și parola routerului pentru a vă conecta.

3) Efectuați modificările necesare dacă ați ales să conectați pinul CS al cardului SD la un alt pin decât GPIO15.

4) Vă amintiți valorile pe care le-am notat pentru toate tastele? Trebuie să alocăm un număr cheie pentru fiecare valoare. Vă povestisem și despre fluctuațiile din lectură. Acest lucru se datorează faptului că contactele comutatorului nu sunt perfecte. Pe termen lung, această valoare se poate abate de la valoarea curentă datorită îmbătrânirii contactelor, ceea ce adaugă o rezistență suplimentară în circuit, schimbând astfel tensiunea. Ne putem ocupa de această problemă în cod.

Vom adăuga o limită superioară și o limită inferioară a valorii cu o marjă de 5. De exemplu, am primit o citire de 617 pentru cheia 1.

  • Se scade 5 din el. 617 - 5 = 612. Aceasta este limita inferioară.
  • Acum adaugă 5 la el. 617 + 5 = 622. Aceasta este limita superioară.
  • Derulați până la sfârșitul codului. Completați spațiul prevăzut pentru cele două valori din cod așa cum se arată în imagine.
  • Faceți acest lucru pentru fiecare 9 valori.

if (r> 612 && r <622) {keyNumber = 1; }

Ce inseamna asta?

DACĂ citirea (r) este mai mare de 612 ȘI mai mică de 622, atunci se apasă tasta 1. Orice valoare cuprinsă între 612 și 622 va fi tratată ca cheia 1. Aceasta rezolvă problema lecturii fluctuante.

Pasul 8: Construirea cazului

Construind cazul
Construind cazul
Construind cazul
Construind cazul
Construind cazul
Construind cazul
Construind cazul
Construind cazul

Acest lucru este complet opțional. Am crezut că proiectul va arăta îngrijit și complet cu o carcasă în jurul său. Fără instrumente adecvate pentru această slujbă, va fi o sarcină imensă pentru mine. Carcasa este construită folosind acril.

Pregătiți bucățile pentru lipire prin netezirea marginilor folosind șmirghel. Am folosit Fevi Kwik (Super Glue) pentru a uni toate piesele. Super lipiciul lasă un reziduu alb după ce s-a vindecat. Deci, aplicați-l numai între articulații. Trebuie să fii rapid și precis când lucrezi cu super lipici, deoarece se fixează rapid. Cimentul acrilic este cel mai potrivit pentru această muncă.

Am făcut o mică deschidere pentru a accesa portul USB folosind un fișier. Ar trebui să fie suficient de mare pentru a introduce cablul USB.

A fost creată o grilă de 3x3 pe capacul frontal pentru butoane. Acest lucru va face ca butoanele să fie dificil de accesat. Pentru a rezolva această problemă, am tăiat bucăți pătrate pentru fiecare cheie, astfel încât butoanele lor să fie acum extinse până la suprafață.

După atât de multă șlefuire, tăiere, fixare și reglare, în cele din urmă s-a făcut!

Pasul 9: Distrează-te

A se distra!
A se distra!

În cele din urmă, toată munca grea este făcută. Porniți mini-tabloul de bord și rămâneți la curent cu jocul.

După pornire, se conectează mai întâi la punctul de acces. Inițializează cardul SD. Va afișa o eroare dacă cardul SD nu este inițializat.

O listă a tuturor meciurilor va fi afișată împreună cu numărul meciului.

Selectați numărul de potrivire utilizând tastatura.

Scorurile vor fi afișate. Puteți personaliza ceea ce doriți să vedeți pe ecran. Nu aș merge prea adânc în a explica codul. Puteți găsi aici o explicație detaliată despre modul în care funcționează analiza.

Pentru a reveni la meniu, țineți apăsat butonul ÎNAPOI (tasta 8) până când se afișează pagina „Obținerea scorurilor …”.

Planuri de viitor

  • Proiectați un PCB personalizat cu modulul ESP8266 12-E.
  • Adăugați o baterie reîncărcabilă.
  • Îmbunătățiți codul cu funcții noi.

Sper că ți-a plăcut construcția. Fă-o singur și distrează-te! Există întotdeauna un spațiu de îmbunătățire și multe de învățat. Vino cu propriile idei. Simțiți-vă liber să comentați orice sugestie cu privire la construcție. Îți mulțumesc că ai rămas până la capăt.

Recomandat: