Wa Koodu

Ẹkọ 27/31: Ọkọ̀-ayọ́kẹ́lẹ́ 5 SunFounder Smart Car Tẹ̀lé Ọwọ́ Rẹ nípa lílo Arduino | Robojax

Ẹkọ 27/31: Ọkọ̀-ayọ́kẹ́lẹ́ 5 SunFounder Smart Car Tẹ̀lé Ọwọ́ Rẹ nípa lílo Arduino | Robojax

Ìfáàwọ́

Ṣé o ti fẹ́ kọ́ robot tí ó ń dáhùn sí ìwà rẹ̀ ní ọ̀nà tí ó yé ni? Iṣẹ́ yìí yí SunFounder Smart Car pàtàkì padà sí ọkọ̀ tí a ń darí pẹ̀lú ìfarahàn tí ó ń tẹ̀lé ọwọ́ rẹ. Dípò lílo remote control tàbí ohun èlò fóónù, ọkọ̀ yìí ń lo àkópọ̀ awọn sensa ultrasonic àti infrared láti mọ ibi tí ọwọ́ rẹ wà àti bí ó ṣe jìnnà, tí ó jẹ́ kí o lè darí rẹ̀ sí òsì, ọ̀tún, tàbí síwájú pẹ̀lú awọn ìṣísẹ̀ àdánidá.

27-SunFounder-Car-5-Follow-Hand

Iṣẹ́ yìí jẹ́ ara ẹ̀kọ́ Robojax Arduino Course (Ẹ̀kọ́ 27/31) tí a sì kọ́ ọ pẹ̀lú SunFounder 3-in-1 Arduino kit. Ó jẹ́ ọ̀nà tí ó dára láti kọ́ nípa sensor fusion, níbi tí ọ̀pọ̀lọpọ̀ sensa ti ń ṣiṣẹ́ papọ̀ láti dá ìwà tí ó díjù àti tí ó ń fesi sí. Iye tí ó wà nínú rẹ̀ fún ayé gidi ni láti lóye bí a ṣe ń darapọ̀ oríṣiríṣi inputs láti ṣe ìpinnu, èyí tí ó jẹ́ èròǹgbà pàtàkì nínú robotics àti automation.

Èyí ni díẹ̀ lára awọn èròǹgbà tí o lè fi ògbólógbó ìrònú yìí kọ́ lé lórí:

  • Awọn Ìfihàn Ìbánidọ́rẹ̀wọ̀: Ṣẹ̀dá ẹ̀rọ kékeré tí ó ń tẹ̀lé àwọn àlejò láti fa àfiyèsí wọn.
  • Pẹ̀pẹ̀ Tí Ó ń Yẹra fún Ìdíwọ́: Yí kódù padà kí ọkọ̀ náà lè rin kiri yàrá nípa yíyẹra fún àwọn ìdíwọ́ dípò títẹ̀lé ọwọ́.
  • Ohun èlò Ẹ̀kọ́ Robotics: Lo èyí gẹ́gẹ́ bí iṣẹ́ ìpìlẹ̀ láti kọ́ àwọn akẹ́kọ̀ọ́ nípa ìsopọ̀ sensa, ògbólógbó ìrònú, àti ìdarí mótà.
  • Kẹ̀kẹ́ Ìfiranṣẹ́ Ọlọ́gbọ́n: Nínú àyíká tí a kọ́, a lè yí ògbólógbó ìrònú yìí padà fún kẹ̀kẹ́ kékeré tí ó ń tẹ̀lé ènìyàn ní ibi ìpamọ́ tàbí ilé iṣẹ́.

Ohun èlò & Àwọn Ẹ̀yà

Iṣẹ́ yìí ń lo àwọn ẹ̀yà tí ó wà nínú SunFounder 3-in-1 Arduino kit. Àwọn ẹ̀yà pàtàkì tí o máa lò ni:

  • SunFounder Smart Car chassis: Pẹ̀pẹ̀ tí ó ní kẹ̀kẹ́ àti mótà.
  • Arduino board: Ọpọlọ ọkọ̀ tí ó ń ṣiṣẹ́ kódù náà.
  • Ultrasonic Sensor (HC-SR04): Tí a ń lò láti wọn ìjìnnà sí ohun kan (ọwọ́ rẹ) níwájú ọkọ̀.
  • Awọn IR (Infrared) Obstacle Avoidance Sensors méjì: Tí a gbé sí ẹ̀gbẹ́ òsì àti ọ̀tún láti mọ bí ọwọ́ rẹ bá wà ní àwọn ẹ̀gbẹ́ yẹn.
  • Motor Driver: Module kan (L298N tàbí irú rẹ̀) tí a ń lò láti darí ìyára àti ìtọ́sọ́nà mótà ọkọ̀ dá lórí àwọn ifihan lati Arduino.
  • Orísun Agbára: Awọn bátàrí láti fi agbára fún Arduino àti awọn mótà.

