Birulki: Linux am ESP32, Arduino-USB PD-Netzteil, ESP 32-Spielkonsole.

Elektronik ist nicht nur ein Einnahmen-Generator, sondern soll auch Spaß machen. Hier einige Produkte, die positiv auffielen.

von Tam HANNA

Worum geht es hier?

Die hier vorgestellten Neuerungen mögen für einen eigenen Artikel nicht ausreichend umfangreich sein, verdienen nach Ansicht des Autors aber Aufmerksamkeit.

Linux 5.0 „läuft“ am ESP32.

Linux kann – Stichwort Yocto – auf Systemen mit sehr geringen Ressourcen produktiv nutzbar sein. Der unter https://www.reddit.com/r/esp32/comments/om106r/boot_linux_500_on_esp32/ bereitstehende Reddit-Thread nutzte ein Entwicklungsboard vom Typ esp32 devkit v1, und bootete dort den Linux-Kernel.
Interessant ist. dass die eigentliche Ausführung in einer virtuellen Maschine vom Typ JuiceVM erfolgt – sie simuliert einen RISCV-Kern.

Surface Mount – Drucksensor

In Zeiten steigender Lohnnebenkosten sind Systeme, die Cocktail-Mixer oder Burger-Bräter überflüssig machen, zum Anziehen von Venture Capital interessant.
Wer nach einem kompakten und vergleichsweise preiswerten Drucksensor mit hoher Auflösung sucht, soll den Superior Sensor Technologies CP201 in seine Berücksichtigungen einbeziehen. Das Modul ist per I2C ansprechbar und wertet zwei unabhängige Druck-Kanäle aus.

Ob des Einzel-Stückpreises von weniger als € 50 dürfte das System zudem auch in größeren Mengen einsetzbar sein.

ESP32 als Spielkonsole.

Am ESP32 laufende Emulatoren taugen nicht nur als Proof of Concept. CrowdSupply eine auf dem ESP32 basierende Konsole ins Rennen, die ein IPS-Display mit einer Auflösung von 240 × 240 Pixel mitbringt.
Im Bereich der Spiele sind – neben Eigenentwicklungen – Emulatoren für die folgenden fünf Systemarchitekturen vorinstalliert:

1NES
2 GameBoy
3 GameBoy Color
4 GameGear
5 Sega Master System

Im Laufe der nächsten Wochen bzw. Monate möchte der Hersteller Unterstützung für Atari und ScummVM nachrüsten. Zudem ist die Firmware zur Ausführung von Arduino-Sketches befähigt, die der Nutzer – ohne Flashing – per MicroSD anliefert.

Lora: Neue Module, Fertigungsunterstützung.

Die STM-Controllerserie für Lora-Funknetzwerke dürfte mittlerweile Quasistandard sein. Im Laufe der letzten Monate wurden immer wieder Module angekündigt, die aber schnell „Out of Stock“ gingen. Zum Zeitpunkt der Drucklegung versprach Seeed Studio, dass der hauseigene LoRa-E5 verfügbar sei – derzeit ist dies auch wieder der Fall.

Seded unterstützt Nutzer des Moduls mit Ermäßigungen bei der hauseigenen Fertigungs-Dienstleistungen. Neben kostenloser Unterstützung beim Design In verspricht man unter bestimmtenen Bedingungen einen $ 250-Voucher für ein „erfolgreich gefertigtes“ Design – weitere Informationen finden Sie im unter https://docs.google.com/forms/d/e/1FAIpQLSeJTF3c-P8nmyfFP4qlBrVXBTtvUVB5aTsCHBwUvQi93j9sog/viewform bereitstehenden Eingabeformular.
Wer nach einem „bequemeren“ – Stichwort U.FL – Anschluss für Antennen sucht, wird mit dem RAK3172 glücklich. Das Modul ist zwar etwas größer als der Lora-E5, kostet aber nur $ 5,99 in Einzel-Stückzahlen.

Sonst ist er aus technischer Sicht ähnlich – als Hauptprozessor kommt ein STM32WLE5JC zum Einsatz, der 256 kB Flash und 64 kB RAM mitbringt.

Arduino-Board mit leistungsfähiger Stromversorgung per USB PD.

Das „Design Out“ eines Arduino-basierten Prototypen in ein finales System ist eine Aufgabe, an im Umgang mit Kleinkunden geübte Consultants viel Geld verdienen.
Ein häufig auftretendes Problem ist die schwache Stromversorgung – „gewöhnliche“ USB-Ports nicht besonders viel Energie. Der Power Delivery-Standard schafft an dieser Stelle Abhilfe, seine Implementierung ist allerdings kompliziert.
Mit dem PD Micro schickt Crowd Supply eine Variante des Arduino Micro Pro ins Rennen, die per USBC Kontakt aufnimmt und über zwei Schraubklemmen wesentlich mehr Energie liefert.

Als Entwickler müssen Sie über einen Arduino-Sketch festlegen, wie viel Energie für die sichere Inbetriebnahme Ihrer angeschlossenen Hardware erforderlich ist. Der USBPD-Controller vom Typ FUSB302 – er ist mit dem Hauptprozessor vom Typ ATmega32U4 über I2C verbunden – prüft dann mit der angeschlossenen Workstation die Verfügbarkeit der Energie, um die Last bei Bedarf freizuschalten.
Mit einem Einzel-Stückpreis von rund $ 25 und der robust erscheinenden Schraubklemme ist das Board nicht nur fürs Prototyping, sondern auch für kleine Serien attraktiv – behalten Sie das Produkt im Hinterkopf, wenn ihre nächste Aufgabe „etwas mehr“ Energie benötigt, als ein gewöhnlicher USB-Port liefern kann.

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More

Meadow-Roadmap: ESP32-artiges Modul angekündigt

Die von Wilderness Labs übernommene .net-Embedded-Umgebung Madow ist eine klassische „Never Ending Story“. In der neuen Roadmap für die Version 1.0 verspricht das Unternehmen eine SMD-Variante der Plattform.

von Tam HANNA

Worum geht es hier?

Das vom Microsoft-Manager Bryan Costanich gegründete Unternehmen Wilderness Labs kaufte vor einigen Jahren die Rechte an der Netduino-Serie. Momentan ist am Markt der Meadow F7 erhältlich – ein Evaluationsboard, das .net-Code auf einem STM32-Prozessor ausführt, ein ESP32 sorgt für Funkkommunikation.

Neuerungen und Pläne

Die mit Abstand wichtigste Neuerung in der unter http://developer.wildernesslabs.co/Meadow/Release_Notes/Roadmap/ veröffentlichten Roadmap ist, dass Bryan Costanich nun erstmals offiziell von einem SMD-Modul spricht. Das Produkt wird sich wahrscheinlich am Formfaktor des ESP32 orientieren, und bringt neben Ethernet-Adaptern für „robustere“ Kommunikation auch Unterstützung für SD-Karten mit. Die genaue Ankündigung findet sich in der Abbildung.

