Grupă: 333CC
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:
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).