Cosa è Microbit

Microbit (scritto più correttamente micro:bit) è essenzialmente una scheda elettronica dotata di microprocessore, cioè è come la scheda Arduino più nota nel mondo dei makers.

Se volete acquistarla costa circa 30 euro su Amazon (durante i nostri laboratori di coding la scheda viene fornita dallo Share Makerspace).

Microbit è quindi un microcomputer che si può programmare tramite il computer, collegandolo semplicemente con un cavetto USB. Per programmare Microbit si utilizza il linguaggio a blocchi, come quello di Scratch, che abbiamo usato anche nei laboratori di coding dentro a Minecraft.

La potenza di Microbit, rispetto alla scheda Arduino, è nei sensori e nei dispositivi che ha già incorporati e che la rendono, quindi, molto interessante anche per tutti i makers adulti (i più esperti possono programmarla anche con altri linguaggi).

La scheda si presenta così:

Come è fatto micro:bit / è grande circa 5cm x 4cm

Oltre al microprocessore, ci sono 25 led che costituiscono una matrice di luci da utilizzare a proprio piacere, ci sono due bottoni programmabili, è dotata di bluetooth per comunicare con altre schede, ha un sensore di temperatura, un sensore di luce, ha un accelerometro quindi può misurare i movimenti e ha un magnetometro quindi può essere utilizzata come bussola. Come se non bastasse ha dei pin per collegare sensori e dispositivi esterni.

Questo gioiellino di elettronica è nato in Gran Bretagna da un progetto della BBC per la diffusione della cultura informatica nelle scuole, è infatti tutto pensato per i più piccoli: dalla comunicazione del prodotto, alla programmazione, alla connettività, fino alla community degli utenti (sul sito sono anche raccolti i progetti di ragazzi, studenti e professori).

Laboratori di coding con Microbit a Cusano Milanino, Milano

Organizziamo periodicamente dei laboratori di coding per bambini e ragazzi, la cui durata e specificità sono indicate di volta in volta nel programma dei nostri appuntamenti. Cerchiamo di costruire i laboratori sempre in modo diverso, per offrire stimoli nuovi nell’utilizzo della tecnologia e dell’informatica.

Cosa è il tinkering? Cosa è il coding?

Tinkering e coding sono due attività diverse, ma possiamo considerarle complementari perché riguardano aspetti diversi dell’essere makers (nel senso proprio di “fare le cose”).

Tinkering in inglese è il verbo per descrivere l’armeggiare, il fare un po’ casereccio, per sistemare le cose di casa manualmente, come facevano un po’ i nonni che erano per necessità costretti a sapere aggiustare un po’ tutto. Nel gergo moderno dei laboratori dei makers il tinkering è l’evoluzione dei lavoretti di carta, forbici, colla, a cui si possono aggiungere pile, luci, suoni e motorini.

Coding è l’attività di sviluppo del codice, dei programmi, non è manuale come il tinkering, ma è anzi pragmatica e rigorosa, bisogna sapere un po’ di teoria e bisogna fare pratica. Il coding è il linguaggio di programmazione che definisce le istruzioni ripetibili, degli ordini passo passo che un computer può eseguire per svolgere un compito, partendo da A e arrivando a B.

Tinkering e coding non si trovano spesso insieme, ma si possono incontrare nell’uso di sistemi come Arduino, perché facendo un programma e caricandolo su una scheda Arduino si possono muovere motori, accendere luci e utilizzare sensori per interagire col mondo reale, motori e sensori che sono inseriti su oggetti costruiti in casa, assemblati alla meglio utilizzando il materiale che c’è a disposizione, proprio come avviene nel tinkering.

L’arte di arrangiarsi, di mettere a posto le cose, si unisce alla capacità di sviluppare codice, istruzioni che formano programmi che fanno cose nel mondo reale.

Alcune immagini da un laboratorio di Tinkering allo Share Makerspace di Cusano Milanino:

16 marzo: Startup

16 marzo: Startup

Parole allo Share” è la rassegna di incontri scientifico divulgativi dello Share Makerspace di Cusano Milanino. Ogni venerdì sera ci incontriamo per discutere degli argomenti tecnologici più caldi, soddisfare la nostra voglia di conoscenza e fare networking nell’area del Nord Milano.

Gli incontri si terranno alla sede dell’associazione Share Makerspace a Cusano Milanino in via Zucchi 39/G (area ex-Gerli). L’appuntamento è aperto a tutti, ogni venerdì dalle 19.30 per due mesi. Ogni incontro sarà preceduto da un breve aperitivo e poi dalle 20.30 alle 21.30 parleremo dell’argomento scelto. L’incontro è gratuito per gli associati e la tessera costa 10 euro.

L’argomento del 9 marzo: Startup

Parleremo di Startup, le aziende ad alto contenuto tecnologico e innovativo che partono da un’idea, piccole aziende che crescono rapidamente. Cercheremo di capire i meccanismi della scalabilità, parleremo delle risorse e dei loro obiettivi guardando esempi di idee che hanno funzionato raccontate da un esperto, Matteo Bogana di PoliHub.

 

Il relatore: Matteo Bogana

Matteo Bogana ha oltre 15 anni di esperienza nel mercato digitale e nel settore high-tech presso grandi multinazionali americane e gruppi italiani. E’ coordinatore di Polihub, l’incubatore di aziende del Politecnico di Milano che sostiene le startup altamente innovative ed è ovviamente impreditore, essendo CEO di Cleafy la sua startup che si occupa di sicurezza in ambito informatico.

 

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