Aus Raspberry Pi Geek 02/2020

Zerynth Studio: Sony Spresense mit Python programmieren (Seite 2)

Nach dem Vorbereiten des Spresense-Boards und der IDE starten Sie mit einem ersten Beispielprogramm. Sollte es zu Problemen mit dem Bootloader kommen, lässt er sich auch manuell über Device | Info | Burn Bootloader installieren (Abbildung 3).

Abbildung 3: Sollte es beim Installieren des Bootloaders zu Schwierigkeiten kommen, lässt er sich auch manuell einrichten.

Abbildung 3: Sollte es beim Installieren des Bootloaders zu Schwierigkeiten kommen, lässt er sich auch manuell einrichten.

Erster Test

Um schnell und einfach zu starten, verwenden wir für unseren ersten Versuch ein vorhandenes Beispielprojekt. Klicken Sie dazu auf das Examples-Icon, eine Glühbirne, in der linken vertikalen Leiste. Suchen Sie nach Blink und klicken Sie auf den gleichnamigen Eintrag in der Sektion Basics. Daraufhin öffnet sich ein Fenster mit dem hinterlegten Codebeispiel.

Klicken Sie danach auf den Schalter Clone unten im Fenster. Damit nicht alle Ihre Programme direkt in Ihrem Heimatverzeichnis landen, sollten Sie einen anderen Ort dafür verwenden – Workspace/ ist ein bei Entwicklern sehr beliebter Name dafür. Nach dem Klonen des Projekts öffnet die IDE es direkt. Um das eigentliche Programm einzusehen, klicken Sie in der linken Leiste ganz oben auf das Icon Current Project und danach in der Liste rechts daneben auf main.py (Abbildung 4).

Abbildung 4: Das Hauptfenster der Zerynth-IDE mit dem geladenen Beispielprogramm <code>Blink</code>.

Abbildung 4: Das Hauptfenster der Zerynth-IDE mit dem geladenen Beispielprogramm Blink.

Das Programm bringt die LED0 auf dem Spresense-Mainboard zum Blinken. Um es in den Mikrocontroller zu laden, klicken Sie auf das kleine Pfeil-Icon (Uplink) in der Menüleiste. Im Statusfenster unten sehen Sie jetzt, wie die IDE das Programm baut und überträgt. Hier gibt Zerynth Studio auch eventuelle Programmfehler aus.

Nach dem erfolgreichen Upload sollte die LED0 des Boards im Sekundentakt blinken. Sie können nun mit dem Programm etwas herumexperimentieren – beispielsweise eine andere LED blinken lassen oder die Taktrate ändern.

Neues Projekt aufsetzen

Unser nächstes Beispiel liest einen analogen Spannungswert ein und gibt diesen auf einer Siebensegmentanzeige aus. Wir verwenden hierzu das Spresense-Expansion-Board. Dessen Pinout sehen Sie mit einem Klick auf das Icon Device Pinmap oben rechts in der Menüleiste ein. Besitzen Sie nur das Spresense-Mainboard, müssen Sie die GPIO-Pins im Programm an Ihren Aufbau anpassen. Als Anzeige verwenden wir ein auf dem MAX7219 basierendes Modul [4].

Die Spannung, die wir anzeigen wollen, erzeugen wir mit einem einfachen Spannungsteiler, den wir mit einem 10-kOhm-Potenziometer aufbauen. Abbildung 5 zeigt den dazugehörigen Schaltplan, Abbildung 6 den Testaufbau.

Abbildung 5: Der Schaltplan des Versuchsaufbaus.

Abbildung 5: Der Schaltplan des Versuchsaufbaus.

Abbildung 6: Das Spresense mit Poti und Anzeige. In diesem Aufbau verwendet der Autor zus&auml;tzlich das Extension-Board.

Abbildung 6: Das Spresense mit Poti und Anzeige. In diesem Aufbau verwendet der Autor zusätzlich das Extension-Board.

Um in Zerynth Studio ein neues Projekt anzulegen, klicken Sie im Menü auf Project | New. Daraufhin öffnet sich ein Dialog, in dem Sie den Namen und den Speicherort für das Projekt eingeben, alle weiteren Eingaben sind optional. Nach dem Klick auf den Create-Button legt die IDE das Projekt an.

Öffnen Sie nun die Datei main.py links aus dem Project view und starten Sie mit dem Entwickeln. Listing 1 zeigt das Beispielprogramm. Bevor Sie es in den Controller laden, müssen Sie erst das Device: wieder auf Sony Spresense einstellen.

Listing 1

# Spannungsmessung (main.py)
# Created at 2019-10-19 10:38:37.536303
import adc
import math
from maxim.max7219 import max7219
import streams
display = max7219.MAX7219(SPI0, D8)
display.shutdown(False)
display.clear_display()
streams.serial()
Uref=4.93
maxValue=3780
while True:
  sensor_value = adc.read(A0)
  voltage = sensor_value * (Uref / maxValue)
  print("Sensor RAW Value:", sensor_value,"Voltage:",voltage)
  dot=1
  for i in range(3,-1,-1):
    digit=int(voltage)
    voltage=(voltage -digit)*10
    display.set_digit(i, digit, dot)
    dot=0
  sleep(1000)

Damit das Programm halbwegs präzise Messwerte liefert, müssen Sie es an den konkreten Aufbau anpassen. Im ersten Schritt benötigen Sie eine genaue Referenzspannung, die Sie mit einem Multimeter messen; vermutlich liegt sie etwas unter 5 Volt. Den ermittelten Wert tragen Sie in das Programm als Wert für Uref (Zeile 11) ein. Um die zweite Anpassung vorzunehmen, starten Sie das Programm und stellen das Poti so ein, dass die maximal mögliche Spannung am analogen Eingang anliegt.

Die Konsole zeigt Ausgaben des Programms im Mikrocontroller während der Laufzeit an. Diese Funktion erweist sich bei der Entwicklung oft als sehr nützlich. Sie sollten sie aber deaktivieren, sobald das Programm fehlerfrei arbeitet. Sie öffnen die Konsole über das Icon Open Console oben rechts in der Menüleiste und sehen sich die Ausgaben des Programms an.

Hier sehen Sie den Wert, den der AD-Wandler ausgibt, sowie die errechnete Spannung. Der aktuell angezeigte RAW Value entspricht der Referenzspannung. Tragen Sie diese Zahl als Wert für die Variable maxValue (Zeile 12) ein. Mit diesen beiden Anpassungen sollten die Spannungswerte, die das Display anzeigt, ungefähr mit den gemessenen Werten übereinstimmen.

Wenn Sie sich ein wenig mit dem Programm beschäftigen, dann fällt Ihnen sicher auf, dass die analogen Messwerte etwas schwanken. Das liegt daran, dass die 5 Volt vom USB-Bus nicht besonders stabil anliegen. Um die Schwankungen etwas zu verringern passen Sie das Programm so an, dass es eine bestimmte Zahl an Messungen vornimmt und daraus den Mittelwert berechnet. Das führt zu wesentlich präziseren Messungen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben