Embedded System Design „Getting Started“
Transcrição
Embedded System Design „Getting Started“
31.08.2016 v0.1 M. Anuschefar Embedded System Design „Getting Started“ HW - Ressourcen ____________________________________________________________________3 Arduino Installation-Guide_____________________________________________________________6 Arduino IDE/Download _____________________________________________________________6 Arduino Treiber Installation__________________________________________________________7 Arduino IDE starten ________________________________________________________________9 Arduino IDE - Getting Started (Code-Basiert) _____________________________________________10 Vorbereitung ____________________________________________________________________10 Übertragung von Programm-Code bzw. Flash-Vorgang ___________________________________11 Aufbau von externe Versorgungsquelle _______________________________________________12 Blink LED ________________________________________________________________________13 Lauflicht/Ampel __________________________________________________________________13 Auslesen von Sensoren (ADC) und serielle Übertragung über USB Com-Port _________________14 Serial-LCD _______________________________________________________________________17 Wetterstation ____________________________________________________________________17 Thermostat ______________________________________________________________________18 Drehzahlgeber _________________________________________________________________18 Bluetooth _______________________________________________________________________19 Embedded System Design Android-App _________________________________________________20 MATLAB/Simulink Installation-Guide ___________________________________________________52 Hinzufügen/Download von Arduino Library (Arduino support packages)_____________________52 Arduino Library starten ____________________________________________________________62 1 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar MATLAB/Simulink - Getting Started (Modellbasiert) _______________________________________53 Blink LED ________________________________________________________________________53 ADC auslesen ____________________________________________________________________62 External-Mode (Online Calibration) __________________________________________________64 2 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar HW - Ressourcen - Arduino Mega 2560 - USB Kabel - Steckbrett - Potentiometer Vcc (+5V) Analog voltage out Ground (-) - LED Ground (-) VCC (+5V) 3 Documentation support: [email protected] 31.08.2016 - Temperatur-Sensor „LM35“ v0.1 - Feuchtigkeit-Sensor „Honeywell HIH-4020“ - 16x2 LCD gelb auf blau (serielle Ansteuerung 5V) M. Anuschefar 4 Documentation support: [email protected] 31.08.2016 - Bluetooth-Modul „RN-42“ (Optional) o v0.1 M. Anuschefar Prinzipielle Verbindungen von serielle Schnittstellen TX (Transmit/Sender) und RX (Receive/Empfänger) Ganz wichtig, TX und RX werden überkreuzt angeschlossen und die Masse GND muss überall gleich angelegt sein. - DC-Adapter Terminalblock - Motortreiber/H-Brücke L289N +12V Input - GND +5V Output PC-Lüfter (FAN) DC 12V 5 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Arduino Installation-Guide Arduino IDE/Download http://arduino.cc/en/Main/Software 6 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Arduino Treiber Installation 7 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 8 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Arduino IDE starten Wie üblich werden die Codes des Programms von oben nach unten abgearbeitet. Der „setup“ Bereich dient zur Initialisierung und wird nur einmalig am Anfang des Programms ausgeführt. Der „loop“ Bereich wird nach dem „setup“ Bereich aufgerufen und wiederholt sich so lange bis ein „Reset“ durchgeführt wird oder die Versorgung abgeschaltet wird. 9 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Arduino IDE - Getting Started (Code-Basiert) Vorbereitung 10 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Übertragung von Programm-Code bzw. Flash-Vorgang 11 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Aufbau von externe Versorgungsquelle Zwar besitzt das Arduino an Board 3.3 und 5 Volt Ausgangsspannung aber sie besitzen einen sehr geringen Stromausgang. Da die Komponenten, wie z.B. LCD, viel Strom verbrauchen ist es sehr wichtig, dass sie extern versorgt werden und die Masse überall gleich angelegt wird. Bei uns im Labor verwendeten Motortreiber „L298N“ bietet neben seiner Hauptfunktion zusätzlich eine +5V DCAusgangsspanung die durch den verbauten Spannungsregler an Board realisiert wird. Das nutzen wir für die Versorgung unsere Komponenten wie z.B. das LCD. Das Arduino-Board dient lediglich nur für die Steuerung. Hier der Aufbau im Labor: +12V +12V +5V Output GND 12 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Blink LED Referenz: http://www.arduino.cc/en/Tutorial/Blink Ground (-) VCC (+5V) 220 ohm bis 1K ohm +12V +5V Output GND Lauflicht/Ampel Referenz: https://arduinomylifeup.com/arduino-traffic-light-project/ +12V 220 ohm bis 1K ohm +5V Output GND 13 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Auslesen von Sensoren (ADC) und serielle Übertragung über USB Com-Port Referenz: http://www.arduino.cc/en/Tutorial/AnalogReadSerial +12V +5V Output GND Vcc (+5V) Analog voltage out Ground (-) 14 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Nach erfolgreichem Flash-Vorgang, Serieller Monitor Starten und es werden die Roh-Werte von ANALOG-IN-A0 angezeigt: Wichtig bei der Serielle Übertragung ist die Auswahl der entsprechende „Baudrate“: Als externes serielles Kommunikationsprogramm kann auch „HTerm“ verwendet werden Download: http://www.der-hammer.info/terminal/ 15 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Wie in oberes Beispiel können auch der Temperatursensor „LM35“ und der Feuchtigkeitssensor „HIH-4020“ genauso bloß mit der richtige Verdrahtung (Vcc, Output, GND), siehe unten oder unter der Kapitel „HW – Ressourcen“, verwendet werden. Da die Sensoren nicht viel Strom verbrauchen und um den Massenversatz zu vermeiden, sollten sie direkt von Arduino-Board versorget werden. +12V +5V Output GND - Temperatur-Sensor „LM35“ - Feuchtigkeit-Sensor „Honeywell HIH-4020“ 16 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Serial-LCD Referenz: https://www.sparkfun.com/tutorials/246 Auf der Homepage ist zu beachten, dass keine „#include <SoftwareSerial.h>“ und „SoftwareSerial mySerial(3,2);“ nötig ind da das Arduino Mega extra (Hardware-seitig) serielle Schnittstelle TX und RX besitzt. In dem gesamten Beispiel-Code ist „mySerial“ mit „Serial1“ zu ersetzen, siehe unten im Code. +12V +5V Output GND Code-Beispiel: // SparkFun Serial LCD example 1 // Clear the display and say "Hello World!" void setup() { Serial1.begin(9600); // set up serial port for 9600 baud delay(500); // wait for display to boot up } void loop() { Serial1.write(254); // move cursor to beginning of first line Serial1.write(128); Serial1.write(" "); // clear display Serial1.write(" "); Serial1.write(254); // move cursor to beginning of first line Serial1.write(128); Serial1.write("Hello, world!"); while(1); // wait forever } Wetterstation Versuchen Sie jetzt Ihre eigene Wetterstation aufzubauen in dem Sie die Sensorwerte von den Temperatur- und Feuchtigkeitssensor an dem LCD-Display ausgeben. 17 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Thermostat Mit den vorhandenen PC-Lüfter und der Motortreiber „LN298N“ sind Sie in der Lage Ihre eigene Thermostat aufzubauen. Hier in Schaltung wird der PC-Lüfter als ein DC-Elektromotor abgebildet. Aufgrund der Beispielcodes sollten VCC(+) und GND(-) wie im Bild an den PC-Lüfter angeschlossen werden: +12V +5V Output GND Drehzahlgeber In den folgenden Code wird ein Drehzahlgeber dargestellt. Mit Hilfe der Werte von dem Potentiometer an den ADC-Eingang des Arduino-Boardes kann der Soll-Drehzahl der PC-Lüfter ermittelt und mittels PWM-Ausgang an Port 5 an den Motortreiber eingestellt werden. Die ermittelte Drehzahl wird an dem USB Serial-Com-Port ausgegeben. int enableMotor = 5; int in3 = 7; int in4 = 6; int Potentiometer = 0; int motorStep = 0; int motorSpeed = 0; int ADCMax = 1023; int MotorspeedMax = 255; void loop() { Potentiometer = analogRead(0); motorSpeed = Potentiometer/motorStep; if (motorSpeed > MotorspeedMax) { motorSpeed = MotorspeedMax; } if (motorSpeed < 0) { motorSpeed = 0; } void setup() { Serial.begin(9600); // set all the motor control pins to outputs pinMode(enableMotor, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); analogWrite(enableMotor, motorSpeed); Serial.print(" motorSpeed: "); Serial.println(motorSpeed); } motorStep = ADCMax/MotorspeedMax; } Referenz: https://tronixlabs.com.au/news/tutorial-l298n-dual-motor-controller-module-2a-andarduino/ Versuchen Sie jetzt anhand des oberen Beispiels und den vorhandenen Temperatursensor Ihren eigenen Thermostat aufzubauen. 18 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Bluetooth Bluetooth-Modul RN-42 +12V +5V Output GND ACHTUNG: Da hier unterschiedliche Versionen von Bluetooth-Modulen gibt, auf die Pinbelegung (Gnd -, VCC +, TX, RX) achten! Hier ist dieselbe Prinzip der seriellen Übertragung wie über USB-COM-Port oder Serial-LCD. Es ist zu beachten, dass das Bluetooth-Modul mit eine Baudrate von 115200 Baudrate arbeitet. Um die Sensordaten zusätzlich über den Bluetooth-Modul zu versenden muss das Modul wie oben angezeigt angeschlossen werden. Im Programmcode muss noch in „setup“ Bereich die Serial2 initialisiert werden danach kann im „loop“ Bereich die entsprechende Daten mit der Funktion Serial2.write(); übertragen werden. Um mit ein externes Gerät die Verbindung mit dem Bluetooth-Modul herzustellen muss man bei der Ankoppelung den Sicherheitscode „1234“ eingeben. - Verbindung über Laptop: o Als serielle Kommunikationsprogramm kann „HTerm“ verwendet werden Download: http://www.der-hammer.info/terminal/ - Verbindung über Android-Mobile: o Als serielle Kommunikationsapp kann „Embedded System Design App“ verwendet werden Download: Unter https://www.hs-esslingen.de/de/mitarbeiter/mohammad-anuschefar.html Embedded_System_Design Lessons necessary Embedded System Design App Download 19 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Embedded System Design Android-App App-Download unter https://www.hs-esslingen.de/de/mitarbeiter/mohammad-anuschefar.html Embedded_System_Design Lessons necessary Embedded System Design App Download Arduino-Code unter https://www.hs-esslingen.de/de/mitarbeiter/mohammad-anuschefar.html Embedded_System_Design Lessons necessary Arduino Download Arduino-Code „SerialInOut_USB_Bluetooth.zip“ Android-Mobile: 20 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 21 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 22 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 23 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 24 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 25 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Embedded System Design App starten: 26 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 27 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 28 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 29 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 30 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 31 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 32 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 33 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 34 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 35 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 36 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 37 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 38 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 39 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 40 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 41 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 42 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 43 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 44 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 45 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 46 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 47 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 48 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 49 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 50 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 51 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar MATLAB/Simulink Installation-Guide Hinzufügen/Download von Arduino Library (Arduino support packages) - Im Labor: o http://www2.hsesslingen.de/~manusch/Embedded_System_Design/Embedded_System_Design_Lab or/MATLAB/MATLAB_Note_&_Files.zip o Folgen Sie die Anweisungen in der Datei „MATLAB_Note.txt“ - Auf privatrechnern: 52 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar MATLAB/Simulink - Getting Started (Modellbasiert) Blink LED Starten von Arduino Beispiele: 53 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 54 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Unter „Tutorials“ findet man eine Reihe von Beispielen die durch gearbeitet werden können und wir fangen gleich mit „Getting Started with Arduino® Hardware“ an (Blink LED) 55 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Um den Beispiel durchzuführen muss man lediglich den unteren Anweisungen unter „Task 3 Create a Model for Arduino Hardware“ folgen 56 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Man kann auch das Beispielprojekt direkt aufrufen 57 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Für Änderungen an Parametern oder Einstellungen, mit Doppelklick auf den jeweiligen Block Um ein Projekt zu verifizieren kann man es simulieren Simulation starten Simulationszeit Simulation stoppen Durchgeführte Simulationszeit 58 Documentation support: [email protected] 31.08.2016 v0.1 Einen Blick auf die „Model Configuration Parameters“ M. Anuschefar Erforderliche Konfigurationen sind unter „Code Generation System target file: realtime.tlc“ und unter „Run on Target Hardware Target hardware: das entsprechende Ziel-Hardware“. In den Beispielen sind sie automatisch richtig eingestellt. 59 Documentation support: [email protected] 31.08.2016 v0.1 Das Projekt auf Arduino-Hardware zu flashen „Deploy to Hardware“ M. Anuschefar 60 Documentation support: [email protected] 31.08.2016 Bei erfolgreichen Flash-Vorgang: v0.1 M. Anuschefar Versuchen Sie anhand des oberen Beispiels den Lauflicht/Ampelschaltung zu realisieren. 61 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Arduino Library starten 62 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar ADC auslesen Da der ADC-Eingang ein „uint16“ Typ ist und die Serielle Ausgang „uint8“ braucht man hier gewisse Konvertierung. Als Lösungsvorschlag „ADC_Serial.slx“: http://www2.hs-esslingen.de/~manusch/MATLAB.html In Modell gibt es den Block „calc uint16 to uint8“ der genau zu diesem Zweck dient. 63 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar External-Mode (Online Calibration) In Simulink gibt es zusätzlich die Funktion „External-Mode“ die dazu dient um Online-Calibration durchzuführen. D.h. es wird ein spezieller Code-Version mit bestimmte Schnittstellen generiert womit man während der Laufzeit Überwachen und Parametern ändern kann. Da diese Funktion auf die USB-Schnittstelle zugreift, darf die serielle Schnittstelle an USB nicht in Modell verwendet werden. Als Ansatz „ADC_OnlineCalib.slx“: http://www2.hs-esslingen.de/~manusch/MATLAB.html 64 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 65 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 66 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 67 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 68 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar 69 Documentation support: [email protected] 31.08.2016 v0.1 M. Anuschefar Versuchen Sie jetzt anhand der Beispiele die Übungen „Wetterstation“ und „Thermostat“ modellbasiert in Simulink zu realisieren. 70 Documentation support: [email protected]