Cerca codice

Codice Arduino e video per il modulo di distanza IR Sharp

Codice Arduino e video per il modulo di distanza IR Sharp

In questo tutorial esploreremo come utilizzare il modulo di distanza Sharp IR per misurare le distanze e attivare azioni in base alla distanza rilevata. Questo progetto mostrerà come configurare l'hardware e scrivere il codice Arduino per leggere le misurazioni di distanza e attivare un cicalino quando un oggetto viene rilevato entro un certo intervallo. Imparerai come collegare i componenti tra loro e comprendere gli identificatori chiave nel codice.

Sharpt IR distance sensor

Per questo progetto utilizzeremo un sensore Sharp IR che emette luce infrarossa e misura la distanza di un oggetto in base alla luce riflessa. Quando un oggetto viene rilevato entro la portata, il cicalino verrà attivato, offrendo un modo semplice ma efficace per dimostrare le capacità del modulo Sharp IR. Assicurati di guardare il video per una guida visiva sulla configurazione e sul codice (nel video a 00:00).

Hardware spiegato

Le componenti principali di questo progetto includono un sensore di distanza a infrarossi Sharp, una scheda Arduino e un buzzer. Il sensore Sharp IR è costituito da un trasmettitore e un ricevitore che lavorano insieme per misurare le distanze. Quando la luce infrarossa emessa dal trasmettitore colpisce un oggetto, viene riflessa al ricevitore, permettendogli di calcolare la distanza in base al tempo impiegato per il ritorno della luce.

L'Arduino funge da controllore, legge le misurazioni di distanza dal sensore IR e controlla il buzzer in base alle letture. Il buzzer suonerà quando un oggetto viene rilevato entro un intervallo specificato, rendendo questa configurazione utile per applicazioni come il rilevamento degli ostacoli nella robotica.

Dettagli della scheda tecnica

Produttoreacuto
Numero di parteGP2Y0A21YK0F
Tensione logica/IO5 V
Tensione di alimentazione4.5 - 5.5 V
Tensione di uscita0.4 - 2.5 V
Campo di misura10 - 80 cm
Tempo di risposta50 ms
Corrente di uscita20 mA
PacchettoModulo
Note / variantiDisponibile in più fasce di distanza

  • Assicurarsi di fornire un'alimentazione adeguata (4,5 - 5,5 V) per evitare danni.
  • Usa una resistenza per limitare la corrente, se necessario.
  • Mantieni il sensore pulito per misurazioni accurate.
  • Presta attenzione all'interferenza della luce ambientale.
  • Il cablaggio deve essere fissato saldamente per evitare connessioni intermittenti.

Istruzioni di cablaggio

Arduino wiring for Sharf IR distance sensor
Arduino wiring for Sharf IR distance sensor

Per collegare il modulo Sharp IR di distanza, collega il pin di massa del modulo al pin GND dell'Arduino. Poi collega il pin VCC del modulo al pin 5V dell'Arduino. Il pin di uscita del segnale del modulo Sharp IR dovrebbe essere collegato al pin 2 dell'Arduino, che leggerà i dati di distanza.

Per il buzzer, collega il pin più lungo (positivo) al pin 8 dell'Arduino e il pin più corto (negativo) al GND. Assicurati che tutte le connessioni siano sicure e che i componenti siano alimentati correttamente per garantire il corretto funzionamento.

Esempi di codice e guida passo-passo

Di seguito è riportato un breve estratto del codice Arduino in cui definiamo i pin e configuriamo il sensore. L'identificatoreIRè definito come il pin analogico utilizzato per il segnale del sensore.

#define IR A0 // define signal pin
SharpIR SharpIR(IR, model); // Initialize SharpIR with the defined pin

Questo codice inizializza il sensore IR Sharp sul pin analogico specificato. L'identificatoremodelspecifica il tipo di sensore utilizzato, che in questo caso è impostato su 1080 per il modello GP2Y0A21YK0F.

Nella funzione setup, avviamo la comunicazione seriale per monitorare le letture della distanza:

void setup() {
    Serial.begin(9600); // Initialize serial communication
    Serial.println("Robojax Sharp IR  "); // Print message to serial monitor
}

La funzione setup inizializza la comunicazione seriale a 9600 baud, permettendo all'Arduino di inviare i dati di distanza al Monitor seriale per l'osservazione.

