This is an old revision of the document!
Proiectul presupune implementarea a două părți: emițătorul, atașat de mână, alcătuit în principal dintr-un giroscop și un modul wireless prin care trimite date, și receptorul, atașat de mașină, care interpretează datele primite și ajustează viteza și direcția mașinii folosind un modul de driver de motor.
Comunicarea giroscopului cu Arduino Nano se face prin intermediul comunicării I2C, prin urmare am conectat SCL si SDA pe pinii specifici:
Comunicarea intre modulele wireless se face cu ajutorul SPI-ului, am conectat pinii MOSI, MISO si SCK la pinii specifici de pe Arduino:
Imagini:
Inainte de lipire (emiţător):
După lipire (emiţător):
Librării folosite:
Iniţializare structuri si variabile necesare pentru MPU6050:
// MPU control/status vars MPU6050 mpu; bool dmpReady = false; // set true if DMP init was successful uint8_t devStatus; // return status after each device operation (0 = success, !0 = error) uint16_t packetSize; // expected DMP packet size (default is 42 bytes) uint8_t fifoBuffer[64]; // FIFO storage buffer Quaternion q; // [w, x, y, z] quaternion container VectorFloat gravity; // [x, y, z] gravity vector float ypr[3]; // [yaw, pitch, roll] yaw/pitch/roll container and gravity vector
Setare adresă de comunicaţie si pinii CE si CSN pentru modulul wireless:
const uint64_t pipeOut = 0xF9E8F0F0E1LL; RF24 radio(8, 9);
Pachetul trimis intre modulele wireless:
struct PacketData { byte xAxisValue; byte yAxisValue; } data;
Extrag x-ul si y-ul folosind funcţii specifici MPU-ului, apoi le trimit catre receptor:
radio.write(&data, sizeof(PacketData));
Receptorul preia datele trimise:
radio.read(&receiverData, sizeof(PacketData));
Funcţia rotateMotor controlează direcţia motoarelor de pe partea stangă si dreaptă, iar apoi setează folosind PWM viteza acestora.
În cadrul proiectului, am învățat să lipesc componente și să creez și să folosesc scheme electrice. De asemenea, am realizat importanța unor baterii potrivite pentru a putea alimenta circuitele. Bateriile de 9V, 600 mAh aveau o capacitate prea mică pentru a putea folosi in mod normal motoarele DC, le-am schimbat cu baterii de 5000 mAh, 7.4V (2 de 3.7V in serie).
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.