(V1) AVR Grundlagen¶
Beschreibung
Bei diesem Versuch lernen Sie den elementaren Umgang mit einem Microchip AVR Mikrocontroller. Sie werden selber eine Schaltung aus einzelnen Bauelementen auf einem Steckbrett aufbauen und in Betrieb nehmen. Wir werden dazu einen der Controller AVR Mega8, Mega88 oder Mega32 verwenden. Auf Ihrem Notebook werden Sie unter Linux die GCC Toolchain installieren und ein kleines Demo-Programm in der Sprache C schreiben, das nach dem Kompilieren mit Hilfe eines Download-Werkzeuges auf den AVR Controller übertragen („geflasht“) wird.
Ziele
Grundlegende Hardware-Kenntnisse zum Betrieb eines Mikrocontrollers erwerben.
Kennenlernen aller notwendigen Schritte um einen AVR zu programmieren.
ISP/JTAG Adapter kennenlernen (ISP mkII, Dragon, JTAGICE mkII, JTAGICE3, ATMEL ICE)
Verschiedene Compiler und IDEs kennenlernen
Linux
Linux Pakete gcc-avr, binutils-avr, avr-libc, avrdude, avrdude-doc, gdb-avr, avarice, simavr.
Windows
Atmel Studio https://www.microchip.com/mplab/avr-support/atmel-studio-7
Ältere Versionen sind unter http://hhoegl.informatik.hs-augsburg.de/nonfree
WinAVR (Windows, frei unter GPL Lizenz, letzter Update 2010) http://winavr.sourceforge.net/download.html
Material
AVR Mikrocontroller
Drähte
ISP Wannenstecker
ISP Programmieradapter
Steckbrett
Links
Homepage des Herstellers (ehemals Atmel)
AVR Tutorial
AVR GCC Tutorial
AVR Freaks Community
(V2) Das Arduino Projekt¶
Beschreibung
Im Versuch „AVR“ haben wir die Verwendung des Microchip AVR auf der untersten technischen Ebene gelernt. Das Arduino Projekt verwendet auch den AVR Controller, jedoch wird die Programmierung durch eine eigene IDE und einer eigenen Programmiersprache, die stark an C++ angelehnt ist, vereinfacht. Die Kehrseite dieser vereinfachten Verwendung ist, dass die zugrunde liegende Funktionweise verschleiert wird.
Ziele
Unterschiede zwischen low-level Programmierung und Arduino-Programmierung erkennen.
„Physical Computing“ Plattformen studieren.
Links
Homepage des Arduino Projektes: http://www.arduino.cc
Verwandte Projekte
Olimex „Duino“: https://www.olimex.com/Products/Duino/open-source-hardware
mbed (ARM): https://www.mbed.com
Teensy (AVR, ARM): https://www.pjrc.com/teensy
Maple (STM32): https://www.leaflabs.com/maple
Material
Arduino UNO
USB Kabel
Steckbrett
(V3) mbed Mikrocontroller¶
Beschreibung
Der „mbed“ Mikrocontroller ist eigentlich nur eine der üblichen kleinen Platine, die einen NXP LPC1768 Controller mit Cortex-M3 Kern enthält. Sie wird über USB an einen PC angeschlossen. Einige der auf dem Modul gespeicherten Daten erscheinen anschliessend im Dateimanager des PC. Zur sonst üblichen „schweren“ Entwicklungsumgebung (IDE) gelangt man hier aber federleicht durch Anklicken eines Links im Web-Browser. Die IDE läuft nämlich auf einem Server von NXP als Web-Applikation. Sie editieren und kompilieren Ihre Programmtexte also über das Web. Zum Flashen der Software wird das Kompilat über das Web zu Ihrem PC geholt und per USB in den Controller geschoben.
Ziele
Kennenlernen des LPC1768.
Kennenlernen der Web-IDE.
Anfertigen eines Beispielprogrammes.
Links
http://www.nxp.com (dann Suche nach LPC1768)
Material
1 x mbed Modul mit LPC1768 Mikrocontroller (es gibt mittlerweile sehr viele mbed-kompatible Boards, siehe https://os.mbed.com/platforms).
1 x USB Kabel
(V4) STM32 Nucleo¶
Hinweise: Verwenden der mbed-Umgebung (https://www.mbed.org) um das Board zu programmieren. Einfache IO-Operationen (LEDs ansteuern) und komplexere IO, z.B. mit I2C auf BMP180-Modul (Temperatur+Luftdruck) zugreifen.
Material:
STM32L476 Board
Mini-USB-Kabel
BMP180 Luftdruck- und Temperatursensor
Steckbrett mit LEDs und Kabeln
(V5) RS-485 Bussystem¶
Ziele
Wir werden einen einfachen Versuch mit dem Schnittstellen-Standard RS/EIA-485 machen, der zur preiswerten Vernetzung in der Fabrik und im Gebäudebereich verwendet wird. Zum Beispiel ist die berührungslose Türöffnungsanlage der Hochschule Augsburg mit diesem Bus realisiert.
Anregungen
Wie unterscheidet sich RS485 von anderen Bussystemen bzw. anderen seriellen Übertragungsstandards (wie z.B. RS232)? Betrachten der Signale mit Oszilloskop und Dokumentation um die Vorteile von RS485 darzulegen.
Material:
2x RS485 USB-Adapter mit USB-Kabeln
Steckbrett mit Kabeln
Literatur
(V6) Controller Area Network¶
Beschreibung
Bei diesem Versuch werden Sie den CAN Feldbus kennenlernen. Mit Hilfe von zwei USB-zu-CAN Adaptern (http://www.fischl.de/usbtin) stellen Sie eine CAN Verbindung zwischen zwei PCs her (oder zwischen zwei USB Schnittstellen eines PC).
Ziele
Kennenlernen des CAN Übertragungsprinzips.
Ausblick auf die höhere CAN Schicht CANopen.
Tipps
Informationen speziell für Linux
socketcan
ist das Standard-API für die CAN SchnittstellePakete unter Linux: libsocketcan-dev, libsocketcan2, can-utils
can4linux ist ein weiterer Treiber für CAN Controller unter Linux
Testen mit
picocom
undsocketcan
. Udev-Regel für /dev/ttyACM0
Anregungen
Verbindung vom PC über USBtin zu einem Mikrocontroller mit CAN herstellen (AVR, STM32)
„CAN Festival“ https://canfestival.org. Ein freies CANopen Framework.
CAN Protokoll mit Wireshark oder Saleae Logikanalysator untersuchen.
Was ist CAN-FD? (siehe http://hhoegl.informatik.hs-augsburg.de/dva/ti/can/can_fd.pdf)
Auf die serielle Schnittstelle kann man auch bequem aus Python mit dem
pyserial
Paket zugreifen. Siehe https://pypi.org/project/pyserial.Auf den CAN Bus über Socket-Programmierung zugreifen.
Alternative kommerzielle Hersteller von CAN-Bus Adaptern
http://www.mhs-elektronik.de (Tiny-CAN
viele weitere …
Literatur
Introduction to the Controller Area Network (CAN), 17 pages, Texas Instruments 2016
Renesas, Introduction to CAN, 44 Seiten, 2006
http://hhoegl.informatik.hs-augsburg.de/dva/ti/can/rej05b0804_m16cap.pdf
H. Boterenbrood, CANopen, 23 Seiten, 2000.
http://hhoegl.informatik.hs-augsburg.de/dva/ti/can/CANopen30.pdf
https://en.wikibooks.org/wiki/Serial_Programming (darin findet man, wie man auf die serielle Schnittstelle in C zugreifen kann)
Wolfhard Lawrenz (Hrsg.): CAN - Controller Area Network. Grundlagen und Praxis. Hüthig Verlag 1994 (steht im G2.16).
Material
2 x USBtin USB-zu-CAN Module
Steckbrett mit Kabeln (für evtl. Betrachtung der Signale/Messung mit Oszilloskop)
(V7) Global Positioning System¶
Beschreibung
GPS ist aus dem heutigen Leben kaum wegzudenken: von der zentimeter-genauen Vermessung bis zur Navigation auf der Erde und in der Luft werden Satelliten-basierte Systeme wie GPS, Glonass und Galileo verwendet. Während GPS-Empfänger meist in den entsprechenden Geräten „fest verbaut“ sind und man deren Präsenz nur erahnen kann, bieten USB-GPS-Empfänger den vollen Zugriff auf die Kommunikation und den Chipsatz. Sie beschäftigen sich in diesem Versuch mit der Schnittstelle zum GPS-Empfänger und untersuchen, inwiefern sich die gewonnenen Daten sinnvoll weiterverarbeiten lassen.
Ziele / Fragestellungen
Machen Sie sich mit dem Funktionsprinzip satellitengestützter Positionierungssysteme vertraut und beschreiben Sie die Funktionsweise.
Welche Informationen stellt der USB-GPS-Empfänger bereit, wie sind die „Rohinformationen“ aufgebaut?
Wie können Sie die vom Empfänger bereitgestellten Daten weiterverarbeiten, z.B. mit Python?
Wie werden sequentielle GPS-Daten normalerweise gespeichert (Stichwort „GPX-Tracks“)?
Mit welchen Mitteln können Sie den GPS-Empfänger konfigurieren? Gehen Sie hier mit Bedacht vor!
Tipps
„Daten aus einer GPS-Maus erfassen und verarbeiten“ (aus LinuxUser 06/2016):
https://www.linux-community.de/ausgaben/linuxuser/2016/06/sicher-navigieren/
Parsen der GPS-Daten mit Python (manuell):
https://maker.pro/raspberry-pi/tutorial/how-to-read-gps-data-with-python-on-a-raspberry-pi
Parsen der GPS-Daten mit Python (verschiedene Lösungsansätze, auch mit gpsd):
https://ozzmaker.com/using-python-with-a-gps-receiver-on-a-raspberry-pi/
Der GPS-Daemon „gpsd“ (wiki.ubuntuusers.de): https://wiki.ubuntuusers.de/gpsd/
Sammlung von Artikeln unter
Material
USB-GPS-Empfänger mit U-Blox-7-Chipsatz
USB-Verlängerungskabel
(V8) Raspberry Pi (RPI-HAT)¶
RPi + Sense HAT Shield
Das Sense HAT ist ein Aufsteckboard für den Raspberry Pi:
(V9) Raspberry Pi (RPI-IO)¶
Material
RPi + I/O Tasten
(V10) IoT mit ESP8266/NodeMCU¶
Beschreibung
Kleine Mikrocontroller sind bereits für wenig Geld zu bekommen, bieten jedoch bereits ausreichend Leistung um Mess- oder Steueraufgaben zuverlässig zu erledigen. Wichtig dabei ist eine Anbindung an eine Kommunikationsinfrastruktur. Der ESP8266, auch unter dem Namen „NodeMCU“ bekannt, vereint Mikrocontroller und WLAN-Modul in einem Chip.
Ziele
Sie machen Sich mit den Möglichkeiten der Programmierung des ESP8266 vertraut.
Erstellen Sie eine (kleine) IoT-Anwendung für Mess- und Steueraufgaben.
Material
ESP8266-Modul
Micro-USB-Kabel
DHT11 Luftfeuchte/Temperatur-Sensor
Steckbrett mit LEDs und Kabeln