Archivi tag: sensori

Progetto automazione e internet of things con Raspberry Pi

iot433-01
E’ da tempo che sto pensando di ristrutturare il laboratorio di domotica che ho nella mia scuola, aggiungendo agli apparati di note aziende del settore, anche sistemi fortemente open e gratuiti a basso costo e facilmente espandibile in modo che gli studenti possano poi avere uno spettro pi ampio sulle tecnologie disponibili. Ovviamente il lavoro per riformulare la didattica in tal senso enorme e quindi il mio intento era quello di assegnare una serie di tesine di maturit ad allievi di buona volont 🙂 tesine da usare come mattoni di partenza per aggiungere nei prossimi anni scolastici argomenti nuovi.

Fortunatamente ho avuto l’occasione di conoscere alcune settimane fa via e-mail Rocco Musolino, un bravissimo programmatore che mi ha inviato la segnalazione del suo splendido lavoro, che parte della sua tesi di laurea magistrale e tratta appunto del controllo di sistemi a 433mhz mediante Raspberry Pi, quindi se desiderate sperimentare “un vero IoT” provate il lavoro di Rocco Musolino, io lo far certamente con le mie classi 4′ e 5′ elettrici.

iot433-02

Grazie quindi a Rocco, che mi ha inviato la sua recensione che vi allego, per vi invito alla consultazione del suo sito su cui trovate un tutorial ben dettagliato che vi guider passo passo all’installazione del sistema.

Nelle prossime settimane sul sito di Rocco Musolino il PDF della tesi con il lavoro completo.

iot433-03

Di seguito la sua presentazione.

Il progetto iot-433mhz nasce con l’idea di offrire una dashboard o “centralina” di controllo per sensori e attuatori funzionanti sulla frequenza 433mhz, gi largamente diffusi sul mercato.
La dashboard costruita usando interamente tecnologie per il Web e rilasciata sotto licenza MIT, open source.
Persino l’unit di controllo, che gestisce la comunicazione seriale con il gateway di trasmissione radio (un arduino connesso a dei moduli radio operanti a 433mhz) realizzato in Javascript e basato su Node.js.

Node.js garantisce alte performance e un supporto multipiattaforma: Windows, Mac, Linux. Quindi se sul vostro sistema possibile installare Node.js ed il suo gestore di pacchetti NPM, allora il software pu tranquillamente essere installato velocemente ed eseguito senza alcun problema.

Sulla pagina git ufficiale del progetto presente la documentazione che meglio spiega come effettuare l’installazione sui vari OS e le relative dipendenze necessarie.
Sulla pagina dedicata all’Hardware invece, una panoramica sui moduli radio consigliati e i dispositivi radio con cui il software compatibile.
Sono molti i dispositivi radio con cui possibile interagire, prese telecomandate, sensori di movimento piroelettrici e sensori per porte e finestre magnetici.

La peculiarit del progetto, oltre a garantire una pratica dashboard di controllo, in linea con le guidelines di google sul Material Design, quella di aver la possibilit di sviluppare parallelamente un sistema che si appoggi alle API offerte da iot-433mhz, per estenderne le capacit o personalizzarne i casi d’uso.
Ogni singola API documentata sulla repository ufficiale. L’interazione immediata e da poco sono stati introdotti i webHooks, componenti che similmente alle API, estendono le capacit del sistema, permettono di registrare una URL all’interno del sistema stesso e far si che venga richiamata al verificarsi di un evento.

Un’altra feature interessante sono le notifiche Telegram. Telegram uno dei pochi client di messaggistica che permette la creazione di Bot automatici. Ogni istanza di iot-433mhz installata su un PC in grado di comunicare con un unico back-end che gestisce per l’appunto l’interazione con il bot telegram. Attivare le notifiche telegram per il proprio account semplice, basta andare nelle Impostazioni copiare la stringa che appare e incollarla al bot @my_iot_bot. Dunque ogniqualvolta un’allarme armata scatter, il sistema attraverso il bot di telegram lo far sapere all’utente in tempo reale.

