Search Code

Lecția 29/31: Mașina-7 Controlul mașinii inteligente SunFounder folosind telecomanda | Robojax

Lecția 29/31: Mașina-7 Controlul mașinii inteligente SunFounder folosind telecomanda | Robojax

În această lecție, vom transforma mașina inteligentă SunFounder într-un vehicul controlat de la distanță folosind o telecomandă cu infraroșu (IR). În loc să ne bazăm pe o conexiune prin cablu sau pe o aplicație pentru smartphone, vei învăța cum să mapăm butoanele unei telecomenzi IR standard pentru a controla mișcarea mașinii—înainte, înapoi, viraje și chiar manevre diagonale—precum și pentru a ajusta viteza din mers. Acest proiect este un pas perfect următor după ce ai învățat elementele de bază ale controlului motoarelor și comunicării IR, deoarece combină ambele într-un singur sistem interactiv.

Valoarea practică aici constă în înțelegerea modului de a crea o interfață de control robustă și ușor de utilizat pentru o platformă robotică. Principiile pe care le vei învăța sunt direct aplicabile unei game largi de proiecte, cum ar fi:

  • Construirea unui robot controlat de la distanță pentru sarcini de automatizare a locuinței, cum ar fi un mic robot de livrare.
  • Crearea unui vehicul programabil pentru competiții educaționale de robotică.
  • Dezvoltarea unei telecomenzi personalizate pentru un slider de cameră sau un mecanism pan-tilt.
  • Prototiparea unei interfețe de utilizator pentru un sistem automatizat mai mare și mai complex.

Hardware și componente

Acest proiect se bazează pe kit-ul SunFounder 3-in-1 Arduino. Pentru a urmări lecția, vei avea nevoie de componentele listate mai jos. Conexiunile sunt simple, extinzându-se de la lecțiile anterioare din curs.

  • Kit-ul SunFounder 3-in-1 Arduino: Acesta include șasiul mașinii inteligente, placa de driver pentru motoare și placa Arduino.
  • Telecomandă cu infraroșu: Telecomanda standard care vine cu kit-ul.
  • Modul receptor IR: Senzorul care va decodifica semnalele de la telecomandă.
  • LED și rezistor de 330 ohmi: Folosite ca indicator vizual pentru a confirma că o tastă a fost apăsată. (în video la 04:08)
  • Fire de legătură: Pentru realizarea conexiunilor necesare pe breadboard.

Ghid de cablare

car_9_lesson_29_wriing_for_IR

Înainte de a trece la cod, să ne asigurăm că hardware-ul este conectat corect. Cablarea receptorului IR și a driverului de motoare este consecventă cu lecțiile anterioare din această serie. Pentru a face proiectul mai interactiv, vom conecta și un LED extern la pinul 13 ca indicator vizual de feedback.

Iată un ghid pas cu pas pentru conexiuni:

  1. Receptorul IR: Receptorul IR are trei pini. Pinul pozitiv se conectează la linia de 5V de pe breadboard. Pinul de masă se conectează la linia GND. Pinul de semnal, care este ultimul pin, se conectează la pinul digital 11 de pe placa ta Arduino. (în video la 05:29)
  2. LED extern: Conectează un picior al rezistorului de 330 ohmi la pinul digital 13 de pe Arduino. Conectează celălalt picior al rezistorului la piciorul mai lung (anodul) al LED-ului. Piciorul mai scurt (catodul) al LED-ului trebuie conectat la linia GND de pe breadboard. (în video la 04:08)
  3. Driverul de motoare: Cei patru pini pentru driverul de motoare (A_1B, A_1A, B_1B, B_1A) sunt conectați la pinii 5, 6, 9 și 10 de pe Arduino, respectiv. Această configurație a fost acoperită în lecțiile anterioare. (în video la 06:44)

Pentru o referință vizuală a acestor conexiuni, te rugăm să consulți diagrama de cablare de mai jos.

Explicația codului

Codul pentru acest proiect este conceput pentru a fi intuitiv. Folosește biblioteca IRremote pentru a gestiona sarcina complexă de decodificare a semnalelor IR. Să descompunem părțile configurabile de utilizator pe care ai putea dori să le ajustezi pentru propriile proiecte.

În partea de sus a schiței, vei găsi definițiile pinilor. Acestea sunt primele lucruri pe care ar trebui să le verifici dacă ți-ai conectat componentele la alți pini decât cei folosiți în acest exemplu.

