Szukaj kodu

Kod Arduino i wideo dla modułu odległościowego Sharp IR

Kod Arduino i wideo dla modułu odległościowego Sharp IR

W tym samouczku dowiemy się, jak używać modułu pomiaru odległości Sharp IR do mierzenia odległości i wyzwalania akcji na podstawie wykrytej odległości. Ten projekt pokaże, jak skonfigurować sprzęt i napisać kod Arduino do odczytu pomiarów odległości oraz aktywacji brzęczyka, gdy obiekt zostanie wykryty w określonym zakresie. Nauczysz się, jak połączyć komponenty i zrozumiesz kluczowe identyfikatory w kodzie.

Sharpt IR distance sensor

Do tego projektu użyjemy czujnika Sharp IR, który emituje światło podczerwone i mierzy odległość do obiektu na podstawie odbitego światła. Gdy obiekt zostanie wykryty w zasięgu, brzęczyk zostanie wyzwolony, co stanowi prosty, ale skuteczny sposób na zademonstrowanie możliwości modułu Sharp IR. Koniecznie obejrzyj wideo, aby zobaczyć wizualny przewodnik po konfiguracji i kodzie (na wideo w 00:00).

Wyjaśnienie sprzętu

Główne komponenty tego projektu to czujnik odległości Sharp IR, płytka Arduino i brzęczyk. Czujnik Sharp IR składa się z nadajnika i odbiornika, które współpracują ze sobą w celu pomiaru odległości. Gdy światło podczerwone z nadajnika trafi na obiekt, odbija się z powrotem do odbiornika, co pozwala obliczyć odległość na podstawie czasu potrzebnego na powrót światła.

Arduino działa jako kontroler, odczytując pomiary odległości z czujnika IR i sterując brzęczykiem na podstawie odczytów. Brzęczyk będzie emitował dźwięk, gdy obiekt zostanie wykryty w określonym zakresie, co czyni tę konfigurację przydatną w zastosowaniach takich jak wykrywanie przeszkód w robotyce.

Szczegóły z karty katalogowej

ProducentSharp
Numer częściGP2Y0A21YK0F
Napięcie logiczne/IO5 V
Napięcie zasilania4,5 – 5,5 V
Napięcie wyjściowe0,4 – 2,5 V
Zakres pomiarowy10 – 80 cm
Czas odpowiedzi50 ms
Prąd wyjściowy20 mA
ObudowaModuł
Uwagi / wariantyDostępny w wielu zakresach odległości

  • Zapewnij prawidłowe zasilanie (4,5 – 5,5 V), aby uniknąć uszkodzeń.
  • W razie potrzeby użyj rezystora do ograniczenia prądu.
  • Utrzymuj czujnik w czystości, aby zapewnić dokładne odczyty.
  • Uważaj na zakłócenia od światła otoczenia.
  • Okablowanie musi być pewne, aby zapobiec przerywanym połączeniom.

Instrukcje okablowania

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

Aby podłączyć moduł pomiaru odległości Sharp IR, podłącz pin masy modułu do pinu GND na Arduino. Następnie podłącz pin VCC modułu do pinu 5V na Arduino. Pin wyjścia sygnałowego z modułu Sharp IR należy podłączyć do pinu 2 na Arduino, który będzie odczytywał dane o odległości.

Dla brzęczyka podłącz dłuższy pin (dodatni) do pinu 8 na Arduino, a krótszy pin (ujemny) do GND. Upewnij się, że wszystkie połączenia są pewne i że komponenty są prawidłowo zasilane, aby zapewnić właściwe działanie.

Przykłady kodu i omówienie

Poniżej znajduje się krótki fragment kodu Arduino, w którym definiujemy piny i konfigurujemy czujnik. Identyfikator IR jest zdefiniowany jako pin analogowy używany do sygnału czujnika.

#define IR A0 // zdefiniuj pin sygnałowy
SharpIR SharpIR(IR, model); // Zainicjalizuj SharpIR z zdefiniowanym pinem

Ten kod inicjalizuje czujnik Sharp IR na określonym pinie analogowym. Identyfikator model określa typ używanego czujnika, który w tym przypadku jest ustawiony na 1080 dla modelu GP2Y0A21YK0F.

W funkcji setup rozpoczynamy komunikację szeregową, aby monitorować odczyty odległości:

void setup() {
    Serial.begin(9600); // Inicjalizacja komunikacji szeregowej
    Serial.println("Robojax Sharp IR  "); // Wydrukuj komunikat do monitora szeregowego
}

Funkcja setup inicjalizuje komunikację szeregową z prędkością 9600 bodów, co pozwala Arduino wysyłać dane o odległości do monitora szeregowego w celu obserwacji.

W funkcji loop odczytujemy odległość z czujnika i wypisujemy ją:

void loop() {
    int dis = SharpIR.distance(); // Odczytaj odległość
    Serial.print("Średnia odległość: "); // Wydrukuj odległość do monitora szeregowego
    Serial.println(dis); // Wypisz pomiar odległości
}

Ten fragment pokazuje, jak w sposób ciągły odczytywać odległość i wypisywać ją na monitorze szeregowym. Zmienna dis przechowuje wartość odległości zmierzonej przez czujnik Sharp IR.

Demonstracja / Czego się spodziewać

Po zakończeniu konfiguracji możesz spodziewać się, że brzęczyk będzie emitował dźwięk za każdym razem, gdy obiekt zostanie wykryty w określonym zakresie czujnika Sharp IR. Monitor szeregowy będzie wyświetlał „Średnia odległość” wraz ze zmierzoną odległością w centymetrach. Jeśli w zasięgu nie ma żadnych obiektów, monitor również to wskaże (na wideo w 02:30).

Typowe pułapki obejmują zapewnienie prawidłowego ustawienia czujnika i braku przeszkód blokujących sygnał podczerwony. Sprawdź również, czy zasilanie jest stabilne, aby uniknąć nieregularnych odczytów.

Znaczniki czasu wideo

  • 00:00 - Wprowadzenie do projektu
  • 02:30 - Demonstracja działania czujnika
  • 03:45 - Wyjaśnienie okablowania
  • 05:00 - Omówienie kodu

Obrazy

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
Język: 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

}

Rzeczy, których możesz potrzebować

Zasoby i odniesienia

Pliki📁

Biblioteki Arduino (zip)

Karta katalogowa (pdf)

Plik Fritzing

Inne pliki