Il progetto iot-433mhz attualmente giunto alla versione 1.0.24, e viene costantemente aggiornata per risolvere bug o introdurre nuove feature.
E’ utilizzabile in “produzione” e si contano gi oltre 1000 download (npm), 104 stars e 7 fork. Che non affatto male considerando si tratti di un progetto nuovo, altamente specifico, pensato per hobbysti e in generale appassionati di automazione e domotica.

Kit di sensori per sperimentazione con Arduino

Tutti i sensori in commercio necessitano di un circuito elettronico di contorno che ne permette l’interfacciamento al microcontrollore è quindi indispensabile per chi desidera effettuare sperimentazioni avere competenze elettroniche adeguate che certamente non si hanno per i molti (studenti, maker, ecc…) che incominciano ad utilizzare Arduino. Le difficoltà che si hanno nelle prime fasi di sperimentazione potrebbero essere superato considerando il sensore una black box di cui sappiamo qual’è la grandezza fisica che rilevano e quali sono le funzioni dei piedini da collegare alla scheda Arduino, questo metodo è praticamente identico a quanto già si fa a scuola utilizzando ad esempio i Lego Mindstorms, la concentrazione va sulla programmazione e non sul singolo componente, la tecnologia la si studia in una fase successiva, quando il percorso didattico lo permette. Il vantaggio principale nell’operare in questo modo è che si riesce ad implementare artefatti sufficientemente complessi che hanno come obiettivo quello di far percepire il proprio apprendimento e di accettare in una fase successiva la difficoltà nella comprensione dettagliata (interna) di ogni singolo circuito elettronico.
I motivi di questo mio operare inoltre si rifà ad una breve sperimentazione sulla dispersione scolastica in cui ho necessità di rimotivare alcuni allievi e quindi ho bisogno di offrire degli strumenti che possano dare immediatamente “soddisfazione” e voglia di costruire.
La “cavia” 🙂 per la mia progettazione, prima che i miei allievi, è stato il giovane liceale (mio figlio) che entra per la seconda volta come protagonista su queste pagine, infatti ho deciso di regalargli un kit di sensori estremamente interessante costituito da ben 37 sensori acquistato su Bangood ad un prezzo conveniente che in questo periodo inoltre risulta in offerta. Ho avuto modo di utilizzare tutti i sensori e ritengo che con questo kit potrete sviluppare una quantità elevata di esperimenti. Perché ho scelto questo kit? Ho analizzato diverse soluzioni su diversi store on-line, ma il rapporto qualità/prezzo risultava il migliore.
Per facilitarne l’utilizzo sto creando un breve manuale con gli sketch di base per utilizzare i vari sensori in modo che si possa in autonomia effettuare i primi esperimenti, li aggiungerò volta per volta anche perché li utilizzerò nei prossimi giorni anche a scuola.
Spero di rispondere, con questa mia proposta, a quanti in queste vacanze mi hanno chiesto consigli sulla dotazione di base per incominciare con Arduino pur avendo conoscenze scarse o nulle in elettronica.
Non entrerò nel dettaglio del funzionamento fisico, l’atteggiamento ora e nei successivi post, che parleranno di questo kit, sarà quello di descrizione dei mattoncini con gli sketch di esempio che potrete poi voi migliorare ed ampliare. All’interno degli sketch trovate la spiegazione sul funzionamento delle varie parti di codice.

scatola-sensori

sensori

Questa la lista dei sensori del kit (tratto dal sito Bangood)

