Archiv der Kategorie: Allgemein

Longan Nano ADC & DAC

Der Longan Nano von Sipeed baut auf dem 32-Bit-RISC-V-Mikrocontroller GD32VF103CBT6 von GigaDevice auf und weist dadurch ein 12-Bit-ADC & DAC-Subsystem auf (2 x ADC, 2 x DAC).

Die Angaben im Datenblatt des GD32VF103CBT6 beschränken sich auf Kennwerte der DACs, die als „(1) Based on characterization, not tested in production“ gekennzeichnet sind. Für den ADC fehlen diese Daten ganz.

SymbolParameterConditionsValue (max.)
DNL(1)Differential non-linearity errorDAC in 12-bit mode±3 LSB
INL(1)Integral non-linearityDAC in 12-bit mode±4 LSB
Offset(1)Offset errorDAC in 12-bit mode±12 LSB
GE(1)Gain errorDAC in 12-bit mode±0.5 %
DAC Charakteristik – Auszug GD32VF103 Datasheet

Grund genug die Charakterestik des ADC & DAC-Subsystem etwas genauer zu betrachten. Die Vorgehensweise ist vergleichbar zum Test beim ESP32 (https://ckblog2016.net/2018/03/03/esp32-adc-dac/).

Vom DAC0 (PA4) wird eine analoge Ausgangsspannung bereitgestellt, die dann vom ADC0 (PA3) gemessen und zur Anzeige gebracht wird. Es genügt also eine Verbindung der beiden Anschlüsse PA3 und PA4 am Longan Nano.

Longan Nano

Mit einfachen Messmittel gestaltet sich eine Aussage über die Genauigkeit des DAC nicht ganz einfach, wie das folgende Bild zeigt.

Longan Nano DAC-Charakteristik

Aufgetragen ist die Abweichung der gemessenen Ausgangsspannung von der Idealkennlinie. Bei einem Spannungswert von 0.8 mV für das LSB ist ein hochauflösendes Digitalvoltmeter erforderlich. Mit einem üblichen Multimeter sind alle Messwerte über 2.2 V wegen zu geringer Auflösung unbrauchbar. Im Bereich unterhalb diese Wertes zeigt die DAC-Charakteristik aber Werte der Ausgangsspannung die allesamt im Bereich von +/- 2 LSB liegen. Die Angaben im Datenblatt können damit (zumindest in diesem Bereich) als messtechnisch bestätigt betrachtet werden.

Durch die Verbindung der beiden Anschlüsse PA3 und PA4 am Longan Nano kann nun der ADC0 die Spannungen des DAC0 erfassen. Das Programm LonganNano_ADC_DAC dient dem Erzeugen der Daten, die die DAC-ADC-Charakterstik beschreiben.

Ausgabe des Programms LonganNano_ADC_DAC

Die Abweichungen vom erwarteten Idealverhalten liegen bei maximal 10 mV.

Das DAC-ADC-Subsystem des Longan Nano (GD32VF103) zeigt damit wesentlich bessere Eigenschaften, als das des ESP32, wodurch bei weniger kritischen Anwendungen auf den Einsatz eines externen ADCs verzichtet werden kann.

Sipeed Longan Nano

Longan Nano von Sipeed ist ein kleines Evaluationboard auf Basis eines 32-Bit-RISC-V-Mikrocontrollers GD32VF103CBT6 von GigaDevice. Für Studenten, Ingenieure, Geeks und Enthusiasten ist das eine Möglichkeit, um auf die neueste Generation von RISC-V-Prozessoren zuzugreifen.

Sipeed Longan Nano wird aktuell nicht durch die Arduino IDE, wohl aber durch PlatformIO unterstützt.

Auf die Installation selbst gehe ich an dieser Stelle nicht ein. Hierzu gibt es einen sehr guten Beitrag von Michel Deslierres.

Der Sipeed Longan Nano bietet zwei Möglichkeiten für den Programm-Upload. Auf der rechten Seite befindet sich ein USB-C-Anschluss über den kann mit dem Tool DFU-Util das compilierte Programm zum Controller geladen werden. Die andere Möglichkeit ist die an der linken Seite herausgeführte serielle Schnittstelle (UART0).

Ich habe diese Möglichkeit verwendet, da ich die seriellen Ausgaben über dieses Port vorgenommen habe. Wie im Bild unten gezeigt bedarf es eines USB-TTL-Konverters, der Tx und Rx sowie 3.3 V und GND zur Verfügung stellt.

Ich habe drei Programme ausprobiert, die unter https://github.com/ckuehnel/GD32 zum Download zur Verfügung stehen.

Das Programm LonganNano_HelloWorld dient dem Test der Inbetriebnahme von PlatformIO IDE und erstem Programm. LonganNano_LCD zeigt die Ausgaben auf dem Onboard-LCD und LonganNano_Dhrystone liefert die Ergebnisse des Dgrystone-Benchmarks.

Serielle Kommunikation & Programm-Upload
Anzeige des Sipeed-Logos
Serielle Ausgabe Programm LonganNano_HelloWorld

Serielle Ausgaben des Dhrystone Benchmarks

Mit einem VAX MIPS Rating von 91 liegt der hier eingesetzte RISC-V Controller deutlich oberhalb der Cortex-M3 von ARM. Vergleichen Sie die Benchmark-Resultate für verschiedene Mikrocontroller von 8-Bit bis 64-Bit unter https://ckarduino.wordpress.com/benchmarks/.

M5Stack Atom Matrix & Atom Lite

ATOM Matrix und ATOM Lite sind ESP32-Entwicklungsboards mit einer Größe von nur 24 * 24 mm. Zum Einsatz kommt ein ESP32-PICO-Chip, der WiFi und Bluetooth für die Kommunikation bietet und über 4 MB integrierten SPI-Flash-Speicher verfügt. Für die IO-Erweiterung steht ein Grove-Port zur Verfügung. Über 6 GPIOs können beide Boards mit externen Sensoren und Aktoren verbunden werden. Die integrierte Typ-C-USB-Schnittstelle ermöglicht das schnelle Hochladen und Ausführen von Programmen

ATOM-Lite bietet eine Infrarot-LED, eine RGB-LED, Tasten und eine PH2.0-Schnittstelle.

ATOM-Matrix verfügt über einen integrierten IMU-Sensor (MPU6886) und eine 5 * 5 RGB-LED-Matrix, die sich sehr gut zu farbigen Signalisationszwecken eignet.

Signalisation über RGB-LED-Matrix

Eine Arduino Library ist unter https://github.com/m5stack/M5Atom zu finden.

Open-Source Real-Time OS für das IoT

Steht man heute vor der Aufgabe, ein neues Embedded System zu entwickeln, dann wird in den Anforderungen kaum die Anforderung nach einer Netzwerkverbindung fehlen. Dabei spielt es in erster Linie keine Rolle, ob es sich um eine drahtlose oder drahtgebundene Kommunikation handelt, ob die Kommunikation durch die Anwendung genutzt wird oder einen Remote Access für Konfiguration und Service darstellt. Möglicherweise lassen sich diese Dinge auch kaum vernünftig trennen.

Ein Embedded System, welches derartige Anforderungen erfüllen muss, ist mit vernünftigem Entwicklungsaufwand nicht ohne Betriebssystem umsetzbar. Die Suche nach einem für die betreffende Aufgabenstellung geeigneten Betriebssystem umfasst, viele und sehr unterschiedliche Aspekte.

Betrachtet man die Langlebigkeit von Investitionsgütern, dann erscheint schon aus strategischen Gründen der Einsatz eines OS-RTOS zwingend. Einer ersatzlosen Abkündigung eines etablierten, proprietären RTOS kann auf diese Weise der Schrecken genommen werden. In einer gewissen Klasse von Embedded Systems bis hin zu Supercomputern gibt es mit Linux ein ausgezeichnetes Beispiel für ein solches Open Source Betriebssystem.

Damit ist Linux heute ein mächtiges Betriebssystem, welches aber auch gewisser Ressourcen bedarf und für Systeme mit kleinem Footprint, geringen Ressourcen und möglichst für Batteriebetrieb angepasstem Stromverbrauch weniger geeignet ist.

Analysiert man aus Github Daten für Code Frequency, Commits und Contributions für Contiki, RIOT und Zephyr, dann kann deutlich eine größere Aktivität der Community beim Zephyr OS gegenüber den anderen beiden RTOS verzeichnet werden. Natürlich ist das Zephyr OS auch ein „junges“ RTOS, was nicht in allen Bereichen bereits ausgereift sein kann.

Das Zephyr Project (https://www.zephyrproject.org/what-is-zephyr) ist ein von der Linux Foundation gehostetes Collaboration-Projekt, eine Open Source Zusammenarbeit, die führende Kräfte aus der gesamten Branche zusammenbringt, um mit dem Zephyr OS ein skalierbares Echtzeit-Betriebssystem (RTOS) für mehrere Architekturen ressourcenbeschränkter Geräte zu entwickeln.

Der in der Zeitschrift Design & Elektronik erschienen Beitrag mit dem o.a. Titel (Design & Elektronik 3/2019, S. 42-48  ) soll Einblicke in das Zephyr OS und die Zephyr Entwicklungsumgebung geben. An Hand einiger einfacher und nachvollziehbarer Programmbeispiele wird die Vorgehensweise bei der Programmierung von Anwendungen und der Build Prozess dokumentiert. Die Programmbeispiele selbst sowie dazugehörige Screenshots sind auf Github unter https://github.com/ckuehnel/zephyrtests abgelegt.

Das Zephyr OS ist ein Open Source RTOS, welches durch das von der Linux Foundation gehostete Zephyr Project und die Nähe zu Linux das Potential hat, bei Embedded Systems mit kleinem Footprint in Zukunft vergleichbar erfolgreich zu werden, wie es Linux bei Systemen mit mehr Performance schon länger ist. Der Erfolg wird sicher stark durch die Community geprägt. Ausdauer und Kraft sind der Community zu wünschen. Die zentrale Mailinglist des Zephyr Projects [ https://lists.zephyrproject.org/g/main ] gibt aktuell Auskunft über die laufenden Aktivitäten.

Arduino Interrupts

Arduino Interrupts:
Speed up your Arduino to be responsive to events

Jetzt auch als Print erhältlich. ISBN 978-3-907856-42-7

Ist nun bei Amazon online unter https://www.amazon.de/dp/3907857429/

Cover



Graham Mantel

4,0 von 5 Sternen Interrupts Explained with examples

2. Dezember 2017 – Veröffentlicht auf Amazon.com Verifizierter Kauf

Interrupts are very useful item used in programming, by extending the basic range of the processor. This book explains in very clear English how to use interrupts . There also are many examples that I have inserted into my computer, and they all compile . Although finding the library files is more difficult, I have been given the run around trying to get the exact libary or equivalents . All being considered the book is well worth obtaining.

Sipeed MAix BiT for RISC-V AI+IoT

Heute eingetroffen:

Sipeed MAix BiT Front

Sipeed MAix BiT Back

Was hat Sipeeds MAix BiT zu bieten?

MAix’s CPU

Kendryte K210 system-on-chip (SoC), bietet folgende Features:

  • Dual-Core RISC-V 64bit IMAFDC
  • 8 MB high-speed SRAM
  • max. 800 MHz Clock
  • KPU (Neural Network Processor)
  • APU (Audio Processor)
  • Flexible FPIOA (Field Programmable IO Array) for GPIO Mapping
  • DVP camera and MCU LCD interface
  • Accelerators and peripherals: AES Accelerator, SHA256 Accelerator, FFT Accelerator (not APU’s one), OTP, UART, WDT, IIC, SPI, I2S, TIMER, RTC, PWM, etc

MAix’s Module integrates K210, 3-channel DC-DC power, 8MB/16MB/128MB Flash (M1w module add wifi chip esp8285 on it) into Square Inch Module.

M1 Module

Sipeed MAix BiT Development Board

Integriert USB2UART Chip, Auto-Download Schaltung, RGB LED, DVP Camera FPC Anschluss für FPC camera und Standard M12 Kamera), MCU LCD FPC Anschluss (für 2.4 inch QVGA LCD), SD Card Slot (Bild oben).

MAix’s SoftWare

  • MAIX wird durch ein Standalone SDK, FreeRTOS SDK auf Basis von C/C++ unterstützt.
  • Ein MicroPython Port unterstützt FPIOA, GPIO, TIMER, PWM, Flash, OV2640, LCD, etc. Das MaixPy Projekt und die MaixPy Dokumentation stehen auf Github zur Verfügung.

Ich bin gespannt auf die ersten Schritte in diesem neuen Umfeld…

Externer ADC am ESP32

In einem früheren Post hatte ich das ADDA-Subsystem des ESP32 untersucht und konnte nur wenig überzeugende Resultate präsentieren.

Ich habe die Messungen an einem neuen ESP32_Core_board v2 wiederholt. Die Resultate waren vergleichbar zur letzten Untersuchung.

ESP32 DAC-ADC-Characteristics

Im ESP32 Forum habe ich einen Hinweise zum Thema gefunden (https://www.esp32.com/viewtopic.php?f=2&t=4784&hilit=adc+accuracy) und eine Polynomapproximation der Kennlinie auf Github.

Diese Funktion habe ich in meinen Test eingebaut und die folgenden Ergebnisse erzielt:

ESP32 DAC-ADC-Characteristics

Schon in der Gesamtcharakteristik ist eine verbleibende Nichtlinearität zu erkennen, die im Detailbild noch deutlicher wird. Die Trendlinie zeigt eine Korrekturmöglichkeit am Gain. Es bleiben aber die nichtlineare Abweichungen , die allenfalls durch ein angepasstes Polynom reduziert werden könnten.

ESP32 DAC-ADS1015-Characteristics – Abweichung der ADC Spannung

Eine Alternative ist ein externer ADC. Ich verwende einen 12-bit ADC ADS1015, den es als Breakout Board von Adafruit u.a. gibt.

Adafruit ADS1915

Das Testprogramm ESP32_DAAD_ext_Test.ino ist auf Github abgelegt.

Die Resultate sehen folgendermassen aus:

ESP32 DAC-ADS1015-Characteristics

Erwartungsgemäss bekommen wir eine lineare Kennlinie, die aber bei näherem Hinsehen mit einem Offset und einem Gain behaftet ist, wie die folgende Darstellung besser zeigt.

ESP32 DAC-ADS1015-Characteristics – Abweichung der ADC Spannung

Diese Eigenschaften lassen sich kalkulatorisch ausgleichen und wir erhalten schliesslich Abweichungen im Bereich weniger mV.

Abweichung der ADC Spannung nach Offset- und Gain-Korrektur

Zwei Jahre Calliope mini

Herzlichen Glückwunsch zum Geburtstag zu zwei Jahren Calliope mini.

Für mich die frohe Botschaft dabei ist die Unterstützung für MicroPython. Nun ist der Calliope mini ist wieder kompatibel zu MicroPython.

Der Lagesensor, B-Taster, die RGB-LED und der Lautsprecher sind nun ansprechbar. Die Calliope mini Bibliothek steht nach der Installation durch die Eingabe

import calliope_mini *

zur Verfügung.

Link zum GitHub Repository: https://github.com/calliope-mini/calliope-mini-micropython

Die Betaversion des beliebten MicroPython Editors Mu  wurde angepasst und ist ebenfalls online verfügbar. Für Dezember ist die offizielle Version angekündigt.
Mu 10

Mit phyWave-Modulen ins IoT

Daten von Sensoren im Netz oder zu Aktoren aus dem Netz verfügbar zu machen ist die Aufgabe von peripherienahen, meist drahtlos kommunizierenden IoT Devices.

Mit den phyWAVE© Modulen stellt Phytec mehrere solcher IoT Module her, die in eigene Anwendungen integriert werden können. Das phyWAVE-CC2650 ist eins der insgesamt drei von Phytec angebotenen phyWAVE Module. Kern ist das TI CC2650 SoC.

csm_phyWAVE-CC2650_95013e94a2

Das TI CC2650 SoC enthält einen 32-Bit-ARM Cortex-M3-Prozessor, der als Hauptprozessor mit 48 MHz betrieben wird. Der Sensor-Controller ist ideal für die Anbindung externer Sensoren und für die autonome Erfassung von analogen und digitalen Daten, während sich der Rest des Systems im Schlafmodus befinden kann.

Der BLE-Controller und der IEEE 802.15.4 MAC sind in ROM eingebettet und laufen teilweise auf einem separaten ARM Cortex-M0-Prozessor. Diese Architektur verbessert die Gesamtsystemleistung und den Stromverbrauch und stellt den Flash-Speicher für die Anwendung frei. Bluetooth- und ZigBee-Stacks sind kostenlos von TI erhältlich.

phyWAVE-CC26xx-block-diagram

Das phyNODE Sensor-Board stellt die Peripherie für den Betrieb des phyWAVE-CC2650 bereit. Am Rande des Boards sind eine Reihe von Sensoren angeordnet.

BLE hat die Möglichkeit, Daten in zwei verschiedenen Modes auszutauschen. Es werden der Advertising Mode und der Connected Mode unterschieden.

Nach einem Reset des phyWAVE Sensor-Boards befindet sich dieses im Advertising Mode und gibt seine MAC-Adresse aus. BLE Devices weisen eine einzigartige 6-Byte BLE- oder MAC-Adresse auf, die mit Hilfe des Kommandos sudo hcitool lescan vom als BLE Client dienenden Raspberry Pi abgefragt werden kann.

KommunikationNach dem Verbindungsaufbau werden alle Farben der RGB-LED nacheinander aktiviert bis schließlich am Ende die weiße LED eingeschaltet bleibt. Daran anschließend folgen Abfragen der einzelnen Sensoren bis hin zum Farbsensor und die Ausgabe der ermittelten Werte. Die Abfrage der Sensoren erfolgt in einer Endlosschleife.

Mit Hilfe eines Python-Scripts werden die übermittelten Sensordaten ausgewertet und einem Shell-Script zur Übermittlung an einen Server zur Visualisierung gesendet.

Der komplette Beitrag ist in der Design&Elektronik 10/2018 veröffentlicht. Der OnLine-Beitrag ist unter https://www.elektroniknet.de/design-elektronik/embedded/mit-phywave-modulen-ins-iot-158755.html zu finden. Die Software steht auf Github zum Download bereit.

 

Einfache LoRaWAN-Knoten für das IoT

Low Power Wide Area Network (LPWAN) steht als Oberbegriff für viele unterschiedliche Protokolle. Neben dem hier betrachteten LoRa stehen Sigfox, LTE-M, Weightless, Symphony Link und einige andere im Wettbewerb.

Im Gegensatz zu einigen anderen Protokollen ist der LoRa-Standard Open Source und nicht proprietär. Das ist ein Grund für das rasante Wachstum von LoRaWAN-Netzwerken über ganze Länder, beginnend in den Ballungszentren.

Im Kindle eBook mit dem Titel „Einfache LoRaWAN-Knoten für das IoT“ beschreibe ich, wie mit sehr einfachen Mitteln und zu niedrigen Kosten LoRaWAN-Sensorknoten ohne Lötarbeiten selbst entwickelt werden können, die ihre Daten dann an einen LoRaWAN-Server senden.

Im Bild sind die betreffenden LoRaWAN-Knoten zu sehen:Nodes-1

Vom LoRaWAN-Server sind die Daten abrufbar und in eine beliebige Anwendung integrierbar. The Things Network (TTN) stellt mit seinem dezentrale Open-Source-Netzwerk die erforderliche Infrastruktur bereit.

Die folgende Abbildung zeigt, wie durch eine Subscription des Topics elsys_nodes/devices/+/up/#  alle zum LoRaWAN-Server hochgeladenen Messages von in der Application elsys_nodes registrierten Devices vom MQTT-Client MQTTlens empfangen werden.

Abbildung 57

Zum aktuellen Zeitpunkt, das war der 15.09.2018 11:38:39, betrug die Temperatur 19.4 °C bei einer relativen Luftfeuchtigkeit vom 71%. Die Batteriespannung lag bei 3.532 V.

Ein andere Möglichkeit der weiteren Verarbeitung der über mittelten Daten besteht darin, dass beispielsweise ein MQTT-Client auf einem Linux-Device, wie z.B. Raspberry Pi, diesen MQTT-Topic abonniert und daraus weitere Informationen respektive Aktionen ableitet. Das könnte dann z.B. eingebunden in eine Website so aussehen:

Abbildung 58

Wer bislang mit einem Arduino erste Erfahrungen sammeln konnte, der ist bestens auf diese zukunftsträchtige Aufgabenstellung vorbereitet und kann erste praktische Erfahrungen im Internet of Things sammeln.

Die Quelltexte zu den behandelten LoRaWAN-Knoten sind auf Github abgelegt.

Link zum eBook: https://www.amazon.de/dp/B07HDP62K3
Link zur Printausgabe: https://www.amazon.de/dp/3907857356