Alvik trifft Smartphone: Daten live auf dem Handy!

📱 Was ist phyphox?
phyphox ist eine kostenlose App für dein Smartphone (Android & iOS), die von der RWTH Aachen entwickelt wurde. Mit ihr kannst du Physik-Experimente durchführen und Messdaten in coolen Diagrammen anzeigen lassen!

🎯 Was macht das so besonders?

Normalerweise zeigt der Alvik seine Messwerte nur im Computer an. Mit phyphox kannst du die Daten kabellos per Bluetooth auf dein Smartphone senden und dort als Live-Diagramme betrachten – während der Alvik fährt!

Das kannst du zum Beispiel messen:

📥 Schritt 1: Die phyphoxBLE-Bibliothek installieren

Damit der Alvik mit der phyphox-App sprechen kann, brauchen wir eine spezielle Bibliothek. Die musst du einmal auf den Alvik übertragen:

📦 Installation:

  1. Öffne in Thonny links die Dateiansicht des Alvik
  2. Erstelle im Ordner lib einen neuen Ordner namens phyphoxBLE
  3. Lade die Dateien von GitHub herunter
  4. Kopiere alle 3 Dateien in den neuen Ordner:
    • __init__.py (mit zwei Unterstrichen vor und nach "init"!)
    • experiment.py
    • server.py

Ordnerstruktur mit phyphoxBLE-Bibliothek

📲 Schritt 2: Die phyphox App herunterladen

Lade dir die phyphox App kostenlos auf dein Smartphone:

🚀 Schritt 3: Dein erstes Experiment – Geschwindigkeitsmessung

Jetzt programmieren wir den Alvik so, dass er seine Geschwindigkeit live an dein Handy sendet, während er ein Viereck fährt!

💡 Wie funktioniert das?
Der Code nutzt einen Timer, der automatisch alle 200 Millisekunden (= 5x pro Sekunde) die Geschwindigkeit misst und ans Handy sendet. So entsteht ein Live-Diagramm!
from machine import Timer
from arduino_alvik import ArduinoAlvik
from phyphoxBLE import PhyphoxBLE
import time

# Alvik initialisieren
alvik = ArduinoAlvik()
alvik.begin()

# Bluetooth-Verbindung zu phyphox starten
p = PhyphoxBLE()
p.start()
print("Bluetooth gestartet! Öffne jetzt die phyphox App.")

# Diese Funktion wird automatisch vom Timer aufgerufen
def drive_speed(timer):
    # Geschwindigkeit messen
    angular_velocity, linear_velocity = alvik.get_drive_speed()
    print(f"Geschwindigkeit: {linear_velocity:.1f} cm/s")

    # Wert ans Smartphone senden
    p.write(linear_velocity)

# Timer: Ruft alle 200 ms (= 0,2 Sekunden) die Funktion auf
timer = Timer(-1)
timer.init(period=200, mode=Timer.PERIODIC, callback=drive_speed)

# Hauptprogramm: Viereck fahren
print("Fahre Viereck und sende Daten...")
while True:
    for _ in range(4):  # 4 Seiten
        alvik.move(50)   # Vorwärts fahren
        alvik.rotate(90) # 90° drehen
        time.sleep(1)    # Kurze Pause

📱 Schritt 4: Mit der App verbinden

So verbindest du dein Smartphone:

  1. Starte das Programm auf dem Alvik
  2. Öffne die phyphox App auf deinem Handy
  3. Tippe oben rechts auf das ➕ Symbol
  4. Wähle "Bluetooth-Gerät"
  5. Wähle deinen Alvik aus der Liste (z.B. "Alvik" oder "ESP32")
  6. 🎉 Fertig! Du siehst jetzt ein Live-Diagramm der Geschwindigkeit!

🔍 Was passiert im Code?

Code-Zeile Was macht sie?
p = PhyphoxBLE() Erstellt die Bluetooth-Verbindung
p.start() Startet Bluetooth – jetzt kann das Handy sich verbinden
timer.init(period=200, ...) Timer läuft alle 200 ms (5x pro Sekunde)
p.write(linear_velocity) Sendet den Messwert ans Smartphone
🔬 Experimentier-Ideen:
  • Ändere die period auf 100 oder 500 – wie verändert sich das Diagramm?
  • Lass den Alvik schneller oder langsamer fahren – siehst du den Unterschied?
  • Sende statt Geschwindigkeit die Beschleunigung: p.write(ax) (nutze alvik.get_accelerations())
🎯

Challenge: phyphox-Integration

Teste dein Wissen über phyphox und den Alvik!

📝 Quiz

Wie oft wird in diesem Code die Geschwindigkeit gemessen und an phyphox gesendet?

timer.init(period=200, mode=Timer.PERIODIC, callback=drive_speed)

💻 Programmier-Challenge

Aufgabe: Ändere das Programm so, dass die Beschleunigungswerte (statt Geschwindigkeit) an phyphox gesendet werden.

💡 Tipp: Verwende alvik.get_accelerations() statt alvik.get_drive_speed()
def drive_speed(timer):
    ax, ay, az = alvik.get_accelerations()  # Beschleunigung messen
    print(f"Beschleunigung Z = {az} m/s²")
    p.write(az)  # Z-Achse an phyphox senden

✅ Selbsttest

Hake ab, was du gelernt hast:

Fortschritt: 0/3