All'interno della funzione loop, leggiamo la distanza dal sensore e la stampiamo:

void loop() {
    int dis = SharpIR.distance(); // Read the distance
    Serial.print("Mean distance: "); // Print distance to serial monitor
    Serial.println(dis); // Output the distance measurement
}

Questo estratto mostra come leggere continuamente la distanza e stamparla sul Monitor Seriale. La variabilediscontiene il valore della distanza misurato dal sensore IR Sharp.

Dimostrazione / Cosa aspettarsi

Quando la configurazione è completa, puoi aspettarti che il cicalino suoni ogni volta che un oggetto viene rilevato entro il raggio specificato del sensore Sharp IR. Il Monitor seriale mostrerà Distanza media insieme alla distanza misurata in centimetri. Se non ci sono oggetti nel raggio, il monitor lo indicherà comunque (nel video a 02:30).

Gli errori più comuni riguardano il corretto allineamento del sensore e l'assenza di ostruzioni che blocchino il segnale infrarosso. Inoltre, verificare che l'alimentazione sia stabile per evitare letture erratiche.

Marcatori temporali del video

  • 00:00- Introduzione al progetto
  • 02:30- Dimostrazione della funzionalità del sensore
  • 03:45- Spiegazione del cablaggio
  • 05:00- Revisione del codice

Immagini

Sharpt IR distance sensor GP2Y0A21YK0F
Sharpt IR distance sensor GP2Y0A21YK0F
Arduino wiring for Sharf IR distance sensor
Arduino wiring for Sharf IR distance sensor
Sharpt IR distance sensor
Sharpt IR distance sensor GP2Y0A21YK0F
69-This is the Arduino code and video for a Sharp Infrared Sensor Module
Lingua: C++
/*
 * Sharp IR (infrared) distance measurement module for Arduino
 * Measures the distance in cm.

 * Original library: https://github.com/guillaume-rico/SharpIR

 * Watch video instruction for this code: https://youtu.be/GL8dkw1NbMc
 *
 * Full explanation of this code and wiring diagram is available at
 * my Arduino Course at Udemy.com here: http://robojax.com/L/?id=62

 * Written by Ahmad Shamshiri on Feb 03, 2018 at 07:34
 * in Ajax, Ontario, Canada. www.robojax.com
 *

 * Get this code and other Arduino codes from Robojax.com
 Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
 all in one place. 

 If you found this tutorial helpful, please support me so I can continue creating
 content like this. 

 or make a donation using PayPal http://robojax.com/L/?id=64

 *  * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

*/




 */
  // Sharp IR code for Robojax.com
#include <SharpIR.h>

#define IR A0 // define signal pin
#define model 1080 // used 1080 because model GP2Y0A21YK0F is used
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
// model: an int that determines your sensor:  1080 for GP2Y0A21Y
//                                            20150 for GP2Y0A02Y
//                                            430 for GP2Y0A41SK
/*
2 to 15 cm GP2Y0A51SK0F	use 1080
4 to 30 cm GP2Y0A41SK0F / GP2Y0AF30 series	use 430
10 to 80 cm GP2Y0A21YK0F	use 1080
10 to 150 cm GP2Y0A60SZLF	use 10150
20 to 150 cm GP2Y0A02YK0F	use 20150
100 to 550 cm GP2Y0A710K0F	use 100550

 */

SharpIR SharpIR(IR, model);
void setup() {
    // Sharp IR code for Robojax.com
 Serial.begin(9600);
 Serial.println("Robojax Sharp IR  ");
}

void loop() {
    // Sharp IR code for Robojax.com
    delay(500);

  unsigned long startTime=millis();  // takes the time before the loop on the library begins

  int dis=SharpIR.distance();  // this returns the distance to the object you're measuring

  // Sharp IR code for Robojax.com

  Serial.print("Mean distance: ");  // returns it to the serial monitor
  Serial.println(dis);
  //Serial.println(analogRead(A0));
  unsigned long endTime=millis()-startTime;  // the following gives you the time taken to get the measurement
 Serial.print("Time taken (ms): ");
 Serial.println(endTime);
     // Sharp IR code for Robojax.com

}

Cose di cui potresti avere bisogno

Risorse e riferimenti

File📁

Librerie Arduino (zip)

File Fritzing