Archivi tag: arduino

Usare i relè non è stato mai così semplice

Le attività che gli studenti mi propongono sono tantissime e sovente capita che alcune proposte, oltre ad essere spendibili da un punto di vista pratico, mi aiutino ad impostare una futura didattica fatta di oggetti che in altro modo verrebbero dismessi o gettati in un angolo a prender polvere.
E’ questo il caso di un vecchio panello di pneumatico che qualche anno fa veniva utilizzato collegato a dei vecchi PLC, negli anni si sono perse diverse componenti e per l’italico disinteresse è stato riposto in un angolo del laboratorio.
Fortunatamente la volontà caparbia e positiva di due mie allievi di 5′, Michael e Vlad, con l’aiuto dell’amico collega Piergiuseppe, ha rimesso in attività il dispositivo. L’idea, nata dal suggerimento dei ragazzi è quella di mostrare come poter pilotare una serie di pistoni usando relè pneumatici e finecorsa, con controllo fatto sia con PLC che con Arduino, ciò mi permetterà, come loro stessi mi hanno chiesto di fare 🙂 di mostrare come è possibile governare oggetti “industriali” (i pistoni) programmando in LADDER con i PLC oppure in C con Arduino. Perchè non raccogliere questa splendida idea e farne una cosa utile?

pannello-in-costruzione-01

pannello-in-costruzione-02

Mentre l’attenzione dei ragazzi in questo momento è concentrata sulla sistemazione del pannello, io ho cercato una soluzione a bassissimo costo e di immediato utilizzo per interfacciare velocemente Arduino ad una serie di relè che mi potesse governare l’attivazione di una serie di contatti.
L’idea iniziale prevedeva la realizzazione di una scheda con una serie di relè e componentistica accessoria di cui dovevo realizzare un semplice PCB, ma una rapida ricerca mi ha permesso di trovare una soluzione migliore, sia dal punto di vista economico che dal punto di vista di praticità in classe, ho optato per l’acquisto della scheda: 8 Channel 5V Relay Module For Arduino UNO 1280 2560 ARM PIC acquisto fatto su Bangood.
La scheda è composta da ben 8 relè costituiti ciascuno un contatto normalmente aperto ed uno normalmente chiuso, il cui circuito di comando è a 5V e quindi direttamente pilotabile dalle uscite di Arduino, sul circuito di potenza potete collegare dispositivi funzionanti ad una tensione massima di 250VCA 10A oppure 30VCC 10A. Ho effettuato una semplice prova pilotando una striscia led alimentata a 12VCC.

rele01

rele02

La scheda è dotata di 12 pin:

  • da IN1 a IN8 abbiamo i comandi dei singoli relè, questi ingressi saranno collegati alle uscite digitali di Arduino
  • Vcc collegato a 5Vcc di Arduino
  • GND collegato al GND di Arduino
  • COM e GND ponticellati tra loro

La scheda dispone, per ciascuno dei relè, di un led che ne mostra l’attivazione.

Nell’esempio riportato di seguito i collegamenti tra scheda Arduino e scheda relè sono:

Arduino -> Scheda relè
Pin3    -> IN1
Pin4    -> IN2
Pin5    -> IN3
Pin6    -> IN4
Pin7    -> IN5
Pin8    -> IN6
Pin9    -> IN7
Pin10   -> IN8
5Vcc    -> VCC
GND     -> GND

rele04

rele03

Sketch di esempio:

// Prof. Michele Maffucci
// 06.02.15
// Esempio di attivazione sequenziale di 8 relè

// inizializzazione delle 8 uscite digitali dalla 2 alla 9
void setup() {
  for (int i=2; i<10; i++) {
    pinMode(i, OUTPUT);
  }
}

void loop() {
  for (int r=2; r<10; r++) { // sequenza di attivazione e disattivazione dei contatti degli 8 relè 
    digitalWrite(r, HIGH);
    delay(250);
    digitalWrite(r, LOW);
    delay(250);
  }
}

Controllo accensione di una striscia led a 12Vcc

rele05

Stampe 3D del fine settimana – Arduino essential starter kit

