Tafuta Msimbo

Msimbo wa Arduino na Video kwa Moduli ya Umbali ya IR ya Sharp na LCD1602 na Moduli ya I2C

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

Sharpt IR distance sensor

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

Arduino wiring for Sharp IR sensor with LCD1602
Arduino wiring for Sharp IR sensor with LCD1602

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 ya distance() 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

Bilder

LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
Sharpt IR distance sensor GP2Y0A21YK0F
Sharpt IR distance sensor GP2Y0A21YK0F
Sharpt IR distance sensor
Sharpt IR distance sensor GP2Y0A21YK0F
Arduino wiring for Sharp IR sensor with LCD1602
Arduino wiring for Sharp IR sensor with LCD1602
70-This is the Arduino code and video for a Sharp Infrared Sensor Module with LCD1602 and I2C.
Språk: C++
/*
 * 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

Resurser och referenser

Inga resurser än.

Filer📁

Arduino-bibliotek (zip)

Datablad (pdf)

Fritzing-fil

Andra filer