Rivitalizzare un vecchio tester Lael 450 del 1955

Rivitalizzare un vecchio tester Lael 450 del 1955

Chiedendo agli amici se qualcuno aveva un tester da prestarmi, mi sono ritrovato in casa un vecchio Analizzatore Lael 450 fabbricato a Milano negli anni ’50, non funzionante, ma molto bello. Un bell’oggetto morto.
Quando ho provato a restituirlo il proprietario mi ha detto “tienilo, era di mio padre, ma non mi serve e poi non va”.
L’ho tenuto lì un annetto, poi mi é venuta voglia di farlo diventare qualcosa di utile.
Ora é la mia sveglia, orologio e luce notturna connessa ad Internet, basato su Arduino Nano e ESP8266-01.

Questa é la raccolta degli appunti del progetto.

Reverse engineering delle manopole

Il fronte della scatola che racchiude il tester era costituito da delle manopole che volevo assolutamente riutilizzare, così come l’ago che si muove per indicare il valore della tensione.
Le manopole erano collegate a degli interruttori rotanti (tipo questo): su una manopola, a seconda dello scatto, venivano collegate diverse resistenze permettendo la misura dei valori di tensione e corrente su scale diverse. Sull’altra manopola lo scatto comportava l’attivazione di circuiti diversi in modo da far funzionare il tester in AC o CC ed altro ancora. Non ho approfondito il funzionamento dell’analizzatore, ma mi interessava riciclare i comandi.
A seconda della rotazione volevo leggere un 1 o uno 0 su dei pin di Arduino. Dissalda. Guarda. Prova. La rotazione della manopola, in pratica, chiude ad ogni passaggio un interruttore diverso.
Questo lo schema di uno dei rotary switch, una lamella blu (più lunga delle altre) porta la corrente sulla ruota centrale arancione che ruotando la manopola gira e chiude o apre i circuiti collegati alle altre lamelle blu:

 

Reverse engineering del needle gauge

La lancetta che si muoveva per segnalare i valori delle misurazioni é comandata applicando una tensione a due capi, segnati con + e -. Ho fatto alcune prove e ho trovato come pilotarla con valori di un uscita pwm di Arduino riducendo la corrente con una resistenza da 10kohm.
Facendo alcuni test ho stabilito i valori da applicare per far muovere la lancetta sui numeri da 1 a 10 della scala centrale.
Successivamente ho però notato che le interazioni con gli altri componenti, con il wifi, le luci e i suoni alterano probabilmente la corrente che circola verso il gauge precludendo qualunque utilizzo preciso della lancetta. Probabilmente é necessario costruire un filtro che rimuove queste variazioni e stabilizza tensione e corrente, ma la lancetta é per me più che altro estetica.

Potenziometro

Sotto alle due manopole, in mezzo, c’era una classica resistenza variabile, che però non funzionava più, fortunatamente quelle attuali hanno le misure identiche a quelle di sessanta anni fa e quindi ho potuto tenere il suo tappino e sostituire il vecchio potenziometro con uno nuovo.

Luci e sensori

Ho inserito due led SMD, quelli piatti, negli spinotti dei cavi esterni + e – del tester.
Ho inserito un terzo led SMD dentro lo scatolotto del needle gauge, non é stato semplice, perché volevo inserirlo in modo che illuminasse un po’ la lancetta senza però urtarla.
Per alimentare i tre led ho dovuto utilizzare un transistor BCE, perché la corrente in uscita da un pin di Arduino non era sufficiente. Ho messo in serie anche il potenziometro così la luce può essere smorzata o alzata a piacere.
Con un trapano fisso ho bucato la scatola, che é durissima (é ghisa?) per inserire i sensori di luce e di movimento sul lato superiore.

Suoni

Da un vecchio giocattolo ho recuperato un speaker e ho scoperto che con alcune librerie é possibile emettere dei suoni senza ulteriori componenti, modulando in ampiezza l’onda quadra che di solito ci permette di fare solo dei brutti beep. Il risultato, seppure lontano da qualunque suono campionato, é migliore e in certi casi molto d’effetto, il suono di R2D2 di Star Wars (preso qui) e quello dei grilli (preso qui) su tutti. La libreria per gestire i suoni senza ulteriori componenti la trovate qui.

Orologio, Real Time Clock vs ESP8266