Bequemere Entwicklungsarbeit durch Debugging und FOTA.

Das Debuggen von Applikationen für den Meadow F7 war bisher nicht mit dem vergleichbar, was Entwickler von Visual Studio kennen. Im Rahmen der Auslieferung der Version 1.0 der Runtime möchte Wildernes Labs Step bei Step-Debugging für Visual Studio und Visual Studio Code nachrüsten.
Zwecks bequemerer Aktualisierung von bereits im Feld befindlicher Hardware soll ein Firmware Over the Air-Updatedienst angeboten werden, der neben der eigentlichen Nutzer-Applikation auch Aktualisierungen der Controllerfirmwares vornimmt.
Zu guter Letzt sollen die „Einstellungen“ des Systems – beispielsweise für WLAN oder Gerätenamen – fortan aus .YAML-Dateien stammen. Sinn dieser Anpassung ist das Vereinfachen der Customization vorliegender Boards.

Cloud-Messaging für Meadow F7.

Zwecks einfacherer Synchronisation sollen Meadow F7-Gerätepools fortan Push-Nachrichten entgegennehmen. In der offiziellen Ankündigung wird für das Absetzen der Nachrichten einerseits das CLI-Werkzeug, andererseits eine noch nicht näher spezifizierte Clouddienstleistung namens Meadow.Cloud erwähnt.

Neue Funktionen, nach 1.0.

Nach der Auslieferung von 1.0 stellt Wilderness Labs die Pflege der Plattform nicht ein. Einige „neue“ Funktionen, die auf absehbare Zeit verfügbar werden, sind beispielsweise Sleep Mode-APIs, über die sich das Gerät in einen Schlafzustand versetzen lässt. Außerdem planen die Entwickler Unterstützung für den CAN-Bus, eine Anpassung an .net 6.0 und an und Erweiterungen im Bereich der Kompilation.
Spezifischerweise soll der Meadow F7 die im Desktop-.net-Framework seit längerer Zeit unterstützte AOT-Kompilation unterstützen: Präkompilierte Binärdateien muss man zur Laufzeit nicht mehr interpretieren, was zu einer schnelleren Ausführung führt.
Zu guter Letzt plant man im Bereich der Hardware-APIs Erweiterungen – die Abbildung zeigt, welche Baustellen Bryan Costanich avisiert.

Lohnt es sich?

Außer Frage steht, dass Microsoft Abenteuer im Embedded Bereich wenig erfolgreich sind – die Abbildung zeigt mit dem Gadgeteer und dem hier nicht gezeigten Netduino, dass zwei „Karkassen“ mahnend am Weg liegen.

