• Noser.com
facebook
linkedin
twitter
youtube
  • NOSERmobile
    • Android
    • HTML 5
    • Hybrid Apps
    • iOS
    • Windows Phone
  • NOSERembedded
    • Medizintechnik
  • NOSERprojektmanagement
  • NOSERtesting
  • NOSERlifecycle
    • .NET Allgemein
    • Application Lifecylce Management
    • Apps
    • Architektur
    • ASP.NET
    • Azure
    • Cleancode
    • Cloud
    • Silverlight
    • Visual Studio / Team Foundation Server
    • Windows 8
    • Windows Presentation Foundation
  • NOSERinnovation
    • Big Data
    • Cloud
    • IoT
    • Operations Research
    • Augmented Reality
    • RFID, NFC, Bluetooth LE

MATLAB auf Samsung Galaxy Geräten

29. Oktober 2015
Peter Tönz
0
Edgedetection, Galaxy, Internet of Things, M2M, Matlab, Samsung, Simulink
EdgeDetection

Mit dem Samsung Galaxy Support Package (Link) können Simulink-Modelle auf den Geräten Galaxy S4 oder GALAXY Tab 2 10.1 ausgeführt werden. Da diese Geräte Display und Kamera bereits integriert haben, können damit in kurzer Zeit Bildverarbeitungsalgorithmen integriert und getestet werden. Eine komplette Liste der Geräte die von MATLAB / Simulink unterstützt werden kann unter folgendem Link angesehen werden (Link)

Kantendetektion

Als einfaches Beispiel eines Simulinkmodells auf einem Galaxygerät wurde eine einfache Kantendetektion realisiert, bei der die erkannten Kanten auf den Rot-Kanal des aktuellen Bildes hinzugefügt werden. Das Erkennen der Kanten geschieht mit einem Sobel-Operator (Link) mit dem das Graustufenbild gefaltet wird (Faltung).

Im Simulinkmodell wird das Bild zuerst von einem uint8 in ein float Werte gewandelt. Dies muss so gemacht werden, weil Matlab für die meisten mathematischen Funktionen float oder double Werte verlangt. Durch die Addition der drei Farbkanäle rot, grün und blau und die folgende Division durch drei entsteht ein Graustufenbild, auf dem nun die Kantendetektion angewendet wird (Bild anklicken für bessere Qualität).

Simulink Model Kantendetektion

Der folgende Code zeigt vereinfacht die Kantendetektion. Im realen Modell wurde vor der Kantendetektion noch das Bild mit einem Median Filter 3×3 bearbeitet, damit das Rauschen des Bildes weniger Einfluss auf die Kanten hat.

EdgeDetection

Im Code sieht man in Zeile 15 und 20, dass die Kanten separat mit dem Sobel-Operator in x- und in y-Richtung detektiert werden. Die x- und y-Werte werden und dann mit dem Satz des Pythagoras wieder auf ein Bild zusammengefasst.

Wer die Image Processing Toolbox von Matlab besitzt kann den Code oben durch eine Codezeile ersetzen:

EdgeDetectionToolbox

Das Ergebnis der eigenen Implementation ist im folgenden Bild zu sehen.

Kantenerkennung

Simulink Support Package

Im Simulink Support Package werden folgende Module mitgeliefert, die für ein Simulinkmodell verwendet werden können:

  • Beschleunigungssensor
  • Temperatursensor
  • Audio Aufnahme und Wiedergabe
  • Kamera und Display
  • Schnittstelle von und zu Apps
  • Drehratensensor (Gyro)
  • Feuchtigkeitssensor
  • Helligkeitssensor
  • GPS-Position
  • Drucksensor
  • UDP Senden und Empfangen

Will man zum Beispiel Luftdruck- und Temperaturveränderungen in Abhängigkeit von der geografischen Position untersuchen, kann mit diesen Tools einfach ein Datenlogger erstellt werden, der die Werte aufzeichnet. Mit dieser Lösung kann man sich schneller der Datenanalyse widmen, da so ein Datenlogger sehr schnell implementiert und getestet ist.

Fazit

Mit dem Galaxy Support Package kann auf einfache Weise ein Simulink Model für ein Samsung Galaxy Gerät erstellt werden. Durch die vielen integrierten Sensoren kann Beispielsweise in kurzer Zeit ein Model entwickelt werden das seine Daten periodisch als UDP-Pakete an einen Server sendet. Somit lassen sich ohne spezielle Hardware einen Datenlogger entwickeln, der die gemessenen Daten an die Cloud sendet und dort ausgewertet werden. Da die Modelle jeweils für ein spezifisches Gerät kompiliert werden müssen, werden sich die beschriebenen Möglichkeiten eher für die Bereiche Proof on concept oder Algorithmusentwicklung beschränken.

Arduino und MATLAB im Internet der Dinge

