Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:amocanu:iulia.popescu2012 [2024/05/27 00:51]
iulia.popescu2012 [Software Design]
pm:prj2024:amocanu:iulia.popescu2012 [2024/05/27 01:26] (current)
iulia.popescu2012 [Hardware Design]
Line 7: Line 7:
 ===== Descriere generală ===== ===== Descriere generală =====
  
-{{ :​pm:​prj2024:​amocanu:​masina-diagrama.png?​nolink&​700 |}}+{{ :​pm:​prj2024:​amocanu:​masina-diagrama.png?​nolink&​750 |}}
  
 Visul meu la scară mică este alcătuit din două părți: Visul meu la scară mică este alcătuit din două părți:
Line 19: Line 19:
 Partea de controller remote presupune un Arduino Uno, shielduit cu modulul joystick și butoanele aferente Funduino. Acest shield se va alimenta la sursa de 6V, obținută prin atașarea a 4 baterii AA într-un suport. Fiind un input de peste 5V, Uno va face output pe pinul de 5V, ce va fi folosit ca să alimenteze modulul Bluetooth cu rol master. Cum nu am reușit să descopăr modul de utilizare a pinilor sub eticheta de '​Bluetooth'​ (sau mi-am luat țeapă și chiar nu merg), am folosit pinii originali de RX/TX pentru comunicarea serială cu mașina. Partea de controller remote presupune un Arduino Uno, shielduit cu modulul joystick și butoanele aferente Funduino. Acest shield se va alimenta la sursa de 6V, obținută prin atașarea a 4 baterii AA într-un suport. Fiind un input de peste 5V, Uno va face output pe pinul de 5V, ce va fi folosit ca să alimenteze modulul Bluetooth cu rol master. Cum nu am reușit să descopăr modul de utilizare a pinilor sub eticheta de '​Bluetooth'​ (sau mi-am luat țeapă și chiar nu merg), am folosit pinii originali de RX/TX pentru comunicarea serială cu mașina.
  
-{{ :​pm:​prj2024:​amocanu:​car-uno.png?​nolink&​800 |}}+{{ :​pm:​prj2024:​amocanu:​car-uno.png?​nolink&​750 |}}
  
 În ce privește mașina propriu zisă, ea are ca nucleu un Arduino Nano, care operează strict ca output. El primește date serial de la modulul Bluetooth atașat, care este configurat drept slave în comunicare. Alimentarea este realizată cu 7 baterii AA, separate în doi suporți, pentru a asigura performanța de durată a mașinii: 4 baterii AA (6V) pentru cele două motoare cu reductor (3-6V), respectiv 3 baterii AA (4.5V) pentru alimentarea plăcuței Nano (3.3V minim), care la rândul ei alimentează modulul HC-05 (3.3V - 5V). Tot de plăcuța Nano sunt atașate 3 diode LED pentru semnalizarea luminoasă și un buzzer cu rol de claxon. În ce privește mașina propriu zisă, ea are ca nucleu un Arduino Nano, care operează strict ca output. El primește date serial de la modulul Bluetooth atașat, care este configurat drept slave în comunicare. Alimentarea este realizată cu 7 baterii AA, separate în doi suporți, pentru a asigura performanța de durată a mașinii: 4 baterii AA (6V) pentru cele două motoare cu reductor (3-6V), respectiv 3 baterii AA (4.5V) pentru alimentarea plăcuței Nano (3.3V minim), care la rândul ei alimentează modulul HC-05 (3.3V - 5V). Tot de plăcuța Nano sunt atașate 3 diode LED pentru semnalizarea luminoasă și un buzzer cu rol de claxon.
  
-{{ :​pm:​prj2024:​amocanu:​car-nano.png?​nolink&​800 |}}+{{ :​pm:​prj2024:​amocanu:​car-nano.png?​nolink&​750 |}}
  
 <note tip> <note tip>
 Bluetooth Pairing Bluetooth Pairing
  
