mirror of
https://gitlab.fdmci.hva.nl/technische-informatica-sm3/ti-projectten/rooziinuubii79.git
synced 2025-08-05 12:54:57 +00:00
Compare commits
7 Commits
c0cf6f1360
...
22-als-dev
Author | SHA1 | Date | |
---|---|---|---|
|
466a8659d0 | ||
|
523ccd87e3 | ||
|
c905bda662 | ||
|
d865a50951 | ||
|
d7a643460c | ||
|
f021ebebcb | ||
|
32e0583c1b |
28
docs/explanation/Sensorbehuizing.md
Normal file
28
docs/explanation/Sensorbehuizing.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# Sensor behuizing
|
||||
|
||||
Voor de sensoren op onze Kobuki wouden wij graag een behuizing zodat deze sensoren niet los liggen op de Kobuki.
|
||||
|
||||
Deze behuizing had een paar eisen en die eisen waren als volgt
|
||||
- Hij moet klein zijn zodat hij niet veel ruimte in neemt op de Kobuki.
|
||||
- De behuizing moet makkelijk vast te maken zijn aan de Kobuki.
|
||||
- In de behuizing moet een esp32 passen en de 3 sensoren.
|
||||
- De behuizing moet makkelijk uit elkaar te halen zijn zodat als we onderhoud moeten plegen dit makkelijk kan.
|
||||
|
||||
Met deze eisen zijn we uiteindelijk een behuizing gaan maken in onshape.
|
||||
Onshape is gratis ontwerp software wat te gebruiken is via je browser.
|
||||
Hierdoor hoef je dus geen applicatie te runnen op je computer en kan je op elk apparaat inloggen om zo gemakkelijk door te gaan aan je ontwerp.
|
||||
Ik (Yannick) heb voor deze software gekozen omdat ik deze software al veel vaker heb gebruikt en hier dus al bekend mee ben.
|
||||
|
||||
Uiteindelijk zijn we op het volgende design uitgekomen.
|
||||

|
||||

