Luka Code

Masomo 28/31: Gari-6 Gari la SunFounder linalojiendesha kwa Arduino kwa kutumia | Robojax

Masomo 28/31: Gari-6 Gari la SunFounder linalojiendesha kwa Arduino kwa kutumia | Robojax

Na projetó oyo, tokotonga kotonga motuka ya komikokisa na yango moko na kosalela Arduino, sensor ya ultrason, mpe ba sensor mibale ya infrarouge. Oyo ezali projet ya kitoko ya ebandeli mpo na koyekola navigation autonome, fusion ya ba sensor, mpe logique ya kozua mikano. Motuka ekoki kokende liboso, sima, mpe kobongola mpo na kokima ba obstacles, mpe na yango ekokuta nzela ya polele na yango moko. Projet oyo ezwami na SunFounder 3-in-1 Arduino kit mpe ezali eteni ya cours ya Arduino ya Robojax.

Projet oyo ezali kaka te mpo na kotonga eloko ya masano; ezali introduction ya pratique na ba concepts ya ntina oyo ezali na sima ya robotique autonome. Logique mpe ba sensor yango moko esalelamaka na ba applications ya mokili ya solo lokola ba aspirateurs robotiques, ba véhicules guidés automatiques na ba entrepôts, mpe ata ba systèmes ya navigation ya ba robots mingi koleka. Na koyeba ndenge ya kosangisa mesure ya mosika na ba règles ya navigation ya pete, okoki kosala ba projets ndenge na ndenge, lokola:

  • Kotonga robot moke oyo ekoki kotambola na shambre mpe kokima ba meuble.
  • Kosala véhicule automatique oyo ekoki kolanda nzela ya pete to kobengana esika moko.
  • Koyekola ndenge ya kosala ba algorithmes ya kokima ba obstacles mpo na ba projets ya robotique minene.

Ba Composants ya Matériel

Projet oyo esalelaka ba composants ya SunFounder 3-in-1 kit. Ba parties ya ntina ezali:

  • Arduino Uno board
  • SunFounder 2WD to 3-in-1 motuka chassis na ba moteurs
  • Module ya driver ya moteur (lokola L298N to mosusu ya lolenge wana)
  • HC-SR04 Sensor ya mosika ya ultrason
  • Ba sensor mibale ya obstacle ya IR
  • Ba fils ya jumper mpe source ya puissance mpo na ba moteurs

Guide ya Câblage

Câblage ezali etape ya liboso ya ntina mpo na kopesa bomoyi na motuka na yo ya komikokisa. Ba connexions ezali pete, kasi esengeli kotonga moko na moko mpo na kokima kobebisa ba composants na yo. Logique oyo ezali na sima ya câblage ezali kokangisa ba pins ya contrôle ya Arduino na driver ya moteur mpe ba sensor, mpo na kopesa Arduino nzela ya kotanga ba données mpe kotinda ba commandes.

  • Ba Pins ya Driver ya Moteur (A-1B, A-1A, B-1B, B-1A): Ba pins oyo ekolakisa vitesse mpe direction ya ba moteurs mibale. Bazali kokangama na ba pins ya Arduino 5, 6, 9, mpe 10, oyo ezali na capacité ya PWM, mpo na kopesa nzela ya contrôle ya vitesse ya variable.
  • Sensor ya Ultrason (Trig mpe Echo): Pin ya Trig etindaka impulsion ya ultrason, mpe pin ya Echo ezali kozwa signal oyo ezali kozongisama. Pin ya Trig ekangami na pin ya Arduino 3, mpe pin ya Echo ekangami na pin ya Arduino 4.
  • Ba Sensor ya IR (Gauche mpe Droite): Ba sensor oyo emonanaka soki obstacle ezali liboso na bango. Sensor ya IR ya gauche ekangami na pin ya Arduino 8, mpe sensor ya droite ekangami na pin 7. Basalelamaka mpo na kotala esika oyo ezali na mapayi ya motuka.

Mpo na guide ya visual détaillée, tala diagramme ya câblage oyo ezali na nse, oyo emonisaka connexion moko na moko polele.

Explication ya Code

Code yango ekomami na langage ya programmation ya Arduino (C++). Programme mobimba ezali ya kokitisama na site ya ressources oyo ezali na lien na description ya vidéo. Tokabola ba parties ya ntina mpe ya configuration ya mosaleli na sketch oyo.

Définitions ya Ba Pins

Na likolo ya code, ozali kokabola ba pins oyo ekangisaka Arduino na ba composants ndenge na ndenge. Okoki kobongola yango soki ozali kosalela ba pins mosusu na board na yo.

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

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

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

Ba pins A_1B, A_1A, B_1B, mpe B_1A ekolakisa driver ya moteur ya H-bridge. Na kotia ba pins oyo na HIGH to LOW na ba combinaisons ndenge na ndenge, okoki kolakisa direction ya moteur moko na moko. echoPin mpe trigPin ezali mpo na sensor ya ultrason, mpe rightIR mpe leftIR ezali mpo na ba sensor ya infrarouge.

Ba Variables ya Comportement mpe Logique