Volendo usare il tester come orologio e sveglia mi sono procurato dei circuiti dedicati Real Time Clock, prima ho provato ad utilizzare un DS1307, ma non vi sono riuscito, diversi utenti online dicono che sono moduli sbagliati e che per farli funzionare bisogna modificarli rimuovendo alcune resistenze e cortocircuitando alcuni pin, ho provato anche questo ma il DS1307 resta per me un mistero.
Sono poi passato ad un RTC DS3231 e con questo modulo sono riuscito a fare tutto, orologio e sveglia, ma restava il problema di come modificare l’ora a cui deve suonare la sveglia, oppure come aggiustate l’ora senza ricollegare. I controlli presenti, cioè le due manopole da sole, senza neanche un display se non una lancetta, non permettono la costruzione di un’interfaccia semplice per inserire i parametri.
Ho quindi sostituito il RTC con una ESP8266-01, programmata separatamente.

Dal punto di vista del software realizzato per il RTC è sufficiente inizializzare la classe con millis(), la funzione di clock interna ad ogni microprocessore e, tramite la ESP recuperare l’ora da internet e aggiustare di conseguenza l’ora. Seppure l’Arduino nano a cui tutti i componenti sono collegati diventa impreciso, c’è sempre l’ESP che recupera l’ora giusta da Internet e aggiorna l’orologio.

Comunicazione ESP-Arduino Nano

Comunicare con l’ESP via seriale e comandi AT è difficile. Nell’anno passato ho imparato a programmare direttamente la scheda ESP8266 e sostiture il firmware originale con del codice mio, studiato per collegarsi ad Internet e gestire un mini server web da usare come Access Point e poter ricevere delle configurazioni. L’ho quindi modificato per questo progetto, creando così un’interfaccia che permetta di inserire i dati per connettere al wifi di casa il tester, indicargli il sito da cui prendere l’ora, settare l’ora e i giorni in cui far funzionare la sveglia.
La scheda ESP, poi, è collegata tramite seriale all’Arduino Nano e viene interrogata con un set di comandi ristretto che permette di prelevare i dati e attivare l’access point per configurare il tester da telefono.

Componenti

Elenco componenti utilizzati (per prezzi migliori in realtà conviene spulciare Amazon o, se avete tempo, cercarli su Aliexpress o Banggood):

Schema del progetto

Essendo un progetto “vintage” ho fatto lo schem a matita su un vecchio quaderno!

Avete anche voi un vecchio tester? Provateci!

 

Sensore ultrasuoni Arduino: Riciclare una pistola giocattolo e fare una pistola ad ultrasuoni

Sensore ultrasuoni Arduino: Riciclare una pistola giocattolo e fare una pistola ad ultrasuoni

Le pistole sono sempre brutte, così diciamo subito che le armi non ci piacciono.

Questo non è un tutorial vero e proprio, ma un riassunto di un progetto nato per gioco.

Una vecchia pistola giocattolo, per altro con un suono molto fastidioso, può essere modificata in un misuratore di distanze. Diventa cioè una pistola ad ultrasuoni che fa come i pipistrelli, spara impulsi non udibili ad orecchio umano e legge il tempo che impiega l’ultrasuono per il ritorno dell’onda rimbalzata sull’ostacolo.

Dalla misura del tempo intercorso si puà calcolare la distanza dell’oggetto.

Occorrente:

  • Arduino Nano
  • sensore di ultrasuoni HC-SR04
  • display backpack 14 segmenti
  • due led e due resistenze
  • buzzer
  • pila 9V

Schema:

pistola-ultrasuoni

La parte di prototipazione fatela con la classica breadboard e l’Arduino Nano collegato al PC, seguendo lo schema qua sopra e utilizzando il programma che trovate più sotto. Una volta trovato l’equilibrio cominciate a cablare tutto con del filo elettrico. Noi abbiamo deciso di saldare il filo direttamente ai pin dei componenti, ma è stato un massacro. Molto più intelligente e conveniente è saldare solo dove è necessario e utilizzare dei comuni connettori femmina-femmina per collegare i componenti tramite i loro pin.

Man mano che collegate tutto con i fili vi troverete ad avere una matassa di fili e di componenti elettronici appoggiata sul tavolo, un bel casino. Già. Ma non perdetevi d’animo.

Aprite il giocattolo da riciclare (cosa che avrete già fatto, vero?), estraete tutta l’elettronica che non vi serve, mettete da parte qualche pezzo che magari utilizzerete altrove e tenete, in particolare, la parte di circuito costituita dal grilletto della pistola giocattolo a cui dovete collegare il vostro Arduino nano (ai pin Vin e GND).

Cercate di figurarvi dove piazzare i vari pezzi e provando un po’ cercate di incastrate il tutto, noi abbiamo dovuto rimuovere delle parti di plastica della pistola per permettere l’alloggiamento di una pila da 9V perché le 3 pile AAA da 1.5V con cui funzionava la pistola non fornivano abbastanza corrente per accendere il display, per cui abbiamo dovuto fare un po’ di spazio.

