Merge branch 'Website_websocket' of gitlab.fdmci.hva.nl:propedeuse-hbo-ict/onderwijs/2023-2024/out-a-se-ti/blok-3/qaajeeqiinii59 into Website_websocket

This commit is contained in:
Dano van den Bosch
2024-03-07 13:11:03 +01:00
20 changed files with 612 additions and 123 deletions

View File

@@ -8,6 +8,7 @@ nav:
- Links: opdracht/links
- 🎮 Arduino documentation:
- I2C: arduino-documentation/i2c-ESP32
- TFT screen : node-documentation/TFT-screen
- 🍓 RPi Documentation:
- Raspberry pi: Sp1SchetsProject/InfrastructuurDocumentatie/raspberryPi
- MariaDB: rpi-documentation/mariadb-installation

View File

@@ -57,7 +57,7 @@ examples, basics, fade
\/ servo's
examples, servo, sweep
### Linux and raspberrypi.
### Linux and raspberryPI.
To gain more knowledge about linux, i first asked my class mates if they could get me started.
They showed me how to gain acces to a server, and told me how to navigate through files.
By doing this i got taught the following commands:
@@ -71,4 +71,97 @@ By doing this i got taught the following commands:
~ $ 'ssh username@ip address' = open ssh connection.
From here i went and looked up several linux video's wich taught me the following:
....
### Air, temperature, and all sort of stuff.
After the linux coding i decided to take a step back and began gaining experience with sensors.
I began trying to make our group project's "node" for myself.
I did this by using one of the main sensors and tried programing it in myself.
I used this website for the information and for the right library:(https://randomnerdtutorials.com/esp32-dht11-dht22-temperature-humidity-sensor-arduino-ide/).
Aside from the website i used my teammates for help where it was needed.
I wanted to make my own spin on the original design by including a button to activate the sensor and an LED to show if its on.
At first I tried to use my own DHT11, but apparently it didn't work. So i used one from my Teammates.
The rest of the tutorial was clear and worked like a charm.
the code used looks like this:
```
#include "DHT.h"
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println(F("DHTxx test!"));
dht.begin();
}
void loop() {
delay(2000);
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(f);
Serial.print(F("°F Heat index: "));
Serial.print(hic);
Serial.print(F("°C "));
Serial.print(hif);
Serial.println(F("°F"));
}
```
And The fysical board looks like this:
And here it looks in action:
Later on i could expand this code and the fysical product to include the rest of the sensors.
### Buzzers .pt 2
I found out how to make multiple buzzers go off with the press of one button and increase as mutch as there are pins.
I tried to not look up anything for this one, but did ask questions form time to time.
I designed it to work with scaning if there is and input and then output this signal to activate the buzzers.
This output signal can activate over multiple pins so this one button can set off all sorts of stuff.
The code is short and simple:
```
int button = 20;
int buzzerone = 12;
int buzzertwo = 11;
void setup() {
// put your setup code here, to run once:
pinMode(button, INPUT);
pinMode(buzzerone, OUTPUT);
pinMode(buzzertwo, OUTPUT);
}
void loop() {
if(digitalRead(button) == HIGH){
digitalWrite(buzzerone, HIGH);
digitalWrite(buzzertwo, HIGH);
}else{
digitalWrite(buzzerone, LOW);
digitalWrite(buzzertwo, LOW);
}
}
```
and the fysical design looks like this: ...

View File

@@ -18,12 +18,14 @@ The Raspberry 3 can be descriped as a "little" computer running a quad-code 64-b
### Dev Page
For monitoring porpoises we are going to implement a dev page, this means that there basicey is a debug page. On this page we will be displaying the current readings that are comming in in to graphs and also the data form the last 10 redings from all the nodes, the readings are sorted in there respective graphs like temp, humidity and noice redings for example.
For monitoring porpoises we are going to implement a dev page, this means that there basicey is a debug page. On this page we will be displaying the current readings that are comming in in to graphs and also the data form the last 10 redings from all the nodes, the readings are sorted in there respective graphs like temp, humidity and noice redings for example. This is handy for quick access to the data ouwr nodes are sending out. So it will be easy to see if one is malvuntion and monetoring the state off the battery to check if its nessesery to replace it.
### Database
## Database
The database is set up on the raspberry so that we dont always have to have a computewr
### Database software
### Esp to database

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

View File

@@ -1,11 +1,31 @@
# Questions
## Criteria
Questions shouldnt be able to measure using sensors. 3 possible answers.
Questions shouldn't be able to measure using sensors. 3 possible answers.
## Questions
How clean are the toilets? (clean, normal, disgusting).
How clean is the study area? (clean, normal, disgusting).
What do you think of the temperature in the study area? (hot, perfect, cold).
How crowded would you say the study area is?(not at all, its fine, really crowded).
Is there enough help available? (no, decently, yes).
- How clean are the toilets? (clean, normal, disgusting).
- How clean is the study area? (clean, normal, disgusting).
- What do you think of the temperature in the study area? (hot, perfect, cold).
- How crowded would you say the study area is?(not at all, its fine, really crowded).
- Is there enough help available? (no, decently, yes).
### Feedback questions
- Zijn de vragen duidelijk en snel te beantwoorden hierboven?
- Hebben jullie nog andere feedback voor gebouwbeheer, die niet gemeten kan worden door sensoren?
## Feedback
1. vraag 5 is onduidelijk. Wat bedoel je met genoeg hulp? Docenten, schoonmakers? Andere manier formuleren over welke hulp. Andere vragen zijn duidelijk. Er kan een vraag worden toegevoegd over of het goed gaat met de studie of over de dag. Dit is niet heel hulpvol voor gebouwbeheer maar voor de studenten zelf wel.
2. andere variant van antwoord geven op de vragen. Bijvoorbeeld een schaal van 1 tot 5. Of een schaal van 1 tot 10. Dit is makkelijker te verwerken en te analyseren. Voor de rest zijn de vragen duidelijk. Deze persoon heeft geen andere feedback voor gebouwbeheer want deze vragen zijn genoeg
3. De vragen zijn duidelijk en snel te beantwoorden. behalve vraag 5 die onduidleijk is. geen andere vragen vragen als feedback.
## Conclusion
The questions are clear and easy to answer, except for question 5 which is unclear.

View File

@@ -0,0 +1,103 @@
# TFT screen
## Prequesites
To use the TFT screen, you need to install the following libraries:
``` SPI.h , Adafruit_GFX.h, Adafruit_ST7796S_kbv.h ```
## Programming the screen
To program the screen we need to first declare all the pins and give it to the Adafruit_ST7796S_kbv.h library. Then we need to initialize the screen and we can start using it.
```cpp
#define TFT_CS 14
#define TFT_DC 13
#define TFT_RST 12
#define MOSI 11
#define SCK 10
#define MISO 9
//simplify the name of the library and feed all the correct pins to it
Adafruit_ST7796S_kbv tft = Adafruit_ST7796S_kbv(TFT_CS, TFT_DC, MOSI, SCK, TFT_RST, MISO);
```
## Drawing on the screen
To draw on the screen we can use the following functions:
```cpp
tft.fillScreen(0x0000); //clear the screen
tft.fillRect(0, 0, 240, 240, 0xFFFF); //draw a white rectangle
tft.fillCircle(120, 120, 50, 0xF800); //draw a red circle
tft.fillTriangle(0, 0, 240, 240, 0, 240, 0x1F); //draw a blue triangle
tft.fillRoundRect(0, 0, 240, 240, 10, 0xF81F); //draw a pink rounded rectangle
tft.drawChar(120, 120, 'A', 0xFFFF, 0x0000, 2); //draw a character
tft.setTextSize(2); //set the text size
tft.setTextColor(0xFFFF); //set the text color
tft.setCursor(0, 0); //set the cursor
tft.println("Hello World!"); //print a string
```
To write Hello world on the screen we can use the following code:
```cpp
tft.fillScreen(0x0000); //clear the screen
tft.setTextSize(2); //set the text size
tft.setTextColor(0xFFFF); //set the text color
tft.setCursor(0, 0); //set the cursor so it starts at the top right, you can also make this other numbers to change the position
tft.println("Hello World!"); //print a string
```
To clear the screen for new text you can use the following code:
```cpp
tft.fillScreen(0x0000); //clear the screen
```
## Wiring
You can connect the wires to any pin except the vcc and the ground. The vcc and ground need to be connected to the 3.3v and ground of the esp32. The other pins can be connected to any pin of the esp32.
![TFT screen diagram](../assets/imagesSp2/fritzingscreen.png)
We aren't using the cs2 and the pen pin because we arent utilizing the touch function of the screen.
```mermaid
classDiagram
displayTex <|-- Adafruit_ST7796S_kbv
loop <-- displayTex
class displayTex{
+text
+color
+size
+posx
+posy
+void writeText()
-int centerText(char* text)
}
class Adafruit_ST7796S_kbv{
+fillScreen()
+fillRect()
+fillCircle()
+fillTriangle()
+fillRoundRect()
+drawChar()
+setTextSize()
+setTextColor()
+setCursor()
+println()
}
```
## Sources
* https://www.tinytronics.nl/en/displays/tft/4-inch-tft-display-320*480-pixels-with-touchscreen-spi-st7796s Source for Driver
* https://github.com/prenticedavid/Adafruit_ST7796S_kbv Download link for the library