Sommario:

Tabellone segnapunti di cricket utilizzando NodeMCU: 9 passaggi (con immagini)
Tabellone segnapunti di cricket utilizzando NodeMCU: 9 passaggi (con immagini)

Video: Tabellone segnapunti di cricket utilizzando NodeMCU: 9 passaggi (con immagini)

Video: Tabellone segnapunti di cricket utilizzando NodeMCU: 9 passaggi (con immagini)
Video: Табло Live Cricket на базе NodeMCU | ESP8266 проекты | Интернет-проекты 2024, Novembre
Anonim
Image
Image
Il programma
Il programma

Ciao! Di recente sono stato introdotto nel mondo dell'IoT (Internet of Things) quando mi sono imbattuto nel dispositivo più popolare in questo campo, ESP8266. Sono rimasto stupito dal numero di possibilità aperte da questo dispositivo minuscolo ed economico. Dato che sono attualmente nuovo a questo, ho deciso di fare un progetto usandolo e imparare lungo la strada. Così, ho iniziato a cercare su Internet progetti e idee.

Mi sono imbattuto in un fantastico progetto chiamato Arduino Cricket Score Ticker di W. A. Smith. In questo progetto, Arduino insieme a Ethernet Shield e scheda SD viene utilizzato per visualizzare i punteggi di cricket dal vivo da Cricbuzz. Questo progetto mi ha fatto pensare.

Vengo dall'India e la prima cosa che mi viene in mente dopo aver sentito l'India è Cricket. Qui il cricket è religione. A volte diventa difficile sedersi davanti alla TV per seguire l'intera partita. Quindi, perché non creare qualcosa che renda la visione dello spartito facile, wireless e portatile. Un piccolo dispositivo dedicato che mostra informazioni sufficienti per tenerti aggiornato con un solo sguardo.

Non sei un appassionato di cricket? Nessun problema! Il codice contiene il parser XML che può essere utilizzato per ottenere dati da qualsiasi file XML. Basta usare le funzioni corrette per ottenere i dati.

Passaggio 1: il piano

Il programma
Il programma

Il piano è quello di utilizzare la NodeMCU Development Board (con modulo ESP-12E) per accedere a Internet e richiedere il codice XML da Cricbuzz che contiene tutte le informazioni sulle partite in corso/prossime. Questo codice viene salvato sulla scheda SD come file.xml. Il file viene quindi letto dalla scheda SD per analizzare i dati richiesti dal codice XML. Userò il codice di W. A. Smith per analizzare le informazioni. Grazie ai suoi sforzi. Dai un'occhiata al suo progetto se desideri fare lo stesso usando Arduino ed Ethernet Shield.

La mia idea è di renderlo il più piccolo possibile, costruire un PCB personalizzato e una custodia. Per ora, facciamo un prototipo. Ma prima, acquisiamo familiarità con i componenti utilizzati in questo progetto.

Iniziamo

Passaggio 2: display OLED

Display OLED
Display OLED
Display OLED
Display OLED

Ho deciso di optare per un display OLED a causa delle sue dimensioni ridotte e sono disponibili a buon mercato. Sto usando un display da 0,96 che sarà sufficiente per visualizzare le informazioni sulla partita. Puoi usare qualsiasi dimensione del display.

Il display che sto utilizzando è monocromatico con il driver SSD1306 e l'interfaccia I2C (2 fili). Sono disponibili anche versioni SPI del display. Eseguirli è un compito facile. Scarica le librerie SSD1306 e GFX necessarie per eseguire i display. Grazie ad Adafruit per aver scritto queste librerie.

I collegamenti sono molto semplici.

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

Passaggio 3: scheda SD e adattatore

Scheda SD e adattatore
Scheda SD e adattatore

La scheda SD memorizza il file XML da Cricbuzz fino a quando tutte le informazioni non sono state analizzate. Una volta visualizzate le informazioni necessarie, il file viene eliminato. L'utilizzo di una scheda SD per archiviare un file XML da 10 - 20 kB è un po' eccessivo, ma rende l'analisi molto più semplice e facile da capire.