1 x Active buzzer module
1 x Passive buzzer module
1 x Common cathode RED&GREEN LED module
1 x Two color common cathode LED module
1 x Knock sensor module
1 x Shock switch sensor module
1 x Photo resistor sensor module
1 x Push button module
1 x Tilt switch module
1 x RGB LED module
1 x Infrared transmit module
1 x RGB colorful LED module
1 x Hydrargyrum switch sensor module
1 x Colorful auto flash module
1 x Magnet-ring sensor module
1 x Hall sensor module
1 x Infrared receive sensor module
1 x Analogy hall sensor module
1 x Magic ring module
1 x Rotate encode module
1 x Light break sensor module
1 x Finger pulse sensor module
1 x Magnetic spring module
1 x Obstacle avoidance sensor module
1 x Tracking sensor module
1 x Microphone sensor module
1 x Laser transmit module
1 x Relay module
1 x Analog temperature sensor module
1 x 18b20 temperature sensor module
1 x Digital temperature sensor module
1 x Linear hall Sensor module
1 x Flame sensor module
1 x High sensitive voice sensor module
1 x Humidity sensor module
1 x Joystick PS2 module
1 x Touch sensor module

Una premessa necessaria prima di incominciare con la descrizione e l’utilizzo dei sensori del kit acquistato su Bangood e di dare qualche nozione su cosa sono i sensori e gli attuatori, in modo che sia più semplice procedere con la sperimentazione.

Riprendo quanto già pubblicato nelle mie slide

I sistemi elettronici per interagire con il mondo fisico, utilizzano:

  • sensori che hanno il compito di percepire quantità fisiche dell’ambiente
  • attuatori, dispositivi che compiono un’azione in funzione di ciò che è stato rilevato dal sensore ed elaborato da un circuito elettronico.

Sensori e attuatori vengono anche detti trasduttori.

Un trasduttore è quindi un dispositivo in grado di convertire una grandezza fisica in un’altra.

In generale i trasduttori che convertono grandezze fisiche in segnali elettrici saranno collocati in ingresso ad un circuito elettronico, come Arduino e vengono denominati sensori.

Trasduttori che a partire da segnali elettrici in ingresso permettono di controllare o modificare una grandezza fisica esterna sono detti attuatori.

Esempi di sensori

Il termometro a mercurio converte la variazione della temperatura nella variazione di lunghezza di una colonnina di mercurio.

termometro

Il microfono che converte il suono in segnale elettrico.

microfono

Sensori di luce: Fototransitor, fotodiodo, fotoresistenza, pannello solare. La variazione di luce viene convertita in una variazione di una grandezza elettrica: resistenza, corrente elettrica, ecc…

sensori-luce

Esempi di attuatori

L’altoparlante è un attuatore che converte un segnale elettrico in onde sonore per questo motivo viene anche definito come un trasduttore elettroacustico.

altoparlante

La molla converte una forza in uno spostamento lineare

molla

Potenziometro, converte uno spostamento lineare in una variazione di resistenza

potenziometro

Termistore, trasforma una temperatura in una variazione di impedenza.

termistore

Sensori del kit

BUZZER

I buzzer possono essere di due tipi: attivi e passivi
I buzzer attivi hanno al loro interno un’oscillatore che emetterà suono se vengono alimentati, mentre quelli passivi non posseggono un oscillatore interno e quindi per emettere suono è indispensabile fornire al buzzer un segnale ad onda quadra tra i 2Khz e i 5 Khz.

Sperimentazione Buzzer attivo

buzzer-passivo

schema-buzzer-passivo

  • Pin S del sensore collegato al pin 4 di Arduino
  • Pin sensore a GND di Arduino
  • Pin alimentazione sensore (centrale) collegato a +5V di Arduino

buzzer-passivo-foto

// Prof. Michele Maffucci
// 08.01.15
// Utilizzo del buzzer passivo

const int pinBuzzer = 4;
// pin a cui è collegato il buzzer

int frequenzaquenza;
// variabile in cui memorizzare il valore della frequenza

void setup()
{
  pinMode(pinBuzzer,OUTPUT); // inizializzazione del pin a cui è collegato il buzzer
}