30. Juni 2015
Peter Tönz
0
Arduino, Internet of Things, Logger, M2M, Matlab, Simulink

Arduino ist eine Open Source Computing Plattform, bestehend aus Hardware und einer dazugehörigen Softwareentwicklungsumgebung. Die Hardware basiert auf einem I/O Board mit einem 8-bit Mikrocontroller und analogen sowie digitalen Ein- und Ausgängen. Zugehörige Softwarelibraries und Hardwarekomponenten werden von mehreren Herstellern angeboten und sind dank modularem Konzept weitgehend kompatibel. Wegen der begrenzten Leistungsfähigkeit des “kleinen” Prozessors gibt es seit einiger Zeit auch verschiedene 32-bit Varianten des Mikrocontrollers.

Mit einem USB-Kabel, einem Arduino Board und der Entwicklungsumgebung kann bereits mit Programmieren begonnen werden. Durch die leicht verwendbaren Bibliotheken können auch Einsteiger schnell erste Erfolge beim Programmieren erzielen. Dieses Konzept ist aktuell sehr erfolgreich. So kommt es, dass immer mehr Hersteller die Technologie aufgreifen und Arduino-kompatible Hardware auf den Markt bringen (z.B. Intel mit dem Edison).

Auch Softwareanbieter springen auf diesen Zug auf und stellen Libraries zur Integration von Arduino in ihre spezifischen Programmierumgebungen zur Verfügung. So stellt auch MATLAB seinen Entwicklern Libraries zur Seite, welche die Einbindung von Sensoren und Aktoren über ein Arduino board unterstützen.

Beim initialisieren der Plattform wird eine von MathWorks gelieferte Firmware auf den Arduino geladen, welche Funktionen zum Ansprechen der angeschlossenen Sensoren und Aktoren für MATLAB bereitstellt. Mit dieser Möglichkeit kann über den Arduino bereits ein einfacher Regler implementiert werden, der mit einer Abtastfrequenz von bis zu 25 Hz läuft. Dabei gilt zu beachten, dass das Verhalten des Systems nicht Echtzeitfähig ist, spricht es werden keine Reaktionszeiten garantiert.

Folgendes Beispiel zeigt einen Scope der zyklisch den Analogeingang 8 vom Arduino Mega 2560 einliest und auf dem PC-Bildschirm grafisch als Kurve darstellt.

MATLAB-Quellcode Scope für Arduino

Abbildung 1: Quellcode Scope

 

Für die Interaktion von MATLAB mit Arduino werden von der MATLAB-Library die folgenden Schnittstellen angeboten.

  • AD-Wandler
  • PWM
  • Digitale Ein- und Ausgänge
  • I2C und SPI Schnittstellen

Da die Codes für die Anbindung an MATLAB und die Firmware auf dem Arduino einsehbar sind, sollte es mit zusätzlichem Wissen über Arduino- und MATLAB-Programmierung möglich sein, weitere Schnittstellen oder Funktionen des Arduinos in MATLAB verwenden zu können.

Für eine Anwendung bei der es um genaue Zeiten geht oder hohe Abtastraten gefordert sind, ist ein Abtasten mit MATLAB und Arduino auf Grund der ungenauen Taktrate nicht geeignet. Für einfache Datenerfassungsaufgaben, wie beispielsweise das Aufzeichnen einer Temperatur über mehreren Tagen, eignet sich ein Arduino-Board geradezu ideal. Für schnellere Anwendungen wird im nächsten Abschnitt die Möglichkeit von Arduino in Verbindung mit Simulink aufgezeigt.

Simulink und Arduino

Mit dem Board Support Package von Simulink kann ein Arduino als Target für Simulinkmodelle verwendet werden. Dabei erhält man eine Rapidprototypingplattform mit allen Einschränkungen die so ein Arduino mit sich bring (Speicher, Rechenleistung, begrenzte IO’s…). Wer seinen Versuchsaufbau unter diesen Einschränkungen entwerfen kann, erhält ein sehr kostengünstiges System für Prototypen, das von den vielen Vorteilen von Simulink profitiert.

Mit diesem Vorgehen können Modelle mit harten Echtzeitanforderungen realisiert werden. Da einzig das Simulinkmodel auf dem Arduino läuft, werden Abtastzeiten von bis zu 1 ms erreicht. Damit lassen sich Modelle erstellen, die schnell und unabhängig von einem PC laufen.

Mit dem Ethernet oder WiFi-Shield kann das Simulinkmodell Daten im Netzwerk per TCP oder UDP senden und empfangen. Damit lässt leicht ein Sensornetzwerk realisieren, bei dem die Arduinos Messdaten über das Netzwerk an einen Host senden und dieser die Daten aufzeichnet und auswertet.

