Msimbo wa Arduino na Video kwa Moduli ya Umbali ya IR ya Sharp na LCD1602 na Moduli ya I2C
Mwongozo huu wa mradi utakuelekeza katika kujenga mfumo rahisi lakini mzuri wa kupima umbali kwa kutumia sensor ya umbali ya Infrared (IR) ya Sharp na skrini ya LCD1602. Mpangilio huu unakuruhusu kupima umbali kwa usahihi ndani ya anuwai maalum na kuyaonyesha moja kwa moja kwenye skrini, na kuifanya kuwa bora kwa matumizi mbalimbali ya DIY electronics.Moduli za pato za Analog za Sharp:
2 hadi 15 cm GP2Y0A51SK0F
4 hadi 30 cm GP2Y0A41SK0F / GP2Y0AF30 series
10 hadi 80 cm GP2Y0A21YK0F
10 hadi 150 cm GP2Y0A60SZLF
20 hadi 150 cm GP2Y0A02YK0F
100 hadi 550 cm GP2Y0A710K0F

Mifano ya matumizi ya vitendo na mawazo ya miradi kwa mfumo huu ni pamoja na:
- Kujenga mfumo wa kiotomatiki wa kusaidia kuegesha gari ili kuzuia uharibifu wa bumper.
- Kuunda sensor rahisi ya kiwango cha maji kwa matanki au visima.
- Kutengeneza kitoa kioevu kisichogusana.
- Kutekeleza kengele ya usalama ya msingi kwa kugundua ukaribu.
- Kuunda kiashiria cha kiwango cha kujaza kwa hoppers au mapipa.
- Kubuni mfumo wa kuzuia mgongano kwa roboti ndogo au magari ya RC.
Vifaa/Vipengele
Ili kukamilisha mradi huu, utahitaji vipengele vifuatavyo:
- Arduino Uno au bodi inayooana
- Sensor ya umbali ya Infrared ya Sharp (mfano GP2Y0A41SK0F, inayopima 4 hadi 30 cm)
- LCD1602 na moduli ya I2C (kwa wiring rahisi)
- Breadboard (hiari, kwa prototyping)
- Waya za jumper
- Kebo ya USB kwa nguvu ya Arduino na programu
Mwongozo wa Wiring

