IMU Ethernet initial commit

Dependencies:   F7_Ethernet MadgwickAHRS mbed

Files at this revision

API Documentation at this revision

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
--- /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
--- 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