Hey! Sie scheinen aus United States zu kommen, möchten Sie auf die Englisch Webseite wechseln?
Switch to Englisch site
Skip to main content

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

Main34_fdabe3c4d8dbeb928b66bc1c5c4d3d6861aa8a1e.jpg

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

MCU_Portfolio_8b2de17268f0a2d486dabcd36ec4a034405a9796.jpg

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.

PSoC_6_MCU_Portfolio_2019222ea3eeafcb75c64d049a8d3ddc8ca08eb2.jpg

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

P6WBPK_09e83e9c28161865b3d2f922cece868fe685a0d3.jpg

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.

ArduinoShield_b57429cde57528de7a51135ce12ca69d30e43e40.jpg

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

ZP_ZS_PysicalDevices_d4b0643b721077c77bb929a93b05a923d7fc7cec.jpg

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.

ZP_ZS_CreateVM_757f05929402d22fc2b145f98477fc4b4eb56a93.jpg

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

ZP_ZS_Virtualize_57f7e6ced9a34e1d18b310d5dea79cda22b6a8ce.jpg

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

Erste Schritte

ZP_ZS_Blink_4bb9e65e6a417cf687a436fc2bdf1b170d38bfe7.jpg

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.

ZP_P6WBP_LED_407954b9699683199750b75da081756cef5cc433.jpg

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

ZP_ZS_CapSense_d28d82dabeec2bd991af09e8fa7266bb0e9c3a8d.jpg

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.
DesignSpark Electrical Logolinkedin