Das Beispiel zu diesem Anwendungsfall rechnet die Spannung die ein Temperatursensor liefert in eine Temperatur um. Das Sensorelement ist ein NTC-Thermoelement, das eine nichtlineare Kennlinie aufweist. Die Umrechnung erfolgt im Simulinkmodell, das aus mehreren mathematischen Operationen besteht. Da nur alle 60 Sekunden ein Messwert gesendet wird und somit eine Extremtemperatur verpasst werden könnte, werden jeweils die minimale und die maximale Temperatur mitgesendet.

Berechnung auf dem Arduino

Abbildung 2: Berechnung der Temperatur

 

Die Kennlinie des Temperatursensors (Abbildung 5) ist aus dem Datenblatt entnommen.

ntc

Abbildung 3: Kennlinie Thermoelement

Temperatursensor

Abbildung 4: Temperatursensor

Für Anwendungen wie einem Webserver, der Messdaten von angeschlossenen Sensoren auf Abfrage zur Verfügung stellt, eignet sich die Programmierung in C/C++ besser. Einerseits existieren dafür bereits viele Beispiele und anderseits lassen sich ereignisgesteuerte Abläufe effizienter in C/C++ umsetzen. Wenn es jedoch bei der Anwendung um das Sammeln und Verarbeiten von Daten geht und diese über das Netzwerk gesendet werden sollen, hat man durch die Programmierung mit MATLAB/Simulink einige Vorteile.

 

 

Folgende Blöcke existieren in der Simulink Bibliothek für Arduino:

  • Analoger Eingang
  • Servo Ansteuern
  • Digitale Ein- und Ausgänge
  • PWM
  • Senden und empfangen mit der seriellen Schnittstelle
  • Standard Servo Read and Write

 

 

 

 

 

 

 

Zusammenfassung

Die angeführten Beispiele zeigen viele der Vorteile auf, welche der Einsatz von MATLAB und Simulink, in Verbindung mit Arduino mit sich bringt.

Es gibt jedoch auch Einschränkungen die je nach Anwendungsfall einen Einsatz dieser Technologie verunmöglichen. Zu diesen Einschränkungen gehören zum Beispiel die beschränkte Leistungsfähigkeit, die Eigenschaft dass das Modell zyklisch abgearbeitet wird oder die begrenzte Anzahl an Schnittstellen. Da Mathworks diese Low-Cost Plattformen noch nicht sehr lange unterstützt, könnte eine Verbreitung dieser Methode zu besserer Unterstützung durch Mathworks führen. Da MATLAB ein kostenpflichtiges Produkt ist, werden diese Möglichkeiten im Vergleich zu den realisierten Projekten von Arduinos ohne MATLAB wohl ein Nischendasein bleiben.

Link zu den Quellcodes: sourceArduino

12

Tag Cloud

.NET android Angular AngularJs Arduino ASP.Net automated testing Azure Big Data C# C++ Cloud continuous integration Elm Embedded Führung gRPC Internet of Things IoT Java Javascript M2M OWASP Projektmanagement protobuf Python Raspberry Pi Reactive Programming REST Scrum Security Softwarequalität SPA Testen testing Testmanagement Teststrategie UX Visual Studio WebAPI windows WPF Xamarin Xamarin.Android Xamarin.Forms

Archive

Current Posts

  • Akzente setzen mit der Android Splash Screen API unter .NET MAUI
  • Do You have Your Personal Space?
  • Automated provisioning with ARM Templates
  • Asynchrone Beobachtungen und Versprechungen in Angular
  • Simplify Your Automated Tests With Fluent Syntax

Last Comments

  • Hans Reinsch bei Der Safety-Plan: Die wichtigsten Antworten mit Checkliste
  • George H. Barbehenn bei Modeling Optocouplers with Spice
  • Noser Blog Touch-Actions in Xamarin.Forms - Noser Blog bei Mach mehr aus Animationen in Xamarin.Forms mit SkiaSharp
  • Noser Blog Focus on the Secure Storage service of Trusted Firmware (TFM) - Noser Blog bei First run of the Trusted Firmware (TFM) application
  • Noser Blog First run of the Trusted Firmware (TFM) application - Noser Blog bei Focus on the Secure Storage service of Trusted Firmware (TFM)

Popular Posts

Xamarin.Android Code Obfuscation

6 Comments

ManuScripts: Wenn jemand eine Reise tut... Funktionale Programmierung mit Elm - Teil 1 - Aufbruch

5 Comments

ManuScripts: Wenn jemand eine Reise tut... Funktionale Programmierung mit Elm - Teil 2 - Kein Picknick

4 Comments

Contact us

  1. Name *
    * Please enter your name
  2. Email *
    * Please enter a valid email address
  3. Message *
    * Please enter message
© 2013 NOSER ENGINEERING AG. All rights reserved. Datenschutz | Cookie-Richtlinie