You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
langspielplatte b3e66e9779 Update readme. 5 jaren geleden
Versuchstag-1 Versuche jetzt nach Tagen sortiert. 5 jaren geleden
Versuchstag-2 remove pyc files. 5 jaren geleden
Versuchstag-3 Änderungen hinzugefügt. Sensoren waren kaputt, daher mussten wir Workarounds basteln. 5 jaren geleden
Versuchstag-4 remove pyc files. 5 jaren geleden
.gitignore Add pyc files to gitignore. 5 jaren geleden
README.md Update readme. 5 jaren geleden

README.md

IOT-Labor

Versuch 1: Bash

  • Alle Aufgaben sind als Skripte implementiert

Versuch 2: Python

  • Aufgaben a bis c als Skripte implementiert

  • sshfs pi@172.23.90.43:/home/pi ~/test

d)

  • Laden des Servo Daemon
/home/pi/PiBits/ServoBlaster/user/servod
  • Konfigurieren von zwei Servos auf den P1 Pins 11 und 12.
    • Pin in P1 Header: 11 ist GPIO Pin: 17 ist Servo: 1
    • Pin in P1 Header: 12 ist GPIO Pin: 18 ist Servo: 2
    • Pulsbreite ist die Periodendauer: T = $\frac{1}{f}$
    • 100Hz sind 0.01s, also 10000 $\mu s$
      • $\frac{1}{100Hz} = 0.01s = 10000\mu s$
  • Servos und Pulsbreite in /dev/servoblaster eintragen
sudo /home/pi/src/PiBits/ServoBlaster/user/servod --cycle-time 1000

echo 1=wert > /dev/servoblaster
echo 2=wert > /dev/servoblaster

e)

  • Oszilloskop an GPIO Pin 17 anschließen
  • Minimale Pulsbreite ermitteln?

  • 25% sind 60

  • 50% sind ~120

  • 75% sind ~190

  • 100% sind 250

f)

  • in der servoblaster_ctl.py

g)

  • Als Skript implementiert

Versuch 3: Steuerung Keyboard

4d)

Motor

  • Pulsbreite von 100 bis 200
  • $150 + \frac{v}{v_{max}} * 50$
v [m/s] PWM (gemessen) PWM (soll)
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

  • Pulsbreite von 100 bis 200
  • $150 + \frac{\alpha}{\alpha_{max}} * 50$
$\alpha$ [°] PWM (gemessen) PWM (soll)
-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

  • Wiimote mit dem hcitool finden
hcitool scan 
  • Grundgerüst ist implementiert

  • Accelerometer Steuerung

    • TODO
    • Anlog zur Maussteuerung
      • Werte MAX, MIN anpassen

Versuch 5

  • Verbinden mit WLAN
  • ESSID: group20n oder iot_lab_wlan_bgn_03?
  • Kein Passwort und kein DHCP
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

Delays und Offset messen

  • Zeit synkronisieren
ntpq -pn time1.rrzn.uni-hannover.de
> peers
  • Für dratgebunden
  • 8.962 0.071
Dealy [ms] Offset [ms]
Laptop 1.991 0.023
Pi 0.508 0.321
  • Für dratlos
Dealy [ms] Offset [ms]
Pi 0.425 0.157
  • Default Route wieder auf ethernet stellen
  • NTP Service konfigurieren#
    • in /etc/ntp.conf
    • server time1.rrzn.uni-hannover.de eintragen
    • sudo service ntp stop|start

Streaming über das drahtgebundene Netz

  • PI Kamera konfigurieren
    • Kamera anstellen
sudo raspi-config
  • Segmentation offloading ausschalten
    • Für beide Interfaces
ethtool -K <interface> tso off
  • tcpdump starten auf Client und Server
    • als root
  • Auf dem Client
tcpdump -i <interface> tcp and port 1337 and dst <server-ip> -w <file-name.pcap>
  • Auf dem Server
tcpdump -i <interface> tcp and port 1337 and src <client-ip> -w <file-name.pcap>
  • simple-server.py und simple-client.py verwenden
    • Client auf dem PI
    • Server auf dem Laptop
./simple-server.py -a <IP> --tcp
./simple-client.py -s <Server-IP> --tcp
  • Commulative arrival function für Server und Client berechnen und ploten
    • Für später schon Bitraten notieren
./plot-pcap.py --client <pcap> --server <pcap>
  • OWDs berechnen
./calc-owd.py --client <pcap> --server <pcap>

  • Mittelwert: 0.395ms
  • Standardabweichung: 0.213ms

  • Eingestellte Bitrate: 2Mbit/s

  • Tatsächlich gesendete Bitrate: 0.26Mbit/s

Streaming über WLAN

  • default route über WLan einrichten

Plot TCP

  • Stream für 60s mitschneiden und auswerten

    • Wie vorher schon nur über WLan
    • Plot der Pakete
    • OWDS
  • Mittelwert: 13.78ms

  • Standardabweichung: 8.11ms

Plot UDP

  • Mittelwert: 4.68ms
  • Standardabweichung: 2.87ms

  • Was ist besser?

    • UDP

      Mittelwert und Standardabweichung der OWDs

  • TCP:

    • Mittelwert: 13.78ms
    • Standardabweichung: 8.11ms
  • UDP:

    • 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.

Verschiedene Bitraten

  • 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 + +
  • 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 + -

Verschiedene Parameter raspivid

  • 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

  • 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
  • Mit 4000B Puffergröße versuchen

    • Mit Wireshark angucken
    • Fragmentierung ist zu sehen

Streaming am Fahrzeug

  • Ploten der Pakete in einer Abbildung (wie vorher)
    • Wenn das Modellauto sich stetig vom Router entfernt.

  • Wenn das Modellauto den Raum verlässt.

Versuch 6

  • Sensoten für diesen Versuch:

    • Infrarot: GP2D12
    • Kompas: CMPS03
    • Radencoder: Hat Reflexoptokoppler CNY70
    • Ultraschall-Modul: SRF08
  • Überprüfen ob Sensoren angeschlossen sind

    • y-Flag gibt den Bus an
sudo i2cdetect -l
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

    • Überprüfen mit lsmod
  • Adressen in die ikt_car_sensorik.py eintragen

    • Unten in der Main