## page was renamed from DVA_TI_Versuche ## page was renamed from DVA_Versuche #format rst #language de =================== DVA Versuche für TI =================== | Autor: Hubert Högl, | URL: http://hhoegl.informatik.hs-augsburg.de/hhwiki/DVATI_Versuche | Letzte Änderung: 2019-10-05 ---- **Hier keine Änderungen mehr machen! Text ist jetzt unter https://gitlab.informatik.hs-augsburg.de/dvati/versuche bzw. https://www.hs-augsburg.de/homes/hhoegl/dvati_versuche/** .. contents:: Inhalt .. _avr: (V1) AVR Grundlagen =================== .. figure:: http://hhoegl.informatik.hs-augsburg.de/dva/img-9-19/avr_grundlagen.jpg .. figure:: http://hhoegl.informatik.hs-augsburg.de/dva/img/ic-dip28.jpg | **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. - Lit.: http://www.nongnu.org/uracoli/avrtools.html - 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) https://www.microchip.com/design-centers/8-bit/avr-mcus * AVR Tutorial http://www.mikrocontroller.net/articles/AVR-Tutorial * AVR GCC Tutorial http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial * AVR Freaks Community http://www.avrfreaks.net .. _arduino: (V2) Das Arduino Projekt ======================== .. figure:: http://hhoegl.informatik.hs-augsburg.de/dva/img-9-19/arduino.jpg .. figure:: http://hhoegl.informatik.hs-augsburg.de/dva/img/arduino_uno_r3.jpg | **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 .. _mbed: (V3) mbed Mikrocontroller ========================= .. figure:: http://hhoegl.informatik.hs-augsburg.de/dva/img-9-19/mbed_microcontroller.jpg .. figure:: http://hhoegl.informatik.hs-augsburg.de/dva/img/mbedMicrocontroller.jpg | **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.mbed.org * 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 .. _stm32: (V4) STM32 Nucleo ================= .. figure:: http://hhoegl.informatik.hs-augsburg.de/dva/img-9-19/stm32_nucleo.jpg | 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 .. _rs485: (V5) RS-485 Bussystem ===================== .. figure:: http://hhoegl.informatik.hs-augsburg.de/dva/img-9-19/rs485_bussystem.jpg | **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** * http://de.wikipedia.org/wiki/EIA-485 * http://hhoegl.informatik.hs-augsburg.de/dva/ti/rs485/DifferenceBetween_RS232_RS485.pdf .. _can: (V6) Controller Area Network ============================ .. figure:: http://hhoegl.informatik.hs-augsburg.de/dva/img-9-19/can_controller-area-network.jpg | **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 Schnittstelle http://de.wikipedia.org/wiki/SocketCAN - Pakete unter Linux: libsocketcan-dev, libsocketcan2, can-utils - can4linux ist ein weiterer Treiber für CAN Controller unter Linux http://sourceforge.net/projects/can4linux/ - Testen mit ``picocom`` und ``socketcan``. 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.peak-system.com * http://www.systec-electronic.com * http://www.ixxat.de * http://www.ems-wuensche.de * http://esd.eu * http://www.mhs-elektronik.de (Tiny-CAN * viele weitere ... **Literatur** * http://de.wikipedia.org/wiki/Controller_Area_Network * Introduction to the Controller Area Network (CAN), 17 pages, Texas Instruments 2016 http://www.ti.com/lit/an/sloa101b/sloa101b.pdf * 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 ============================== .. figure:: http://hhoegl.informatik.hs-augsburg.de/dva/img-9-19/gps.jpg | **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 und wie können Sie diese weiterverarbeiten Betrachten Sie dabei sowohl die "Rohinformation" die der Empfänger bereitstellt als auch weiter verarbeitete Daten (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/ - Der GPS-Daemon "gpsd" (wiki.ubuntuusers.de): https://wiki.ubuntuusers.de/gpsd/ **Material** - USB-GPS-Empfänger mit U-Blox-7-Chipsatz - USB-Verlängerungskabel (V8) Raspberry Pi (RPI-HAT) =========================== .. figure:: http://hhoegl.informatik.hs-augsburg.de/dva/img-9-19/rpi_hat.jpg | RPi + Sense HAT Shield Das *Sense HAT* ist ein Aufsteckboard für den Raspberry Pi: https://www.raspberrypi.org/products/sense-hat (V9) Raspberry Pi (RPI-IO) ========================== .. figure:: http://hhoegl.informatik.hs-augsburg.de/dva/img-9-19/rpi_io.jpg | **Material** RPi + I/O Tasten (V10) IoT mit ESP8266/NodeMCU ============================= .. figure:: http://hhoegl.informatik.hs-augsburg.de/dva/img-9-19/esp8266_nodemcu.jpg | **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 .. vim: filetype=rst et sw=3 ts=3