diff --git a/code/arduino/Movement-sensor-code/Connectivity.cpp b/code/arduino/Movement-sensor-code/Connectivity.cpp new file mode 100644 index 0000000..ea3515b --- /dev/null +++ b/code/arduino/Movement-sensor-code/Connectivity.cpp @@ -0,0 +1,23 @@ +#include "Connectivity.h" + +void Connectivity::connectWiFi(char* ssid, char* pass){ + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, pass); + while (WiFi.status() != WL_CONNECTED) { + Serial.println("connecting to wifi"); + delay(1000); + } + Serial.println(WiFi.localIP()); +} + +void Connectivity::websocketSetup(){ + //ws server address, port and URL + webSocket.begin("192.168.137.1", 8001, ""); + // try every 500 again if connection has failed + webSocket.setReconnectInterval(500); +} + +void Connectivity::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 diff --git a/code/arduino/Movement-sensor-code/Connectivity.h b/code/arduino/Movement-sensor-code/Connectivity.h new file mode 100644 index 0000000..624eccd --- /dev/null +++ b/code/arduino/Movement-sensor-code/Connectivity.h @@ -0,0 +1,30 @@ +#ifndef Connectivity_h +#define Connectivity_h + +#include "Arduino.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class Connectivity { +public: + void connectWiFi(char* ssid, char* pass); + void websocketSetup(); + void sendData(float roll, float pitch, float yaw); + +private: + ESP8266WiFiMulti wifi; + WebSocketsClient webSocket; +}; + +#endif \ No newline at end of file diff --git a/code/arduino/Movement-sensor-code/Movement-sensor-code.ino b/code/arduino/Movement-sensor-code/Movement-sensor-code.ino index f889f39..28eb441 100644 --- a/code/arduino/Movement-sensor-code/Movement-sensor-code.ino +++ b/code/arduino/Movement-sensor-code/Movement-sensor-code.ino @@ -1,22 +1,26 @@ #include "headerFile.h" -SensorManager sensorManager; -ESP8266WiFiMulti wifi; -WebSocketsClient webSocket; -#define USE_SERIAL Serial +SensorManager::Rotation offset; void setup() { Serial.begin(9600); Serial.println("startup"); delay(5000); - connectWiFi(); + + connectivity.connectWiFi(ssid, pass); sensorManager.sensorSetup(); - websocketSetup(); + connectivity.websocketSetup(); } void loop() { SensorManager::Rotation rotation = sensorManager.readLoop(); + // 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 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)); float pitch = asin(2.0f * (rotation.w * rotation.j - rotation.k * rotation.i)); @@ -32,34 +36,19 @@ void loop() { Serial.print(pitch); Serial.print(" "); Serial.print(yaw); - sendData(roll, pitch, yaw); + connectivity.sendData(roll, pitch, yaw); Serial.println(); webSocket.loop(); -} - -void connectWiFi(){ - - WiFi.mode(WIFI_STA); - wifi.addAP(ssid, pass); - WiFi.begin(); - while (WiFi.status() != WL_CONNECTED) { - Serial.println("connecting to wifi"); - delay(1000); + if (Serial.available()) { + String command = Serial.readStringUntil('\n'); + command.trim(); // remove any trailing whitespace + if (command == "setZeroPoint") { + setZeroPoint(); + } } - Serial.println(WiFi.localIP()); - } - -void websocketSetup(){ - //ws server address, port and URL - webSocket.begin("192.168.178.118", 8001, ""); - // try every 500 again if connection has failed - webSocket.setReconnectInterval(500); +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 diff --git a/code/arduino/Movement-sensor-code/SensorManager.cpp b/code/arduino/Movement-sensor-code/SensorManager.cpp index 4ca3d62..063f0da 100644 --- a/code/arduino/Movement-sensor-code/SensorManager.cpp +++ b/code/arduino/Movement-sensor-code/SensorManager.cpp @@ -1,6 +1,7 @@ #include "SensorManager.h" #include + SensorManager::SensorManager() {} void SensorManager::sensorSetup() { diff --git a/code/arduino/Movement-sensor-code/headerFIle.h b/code/arduino/Movement-sensor-code/headerFIle.h index cd3f6ae..b7b8220 100644 --- a/code/arduino/Movement-sensor-code/headerFIle.h +++ b/code/arduino/Movement-sensor-code/headerFIle.h @@ -1,20 +1,13 @@ -#include +//classes +#include "SensorManager.h" +#include "Connectivity.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +//define +SensorManager sensorManager; +Connectivity connectivity; +WebSocketsClient webSocket; +#define USE_SERIAL Serial -#define ssid "ObsidianAmstelveen" -#define pass "drijversstraatmaastricht" -//custom classes -#include "SensorManager.h" \ No newline at end of file +#define ssid "1235678i" +#define pass "12345678"