È possibile utilizzare qualsiasi scheda di memoria. Ho scelto la scheda micro SD per il suo fattore di forma ridotto. È possibile saldare direttamente i cavi sulla scheda SD, ma l'utilizzo di una scheda breakout semplifica il lavoro. Va notato che tutte le schede SD sono pensate per funzionare a 3,3 V. Ciò significa che non solo deve essere alimentato a 3,3 V ma anche la comunicazione tra microcontrollore e scheda SD deve essere a livello logico 3,3 V. Una tensione superiore a 3,3 V lo ucciderà! Non ci preoccuperemo di questo per quanto riguarda NodeMCU perché NodeMCU stesso funziona a 3,3 V, il che va bene. Se hai intenzione di utilizzare qualsiasi altro microcontrollore con livello logico 5V, assicurati che la tua scheda breakout abbia un traslatore di livello integrato (come mostrato nell'immagine). Fondamentalmente converte o "sposta" il 5V dal microcontrollore al 3.3V compatibile con la scheda SD. L'uso del cambio di livello insieme a 3,3 V (come ho fatto io) non influisce sul suo funzionamento.

La scheda SD utilizza l'interfaccia SPI per la comunicazione. Il pin CS o Chip Select può essere collegato a qualsiasi pin GPIO. Ho scelto GPIO15 (D8). Basta apportare le modifiche necessarie al codice se hai utilizzato un pin diverso da GPIO15

  • SCK a D5
  • MISO a D6
  • MOSI a D7
  • CS a D8
  • VCC a 3,3 V
  • GND a GND

Formatta la tua scheda SD

La libreria che utilizzeremo supporta i file system FAT16 o FAT32. Assicurati di formattare la scheda SD nel formato corretto.

Passaggio 4: creazione della tastiera

Fare la tastiera
Fare la tastiera
Fare la tastiera
Fare la tastiera
Fare la tastiera
Fare la tastiera

Voglio mantenere il progetto il più piccolo possibile. Quindi, ho deciso di creare una scheda separata per la tastiera e montarla successivamente sopra la scheda principale. Questo farà risparmiare un po' di spazio.

È possibile acquistare una matrice di chiavi già pronta, ma avevo dei pulsanti in giro. Inoltre, volevo renderlo il più piccolo possibile. Una disposizione tipica di collegamento di righe e colonne richiederebbe un totale di 6 pin GPIO per matrice 3 x 3. Questo è parecchio considerando che anche il display OLED e la scheda SD saranno collegati.

In caso di dubbio, cercalo su Google! Questo è quello che ho fatto e ho trovato un modo che richiederà solo 1 pin per controllare l'intera matrice. Ciò è reso possibile utilizzando la matrice del divisore di tensione. I resistori sono collegati tra ogni riga e colonna. Quando viene premuto un tasto, una certa combinazione di resistori viene collegata in serie creando un partitore di tensione. Fare riferimento allo schema del circuito. La tensione variabile verrà letta dal microcontrollore. Ogni tasto produrrà una tensione diversa e quindi si può facilmente scoprire quale tasto è stato premuto leggendo la tensione di uscita della matrice. Poiché vogliamo leggere diversi livelli di tensione e ora solo alto e basso, avremo bisogno di un pin analogico. Fortunatamente c'è un pin analogico etichettato come A0 su NodeMCU. Problema risolto!

Se desideri acquistare una matrice controlla le connessioni interne mostrate nello schema. È possibile utilizzare una matrice di qualsiasi dimensione. Assicurati di utilizzare un resistore da 2,2 k tra le righe e un resistore da 680 tra le colonne.

Collegamento dei pulsanti

I pin 1 e 2 sono collegati internamente. Stessa cosa con i pin 3 e 4. Quando si preme il pulsante, tutti i pin sono collegati insieme. Fare riferimento all'immagine per avere un'idea del collegamento degli interruttori su una perfboard.