Kuunganisha sensor ya IR ya Sharp na LCD1602 na moduli ya I2C kwenye Arduino yako ni rahisi, shukrani kwa moduli ya I2C inayopunguza idadi ya waya zinazohitajika kwa LCD.
Sensor ya IR ya Sharp ina waya tatu: Nyekundu (5V), Nyeusi (Ground), na Njano (Output). Unganisha waya nyekundu kwenye pini ya 5V ya Arduino, waya nyeusi kwenye pini yoyote ya GND kwenye Arduino, na waya ya pato ya njano kwenye pini ya Analog A0 ya Arduino (katika video saa 03:55).
LCD1602 na moduli ya I2C ina waya nne: VCC, GND, SDA, na SCL. Unganisha pini ya VCC kwenye 5V ya Arduino, na pini ya GND kwenye GND ya Arduino. Waya ya SDA (Serial Data Line) inapaswa kuunganishwa kwenye pini ya Analog A4 ya Arduino, na waya ya SCL (Serial Clock Line) inapaswa kuunganishwa kwenye pini ya Analog A5 ya Arduino (katika video saa 02:42).
Maelezo ya Msimbo
Msimbo wa Arduino uliotolewa unatumia maktaba kuu mbili: Wire.h kwa mawasiliano ya I2C na LiquidCrystal_I2C.h kwa kudhibiti LCD, na SharpIR.h kwa sensor ya IR ya Sharp. Sehemu za msimbo zinazoweza kubadilishwa na mtumiaji zinahusiana hasa na ufafanuzi wa sensor na uanzishaji wa LCD.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Weka anwani ya LCD kuwa 0x27 kwa onyesho la herufi 16 na mistari 2
LiquidCrystal_I2C lcd(0x27, 16, 2);
Mstari LiquidCrystal_I2C lcd(0x27, 16, 2); unaanzisha kitu cha LCD. Kigezo cha kwanza, 0x27 (katika video saa 03:26), ni anwani ya kawaida ya I2C kwa moduli nyingi za I2C LCD za PCF8574. Ikiwa LCD yako haifanyi kazi, huenda ukahitaji kupata anwani yake sahihi (njia mbadala za kawaida ni 0x3F). Kigezo cha pili, 16, kinabainisha kwamba LCD yako ina herufi 16 kwa kila mstari, na kigezo cha tatu, 2, kinaonyesha ina mistari 2.
#include <SharpIR.h>
#define IR A0 // fafanua pini ya ishara ya Sharp IR
#define model 430 // mfano wa moduli ya IR
// Msimbo wa Sharp IR kwa Robojax.com
// ir: pini ambapo sensor yako imeunganishwa
// model: nambari inayoamua sensor yako:
/*
* GP2Y0A02YK0F --> "20150"
GP2Y0A21YK --> "1080"
GP2Y0A710K0F --> "100500"
GP2YA41SK0F --> "430"
*/
SharpIR SharpIR(IR, model);
Mistari hii inasanidi sensor ya IR ya Sharp. #define IR A0 inafafanua pini ya analog ya Arduino ambapo waya wa pato la sensor ya IR ya Sharp imeunganishwa. #define model 430 (katika video saa 04:27) ni muhimu kwani inabainisha mfano halisi wa sensor yako ya IR ya Sharp. Maktaba inatumia nambari hii ya mfano kutumia ubadilishaji sahihi wa hisabati kutoka kwa pato la voltage ya analog ya sensor hadi umbali kwa sentimita. Kizuizi cha maoni kinaorodhesha mifano mbalimbali ya Sharp IR na nambari zao zinazolingana ambazo zinapaswa kutumika hapa. Kwa mfano, ikiwa unatumia GP2Y0A21YK, ungebadilisha 430 kuwa 1080.
void setup()
{
lcd.begin();
lcd.backlight();
}
Katika kazi ya setup(), lcd.begin() inaanzisha LCD, na lcd.backlight() inawasha mwanga wake wa nyuma, na kufanya onyesho lionekane.
void loop()
{
lcd.clear();
lcd.print("Robojax IR Test");
lcd.setCursor (0,1); // nenda mwanzo wa mstari wa 2
int dis=SharpIR.distance();// inapata umbali kwa cm
String distance = String(dis);
distance ="Distance: "+distance+"cm";
lcd.print(distance);
delay(500);
}
Ndani ya kazi ya loop():
lcd.clear();hufuta maandishi yoyote ya awali kwenye skrini.lcd.print("Robojax IR Test");huchapisha ujumbe tuli kwenye mstari wa kwanza.lcd.setCursor (0,1);husogeza mshale hadi mwanzo wa mstari wa pili (0 ni safu ya kwanza, 1 ni mstari wa pili, kwani mistari huhesabiwa kuanzia 0).int dis=SharpIR.distance();huita kazi yadistance()kutoka kwenye maktaba ya SharpIR kusoma thamani ya sensa na kuibadilisha kuwa nambari kamili inayowakilisha umbali kwa sentimita (katika video saa 05:06). Hii ndiyo kazi kuu ya kupata kipimo.String distance = String(dis);hubadilisha umbali wa nambari kamili kuwa mfuatano, kwani huwezi kuunganisha nambari kamili moja kwa moja na mfuatano kwa ajili ya kuchapisha.distance ="Distance: "+distance+"cm";huunda mfuatano kwa kujumuisha "Distance: " kabla ya thamani na "cm" baada yake.lcd.print(distance);huonyesha mfuatano wa umbali ulioandaliwa kwenye LCD.delay(500);huanzisha pause ya milisekunde 500 (katika video saa 06:00). Kuchelewa huku ni muhimu kwa usahihi na utulivu wa sensa ya Sharp. Unaweza kubadilisha thamani hii: kuiongeza kunaweza kuboresha usahihi lakini kupunguza kasi ya sasisho, wakati kuipunguza kutaharakisha sasisho lakini kunaweza kupunguza usahihi.
Mradi/Demonstration ya Moja kwa Moja
Mara baada ya vipengele kuunganishwa na msimbo kupakiwa kwenye Arduino yako, mfumo utaanza kupima na kuonyesha umbali. Mradi huu unaonyesha vipimo sahihi katika umbali wa karibu, kwa mfano, kuonyesha 12 cm wakati kitu kiko kwenye 12 cm (katika video saa 00:31) na 10 cm kwa 10 cm (katika video saa 00:37).
Hata hivyo, kitu kinaposogea mbali zaidi, hasa zaidi ya 15-20 cm, usahihi unaweza kupungua. Kwa mfano, kwenye 20 cm, skrini inaweza kuonyesha 21 cm (katika video saa 07:06), na kwenye 25 cm, inaweza kusoma 28 au 29 cm (katika video saa 07:32). Tabia hii ni ya kawaida kwa sensa hizi za infrared. Sensa ya Sharp IR hutoa voltage ya analogi inayobadilika kulingana na umbali: umbali unapoongezeka, voltage ya pato hupungua (katika video saa 07:56).
Uhusiano kati ya umbali na voltage ya pato si wa mstari, hasa katika ncha za kiwango cha sensa. Ukosefu huu wa mstari ndio sababu maktaba ya `SharpIR` ni muhimu, kwani ina data ya kurekebisha ili kubadilisha voltage hizi zinazobadilika kuwa usomaji sahihi zaidi wa umbali. Kwa matumizi yanayohitaji usahihi wa juu katika umbali mrefu, inaweza kuwa muhimu kuchagua mfano tofauti wa Sharp IR ulioundwa kwa umbali huo au kutekeleza curves za kurekebisha maalum.
Sura
- [00:06] Utangulizi na Muhtasari wa Mradi
- [01:10] Maelezo ya Sensa ya Sharp IR na Pinout
- [02:09] Uunganishaji wa Moduli ya LCD I2C
- [02:58] Maelezo ya Msimbo wa Arduino
- [06:36] Demonstration ya Kipimo cha Umbali
- [07:47] Tabia za Sensa na Mapungufu ya Usahihi
- [08:48] Hitimisho na Rasilimali
/*
* Sharp IR 555 (infrared) distance measurement module with LCD1602 and I2C for Arduino
* Measures the distance in cm.
* Watch the video https://youtu.be/RHgMwtKLEnE
* *
Original library: https://github.com/guillaume-rico/SharpIR
// Written and updated by Ahmad for Robojax.com
// on January 3, 2018 at 20:01 in Ajax, Ontario, Canada
// 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/>.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
///////////////////***** start of Sharp IR
#include <SharpIR.h>
#define IR A0 // define Sharp IR signal pin
#define model 430 // the model of the IR module
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
// model: an int that determines your sensor:
/*
* GP2Y0A02YK0F --> "20150"
GP2Y0A21YK --> "1080"
GP2Y0A710K0F --> "100500"
GP2YA41SK0F --> "430"
*/
SharpIR SharpIR(IR, model);
/////////////////////**** end of Sharp IR
void setup()
{
// Robojax code for LCD with I2C
// initialize the LCD,
lcd.begin();
// Turn on the backlight and print a message.
lcd.backlight();
// Robojax code for LCD with I2C
}
void loop()
{
//start of loop Robojax code for LCD with I2C
lcd.clear();
lcd.print("Robojax IR Test");
lcd.setCursor (0,1); // go to start of 2nd line
int dis=SharpIR.distance();// gets the distance in cm
String distance = String(dis);
distance ="Distance: "+distance+"cm";
lcd.print(distance);
//lcd.print(millis() / 1000);
delay(500);
//end of loopcode Robojax code for LCD with I2C
}
Tänker att du kanske behöver
-
AmazonBuy LCD1602-I2C from Amazonamzn.to
-
Amazon
Resurser och referenser
Inga resurser än.
Filer📁
Arduino-bibliotek (zip)
-
Arduino library for sharp IR distance sensor
robojax-sharp_IR-master.zip
Datablad (pdf)
-
Sharp IR GP2Y0A21YK Infrared distance sensor datasheet
robojax_sharp_IR_GP2Y0A21YK_datasheet.pdf0.36 MB
Fritzing-fil
-
LCD LCD1602-I2C module with 4 wires
LCD1602-I2C.fzpz0.01 MB -
sharp ir sensor GP2Y0A02YK0F
sharp ir sensor GP2Y0A02YK0F .fzz
Andra filer
-
Sharp GP2Y0A41SK0F Infrared distance sensor datasheet
robojax_sharp_IR_GP2Y0A41SK0F_datasheet.pdf0.84 MB -
Sharp GP2Y0A710K0F Infrared distance sensor datashee
robojax_sharp_IR_GP2Y0A710K0F_datasheet.pdf0.33 MB