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:

  1. Arduino Uno
  2. Cavi rigidi di 3-4 colori
  3. Un sensore sonico
  4. Uno o più led ad alta luminosità
  5. Un caricabatterie usb da cellulare, dal costo contenuto. Ongi tanto nei supermercati trovate offerte per caricabatterie sotto i 10€.
  6. 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.

arudino_egg_effect1

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 menoQuesto 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

IMG_2013

 

 

Posts in arduino

  1. Arduino: un successo italiano // Feb 12, 2011
  2. Arduino: partire da zero // Feb 24, 2011
  3. Arduino vede e provvede // Mar 3, 2011
  4. Arduino la sfida embedded per il Software Architect // Mar 10, 2011
  5. Arduino unit testing // Mar 14, 2011
  6. Arduino Car // Mar 20, 2011
  7. Arduino Ruby Development // Jul 18, 2011
  8. Arduino Launches New Stuff! // Sep 18, 2011
  9. Arduino Esplora // Dec 13, 2012
  10. Arduino EggBoxLamp // Oct 9, 2014
  11. Arduino Real Time EggBox // Oct 15, 2014
  12. Arduino programmazione avanzata: makefile! // Jan 26, 2015
  13. Arduino Starter Kit: Prime impressioni // Feb 15, 2015
  14. Egg box con Sensore sonico // Mar 27, 2015
  15. Arduino Stereo sid // Apr 6, 2015
  16. RaspberryPi 2: The perfect box for your backpack // Jul 21, 2015
  17. BBC Micro bit: first look // Sep 8, 2016
  18. Arduino Real Time OS Evolution (flash news) // Feb 7, 2017
  19. Arduino timers // Nov 12, 2023
  20. Stero Sid 2.0.7: Arduino 2.x and license update // Nov 12, 2023
  21. Arduino uno e ATMega328p // Nov 16, 2023
  22. Arduino UNO R4 Wi-Fi // Nov 27, 2023
  23. Small Lamp NoeBoat with Arduino Uno R3 and FreeRTOS // Dec 3, 2023
  24. Arduino, open source e futuro // Dec 24, 2023