Ìtọ́sọ́nà Ìsopọ̀

car_7_8_follow_hand

Gẹ́gẹ́ bí a ti sọ nínú fídíò, ìsopọ̀ fún iṣẹ́ yìí jẹ́ kanna pẹ̀lú èyí tí a ṣàlàyé nínú àwọn ẹ̀kọ́ tẹ́lẹ̀ fún ọkọ̀ tí ń yẹra fún ìdíwọ́. Awọn sensa àti mótà ni a ti sopọ̀ sí awọn pins onímọ̀-ìṣirò àti analog ti Arduino. Fún ìtọ́kasí ojú, jọ̀wọ́ wo àwòrán ìsopọ̀ fún SunFounder Smart Car.

Kódù náà ṣàlàyé awọn pins pàtó tí a lò fún ẹ̀yà kọ̀ọ̀kan, èyí tí a ṣàlàyé ní abala tí ó tẹ̀le.

Àlàyé Kódù

Abala yìí ń fojú sí àwọn apá kódù tí olùmúlò lè yí padà fún ọkọ̀ tirẹ̀. Eto kíkún wà fún ìgbàlódé ní ojú ìwé Robojax resource page.

Ní ìbẹ̀rẹ̀ pàtàkì ti sketch náà, o máa rí àwọn ìtumọ̀ pins. Àwọn wọ̀nyí ni àwọn ìlà tí ó ṣe pàtàkì jùlọ láti lóye bí o bá ti sopọ̀ ọkọ̀ rẹ yàtọ̀ sí ti olùkọ́.

const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;

const int rightIR=7;
const int leftIR=8;

const int trigPin = 3;
const int echoPin = 4;

Èyí ni ohun tí ẹgbẹ́ pins kọ̀ọ̀kan ṣe:

  • Awọn pins Mótà (A_1A, A_1B, B_1A, B_1B): Àwọn wọ̀nyí ni awọn pins tí a sopọ̀ sí motor driver láti darí mótà méjèèjì. Àmì "A" àti "B" sábà máa ń tọ́ka sí mótà òsì àti ọ̀tún, ní ọ̀kọ̀ọ̀kan. O gbọ́dọ̀ yí wọ́n padà bí motor driver rẹ bá ti sopọ̀ sí awọn pins Arduino yàtọ̀.
  • Awọn pins IR Sensor (rightIR, leftIR): Àwọn pins input onímọ̀-ìṣirò wọ̀nyí ń ka ifihan lati awọn sensa infrared òsì àti ọ̀tún. Iye 0 túmọ̀ sí pé a ti rí ìdíwọ́ (ọwọ́ rẹ), nígbà tí 1 túmọ̀ sí pé ọ̀nà ṣí sílẹ̀.
  • Awọn pins Ultrasonic Sensor (trigPin, echoPin): trigPin jẹ́ output tí ó ń rán ìgbì ultrasonic kúkúrú, àti echoPin jẹ́ input tí ó ń ka iye àkókò tí ìgbì tí ó ṣe àfihàn gba láti ṣe ìṣirò ìjìnnà.

Nínú ìṣiṣẹ́ loop(), o máa rí ògbólógbó ìrònú àkọ́kọ́. Onírúiyèdá kan ṣoṣo ni o lè fẹ́ yí padà:

int speed = 150;

Onírúiyèdá speed yìí ń darí agbára tí a rán sí awọn mótà nígbà ìṣísẹ̀. Ó lè wà láti 0 (dúró) sí 255 (ìyára tí ó pọ̀ jùlọ). O lè pọ̀ sí i (bíi 200) fún ọkọ̀ tí ó yára tàbí dín kù (bíi 100) fún awọn ìṣísẹ̀ tí a kọ́ ní ìdarí, tí ó lọ́ra.