Ogni tanto mentre montate, provate a vedere se tutto funziona ancora. Per questo conviene montare/saldare tutti i fili a partire dall’alimentazione e quindi dal grilletto della pistola.

Man mano piazzate dei punti di colla a caldo per tenere un po’ fermi i fili, specie se avete dei contatti non isolati che potrebbero muoversi nel muovere il giocattolo, toccarsi e causare cortocircuiti fatali.

Ecco le varie parti inserite nella pistola giocattolo:

pistola-ultrasuoni-1-parti

Ricordatevi di non bloccare l’accesso alla porta micro usb del microcontroller (l’Arduino Nano nel nostro caso) perché potrebbe essere necessario ricollegarlo al computer per modificarne il programma.

Il programma che abbiamo fatto spara bip col buzzer, insieme al bip facciamo lampeggiare un led (led impulsi nell’immgine) e mandare impulsi con l’ultrasuono. Se riesce a fare 3 misure con un errore di più o meno un cm di fila allora mostra il risultato sul display.

Mentre fa le misure sul display fa un’animazione a caratteri, giusto per non farci mancare nulla.

Programma:

#include <Wire.h>
#include "Adafruit_LEDBackpack.h"
#include "Adafruit_GFX.h"

Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4();

int trigPin = 3;
int cic = 7;
int echoPin = A1;

void ledprint(char* str, Adafruit_AlphaNum4 *alphanum)
{
  int pos = 0;
  for (int index = 0; (index < strlen(str) && pos < 4); index++) //for each character in str
  {
    if ('.' == str[index+1]) //if the next character after this one is '.'
    {
      alphanum->writeDigitAscii(pos, str[index], true); //write the '.' along with the character
      index++; //skip over the '.'
    } else {
      alphanum->writeDigitAscii(pos, str[index]); //write the character
    }
    pos++;
  }
  alphanum->writeDisplay(); //write to the display.
}

void setup() {
  alpha4.begin(0x70); // pass in the address
  alpha4.clear();
  alpha4.writeDisplay();
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);
  pinMode(cic, OUTPUT);
  digitalWrite(cic,LOW);
}

String s[8] = {">   "," >  ","  > ","   >","   <","  < "," <  ","<   "};

void loop() {

  long duration, cm, cm0;
  unsigned int ok = 0;
  unsigned int i = 0;

  cm0 = 0;

  // loop to get 3 good measures, ok=0 1 2
  while (ok<=2) {
    // The sensor is triggered by a HIGH pulse of 10 or more microseconds.
    // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);

    // Read the signal from the sensor: a HIGH pulse whose
    // duration is the time (in microseconds) from the sending
    // of the ping to the reception of its echo off of an object.
    duration = pulseIn(echoPin, HIGH);

    // convert the time into a distance
    cm = duration / 29.1 / 2;

    if(cm>=500||cm<=0) {
      // noise
    } else {
      if(cm0!=cm && cm0!=cm+1 cm0!=cm-1) {
        // first good measure or found a bad measure
        cm0=cm;
        ok = 0;
      } else {
        // another good measure
        ok++;
      }
    }

    // display animation
    alpha4.clear();alpha4.writeDisplay();
    ledprint(s[i%8].c_str(),&alpha4);

    // beep and light
    analogWrite(cic,200);
    delay(4);
    analogWrite(cic,0);
    delay(110);

    i++;
  }

  // enaugh good measures found
  // display result
  alpha4.clear();alpha4.writeDisplay();
  String s;
  if(cm<100) {
    s = "cm";
    if(cm<10) s+=" ";
    s += String(cm);
  } else {
    s = "m"+String(float(cm)/100);
  }
  ledprint(s.c_str(),&alpha4);
  delay(3000);

}

Infortuni / cose che ho imparato:

  • potresti bruciare un Arduino Nano accidentalmente tenendolo appoggiato su una superificie piena di roba, con scampoli di fili elettrici in giro
  • se alimenti il sensore ad ultrasuoni direttamente con la pila potresti ottenere risultati random, se vuoi risultati corretti utilizza i 5V stabilizzati forniti dall’Arduino Nano
  • nel passaggio dalla breadboard alla prototipo funzionante con i vari componenti collegati e sganciato dal computer usa i connettori femmina-femmina o maschio-maschio, o mix di questi, non scegliere di saldare tutto, se non hai un buon saldatore potresti arrabbiarti molto
  • per bloccare i componenti in una posizione usa la colla a caldo, stai attento a non bloccarti l’accesso ai vari componenti, rimuovere la colla a caldo non è sempre semplice
  • il sensore ad ultrasuoni arriva ad un massimo di 5m, ma l’errore aumenta, ci vorrebbe o un sensore ad infrarossi o al laser per misurare con più precisione e ad una maggiore distanza