Der Fairness halber muss man anmerken, dass diese Probleme – im Allgemeinen – Fremdverschulden waren. Aus technischer Sicht funktionierten Microsoft‘s Systeme im Allgemeinen gut – der Gadgeteer war zu früh am Markt, der Netduino verendete aufgrund wirtschaftlicher Malversationen in einem von der Netduino-Foundation mitgetragenen Smartwatch-Projekt (siehe beispielsweise https://www.reddit.com/r/shittykickstarters/comments/e5u4bz/remember_the_agent_smartwatch_what_happened_to/).
Der Autor dieser Zeilen nutzt den Meadow F7 seit einiger Zeit privat, und hatte mit dem Entwicklerteam schon mehrfach zu tun. Nach seiner – zugegebenermaßen eingeschränkten – Ansicht ist das Team um Bryan Costanich grundehrlich, und reagiert sehr schnell auf Fehlerberichte – wer viel .net-Code im Unternehmen hat und nicht unter extremen Zeitdruck steht, ist gut beraten, dem Produkt eine Chance zu geben.

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More

Hands-On mit Qt for MCUs – QML-Parser ohne Komfortfunktionen

Nach Nokias Übernahme von Trolltech erlebte das C++-Framework eine Hochblüte: im Vergleich zu “klassischem C++” ist Qt zugegebenermaßen bequemer. Die Microcontroller-Variante hat mit der Vollversion außer dem Namen nichts gemein.
von Tam HANNA

Worum geht es hier?

Qt ist ein nach dem in Abbildung eins gezeigten Schema aufgebautes Cross-Plattform-Framework, das im Zusammenspiel mit Erweiterungen des nativen Compilers der Plattform native Applikationen erzeugt.

Für Qt spricht neben dem immensen Funktionsumfang der Bibliotheken und den leistungsstarken GUI-Stacks vor allem die Erweiterung von C++ um Komfortfunktionen. Feature Nummero eins ist das Signal-Slot-System, das “eventorientierte” Verbindungen zwischen Klassen erlaubt:

1QPushButton *button = new QPushButton;
2QObject::connect(button, &QPushButton::clicked, someFunction);

Zudem implementieren von QObject abgeleitete Klassen ein Parent-Child-System, das grundlegende Garbage Collection realisiert.

Exkurs: QML

Qt’s für die Desktopentwicklung vorgesehener GUI-Stack erfuhr mit Qt 4.7 eine Erweiterung: eine als QML bezeichnete und auf einem JavaScript-JSON-Parser basierende Sprache sollte Entwicklern die Erzeugung von “animationsintensiven Applikationen” für Smartphones ermöglichen.

1Rectangle {
2 width: 200
3 height: 100
4 color: „red“
5
6 Text {
7 anchors.centerIn: parent
8 text: „Hello, World!“
9 }
10}

QML erlaubt das Einbinden von JavaScript-Ausdrücken, um auf von Steuerelementen erzeugte Ereignisse zu reagieren:

1 menuBar: MenuBar {
2 Menu {
3 title: qsTr(„File“)
4 MenuItem {
5 text: qsTr(„&Open“)
6 onTriggered: console.log(„Open action triggered“);
7 }

Im Hintergrund bietet die Engine Integration mit selbst erzeugten C++-Klassen:Nach der initialen Umstellung liess sich mit dem Produkt, insbesondere nach der Finalisierung der Steuerelementebibliothek, bequem arbeiten.

Qt für Microcontroller: nur QML

Im Microcontrollerbereich kommt eine als Qt Ultralight bezeichnete Plattform zum Einsatz, die auf die in Modulen wie Qt Core und Qt Gui enthaltene Unterstützung verzichten muss – daraus folgt unter Anderem das Fehlen des weiter oben beschriebenen Signal-Slot-Systems.
Die Bereitstellung von QML im Microcontrollersystem erfolgt zudem nicht durch einen auf dem Embeddedsystem lebenden Parser. Qt Creator wandelt die QML-Dateien stattdessen am Desktop in C++-Dateien um, und kompiliert diese:

1 // height: 290
2 // line 5 „C:/Users/tamha/Documents/MyMCU/MyMCU.qml“
3 height.setValue(290);
4 // width: 480
5 // line 4 „C:/Users/tamha/Documents/MyMCU/MyMCU.qml“
6 width.setValue(480);

Qt-Applikationen lassen sich per Qt for MCUs 1.9 nur eingeschränkt debuggen: Das von anderen Zielsystemen bekannte direkte Debugging aus der IDE Qt Creator heraus funktioniert nicht. Stattdessen ist entweder manuelle Aktivierung (Stichwort GDB) oder der Umweg auf die hauseigene IDE des Herstellers (Renesas) erforderlich.
Beachten Sie zudem, dass Qt im Mikrocontrollerbereich unbedingt die Kompilation unter Nutzung von CMake voraussetzt: die Arbeit mit .pro-Dateien ist nicht möglich. Dafür ist die Hardwareunterstützung vergleichsweise breit – laut https://doc.qt.io/QtForMCUs/qtul-supported-platforms.html kommen MCUs von Infineion, NXP, Renesas und STM gleichermaßen zum Einsatz.

Lohnt es sich?

Qt ist auf keinen Fall billig, da die quelloffene Version nicht für die Arbeit mit Microcontrollern zugelassen ist. Möchten Sie für Microcontroller entwickeln, so ist auf jeden Fall eine kommerzielle Version erforderlich.
Die Small Business-Lizenz um 499USD / Jahr setzt bei der Entwicklung von Embeddedsystemen pro Runtime Zusatzkosten voraus – die Qt Company veröffentlicht diese zum Zeitpunkt der Drucklegung nicht einmal, sondern nennt sie nur auf Anfrage (siehe https://www.qt.io/pricing#packages).

Da der Gutteil der vom Desktop bekannten Support-Infrastruktur in Qt for MCUs fehlt, ist die “Value Proposition” weniger klar. Enthält Ihr Code (wie die meisten Qt-Applikationen) Qt Core-basierte Klassen, so müssen Sie diese auf gewöhnliches C++ umschreiben. Qt hält sich zudem aus dem Thema Hardwarezugriff heraus, was den bei Portierungen anfallenden “Gewinn” durch Aufwandsreduktion einschränkt.
Zu guter Letzt bieten Anbieter von Mikrocontrollern bieten heute hauseigene, durchaus komfortable GUI-Stacks an. Behalten Sie diese bei der Kaufentscheidung für und gegen Qt auf jeden Fall im Hinterkopf…

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More

Canaan Kendryte K510: AI-Beschleunigerchip auf RISC-V-Basis mit höherer Performance

Canaan stellen auf der World Artificial Intelligence Conference eine neue Version des AI-Beschleunigers K210 vor, der Entwicklern wesentlich mehr Performance bietet.

von Tam HANNA

Worum geht es hier

Der Canaan K210 ist einer der leistungsstärksten AI-Beschleunigermodule: der vom Formfaktor an den ESP32 erinnernde Chip bringt neben zwei mit 400 MHz getakteten RISC-V-Kernen eine als KPU bezeichnete Engine mit, die neuronale Netzwerke beschleunigt ausführt. Mit dem K510 steht eine schnellere Version des Chips in den Startlöchern – dank höherer Performance lassen sich AI-Aufgaben schneller abarbeiten, was zum Beispiel bei Zielerfassung zu höherer Genauigkeit führt.

Mehr und schnellere Kerne

Der Vorgänger K210 stellte zwei mit 400 MHz laufende RISC-V-Kerne zur Verfügung, die auf die KPU und ein dediziertes FFT-Modul zurückgreifen durften. Das bei diversen Quellen, darunter die im Allgemeinen gut informierte cnx-Software (https://www.cnx-software.com/2021/07/09/kendryte-k510-tri-core-risc-v-ai-processor-3-tops/), angebotene Übersichtsdiagramm zeigt, dass die FFT-Einheit nun aus einem dedizierten zusätzlichen Rechenkern besteht. Die beiden Hauptkerne arbeiten nun mit maximal 800 MHz, was eine Verdoppelung darstellt.

Unter’m Strich verspricht Kendryte eine Verdreifachung der Rechenleistung des Gesamtsystems. Obwohl das Datenblatt des Chips noch nicht zur Verfügung steht, berichten alle Quellen über die Verfügbarkeit eines LPDDR3/LPDDR4-Interfaces für zusätzlichen Arbeitsspeicher. Zudem enthält der Chip ein Ethernet-Interface.
Diese Verbesserungen dürften einen Gutteil der von AI-Experten im Gespräch mit dem Autor geäußerten Kritik an K210 und MAX78000 entschärfen. Im produktiven Bereich genutzte Modelle, beispielsweise zur Kennzeichenerfassung, können mehrere Dutzend Megabyte umfassen – durch das DDR-Interface können Modulhersteller dem K510 nun mehr RAM zur Verfügung stehen.

Problematische Verfügbarkeit

Kendryte K210-Module sind momentan vor Allem in Modulen wie dem MaixDuino erhältlich – weder OEMSecrets noch LCSC offerieren das Bauteil. Beim K510 ist die Verfügbarkeit noch schlechter, bis Ende des Jahres verspricht Canaan nur “einige tausend Samples”, als Begründung führt das Unternehmen Mangel an 28nm-Fertigungskapazität an.
Für die nächsten Jahre plant Canaan die Auslieferung dutzender weiterer Chips. Das im Allgemeinen gut informierte Twitter-Account AnalogLamb bietet unter https://twitter.com/AnalogLamb/status/1413101945171058691/photo/1 die in der Abbildung gezeigte Roadmap an, die auf der Konferenz ohne weitere Erklärungen präsentiert wurde.

Lohnt es sich?

Canaan-Module sind – für Personen ohne Chinesischkenntnisse und lokale Kontakte – Bückware. Wer nicht chinesisch spricht, fährt beim Anbieter unter ferner Liefen. Die extrem hohe Leistung und der im Vergleich zu westlichen Lösungen wie dem MAX78000 geringe Preis der Chips lassen das Bauteil trotzdem attraktiv erscheinen…

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More

Elektromechanische Neuigkeiten: Beleuchtete Schalter, thermische Dichtungen, PCB-Stecker mit Wagokle

Elektronik ist mehr als Mikrocontroller. In den letzten Wochen erschienen einige elektromechanische bzw. analogelektronische Produkte, die Aufmerksamkeit verdienen.

von Tam HANNA

Worum geht es hier?

Die (normalerweise ein Mal pro Monat erscheinende ) Birulki-Liste möchte Produkte kurz vorstellen, die zwar interessant sind, aber andererseits nicht genug Inhalt für einen kompletten Artikel bieten.

Board-to-Wire-Wagoklemme

Wagoklemmen gehören spätestens dann ins Labor, wenn man eine Immobilie besitzt. Die Komponenten ermöglichen das Verbinden von Drähten – idealerweise sollten diese eine Aderendhülse aufweisen.

WAGO expandiert sein Steckerportfolio seit einiger Zeit. Die 2020 vorgestellte MCS MAXI 16 erreicht nun Distributoren, und fügt den Klemmen eine mit einem Board-To-Wire-Stecker kompatible Variante hinzu.

Das Steckersystem umfasst derzeit Varianten mit zwei bis sechs Polen (siehe https://www.wago.com/global/electrical-interconnections/mcs-maxi). Die Isolationsspannung beträgt 1000V, als Maximalstrom pro Ader gibt Wago 76 Ampere an. Die Komponenten sind alles andere als preiswert, pro Connector fallen in geringen Losgrößen Preise zwischen 5 und 15 EUR an.

Beleuchteter Kippschalter von C&K

Egal ob Modeelektronik oder Messtechnik: Hochwertige Schalter erfreuen den Benutzer. C&K schickt nun Kippschalter ins Rennen, die wie in der Abbildung gezeigt eine farbige LED im “Knopf-Kopf” unterbringen.

Die mit Einzelstückpreisen von rund 20 Euro nicht wirklich preiswerten Schalter der ILT-Serie (andererseits: Wann waren Kippschalter je preiswert?) bringen wie in der Abbildung gezeigt eine Diode mit, die zwischen dem zweiten Schalter-Terminal und Masse geschaltet ist. In Hunderterstückzahlen fallen die Einzelpreise laut dem Preisvergleichsdienst OEMSecrets in den Bereich von 10 EUR pro Stück.

FESTO-Solenoidventile ab Sofort bei Digikey

Solenoidventile erlauben die Steuerung von Gas- und Wasserströmen. Bisher waren die Teile vor Allem bei dedizierten Hydraulik- bzw. Pneumatikdistributoren erhältlich – nun lassen sich einige Serien von FESTO bei DigiKey mitbestellen (siehe https://www.digikey.com/en/product-highlight/f/festo/vuvs-series-solenoid-valves).

Spannungsüberwachungs-IS mit konstantem Verhalten “von Null an”

Einschalt- und Ausschaltprozesse gehören zu den interessantesten Aspekten des Schaltungsdesigns. Die Verwendung eines Versorgungsspannungs-Überwachungsbauteils sorgt für Ruhe – problematisch nur, dass die Ausgangsspannung der Überwachungsbauteile normalerweise erst ab einer gewissen Mindestspannung definiert ist.

Mit dem MAX16162 schickt Maxim einen IS ins Rennen, dessen Ausgangsverhalten von 0.0V an definiert ist – Maxim spricht von “glitch free”.

Die sowohl im SOT23- als auch im WLP-Gehäuse erhältlichen Bauteile sind im Prinzip normale Versorgungsspannungs-Überwacher. Die Einstellung der Grenzspannung und der Dauer des Resets erfolgt dabei durch die Auswahl der korekten Bauteilseriennummer, das Datenblatt bietet mehrere Tabellen und einen nomogrammartigen Auswahlführer.

Maxim lässt sich diese Funktion allerdings gut bezahlen: Der OEMSecrets-Tausender Bestpreis für den MAX16162 pendelt sich um 1.5 USD ein.

Laird Performance-Dichtungen für Thermik und EMV

Unter dem englischen Begriff Gasket fassen Distributoren diverse Dichtungselemente zusammen. Laird Performance Materials – das Unternehmen fiel in der Vergangenheit besonders durch “geometrisch kompakte” Spulen auf – bietet mit der GOF-Serie eine Gruppe neuer Materialien an, deren Abkürzung aus der zu ihrer Erzeugung verwendeten Technologie (Graphite over Foam) folgt.

GOF1000 und GOF2000 beschränken sich auf die thermische Übertragung – die Bauteile sind eine Art “Schaumpad aus Wärmeleitpaste”, das gute Kompressionseigenschaften aufweist. Der GOF3000 verpackt das Schaumelement zusätzlich in eine Art Kupferfolie, was als EMV-Filter agiert.

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More

Zerynth-Python ohne ESP32, MicroEJ erleichtert Continuous Integration, ST-IDE für BlueNRG

Wer mit Python, Java oder BlueNRG-Modulen entwickelt, darf sich über Änderungen im Bereich der Toolchain freuen. Zerynth limitiert Unterstützung für Drittanbieterhardware, während BlueNRG-Nutzer und MicroEJ-Anwender neue Werkzeuge zur Hand bekommen.
von Tam HANNA

Worum geht es hier?

Zerynth ist ein “Python-Compiler”, der die Erzeugung von Mikrocontrolleranwendungen unter Nutzung von Python ermöglicht. Anders als Micro bzw CircuitPython kommt er ohne Interpreter am Controller aus.

MicroEJ ist eine Java-Portierung für diverse 32bit-Controller, die unter Anderem fortgeschrittene GUIs realisieren hilft und eine umfangreiche IDE mitbringt.

Mit WISE Studio bietet ST eine eigene IDE für BlueNRG-Module an: die Chips werden im Allgemeinen nach wie vor nicht von STMCubeIDE unterstützt, nun gibt es aber eine auf Eclipse basierende (und somit das gewohnte GUI offerierende) Alternative zu KEIL.

MicroEJ: Continuous Integration möglich

MicroEJ ist aus technischer Sicht ausgereift, die auf Eclipse basierende IDE erleichtert die Entwicklung von Anwendungen. Problematisch war bisher die Kompilation, die im Allgemeinen unter Nutzung der GUI-Werkzeuge erfolgte und somit für Continuous Integration und andere moderne Entwicklungsprozesse blockierend war.

Mit MicroEJ 21.03 ändert sich dies. Eine als Module Manager bezeichnete Komponente erlaubt die Kompilation diverser Komponenten von der Kommandozeile aus. Über die unter https://docs.microej.com/en/latest/ApplicationDeveloperGuide/mmm.html#command-line-interface im Detail dokumentierte und als mmm bezeichnete Utility lassen sich Applikationen sogar im Simulator ausführen, unter https://docs.microej.com/en/latest/Tutorials/tutorialSetupBuildUsingJenkinsAndArtifactory.html findet sich ein Tutorial, das die Integration in Jenkins demonstriert.

Im Hintergrund erfuhr auch das MicroEJ SDK ein Update – Details hierzu finden sich unter https://forum.microej.com/t/new-microej-sdk-available-distribution-21-03/847.

Zerynth: Ende der Unterstützung für ESP32

Zerynth war seit jeher ein voll kommerzielles Produkt, das “Kleinkunden” einige kostenlose Lizenzen zur Verfügung stellte. Bisher konnte man für die Entwicklung mehr oder weniger beliebige ESP32-Module verwenden.

Mit Zerynth 3 ändert sich dies – fortan unterstützt man nur noch den in der Abbildung gezeigten und unter https://www.zerynth.com/products/hardware/zm1/ im Detail beschriebenen ZM1. Er ist im Prinzip ein ESP32, der aber ein Cryptomodul aus dem Hause Microchip mitbringt.

Für “alte Kunden” des Unternehmens läuft momentan eine Promotion, in der sich das Evaluationsboard mit starkem Rabatt erwerben lässt. Das diesbezügliche E-Mail mit dem Titel “Support for Zerynth 2 and ZM1-DB special offer” wurde heute vormittag verschickt.

Wer bisher ein ESP32-basiertes System nutzt, bekommt in Zerynth 2 allerdings noch bis zum 31. Januar 2022 technische Unterstützung – die “neuen” cloudbezogenen Funktionen von Zerynth 3 (siehe z.b. https://www.zerynth.com/blog/zerynth-reveals-a-new-iot-platform-for-industrial-applications-and-connected-products/) stehen auf dieser Hardware aber nicht zur Verfügung.

WISE Studio: Eclipse für BlueNRG

Das Debuggen von Applikationen für BlueNRG war bisher – auch aufgrund des Fehlens eines auf den Evaluationsboards integrierten STLinks – arbeitsintensiv (siehe z.B. https://www.youtube.com/watch?v=EKxAVufqDVY). Mit dem unter Windows, Mac OS und Linux kostenlos zur Verfügung stehenden WISE Studio bietet ST nun eine neue IDE für das gesamte BlueNRG-Portfolio an:

1
The STSW-WISE-STUDIO package provides the WiSE-Studio Eclipse IDE, GCC toolchain based, supporting the BlueNRG-x Bluetooth Low Energy systems-on-chips (BlueNRG-1, BlueNRG-2 and BlueNRG-LP) and associated evaluation platforms.
2

3

4
. . .
5

6

7
Furthermore, the tool offers standard debug capabilities to debug the user application through the selected SWD channel. CMSIS-DAP, J-Link, ST-Link/V2 are the supported SWD HW channels provided that the specific tool does not add any specific filter on the supported device.

Wichtig ist, dass die unter https://www.st.com/en/embedded-software/stsw-wise-studio.html bereitstehende IDE keinen Codegenerator bietet – wer den für Peripheriegeräte notwendigen Code mit CUBE erzeugen möchte, kann die BlueNRG-Familie nach wie vor nicht als Target verwenden.

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More

Arduino IoT Cloud – IoT-Clouddienst ohne MQTT

IoT-Clouddienste exponieren normalerweise ein MQTT-basiertes Interface. Arduino.cc setzt bei der IoT Cloud auf ein variablenbasiertes Backend, das Nutzern das Hantieren mit Nachrichten weitgehend erspart.
von Tam HANNA

Worum geht es hier

Puristen mögen dieser Situation unzufrieden gegenüberstehen: benötigt man eine Cloudlösung, um Sensor- und Aktordaten zu verarbeiten und zu visualisieren, so greift man zu einem Drittanbieter. Arduino.cc bietet mit der Arduino Cloud einen eigenen Dienst an, der insbesondere für “niederschwellige” Aufgaben des IoT optimiert ist.

Wie funktioniert es am Arduino?

Physikalische Endstellen hören in der Arduino IoT Cloud auf den Namen Thing. Wenn Sie sich unter https://create.arduino.cc/iot/things erstmals einloggen, so fordert Sie der (benutzerfreundlich gestaltete) Dienst zum Anlegen eines solchen an. Im Rahmen der Einrichtung benötigen Sie den Arduino Agent – ein auch unter Linux verfügbares Hilfsprogramm, das die Kommunikation zwischen Workstation, Cloud und angeschlossener Hardware ermöglicht.

Baustein der Kommunikation zwischen Endgerät und Clouddienst sind als Variable bezeichnete Speicherfelder. Die zweite Abbildung zeigt die “grundlegenden” Datentypen, zusätzlich gibt es einige dimensionsbehaftete Werte.

Je nach Konfiguration nehmen Variablen Änderungen entweder am Client, am Server oder auf beiden Seiten auf. Die Arduino Cloud kümmert sich dann selbsttätig um die Synchronisation der Daten.

Arduino-Code im Fokus

Arduino.cc nutzen die IoT Cloud als Weg, um Entwickler zur Nutzung des hauseigenen Cloud-Codeeditors zu animieren. Die “eigentliche Intelligenz” des Clouddiensts liegt im generierten Projekt in der Datei thingProperties.h, die nach folgendem Schema eine Initialisierungsfunktion und eine lokale Variable bereitstellt:

1
int tamsVariable1;
2
void initProperties(){
3
  ArduinoCloud.setThingId(THING_ID);
4
  ArduinoCloud.addProperty(tamsVariable1, READWRITE, ON_CHANGE, onVariable1Change);
5
}

Das vorliegende Beispiel ist für einen RP2040 kompiliert, der per WLAN Verbindung zum Internet aufnimmt. Der Verbindungsaufbau erfolgt dabei in setup(), wo wir auch die Menge der Debug-Statusausgaben beeinflussen können:

1
void setup() {
2
  pinMode(LED_BUILTIN, OUTPUT);
3
  Serial.begin(9600);
4
  delay(1500); 
5
  initProperties();
6
  ArduinoCloud.begin(ArduinoIoTPreferredConnection);
7
  setDebugMessageLevel(2);
8
  ArduinoCloud.printDebugInfo();
9
}

Die Zuweisung von Rechenleistung an die Cloudbibliothek ist Aufgabe des Entwicklers:

1
void loop() {
2
  ArduinoCloud.update();
3
}

Änderungen an lokalen Variablen müssen Sie der Bibliothek übrigens nicht anzeigen. Jeder Durchlauf von loop() führt eine Überprüfung der Zustände durch, und meldet Änderungen automatisch beim Server.
Zu guter Letzt gibt es onChange-Methoden, die den Sketch über von der Cloud ausgehende Änderungen am Systemzustand informieren:
[c]
void onVariable1Change() {
Serial.print(„onVariable1Change“);
digitalWrite(LED_BUILTIN, variable1);
}
[c]

Was kostet es?

Arduino.cc möchte mit der IoT Cloud auf den Zug des “Recurring Revenue” aufspringen. Neben einer auf zwei Geräte beschränkten Basisversion gibt es unter https://store.arduino.cc/digital/create#plans drei verschiedene Preisstufen, die in der Abbildung gegenübergestellt sind.

Die Verwendung on ESP32-Hardware ist übrigens auch im kostenlosen Plan erlaubt.

Lohnt es sich?

Außer Frage steht, dass die Erzeugung eines attraktiv aussehenden Dashboards mit der Arduino Cloud schnell und unbürokratisch erledigbar ist – in einem Folgeartikel stellen wir die diesbezüglichen Funktionen vor.
Andererseits ist die Skalierung fraglich: das größte Paket mit “nur” 100 Endstellen ist zudem relativ teuer. Für den kommerziellen Gebrauch ist das Produkt deshalb eher weniger geeignet – insbesondere deshalb, weil sich MQTT am Ende doch vergleichsweise schnell erlernen lässt und Entwicklern in der beruflichen Laufbahn doch immer wieder begegnet.

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More

Birulki, Digitalelektronik – neue Mikrocontroller, neue ICs und Windows 11

Die Welt der digitalen Elektronik steht nicht still. Hier eine Liste neuer Produkte, die dem Autor in den letzten Wochen positiv aufgefallen sind.

von Tam HANNA

Worum geht es hier

Hier eine Gruppe Ankündigungen aus dem Bereich digitale Elektronik, die interessant sein könnten.

Crowd Supply ITACA: Arduino als DIP16-IS

Wer betagte Messtechnik im Haus hat, sucht immer nach Möglichkeiten zum Ersatz nicht mehr erhältlicher IS. Sofern Ihr IS mit dem in der Abbildung gezeigten Pinout realisierbar ist, kann der ITACA eine attraktive Alternative zum Graumarkt sein. Die unter dem Namen CS-USVC-KIT-04 bei Distributoren gelistete Platine kostet pro Stück rund 16 EUR.

Die aus technischer Sicht mit dem Arduino Zero kommunale Plattform passt in DIP16-Sockel. Kritisch ist daran nur, dass das Anlegen von 5V – anders als die Angaben diverser Distributoren – nicht erlaubt ist. In der offiziellen Dokumentation findet sich hierzu folgende Passage:

1
Q: Are the IOs pins 5V-tolerant on uChip?
2
A: No, any voltage exceeding 3.3V+10% (3.6V) could irreversibly damage uChip. Please use adequate 5V
3
to 3.3V conversion circuitry to interface uChip to a 5V system

K210 AI Accelerator – AI-Erweiterung für Raspberry Pi mit K210 Kendryte

Der Kendryte K210 ist ein vergleichsweise leistungsfähiges SoC, das neben einem RISC-V-Prozessor (nicht von GigaDevice) auch einen AI-Beschleuniger und eine Hardware-FFT-Einheit mitbringt. Das in Abbildung zwei gezeigte System verbindet einen K210 per SPI mit dem Raspberry Pi, was das Offloading von AI-Aufgaben erlaubt.

Zum Vergleich mit anderen Beschleunigern sei Abbildung drei empfohlen, die mehr Informationen zum unter https://www.crowdsupply.com/xalogic/k210-ai-accelerator bereitstehenden Produkt anbietet.

VORAGO: (teurer) ARM Cortex M0-MCU bei 200 Grad Celsius

Mikrocontroller mögen es nicht warm. Da man (sowohl im metrologischen als auch im militärischen Bereich) manchmal “mehr” braucht, schickt VORAGO mit dem VA10800 einen mit 50 MHz getakteten Chip ins Rennen, der 200 °C Umgebungstemperatur aushält und mit radioaktiver Strahlung zurechtkommt.
Der in einem 128 Pin umfassenden LQFP-Gehäuse angebotene Chip hat 32KB TAM und 128KB Programmspeicher, insgesamt 56 GPIO-Pins sowie je zwei UARTs, I2C-Transciever und SPI-Ports kommunizieren mit Peripherie.
Unter der Stückzahl VA10800-CQ12803ECA findet OEMsecrers derzeit insgesamt drei Stück (!!!) in den Lagern der Arrow-Gruppe, ein Stück kostet sportliche 1000 USD.

DATENBLATT ohne Login => https://hu.mouser.com/pdfDocs/VA10800_DS_1.pdf

STM32G – Value-Mikrocontroller mit neuen Funktionen

STMicroelectronics bietet mit der STM32G-Serie eine Reihe von preiswerten Mikrocontrollern auf STM32-Basis an, einige davon haben ein nur acht Pin (!!!) hohes Gehäuse. Neu gibt es einerseits Varianten mit 512KB Flashspeicher, andererseits CAN FD- und USB-C Full Speed Dual Role-Peripherievarianten.

Im Bereich der 10k-Preise ruft STM folgendes auf:

1
Die Preise beginnen bei -,47 US-Dollar für den STM32G050F6P6 Value Line im TSSOP20-Gehäuse mit 32 KByte Flash-Speicher. Die Produktlinie STM32G0B beginnt bei 1,21 US-Dollar für den STM32G0B0KET6 im LQFP32-Gehäuse mit 512 KByte Flash

Maxim DeepCover – Kryptobeschleuniger

Kryptographische Operationen sind rechenleistungstechnisch teuer. Mit dem in einem 10 Pins aufweisenden TDFN -Gehäuse vorliegenden MAXQ1065 schickt Maxim nun einen per SPI ansprechbaren Coprozessor ins Rennen, der neben einem Hardware-Zufallsgenerator Unterstützung für eine Gruppe von Kryptoalgorithmen mitbringt.

VL53L5 – 8×8-Tiefenscanner mit 400cm Reichweite

ST bietet in der FlightSense-Produktfamilie seit längerer Zeit auf dem Laserscanning-Prinzip basierende Bausteine, die Entfernungen der physikalischen Welt messen.
Mit dem per I2C oder per SPI ansprechbaren VL53L5 erweitert SGS die Produktfamilie insofern, als die Sensoren nun ein Blickfeld von 60 Grad aufweisen und entweder 4×4 oder 8×8 Pixel Auflösung bieten und dank eines integrierten STM32-Controllers finalisierte Ergebnisse bereitstellen.
Als Anwendungsfälle sieht ST die Verwendung als Laser-Autofokussystem an: ob zur Festlegung der Stärke des Blitzes, oder ob der Arbeitsgeschwindigkeit von 60Hz zur Anpassung von Videos.

Windows 11 mit Android-Emulation und TPM 2.0-Verpflichtung

Zu guter Letzt – Birulki zu Digitalelektronik wären ohne dieses Hölzchen unvollständig – sei noch darauf hingewiesen, dass Microsoft Windows 11 angekündigt bzw. vorgestellt hat. Für uns Elektroniker sind zweierlei Faktoren wichtig: Einerseits läuft das Betriebssystem nach derzeitiger Planung nur auf Systemen, die ein TPM 2.0 mitbringen.
Neuerung Nummer zwei ist, dass das Betriebssystem eine auf dem Amazon App Store basierende Emulationsschicht für Android-Applikationen mitbringt. Wieso Microsoft diese an BB10 erinnernde Strategie fährt, ist dem Autor nur leidlich klar – normalerweise fanden sich solche Emulatoren eher bei “in der Entwicklergunst unterlegenen” Plattformen wie BB10 oder Jolla.

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More

GigaDevice RISC-V: DAC mit Nuclei Studio

Die Peripheriegeräte der GigaDevice-RISC-V-Mikrocontroller sind an denen des STM32F1 angelehnt. Hier wollen wir abermals auf das kostenlose Nuclei Studio zurückgreifen, um den DAC eines Evaluationsboards in Betrieb zu nehmen.

von Tam HANNA

Worum geht es hier?

Seit der Übernahme von ARM durch NVIDIA gilt, dass ARM eine „amerikanische“ Architektur ist – mit allen Vorteilen (finanzstarker Eigentümer) und allen Nachteilen (Sanktionsanfällig).
RISC-V ist eine quelloffene Prozessor-Architektur, die schon vom Konzept her sanktionssicherer ist, und ob der wegfallenden Lizenzkosten langfristig billiger ausfallen dürfte (Skalierungseffekte bevorzugen derzeit ARM, was zu „Preisparität“ führt).
GigaDevice bietet mit dem GD32VF1 seit einiger Zeit eine vergleichsweise gut verfügbare Serie von Mikrocontrollern an, die vom Aufbau der EA-Geräte am STM32 orientiert sind.
In diesem Artikel wollen wir den DAC eines Evaluationsboards in Betrieb nehmen. Die Einrichtung von der IDE haben wir dabei – im Detail – im unter https://www.mikrocontroller.net/topic/518533 bereitstehenden Artikel beschrieben.

Kein Codegenerator

Wir hatten im letzten Artikel festgestellt, dass es für die GD32VF-Architektur keinen Codegenerator gibt. GigaDevice stellt stattdessen eine Sammlung leicht nutzbarer Codebeispiele zusammen – der verwendet Autor die Version 1.1.1.
Der Unterordner GD32VF103_Firmware_Library_V1.1.1Examples enthält die in Abbildung eins gezeigte Projektstruktur, die die für die diversen Peripheriegeräte vorgesehenen Codestücke zur Verfügung stellt.

Das unter http://www.gd32mcu.com/data/documents/yingyongbiji/GD32VF103_Firmware_Library_User_Guide_V1.0.pdf bereitstehende PDF ist ebenfalls empfehlenswert, da es „alle“ Peripherietreiberfunktionen en Detail erklärt.
Wir wollen an dieser Stelle mit dem im letzten Artikel erzeugten Projektskelett weiterexperimentieren, und die in einem der DAC-Unterordner zur Verfügung stehenden Codeänderungen Tour a Tour einpflegen.
Das für uns relevante Beispiel ist ExamplesDACDACC_output_voltage, der Inhalt des Verzeichnisses präsentiert sich wie in Abbildung zwei gezeigt.

Bei der „Analyse“ des von GigaDevice bereitgestellten Codes ist es immer empfehlenswert, mit der Datei readme.txt zu starten. Unter den Lizenzbedingungen findet sich im Fall des Beispiels folgende Funktionsbeschreibung:

1
This example is based on the GD32V103V-EVAL-V1.0 board, it shows how to use DAC concurrent mode
2
output voltage. No trigger source is chosen to trigger DAC. The DAC0 output pin is configured
3
PA4 and DAC1 output pin is configured PA5. There are two different voltage in PA4 and PA5. The
4
voltage of PA4 is VREF/2 and the voltage of PA5 is VREF/8.

Die Struktur der main-Methode zeigt nun den Aufruf dreier Funktionen:

1
int main(void)
2
{
3
    rcu_config();
4
    gpio_config();
5
    dac_config();
6
    while (1){
7
    }
8
}

Analog zum STM32 hat auch der GD32VF Clock Gating – wir müssen dafür sorgen, dass die Einheiten mit Arbeitstakt versorgt werden:

1
void rcu_config(void)
2
{
3
    /* enable the clock of peripherals */
4
    rcu_periph_clock_enable(RCU_GPIOA);
5
    rcu_periph_clock_enable(RCU_DAC);
6
}

Die eigentliche Konfiguration erfolgt in folgenden Funktionen:

1
void gpio_config(void)
2
{
3
    /* once enabled the DAC, the corresponding GPIO pin is connected to the DAC converter automatically */
4
    gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_50MHZ, GPIO_PIN_4 | GPIO_PIN_5);
5
}
6

7
void dac_config(void)
8
{
9
    dac_deinit();
10
    /* configure the DAC0 */
11
    dac_trigger_disable(DAC0);
12
    dac_wave_mode_config(DAC0, DAC_WAVE_DISABLE);
13
    dac_output_buffer_enable(DAC0);
14
    
15
    /* configure the DAC1 */
16
    dac_trigger_disable(DAC1);
17
    dac_wave_mode_config(DAC1, DAC_WAVE_DISABLE);
18
    dac_output_buffer_enable(DAC1);
19
    
20
    /* enable DAC concurrent mode and set data */
21
    dac_concurrent_enable();
22
    dac_concurrent_data_set(DAC_ALIGN_12B_L, DAC_OUT_VAL0, DAC_OUT_VAL1);
23
}

Wichtig sind noch die beiden Konstanten:

1
#define DAC_OUT_VAL0 0x7FF0
2
#define DAC_OUT_VAL1 0x1FF0

Der Hinweis, dass der Wert 0x7FF0 dem Wert VREF/2 entspricht, zeigt dass der DAC eine Nominalauflösung von 12 bit bereitstellt. Mit diesem Wissen können wir die Hauptschleife unseres Programms nach folgendem Schema anpassen:

1
int main(void) {
2
    rcu_config();
3
    gpio_config();
4
    dac_config();
5
    uint16_t daculator = 0;
6
    while(1) {
7
        dac_concurrent_data_set(DAC_ALIGN_12B_R, daculator, daculator);
8
        daculator+=10;
9
        if (daculator>4000)daculator=0;
10
    }
11

12
    return 0;
13
}

Ein weiterer Unterschied zum von GigaDevice bereitgestellten Code ist, dass wir hier die Konstante DAC_ALIGN_12B_R verwenden – das deshalb, weil der in daculator befindliche Wert rechtsbündig ist.

Lohn der Mühen ist, dass wir an den Pins PA4 und PA5 des „kleinen“ Evaluationsboard die in der Abbildung gezeigte Wellenform sehen. Die kleinen Unsauberkeiten in diesem Oszillographen stammen von EMI im Labor des Autors.

Fazit

Der Verzicht auf einen automatischen Codegenerator mag auf den ersten Blick erschrecken – in der Praxis lässt sich nach einer Umgewöhnungsphase erfahrungsgemäß genauso gut ohne ihn arbeiten. Der Autor hofft, dass die hier durchgeführten Experimente zur „Vertiefung“ ihres Interesses an RISC-V geführt haben.

Weitere Ressourcen

GD32VF-Evaluationsboards bei TME
=> https://www.tme.eu/hu/en/katalog/?s_field=1000011&s_order=desc&search=GD32VF&visible_params=2%2C367%2C2479%2C35%2C783%2C2408%2C10%2C32%2C788%2C2955%2C9%2C351&mapped_params=351%3A1530178%3B

GD32VF-Evaluationsboards bei LCSC (seriöser chinesischer Distributor)
=> https://lcsc.com/search?q=GD32VF

Hennessy und Pedersen – allgemeine Einführung zu RISC-V bzw seiner ISA
=> https://www.amazon.com/Computer-Organization-Design-RISC-V-Architecture/dp/0128122757
(Bitte keinesfalls nach dem String „Hennessy Pedersen RISC-V architecture“ auf Google HU suchen)

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More

Neue Hilfssoftware: PicoVoice unterstützt Arduino, Renesas integriert Azure RTOS

Mikrocontroller-Entwickler dürfen sich über neue Bibliotheken freuen. Picovoice – das Unternehmen bietet Offline-Spracherkennung an – unterstützt Arduino, während Renesas Azure RTOS in den Code-Generator integriert.

von Tam Hanna

Worum geht es hier?

PicoVoice ist ein Unternehmen, das grammatikbasierte Spracherkennung ohne Internetverbindung auf Mikrocontrollern möglich macht. Hinter dem Begriff grammatikbasierter Erkennung verbirgt sich der Gedanke, dass das Programm nicht wie beispielsweise Lernout&Hauspie’s Dragon „frei“ Text erkennt, sondern anhand vorgegebener Grammatik-Eingabeschemata Erkennungen durchführt. Die geringe Flexibilität wird durch höhere Erkennungsgenauigkeit und reduzierten Ressourcenverbrauch belohnt.
Im Hause Renesas geht es derweil um eine Erweiterung des hauseigenen Code-Generators, der bei Bedarf Projektskelette generiert, die Azure RTOS enthalten.

Picovoice am Arduino

Picovoice steht per se seit einiger Zeit für diverse Arduino-Plattformen zur Verfügung, die „Integration“ in das Ökosystem musste der Entwickler bisher selbst vornehmen. Nun gibt es erstmals – siehe Abbildung – eine Bibliothek, die zwar nur mit dem Arduino Nano 33 BLE Sense kompatibel ist, sich aber direkt aus der Arduino IDE heraus installieren lässt.

Die Integration in den für die Erzeugung der Modelle notwendigen Cloud Dienst ist, wie man es von Standalone-Varianten von Picovoice erwarten würde. Wichtig ist vor allem das Programmbeispiel GetUUID, das die für die Lizenzierung erforderliche Hardware-Id des Boards erzeugt:

1
#include <Picovoice_EN.h>
2

3
void setup() {
4
    Serial.begin(9600);
5
    while (!Serial);
6

7
    const uint8_t *board_uuid = pv_get_uuid();
8
    Serial.print("UUID: ");
9
    const int32_t format_size = pv_get_uuid_size() * 4;
10
    char format[format_size];
11
    for (uint32_t i = 0; i < pv_get_uuid_size(); i++) {
12
        sprintf(format, " %.2x", board_uuid[i]);
13
        Serial.print(format);
14
    }
15
    Serial.println("r");
16
}

Für den eigentlichen Sprach-Verarbeitungs-Workflow steht mit File -> Examples -> Picovoice_EN -> PicovoiceExample ein weiteres Beispiel zur Verfügung.

Von besonderer Wichtigkeit ist die Methode loop, die unter Nutzung einer von Picovoice vorgegebenen Methode Samples einsammelt und diese zur Verarbeitung freigibt:

1
void loop()
2
{
3
    const int16_t *buffer = pv_audio_rec_get_new_buffer();
4
    if (buffer) {
5
        const pv_status_t status = pv_picovoice_process(handle, buffer);
6
        if (status != PV_STATUS_SUCCESS) {
7
            Serial.print("Picovoice process failed with ");
8
            Serial.println(pv_status_to_string(status));
9
            while(1);
10
        }
11
    }
12
}

Interessant ist auch noch, dass die setup-Funktion komplett ohne Internetverbindung auskommt.

Bei der Beschäftigung mit dem Picovoice-Ökosystem ist noch wichtig, dass zwei unterschiedliche Produkte zur Verfügung stehen: Einerseits die als Porcupine bezeichnete Wakeword-Engine, andererseits das als Rhino bezeichnete Intent-Erkennungssystem.

Code-Konfiguration, automatisch.

Desto leistungsfähiger ein Echtzeit Betriebssystem ausfällt, desto involvierter ist seine Konfiguration. Die von Mikrocontroller-Herstellern seit längerer Zeit angebotenen Codegeneratoren bekamen Module eingeschrieben, die – meist auf FreeRTOS basierte – Projektskeletten generieren konnten.
STMicroelectronics spielte im Bereich der Integration zwischen Cube und Azure RTOS eine Vorreiterrolle, Renesas rüstet nun sein als Flexible Software Packet bezeichnetes Codegenerator-System mit einer Option für Azure RTOS aus. Zur Erinnerung: Azure RTOS ist kein komplett neues Produkt, sondern „nur“ ein Microsoftsches Rebranding von Express Logic’s ThreadX.

Zum Zeitpunkt der Drucklegung unterstützt Renesas dabei RA, RX und Synergy. Im Bereich der Middleware sind folgende Module verfügbar:

1
     Azure RTOS FileX high-performance File Allocation Table (FAT)-compatible file system
2
     Azure RTOS GUIX embedded graphical user interface (GUI) application design environment
3
     Azure RTOS TraceX Windows-based analysis tool
4
     Azure RTOS NetX Duo industrial-grade dual IPv4 and IPv6 TCP/IP network stack
5
     Azure RTOS USBX high performance USB host and embedded stack

Ein unter https://aka.ms/MicrosoftAzureRTOS/RenesasFSP/Video bereitstehendes YouTube-Video illustriert die Tiefe der Integration zwischen FSP und Azure RTOS. So ist es zum Beispiel – siehe Abbildung – möglich, die Prioritäten einzelner Threads aus dem GUI festzulegen.

Interessant ist in diesem Zusammenhang auch noch die in der Abbildung gezeigte Möglichkeit, Einrichtungs-Code für häufig verwendete Bibliotheken wie den MQTT-Client „per Drag and Drop“ aus dem Project Explorer direkt in das geöffnete Codefile abzulegen.

Mehr erfahren

Arduino-Portal für PicoVoice
=> https://picovoice.ai/docs/quick-start/picovoice-arduino/

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More