Kódù náà tún ní àwọn ìṣiṣẹ́ bíi moveForward(), turnLeft(), àti turnRight(). Àwọn ìṣiṣẹ́ wọ̀nyí ni a ń lò láti darí ìṣísẹ̀ ọkọ̀, tí a sì ń pè wọ́n dá lórí àwọn ìwọ̀n sensa. O kò ní láti yí wọ́n padà, ṣùgbọ́n o lè lò wọ́n gẹ́gẹ́ bí àwọn ìpìlẹ̀ láti ṣẹ̀dá àwọn ìwà àdáni tirẹ.

Bí Ògbólógbó Ìrònú "Tẹ̀lé Ọwọ́ Rẹ" Ṣe ń Ṣiṣẹ́

Iṣẹ́ àrà ọ̀tọ̀ ti iṣẹ́ yìí wà nínú bí Arduino ṣe ń túmọ̀ data láti ọ̀dọ̀ àwọn sẹ́nsà mẹ́ta. Ìlànà náà rọrùn, ó sì ń ṣiṣẹ́ nígbà gbogbo nínú iṣẹ́ loop().

Ní àkọ́kọ́, ọkọ̀ náà ń díwọ̀n ọ̀nà tó wà sí ohun kan tó wà níwájú rẹ̀ ní tààrà nípa lílo sẹ́nsà ultrasonic. Lẹ́yìn náà, ó ń ṣàyẹ̀wò àwọn sẹ́nsà infrared méjì láti rí bóyá ohun kan wà ní apá òsì tàbí ọ̀tún rẹ̀. Ìlànà ìpinnu náà rí báyìí:

  1. Gbéra síwájú: Bí ìwọ̀n ọ̀nà tí sẹ́nsà ultrasonic bá díwọ̀n bá ju 5 cm lọ ṣùgbọ́n kéré ju 10 cm lọ, ọkọ̀ náà ń gbéra síwájú. Èyí ń dá ààyè "ibi tó dára" kan níbi tí ọkọ̀ yóò ti ń tẹ̀lé ọwọ́ rẹ.
  2. Yípadà sí òsì: Bí ìwọ̀n ọ̀nà kò bá wà ní ààyè yẹn, ọkọ̀ náà ń ṣàyẹ̀wò àwọn sẹ́nsà IR. Bí sẹ́nsà òsì bá dí (ọwọ́ rẹ wà ní òsì) tí sẹ́nsà ọ̀tún sì ṣí sílẹ̀, ọkọ̀ náà ń yípadà sí òsì.
  3. Yípadà sí ọ̀tún: Ní òdìkejì, bí sẹ́nsà ọ̀tún bá dí tí òsì sì ṣí sílẹ̀, ọkọ̀ náà ń yípadà sí ọ̀tún.
  4. Dúró: Bí kò bá sí ọ̀kan nínú àwọn ipò wọ̀nyí tó bá mu—fún àpẹẹrẹ, bí ọwọ́ rẹ bá jìnnà jù tàbí súnmọ́ jù—ọkọ̀ náà ń dúró.

Ètò àwọn òfin tó rọrùn yìí ń jẹ́ kí ọkọ̀ náà fèsì ní ìyára sí ipò ọwọ́ rẹ, tí ó ń dá ìwà títẹ̀lé tó dán wò, tó sì rọrùn láti lóye.

Ìfihàn Iṣẹ́ Náà Láàyè

Nínú fídíò ìfihàn náà, olùkọ́ ń fi ìwà ọkọ̀ náà hàn nígbà gbogbo. A ń lo serial monitor láti fi ìwọ̀n ọ̀nà tí sẹ́nsà ultrasonic kà hàn. Nígbà tí ọkọ̀ bá dúró tí ọwọ́ rẹ sì jìnnà (fún àpẹẹrẹ, 36 cm), ó wà ní ìdúró. Ni kété tí o bá gbé ọwọ́ rẹ sí ààyè 5-10 cm níwájú ọkọ̀ náà, ó bẹ̀rẹ̀ sí í gbéra síwájú.