-Pentru a face pair la cele două module HC-05, am trecut printr-o serie de etape și încercări la diferite lungimi de bandă. În documentația originală, se impune default o funcționare pe 9600 baud, configurarea realizându-se la 38400 baud. Din nefericire, 9600 de biți pe secundă s-au dovedit a fi prea puțin pentru un transfer smooth de date, așa că am ridicat cota până la 38400 de biți pe secundă. Diferențele observate au fost evidente, dar nu am îndrăznit să merg mai departe la o rată mai mare, deoarece unul dintre modulele Bluetooth pe care le-am achiziționat s-a covedit ​a fi mai vechi și mi-am cam luat țeapă, dar 38400 baud este chiar decent ca viteză.+Pentru a face pair la cele două module HC-05, am trecut printr-o serie de etape și încercări la diferite lungimi de bandă. În documentația originală, se impune default o funcționare pe 9600 baud, configurarea realizându-se la 38400 baud. Din nefericire, 9600 de biți pe secundă s-au dovedit a fi prea puțin pentru un transfer smooth de date, așa că am ridicat cota până la 38400 de biți pe secundă. Diferențele observate au fost evidente, dar nu am îndrăznit să merg mai departe la o rată mai mare, deoarece unul dintre modulele Bluetooth pe care le-am achiziționat s-a dovedit ​a fi mai vechi și mi-am cam luat țeapă, dar 38400 baud este chiar decent ca viteză.
  
 Procesul în sine a constat în trecerea a modului de configurare în cazul ambelor module, master pentru controller și slave pentru mașină. Intrând în slave, am copiat adresa MAC a device-ului și am schimat rata de transfer la 38400 baud, față de valoarea default de 9600 baud. Comenzile folosite au fost următoarele:​ Procesul în sine a constat în trecerea a modului de configurare în cazul ambelor module, master pentru controller și slave pentru mașină. Intrând în slave, am copiat adresa MAC a device-ului și am schimat rata de transfer la 38400 baud, față de valoarea default de 9600 baud. Comenzile folosite au fost următoarele:​
Line 47: Line 47:
 </​code>​ </​code>​
  