const int IR_RECEIVE_PIN = 12;  // Definește numărul pinului pentru senzorul IR
const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;
  • IR_RECEIVE_PIN: Această constantă definește pinul digital conectat la pinul de semnal al receptorului tău IR. Dacă l-ai conectat la un alt pin, ai schimba numărul de aici.
  • A_1B, A_1A, B_1B, B_1A: Aceste constante corespund celor patru pini de control de pe driverul tău de motoare. Ele controlează viteza și direcția motoarelor stânga și dreapta.

În continuare, vei găsi o variabilă crucială care controlează comportamentul mașinii.

int speed = 150;
  • speed: Această variabilă setează viteza inițială a mașinii. Valoarea poate varia de la 0 la 255. În acest proiect, o poți schimba folosind tastele "+" și "-" de pe telecomandă. Codul include, de asemenea, logică pentru a preveni depășirea valorii de 255 sau scăderea sub 0. (în video la 09:22)

Logica de bază a telecomenzii este gestionată în funcția loop(). Când este apăsată o tastă, funcția decodeKeyValue() traduce codul IR brut într-un șir simplu precum "2" pentru înainte sau "+" pentru creșterea vitezei. Acest lucru face ca instrucțiunile if care urmează să fie foarte ușor de citit și de modificat. (în video la 07:58)

Funcțiile personalizate precum moveForward(), turnRight() și moveLeft() sunt locul unde are loc controlul motorului. Fiecare funcție primește speed (viteza) curentă ca argument. De exemplu, moveForward(speed) va acționa ambele motoare înainte la viteza specificată. Diferența cheie între o „virare” și o „deplasare” este că o virare rotește ambele roți în direcții opuse, făcând mașina să se rotească pe loc, în timp ce o deplasare rotește doar o roată, făcând mașina să se arcuiască în jurul roții staționare. (în video la 10:14)

Demonstrație live a proiectului

Cu codul încărcat și mașina pornită, telecomanda devine interfața ta principală. Demonstrația din video evidențiază câteva comportamente cheie:

  • Controlul vitezei: Apăsarea tastei „+” crește viteza cu 50, în timp ce tasta „-” o scade. Viteza este limitată la 255 și minimă la 0 pentru a proteja motoarele. (în video la 11:56)
  • Mișcare momentană: Când apeși o tastă de direcție precum „2” (înainte) sau „8” (înapoi), mașina se va mișca timp de o secundă și apoi se va opri automat. Aceasta este o caracteristică de siguranță încorporată în cod. (în video la 13:09)
  • Virare și manevrare: Tastele aranjate într-un model de cruce pe telecomandă acționează ca un joystick. Apăsarea „4” sau „6” va vira mașina la stânga sau la dreapta pe loc. Apăsarea tastelor diagonale, precum „1” sau „3”, va efectua o „deplasare la stânga” sau „deplasare la dreapta”, care este o virare mai strânsă în care o roată este staționară. (în video la 16:42)

Un lucru pe care s-ar putea să-l observi este că mașina nu merge întotdeauna perfect în linie dreaptă. Acest lucru se datorează adesea unor diferențe minore între motoare sau tensiunii ansamblului mașinii, ceea ce este o caracteristică comună și normală a acestor kituri. (în video la 15:14)

Capitole

  • [00:00] Introducere în controlul prin telecomandă IR pentru mașina inteligentă
  • [01:15] Condiții prealabile și lecții anterioare necesare
  • [01:56] Prezentare generală a documentației proiectului
  • [02:29] Înțelegerea funcțiilor tastelor telecomenzii
  • [03:29] Ghid pas cu pas pentru cablarea receptorului IR și a LED-ului
  • [05:51] Deschiderea și încărcarea codului proiectului
  • [07:41] Explicația codului: buclă, decodificarea tastelor și acțiuni
  • [09:22] Limitarea vitezei și caracteristici de siguranță în cod
  • [10:08] Explicația funcțiilor de mișcare a motorului
  • [11:49] Demonstrație live: testarea controlului vitezei și a clipirii LED-ului
  • [13:27] Demonstrație live: înainte, înapoi și virare
  • [14:31] Demonstrație completă a mașinii cu alimentare și mișcare

Imagini

car_9_lesson_29_wriing_for_IR
car_9_lesson_29_wriing_for_IR
896-Lesson 29/31: Car-7 Controlling SunFounder Smart Car using Remote Controller
Limba: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Resurse și referințe

Fișiere📁

Biblioteci Arduino (zip)