Ìfihàn náà tún ń ṣàfihàn ìlànà yíyípadà. Nígbà tí o bá gbé ọwọ́ rẹ sí apá òsì ọkọ̀ náà, sẹ́nsà IR òsì ń ṣiṣẹ́, ọkọ̀ náà sì ń yípadà sí òsì. Bákan náà, gbígbé ọwọ́ rẹ sí apá ọ̀tún ń mú kí ọkọ̀ náà yípadà sí ọ̀tún. Ọkọ̀ náà yóò máa tẹ̀lé ọwọ́ rẹ nígbà tí o bá ń gbé e kiri, tí yóò sì dúró nígbà tí o bá yọ ọwọ́ rẹ kúrò ní ibi tí sẹ́nsà rẹ̀ lè kà tàbí tí ó bá súnmọ́ jù. Èyí ń fi dá wa lójú pé ìparapọ̀ sẹ́nsà àti ìlànà náà ń ṣiṣẹ́ bí a ti ṣe àgbékalẹ̀ rẹ̀, tí ó ń dá iṣẹ́ tó ń fèsì tí ó sì dùn mọ́ni.

Àwọn Orí

  • [00:00] Ìfihàn sí Ọkọ̀ Ọlọ́gbọ́n Tó Ń Tẹ̀lé Ọwọ́
  • [00:35] Nípa Ẹ̀kọ́ àti Ohun Èlò Robojax Arduino
  • [01:41] Àkópọ̀ Iṣẹ́ àti Ìtòlẹ́sẹẹsẹ Kóòdù
  • [02:19] Àlàyé Ìtumọ̀ Pin àti Ìtòlẹ́sẹẹsẹ
  • [03:19] Ìlànà Kóòdù fún Títẹ̀lé Ọwọ́ Rẹ
  • [05:48] Ìfihàn Láàyè ti Ọkọ̀ Nínú Iṣẹ́
  • [07:28] Ìfihàn Ìkẹyìn àti Àtúnyẹ̀wò Iṣẹ́

Aworan

Car 7 8 follow hand
Car 7 8 follow hand
27 SunFounder Car 5 follow hand
27 SunFounder Car 5 follow hand
898-Lesson 27/31: Car-5 SunFounder Smart Car Follows Your Hand
Ede: C++
/*
Lesson 27/31: Car-5 SunFounder Smart Car Follows Your Hand
Get this code and watch video Download and resource page https://robojax.com/RJT610
YouTube video https://www.youtube.com/watch?v=mcbJlE7-8ro

*/
const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;

const int rightIR=7;
const int leftIR=8;

const int trigPin = 3;
const int echoPin = 4;

void setup() {
  Serial.begin(9600);

  //motor
  pinMode(A_1B, OUTPUT);
  pinMode(A_1A, OUTPUT);
  pinMode(B_1B, OUTPUT);
  pinMode(B_1A, OUTPUT);

  //IR obstacle
  pinMode(leftIR,INPUT);
  pinMode(rightIR,INPUT);
  
  //ultrasonic
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);
}

void loop() {

  float distance = readSensorData();

  int left = digitalRead(leftIR);  // 0: Obstructed   1: Empty
  int right = digitalRead(rightIR);
  int speed = 150;

  if (distance>5 && distance<10){
    moveForward(speed);
  }else if(!left&&right){
    turnLeft(speed);
  }else if(left&&!right){
    turnRight(speed);
  }else{
    stopMove();
  }
}

float readSensorData() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  float distance = pulseIn(echoPin, HIGH) / 58.00; //Equivalent to (340m/s*1us)/2
  return distance;
}

void moveForward(int speed) {
  analogWrite(A_1B, 0);
  analogWrite(A_1A, speed);
  analogWrite(B_1B, speed);
  analogWrite(B_1A, 0);
}

void moveBackward(int speed) {
  analogWrite(A_1B, speed);
  analogWrite(A_1A, 0);
  analogWrite(B_1B, 0);
  analogWrite(B_1A, speed);
}

void turnRight(int speed) {
  analogWrite(A_1B, speed);
  analogWrite(A_1A, 0);
  analogWrite(B_1B, speed);
  analogWrite(B_1A, 0);
}

void turnLeft(int speed) {
  analogWrite(A_1B, 0);
  analogWrite(A_1A, speed);
  analogWrite(B_1B, 0);
  analogWrite(B_1A, speed);
}

void stopMove() {
  analogWrite(A_1B, 0);
  analogWrite(A_1A, 0);
  analogWrite(B_1B, 0);
  analogWrite(B_1A, 0);
}

Orisun & itọkasi

Fáìlìs📁

Awọn ile-ikawe Arduino (zip)