Costruire un photo booth con Arduino

Costruire un photo booth con Arduino

I ragazzi del MI AMI Festival (festival musicale che si svolge all’idroscalo di Milano) ci hanno invitato a realizzare qualcosa da far funzionare durante l’evento, abbiamo quindi costruito un photo booth, cioè una macchina fotografica automatica che si attiva quando qualcuno è nelle vicinanze, parla e poi scatta una foto. Le foto sono quindi caricate online sulla pagina Facebook del festival.

Per farlo abbiamo costruito un macchinone fotografico, il corpo è stato realizzato con del polistirolo espanso su cui abbiamo incollato la stampa (fatta su vinile adesivo) della grafica di un’icona di macchina fotografica. Il polistirolo è stato poi sagomato per seguire la forma della grafica.

photobooth arduinosharemakers-photobooth-arduino-paparazzi-1 photobooth arduino paparazzi-2

Sul retro è stato scavato un vano dove inserire tutta la parte elettronica. In particolare al suo interno dovrà stare un Arduino che controllerà luci e sensori e, grazie ad uno shield blutooth, comunicherà col telefonino. Il telefono è un cellulare Android che, con l’applicazione 1sheeld, viene utilizzato per scattare la foto, mandare l’audio alla cassa e caricare le foto su Internet.

sharemakers-photobooth-paparazzi-5sharemakers-photobooth-paparazzi-3

Sul lato frontale del photo booth sono stati realizzati i buchi per far uscire luci, obiettivo, sensori, flash e casse. In alcuni punti è stato necessario stampare delle parti in 3D di supporto ed estetiche per rendere più puliti alcuni tagli del materiale.

sharemakers-photobooth-paparazzi-6

Successivamente abbiamo montato la parte elettronica, prima le luci e poi tutto il blocco di Arduino preparato separatamente e assemblato in una comoda scatola per quadri elettrici.

WP_20160523_21_12_05_ProWP_20160525_21_17_55_Pro

E’ seguita quindi una sessione di tuning del software, parzialmente montato. Monta, smonta. Cambia, controlla, prova… Configura, controlla Facebook, cambia account, prova. Insomma, tutto come al solito. Non va, capisci, smonta, rimonta, aggiusta. La app 1sheeld non supporta la pubblicazione diretta in un album di una pagina Facebook, ci siamo quindi appoggiati al servizio IFTTT per ri-postare l’immagine su un album specifico della pagina del MI AMI Festival.

photobooth arduino macchina fotografica automatica per eventi

E’ stata infine inserita una base rigida per poter montare il photo booth su un cavalletto da fotografo. Il risultato è un figurone! La cassa è una sound bar orizzontale incastonata nella fascia nera.

photobooth arduino macchina fotografica automatica per eventi

Ed eccoci poi alla prova sul campo! (Nella foto le casse che si vedono non centrano col progetto)

photobooth arduino paparazzi-mi-ami-festival

Ed ecco qui alcune foto:

Come modificare lo zaino di scuola con Arduino

Come modificare lo zaino di scuola con Arduino

Con Arduino si possono modificare gli oggetti di uso comune e ricavarne prodotti originali, che distinguono i loro possessori dalla moltitudine. Un bell’esempio ci viene da questo ragazzino indiano, Vinayan Hari, che ha modificato il suo zaino di scuola inserendo sul retro una matrice di led pixel comandata da un Arduino, che utilizza un accelerometro per determinare se lo zaino è appoggiato per terra o in spalla metre cammini.

Quando lo zaino si muove il display a led inizia ad animarsi, quando lo appoggi il display si spegne. In questo caso l’animazione scelta mostra dei robottini pixellati di Space Invaders, ma quello che si può fare dipende solo dalla fantasia di ognuno. Ecco il risultato:

 

Il progetto (utile, anche, come luce dietro se vai in bici la sera) è semplice e l’occorrente è poco: pila da 9 volt, accelerometro, Arduino, matrice di led e cavetteria varia. Poi, magari, cucirlo all’interno dello zaino richiede l’aiuto della mamma. 🙂

 

 

dot matrix display stuff to use min

 

Il software e i dettagli del progetto sono sul sito indiano diyhacking.com.

 

 

figure min