-În urma configurării software (realizată ba în monitorul serial oferit de Arduino IDE, fie cu utilitarul CoolTerm), am deconectat modulele ca acestea să-și dea un restart, ca mai apoi să intre în modul de discovery și master să îl găsească pe slave. Cele două module Bluetooth clipesc sincron și sunt gata să fie folosite.+În urma configurării software (realizată ba în monitorul serial oferit de Arduino IDE, ba cu utilitarul ​[[https://​coolterm.en.lo4d.com/​windows|CoolTerm]]), am deconectat modulele ca acestea să-și dea un restart, ca mai apoi să intre în modul de discovery și master să îl găsească pe slave. Cele două module Bluetooth clipesc sincron și sunt gata să fie folosite.
  
 </​note>​ </​note>​
Line 171: Line 171:
 Starea 0 (48 în ASCII) este cea default, în care mașina nu se mișcă deloc și nu are loc nicio schimbare de la starea anterioară. Mai jos las o listă de stări valide în cod, care sunt responsabile de partajarea unei instrucțiuni:​ Starea 0 (48 în ASCII) este cea default, în care mașina nu se mișcă deloc și nu are loc nicio schimbare de la starea anterioară. Mai jos las o listă de stări valide în cod, care sunt responsabile de partajarea unei instrucțiuni:​
  
-* 0, stare de repaus +  ​* 0, stare de repaus 
-* 1 - 2, stări de mișcare înainte - înapoi +  * 1 - 2, stări de mișcare înainte - înapoi 
-* 3 - 4, stări de rotire dreapta - stânga pe loc, direcția înainte +  * 3 - 4, stări de rotire dreapta - stânga pe loc, direcția înainte 
-* 5 - 6, stări de rotire dreapta - stânga larg, direcția înainte +  * 5 - 6, stări de rotire dreapta - stânga larg, direcția înainte 
-* 7 - 8, stări de rotire dreapta - stânga larg, direcția înapoi +  * 7 - 8, stări de rotire dreapta - stânga larg, direcția înapoi 
-* a - f, stări date de butoane, în ordine: +  * a - f, stări date de butoane, în ordine: 
-  * A, claxon +    * A, claxon 
-  * B, semnalizare dreapta +    * B, semnalizare dreapta 
-  * C, - +    * C, - 
-  * D, semnalizare stânga +    * D, semnalizare stânga 
-  * E, oprire semnalizare +    * E, oprire semnalizare 
-  * F, oprire claxon+    * F, oprire claxon
  
 Deoarece am ales comunicare printr-un singur caracter trimis o dată, este nevoie de un terminator al comenzilor prin butoane. Din acest motiv, am ales să folosesc butoanele E și F din shield. Alternativ, aș fi putut implementa un reader mai deștept pentru butoane, care să nu transmită în mod repetat aceaști stare dacă butonul este ținut apăsat, dar nu am făcut asta. De ce? Nu știu, dar oricum e târziu și nu voi modifica sau ceva. Deoarece am ales comunicare printr-un singur caracter trimis o dată, este nevoie de un terminator al comenzilor prin butoane. Din acest motiv, am ales să folosesc butoanele E și F din shield. Alternativ, aș fi putut implementa un reader mai deștept pentru butoane, care să nu transmită în mod repetat aceaști stare dacă butonul este ținut apăsat, dar nu am făcut asta. De ce? Nu știu, dar oricum e târziu și nu voi modifica sau ceva.
Line 195: Line 195:
 </​note>​ </​note>​
  
 +{{ :​pm:​prj2024:​amocanu:​whatsapp_image_2024-05-26_at_17.30.24_412eedf6.jpg?​nolink&​750 |}}
 +
 +{{ :​pm:​prj2024:​amocanu:​whatsapp_image_2024-05-27_at_00.59.01_42dec0c8.jpg?​nolink&​750 |}}
 +
 +{{ :​pm:​prj2024:​amocanu:​whatsapp_image_2024-05-27_at_01.02.53_cef7e198.jpg?​nolink&​750 |}}
 ===== Concluzii ===== ===== Concluzii =====
  
 +În sfârșit mi-am folosit banda de legat cabluri pe care am luat-o de pe Temu anul trecut!!
 +
 +Am învățat:
 +  * Cum se realizează pairing-ul între două module Bluetooth
 +  * Este exponențial mai ușor controlul a două motoare, față de 4 motoare
 +  * Să lipesc fire cu pistolul de lipit fără să mă ard tare
 +  * Motorul cu reductor chiar consumă mult, nu mă așteptam să am nevoie de atâtea baterii
 +  * Să nu am încredere în niciun site că îmi vinde piese legite deoarece chinezăria poate să vină și de la cei mai buni prieteni (la tine mă uit, optimus)
 +  * Să nu renunț
 ===== Download ===== ===== Download =====
  
-<note warning>​ +{{:pm:​prj2024:​amocanu:​dreamcar.zip|}}
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+
  
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. 
-</​note>​ 
  
 ===== Jurnal ===== ===== Jurnal =====
  
 <note tip> <note tip>
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.+L-am început ​și l-am terminat.
 </​note>​ </​note>​
  
Line 214: Line 225:
  
 <​note>​ <​note>​
-Listă cu documentedatasheet-uriresurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.+[[https://​forum.arduino.cc/​t/​serial-input-basics-updated/​382007|Serial Input Basics]]\\ 
 +[[https://​docs.arduino.cc/​|Documentația Arduino IDE]]\\ 
 +[[https://​www.asciitable.com/​|ASCII TABLE]]\\ 
 +[[https://​youtu.be/​uOUSW00n838?​si=vFjcMrQjQ5-SJNx4|Saravanan ALcel mai mișto indian]]\\ 
 +[[https://​www.youtube.com/​watch?​v=rWdm0-9zZ8s|Muhammad Ansaral doilea cel mai mișto indian]]\\ 
 +[[https://​www.youtube.com/​watch?​v=Ey4xoG970Go|Behind a DC Motor]]\\ 
 +[[https://​coolterm.en.lo4d.com/​windows|CoolTerm]]
 </​note>​ </​note>​
  
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ 
  
pm/prj2024/amocanu/iulia.popescu2012.1716760287.txt.gz · Last modified: 2024/05/27 00:51 by iulia.popescu2012
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0