| # IOT-Labor | # IOT-Labor | ||||
| <!-- philip.lee2@yahoo.de | |||||
| prause@finf.uni-hannover.de --> | |||||
| ## Versuch 1: Bash | ## Versuch 1: Bash | ||||
| - Alle Aufgaben sind als Skripte implementiert | - Alle Aufgaben sind als Skripte implementiert | ||||
| - Aufgaben a bis c als Skripte implementiert | - Aufgaben a bis c als Skripte implementiert | ||||
| - sshfs pi@172.23.90.43:/home/pi ~/test | |||||
| ### d) | ### d) | ||||
| - Laden des Servo Daemon | - Laden des Servo Daemon | ||||
| - Servos und Pulsbreite in ```/dev/servoblaster``` eintragen | - Servos und Pulsbreite in ```/dev/servoblaster``` eintragen | ||||
| ```bash | ```bash | ||||
| echo 1=10000 > /dev/servoblaster | |||||
| echo 2=10000 > /dev/servoblaster | |||||
| sudo /home/pi/src/PiBits/ServoBlaster/user/servod --cycle-time 1000 | |||||
| echo 1=wert > /dev/servoblaster | |||||
| echo 2=wert > /dev/servoblaster | |||||
| ``` | ``` | ||||
| ### e) | ### e) | ||||
| - Oszilloskop an GPIO Pin 17 anschließen | - Oszilloskop an GPIO Pin 17 anschließen | ||||
| - Minimale Pulsbreite ermitteln? 10$\mu s$ ??? | |||||
| - Minimale Pulsbreite ermitteln? | |||||
| - 25% sind 60 | |||||
| - 50% sind ~120 | |||||
| - 75% sind ~190 | |||||
| - 100% sind 250 | |||||
| ### f) | ### f) | ||||
| | v [m/s] | PWM (gemessen) | PWM (soll) | | | v [m/s] | PWM (gemessen) | PWM (soll) | | ||||
| |---------|----------------|------------| | |---------|----------------|------------| | ||||
| | 0 | |1.5ms | | |||||
| | -12.3 | |2ms | | |||||
| | 0.9 | |15.409ms | | |||||
| | -7.4 | |11.636ms | | |||||
| | 0 |1.5ms |1.5ms | | |||||
| | -12.3 |2ms |2ms | | |||||
| | 0.9 |1.54ms |1.5409ms | | |||||
| | 10.5 |1.54ms |1.5ms | | |||||
| | -7.4 |1.16ms |11.636ms | | |||||
| #### Steuerung | #### Steuerung | ||||
| | $\alpha$ [°] | PWM (gemessen) | PWM (soll) | | | $\alpha$ [°] | PWM (gemessen) | PWM (soll) | | ||||
| |-------|----------------|------------| | |-------|----------------|------------| | ||||
| | -3 | |14.66ms | | |||||
| | 18 | |17ms | | |||||
| | 0 | |1.5ms | | |||||
| | -44.2 | |10.08ms | | |||||
| | -3 |1.46ms |14.66ms | | |||||
| | 18 |1.3ms |17ms | | |||||
| |51.7 |2ms | 2ms | |||||
| | 0 |1.5ms |1.5ms | | |||||
| | -44.2 |1ms |1ms | | |||||
| ## Veruch 4: Wiimote | ## Veruch 4: Wiimote | ||||
| ## Versuch 5 | ## Versuch 5 | ||||
| - Verbinden mit WLAN | - Verbinden mit WLAN | ||||
| - ESSID: group20n | |||||
| - ESSID: group20n oder iot_lab_wlan_bgn_03? | |||||
| - Kein Passwort und kein DHCP | - Kein Passwort und kein DHCP | ||||
| ```bash | ```bash | ||||
| sudo ifconfig ra0 192.168.1.42 netmask 255.255.255.0 up | |||||
| sudo iwconfig ra0 essid off | |||||
| sudo iwconfig ra0 essid group02n | |||||
| sudo ifconfig wlan0 192.168.1.42 netmask 255.255.255.0 up | |||||
| sudo iwconfig wlan0 essid off | |||||
| sudo iwconfig wlan0 essid iot_lab_wlan_bgn_2 | |||||
| ``` | ``` | ||||
| - dann Routen prüfen | - dann Routen prüfen | ||||
| - Zeit synkronisieren | - Zeit synkronisieren | ||||
| ```bash | ```bash | ||||
| ntpq time1.rrzn.uni-hannover.de | |||||
| ntpq -pn time1.rrzn.uni-hannover.de | |||||
| > peers | |||||
| ``` | ``` | ||||
| - Für dratgebunden | - Für dratgebunden | ||||
| - 8.962 0.071 | |||||
| | | Dealy | Offset | | |||||
| | | Dealy [ms] | Offset [ms] | | |||||
| |-------|-------|--------| | |-------|-------|--------| | ||||
| |Laptop | | | | |||||
| | Pi | | | | |||||
| |Laptop | 1.991 | 0.023 | | |||||
| | Pi | 0.508 | 0.321 | | |||||
| - Für dratlos | - Für dratlos | ||||
| | | Dealy | Offset | | |||||
| | | Dealy [ms] | Offset [ms] | | |||||
| |-------|-------|--------| | |-------|-------|--------| | ||||
| |Laptop | | | | |||||
| | Pi | | | | |||||
| | Pi |0.425 |0.157 | | |||||
| - **Default Route wieder auf ethernet stellen** | - **Default Route wieder auf ethernet stellen** | ||||
| - NTP Service konfigurieren# | - NTP Service konfigurieren# | ||||
| - Auf dem Client | - Auf dem Client | ||||
| ```bash | ```bash | ||||
| tcpdump -i <interface> tcp and port 1337 and dst <server-ip> -r <file-name.pcap> | |||||
| tcpdump -i <interface> tcp and port 1337 and dst <server-ip> -w <file-name.pcap> | |||||
| ``` | ``` | ||||
| - Auf dem Server | - Auf dem Server | ||||
| ```bash | ```bash | ||||
| tcpdump -i <interface> tcp and port 1337 and src <client-ip> -r <file-name.pcap> | |||||
| tcpdump -i <interface> tcp and port 1337 and src <client-ip> -w <file-name.pcap> | |||||
| ``` | ``` | ||||
| - simple-server.py und simple-client.py verwenden | - simple-server.py und simple-client.py verwenden | ||||
| ./calc-owd.py --client <pcap> --server <pcap> | ./calc-owd.py --client <pcap> --server <pcap> | ||||
| ``` | ``` | ||||
| - Mittelwert: | |||||
| - Varianz: | |||||
| - Standardabweichung: | |||||
|  | |||||
| - Eingestellte Bitrate: | |||||
| - Tatsächlich gesendete Bitrate: | |||||
| - Mittelwert: 0.395ms | |||||
| - Standardabweichung: 0.213ms | |||||
| - Eingestellte Bitrate: 2Mbit/s | |||||
| - Tatsächlich gesendete Bitrate: 0.26Mbit/s | |||||
| ### Streaming über WLAN | ### Streaming über WLAN | ||||
| - Plot der Pakete | - Plot der Pakete | ||||
| - OWDS | - OWDS | ||||
| - Mittelwert: | |||||
| - Varianz: | |||||
| - Standardabweichung: | |||||
| - Mittelwert: 13.78ms | |||||
| - Standardabweichung: 8.11ms | |||||
|  | |||||
| #### Plot UDP | #### Plot UDP | ||||
| - Mittelwert: | |||||
| - Varianz: | |||||
| - Standardabweichung: | |||||
| - Mittelwert: 4.68ms | |||||
| - Standardabweichung: 2.87ms | |||||
|  | |||||
| - Was ist besser? | |||||
| - Was ist besser? | |||||
| - UDP | |||||
| #### Mittelwert und Standardabweichung der OWDs | #### Mittelwert und Standardabweichung der OWDs | ||||
| - TCP: | - TCP: | ||||
| - Mittelwert: | |||||
| - Standardabweichung: | |||||
| - Mittelwert: 13.78ms | |||||
| - Standardabweichung: 8.11ms | |||||
| - UDP: | - UDP: | ||||
| - Mittelwert: | |||||
| - Standardabweichung: | |||||
| - Mittelwert: 4.68ms | |||||
| - Standardabweichung: 2.87ms | |||||
| - Um OWDs mit UDP genauer zu berechnen müsste die Reihenfolge der Pakete beachtet werden und die Uhren von Client und Server genaustens synkronisiert werden. | - Um OWDs mit UDP genauer zu berechnen müsste die Reihenfolge der Pakete beachtet werden und die Uhren von Client und Server genaustens synkronisiert werden. | ||||
| #### Verschiedene Bitraten | #### Verschiedene Bitraten | ||||
| - Hier wieder OWDs messen | - Hier wieder OWDs messen | ||||
| - Mit UDP | |||||
| - 0.2 MBit/s mit LAN | |||||
|  | |||||
| - 2 MBit/s mit LAN | |||||
|  | |||||
| | LAN | $\mu_{OWD}$ | $\sigma_{OWD}$ | Wertung | | |||||
| | -------- | -------- | -------- | --------- | | |||||
| | 0.2 Mbits/s | -0.01 | 0 | + - | | |||||
| | 2 Mbit/s | -0.007 | 0 | + + | | |||||
| - Für LAN | |||||
| - 0.2 MBit/s mit WLAN | |||||
|  | |||||
| - 2 MBit/s mit WLAN | |||||
|  | |||||
| | WLAN | $\mu_{OWD}$ | $\sigma_{OWD}$ | Wertung | | |||||
| | -------- | -------- | -------- | --------- | | |||||
| | 0.2 Mbits/s | 53.03 | 29.76 | - - | | |||||
| | 2 Mbit/s | 5.17 | 3.03 | + - | | |||||
| - Für WLAN | |||||
| #### Verschiedene Parameter raspivid | #### Verschiedene Parameter raspivid | ||||
| - Hier wieder OWDs messen | |||||
| - 1280 x 720, 20fps, 2Mbit/s , | |||||
| - ```-t 0 -fps 20 -w 1280 -h 720 -b 2000000 -o``` | |||||
| - 1280 x 720, 10fps, 2Mbit/s | |||||
| - ```-t 0 -fps 10 -w 1280 -h 720 -b 2000000 -o``` | |||||
| - 1280 x 720, 5fps, 2Mbit/s | |||||
| - ```-t 0 -fps 5 -w 1280 -h 720 -b 2000000 -o``` | |||||
| - 640 x 360, 40fps, 2Mbit/s | |||||
| - ```-t 0 -fps 40 -w 640 -h 360 -b 2000000 -o``` | |||||
| - 640 x 360, 20fps, 2Mbit/s | |||||
| - ```-t 0 -fps 20 -w 640 -h 360 -b 2000000 -o``` | |||||
| | Parameterset | $\mu_{OWD}$ | $\sigma_{OWD}$ | Wertung | | |||||
| |--------------|-------------|----------------|---------| | |||||
| |```-t 0 -fps 20 -w 1280 -h 720 -b 2000000 -o```| 5.17ms | 3.02ms | + - | | |||||
| |```-t 0 -fps 10 -w 1280 -h 720 -b 2000000 -o```| 5.69ms | 3.38ms | - - | | |||||
| |```-t 0 -fps 5 -w 1280 -h 720 -b 2000000 -o```| 5.64ms | 3.40ms | - - | | |||||
| |```-t 0 -fps 40 -w 640 -h 360 -b 2000000 -o```| 6.2ms | 3.91ms | + + | | |||||
| |```-t 0 -fps 20 -w 640 -h 360 -b 2000000 -o```| 8.86ms | 5.03ms | + + | | |||||
| #### Verschiedene Puffergrößen | #### Verschiedene Puffergrößen | ||||
| - Einmal mit 10Byte und 1400 Byte (WLan MTU) | |||||
| - Was passiert, wenn die Puffergröße größer als tie MTU | |||||
| - WLAN | |||||
| - Puffergröße: 10B, nichts zu sehen | |||||
| - Puffergröße: 1400B | |||||
| - $\mu_{OWD}: 5.17ms$ | |||||
| - $\sigma_{OWD}: 3.02ms$ | |||||
| - Wertung: +- | |||||
| - Was passiert, wenn die Puffergröße größer als die MTU | |||||
| - Fragmentierung, mehr Overhead | - Fragmentierung, mehr Overhead | ||||
| - Mit 4000B Puffergröße versuchen | - Mit 4000B Puffergröße versuchen | ||||
| - Mit Wireshark angucken | - Mit Wireshark angucken | ||||
| - Fragmentierung ist zu sehen | |||||
| ### Streaming am Fahrzeug | ### Streaming am Fahrzeug | ||||
| - Ploten der Pakete in einer Abbildung (wie vorher) | - Ploten der Pakete in einer Abbildung (wie vorher) | ||||
| - Wenn das Modellauto sich stetig vom Router entfernt. | - Wenn das Modellauto sich stetig vom Router entfernt. | ||||
| - Wenn das Modellauto den Raum verlässt. | |||||
| - Was kann in beiden Fällen beobachtet werden? | |||||
|  | |||||
| - Wenn das Modellauto den Raum verlässt. | |||||
|  | |||||
| ## Versuch 6 | ## Versuch 6 | ||||
| sudo i2cdetect -y 1 | sudo i2cdetect -y 1 | ||||
| ``` | ``` | ||||
| - Adressen der Sensoren: | |||||
| - Infrarot: 0x4f in V | |||||
| - Kompas: 0x60 | |||||
| - Radencoder: On pin 21 | |||||
| - Ultraschall-Modul: 0x70, 0x71 | |||||
| - Kernelmodule laden i2c-bcm2708 | - Kernelmodule laden i2c-bcm2708 | ||||
| - Überprüfen mit ```lsmod``` | - Überprüfen mit ```lsmod``` | ||||
| - Adressen in die ```ikt_car_sensorik.py``` eintragen | - Adressen in die ```ikt_car_sensorik.py``` eintragen | ||||
| - Unten in der Main | |||||
| - Unten in der Main |