Egg box con Sensore sonico
Costruiamo una lampada luminosa con Arduino, un sensore sonico ed…una scatola di uova :)
Come abbiamo già visto le scatole traslucide per il trasporto delle uova sono un ottima base per creare piccole lampade, per diverse ragioni:
- sono facili da trovare
- sono leggere
- sono abbastanza rigide
- possono essere incollate con del Vinavil (strano ma vero)
Questa versione di eggbox è composta da una sola scatola da quattro uova e da un sensore sonico che potete trovare su amazon per meno di 5€. In realtà il suo prezzo dovrebbe essere meno di 3€, ma considerando l’affidabilità di Amazon (viene recapitato in meno di 3 giorni e senza costi di spedizione) è ancora un prezzo accettabile.
Cosa vi serve:
- Arduino Uno
- Cavi rigidi di 3-4 colori
- Un sensore sonico
- Uno o più led ad alta luminosità
- Un caricabatterie usb da cellulare, dal costo contenuto. Ongi tanto nei supermercati trovate offerte per caricabatterie sotto i 10€.
- Un paio di mini breadboard.
Arduino uno viene montato al contrario sulla superficie piana della scatola di uova:per tenerlo in posizione vengono creati 4 buchi da cui vengono passati quattro fili rigidi da connettere al sensore sonico
Inoltre su un lato viene fatto un buco per far passare il cavo USB, che verrà alimentato con batteria USB.
Il codice che ho progettato è una variante di un esempio d’uso del sensore sonico, ed è integrato con NilRTOS, di cui ho già ampiamente parlato.
Il sensore ha bisogno di 4 connessioni e non tre come il Ping ma non richiede pin PWM e costa sei volte di meno…Questo tutorial è molto chiaro e pure in italiano.
Le connessioni sono l’alimentazione da 5volt, la massa e due pin Trigger e Echo. Inviando un valore su Trigger si legge il risultato su Echo.
[code lang=“cpp”] //HC RS04 Sensore ultrasuoni const int triggerPort = 7; const int echoPort = 8; const int blueLed=11; const int maxDistCm=28; #include #include
void setup() {
pinMode( triggerPort, OUTPUT ); pinMode( echoPort, INPUT ); pinMode( blueLed, OUTPUT); Serial.begin( 9600 ); Serial.println( "Sensore ultrasuoni: "); nilSysBegin(); }
void loop() { //nilPrintUnusedStack(&Serial); //Serial.println(); }
NIL_WORKING_AREA(waUltrasonicSensor, 64); NIL_THREAD(UltrasonicSensor,arg){ static long lastValue=0; while(true) { //porta bassa l’uscita del trigger digitalWrite( triggerPort, LOW );
//invia un impulso di 10microsec su trigger digitalWrite( triggerPort, HIGH ); delayMicroseconds( 10 ); // nilThdSleepMicorseconds digitalWrite( triggerPort, LOW );
long duration = pulseIn( echoPort, HIGH );
long r = 0.034 * duration / 2; if(r != lastValue){
Serial.print( "durata: " );
Serial.print( duration );
Serial.print( " , " );
Serial.print( "distanza: " );
//dopo 38ms è fuori dalla portata del sensore
if( duration > 38000 ) Serial.println( "fuori portata");
else {
Serial.print( r ); Serial.print( "cm" );
Serial.print(" ");
nilPrintUnusedStack(&Serial);
if(r <=maxDistCm && r>=5 ){
int v=map(r,5,maxDistCm,0,255);
Serial.print( v );
Serial.print(" LED ");
analogWrite(blueLed, v);
}
}
lastValue=r;
} //aspetta mezzo secondo ca /* we suggest to use over 60ms measurement cycle, in order to prevent trigger sign al to the echo signal / nilThdSleepMilliseconds( 602 ); } }
NIL_THREADS_TABLE_BEGIN() NIL_THREADS_TABLE_ENTRY(NULL /TH NAME/, UltrasonicSensor, NULL, waUltrasonicSensor, sizeof(waUltrasonicSensor)) NIL_THREADS_TABLE_END() [/code]
Il codice dello sketch è molto semplice ma non fatevi ingannare: difatti consente di impostare la luminosità avvicinando od allontanando la mano, ma se la si solleva di scatto il valore impostato rimarrà fisso. Difatti se il valore letto (=la distanza letta) supera la toleranza di 20cm il sistema non fa nulla, ed il led rimane dell’intensità selezionata.
Il sensore poggia sulla mini breadboard e non c’è bisogno di alcuna saldatura, a patto di avere fili della giusta lunghezza e ben tirati.
E’ possibile aggiungere altri led che pulsano con effetti differenti
Posts in arduino
- Arduino: un successo italiano // Feb 12, 2011
- Arduino: partire da zero // Feb 24, 2011
- Arduino vede e provvede // Mar 3, 2011
- Arduino la sfida embedded per il Software Architect // Mar 10, 2011
- Arduino unit testing // Mar 14, 2011
- Arduino Car // Mar 20, 2011
- Arduino Ruby Development // Jul 18, 2011
- Arduino Launches New Stuff! // Sep 18, 2011
- Arduino Esplora // Dec 13, 2012
- Arduino EggBoxLamp // Oct 9, 2014
- Arduino Real Time EggBox // Oct 15, 2014
- Arduino programmazione avanzata: makefile! // Jan 26, 2015
- Arduino Starter Kit: Prime impressioni // Feb 15, 2015
- Egg box con Sensore sonico // Mar 27, 2015
- Arduino Stereo sid // Apr 6, 2015
- RaspberryPi 2: The perfect box for your backpack // Jul 21, 2015
- BBC Micro bit: first look // Sep 8, 2016
- Arduino Real Time OS Evolution (flash news) // Feb 7, 2017
- Arduino timers // Nov 12, 2023
- Stero Sid 2.0.7: Arduino 2.x and license update // Nov 12, 2023
- Arduino uno e ATMega328p // Nov 16, 2023
- Arduino UNO R4 Wi-Fi // Nov 27, 2023
- Small Lamp NoeBoat with Arduino Uno R3 and FreeRTOS // Dec 3, 2023
- Arduino, open source e futuro // Dec 24, 2023