
IMU Ethernet initial commit
Dependencies: F7_Ethernet MadgwickAHRS mbed
Revision 1:7d5d767744cd, committed 2016-10-06
- Comitter:
- rctaduio
- Date:
- Thu Oct 06 16:57:03 2016 +0000
- Parent:
- 0:80a695ae3cc3
- Commit message:
- IMU Ethernet initial commit;
Changed in this revision
F7_Ethernet.lib | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 80a695ae3cc3 -r 7d5d767744cd F7_Ethernet.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/F7_Ethernet.lib Thu Oct 06 16:57:03 2016 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/rctaduio/code/F7_Ethernet/#e0a4035b5cd1
diff -r 80a695ae3cc3 -r 7d5d767744cd main.cpp --- a/main.cpp Wed Sep 28 23:59:57 2016 +0000 +++ b/main.cpp Thu Oct 06 16:57:03 2016 +0000 @@ -10,12 +10,20 @@ #include "MPU9250.h" #include "TCA9548.h" #include "MadgwickAHRS.h" +#include "EthernetInterface.h" + MPU9250 mpu9250[8]; bool validIMU[8] = {0}; Timer t; -//Serial pc(USBTX, USBRX); // tx, rx Serial pc(USBTX, USBRX); // tx, rx +EthernetInterface eth0; +TCPSocketConnection sock; +UDPSocket usock; +Endpoint client; +char SERVER_IP_ADDRESS[] = "192.168.1.132"; +uint16_t PORT_NUMBER = 8; + TCA9548 mux; uint16_t timeout= 60000; // set menu timeout to 60 seconds @@ -46,6 +54,8 @@ {"Imu"} }; +char transmitData[1024] = "test data"; + ///////////////////////////////////////////////////// // // protoyptes @@ -61,6 +71,7 @@ void termCLS(Serial &pc); void transmit(Serial &pc); void getHeader(Serial &pc); +void buildData(uint8_t packet_number, uint16_t packet_offset); //////////////////////////////////////////////////// @@ -76,6 +87,7 @@ // 230400, 460800, 921600 pc.baud(230400); pc.format(8, Serial::None, 1); + //pc.set_flow_control(Serial::RTSCTS, Serial::RTS, Serial::CTS); //Set up I2C i2c.frequency(400000); // use fast (400 kHz) I2C @@ -104,31 +116,6 @@ while(1); }// end of no IMU's - - /* //offsets from calibration - mpu9250[0].magbias[0] = -136.016697; - mpu9250[0].magbias[1] = 180.7041165; - mpu9250[0].magbias[2] = 531.2385865; - mpu9250[1].magbias[0] = -100.170666; - mpu9250[1].magbias[1] = 38.8694595; - mpu9250[1].magbias[2] = 162.8754425; - mpu9250[2].magbias[0] = -3.1089525; - mpu9250[2].magbias[1] = -143.011841; - mpu9250[2].magbias[2] = 612.3983765; - mpu9250[3].magbias[0] = 100.5001715; - mpu9250[3].magbias[1] = 244.6917115; - mpu9250[3].magbias[2] = 302.4588625; - mpu9250[4].magbias[0] = -175.6558455; - mpu9250[4].magbias[1] = 200.3966675; - mpu9250[4].magbias[2] = 573.4207155; - mpu9250[5].magbias[0] = -38.8619135; - mpu9250[5].magbias[1] = -484.9966735; - mpu9250[5].magbias[2] = 690.353607; - mpu9250[6].magbias[0] = -83.4814225; - mpu9250[6].magbias[1] = 131.300442; - mpu9250[6].magbias[2] = 200.63311; - */ - mpu9250[0].magbias[0] = -259.875; mpu9250[0].magbias[1] = 306.65; mpu9250[0].magbias[2] = 334.755; @@ -151,6 +138,21 @@ mpu9250[6].magbias[1] = 278.445; mpu9250[6].magbias[2] = 23.985; + eth0.init(); + eth0.connect(); + pc.printf("\nClient IP Address is %s\n", eth0.getIPAddress()); + usock.init(); + //usock.bind(7); + + client.set_address("192.168.1.132", 8); + + //char buffer[2048] = "EMPTY"; + //usock.sendTo(client, buffer, sizeof(buffer)); + + + + + menu(pc); } // end of main @@ -218,7 +220,7 @@ break; default: - //break; + break; } wait(.1); } // end of wait to start @@ -374,7 +376,9 @@ /////////////////////////////////////////////////// void getdata(Serial &pc) { + uint8_t bufSize = 0; while(1) { + if (pc.readable()) if (pc.getc() == '0') menu(pc); for (uint8_t i = 0; i < 8; i++) { @@ -386,8 +390,8 @@ // On interrupt, check if data ready interrupt uint32_t checksum = 0; mpu9250[i].readimu(); - - + + mpu9250[i].Now = t.read_us(); mpu9250[i].deltat = (float)((mpu9250[i].Now - mpu9250[i].lastUpdate)/1000000.0f) ; // set integration time by time elapsed since last filter update mpu9250[i].lastUpdate = mpu9250[i].Now; @@ -409,10 +413,10 @@ mpu9250[i].pitch *= 180.0f / PI; mpu9250[i].yaw *= 180.0f / PI; mpu9250[i].roll *= 180.0f / PI; - - - - transmit(pc); + + + + Data[1] = 1000*mpu9250[i].ax; Data[2] = 1000*mpu9250[i].ay; Data[3] = 1000*mpu9250[i].az; @@ -422,7 +426,7 @@ Data[7] = mpu9250[i].mx; Data[8] = mpu9250[i].my; Data[9] = mpu9250[i].mz; - + Data[10] = mpu9250[i].temperature; Data[11] = mpu9250[i].q[0]; Data[12] = mpu9250[i].q[1]; @@ -432,9 +436,22 @@ Data[16] = mpu9250[i].pitch; Data[17] = mpu9250[i].roll; Data[18] = mpu9250[i].checksum; - + Data[19] = i; + //transmit(pc); + buildData(bufSize, 256); + bufSize++; + if (bufSize >=4) { + //pc.printf("hit 5"); + bufSize = 0; + usock.sendTo(client, transmitData, sizeof(transmitData)); + //usock.sendTo(client, "balh", 1024); + memset(transmitData, 0, sizeof(transmitData)); + // sock.send_all(transmitData, 1800); + } + + count = t.read_ms(); if(count > 1<<21) { @@ -477,3 +494,24 @@ } if (stuff >0) pc.printf("\r\n"); } + +///////////////////////////////////////////////// +// +// Build data string +// Helper function to build string for transmitting data +// +///////////////////////////////////////////////// +void buildData(uint8_t packet_number, uint16_t packet_offset) +{ + // testing with sending 8 * 1 packet + uint32_t offset = packet_number * packet_offset; + //uint32_t offset = 256*1; + //memset(transmitData, 0, sizeof(transmitData)); + + for(uint8_t i = 0; i < hSize; i++) { + uint8_t n = sprintf(transmitData + offset, "%.2f,", Data[i]); + offset += n; + + } // end of for + uint8_t n = sprintf(transmitData + offset, " END ",5); +}// end of void