top of page

EJ.0002 - Una bilancia pesa monete

  • Immagine del redattore: Daniele Bonini
    Daniele Bonini
  • 12 dic 2024
  • Tempo di lettura: 6 min

Aggiornamento: 17 apr

Questo progetto è stato fortemente voluto dalla mia pigrizia e dal fatto che non mi piace l'inefficienza: nel mio lavoro devo chiudere ogni sera dei registratori di cassa.


Ben 3 registratori a cui ogni giorno devo contare tutte le monete in essi contenuti e digitare un su un programmino apposito il numero di pezzi di ogni singola valuta per ottenere il fondo cassa totale. E credetemi: contarle ogni sera, di ogni singolo giorno della settimana è una gran rottura di ⚽🏀. 🙄🙄🙄


MA ☝ è un lavoro che va fatto e allora perché non cercare un modo per renderlo più veloce ed efficiente.


Lo so cosa stai pensando:


"Dani! Ci stanno già le macchinette conta monete, dove butti tutto dentro e tu trovi il totale e le monete smistate in pochissimo tempo." E magari lo dici anche con la stessa mimica di Khaby Lame su tik tok.😁


1 -Primo, perché son un bocognon di machinis ( aggeggi molto grandi, ingombranti. Detto in friulano 😁)


Ma soprattutto perché se no che gusto c'è allora ad ingegnarsi e a fare le cose da soli?


Quindi ho pensato di fare questo progettino per una bilancia con arduino, cogliendo anche l'occasione di riprendere la programmazione e migliorare per i progetti futuri. 😙


E allora: INIZIAMO!



PRINCIPIO DI FUNZIONAMENTO


L'idea di base è stata quella di una semplice bilancia da cucina: tasto di accensione, display dove leggere il valore, tasto della tara. A questi semplici tasti ne ho aggiunti altri 8, uno per ogni singola valuta.


Facendo qualche ricerca ho scelto per i seguenti moduli e componenti:

  • Modulo HX711 con cella di carico per peso fino ad 1kg

  • schermo LCD 16x2 con modulo si controllo SPI

  • pulsanti momentanei

  • arduino nano come cuore del progetto


L'immagine qui sotto riporta tutti i componenti, nonché il cablaggio su breadbord per iniziare i test di programmazione (senza il modulo HX711 collegato, perché ho fatto la foto dopo il primo test sul pcb e quindi non lo avevo più disponibile😅)



Sul cablaggio adesso andiamo nel particolare: tranquillo che non ti lascio cercare di interpretare l'immagine per capire come cavolo collegare il tutto 🤣


Ecco qui:



Qui di seguito, in figura 1, ti riporto lo schema elettrico del progetto :



Poi per la fare le cose più ordinate e simil professionali, ho realizzato il pcb di cui ti riporto le immagini qui sotto, fig. 2 e fig.3 , come riferimento.



N.B. : il componente HX711 non è presente perché manca dalla libreria delle immagini di Easy EDA editor, programma che uso per progettare i pcb.
N.B. : il componente HX711 non è presente perché manca dalla libreria delle immagini di Easy EDA editor, programma che uso per progettare i pcb.

Passiamo ora a come funziona questa bilancia!


    DIAGRAMMA DI FLUSSO    


Ora come si programma? Ho letto diversi libri a riguardo per imparare un po' le basi, non su di un linguaggio specifico, ma in senso ampio del termine, inteso come progettare su carta cosa vogliamo che il nostro programma faccia nella realtà e nella maggior parte di questi libri, l'indicazione è sempre la stessa: si dovrebbe cominciare da un diagramma flusso.