|
||||
|
||||
Wij hebben gekozen voor dit design omdat dit de breedte en lengte heeft van een esp32 dus de esp past precies waardoor wij hem niet nog extra vast hoeven te zetten.
|
||||
Er zitten gaten in de zijkant van het bakje voor de kabel en voor een 5 volt kabel voor de MQ5 sensor.
|
||||
De dht11 sensor past er precies in en deze blijft daardoor precies vast zitten.
|
||||
Voor de M5stack sensor is er een gat gemaakt zodat deze kabel erdoorheen past en vervolgens wordt deze sensor op de bovenkant van de behuizing vastgeplakt.
|
||||
Voor de MQ5 sensor is een gat gemaakt waar de sensor door heen kan en het printplaatje wordt aan de onderkant vast gemaakt met stevige M3 tape.
|
||||
|
||||
In de onderkant van de behuizing zitten 2 gaten hiermee kan de behuizing goed vastgemaakt worden aan de kobuki.
|
||||
De onderkant en de bovenkant van de behuizing zijn makkelijk uit elkaar te halen omdat deze doormiddel van 4 sterke magneten aan elkaar vast zitten.
|
||||
Hierdoor is het ook makkelijk om onderhoud te plegen omdat het bakje door de magneten makkelijk uit elkaar te halen is maar niet zo makkelijk dat hij door trillingen los kan komen.
|
BIN
docs/explanation/image.png
Normal file
BIN
docs/explanation/image.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 54 KiB |
BIN
docs/explanation/images/Behuizingfoto1.png
Normal file
BIN
docs/explanation/images/Behuizingfoto1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 68 KiB |
BIN
docs/explanation/images/Behuizingfoto2.png
Normal file
BIN
docs/explanation/images/Behuizingfoto2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 49 KiB |
@@ -3,6 +3,9 @@
|
||||
#include "Adafruit_SGP30.h"
|
||||
#include <WiFi.h>
|
||||
#include <PubSubClient.h>
|
||||
#include <ArduinoWebsockets.h>
|
||||
|
||||
using namespace websockets;
|
||||
|
||||
Adafruit_SGP30 sgp;
|
||||
|
||||
@@ -18,86 +21,86 @@ Adafruit_SGP30 sgp;
|
||||
DHT dht(DHTPIN, DHTTYPE);
|
||||
|
||||
// WiFi en MQTT instellingen
|
||||
const char* ssid = "iotroam";
|
||||
const char* password = "6LAFiQVnUO";
|
||||
const char* mqtt_server = "Ip adres rasperry pi";
|
||||
const char* ssid = "";
|
||||
const char* password = "";
|
||||
|
||||
const char* mqtt_server = "192.168.68.104";
|
||||
const int mqtt_port = 8080; //websocket-poort
|
||||
const char* mqtt_topic = "sensors/data";
|
||||
|
||||
// MQTT client
|
||||
WiFiClient espClient;
|
||||
WebsocketsClient websocket;
|
||||
PubSubClient client(espClient);
|
||||
|
||||
// Functie om verbinding te maken met WiFi
|
||||
void setup_wifi() {
|
||||
delay(10);
|
||||
Serial.println("Verbinden met WiFi...");
|
||||
Serial.print("Verbinden met WiFi...");
|
||||
WiFi.begin(ssid, password);
|
||||
|
||||
while (WiFi.status() != WL_CONNECTED) {
|
||||
delay(500);
|
||||
Serial.print(".");
|
||||
}
|
||||
Serial.println("\nWiFi verbonden!");
|
||||
Serial.println("Verbonden!");
|
||||
}
|
||||
|
||||
// Callback voor MQTT (niet gebruikt in deze toepassing, maar vereist)
|
||||
void callback(char* topic, byte* payload, unsigned int length) {
|
||||
// Hier kun je reageren op inkomende MQTT-berichten
|
||||
void reconnectMQTT() {
|
||||
while (!client.connected()) {
|
||||
Serial.print("Verbinding maken met MQTT via WebSockets...");
|
||||
if (client.connect("ESP32Client")) {
|
||||
Serial.println("Verbonden!");
|
||||
} else {
|
||||
Serial.print("Fout: ");
|
||||
Serial.print(client.state());
|
||||
delay(5000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void setup() {
|
||||
// Start de seriële monitor
|
||||
Serial.begin(9600);
|
||||
|
||||
dht.begin();
|
||||
|
||||
pinMode(MQ5_PIN, INPUT);
|
||||
pinMode(MQ5_PIN, INPUT);
|
||||
|
||||
Wire.begin(SDA_PIN, SCL_PIN);
|
||||
Wire.begin(SDA_PIN, SCL_PIN);
|
||||
Serial.println("SGP30 test");
|
||||
|
||||
// SGP30 initialiseren
|
||||
if (!sgp.begin()) {
|
||||
Serial.println("SGP30 sensor niet gevonden :(");
|
||||
while (1);
|
||||
}
|
||||
if (!sgp.IAQinit()) {
|
||||
Serial.println("SGP30 IAQ-initialisatie mislukt!");
|
||||
while (1);
|
||||
}
|
||||
|
||||
// Verbind met WiFi en MQTT-broker
|
||||
setup_wifi();
|
||||
client.setServer(mqtt_server, 1883);
|
||||
client.setCallback(callback);
|
||||
}
|
||||
|
||||
void reconnect() {
|
||||
// Herstel verbinding met MQTT-broker
|
||||
while (!client.connected()) {
|
||||
Serial.print("Verbinding maken met MQTT...");
|
||||
if (client.connect("ArduinoClient")) {
|
||||
Serial.println("Verbonden!");
|
||||
} else {
|
||||
Serial.print("Fout, rc=");
|
||||
Serial.print(client.state());
|
||||
Serial.println(" Probeer opnieuw over 5 seconden...");
|
||||
delay(5000);
|
||||
}
|
||||
}
|
||||
// Stel MQTT-broker in met websockets
|
||||
client.setServer(mqtt_server, mqtt_port);
|
||||
reconnectMQTT();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Zorg ervoor dat MQTT verbonden blijft
|
||||
// Zorgt ervoor dat MQTT verbonden blijft
|
||||
if (!client.connected()) {
|
||||
reconnect();
|
||||
reconnectMQTT();
|
||||
}
|
||||
client.loop();
|
||||
|
||||
float h = dht.readHumidity();
|
||||
float t = dht.readTemperature();
|
||||
|
||||
int mq5Value = analogRead(MQ5_PIN);
|
||||
|
||||
// Check of de sensorwaarden geldig zijn
|
||||
if (isnan(h) || isnan(t) || isnan(mq5Value)) {
|
||||
Serial.println("Fout bij het lezen van de sensors!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (! sgp.IAQmeasure()) {
|
||||
Serial.println("Measurement failed");
|
||||
return;
|
||||
}
|
||||
// Check of de sensorwaarden geldig zijn
|
||||
if (isnan(h) || isnan(t) || mq5Value < 0) {
|
||||
Serial.println("Fout bij het lezen van de sensors!");
|
||||
return;
|
||||
}
|
||||
|
||||
// Maak een JSON-payload
|
||||
String payload = "{";
|
||||
@@ -117,4 +120,4 @@ void loop() {
|
||||
|
||||
// Wacht 5 seconden voor de volgende meting
|
||||
delay(5000);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user