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]

Documentos relacionados