Uso il condizionale perché spesso per progetti molto semplici, come accendere e spegnere un led, anche un neofita salta questa parte (l'ho fatto molte volte anche io, preso dalla smania e la voglia di realizzare immediatamente un progetto 🤣) e se per spegnere e accendere un led questo non comporta alcun problema, progetti più complessi ti porteranno a fermarti e chiederti:


"E ora qui come risolvo questo problema? Come gli dico di fare questo o quello al microcontrollore?"


con conseguente perdita di tempo e un po' di frustrazione 🤯🤬


Perciò eccolo qua:



Realizzare un diagramma di flusso (questo il nome di questo disegno con rettangoli, rombi e tante frecce) quando lo si guarda già fatto, sembra molto semplice ed intuitivo, ma quando ci si cimenta, ci si trova spiazzati spesso in piccoli dettagli, non sapere bene che azioni indicare nei blocchi, visioni mistiche, miraggi.


Be' è normale: dobbiamo scomporre il nostro pensiero intuitivo e complesso riguardate una azione che vogliamo venga svolta, in blocchetti semplici semplici che hanno come unica risposta SI o NO.


E' un po' come imparare una nuova lingua....anzi: lo è ha tutti gli effetti! Dobbiamo imparare a ragionare come una macchina. Non devi diventare come Neo di Matrix, ma semplicemente fare un po' di pratica trovando un po' di esempi dal web. Col tempo e la dedizione sarà tutto molto più facile.


Questo tipo di diagramma serve essenzialmente per sapere cosa scrivere poi, nel linguaggio di arduino in questo caso, e rendere quindi la fase di programmazione più veloce.



    PROGRAMMAZIONE    


Quando inizi a imparare un qualsiasi linguaggio di programmazione, dopo le canoniche presentazioni, parole chiave da utilizzare propinate in lunghi elenchi che appena leggi hai già dimenticato, ed il classico "Hello world!" da stampare a schermo (che diciamocela tutta: non ti esalta tanto quanto l'autore del libro vuol cercare di farti credere non appena esegui quel benedetto codice), tra i vari consigli su come migliorare l'apprendimento c'è il


"guarda altri codici già scritti e impara scrivendo te il codice".


Questo è vero in parte: sicuramente la pratica di "scrivere e testare" funziona molto, soprattutto adesso che abbiamo degli IDE ( Integrated Development Environment) che aiutano moltissimo nel sistemare i primi comuni errori di sintassi.


Ma per quanto riguarda il capire, è un'altra cosa e ad una persona che si imbatte in prime matrici, costanti globali e locali, chiamata di funzione, la logica o anche il semplice senso del codice scritto da chi ha più esperienza risulta un po' criptico e di difficile intuizione.


Per questo motivo vorrei riproporre i passi che mi hanno portato da un codice molto intuitivo da comprendere, ma ripetitivo e per nulla compatto (ma funzionante eh ), ad un codice più elegante, efficiente e simil professionale.


Qui di seguito puoi trovare la prima stesura del codice. Leggilo tutto prima di proseguire con la spiegazione.




Ora che lo hai letto, credo ti sia più o meno chiaro cosa fa il programma e come lo fa. Però hai visto quante dichiarazioni per i pulsanti ( quelli con # davanti)? Poi una lunga e ripetitiva serie di "if" nella parte loop e altrettanti "if" nella parte della funzione "conta_monete".


Come direbbe Mago Merlino, se avesse praticato un po' la programmazione: "UN BEL GUAZZABUGLIO DI RIPETIZIONI CONTINUE!"


Precisazione: il codice che hai appena letto non usa l'LCD ma il monitor seriale dell'IDE di Arduino per visualizzare le scritte. Ai fini della spiegazione è ininfluente, ma se te ne sei accorto: bravo! Datti pure una pacca sulla spalla.


Spada nella roccia a parte è vero che è molto lungo, però intendiamoci: un programma così scritto va benissimo, nel senso che funziona e per chi è alle prime armi nel programmare può anche essere il programma finale che userà.


Ma metti caso che tra qualche tempo tu voglia modificarlo, per esempio facendo cambiare la scritta da " Hai scelta 1€" a " Hai selezionato 1€", oppure vuoi aggiungere un qualche coefficiente per calcolare il peso delle monete o vuoi pesare sterline, piuttosto che centesimi americani.


In questo caso dovresti andare in ogni singola istruzione ripetuta e modificarla. Il che è decisamente scomodo.


Allora si possono usare degli accorgimenti e metodi di programmazione per rendere il codice più efficiente e modificabile in futuro, a scapito però di un po' di chiarezza alla prima lettura da parte di un neofita.


Ti presento quindi il codice rivisto e ottimizzato, che però fa esattamente le stesse cose del codice precedente (ricordo che in questo caso useremo un LCD per visualizzare i messaggi e quindi si, quella parte del codice cambierà):




Questo che hai appena letto è il codice finale che ho usato. Caricalo pure sul tuo arduino nano e se c'è qualcosa che vorresti cambiare, personalizzare o semplicemente anche migliorare....FALLO PURE! 😃😜


E' proprio questo il bello: sperimenta, prova, sbaglia e impara dai tuoi errori.


Ricorda: più si pratica, più si migliora!



     REALIZZAZIONE PRATICA    


Passiamo ora alla realizzazione pratica del kit EJ.0002. Prima di tutto, oltre ad avere il kit, stampa tutte le parti con la stampante 3d al seguente link:



e infine procurati le seguenti viti:



Ora che hai tutto il necessario può seguire il video che segue, dove troverai l'assemblaggio passo-passo.




    COSTO DI REALIZZAZIONE


A breve renderò disponibile per l'acquisto il circuito se vorrai realizzarlo 😉

Il tempo di orientarmi su come gestire eventuali vendite.


Bene! 😃 Spero che questo progetto ti sia piaciuto e ti abbia incuriosito.


Modifica il codice, riscrivilo da capo se vuoi, cambia le scritte, usa la bilancia per altri scopi: lo stimolo alle modifiche e alle idee sono alla base per voler approfondire e conoscere ogni nuovo argomento!


Noi ci rileggiamo al prossimo articolo.


Grazie ancora e a presto!


Daniele

Comments


Electronic Journey

  • Youtube
  • Printables
  • Instagram
  • TikTok

©2024 by Electronic Journey. Creato con Wix.com

bottom of page