diff --git a/code/arduino/Movement-sensor-code/Movement-sensor-code.ino b/code/arduino/Movement-sensor-code/Movement-sensor-code.ino index 6253ccf..09894fe 100644 --- a/code/arduino/Movement-sensor-code/Movement-sensor-code.ino +++ b/code/arduino/Movement-sensor-code/Movement-sensor-code.ino @@ -5,56 +5,24 @@ void setup() { Serial.begin(9600); Serial.println("startup"); - + //connect to internet and start sensor connectivity.connectWiFi(ssid, pass); sensorManager.sensorSetup(); - //ws server address, port and URL - // webSocket.begin("145.28.160.108", 8001, ""); - // try every 500 again if connection has failed - // webSocket.setReconnectInterval(500); } void loop() { SensorManager::eulerAngles eulerRotation = sensorManager.getEulerAngles(); - // Subtract offset - // rotation.i -= offset.i; - // rotation.j -= offset.j; - // rotation.k -= offset.k; - // rotation.w -= offset.w; - - // Convert quaternion to Euler angles in radians - - - // Convert to degrees - // float rollDegrees = roll * 180.0f / PI; - // float pitchDegrees = pitch * 180.0f / PI; - // float yawDegrees = yaw * 180.0f / PI; - Serial.print(eulerRotation.roll); Serial.print(" "); Serial.print(eulerRotation.pitch); Serial.print(" "); Serial.print(eulerRotation.yaw); - sendData(eulerRotation.roll, eulerRotation.pitch, eulerRotation.yaw); - Serial.println(); - // webSocket.loop(); -} -// if (Serial.available()) { -// String command = Serial.readStringUntil('\n'); -// command.trim(); // remove any trailing whitespace -// if (command == "setZeroPoint") { -// setZeroPoint(); -// } -// } -// } -// void setZeroPoint() { -// offset = sensorManager.readLoop(); -// } -void sendData(float roll, float pitch, float yaw){ - String message = "{\"Sensor\": 1, \"roll\":\"" + String(roll) + "\",\"pitch\":\"" + String(pitch) + "\",\"yaw\":\"" + String(yaw) + "\"}"; - webSocket.sendTXT(message); -} \ No newline at end of file + String message = "{\"Sensor\": 1, \"roll\":\"" + String(eulerRotation.roll) + "\",\"pitch\":\"" + String(eulerRotation.pitch) + "\",\"yaw\":\"" + String(eulerRotation.yaw) + "\"}"; + int messageLength = message.length(); + Serial.println(message); + Serial.println(connectivity.httpPost("192.168.137.146", "/", 3445, message.c_str(), message.length(), "json")); +} diff --git a/code/arduino/Movement-sensor-code/SensorManager.cpp b/code/arduino/Movement-sensor-code/SensorManager.cpp index 50a0052..f9cae9d 100644 --- a/code/arduino/Movement-sensor-code/SensorManager.cpp +++ b/code/arduino/Movement-sensor-code/SensorManager.cpp @@ -15,20 +15,20 @@ void SensorManager::sensorSetup() { //start sensorfunction and start autocalibration //once calibration is enabled it attempts to every 5 min - Wire.setClock(400000); //Increase I2C data rate to 400kHz - myIMU.calibrateAll(); //Turn on cal for Accel, Gyro, and Mag + Wire.setClock(400000); + myIMU.calibrateAll(); myIMU.enableGyroIntegratedRotationVector(100); //send data every 100ms myIMU.enableMagnetometer(100); //Send data update every 100ms myIMU.saveCalibration(); //Saves the current dynamic calibration data (DCD) to memory myIMU.requestCalibrationStatus(); //Sends command to get the latest calibration status - + //Never seen this work in serial console if (myIMU.calibrationComplete() == true) { Serial.println("Calibration data successfully stored"); } Serial.println(F("magnetometer rotation enabled")); } - +//get sensordata SensorManager::RotationQuintillions SensorManager::getQuintillions() { if (myIMU.dataAvailable() == true) { float i = myIMU.getQuatI(); @@ -48,7 +48,7 @@ SensorManager::RotationQuintillions SensorManager::getQuintillions() { return rotation; } } - +//calculate Quintillions to Euler angles from -1π to +1π SensorManager::eulerAngles SensorManager::getEulerAngles() { SensorManager::RotationQuintillions rotation = getQuintillions(); float roll = atan2(2.0f * (rotation.w * rotation.i + rotation.j * rotation.k), 1.0f - 2.0f * (rotation.i * rotation.i + rotation.j * rotation.j)); @@ -56,4 +56,6 @@ SensorManager::eulerAngles SensorManager::getEulerAngles() { float yaw = atan2(2.0f * (rotation.w * rotation.k + rotation.i * rotation.j), 1.0f - 2.0f * (rotation.j * rotation.j + rotation.k * rotation.k)); eulerAngles EulerAngles = { roll, pitch, yaw }; return EulerAngles; -} \ No newline at end of file +} + +SensorManager::bool \ No newline at end of file