DesignSpark Electrical Logolinkedin
Menu Suche
Ask a Question

Zerynth vereint den Komfort von Python mit dem PSoC 6 Wi-Fi BT Pioneer Kit

Ein Vorgeschmack auf die kürzlich angekündigte Zerynth-Unterstützung für das PSoC 6 Kit mit zahlreichen Funktionen.

Die Kombination aus PSoC von Cypress und Middleware von Zerynth bietet eine leistungsstarke Plattform für die schnelle IoT-Entwicklung, die von erweiterten Hardwarefunktionen, der Benutzerfreundlichkeit von Python und einem umfangreichen Ökosystem, einem Echtzeit-Betriebssystem mit Multithreading, Cloud-Integration und OTA-Aktualisierungen profitiert.

Einführung zum PSoC

Bildquelle: Cypress Roadmap: PSoC- und MCU-Portfolio.

Das PSoC (programmierbares System-on-Chip) von Cypress kombiniert eine MCU mit konfigurierbaren analogen und digitalen Peripheriegeräten und schafft so eine leistungsstarke Plattform für hochintegrierte Lösungen mit niedriger Leistungsaufnahme. Als solches hat es sich auf dem Massenmarkt der Unterhaltungselektronik, z. B. Apple AirPods, bewährt.

Bildquelle: Cypress Roadmap: PSoC- und MCU-Portfolio..

Das PSoC 6 ist die neueste Gerätefamilie und ist speziell auf Wearables und IoT-Anwendungen ausgelegt. Es verfügt über einen ARM Cortex-M4-Hauptanwendungsprozessor, kombiniert mit einem Cortex-M0+ mit niedrigem Energieverbrauch, der für Funktionen wie das Ausführen eines BLE-Stack und kapazitive Berührungssensoren verwendet werden kann. Außerdem bietet es natürlich konfigurierbare analoge und digitale Blöcke sowie programmierbares I/O-Routing und Verbindungslösungen.

Diese Kombination von Ressourcen ermöglicht es, die Materialkosten zu senken und Lösungen physisch zu verkleinern, während gleichzeitig die Leistungsaufnahme verringert wird, da Funktionen möglichst effizient implementiert werden, sei es am Haupt- oder Zusatzprozessor oder über feste analoge oder digitale Blöcke.

PSoC 6 Wi-Fi BT Pioneer kit

Zusätzlich zu einem PSoC 6 bietet das Wi-Fi BT Pioneer Kit (175-4669) folgende Hauptfunktionen:

  • Erweiterungssteckverbinder, die mit Arduino Uno 3,3-V Shields1- und Digilent® Pmod™-Modulen kompatibel sind.
  • Ultrakleines 2,4-GHz-WLAN- und Bluetooth-Funktionsmodul vom Typ 1DX.
  • Externer 12-Mbit-Quad-SPI-NOR-Flash, der einen schnellen, erweiterbaren Speicher für Daten und Codes bietet.
  • KitProg2, integriertes Programmiergerät/Debugger, mit Massenspeicherprogrammierung, USB-UART/I2C/SPI-Bridge-Funktionalität und Unterstützung benutzerdefinierter Anwendungen.
  • USB-C-Stromversorgungssystem (PD) EZ-PD CCG3 mit Unterstützung aufladbarer Lithium-Ionen-Polymer-Akkus (Li-Po).
  • CapSense-Berührungsschieberegler (fünf Elemente) und zwei Tasten, die beide sowohl für den Betrieb mit Eigenkapazität (CSD) als auch mit gegenseitiger Kapazität (CSX) geeignet sind, sowie einen CSD-Näherungssensor, mit dem Sie die CapSense-Technologie der vierten Generation von Cypress testen können.

Das Kit wird außerdem mit einem Arduino Shield geliefert, das ein 2,4-Zoll-TFT-Display mit 3-Achsen-Beschleunigungsmesser/-Gyroskop, PDM-Mikrofoneingang, 32-Bit-Stereo-Codec und mehr umfasst.

Die Standardentwicklungsoptionen sind PSoC Creator IDE und WICED Studio, die beide eine C-Toolchain verwenden. Wir sind jedoch an der brandneuen Unterstützung für die Python-basierte Entwicklung über Zerynth interessiert und als Nächstes sehen wir uns die Vorbereitung der Entwicklungstools an.

Zerynth Studio

Im Folgenden finden Sie eine Zusammenfassung der Schritte zur Installation von Zerynth Studio unter Ubuntu Linux. Beachten Sie jedoch, dass die Entwicklungsumgebung auch unter MS Windows und Mac OS installiert werden kann.

Wir starteten mit der Erstellung eines neuen Verzeichnisses:

$ mkdir Zerynth

Wir luden dann die Software herunter und speicherten sie an diesem Speicherort. Danach entpackten wir das Archiv und starteten die Installation.

$ cd Zerynth

$ tar xvf zerynth.tar.xz

$ ./zerynth

Wir entschieden uns dann für eine Online-Installation, wählten die neueste Version aus und sobald diese abgeschlossen war, starteten wir die Anwendung. Ein Zerynth-Benutzerkonto ist erforderlich und praktischerweise können wir uns mit einem DesignSpark-Konto anmelden!

Für die Konfiguration von udev für den Gerätezugriff waren einige zusätzliche Schritte erforderlich. Zunächst wurde eine neue Regeldatei erstellt.

$ sudo vi /etc/udev/rules.d/99-kitprog2.rules

Der Inhalt ist:

# Match KP2 PID/VID

SUBSYSTEMS=="usb", ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="f148", ENV{CY_KP2_PID_VID}="f148:04b4"

# Match KP2 CMSIS-DAP

SUBSYSTEMS=="usb", ATTRS{interface}=="KitProg2 CMSIS-DAP", ENV{CY_KP2_PID_VID}=="f148:04b4", MODE="0666"

Danach wurden die udev-Regeln neu geladen.

$ sudo udevadm control --reload-rules && udevadm trigger

Zu diesem Zeitpunkt war die Platine angeschlossen, was zu einem Öffnen des Dateimanager-Fensters führte, da der integrierte Flash als USB-Speicher montiert war. Noch wichtiger war jedoch, dass wir im Feld Device (Gerät) oben in Zerynth Studio die Dropdown-Liste auswählen und das PSoC6 WiFi-Bt Pioneer Kit unter Physical Devices (Physische Geräte) finden konnten.

Kinderleicht

Es gibt drei erste Schritte, die durchgeführt werden müssen, um eine Anwendung laden zu können. Diese werden alle über die gleiche Symbolleistenschaltfläche mit einem Z-Symbol ausgeführt, die sich rechts neben der Dropdown-Liste Device (Gerät) befindet. Beim ersten Anklicken wird eine Registrierungs-Firmware in das Ziel gesetzt, eine eindeutige ID für den Mikrocontroller vergeben und dann mit dem Zerynth-Backend registriert.

Beim zweiten Anklicken werden wir aufgefordert, eine virtuelle Maschine (VM) zu erstellen.

Abschließend wählen wir beim dritten Anklicken die VM aus, die wir verwenden möchten.

Jetzt können wir unsere erste Zerynth-Anwendung ausführen!

Erste Schritte

Eine Auswahl an Beispielen ist über das Glühbirnensymbol in der linken Symbolleiste verfügbar. Dazu gehören sowohl ein klassisches Hello World-Beispiel, das die serielle Konsole für die Ausgabe verwendet, als auch ein LED-Blinken, das für eingebettete Plattformen typischer ist. Beim Klicken auf ein Beispiel werden die Projektbeschreibung und der Inhalt von main.py angezeigt. Danach können Sie lokal eine Kopie erzeugen.

pinMode(LED0,OUTPUT)

# loop forever
while True:
    digitalWrite(LED0, HIGH)  # turn the LED ON by setting the voltage HIGH
    sleep(1000)               # wait for a second
    digitalWrite(LED0, LOW)   # turn the LED OFF by setting the voltage LOW
    sleep(1000)               # wait for a second

Oben sehen wir das Blinkbeispiel, das jedem, der mit Arduino gearbeitet hat, vertraut sein sollte. Und im Programmierhandbuch wird erklärt, inwiefern dies eine Inspiration hinsichtlich der Benennung von Pins und Funktionen war.

Um unser Projekt zu testen, klicken wir das Häkchensymbol in der oberen Symbolleiste an. Danach kann es durch Anklicken der Uplink-Schaltfläche mit dem Pfeil nach oben in das Ziel geladen werden.

Nach einer kurzen Verzögerung beginnt die LED5 zu blinken.

Weitere grundlegende Beispiele umfassen das Auslesen von Digitalumsetzer und ADC sowie erweiterte Beispiele, die die Verwendung von Multithreading und Timern demonstrieren.

Erweiterte Funktionen

Zum Zeitpunkt dieses Beitrags gibt es ein einzelnes PSoC-spezifisches Beispiel, das demonstriert, wie die CapSense-Tasten und der Schieberegler des Pioneer Kits ausgelesen werden. Darüber hinaus gibt es eine große Auswahl an erweiterten allgemeinen Beispielen, die die Funktionen der Zerynth Standard-Bibliothek veranschaulichen, wie z. B. RTC- und Dateisystemunterstützung, Interrupts, Kryptographie, Energieeinsparung und die C-Sprachenschnittstelle, die das Mischen von C- und Python-Code im selben Projekt ermöglicht.

Es gibt auch offizielle Bibliotheken, die Unterstützung für eine Vielzahl von IoT-Plattformen, Ethereum Blockchain, verschiedene Sensoren sowie unglaublich praktische Standards wie Modbus und MQTT bieten. Zudem wird Unterstützung für das Veröffentlichen von Community-Bibliotheken auf GitHub und deren Installation über GitHub angeboten.

Eine besonders praktische Funktion, die wir uns für einen späteren Beitrag aufheben werden, ist der  Zerynth Advanced Device Manager (ADM), der eine umfassende Funktionalität für OTA-Aktualisierungen (Managed Over The Air) und Remote Procedure Call bietet. Dabei kann eine gehostete JSON RPC-Schnittstelle verwendet werden, um eine Python-Funktion auf dem Gerät! per Fernzugriff aufzurufen – und über die Gerätebenutzerschnittstelle.

Natürlich haben wir uns noch nicht mit den konfigurierbaren analogen und digitalen Blöcken befasst, für die die PSoC-Plattform bekannt ist. Es sieht zumindest zurzeit so aus, als müssten diese mit den offiziellen Cypress-Tools konfiguriert werden. Dieser Aspekt der Gerätekonfiguration wäre jedoch vermutlich wesentlich statischer als die Firmware.

Andrew Back

Open source (hardware and software!) advocate, Treasurer and Director of the Free and Open Source Silicon Foundation, organiser of Wuthering Bytes technology festival and founder of the Open Source Hardware User Group.

15 Jul 2019, 15:27

Kommentare