Ho collegato un'intestazione maschio a 3 pin in modo che possa essere collegata alla scheda madre in un secondo momento.

Passaggio 5: mettere tutto insieme

Mettere tutto insieme
Mettere tutto insieme
Mettere tutto insieme
Mettere tutto insieme
Mettere tutto insieme
Mettere tutto insieme

Puoi pianificare di posizionare i componenti dove preferisci. Nessuna restrizione su di esso. Ti mostrerò come l'ho fatto per renderlo compatto perché volevo qualcosa che si adattasse al palmo. Può diventare un po' disordinato, quindi prova a modo mio se ti senti a tuo agio con la saldatura. Ho deciso di popolare entrambi i lati della scheda come sarebbe un PCB a due strati. NodeMCU e scheda breakout scheda SD da un lato e OLED e tastiera dall'altro lato.

Il breakout della scheda SD si adatta semplicemente tra le due intestazioni femminili che sono per il NodeMCU. Ho dissaldato le intestazioni maschio angolate fornite con la breakout board, l'ho ruotata e di nuovo saldata in modo che i perni scendano perpendicolarmente verso il basso come mostrato nell'immagine. L'accesso allo slot della scheda SD diventa più semplice.

Ho piegato i pin di un'intestazione femmina a 4 pin ad angolo retto e l'ho saldato sul lato rame della perfboard come mostrato nell'immagine.

Coprire i giunti di saldatura sotto la tastiera per evitare cortocircuiti. Aggiungi un sottile pezzo di gommapiuma (spessore circa 5 mm) tra la tastiera e la scheda madre per maggiore protezione e rigidità. Infine, saldare la tastiera che abbiamo realizzato in precedenza. Avere un saldatore con una punta appuntita renderà sicuramente il tuo lavoro facile. È stato un lavoro disordinato renderlo il più compatto possibile, ma alla fine è riuscito a farlo.

Ricontrolla tutte le connessioni per eventuali cortocircuiti prima di alimentare il dispositivo

Passaggio 6: configurazione della tastiera

Configurazione della tastiera
Configurazione della tastiera

Dopo aver controllato tutte le connessioni, sei pronto per alimentare il tuo dispositivo per la prima volta. Dita incrociate! Nessun fumo magico? Congratulazioni!

Ora siamo pronti per configurare la tastiera. Richiamare il funzionamento della tastiera. Ogni pressione di un tasto emetterà una tensione diversa che viene alimentata al pin analogico di NodeMCU. ESP-12E ha un convertitore analogico-digitale (ADC) con risoluzione a 10 bit. 2 elevato a 10 darà 1024. Ciò significa che otterremo una lettura tra 0 e 1024 per ogni tasto premuto. Vediamo quali letture otteniamo. Ma prima, dobbiamo scrivere un piccolo programma per ottenere quei valori. Apri Arduino IDE, copia incolla il seguente codice e caricalo su NodeMCU.

int tastierinoPin = A0;

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

  • Apri il monitor seriale. Imposta la velocità di trasmissione su 115200.
  • Ora premi un pulsante qualsiasi. Dovresti ottenere una lettura costante sul monitor seriale. Piccole fluttuazioni vanno bene. Questi saranno presi in considerazione nel codice principale. Fai lo stesso per ogni chiave.
  • Ogni chiave dovrebbe avere una lettura diversa.
  • Annota tutti i valori. Ci serviranno in seguito.

Passaggio 7: eseguiamo il codice

Codifichiamo
Codifichiamo
Codifichiamo
Codifichiamo
Codifichiamo
Codifichiamo

Scarica il file Scoreboard.ino fornito di seguito sul tuo computer e aprilo utilizzando l'IDE di Arduino.

Prima di caricare

1) Impostare il tempo di aggiornamento per il tabellone. Ad esempio, 15 litri per 15 secondi.

2) Immettere l'SSID e la password del router a cui connettersi.

3) Apportare le modifiche necessarie se si sceglie di collegare il pin CS della scheda SD a un pin diverso da GPIO15.

