martedì 11 gennaio 2022

Score Reels (segnapunti per Flipper)





Il fascino dei contatori elettromeccanici utilizzati nei giochi da bar noti come "Flipper".

Un articolo sulla rivista Elektor ne ha riproposto l'uso come originale orologio.

Mi sono procurato un set di 4 unità (Williams da 4"); dopo una necessaria accurata pulizia è tornato pronto per una fase di test. L'azionamento dei solenoidi da parte di una scheda elettronica (es. Arduino) avviene tramite relè da 5V. In parallelo ad ogni solenoide dei contatori è posto un diodo,  per sopprimere le sovracorrenti di interruzione che potrebbero causare scintille ai contatti del relè. Le bobine sono delle Williams B-26 800 con impedenza di 7,2 Ohm (80W a 24V)

Una prima prova con una scheda Arduino Uno e un programma di test che fa avanzare una cifra alla volta per quattro cicli.


Una seconda prova con scheda Fishino  e un programma di azzeramento utilizzando i contatti di posizione
video



(prima del "restauro")




giovedì 24 settembre 2020

Microcomputer Z80 - Nuova Elettronica: il ritorno!

Un progetto presentato dalla rivista Nuova Elettronica nel 1979!

Dopo anni trascorsi in una cantina, ho deciso di riesumare il mitico primo "Personal Computer"!

Riassemblato nella versione "minimale" (alimentatore/scheda CPU/interfaccia tastiera e tastiera esadecimale con display) la delusione di vedere solo simboli casuali sul display, nessuna riposta al reset.


Ho dapprima pensato alla EPROM del monitor, che dopo 40 anni avesse...perso la memoria! Ho poi verificato il corretto funzionamento del circuito di reset (dove un elettrolitico in corto avrebbe potuto forzare un blocco della CPU) e del clock ( a 1920 kHZ come si vede dalla foto) e  mi ero ormai rassegnato a tentare la strada di una riprogrammazione del monitor su un chip "nuovo", cosa non facile considerata la vetustà dei chip 2708 a tripla alimentazione (ma sostituibili con dei 2716 ad alimentazione singola).

In attesa ho voluto provare a sostituire i due integrati di RAM statica 2114 presenti sulla CPU e...il microZ80 è tornato a funzionare!


 

martedì 3 aprile 2018

Domotica con Telegram




La piattaforma di messaggistica Telegram (https://telegram.org) offre un interessantisssimo servizio che consente di realizzare dei risponditori automatici (roBOT). Sono sostanzailmente degli utenti o account virtuali che leggono e interpretano i messaggi loro inoltrati e rispondono con servizi automatizzati.
I BOT di Telegram possono essere  implementati su schede e dispositivi IoT per realizzare efficienti e versatili controlli domotici. Per esempio, possiamo comandare un azione (aprire un cancello) con un messaggio Telegram.

Il software che implementa  un BOT invia dei comandi HTTP all'indirizzo api.telegram.org nella forma:
https://api.telegram.org/bot<token>/METHOD_NAME

Il bot richiede ciclicamente (polling) i messaggi inviatigli dai client con il metodo getUpdates:

https://api.telegram.org/bot<token>/getUpdates

e risponde al cient con il metodo SendMessage

https://api.telegram.org/bot<token>/sendMessage?chat_id=<clientid>&text="risposta del bot"

Esistono librerie per le più comuni schede utilizzate in applicazioni IoT. Per esempio, per la scheda EspressoLiteV2.0 si può usare la libreria ESP8266TelegramBOT.h (by Giancarlo Bacchio: https://github.com/Gianbacchio/ESP8266-TelegramBot) che è stata aggiornata nel 2020 per conformarsi alle nuove modalità di accesso sicuro alle API di Telegram (vecchie versioni della libreria avevano come risultato un un "failed to update"). La nuova libreria richiede la presenza del sw Arduino di gestione scheda 8266 con verisone 2.5.1 o superiore.

La scheda EspressoLiteV2.0 è molto versatile, dotata di modulo WiFi si programma con l'IDE di Arduino.

Il caricamento dello sketch Arduino compilato è gestito dal software esptool, che fa parte del pacchetto sw Arduino di gestione delle schede ESP8266. Dalla versione 2.5.1 del pacchetto si riceve un timeout durante il caricamento dello sketch su scheda Espressolite 2.0. Il problema può essere aggirato compilando lo sketch (con il sw.gestione scheda aggiornato, scegliendo la voce "Esporta sketch compilato" nel menu Sketch) e caricarlo (file.bin) sulla scheda Espressolite utilizzando la versione di esptool.exe 2.5.0).

[C:\Users\Erberto\AppData\Local\Arduino15\packages\esp8266\tools\esptool\2.5.0-3-20ed2b9/]esptool.exe -vv -cd ck -cb 115200 -cp COM9 -ca 0x00000 -cf<file:binario:compilato.bin> 

Nella linea di comando occorre specificare la porta COM utilizzata (-cp COM9)

Per comodità si può copiare la linea di comando in un file batch: carica.bat


Un interessante esempio di utilizzo della scheda Espressolite 2.0 e delle API Telegram in ambito domotico è stato pubblicato sulla rivista ElettronicaIN n.208 per controllare una caldaia per il riscaldamento domestico.

In alternativa alla Espressolite 2.0 si può utilizzare il modulo più compatto ESP01.





martedì 27 febbraio 2018

Elettronica, passione, emozione

La mia passione per l'elettronica risale a quando ero un bambino (sto parlando dei primi anni sessanta), affascinato da quel qualcosa di magico che riconoscevo in tutti gli oggetti in cui scorreva l'elettricità...
Mi emozionava in particolare la magia di quegli oggetti che servivano per comunicare: altoparlanti, radio, televisione. Ma anche strumenti di misura elettromeccanici, bobine, campanelli, motorini elettrici.
Nell'aula della scuola elementare rimasi colpito dalla cassa con altoparlante che campeggiava in alto a fianco della cattedra dell'insegnante, che serviva per le comunicazioni importanti della preside a tutte le classi. Appena mi fu possibile cercai di replicarla artigianalmente utilizzando un altoparlante dismesso dal papà di un mio compagno di classe, che si dilettava in elettronica



Il fascino dei dispositivi di diffusione acustica raggiungeva l'apice con i mitici diffusori a tromba esponenziale





Radio e televisione erano a quei tempi per me gli oggetti più complessi e misteriosi, animati dalle misteriose e affascinanti valvole termoioniche.  



Leggevo con trasporto libri come "Trionfi della ricerca" in cui si narrava delle esperienze del giovane Guglielmo Marconi e delle sue esperienze sulla trasmissione di segnali telegrafici senza fili, del sogno e della intuizione di Paul Nipkov sulla visione a distanza. Ancora su "Saper Costruire" progetti di microfoni, strumenti di misura elettromeccanici, schemi radio. E poi le fantastiche riviste "Sisteme Pratico" che sfogliavo nel solaio a casa del mio amico con il papà appasssionato di elettronica.




Grande fascino hanno sempre esercitato i dispositivi di radiotrasmissione, e fra i ricordi emergono la coppia di ricetrasmittenti "walkie-talkie" che mi feci comperare da venditori ambulanti sulla spiaggia di Cinquale (MS) e la mitica e favolosa "trasmittente dello zio Tino".


Sulle pagine del settimanale a fumetti Topolino (c - Walt Disney) non erano infrequenti le storie in cui apparivano apparati elettronici e radio trasmittenti e riceventi che sempre colpivano la mia immaginazione


(da "Zio Paperone e l'aurum nigrum") (c) Disney




martedì 28 novembre 2017

Android RS232

E' interessante la possibilità di utilizzare uno smartphone Android per connettersi ad un dispositivo elettronico mediante la tradizionale connessione seriale RS232. Esistono degli adattatori USB/seriale RS232 che si possono utilizzare con smartphone dotati di supporto USB OTG. In particolare l'adattatore basato su PL2303HXD della Prolific mette a disposizione una app di emulazione terminale e delle API per realizzare programmi di comunicazione e acquisizione dati.
Nella foto che segue uno smartphone connesso ad un misuratore di campo PMM8053:


Sviluppare una applicazione Android che scambi dati via linea seriale/USB non è tuttavia una cosa semplicissima. Occorre innanzitutto installare l'ambiente di sviluppo Android Studio che a sua volta richiede l'installazione dell'ambiente di sviluppo Java JDK.E' poi richiesta una sufficiente conoscenza del linguaggio Java e della sintassi XML.

giovedì 22 giugno 2017

Processing, DAQ e grafici

L'interfaccia seriale è ancora largamente utilizzata da molta strumentazione elettronica per scambiare dati con un personal computer. Quest'ultimo è spesso utilizzato per raccogliere dati (DAQ: Data Acquisition) e presentarli all'utilizzatore in una interfaccia grafica più o meno accattivante. Il linguaggio Processing (https://processing.org) si presta bene a questi scopi.

Un esempio
Sulla rivista Elektor (Mar.-Apr. 2015) è apparso un articolo "Security Labels are the key" in cui una scheda Arduino viene utilizzata per rilevare la frequenza di risonanza di una lamina antitaccheggio utilizzata in molti prodotti di consumo. La scheda invia su linea seriale il livello di segnale ai capi di una bobina che viene sollecitata con una serie di frequenze da 52 a 64 kHz.

Un programma Processing che gira su PC riceve dalla scheda Arduino via linea seriale i dati delle frequenze e genera un grafico (istogramma) in cui risulta con evidenza una frequenza di risonanza.




 L'ambiente di sviluppo (IDE) di Processing e quello di Arduino sono molto simili, il secondo infatti è derivato dal primo, come Wiring (http://wiring.org.co) il precursore di Arduino.


venerdì 25 novembre 2016

Risoluzione IP Dinamico con Arduino




La maggior parte delle connessioni domestiche a Internet avviene con un IP dinamico fornito dal provider all'atto di ciascuna connessione. Per consentire l'accesso remoto a dispositivi IoT e applicazioni di domotica si ricorre a servizi DDNS semprechè il modem ADSL li supporti. Inoltre la maggioranza dei servizi è ora a pagamento. Il metodo alternativo qui presentato utilizza una scheda Arduino con shield Ethernet per mantenere aggiornato su un server l'indirizzo IP corrente in un file testo. Una semplice pagina .php consente sia di ridirigere una connessione client HTTP alla rete domestica (all'IP corrente) che di aggiornare il file testo contenente l'indirizzo.
Arduino periodicamente aquisisce l'IP corrente e aggiorna il file testo sul server chiamando la pagina .php passando il parametro "newip"; digitando da un qualunque browser in rete l'indirizzo della pagina .php (con password) si viene ridiretti all'IP dinamico e quindi alla nostra rete domestica.


----------------------------------------------------------------
<?php

$file = "ip.txt";

if(isset($_GET['newip']) == true && isset($_GET['pass']) == true)
{
   $ip = $_GET['newip'];
   $pass = $_GET['pass'];

   if($pass == "abc123")
   {
      file_put_contents($file, $ip);
   }
}
else if(isset($_GET['pass']) == true)
{
   $pass = $_GET['pass'];
   if($pass == "abc123")
   {
      // get IP address
      $port = $_GET['port'];
      $ip = file_get_contents($file);
      echo '<html>';
      echo '<head>';
      echo '<meta http-equiv="refresh" content="0; url=http://'.$ip.':'.$port.'" />';
      echo '</head>';
      echo '<body>';
      echo '</html>';
   }
}
?>

----------------------------------------------------------------

Il codice completo dello sketch per Arduino è scaricabile qui. E' previsto l'utilizzo di uno shield economico basato sul chip ENC28J60.

Il loop principale è riportato qui di seguito:

void loop() {
 ether.packetLoop(ether.packetReceive());
 switch(actual_status) {
  case STATUS_IDLE: getIP(); break;
  case STATUS_WAIT_IP: waitIP(); break;
  case STATUS_SEND_IP: sendIP(); break;
  case STATUS_WAIT_RESP: waitRESP(); break;
  }
}

L'invio delle richieste client avviene con la funzione ether.browseUrl della libreria EtherCard.h

ether.browseUrl(PSTR("/"), pageurl , setipwebsite, setip_callback);

Credits:
L'idea originale è derivata da un post sul web di Gianluca Ghettini, in cui l'aggiornamento del file testo avviene con uno script bash (che però necessita di un sistema Linux). La pagina .php è stata modificata con l'aggiunta del parametro "port" per accedere a uno specifico server web all'interno della rete domestica (es. IPcam, termostato, ecc.).