2 Commits

Author SHA1 Message Date
ishak jmilou.ishak
bb1904b125 commentaar naar engels 2025-01-06 09:53:01 +01:00
ishak jmilou.ishak
b29a615681 verslag def versie 2025-01-06 09:52:50 +01:00
4 changed files with 29 additions and 32 deletions

View File

@@ -68,7 +68,7 @@ int CKobuki::connect(char *comportT) {
HCom = open(comportT, O_RDWR | O_NOCTTY | O_NONBLOCK);
if (HCom == -1) {
printf("Kobuki nepripojeny\n");
printf("Kobuki connected\n");
return HCom;
} else {
set_interface_attribs2(HCom, B115200,
@@ -89,7 +89,7 @@ int CKobuki::connect(char *comportT) {
tcsetattr(HCom, TCSANOW, &settings); // apply the settings*/
tcflush(HCom, TCOFLUSH);
printf("Kobuki pripojeny\n");
printf("Kobuki connected\n");
return HCom;
}
}
@@ -99,27 +99,26 @@ unsigned char *CKobuki::readKobukiMessage() {
ssize_t Pocet;
buffer[0] = 0;
unsigned char *null_buffer(0);
// citame kym nezachytime zaciatok spravy
// Read until the start of the message is detected
do {
Pocet = read(HCom, buffer, 1);
} while (buffer[0] != 0xAA);
// mame zaciatok spravy (asi)
// We have the start of the message (possibly)
if (Pocet == 1 && buffer[0] == 0xAA) {
// citame dalsi byte
// Read the next byte
do {
Pocet = read(HCom, buffer, 1);
} while (Pocet != 1); // On Linux: -1, on Windows: 0
} while (Pocet != 1); // na linuxe -1 na windowse 0
// a ak je to druhy byte hlavicky
// If it is the second byte of the header
if (Pocet == 1 && buffer[0] == 0x55) {
// precitame dlzku
// Read the length
Pocet = read(HCom, buffer, 1);
// ReadFile(hCom, buffer, 1, &Pocet, NULL);
if (Pocet == 1) {
// mame dlzku.. nastavime vektor a precitame ho cely
// We have the length; initialize a buffer and read the entire message
int readLenght = buffer[0];
unsigned char *outputBuffer =
(unsigned char *)calloc(readLenght + 4, sizeof(char));
@@ -134,7 +133,7 @@ unsigned char *CKobuki::readKobukiMessage() {
pct = pct + (Pocet == -1 ? 0 : Pocet);
} while (pct != (readLenght + 1));
// tu si mozeme ceknut co chodi zo serial intefejsu Kobukiho
// Here we can check what data is received from the Kobuki's serial interface
// for(int i=0;i<outputBuffer[0]+2;i++)
// {
// printf("%x ",outputBuffer[i]);
@@ -162,8 +161,8 @@ void CKobuki::setLed(int led1, int led2) {
pocet = write(HCom, &message, 8);
}
// tato funkcia nema moc sama o sebe vyznam, payload o tom, ze maju byt externe
// napajania aktivne musi byt aj tak v kazdej sprave...
// this function doesn't have much meaning by itself, the payload about them being external
// power supplies must be active in every message anyway...
void CKobuki::setPower(int value) {
if (value == 1) {
unsigned char message[8] = {0xaa, 0x55, 0x04, 0x0C, 0x02, 0xf0, 0x00, 0xAF};
@@ -267,13 +266,13 @@ int CKobuki::measure() {
while (stopVlakno == 0) {
unsigned char *message = readKobukiMessage();
if (message == NULL) {
// printf("vratil null message\n");
// printf("returned null message\n");
continue;
}
int ok = parser.parseKobukiMessage(parser.data, message);
// maximalne moze trvat callback funkcia 20 ms, ak by trvala viac, nestihame
// citat
// the maximum callback function can take 20 ms, if it takes longer, we won't be able to do it
// read
if (ok == 0) {
loop(userData, parser.data);
}
@@ -353,7 +352,7 @@ long CKobuki::loop(void *user_data, TKobukiData &Kobuki_data) {
totalLeft += dLeft;
totalRight += dRight;
// ak je suma novej a predchadzajucej vacsia ako 65536 tak to pretieklo?
// if the sum of the new and previous is greater than 65536 then it overflowed?
directionL = (prevLeftEncoder < Kobuki_data.EncoderLeft ? 1 : -1);
directionR = (prevRightEncoder < Kobuki_data.EncoderRight ? 1 : -1);
dTimestamp = (Kobuki_data.timestamp < prevTimestamp
@@ -387,7 +386,7 @@ long CKobuki::loop(void *user_data, TKobukiData &Kobuki_data) {
// tells the kobuki to go a few meters forward or backward, the sign decides
// the function compensates for walking straight with the controller, internally
// it uses setArcSpeed and uses encoder data as feedback
// it uses setArcSpeed and uses encoder data as feedback
void CKobuki::goStraight(long double distance) {
long double u_translation =
0; // controlled magnitude, speed of the robot in motion

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -17,29 +17,27 @@ In dit verslag wordt er gekeken naar de verschillende communicatieprotocollen di
---
# Samenvatting
In dit verslag worden de communicatieprotocollen MQTT, HTTP, WebSockets en CoAP vergeleken op het gebied van veilige en betrouwbare communicatie tussen IoT-apparaten. Veilige communicatie omvat gegevensversleuteling en authenticatie, terwijl betrouwbaarheid verwijst naar het verzenden en ontvangen van gegevens zonder verlies. Op basis van deze overwegingen wordt MQTT aanbevolen voor situaties waar zowel veiligheid als betrouwbaarheid cruciaal zijn in IoT-communicatie.
## 1. Wat houdt veilige en betrouwbare communicatie tussen apparaten in?
Als je werkt met IoT-apparaten, is het belangrijk dat de communicatie tussen deze apparaten veilig en betrouwbaar is. Iot-apparaten verzamelen gegevens over de omgeving en communiceert deze tussen apparaten over het internet. Als deze communicatie niet veilig is, kunnen hackers deze gegevens onderscheppen en gebruiken(Ministerie van Algemene Zaken, 2022). Je wilt voorkomen dat hackers toegang krijgen tot gevoelige informatie zoals persoonlijke gegevens of bedrijfsgeheimen. Daarom is het belangrijk dat de communicatie tussen apparaten veilig en betrouwbaar is. Een protocol is een set regels die bepalen hoe apparaten met elkaar communiceren. Er zijn verschillende protocollen die gebruikt kunnen worden om veilig en betrouwbaar te communiceren tussen IoT-apparaten.
## 2. Welke protocollen zijn er om veilig en betrouwbaar te communiceren tussen apparaten?
Er zijn verschillende soorten protocollen die gebruikt kunnen worden om veilig en betrouwbaar te communiceren tussen IoT-apparaten. Enkele van de meest gebruikte protocollen zijn: MQTT, HTTP, WebSockets en CoAP. Bij het kiezen van een protocol is het belangrijk om te kijken naar de veiligheid en betrouwbaarheid van het protocol. Bij veiligheid kan je denken aan de mogelijkheid om gegevens te versleutelen en te authenticeren. Bij betrouwbaarheid kan je denken aan de mogelijkheid om gegevens te verzenden en te ontvangen zonder verlies. Waar ik voornamelijk bij ga opletten is de manier waarop de protocollen omgaan met veiligheid en betrouwbaarheid. Ik zal ook kijken naar de manieren waarop de protocollen omgaan met de verschillende niveaus van kwaliteit van de berichten.
Een communicatieprotocol is een set regels die bepalen hoe apparaten met elkaar communiceren(Paul Christiano, 2023). Er is voor elk project een ander protocol dat het beste past. In dit geval is het belangrijk dat de communicatie veilig en betrouwbaar is. De protocollen die ik ga vergelijken zijn MQTT, HTTP, WebSockets en CoAP. Wat belangrijk is om te onderzoeken is hoe de protocollen omgaan met veiligheid en betrouwbaarheid. Veiligheid kan worden bereikt door gegevens te versleutelen en te authenticeren. Betrouwbaarheid kan worden bereikt door gegevens te verzenden en te ontvangen zonder verlies.(Paul Christiano, 2023).
## 3. Wat zijn de voor- en nadelen van de verschillende protocollen?
| Protocol | Voordeel | Nadeel |
| ---------- | ------------------------------------------------------- | -------------------------------------------------------------------- |
| MQTT | Lichtgewicht, betrouwbaar, ondersteunt QoS,TCP, TSL/SSL | Niet geschikt voor grote bestanden(256mb), kan wat vertraging hebben |
| HTTP | Eenvoudig te implementeren, TCP | Voor elke interactie nieuwe verbinding, |
| WebSockets | Weinig vertraging, TCP | Niet geschikt voor lichtgewicht apparaten |
| CoAP | Lichtgewicht | Minder bekend, minder ondersteuning, UDP |
![alt text](image.png)
Bij MQTT zij met QoS wat inhoud dat er verschillende niveaus van kwaliteit van de berichten zijn. Dit betekent dat je kunt kiezen hoe betrouwbaar je wilt dat je bericht aankomt. het verschil tussen TCP en UDP is het volgende: TCP is betrouwbaar en UDP is snel. Bij TCP worden de gegevens in de juiste volgorde afgeleverd en wordt er gecontroleerd of de gegevens correct zijn afgeleverd. Bij UDP worden de gegevens sneller afgeleverd, maar is er geen garantie dat de gegevens correct zijn afgeleverd. MQTT maakt hier goed gebruik van in tegenstelling tot CoAP.
Zoals te zien is in de tabel is CoAP minder betrouwbaar dan de andere protocollen. Dit komt, omdat CoAP gebruik maakt van UDP wat ervoor zorgt dat het sneller is maar niet betrouwbaar met de berichten die hij stuurt(Darek Fanton, 2023). Websockets is een goede protocol alleen is het niet altijd geschikt voor lichtgewicht apparaten. HTTP maakt gebruik van TCP wat betrouwbaar is, maar het nadeel van HTTP is dat het elke keer een nieuwe verbinding moet maken. Dit kan een probleem zijn als je veel berichten moet versturen. MQTT is een lichtgewicht protocol dat betrouwbaar is en verschillende niveaus van kwaliteit van de berichten ondersteunt. Het is ook mogelijk om gegevens te versleutelen en te authenticeren met MQTT. Dit maakt het een goede keuze voor veilige en betrouwbare communicatie tussen IoT-apparaten.
## 4. Conclusie
Er zijn verschillende protocollen die goed gebruikt kunnen worden voor IoT apparaten. Aangezien voor mijn project veiligheid en betrouwbaarheid op één staat heb ik gekozen voor MQTT. Dit protocol is lichtgewicht, betrouwbaar en ondersteunt verschillende niveaus van kwaliteit van de berichten. Het is ook mogelijk om gegevens te versleutelen en te authenticeren met MQTT. Ik zal geen last krijgen van vertragingen en heb geen grote bestanden die ik moet verzenden. Dit maakt MQTT een goede keuze voor mijn project.
Er zijn verschillende protocollen die goed gebruikt kunnen worden voor IoT apparaten. Aangezien voor mijn project veiligheid en betrouwbaarheid op één staat heb ik gekozen voor MQTT. Dit protocol is lichtgewicht, betrouwbaar en ondersteunt verschillende niveaus van kwaliteit van de berichten. Het is ook mogelijk om gegevens te versleutelen en te authenticeren met MQTT. Dit maakt het een goede keuze voor veilige en betrouwbare communicatie tussen IoT-apparaten.
## literatuurlijst
@@ -57,7 +55,7 @@ Er zijn verschillende protocollen die goed gebruikt kunnen worden voor IoT appar
- IoT-technologieën en -protocollen | Microsoft Azure. (n.d.). https://azure.microsoft.com/nl-nl/solutions/iot/iot-technology-protocols
- Het IoT verbinden: wat is MQTT en waarin verschilt het van CoAP? (n.d.). https://www.onlogic.com/nl/blog/het-iot-verbinden-wat-is-mqtt-en-waarin-verschilt-het-van-coap/
- Darek Fanton(2024, Juli 11). Het IoT verbinden: wat is MQTT en waarin verschilt het van CoAP? (n.d.). https://www.onlogic.com/nl/blog/het-iot-verbinden-wat-is-mqtt-en-waarin-verschilt-het-van-coap/
- Nader, K. (2023, October 30). Wat zijn de voordelen van het gebruik van WebSocket voor IoT-communicatie? AppMaster - Ultimate All-in No-code Platform. https://appmaster.io/nl/blog/websocket-voor-iot-communicatie

Binary file not shown.