4) Ricordi i valori che abbiamo annotato per tutte le chiavi? Dobbiamo assegnare un numero chiave per ogni valore. Ti avevo anche parlato delle fluttuazioni nella lettura. Ciò è dovuto al fatto che i contatti dell'interruttore non sono perfetti. A lungo termine, questo valore può deviare dal valore corrente a causa dell'invecchiamento dei contatti che aggiunge ulteriore resistenza nel circuito modificando così la tensione. Possiamo occuparci di questo problema nel codice.

Aggiungeremo un limite superiore e un limite inferiore del valore con un margine di 5. Ad esempio, ho ottenuto una lettura di 617 per la chiave 1.

  • Sottrarre 5 da esso. 617 - 5 = 612. Questo è il limite inferiore.
  • Ora aggiungi 5. 617 + 5 = 622. Questo è il limite superiore.
  • Scorri fino alla fine del codice. Riempi lo spazio previsto per i due valori nel codice come mostrato nell'immagine.
  • Fallo per ogni 9 valori.

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

Cosa significa questo?

SE la lettura (r) è maggiore di 612 E minore di 622, viene premuto il tasto 1. Qualsiasi valore compreso tra 612 e 622 sarà trattato come chiave 1. Questo risolve il problema della lettura fluttuante.

Passaggio 8: costruire il caso

Costruire il caso
Costruire il caso
Costruire il caso
Costruire il caso
Costruire il caso
Costruire il caso
Costruire il caso
Costruire il caso

Questo è completamente facoltativo. Ho pensato che il progetto sarebbe stato ordinato e completo di una custodia intorno. Senza strumenti adeguati per questo lavoro, sarebbe stato un compito enorme per me. Il caso è costruito utilizzando acrilico.

Preparate i pezzi per l'incollaggio lisciando i bordi con carta vetrata. Ho usato Fevi Kwik (Super Glue) per unire tutti i pezzi. La super colla lascia un residuo bianco dopo l'indurimento. Quindi, applicalo solo tra le articolazioni. Devi essere veloce e preciso quando lavori con la super colla poiché si fissa rapidamente. Il cemento acrilico è il più adatto per questo lavoro.

Realizzata una piccola apertura per accedere alla porta USB utilizzando un file. Dovrebbe essere abbastanza grande da poter inserire il cavo USB.

Creata una griglia 3x3 sulla copertina per i pulsanti. Ciò renderà difficile l'accesso ai pulsanti. Per risolvere questo problema, ho tagliato pezzi quadrati per ogni tasto in modo che i loro pulsanti siano ora estesi fino alla superficie.

Dopo tanto di levigatura, taglio, fissaggio e regolazione, finalmente è stato fatto!

Passaggio 9: divertiti

Divertiti!
Divertiti!

Alla fine, tutto il duro lavoro è fatto. Potenzia il tuo mini tabellone e rimani aggiornato con il gioco.

Dopo l'accensione, si connette prima al punto di accesso. Inizializza la scheda SD. Mostrerà un errore se la scheda SD non è inizializzata.

Verrà visualizzato un elenco di tutte le partite insieme al numero della partita.

Selezionare il numero della partita utilizzando la tastiera.

Verranno visualizzati i punteggi. Puoi personalizzare tutte le cose che vuoi vedere sul display. Non andrei troppo in profondità nello spiegare il codice. Puoi trovare una spiegazione dettagliata qui su come funziona l'analisi.

Per tornare al menu, tieni premuto il pulsante BACK (tasto 8) finché non viene visualizzata la pagina "Recupero punteggi…".

Progetti futuri

  • Progetta un PCB personalizzato con il modulo ESP8266 12-E.
  • Aggiungi una batteria ricaricabile.
  • Migliora il codice con nuove funzionalità.

Spero ti sia piaciuta la costruzione. Fai da te e divertiti! C'è sempre un po' di spazio per migliorare e molto da imparare. Vieni con le tue idee. Sentiti libero di commentare eventuali suggerimenti riguardanti la build. Grazie per essere rimasto fino alla fine.

Consigliato: