cleanup + serial communication for setting zeropoint and put wifi in its own class
This commit is contained in:
23
code/arduino/Movement-sensor-code/Connectivity.cpp
Normal file
23
code/arduino/Movement-sensor-code/Connectivity.cpp
Normal file
@@ -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);
|
||||||
|
}
|
30
code/arduino/Movement-sensor-code/Connectivity.h
Normal file
30
code/arduino/Movement-sensor-code/Connectivity.h
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#ifndef Connectivity_h
|
||||||
|
#define Connectivity_h
|
||||||
|
|
||||||
|
#include "Arduino.h"
|
||||||
|
#include <WebSocketsClient.h>
|
||||||
|
#include <ArduinoWiFiServer.h>
|
||||||
|
#include <ESP8266WiFi.h>
|
||||||
|
#include <ESP8266WiFiGeneric.h>
|
||||||
|
#include <ESP8266WiFiGratuitous.h>
|
||||||
|
#include <ESP8266WiFiMulti.h>
|
||||||
|
#include <ESP8266WiFiSTA.h>
|
||||||
|
#include <ESP8266WiFiScan.h>
|
||||||
|
#include <ESP8266WiFiType.h>
|
||||||
|
#include <WiFiClient.h>
|
||||||
|
#include <WiFiServer.h>
|
||||||
|
#include <WiFiServerSecure.h>
|
||||||
|
#include <WiFiUdp.h>
|
||||||
|
|
||||||
|
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
|
@@ -1,22 +1,26 @@
|
|||||||
#include "headerFile.h"
|
#include "headerFile.h"
|
||||||
|
|
||||||
SensorManager sensorManager;
|
SensorManager::Rotation offset;
|
||||||
ESP8266WiFiMulti wifi;
|
|
||||||
WebSocketsClient webSocket;
|
|
||||||
#define USE_SERIAL Serial
|
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(9600);
|
Serial.begin(9600);
|
||||||
Serial.println("startup");
|
Serial.println("startup");
|
||||||
delay(5000);
|
delay(5000);
|
||||||
connectWiFi();
|
|
||||||
|
connectivity.connectWiFi(ssid, pass);
|
||||||
sensorManager.sensorSetup();
|
sensorManager.sensorSetup();
|
||||||
websocketSetup();
|
connectivity.websocketSetup();
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
SensorManager::Rotation rotation = sensorManager.readLoop();
|
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
|
// 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 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));
|
float pitch = asin(2.0f * (rotation.w * rotation.j - rotation.k * rotation.i));
|
||||||
@@ -32,34 +36,19 @@ void loop() {
|
|||||||
Serial.print(pitch);
|
Serial.print(pitch);
|
||||||
Serial.print(" ");
|
Serial.print(" ");
|
||||||
Serial.print(yaw);
|
Serial.print(yaw);
|
||||||
sendData(roll, pitch, yaw);
|
connectivity.sendData(roll, pitch, yaw);
|
||||||
|
|
||||||
Serial.println();
|
Serial.println();
|
||||||
webSocket.loop();
|
webSocket.loop();
|
||||||
}
|
|
||||||
|
|
||||||
|
if (Serial.available()) {
|
||||||
void connectWiFi(){
|
String command = Serial.readStringUntil('\n');
|
||||||
|
command.trim(); // remove any trailing whitespace
|
||||||
WiFi.mode(WIFI_STA);
|
if (command == "setZeroPoint") {
|
||||||
wifi.addAP(ssid, pass);
|
setZeroPoint();
|
||||||
WiFi.begin();
|
}
|
||||||
while (WiFi.status() != WL_CONNECTED) {
|
|
||||||
Serial.println("connecting to wifi");
|
|
||||||
delay(1000);
|
|
||||||
}
|
}
|
||||||
Serial.println(WiFi.localIP());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
void setZeroPoint() {
|
||||||
void websocketSetup(){
|
offset = sensorManager.readLoop();
|
||||||
//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 sendData(float roll, float pitch, float yaw){
|
|
||||||
String message = "{\"Sensor\": 1, \"roll\":\"" + String(roll) + "\",\"pitch\":\"" + String(pitch) + "\",\"yaw\":\"" + String(yaw) + "\"}";
|
|
||||||
webSocket.sendTXT(message);
|
|
||||||
}
|
|
@@ -1,6 +1,7 @@
|
|||||||
#include "SensorManager.h"
|
#include "SensorManager.h"
|
||||||
#include <Wire.h>
|
#include <Wire.h>
|
||||||
|
|
||||||
|
|
||||||
SensorManager::SensorManager() {}
|
SensorManager::SensorManager() {}
|
||||||
|
|
||||||
void SensorManager::sensorSetup() {
|
void SensorManager::sensorSetup() {
|
||||||
|
@@ -1,20 +1,13 @@
|
|||||||
#include <WebSocketsClient.h>
|
//classes
|
||||||
|
#include "SensorManager.h"
|
||||||
|
#include "Connectivity.h"
|
||||||
|
|
||||||
#include <ArduinoWiFiServer.h>
|
//define
|
||||||
#include <ESP8266WiFi.h>
|
SensorManager sensorManager;
|
||||||
#include <ESP8266WiFiGeneric.h>
|
Connectivity connectivity;
|
||||||
#include <ESP8266WiFiGratuitous.h>
|
WebSocketsClient webSocket;
|
||||||
#include <ESP8266WiFiMulti.h>
|
#define USE_SERIAL Serial
|
||||||
#include <ESP8266WiFiSTA.h>
|
|
||||||
#include <ESP8266WiFiScan.h>
|
|
||||||
#include <ESP8266WiFiType.h>
|
|
||||||
#include <WiFiClient.h>
|
|
||||||
#include <WiFiServer.h>
|
|
||||||
#include <WiFiServerSecure.h>
|
|
||||||
#include <WiFiUdp.h>
|
|
||||||
|
|
||||||
#define ssid "ObsidianAmstelveen"
|
|
||||||
#define pass "drijversstraatmaastricht"
|
|
||||||
|
|
||||||
//custom classes
|
#define ssid "1235678i"
|
||||||
#include "SensorManager.h"
|
#define pass "12345678"
|
||||||
|
Reference in New Issue
Block a user