void loop()
{
  for(int i = 200; i <= 1000; i++) // loop di frequenze da 200 a 1000 hz { tone(pinBuzzer,i); // viene emesso dal buzzer un suono a frequenza i delay(5); // attesa di 5 millisecondi (in modo da percepire il suono emesso) } delay(3000); // attesa di 3 secondi. La frequenza più alta sarà emessa per 4 secondi for(int i = 1000; i >= 200; i--)  // loop di frequenze da 100 a 200 hz
  {
    tone(pinBuzzer,i);   // viene emesso dal buzzer un suono a frequenza i
    delay(5);            // attesa di 5 millisecondi (in modo da percepire il suono emesso)   
  }
}

Sperimentazione Buzzer attivo

buzzer-attivo

schema-buzzer-attivo

  • Pin S del sensore collegato al pin 11 di Arduino
  • Pin sensore a GND di Arduino
  • Pin alimentazione sensore (centrale) collegato a +5V di Arduino

buzzer-attivo-foto

// Prof. Michele Maffucci
// 08.01.15
// Utilizzo del pinBuzzer attivo

const int pinBuzzer = 11;
// pin a cui è collegato il buzzer

void setup()
{
  pinMode(pinBuzzer,OUTPUT);  // inizializzazione del pin a cui è collegato il buzzer
}

void loop()
{
  int a,b;

  // la condizione del while è sempre vera "1" quini il ciclo sarà infinito
  // all'interno di ogni ciclo sul pin a cui è collegato il buzzer viene inviata
  // un segnale alto per x ms ed un segnale basso per y ms il periodo totale dell'onda
  // sarà T = x + y e quindi la frequenza sarà f = 1/T

  while(1)
  {
    // emissione di una segnale a frequenza di 500 hz
    for(a=0;a<80;a++)
    {
      digitalWrite(pinBuzzer,HIGH);
      delay(1);                      // attesa di 1 ms
      digitalWrite(pinBuzzer,LOW);
      delay(1);                      // attesa di 1 ms
    }
    // emissione di una segnale a frequenza di 250 hz
    for(b=0;b<100;b++)
    {
      digitalWrite(pinBuzzer,HIGH);
      delay(2);                  // attesa di 2 ms
      digitalWrite(pinBuzzer,LOW);
      delay(2);                  // attesa di 2 ms
    }
  }
} 

Sensore di battito

Il sensore di battiti vi permetterà di rilevare vibrazioni anche molto lievi, infatti è costituito da una piccolissima molla che posta in vibrazione chiude un contatto.

battito

schema-sensore-battito

  • Pin S del sensore collegato al pin 7 di Arduino
  • Pin sensore a GND di Arduino
  • Pin alimentazione sensore (centrale) collegato a +5V di Arduino

battitto-foto

// Prof. Michele Maffucci
// 08.01.15
// Sensore di battito

const int pinBattito = 7;    // pin a cui è collegato il il sensore
const int pinLed =  13;      // pin a cui è collegato il LED che rileva il battito
                             // viene usato il led L collegato al pin 13


int statoBattito = 0;        // variabile in cui memorizzare lo stato del sensore

void setup() {
  // inizializzazione del pin a cui è collegato il LED ad output
  pinMode(pinLed, OUTPUT);
  
  // inizializzazione del pin a cui è collegato il sensore ad input
  pinMode(pinBattito, INPUT);     
}

void loop(){
  // lettura dello stato del sensore
  statoBattito = digitalRead(pinBattito);

  // verifica se il sensore rileva un battito
  // il sensore è attivo basso
  
  // se rileva un battito il sensore è ad HIGH:
  if (statoBattito == LOW) {     
    // accendel il LED 
    digitalWrite(pinLed, HIGH);
    delay(1000);
  } 
  else {
    // spegne il LED:
    digitalWrite(pinLed, LOW); 
  }
}

Nelle prossime puntate la descrizione degli altri sensori.