Ho la fortuna di avere a casa e a scuola laboratori ben forniti per svolgere attività di sperimentazione con Arduino, ma il trasporto della componentistica mi costringe molto spesso a portare con me parecchio materiale e non nego che molto spesso esagero. Schede cavi e componenti che ci si porta a spasso nella borsa che spesso sfuggono negli angoli più nascosti.
Per l’esigenza giornaliera a scuola è necessario pochissimo il giusto necessario per impostare una lezione o per scrivere un post sul blog durante un momento di pausa, quindi non è necessario portare con se un intero laboratorio, diverso ovviamente è quando effettuo corsi privati dove ho necessità di portarmi molto materiale. Fino ad oggi avevo utilizzato una soluzione migliorata nel tempo che mi permetteva di portare con me il kit di sopravvivenza di sperimentazione 🙂 qualche anno fa ne avevo fatto un tutorial: Costruire una basetta sperimentale estesa portatile per circuiti elettronici, ma ho la necessità di avere qualcosa di più contenuto che possa essere agevolmente trasportato tra libri e registri nello zaino, per farla breve un Essential Arduino Starter kit.
Ho incominciato a progettare soluzioni da stampare in 3D, ma prima di me qualcuno ci ha pensato, una soluzione brillante che per ora considero la migliore per le mie necessità e la consiglio: The Folding Arduino Lab di Jason Welsh che ringrazio.
Quindi in questo fine settimana ho provveduto a stamparmi questo laboratorio tascabile e per me che amo piccoli attrezzi multifunzione (dai coltellini victorinox ai set di cacciavite e minuterie) avere anche un micro laboratorio trasportabile sempre a portata di mano è… concedetemelo… divertente 🙂

…piccoli vezzi

Esercizio Arduino in 5 minuti – usare un Sensor Tracking

Continuo la recensione del kit sensori di cui avevo parlato qualche giorno fa con questo breve post che nasce dall’esigenza di un lettore del blog che mi ha chiesto come utilizzare il sensor tracking incluso nella confezione. Il sensore si presenta come una piccola scheda elettronica i cui componenti principali sono costituiti da un led emettitore ad infrarossi ed un ricevitore.
Un’applicazione in cui io sfrutto questo sensore è ad esempio per la realizzazione di robot segui linea o ancora per realizzare un contagiri e controllare la velocità di rotazione dei miei prototipi robotico.
Potrete ad esempio di distinguere, per brevi distanza dal sensore, le differenze bianco/nero incontrate su una superficie. Su un apposito pin verrà emesso un segnale di tipo TTL che andremo a leggere con Arduino.

Il sensore è costituito da tre pin, GND, OUT (il segnale) e Vcc.
La sensibilità del sensore può essere regolata mediante un apposito trimmer.

Sensor-Tracking-03

Nell’esempio descritto, per avere percezione visiva e sonora della transizione tra bianco e nero ho utilizzato un led connesso al pin 12 ed buzzer connesso al pin 7. Utilizzerò un foglio bianco su cui ho disegnato due strisce nere.

Sensor-Tracking-01

Sensor-Tracking-02

Collegamenti:

Sensore – Arduino:

pin segnale OUT -> pin digitale 7
– negativo -> GND
+ positivo -> 5V

Buzzer – Arduino

pin segnale S -> pin digitale 4
+ positivo -> 5V
– negativo -> GND

Lo sketch è estremamente semplice è dovrete semplicemente verificare la presenza dello stato HIGH sul pin 7 di Arduino, accendere il led se si è sulla linea nera ed emettere un suono, oppure se si è sul bianco spegnere il led e non emettere suono.

// Prof. Michele Maffucci
// 25.01.15
// Utilizzo di un Sensor Tracking e di un buzzer passivo

const int pinSensore = 7;
// pin a cui è collegato il sensore

const int pinLed = 12;
// pin a cui è collegato il led

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

const int frequenza = 440;
// frequenza emessa dal buzzer (440 Hz)

void setup()
{
  // inizializzazione del pin sensore, led e buzzer
  pinMode(pinSensore, INPUT);
  pinMode(pinLed, OUTPUT);
  pinMode(pinBuzzer,OUTPUT);
}

void loop()
{
  // conserviamo nella variabile var lo stato del sensore
  int val = digitalRead(pinSensore);

  // verifichiamo se viene letto "NERO"
  // se vero accendiamo il led
  if(val == HIGH)
  {
    digitalWrite(pinLed, HIGH);   // accende il led
    tone(pinBuzzer, frequenza);   // viene emesso dal buzzer un suono a frequenza fissata
    delay(5);                     // attesa di 5 millisecondi (in modo da percepire il suono emesso)   
  }
  // altrimenti spegniamo il led
  else
  {
    digitalWrite(pinLed, LOW);   // spegne il led
    noTone(pinBuzzer);           // non viene emesso nessun suono dal buzzer
  }
}

I miei prossimi corsi: creazione di comunità di apprendimento on-line, creative computing, coding

corsiNei prossimi mesi sarò occupato con diversi corsi sia di carattere tecnico elettronico, che di carattere didattico. Sicuramente vi saranno corsi di Arduino a cui aggiungerò sperimentazioni di forte interesse che nascono dalle richieste di chi ha seguito in passato i miei corsi, ma anche dai molti che mi scrivono ogni giorno. Introdurro sicuramente altre tecnologie che sto sperimentando in questi mesi a scuola e che si integrano con Arduino. Le date per questi corsi sono in via di definizione e ve ne darò comunicazione nei prossimi giorni.

Per quanto riguarda i corsi indirizzati ai Docenti della Provincia di Torino ho certezza di date ed incomincio a segnalarvi gli appuntamenti in cui sarò relatore tra febbraio ed aprile prossimo e che avranno una replica, come già mi è stato richiesto dal MIUR, in questo anno solare.

Il corso per i docenti è organizzato dal CTS (Centro Territoriale di Supporto – Nuove Tecnologie e Disabilità) di Torino e Provincia in collaborazione con l’UST di Torino – Ufficio Inclusione organizza un corso, strutturato a moduli, sull’utilizzo di software volti a promuovere la didattica inclusiva.

Destinatari: docenti di sostegno e curriculari provenienti da scuole di ogni ordine e grado di Torino e Provincia.

Metodologie: il corso si svolgerà con metodologia laboratoriale.

Contenuti e calendario

Corso 1: Edmodo

Date del corso: 10/02/2015 – 19/02/2015

Orario: 14.30-17.30

Argomento: Utilizzo dell’applicativo web gratuito Edmodo: sistema adatto per la creazione di comunità di apprendimento, che permettono di lavorare e mantenere contatti tra studenti, insegnanti e genitori, e per la realizzazione di una didattica con metodologia blended.

Modulo 2: Insegnare a progettare

Date del corso: 26/02/2015 – 5/03/2015 – 12/03/2015 – 18/03/2015

Orario: 14.30-17.30

Argomento: Predisposizione di esempi pratici e applicabili in classe volti al miglioramento delle competenze logico-matematiche e delle capacità organizzative degli allievi mediante l’uso di software di programmazione con forte grado di interattività, opensource e gratuiti.
Si mostrerà come il “Creative Computing” possa agevolare lo sviluppo del pensiero strutturato (computational thinking) assieme al pensiero creativo mediante la programmazione.

Modulo 3: Scratch

Date del corso: 26/03/2015 – 16/04/2015 – 23/04/2015 – 30/04/2015

Orario: 14.30-17.30

Argomento: Introduzione ad un metodo laboratoriale basato sul software Scratch che offre agli studenti la possibilità di insegnare a progettare il proprio apprendimento attraverso l’informatica e ad acquisire la consapevolezza che è possibile interagire con gli strumenti tecnico informatici non solo in maniera passiva, ovvero usandoli, ma anche in maniera attiva, cioè programmandoli direttamente.

Il corso si svolgerà nel laboratorio della sede Arduino dell’ITSSE “C. Levi – V. e L. Arduino”, in via Figlie dei Militari, 25 – Torino.

Le iscrizioni potranno essere effettuate per ogni singolo modulo in modo indipendente. Esse devono pervenire entro il giorno 2 febbraio 2015, utilizzando il form presente al seguente

LINK

L’elenco degli ammessi sarà pubblicato sul sito www.necessitaeducativespeciali.it il giorno 5 febbraio 2015.

Saranno ammessi un massimo di 30 docenti per ogni corso in base all’ordine di arrivo delle domande.

IMPORTANTE: E’ NECESSARIO CONTROLLARE DI ESSERE STATI AMMESSI PRIMA DI VENIRE AGLI INCONTRI.

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.