Logique ya ntina ya comportement ya komikokisa ezali na fonction loop(). Motuka ezali kozua mikano kolanda ba mesures ya ba sensor ya IR mpe sensor ya ultrason. Code yango ezali kokabola ba distances ya sikisiki oyo ebandisaka ba actions ndenge na ndenge. Na ndakisa, variable distance ememelamaka na centimètres. Logique ezali boye:

  • Soki distance ezali koleka 50 cm: Nzela ya liboso ezali polele, na yango motuka ekokende liboso na vitesse ya 200.
  • Soki distance ezali kati na 2 cm mpe 10 cm: Motuka ezali penepene mingi na obstacle. Ezali kozonga sima na seconde moko, na yango ezali kobongola na sima-gauche na ndambo ya seconde mpo na koluka nzela ya sika.
  • Soki distance ezali kati na 10 cm mpe 50 cm: Motuka ezali na "zone ya bokebi." Ezali kokende liboso, kasi na vitesse ya malembe ya 150.

Ba valeurs ya seuil oyo (50 cm, 10 cm, mpe 2 cm) mpe ba vitesses (200 mpe 150) ezali ba variables ya liboso oyo okoki kobongola mpo na kobongola comportement ya motuka na yo. Na ndakisa, okoki komatisa distance ya "sécurité" na 60 cm soki motuka na yo ezali kokende mbangu.

Ba Fonctions Personnalisées

Code yango ezali na ba fonctions personalisées mingi mpo na kolakisa ba mouvements ya motuka. Basalelamaka na boucle ya liboso mpo na kokomisa code yango pete mpe mpo na kososola yango malamu.

  • moveForward(int speed): Fonction oyo etyangeli ba moteur pona kotambwisa motuka liboso. Paramètre speed (0-255) ekolakisa ndenge ba moteur ekotambola noki.
  • moveBackward(int speed): Ezali lokola moveForward, kasi ebaloli direction ya moteur pona kotambwisa motuka na sima.
  • backLeft(int speed) mpe backRight(int speed): Ba fonctions oyo bapivoli motuka na kotambwisa moteur moko na sima ntango mosusu atelemaki. Ezali pivot turn oyo esalisi motuka na kobongola direction na yango malamu.
  • stopMove(): Fonction oyo etelemisi ba moteur nyonso na kotia ba contrôle pins nyonso na LOW.
  • readSensorData(): Fonction oyo etindaka pulse longwa na capteur ultrasonique mpe emekaka ntango oyo echo ezongaka. Na sima, ekokutola mosika na centimètres mpe ezongisaka valeur yango.

Démonstration ya Projet na Bomoi

(na vidéo na 07:09) Na démonstration, motuka ezali na esika oyo ezali na ba obstacles ndenge na ndenge lokola ba boîtes mpe ba murs. Logique ya motuka emonanaka tango ezali kotambola. Tango capteur ultrasonique emonaka mur to obstacle mosika koleka 50 cm, ezali kotambola liboso na confiance. Ntango ezali komata pene, ba capteurs IR na ba côtés ezali kotala soki ezali na esika ya polele.

Soki obstacle emonani na gauche, motuka ekosala back-right turn pona kokima yango, mpe soki ezali na droite, ekosala back-left turn. Tango motuka ezali na esika ya moke, lokola na se ya table (na vidéo na 07:49), ezali kosalela ba fonctions ya reverse mpe turn pona kobima mpe koluka nzela ya polele. Motuka ezali kotánga environnement na yango mbala na mbala mpe kosala ba décisions, kolakisa système de contrôle réactif oyo etikali te na nzela oyo ebongisamaki liboso.

Ba Chapitres ya Vidéo

  • [00:00] Introduction na Projet ya Motuka oyo Etambolaka na Yo Moko
  • [00:28] Makambo na tina na Kit SunFounder 3-in-1
  • [01:32] Kofungola Code mpe Botala ya Liboso
  • [02:02] Explication ya Structure ya Code mpe Ba Fonctions ya Sika
  • [03:11] Kobongisa Ba Pins na Fonction Setup
  • [03:28] Logique ya Kopesa Décision na Boucle ya Liboso
  • [05:41] Démonstration na Bomoi: Motuka Ezali Kotambola
  • [07:09] Démonstration na Ba Obstacles mpe Kolanda Murs
  • [09:58] Conclusion mpe Ba Makanisi ya Suka

Images

28 SunFounder Car 6 self-driving path
28 SunFounder Car 6 self-driving path
Car 7 8 28 self driving
Car 7 8 28 self driving
897-Lesson 28/31: Car-6 SunFounder self Driving Arduino car
Langue: C++
/*
Lesson 28/31: Car-6 SunFounder self Driving Arduino car
Get this code and watch video Download and resource page https://robojax.com/RJT611
https://www.youtube.com/watch?v=IyninXUcsn0
*/
const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;

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

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

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 backLeft(int speed) {
  analogWrite(A_1B, speed);
  analogWrite(A_1A, 0);
  analogWrite(B_1B, 0);
  analogWrite(B_1A, 0);
}

void backRight(int speed) {
  analogWrite(A_1B, 0);
  analogWrite(A_1A, 0);
  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);
}

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

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

  //ultrasonic
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);

  //IR obstacle
  pinMode(leftIR, INPUT);
  pinMode(rightIR, INPUT);
}

void loop() {

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

  if (!left && right) {
    backLeft(150);
  } else if (left && !right) {
    backRight(150);
  } else if (!left && !right) {
    moveBackward(150);
  } else {
    float distance = readSensorData();
    Serial.println(distance);
    if (distance > 50) { // Safe
      moveForward(200);
    } else if (distance < 10 && distance > 2) { // Attention
      moveBackward(200);
      delay(1000);
      backLeft(150);
      delay(500);
    } else {
      moveForward(150);
    }
  }
}

Mokili na bisika

Fichiers📁

Maktabat ya Arduino (zip)