Kodi ya Arduino na Video: Sensor ya Kizuizi cha Infrared ya Chaneli 4 kwa Gari Mahiri la Arduino
Katika mafunzo haya, tutachunguza jinsi ya kutumia moduli ya kihisi cha kuepuka vikwazo cha infrared cha chaneli 4 kuunda gari mahiri. Moduli hii ina vihisi vinne vya infrared vinavyoweza kugundua vikwazo katika mwelekeo mbalimbali, ikiruhusu gari lako la roboti kuitikia ipasavyo. Kila kihisi hutoa maoni kuhusu ukaribu, kukuwezesha kupanga majibu kulingana na vikwazo vinavyogunduliwa.

Tunapoendelea na mradi huu, tutashughulikia vipengele vya maunzi, maagizo ya wiring, na msimbo unaohitajika kuendesha vihisi kwa ufanisi. Unaweza kupata ufafanuzi wa ziada kwenye video (katika video saa 00:00).
Maunzi Yamefafanuliwa
Kipengele kikuu cha mradi huu ni moduli ya kuepuka vikwazo ya infrared ya chaneli 4, ambayo hutumia LM339 quad differential comparator. IC hii ina uwezo wa kufanya kazi kati ya volti 2 hadi 36, lakini katika kesi yetu, tutatumia volti 5 kwa upatanifu na Arduino. Kila kihisi kwenye moduli kina ingizo la inverting na non-inverting, likiruhusu kulinganisha mwanga wa infrared unaoakisiwa kutoka kwa vikwazo na kutoa ishara ipasavyo.
Moduli imeundwa na resistors za pull-up zinazoweka pato juu wakati hakuna kikwazo kinachogunduliwa. Kitu kinapogunduliwa, pato linashuka chini, likitoa ishara wazi kwa Arduino. Zaidi ya hayo, moduli ina LED zinazoonyesha wakati kikwazo kinagunduliwa, kuboresha maoni ya mtumiaji wakati wa operesheni.
Maelezo ya Datasheet
| Mtengenezaji | Haijulikani |
|---|---|
| Nambari ya sehemu | Kuepuka Vikwazo vya Infrared cha Chaneli 4 |
| Voltage ya Logic/IO | 5 V |
| Voltage ya usambazaji | 2–36 V |
| Pato la sasa (kwa chaneli) | 10 mA (typ.) |
| Kilele cha sasa (kwa chaneli) | 20 mA (max.) |
| Mwongozo wa mzunguko wa PWM | N/A |
| Viwango vya ingizo la mantiki | CHINI < 0.8 V, JUU > 2.0 V |
| Kushuka kwa voltage / RDS(on) / kueneza | 0.2 V (typ.) |
| Mipaka ya joto | Joto la kufanya kazi: -40 hadi 125 °C |
| Kifurushi | Moduli |
| Vidokezo / lahaja | Inajumuisha vihisi 4 na unyeti unaoweza kubadilishwa |
- Tumia ardhi ya pamoja kwa vipengele vyote ili kuepuka ingizo linaloelea.
- Rekebisha potentiometer ya unyeti kwa masafa bora ya kugundua.
- Hakikisha voltage sahihi ya usambazaji wa nishati ili kuepuka kuharibu vihisi.
- Angalia miunganisho ya wiring ili kuzuia usomaji usio sahihi kutoka kwa vihisi.
- Tumia capacitors za decoupling kuimarisha usambazaji wa nishati kwa vihisi.
- Jaribu kila kihisi kibinafsi kabla ya kukiunganisha kwenye mfumo mkuu.
Maagizo ya Wiring
Ili kuunganisha moduli ya kuepuka vikwazo ya infrared ya chaneli 4 kwenye Arduino, anza kwa kuunganisha nishati na ardhi. Unganisha pini ya VCC ya moduli ya kihisi kwenye pato la 5V kwenye Arduino. Kisha, unganisha pini ya GND ya moduli kwenye ardhi (GND) kwenye Arduino. Hii itatoa nishati muhimu kwa vihisi kufanya kazi.
Ifuatayo, unganisha pini za pato za vihisi kwenye pini za ingizo za dijiti kwenye Arduino. Kwa mfano, unganisha pato la kihisi cha mbele-kushoto (kinachoitwa N1) kwenye pini ya dijiti 2, kihisi cha mbele-kulia (N2) kwenye pini 3, kihisi cha nyuma-kushoto (N3) kwenye pini 4, na kihisi cha nyuma-kulia (N4) kwenye pini 5. Zaidi ya hayo, unaweza kuunganisha pato la breki kwenye pini 8, kiashiria cha kikwazo cha mbele kwenye pini 9, na kiashiria cha kikwazo cha nyuma kwenye pini 10. Hakikisha miunganisho yote ni salama kwa operesheni ya kuaminika.
Mifano ya Msimbo na Mwongozo
Msimbo wa Arduino huanza kwa kufafanua viunga kwa kila pini ya kihisi kwa marejeleo rahisi katika programu nzima. Kwa mfano, FRONT_LEFT inafafanuliwa kama pini 2, ikifanya iwe wazi ni kihisi kipi kinalingana na pini ipi.
#define FRONT_LEFT 2 // pini 2 kwa kihisi cha mbele-kushoto
#define FRONT_RIGHT 3 // pini 3 kwa kihisi cha mbele-kulia
#define REAR_LEFT 4 // pini 4 kwa kihisi cha nyuma-kushoto
#define REAR_RIGHT 5 // pini 5 kwa kihisi cha nyuma-kulia
Katika kazi ya setup(), kila pini ya kihisi inasanidiwa kama ingizo kwa kutumia pinMode(). Usanidi huu unaruhusu Arduino kusoma hali za vihisi wakati wa operesheni.
void setup() {
Serial.begin(9600);
pinMode(FRONT_LEFT, INPUT);
pinMode(FRONT_RIGHT, INPUT);
pinMode(REAR_LEFT, INPUT);
pinMode(REAR_RIGHT, INPUT);
}
Katika kitanzi kikuu, hali ya kila kihisi inasomwa kwa kutumia digitalRead(). Ikiwa kikwazo kinagunduliwa (kinachoonyeshwa na ishara ya CHINI), LED ya kikwazo inayolingana inawashwa, na ujumbe unachapishwa kwenye mfuatiliaji wa serial.
void loop() {
int FR = digitalRead(FRONT_RIGHT);
int FL = digitalRead(FRONT_LEFT);
if( FR == LOW || FL == LOW) {
digitalWrite(FRONT_OB,HIGH);
Serial.println("Kikwazo cha mbele");
} else {
digitalWrite(FRONT_OB,LOW);
}
}
Muundo huu wa msimbo unaruhusu upanuzi na urekebishaji rahisi, kukuwezesha kubinafsisha majibu kulingana na mahitaji yako maalum ya programu. Kwa msimbo kamili, tafadhali rejelea sehemu ya upakiaji hapa chini.
Maonyesho / Nini cha Kutarajia
Mara kitu vikiunganishwa vyote na msimbo kupakiwa, unapaswa kutarajia LED kwenye moduli kuwaka wakati wowote kizuizi kinapogunduliwa na sensor yoyote. Monitor ya serial pia itaonyesha ujumbe unaoashiria uwepo wa vizuizi mbele au nyuma. Ikiwa sensor zimewekwa kwa usahihi, gari la smart litajibu kwa kusimama au kubadilisha mwelekeo kama ilivyopangwa (katika video saa 02:30).
Makosa ya kawaida ni pamoja na wiring usio sahihi, ambao unaweza kusababisha pembejeo zisizo na uhakika au usomaji mbaya. Hakikisha sensor zimepangwa vizuri na kwamba potentiometer imerekebishwa kwa unyeti unaotakiwa. Kupima kila sensor kwa kujitegemea kunaweza kusaidia kutambua matatizo kabla ya uunganisho kamili.
Vipindi vya Video
- 00:00 – Utangulizi wa mradi
- 01:30 – Maelezo ya vifaa
- 02:30 – Ufafanuzi wa msimbo
- 03:45 – Maelekezo ya wiring
- 04:50 – Onyesho la moja kwa moja
++
/*
* This is the Arduino code for 4-channel Infrared Obstacle Sensors for a smart car.
* Watch YouTube video: https://youtu.be/6Qs4iFYm_lg
*
* Written by Ahmad Nejrabi for Robojax.com
* on January 15, 2018 at 21:04 in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*/
/*
4-Channel Infrared Obstacle Avoidance kit
Written by Ahmad Nejrabi for Robojax.com
on January 15, 2018 at 21:04 in Ajax, Ontario, Canada
What it does?
This module has 4 IR (infrared) sensors that sense obstacles and based on the position of the
obstacle, you can program your Arduino to take action. If you are using it for a smart car, you can
change the direction of the car, apply the brake, or stop it.
*/
// 4 Infrared Obstacle code for Robojax.com
#define FRONT_LEFT 2 // pin 2 for front-left sensor
#define FRONT_RIGHT 3 // pin 3 for front-right sensor
#define REAR_LEFT 4 // pin 4 for rear-left sensor
#define REAR_RIGHT 5 // pin 5 for rear-right sensor
#define BREAK 8 // pin 8 to apply break or turn LED ON
#define FRONT_OB 9 // pin 9 when obstacle is at front
#define REAR_OB 10 // pin 10 when obstacle is at rear
void setup() {
Serial.begin(9600);
pinMode(FRONT_LEFT, INPUT);//define front-left input pin
pinMode(FRONT_RIGHT, INPUT);//define front-right input pin
// 4 Infrared Obstacle code for Robojax.com
pinMode(REAR_LEFT, INPUT);//define rear-left input pin
pinMode(REAR_RIGHT, INPUT);//define rear-right input pin
pinMode(BREAK, OUTPUT);// define pin for break
pinMode(FRONT_OB,OUTPUT);// define front obstacle detection pin
pinMode(REAR_OB,OUTPUT);// define rear obstacle detection pin
}
void loop() {
// 4 Infrared Obstacle code for Robojax.com
int FR = digitalRead(FRONT_RIGHT);// read FRONT_LEFT sensor
int FL = digitalRead(FRONT_LEFT);// read FRONT_RIGHT sensor
int RR = digitalRead(REAR_RIGHT);// read REAR_RIGHT sensor
int RL = digitalRead(REAR_LEFT);// read REAR_LEFT sensor
if( FR == LOW || FL == LOW)
{
digitalWrite(FRONT_OB,HIGH);
Serial.println("Front obstacle");
}else{
digitalWrite(FRONT_OB,LOW);
}
if( RR == LOW || RL == LOW )
{
digitalWrite(REAR_OB,HIGH);
Serial.println("Rear obstacle");
}else{
digitalWrite(REAR_OB,LOW);
}
delay(200);
}
Tänker att du kanske behöver
-
Amazon
Resurser och referenser
Inga resurser än.
Filer📁
Fritzing-fil
-
VS1838B Infrared receiver
VS1838B_part.fzpz
Andra filer
-
4 Channel Infrared Obstacle Detection LM393 datasheet
robojax-4-channel-infrared-obstacle_LM339.pdf1.36 MB