Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Falko Lichtenberg Geändert vor über 7 Jahren
1
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 1 File: Einsatz von Mikrocontrollern in Amateurfunkprojekten Microcontroller in Selbstbauprojekten am Beispiel des Atmega 328 (Arduino) von Markus Heller, M.A. DL8RDS (dl8rds@darc.de)
2
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 2 File: Ein Taschenrechner und ein Kernel: Die Funktionsweise sehr einfacher Rechner InputOutput Stack-Speicher Programm Input
3
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 3 File: Ein Taschenrechner und ein Kernel: Der kleine Sprung zu DOS Output Programm-Speicher Während der Laufzeit wählbares Programm Input
4
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 4 File: Ein Taschenrechner und ein Kernel: Der Mißbrauch von DOS Viele Programme gleichzeitig Konkurrierende Hardwarezugriffe Egoismen der Programme bzgl. Arbeitsspeicher Programme reißen auch die CPU an sich TSR-Viren
5
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 5 File: Ein Taschenrechner und ein Kernel: Mikrocontroller gegenüber modernen Betriebssystemem Wichtig: Betriebssystem ist nur der Kernel! Grafik gehört nicht zum Betriebssystem! Kernel ist erst mal nur eine Loop, aber mit einigen Konsequenzen. Neue Aufgaben für den Kernel: Abschottung der Programme von der Hardware Prozeßmanagement Memory Management Hardwareunterstützung (Software-Protokolle)
6
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 6 File: Ein Taschenrechner und ein Kernel: Unterschied zwischen Mikrocontrollern und Kerneln Strikt: Eine einzige Aufgabe Bekannte Hardware Keine Kollision von Programmen Keine unbekannten, unkoordinierten Softwarehersteller
7
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 7 File: Mikroconroller an und für sich Grundbausteine jedes Rechners: CPU, RAM, Storage, IO Meist mit ADC Werden programmiert Haben sehr klar definierten, kleinen Betriebszweck Wir betrachten den ATMega 328P: 8 Bit CPU / BUS 23 IO Lines 32k Flash, 1k EEPROM, 2k RAM 6 PWM 10bit ADC Serial USART SPI und I2C Watchdog
8
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 8 File: Das Projekt Arduino Open Source Hardware Programmiersprache WIRING Integrierte Entwicklungsumgebung (siehe rechts) BootLoader für den uC Peripherie Beispiel-Code Zielgruppe: Nicht-Elektroniker Lernplattform für den schnellen Erfolg mit uCs
9
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 9 File: Das Projekt Arduino Boardvarianten
10
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 10 File: Das Projekt Arduino Shields und Breakouts ArduPilot - Arduino Compatible UAV Controller w/ ATMega328 Digital gesteuerter Antennenrotor! ArduIMU Sensor Board - Six Degrees of Freedom (Main) Rotorkontrolle!
11
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 11 File: Das Projekt Arduino Shields und Breakouts Xbee-Board 2,4 GHz! Bluetooth Mate
12
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 12 File: Das Projekt Arduino Shields und Breakouts WiFly (WIFI) Arduino Ethernet Shield
13
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 13 File: Das Projekt Arduino Shields und Breakouts GPS Shield APRS-Eigenbau! VoiceBox Shield CQ-Papagei... OnScreenDisplay
14
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 14 File: Das Projekt Arduino IDE, Compiler, Tools und Bootloader Entwicklung des Arduino-Programms in einer Entwicklungsumgebung Mikrocontroller werden meist direkt mit einem Programm beschrieben Arduino hat einen BootLoader GCC-AVR-Compiler kompiliert „avrdude“ gibt das Programm an den Bootloader und setzt das Board zurück
15
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 15 File: Eine LED blinken lassen int ledPin = 13; // LED connected to digital pin 13 void setup() { // initialize the digital pin as an output: pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(ledPin, LOW); // set the LED off delay(1000); // wait for a second }
16
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 16 File: Einlesen eines Wertes über einen ADC int potiPin = 0; int potiVal = 0; int ledPin = 2; void setup() { int potiPin = 0; pinMode(ledPin, OUTPUT); } void loop() { int potiVal = analogRead(potiPin); digitalWrite(ledPin, HIGH); delay(100); digitalWrite(ledPin, LOW); delay(potiVal*2); }
17
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 17 File: Ein LCD-Display ansteuern #include // Wiring pattern: LiquidCrystal(rs,rw,enable,d0,d1,d2,d3,d4,d5,d6,d7) LiquidCrystal lcd(12,11,10,9,8,7,6,5,4,3,2); void setup() { lcd.print("arduino"); } void loop() {}
18
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 18 File: Lesen und Schreiben über die serielle Schnittstelle if (b == 66) { blink = 0; } if (blink == 1) { digitalWrite(ledPin, HIGH); delay(100); digitalWrite(ledPin,LOW); delay(potiVal*2); } else { digitalWrite(ledPin, LOW); } Serial.println("-------------"); delay(10); } int potiPin = 0; int potiVal = 0; int blink = 1; int ledPin = 2; void setup() { Serial.begin(9600); int potiPin = 0; pinMode(ledPin, OUTPUT); } void loop() { int potiVal = analogRead(potiPin); Serial.println("Poti-Wert:"); Serial.println(potiVal); if (Serial.available() > 0) { char b = Serial.read(); if (b == 65) { blink = 1; }
19
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 19 File: Temperatur auslesen über I2C #include #define address 0x48 void setup() { Wire.begin(); Serial.begin(9600); } void loop() { Wire.beginTransmission(address); Wire.send(0x00); Wire.requestFrom(address, 1); int temperature; if (Wire.available()) { temperature = Wire.receive(); } Wire.endTransmission(); Serial.println("-----------"); Serial.println(temperature); delay(1000); }
20
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 20 File: Kommunikation über Ethernet #include #define address 0x48 byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; byte ip[] = {192, 168, 178, 190}; byte gateway[] ={192,168,178,1}; byte subnet[] = {255,255,255,0}; Server server = Server(80); void setup() { Wire.begin(); Serial.begin(9600); Ethernet.begin(mac, ip, gateway, subnet); server.begin(); } void loop() { Client client = server.available(); if (client) { Wire.beginTransmission(address); Wire.send(0x00); Wire.requestFrom(address, 1); int temperature; if (Wire.available()) { temperature = Wire.receive(); } Wire.endTransmission(); server.print("HTTP/1.0 200 OK\r\nServer: arduino\r\n"); server.print("Content Type: text/html\r\n\r\n"); server.print(" "); server.print("Zimmertemperatur \r\n"); server.print(" Zimmertemperatur: \r\n"); server.print(temperature-4); server.print(" Uptime:"); server.print(millis()); server.print("ms. "); delay(10); client.stop(); Serial.println("-----------"); Serial.println(temperature); }
21
Markus Heller, M.A. (DL8RDS)Datum: 14.03.2010 Folie Nummer 21 File: Einsatz von Mikrocontrollern in Amateurfunkprojekten Das war eine... Eine Einführung: Microcontroller in Selbstbauprojekten am Beispiel des Atmega 328 (Arduino) Für eure Aufmerksamkeit bedankt sich... Markus Heller, M.A. DL8RDS (dl8rds@darc.de)
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.