the Memory Recorder - Christmas Gift
by AndreaS81 in Circuits > Arduino
2300 Views, 15 Favorites, 0 Comments
the Memory Recorder - Christmas Gift
![LRM_EXPORT_20201218_153304.jpg](/proxy/?url=https://content.instructables.com/F9R/601D/KIX53ANX/F9R601DKIX53ANX.jpg&filename=LRM_EXPORT_20201218_153304.jpg)
![LRM_EXPORT_20201208_195452.jpg](/proxy/?url=https://content.instructables.com/FN6/641A/KIX538OZ/FN6641AKIX538OZ.jpg&filename=LRM_EXPORT_20201208_195452.jpg)
Ciao a tutti!
In vista del Natale arriva il momento dei regali, sono sicuro quindi che molti di voi sentiranno la necessità di donare qualcosa di speciale. In questo periodo così difficile certamente sono mancate molte occasioni per condividere emozioni e gesti concreti.
In un mondo dove si aveva tutto sono state le cose più scontate a mancare, le semplici relazioni umane, un gesto di persona, le parole di una persona cara .
Allora ti chiedo: che significato dai alle parole? Hai mai pensato alla loro importanza?
A volte vorresti solo parlare con una persona per te importante e sentirti dire proprio quello che ti serve. Immagina allora di regalare proprio questo , come fare? Leggi l'articolo e ti mostrerò la mia soluzione.
Il Progetto
![LRM_EXPORT_20201218_153304.jpg](/proxy/?url=https://content.instructables.com/FH8/VF39/KIUA7N3H/FH8VF39KIUA7N3H.jpg&filename=LRM_EXPORT_20201218_153304.jpg)
![LRM_EXPORT_20201208_195509.jpg](/proxy/?url=https://content.instructables.com/FA6/LEVD/KIUA7N3F/FA6LEVDKIUA7N3F.jpg&filename=LRM_EXPORT_20201208_195509.jpg)
Raccogli i tuoi pensieri e sintetizza in un numero contenuto di frasi e parole ciò che vorresti comunicare. Sarà questo il tuo dono, qualcosa di importante per te. Questo progetto nasce proprio da qua!
Ti mostrerò come costruire un dispositivo capace di fare questo. Immagina di premere un pulsante e di leggere su un display un messaggio memorizzato da tempo. Ma attento pero! una volta letto quel contenuto non potrai mai più rivederlo. Vieni mai? Semplice, rispondi alla mia domanda nell'introduzione. Se anche tu dai peso alle parole aspetterai di leggere il messaggio per te con attenzione, consapevole che le cose preziose a volte possono anche essere uniche.
Dal prossimo capitolo entro negli aspetti tecnici, consiglio ai lettori meno curiosi di passare direttamente alle conclusioni. Buona lettura!
Da Dove Si Parte?
![LRM_EXPORT_20201218_200516.jpg](/proxy/?url=https://content.instructables.com/FYR/MW02/KIUA7N3O/FYRMW02KIUA7N3O.jpg&filename=LRM_EXPORT_20201218_200516.jpg)
![esp8266.jpg](/proxy/?url=https://content.instructables.com/FRA/GM7X/KIUA7N3B/FRAGM7XKIUA7N3B.jpg&filename=esp8266.jpg)
![sdcard.jpg](/proxy/?url=https://content.instructables.com/FPS/Q8P8/KIUA7N3S/FPSQ8P8KIUA7N3S.jpg&filename=sdcard.jpg)
![oled.jpg](/proxy/?url=https://content.instructables.com/FQE/07NE/KIUA7N3Q/FQE07NEKIUA7N3Q.jpg&filename=oled.jpg)
![sd.jpg](/proxy/?url=https://content.instructables.com/F64/EAB1/KIUA7N3R/F64EAB1KIUA7N3R.jpg&filename=sd.jpg)
![SPI_single_slave.svg.png](/proxy/?url=https://content.instructables.com/F0A/TNVO/KIVPO6K1/F0ATNVOKIVPO6K1.png&filename=SPI_single_slave.svg.png)
Forse uno degli aspetti più complessi è proprio questo, l'obiettivo, come lo concretizzo? Che strumenti uso? Sicuramente esistono moltissimi modi per farlo, io stesso ho tentato con tanti prototipi.
Partiamo dalle scelte di base:
- se vuoi leggere qualcosa avrai bisogno di un display.
- sicuramente ti serve un pulsante e una batteria.
- il tutto deve sicuramente essere gestito da un processore, ci serve un microcontrollore.
- i tuoi messaggi possono essere preservati all'interno di una memoria, immagino sia possibile usare la EEPROM del processore .. tuttavia per comodità di ho preferito usare un modulo lettore di memorie micro SD.
Arrivati qui il problema si sposta su come stabilire una comunicazione univoca tra:
Display - microcontrollore
modulo SD - microcontrollore
Una comune scheda di sviluppo come Arduino è in grado di gestire una comunicazione SPI (Serial Peripheral Interface), si tratta di un bus standard di comunicazione ideato dalla Motorola. La trasmissione avviene tra un dispositivo detto master e uno o più slave (letteralmente dall'inglese padrone e schiavo). Il master controlla il bus, emette il segnale di clock, decide quando iniziare e terminare la comunicazione. Questa soluzione si presta bene per comandare un normale display OLED da 2 euro, per intenderci proprio quelli usati un tempo anche nei telefonini (per esempio io ho usato un display commercializzato anche da nokia).
Occupato questo canale di comunicazione adesso la nostra scheda deve parlare con il modulo lettore di schede SD, a questo fine sarà possibile adottare il protocollo I²C (abbreviazione di Inter Integrated Circuit) sviluppato dalla Philips nel 1982. Negli anni poi uscirono prodotti simili come SMBUS (brevetto Intel) per motivi squisitamente commerciali. Ciò che serve a noi nel concreto è una comunicazione semplice e capace di funzionare da Master Slave tutto sommato in modo analogo a prima.
Tutto chiaro no?! Facciamo i test su bradboard!
Il Circuito
![u6usu.png](/proxy/?url=https://content.instructables.com/F44/ZHV5/KIUA7N4A/F44ZHV5KIUA7N4A.png&filename=u6usu.png)
Arrivati qua vorrei dare un consiglio ai meno esperti. Non testate mai tutto insieme! Vi assicuro che in caso di errori sarà difficilissimo trovare cosa non funziona. Il modo giusto di avanzare è progredire un passo alla volta, se funziona e sembra stabile aggiungi qualcosa e così via. Un passo alla volta insomma!
Prendiamo per esempio questo progetto e vediamo insieme il modo giusto di progredire:
- Prova la comunicazione fra display e microcontrollore, salva il codice e scollega.
- Prova la comunicazione fra lettore di SD e microcontrollore, salva il codice e scollega.
- Se tutto funziona allora metti assieme le parti e avanza con le funzionalità da implementare ma ricorda, un passo alla volta!
Se la parte circuitale funziona allora disegna uno schematico circuitale come ho fatto io, in questo modo quando passerai alle fasi successive non potrai sbagliare. Io uso spesso Orcad perchè è molto diffuso nelle aziende e consente di elaborare, se serve, un PCB attraverso "Allegro".
Osserva ancora che se come me hai scelta questi protocolli di comunicazione i PIN da usare sono univoci! Dipendono dal microcontrollore, cerca il datasheet in rete e scova quali devi usare.
I Problemi (e Le Soluzioni)
![LRM_EXPORT_20201218_200318.jpg](/proxy/?url=https://content.instructables.com/F4B/RWMC/KIUA7N3M/F4BRWMCKIUA7N3M.jpg&filename=LRM_EXPORT_20201218_200318.jpg)
![LRM_EXPORT_20201218_200228.jpg](/proxy/?url=https://content.instructables.com/FQA/UZVJ/KIUA7N3K/FQAUZVJKIUA7N3K.jpg&filename=LRM_EXPORT_20201218_200228.jpg)
![LRM_EXPORT_20201218_200048.jpg](/proxy/?url=https://content.instructables.com/FZD/CRX1/KIUA7N3J/FZDCRX1KIUA7N3J.jpg&filename=LRM_EXPORT_20201218_200048.jpg)
![LRM_EXPORT_20201218_200656.jpg](/proxy/?url=https://content.instructables.com/F5F/MQ58/KIUA7N3P/F5FMQ58KIUA7N3P.jpg&filename=LRM_EXPORT_20201218_200656.jpg)
I più attenti notato che la mia scelta del microcontrollore è ricaduta su un nodemcu esp8266 , ovviamente la scelta non è casuale. Semplicemente con una comune scheda Arduino Uno non riuscirete, questa infatti è governata dal processore "atmega328p". Con questa avrai a disposizione solamente 2 KB di SRAM, troppo pochi per la nostra applicazione! La cosa più fastidiosa è che semplicemente la scheda non funzionerà, non ti verrà fornito alcun errore nemmeno nell'IDE di arduino ... insomma vi assicuro che scovare questo problema non è stato facile. Ti accorgerai di questo solamente procedendo per step come ti ho suggerito nel capitolo precedente.
Fortunatamente la soluzione è adottare una scheda come una nodemcu esp8266, avrai a disposizione fino a 128KB , sufficienti per il nostro progetto.
Mi piacerebbe adesso dirti che i problemi sono finiti .. ma se proverai scoprirai che così non funzionerà. E ora? Di chi è la colpa? Del modulo che legge la SD!
Dopo un'attenta analisi scoprirai che un bordo monta un regolatore di tensione AMS1117 a 3.3v, incompatibile con la scelta del nodemcu esp8266. La motivazione è data dal fatto che normalmente i microcontrollori come Arduino gestiscono segnali a 5V e quindi è necessario usare un convertitore come questo per abbassare la tensione a 3.3v. La soluzione in questo caso è semplice, appurato che la nostra scheda ragiona a 3.3v ci basterà rimuovere il regolatore di tensione come ti ho mostrato nella foto.
Ma attento! Ricorda di cortocircuitare i contatti appositi per continuare ad alimentare il suo circuito interno! Ho caricato una foto per questo.
Il Codice C
![1.jpg](/proxy/?url=https://content.instructables.com/FQ3/YDND/KIX53A8K/FQ3YDNDKIX53A8K.jpg&filename=1.jpg)
![2.jpg](/proxy/?url=https://content.instructables.com/F36/PJ5O/KIX53A8L/F36PJ5OKIX53A8L.jpg&filename=2.jpg)
![3.jpg](/proxy/?url=https://content.instructables.com/FYG/3FKN/KIX53A8M/FYG3FKNKIX53A8M.jpg&filename=3.jpg)
![4.jpg](/proxy/?url=https://content.instructables.com/F4Q/5QTY/KIX53A8N/F4Q5QTYKIX53A8N.jpg&filename=4.jpg)
![5.jpg](/proxy/?url=https://content.instructables.com/F6G/X95Z/KIX53A8O/F6GX95ZKIX53A8O.jpg&filename=5.jpg)
![6.jpg](/proxy/?url=https://content.instructables.com/FXG/H8XI/KIX53A8Q/FXGH8XIKIX53A8Q.jpg&filename=6.jpg)
Se con la scelta dell'Hardware scegliete "cosa toccare", qua vi giocate l'anima e il contenuto del vostro dispositivo.
Sperando di non essere incompreso sono proprio le righe sopra a fare la differenza. Ovviamente non parlo del semplice funzionamento .. infatti potrebbe funzionare in tanti modi diversi utilizzando lo stesso risultato con procedimenti diversi.
Cosa intendo? N onostante l'utilizzatore "da fuori" non si accorgerà di nulla, il dispositivo è stato creato per essere speciale e il più vicino possibile a ciò che direi io se fossi li al posto suo. Quale logica dovrebbe seguire allora la comparsa di un messaggio piuttosto che un altro? Potrei spiegare il codice, ma mi allontanerei dal discorso, preferisco quindi provare a trasmettere a parole gli aspetti fondamentali; se qualcuno necessiterà poi del codice C mi contatti.
Abbiamo detto che all'interno sono contenuti e riflessioni utili, ma come disporle? Con quale ordine? Ho pensato molto a questo ma alla fine ho capito che non esiste una vera strategia, nel nostro caso sarà il destino a scegliere per noi; proprio come quotidianamente accadono i fatti che ti spingono ad usare questo dispositivo.
Un altro punto fondamentale del progetto è l'attenzione da porre mentre lo si usa. Bisogna evitare che l'utilizzatore sottovaluti i contenuti e prema ripetutamente fino ad esaurire ciò che è contenuto al suo interno. La mia scelta è stata quella di rendere unica l'occasione di visualizzazione per quel contenuto. Nello stesso istante in cui premerai il pulsante eliminerai quel messaggio, certo lo vedrai per tutta la pressione del tasto, ma già saprai che non lo rileggerai mai più.
Assembla Tutto!
![LRM_EXPORT_20201208_195452.jpg](/proxy/?url=https://content.instructables.com/F0N/II8R/KIUA7N3E/F0NII8RKIUA7N3E.jpg&filename=LRM_EXPORT_20201208_195452.jpg)
![LRM_EXPORT_20201208_195431.jpg](/proxy/?url=https://content.instructables.com/FM7/5K29/KIUA7N3D/FM75K29KIUA7N3D.jpg&filename=LRM_EXPORT_20201208_195431.jpg)
![LRM_EXPORT_20201208_195509.jpg](/proxy/?url=https://content.instructables.com/FOH/3T1R/KIVPORQ3/FOH3T1RKIVPORQ3.jpg&filename=LRM_EXPORT_20201208_195509.jpg)
![LRM_EXPORT_20201208_195534.jpg](/proxy/?url=https://content.instructables.com/F27/MTX1/KIUA7N3G/F27MTX1KIUA7N3G.jpg&filename=LRM_EXPORT_20201208_195534.jpg)
Ti rimane ora solo la fase di assemblaggio, se hai costruito uno schematico circuitale potrai passare alla realizzazione di un PCB. Se però vieni a me hai intenzione di realizzare dei pezzi unici valuta anche una soluzione più pratica, puoi ottenere ottimi risultati anche con una base mille fori.
La disposizione dei componenti sarà ovviamente vincolata dalla forma oggetto finale, volendo ricordare un dispositivo comune come uno smartphone ho optato per la geometria nella foto.
Una scelta particolare che ho fatto è stato utilizzare una batteria da 9V, volendo anche ingombrante "inutilmente", si potrebbe utilizzare una batteria piatta tipo quelle dei telefoni ... e in realtà no! Se il tuo oggetto dovrà sopravvivere nel tempo una tecnologia alcalina carbonio-zinco sarà molto più stabile e affidabile! Potenzialmente durerà molto di più negli anni.
Stampa 3D
![3D.JPG](/proxy/?url=https://content.instructables.com/FSD/BOCT/KIUA8YSB/FSDBOCTKIUA8YSB.jpg&filename=3D.JPG)
![LRM_EXPORT_20201220_131406.jpg](/proxy/?url=https://content.instructables.com/FLN/TCH6/KIVPQERH/FLNTCH6KIVPQERH.jpg&filename=LRM_EXPORT_20201220_131406.jpg)
![LRM_EXPORT_20201218_195245.jpg](/proxy/?url=https://content.instructables.com/F5U/A0O2/KIUA7N3I/F5UA0O2KIUA7N3I.jpg&filename=LRM_EXPORT_20201218_195245.jpg)
Crea il tuo modello 3D e stampa il case!
Se non disponi di una stampante 3D non preoccuparti, ormai in rete esistono molte aziende che stampano per i prezzi contenuti. Altrimenti ... prova a costruirtene una! Ti lascio il link di un mio progetto che rappresenta il punto di partenza ( https://www.instructables.com/id/CNC-Plotter-2/ )
Conclusioni
![LRM_EXPORT_20201218_153304.jpg](/proxy/?url=https://content.instructables.com/FFA/EYI6/KIVPQEV5/FFAEYI6KIVPQEV5.jpg&filename=LRM_EXPORT_20201218_153304.jpg)
Con questo progetto ho voluto dare sfogo a qualcosa di certamente non solo tecnico. Mi spiego meglio, questo non rappresenta un esercizio o un tentativo d'approccio ad un tema, vieni per altro invece trovate sulla mia pagina.
Ho sentito la necessità di costruire qualcosa di solo umano. E 'difficile ovviamente, come puoi tradurre un sentimento, un gesto, una parola in qualcosa di così fisico? Ho pensato quindi ha ciò che vedi. Nonostante la sua apparente semplicità da fuori, ti ho mostrato che in realtà al suo interno è contenuto tanto, le scelte costruttive e di programmazione rispecchiano il desiderio di realizzare qualcosa di più profondo e bello , almeno per me.
Resta solo un'ultima domanda da porvi:
Perchè tutto questo? E sopratutto, a chi dovresti regalare questo dispositivo?
Spero che anche questo progetto ti sia piaciuto, a presto!