cleanup + serial communication for setting zeropoint and put wifi in its own class

This commit is contained in:
2024-05-14 16:01:41 +02:00
parent 7bc97e93c2
commit 1c39bf9153
5 changed files with 83 additions and 47 deletions

View 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);
}

View 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

View File

@@ -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);
}

View File

@@ -1,6 +1,7 @@
#include "SensorManager.h"
#include <Wire.h>
SensorManager::SensorManager() {}
void SensorManager::sensorSetup() {

View File

@@ -1,20 +1,13 @@
#include <WebSocketsClient.h>
//classes
#include "SensorManager.h"
#include "Connectivity.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>
//define
SensorManager sensorManager;
Connectivity connectivity;
WebSocketsClient webSocket;
#define USE_SERIAL Serial
#define ssid "ObsidianAmstelveen"
#define pass "drijversstraatmaastricht"
//custom classes
#include "SensorManager.h"
#define ssid "1235678i"
#define pass "12345678"