I display vintage attirano sicuramente l'attenzione, non solo perché sono belli. In questo progetto vengono combinati dispositivi vintage degli anni '60 con il Wi-Fi del 2019 e componenti SMD.
Introduzione
All'interno del progetto si nasconde un semplice flipper, con cui è possibile giocare con il computer o un dispositivo mobile. Impiega le classiche bobine per l'originale visualizzazione del punteggio. Un ESP8266 si collega all'orologio su Internet, tramite Wi-Fi, per la sincronizzazione dell'ora e della data. Tutte le impostazioni sono accessibili e regolabili tramite Wi-Fi (smartphone, tablet o PC). L'ora e la data possono anche essere impostate manualmente e un DS3231 (RTC), alimentato a batteria, terrà traccia del tempo con molta precisione, anche ad alimentazione disattivata. Durante il normale funzionamento verrà visualizzato il tempo in formato 12 o 24 ore, con la data visualizzata ogni 30 minuti
(in formato europeo o americano).
Agli inizi erano elettromeccanici
La maggior parte dei flipper costruiti a metà degli anni '50 fino alla metà degli anni '70 del secolo scorso erano basati su bobine elettromeccaniche per tenere il punteggio del giocatore. Il principio di funzionamento non è cambiato molto nel corso degli anni: un breve segnale viene applicato a una bobina, che incrementa di un passo a ogni impulso. Un interruttore rileva la posizione "zero" della bobina, consentendo di azzerare il punteggio all'avvio di una nuova partita. In realtà le cose sono un po' più complicate. Ci sono altri interruttori sulle bobine per il punteggio, ad esempio un contatto segnala se è stata completato un passo, uno che si chiude in posizione "9" e alcuni rulli che possono registrare una determinata combinazione di cifre per le partite "omaggio". Nel progetto questi contatti non vengono utilizzati, tranne l'interruttore di "zero".
Decarbonizzazione
Una volta che i quattro rulli di punteggio sono sul banco di lavoro, inizia la parte più noiosa, ma anche la più gratificante, di questo progetto: la pulizia. Molto probabilmente essi sono coperti di polvere e fuliggine (quindi decarbonizzazione) e la pulizia va effettuata non solo per un aspetto estetico ma soprattutto perché le parti meccaniche possano lavorare nel migliore dei modi. Occorre, dunque, separare completamente le unità e pulirle accuratamente prima di rimontarle. Se si pulisce solo l'esterno, il meccanismo potrebbe non funzionare regolarmente. Si seguano, adesso, alcuni consigli:
- occorre stare molto attenti con le bobine, in quanto la numerazione può essere facilmente danneggiata o, addirittura, cancellata, se si non opera con estrema cura. I primi dispositivi Gottlieb sono stati stampati superficialmente con acqua e inchiostro. Non si devono, dunque, immergere, strofinare o graffiare. Non utilizzare nemmeno detergenti troppo aggressivi;
- quando si rimontano i pezzi si deve fare affidamento a una sorta di tacca o marcatura per il corretto orientamento della bobina. Un disallineamento potrebbe danneggiare l'unità o spostare la posizione zero del tamburo;
- le parti mobili in plastica hanno dei cuscinetti in metallo. Se una bobina non sta funzionando vuol dire che non si è pulita bene o che c'è un errore nel montaggio. Non si deve lubrificare nulla.
La parte elettronica
Lo schema del Pinball Clock, mostrato in figura 1, non è complicato. L'alimentazione elettrica dell'orologio è piuttosto semplice. Un trasformatore toroidale 2x12 V con i suoi avvolgimenti secondari in serie è collegato a K4, con una tensione di uscita di circa 32 VCC sul terminale positivo del raddrizzatore a ponte D1-D4. In pratica i secondari del trasformatore "non caricato" presenteranno una tensione di uscita più alta, oltre 35 VDC. L'IC1 LM2576 è un convertitore stepdown che fornisce 3.3 V per la sezione digitale dell'hardware. Per sicurezza, si è utilizzato una versione HV con una tensione massima d'ingresso di 60 V. Gli LM2576 sopportano al massimo una tensione di 40 V all'ingresso. Il LED1 si accende quando viene attivata l'alimentazione a 3.3 V. Una nota sul condensatore elettrolitico C1, uno dei pochi componenti elettronici a foro passante in questo progetto. Esso potrebbe sembrare un po' strano sul PCB, ma questa è stata una scelta voluta. E' molto difficile, se non impossibile, trovare un condensatore elettrolitico SMD di grandi dimensioni con una tensione nominale di 35 V, mentre le versioni a foro passante sono disponibili in tantissimi modelli. Inoltre, per cause di stabilità meccanica, è preferibile un condensatore a foro passante, con una tensione nominale massima di 50 V. Le bobine del punteggio sono controllate dai MOSFET a canale N, gli NTF3055, che hanno un Vth sufficientemente basso per controllare, in modo affidabile, le bobine con uscite logiche a 3.3 V. Nel primo prototipo questi FET venivano controllati direttamente dai pin GPIO dell'ESP8266. Ciò si era rivelata una cattiva scelta: l'ESP8266 non ha molte porte di I/O e alcuni di esse hanno funzioni speciali, rendendo molto difficile il mantenimento spento delle bobine durante l'avvio. IC3, l'expander di I/O MCP2300, rende l'hardware molto più semplice da controllare e offre anche un tipo di protezione/buffering tra ESP e i FET di potenza. Nel primo progetto i quattro interruttori "zero" erano collegati all'ADC dell'ESP per risparmiare dei pin di I/O. Sebbene l'ADC non sia veramente accurato, questa soluzione si è dimostrata sufficientemente affidabile. L'ESP rileva solo un cambiamento nel valore di ADC, potendo determinare se un interruttore di "zero" si apre dopo che la bobina di punteggio ha effettuato uno scatto.
Di conseguenza, durante un reset completo, tutti i rulli gireranno, anche se si trovano già in posizione zero. Un resistore da 1.2 kΩ dovrebbe essere saldato su tutti e quattro gli interruttori "zero" (vedi la figura 2). Tutti questi interruttori sono in serie e collegati a K3. Un display OLED I2C può essere collegato a K6 per visualizzare le informazioni sullo stato dell'orologio. Questo connettore può essere utilizzato anche per sviluppi futuri, come l'aggiunta di un sensore di temperatura I2C. S1 è il pulsante Reset. Se si mantiene premuto S2 finché non viene rilasciato S1, ESP8266 verrà avviato in modalità bootloader, consentendo all'utente di riprogrammare l'orologio tramite il connettore UART K1. S2 può anche ripristinare le impostazioni predefinite dell'orologio e questo può essere utile se l'orologio deve essere collegato a una rete Wi-Fi diversa. Per fare ciò, ripristinare l'orologio e premere S2 mentre il LED rosso FAULT è acceso. IC2 (DS3231 I2C) è l'orologio in tempo reale molto accurato. Una comune batteria a bottone CR2032 manterrà l'ora corretta con il flipper spento. Quindi, non è necessario regolare manualmente l'orologio ogni volta dopo l'accensione, se esso non è sincronizzato tramite NTP.
Realizzazione e cablaggio dell'orologio del flipper
Oltre ai quattro rulli per il punteggio occorre acquistare tutto l'hardware per il progetto. Sebbene la maggior parte dei componenti del PCB siano SMD, la saldatura risulterà semplice se si utilizzerà un piccolo saldatore e un filo sottile, preferibilmente minore di 1 mm. Saldare prima una piastrina su ogni componente e controllare che tutte le altre connessioni siano ben allineate con il PCB. Ricontrollare poi l'orientamento e la polarità dei semiconduttori e dei condensatori elettrolitici, prima di saldare le altre parti. Quindi si devono collegare le parti e le unità che non si trovano sul PCB (fare sempre riferimento allo schema elettrico della figura 2). Pulire i tamburi del punteggio e non dimenticare di montare un diodo di ricircolo di tipo 1N4007 (o equivalente) su ciascuna bobina (da D9 a D12), e lo stesso vale per il solenoide opzionale. Collegare le linguette della bobina ai catodi dei diodi a V+ sul PCB (K2 per le bobine, K5 per i carillon). L'altro lato della bobina di punteggio più a destra (minuti) deve essere collegato a RL1, il secondo (bobina decine minuti) a RL2 su K2 e così via, la nota più alta dei rintocchi a CH1 su K5, eccetera. I resistori per il rilevamento dello zero (da R28 a R31) vengono saldati direttamente alle linguette degli interruttori di posizione "zero" delle unità del tamburo. Successivamente, questi switch devono essere collegati in cascata e le estremità a K3. Gli avvolgimenti secondari del trasformatore di potenza sono collegati a K4. Non dimenticare d'installare un fusibile AC sul primario del trasformatore.
Software e firmware
C'è ancora del lavoro da fare prima d'iniziare a compilare e caricare il codice sul modulo dell'orologio. Innanzitutto è necessario avere l'IDE Arduino installato sul computer, oltre al plug-in per schede ESP8266 [4]. In secondo luogo, è necessario il plugin arduino-esp8266fs per caricare il contenuto web dell'orologio [5]. Scaricare il firmware del progetto da [6]. Per compilare il codice è necessario avere le seguenti librerie installate:
- RTCLib di Adafruit;
- MCP23008 di Adafruit;
- TimelLib di Michael Margolis;
- Arduino JSON 5.x;
- WebSockets di Markus Sattler;
- Modulo NtpClientLib [7];
- CRC32 di Christopher Baker.
Per semplificare la vita, è disponibile la cartella Arduino "Portabile" nell'archivio download per questo progetto [8], che contiene lo sketch completo con tutte le librerie, incluso il plugin ESP8266FS. Per mantenere leggero il download, non si è incluso il plug-in per schede ESP8266. Si deve copiare l'intera cartella portatile nella cartella d'installazione di Arduino sul computer.
- Si Accenda l'orologio e si colleghi un cavo FTDI da 3.3 V a K1 (il cavo GND nero va rivolto verso IC3) e una porta USB sul PC. Tenere premuto il pulsante S1 (Flash), premere e rilasciare l'interruttore S2 e quindi rilasciare S1 per avviare l'ESP in modalità bootloader;
- nell'IDE di Arduino, selezionare la porta COM a cui è collegato il cavo FTDI e scegliere "nodeMCU 1.0 (modulo ESP-12E)" come scheda di destinazione;
- all'interno dell'IDE di Arduino, si apra PinballClock.INO dalla cartella "..\Arduino\portatile\sketchbook\PinballClock", quindi si compili e si carichi il firmware sulla scheda.
Per ultimo, ma non meno importante, si deve caricare la pagina Web ESP. All'interno della cartella dello sketch di Arduino si trova una sottocartella denominata "dati", che contiene tutti i file per la pagina Web. Lo strumento di caricamento preleva automaticamente tutto il contenuto da questa cartella e lo invia alla memoria flash dell'ESP. Per prima cosa si verifichi che la "Dimensione Flash" nel menu Strumenti dell'IDE di Arduino sia impostata a "4M (1M SPIFFS)". Si ripeta la sequenza S1/S2 per porre l'ESP in modalità Bootloader e poi si carichi la pagina web dell'ESP, selezionando "ESP8266 Sketch Data Upload" nel menu Strumenti. Questo richiede un po' di tempo, ma quando la barra di stato nell'IDE mostra il messaggio "SPIFFS Image Uploaded", l'orologio è pronto per la configurazione.
Utilizzo
Dopo il caricamento della pagina web, l'orologio si resetterà nuovamente, portando tutte e quattro le bobine alle loro posizioni iniziali. Mostrerà un orario casuale letto dal RTC (che non è ancora sincronizzato). Se il LED spia rosso (LED2) è acceso, controllare i quattro interruttori di zero sulle bobine di punteggio, i resistori e il loro cablaggio e ripristinare l'orologio premendo S1. Se l'orologio non riesce a connettersi a una rete Wi-Fi, verrà impostato un punto di accesso Wi-Fi aperto con l'SSID "Elektor Pinball Clock". Collegare il computer, tablet o smartphone a questa rete, aprire il browser e digitare l'indirizzo IP 192.168.4.1, che aprirà la pagina web dell'orologio (figura 3).
C'è una casella di testo che può essere utilizzata come un blocco note, ad esempio per inserire il punteggio più alto del gioco del flipper o per delle note speciali. Si può impostare l'ora e la data manualmente sotto la voce di menu "Impostazioni orario" (vedi figura 4), ma è anche possibile sincronizzarlo tramite un server NTP su Internet. In quest'ultimo caso, inserire l'SSID della rete locale nell'elenco in "Impostazioni WiFi" e la password e cliccare su "Invia".
L'ESP si resetterà e si connetterà a questa rete Wi-Fi, ricevendo un indirizzo IP dal server DHCP della rete. Ora si può accedere all'orologio tramite il Wi-Fi locale, usando il corretto indirizzo IP. Ora si apra nuovamente "Impostazioni temporali" e s'inserisca "pool.ntp.org" (o qualsiasi altro server per la sincronizzazione) come Server NTP e l'intervallo di tempo ogni quale il flipper deve essere sincronizzato. Selezionare il fuso orario e fare click sui pulsanti "invia" corrispondenti per aggiornare le impostazioni dell'orologio. Ecco alcune impostazioni del sistema:
- "impostazioni schermo" (figura 5): consente di regolare il ritmo degli impulsi della bobina di punteggio. Non è necessario modificare l'impostazione predefinita e tutti i tipi e le marche funzionano con i parametri predefiniti. I valori più bassi di 3 sono stati previsti per un passo più veloce. I rulli da sei pollici non sono mai esistiti veramente (per quanto se ne sappia) ma sono stati aggiunti a questo menù per fornire di più opzioni; sta all'operatore scegliere cosa piace di più;
- "Stato bobina" mostra se gli interruttori dello zero delle bobine stanno funzionando e può essere usato per controllare la loro regolazione. Il pulsante "Reimposta bobine" fa riposizionare tutti le quattro unità a "0";
- "Visualizzazione ora/data" consente di cambiare il formato orario sul display (12 oppure 24 ore) e data ("mm-gg" oppure "gg-mm");
- La "modalità silenziosa" può essere utilizzata per silenziare l'orologio (bobine e carillon) durante un determinato periodo del giorno o della notte, probabilmente quando si dorme. Le ultime opzioni nelle "Impostazioni di visualizzazione" permettono di cambiare il punteggio. Se il display è spento, i rulli saranno impostati su "9999";
- "Impostazioni WiFi" (vedi figura 6) mostra le reti disponibili e il nome della rete dell'orologio. Esso memorizza la rete preferita e la sua password anche ad alimentazione disattivata;
- "Restart" riavvia l'orologio, ma tale operazione potrebbe cambiare l'indirizzo IP del sistema.
La parte più divertente è rappresentata dal gioco del flipper (vedi figura 7). Un semplice gioco di flipper apparirà sullo schermo con tanto di effetti sonori.
Elenco componenti
- Resistenze
- R1, R2, R8, R9, R11, R23, R26 = 10 kOhm, 5%, 0.1W, 150V
- R3, R6, R10, R12, R19, R21, R24 = 10 ohm, 5%, 0.1W, 150V
- R4 = 2.7 kOhm, 5%, 0.1W, 150V
- R5 = 1k6 Ohm, 15%, 0.1W, 150V
- R7, R15, R16, R17, R18, R20, R22, R25, R27 = 1 kOhm, 5%, 0.1W, 150V
- R13, R14 = 4.7 kOhm, 5%, 0.1W, 150V
- Condensatori
- C1 = 4700 uF, 50V, passo 10 mm
- C2, C6, C7, C8 = 100 nF, 50V, X7R, 0805
- C3, C4 = 100 uF, 16V, 2312
- C5 = 10 uF, 16V, 1206
- Induttori
- L1 = 470 uH smd, 570 mA
- Semiconduttori
- D1, D2, D3, D4 = S3J+, 600V, 3A
- D5 = MBRS540, 40V, 5A
- LED1 = verde, 3mm
- LED2 = rosso, 3mm
- T1, T2, T3, T4, T5, T6, T7 = MOSFET NTF3055L108T1G
- IC1 = LM2576HVS
- IC2 = DS3231MZ+ RTC
- IC3 = MCP23008-E/SO
- MOD1 = ESP-12F
- Varie
- Bt1 = batteria Cr2032
- D6, D7, D8, D9, D10, D11, D12 = 1N4007, 1000V, 1A
- F1 = fusibile 2AT
- F2 = fusibile 160mAT
- F2 = fusibile 320mAT
- K1 = morsetto 6 pin passo 0.1"
- K2 = morsetto 5 vie passo 0.2"
- K3, K4 = morsetto 2 vie passo 0.2"
- K5 = morsetto 4 vie passo 0.2"
- K6 = morsetto 4 vie passo 0.1"
- LCD1 = Display OLED 0.96" 128x64 (opzionale)
- R28, R29, R30, R31 = 1.2 kOhm
- S1 = switch tattile
- S2 = switch tattile
Web links
[4] ESP8266 boards plugin: https://github.com/esp8266/Arduino
[5] Arduino esp8266fs plugin: https://github.com/esp8266/arduino-esp8266fs-plugin
[6] Pinball Clock Software bundle for the project (Github): https://github.com/ElektorLabs/180307-PinballClock
[7] NtpClientLib form: https://github.com/gmag11/NtpClient/issues/60
[8] Pinball Clock Software bundle for the project (ElektorLabs magazine site): www.elektormagazine.com/180307-01
[9] Pinball Clock video (Elektor TV): https://youtu.be/lQL2Vk1Hj-o