Advamation-Logo (Druckversion)

AdvaBoard Kit - Entwicklungs-/Ausbildungsplattform

AdvaBoard-Kit Foto
AdvaBoard-Kit Oberseite AdvaBoard-Kit, schematisch

AdvaBoard-Kit Rückseite/Steckverbinder AdvaBoard-Kit, linke Seite AdvaBoard-Kit, rechte Seite
(zum Vergrößern anklicken)

AdvaBoard-Kit

Artikel-Nr.: 4160

Das AdvaBoard-Kit ist eine etwa DIN A4 große Kombination aus Raspberry Pi, AdvaBoard RPi1 und 5.0" (126mm) TFT-Display inkl. Touchscreen, erweitert um eine Tastatur, Potis, LEDs, einen Temperatur- und Helligkeitssensor (optional) und einige weitere Komponenten, eingebaut in ein solides, antistatisches Gehäuse mit transparenter Frontplatte.

Es eignet sich somit ideal zu Ausbildungszwecken (z.B. in Berufsschulen), als Entwicklungs- und Testplattform oder für Demo-Anwendungen.

Es besteht standardmäßig aus:

  • Raspberry Pi
  • AdvaBoard RPi1
  • TFT-Display TFT50 (5.0" / 126mm) inkl. Touchscreen
  • USB 2.0-Hub (aktiv)
  • Audio-Lautsprecher inkl. Verstärker
  • Tastenfeld (0-9*#), 2 Potis, 4 LEDs (dimmbar), Piezoschallwandler
  • I2C-Temperatur- und Helligkeitssensor (optional)
  • Gehäuse mit:
    • antistatischer Grundplatte
    • antistatischer, transparenter, schlagzäher Polycarbonat-Frontplatte
    • Seitenteilen aus (nicht-eloxiertem) Aluminium
    • 4 Gummifüßen
    • herausgeführten Schnittstellen: HDMI, Cinch, Ethernet, 4*USB (via Hub), RS-232 (inkl. RS-232-TTL-Wandler), RS-485, I2C, Analog-/Digital-I/Os
  • Batteriehalter CR2032 (z.B. für die Echtzeituhr)
  • Platz für optionale Erweiterungen
  • SD-Karte inkl. installierter und konfigurierter Software
  • Steckernetzteil 5V / 3A, Touchscreen-Stift, RS-232-Nullmodem

Frage zu diesem Produkt?

Details

Das AdvaBoard-Kit wurde um das AdvaBoard RPi1 und ein daran angeschlossenes TFT-Display herum entworfen, und bietet damit alle Funktionen des AdvaBoard RPi1. Mehr Informationen hierzu finden Sie in der Dokumentation des AdvaBoard RPi1 und der TFT-Displays.

Zusätzlich sind sämtliche Schnittstellen des Raspberry Pi (außer dem GPIO-Header und der Audio-Klinkenbuchse) auf Steckverbinder am Gehäuse geführt, so dass externe Geräte einfach angeschlossen werden können. Für die RS-232-TTL-Schnittstelle des Raspberry Pi ist hierbei zusätzlich ein Pegelwandler eingebaut, so dass RS-232-Geräte mit Standardpegeln an das AdvaBoard-Kit angeschlossen werden können. Der eingebaute aktive USB 2.0-Hub ermöglicht zudem den direkten Anschluss von bis zu 4 USB-Geräten mit je max. 500mA. Um auch den Audio-Ausgang des Raspberry Pi nutzen zu können, ist außerdem ein kleiner Audio-Verstärker inkl. Lautsprecher im AdvaBoard-Kit eingebaut.

Ebenso sind die I2C-Schnittstelle, die RS-485-Schnittstelle und die Analog- und Digital-I/Os des AdvaBoard RPi herausgeführt, so dass externe I2C-Sensoren, RS-485-Geräte, Schalter, Taster usw. direkt an das AdvaBoard-Kit angeschlossen werden können.

Sollten die Funktionen des AdvaBoard RPi1 für eine Anwendung nicht ausreichen, so kann das AdvaBoard-Kit mit diversen Erweiterungen (z.B. zusätzliche Digital- und Analog-I/Os, Relais, weitere Sensoren, CPLD- oder Mikrocontrollerplatinen) nachgerüstet werden. Im AdvaBoard-Kit ist hierbei Platz für bis zu 5 derartige Erweiterungen vorgesehen. Zusätzlich können externe Erweiterungen (per I2C oder RS-485) an das AdvaBoard-Kit angeschlossen werden.

Speziell für einfache Anwendungen und für Ausbildungszwecke sind zudem eine kleine Tastatur, zwei Potis, und 4 (per PWM dimmbare) LEDs eingebaut, die per I2C angesprochen werden können. Daneben ist natürlich die Bedienung des Geräts per Touchscreen möglich.

Beim Gehäuse wurde stark darauf geachtet, dass dieses solide und antistatisch ausgelegt ist: Es besteht aus einer robusten und antistatischen Grundplatte, nicht-eloxierten Seitenteilen aus Aluminium, sowie einer transparenten, schlagzähen und antistatischen Frontplatte aus Polycarbonat. Durch die transparente Frontplatte sind nahezu alle Komponenten gut sichtbar. Die Größe des Gehäuses (ca. 290 × 215 × 54..87mm) ist mit einer Grundfläche von in etwa DIN A4-Größe recht handlich.

Als Stromversorgung für das komplette Gerät (inkl. AdvaBoard RPi1, Raspberry Pi und USB-Hub) dient ein 5V-Steckernetzteil.

Das AdvaBoard-Kit wird komplett mit SD-Karte und darauf installierter Software geliefert. Nach dem Einschalten bootet der Raspberry Pi und auf dem eingebauten Display erscheint die Linux-Kommandozeile bzw. eine Linux-Desktopoberfläche, die sofort per Touchscreen bedient werden kann. Neben den C- und Python-Bibliotheken ist zudem speziell für Ausbildungszwecke eine Java-Bibliothek enthalten, mit der auf das AdvaBoard RPi1 zugegriffen werden kann.

Kundenspezifische Anpassungen des AdvaBoard-Kits (sowohl bzgl. Hardware als auch bzgl. Software) sind nach Absprache möglich.

Preis / Lieferzeit

Lieferumfang:
  • AdvaBoard-Kit (Gehäuse inkl. aller eingebauter Komponenten)
  • Steckernetzteil 5V / 3A
  • Touchscreen-Stift
  • RS-232-Nullmodem (Stecker/Stecker)
  • Knopfzelle CR2032
  • SD-Karte inkl. Software
Preis:
auf Anfrage
Lieferzeit:
auf Anfrage

Zubehör / Erweiterungen

In das AdvaBoard-Kit können bis zu 5 Erweiterungsplatinen eingebaut werden. Diese Erweiterungsplatinen sind jedoch nicht AdvaBoard-Kit-spezifisch, sondern können auch getrennt von diesem verwendet werden.

Zudem ist es möglich, extern verschiedene Geräte (z.B. per I2C oder RS-485) an das AdvaBoard RPi1 anzustecken.

Zubehör:
  • I2C-Steckverbinder / -Kabel (DB-9 mit Flachbandkabelanschluss)
  • I2C-Adapter auf Federklemmen bzw. Schraubklemmen
  • I/O-Steckverbinder / -Kabel (DB-25 Flachbandkabelanschluss)
  • I/O-Adapter auf Federklemmen bzw. Schraubklemmen
  • RS-485-Steckverbinder / -Kabel
Erweiterungen:
  • E-SPI-Erweiterungsplatine mit 4 Relais
  • RS-485-Erweiterungsplatine mit 4 220V-Relais und S0-Schnittstelle
  • I2C-Erweiterungsplatine mit programmierbarem Mikrocontroller:
    • 8 hochauflösende Analog-Eingänge (16 Bit, 1 ksps; optional 24 Bit)
    • 2 Analog-Ausgänge (D/A-Wandler, 8 Bit, 0..0.25/0.5/1.0/2.0mA, max. 2V),
      alternativ als Digital-I/O verwendbar
    • 6 Digital-Ein-/Ausgänge (konfigurierbar als Eingang, Ausgang (Push-Pull oder Open-Drain), SPI, UART, PWM, Timer, Counter usw.)
    • inkl. SiLabs 8-Bit-Mikrocontroller C8051F353 / C8051F351
    • für dezentrale oder echtzeitkritische Aufgaben
    • per AdvaBoard programmierbar (C2-Interface)
  • E-SPI-Erweiterungsplatine mit programmierbarem Mikrocontroller und programmierbarem Xilinx CPLD:
    • inkl. Xilinx CPLD XC9572XL
    • inkl. SiLabs 8 Bit-Mikrocontroller C8051F35x
    • für schnelle I/Os
    • für I/Os mit hardwareunterstützter Verarbeitung (z.B. 2-Phasen-Counter, PWM, serielle/parallele Schnittstellen etc.)
    • per AdvaBoard programmierbar (JTAG-/C2-Interface)
  • I2C-Sensoren, z.B. Temperatursensor, Temperatur-/Feuchtesensor, Beschleunigungssensoren, Bewegungsmelder, Gassensoren, ...
  • I2C-Verteiler, -Switches, -Buffer und galvanische Trennungen
  • aktiver I2C-Pullup zur Verlängerung von I2C-Leitungen (bis 5000pF)
  • Automatisierungs-Baukasten per RS-485 oder E-SPI (I/O, Relais, Motoren, digitale Messuhren, Thermoelement-Interfaces, Mechatronik-Komponenten, ...)
  • ...

Software

Bei der Software für das AdvaBoard-Kit handelt es sich um eine Raspbian-Linuxdistribution sowie die gleiche Software wie beim AdvaBoard RPi1. Nähere Informationen hierzu finden Sie bei der AdvaBoard RPi1-Software.

Die Software (aktuelles Raspbian + AdvaBoard RPi1-Software) ist bereits auf der beiliegenden SD-Karte installiert und konfiguriert (inkl. Touchscreen-Kalibrierung). Damit bootet der Raspberry Pi des AdvaBoard-Kits direkt nach dem Anschluss des Netzteils, und auf dem eingebauten Display erscheint die Linux-Kommandozeile bzw. eine Linux-Desktopoberfläche, die sofort per Touchscreen bedient werden kann.

Das AdvaBoard RPi1 des Kits kann über die mitgelieferten bzw. als Download verfügbaren Bibliotheken und Programme per C, Python, Java oder Shell-Skript angesprochen werden.

Informationen zur installierten Linux-Distribution:

  • Distribution: Raspbian 2013-09-25 (2013-09-25-wheezy-raspbian, Download-Seite),
    auf aktuellen Stand aktualisiert (apt-get update / upgrade)
  • Kernel: 3.6-trunk-rpi

  • Einstellungen: deutsche Tastatur, deutsche und englische Locales, HDMI-Grafikspeicher auf 16 MB reduziert

  • inkl. installierter AdvaBoard RPi1-Treiber/-Software

  • Login: Nutzername pi, Passwort raspberry
    Diese Standard-Logindaten sollten spätestens nach einem Test geändert, bzw. andere Nutzer angelegt und der Nutzer pi gelöscht werden; andernfalls ist ein Login durch jedermann und selbst über das Netzwerk möglich!
  • Login per SSH aktiviert

  • root-Zugriff per Login als Nutzer und sudo bash

  • Start der graphischen Benutzeroberfläche auf dem integrierten Display per Login und startx

  • Weitere Konfiguration: per sudo raspi-config
    (z.B. Änderung der Spracheinstellungen bzw. standardmäßiges booten in die graphische Desktop-Umgebung)

technische Informationen

Gehäuse

Größe:
290 × 215mm × ca. 87mm (inkl. Gummifüße, Potiknöpfe usw.)
Das Gehäuse selbst (ohne Gummifüße, Potiknöpfe usw.) hat eine Höhe von ca. 54mm.
Oberseite:
AdvaBoard-Kit Oberseite
Rückseite:
AdvaBoard-Kit Rückseite/Steckverbinder
linke Seite:
AdvaBoard-Kit, linke Seite
rechte Seite:
AdvaBoard-Kit, rechte Seite

Komponenten / Steckverbinder

Die folgende Abbildung zeigt alle elektrischen Komponenten des AdvaBoard-Kits und ihre wichtigsten Verbindungen untereinander:

AdvaBoard-Kit, schematisch

(zum Vergrößern anklicken)

Stromversorgung

Die Stromversorgung erfolgt über den 5V-Netzteilanschluss, im Normalfall mit einem Steckernetzteil mit 5V / 3A. Dieses versorgt:

  • das AdvaBoard RPi1, das wiederum den Raspberry Pi, das TFT-Display, den Audio-Verstärker, den RS-232-TTL-Wandler und die weiteren angeschlossenen Komponenten mit Strom versorgt, und
  • den USB 2.0-Hub (5V / 2A)

Zusätzlich kann eine CR2032-Knopfzelle (3V) verwendet werden, um Teile des AdvaBoard RPi1 (insbesondere die Echtzeituhr) bei ausgestecktem Netzteil zu versorgen.

Sofern der rote RPi5V-Jumper auf dem AdvaBoard RPi1 gesetzt ist, wird der Raspberry Pi immer mit Strom versorgt, wenn das Netzteil angeschlossen ist. Wird dieser Jumper entfernt, so kann der Raspberry Pi vom AdvaBoard RPi1 (z.B. zeit- oder ereignisgesteuert) ein- und ausgeschaltet werden. Allerdings ist in diesem Fall zu beachten, dass eine Fehlkonfiguration des AdvaBoard RPi1 dazu führen kann, dass der Raspberry Pi nicht mehr eingeschaltet werden kann.

Sollten Sie den Raspberry Pi vom AdvaBoard RPi ein- und ausschalten wollen, jedoch einen Schutz gegen eine Fehlkonfiguration benötigen, so kontaktieren Sie uns bitte unter support@advamation.de.

5V-Netzteil-Steckverbinder: Hohlstecker 5.5mm/2.1mm

Kontakt Signal Beschreibung
außen GND Masse
innen +5V +5V

Raspberry Pi

Der Raspberry Pi wird vom AdvaBoard RPi1 mit Strom versorgt (siehe Stromversorgung). Die meisten Schnittstellen des Raspberry Pi sind auf Steckverbinder auf der Rückseite des Gehäuses herausgeführt. Mehr Informationen zum Raspberry Pi finden Sie auf unserer Technik-Seite zum Raspberry Pi.

AdvaBoard RPi1

Das AdvaBoard RPi1 ist die zentrale Komponente des AdvaBoard-Kits. Technische Informationen zum AdvaBoard RPi1 finden Sie in der Dokumentation des AdvaBoard RPi1.

TFT-Display TFT50

Beim eingebauten TFT-Display handelt es sich um das TFT50-Display (5.0" / 126mm) mit einer Auflösung von 800|x|480 Pixeln und einem integrierten Touchscreen.

Die Bedienung ist entweder per Finger oder per mitgeliefertem Stift möglich, wobei der Stift eine exaktere Bedienung ermöglicht.

Das Display und der Touchscreen sind im Auslieferungszustand bereits per Software passend konfiguriert, so dass diese direkt als Linux-Display bzw. Linux-Touchscreen funktionieren.

HDMI, Cinch

Per HDMI kann an den Raspberry Pi (und somit an das AdvaBoard-Kit) ein handelsüblicher digitaler TFT-Monitor angeschlossen werden.

Dieser HDMI-Monitor kann gleichzeitig mit dem eingebauten TFT-Display betrieben werden (Multi-Monitor-Betrieb), und es wäre durchaus möglich, auf beiden Monitoren z.B. Linux-Desktopumgebungen laufen zu lassen. Zusammen mit einer USB-Tastatur und einer USB-Maus wäre es hiermit sogar möglich, auf dem HDMI-Display Software für das AdvaBoard-Kit zu entwickeln, und diese dann auf dem eingebauten Display laufen zu lassen, ohne dass ein ein zusätzlicher Rechner notwendig wäre (sofern die Geschwindigkeit des Raspberry Pi für die Entwicklungsumgebung ausreicht).

Alternativ zum HDMI-Monitor (jedoch nicht gleichzeitig) ist der Anschluss eines Monitors bzw. Fernsehers per "Composite-Video"/Cinch-Kabel möglich. Die Anzeigequalität auf derartigen Monitoren ist jedoch erheblich schlechter als auf HDMI-Monitoren. (siehe auch: http://www.advamation.de/technik/raspberrypi/#tft-display).

Ethernet

Der Raspberry Pi enthält eine 100 MBit Ethernet-Schnittstelle, die an die Rückseite des AdvaBoard-Kits herausgeführt ist.

Raspbian ist hierbei standardmäßig so konfiguriert, dass beim Booten eine IP-Adresse per DHCP angefordert und das Netzwerk entsprechend konfiguriert wird. Zudem läuft standardmäßig ein SSH-Server, so dass ein Login in den Raspberry Pi bzw. das AdvaBoard-Kit über ein Netzwerk per SSH möglich ist.

Die Standard-Logindaten (pi / raspberry) der Raspbian-Distribution sollten deshalb möglichst bald durch andere Logindaten ersetzt werden, da andernfalls jedermann, der Zugriff auf das Netzwerk hat, sich in den Raspberry Pi einloggen kann.

USB

Das AdvaBoard-Kit enthält einen aktiven USB 2.0-Hub mit 4 Anschlüssen. Der USB-Hub wird durch das 5V-Netzteil des AdvaBoard-Kits mit Strom versorgt, so dass an jedem der 4 USB-Anschlüsse je 500mA zur Verfügung stehen.

Diese USB-Anschlüsse können beispielsweise zum Anschluss einer USB-Tastatur, von USB-Speichersticks, WLAN- und UMTS-Sticks oder anderer USB-Peripherie verwendet werden. Beim Anschluss externer USB-Festplatten sollte jedoch darauf geachtet werden, dass deren maximaler Strom die erlaubten 500mA nicht überschreitet (was leider von vielen USB-Festplatten nicht eingehalten wird). Vom Anschluss mittels sogenannter "Y-Kabel" muss gewarnt werden, da auch mit diesen Kabeln nicht mehr als 500mA zur Verfügung stehen, und die Y-Kabel jede USB-Spezifikation verletzen.

Audio

Um den Audio-Ausgang des Raspberry Pi ohne externe Lautsprecher verwenden zu können, ist im AdvaBoard-Kit auf der linken Seite ein kleiner Lautsprecher (inkl. Verstärker) integriert. Dieser Lautsprecher ist dabei eher für Signaltöne und weniger für eine hochqualitative Wiedergabe von Musik gedacht, und gibt den linken Kanal eines Stereosignals aus; der rechte Kanal wird ignoriert.

Sollen externe Lautsprecher oder ein Mikrofon an den Raspberry Pi angeschlossen werden, so empfiehlt es sich, diese per USB-Soundstick an das AdvaBoard-Kit anzuschließen. Viele der erhältlichen USB-Soundsticks werden direkt von Linux unterstützt; im Zweifelsfall können wir Ihnen USB-Soundsticks empfehlen, die mit dem Raspberry Pi funktionieren.

RS-232

Der Raspberry Pi besitzt eine RS-232-Schnittstelle mit TTL-Pegeln. Um RS-232-Geräte mit "normalen" Pegeln daran anschließen zu knnen, ist im AdvaBoard-Kit ein RS-232-TTL-Pegelwandler eingebaut.

Standardmäßig ist die RS-232-Schnittstelle des AdvaBoard-Kits als Buchse bzw. DCE/DÜE (Datenübertragungseinrichtung) ausgeführt. Um diese Schnittstelle auch als DTE/DEE (Datenendeinrichtung) nutzten zu können, wird ein RS-232-Nullmodem mitgeliefert, das direkt auf die RS-232-Buchse gesteckt werden kann.

Zu beachten ist, dass gleichzeitig immer nur entweder die RS-232 oder die RS-485-Schnittstelle verwendet werden kann. Es ist jedoch möglich, per Software zwischen den beiden Schnittstellen umzuschalten, z.B. per Kommandozeilenprogramm:

# Umschalten auf RS-232:
sudo am_rpi_advaboard_tool -m RS485_CFG RS232

Steckverbinder: D-Sub, 9-polig (DB9), Buchse

DB9 Buchse DB9 Stecker
RS-232-Buchse RS-232-Stecker des Nullmodems
(Ansicht: Steckseite) (Ansicht: Steckseite)
Pin Signal Beschreibung
1 nicht verwendet
2 RX Datenleitung, DTE <- DEE / vom DTE empfangene Daten
3 TX Datenleitung, DTE -> DEE / vom DTE gesendete Daten
4 nicht verwendet
5 GND Masse
6 nicht verwendet
7 nicht verwendet
8 nicht verwendet
9 nicht verwendet

RS-485

Die RS-485-Schnittstelle ist eine störfeste Industrieschnittstelle, an die als Bus (evtl. mittels Hubs) mehrere Geräte (z.B. aus unserem Automatisierungs-Baukasten) angeschlossen werden können, und die auch für die Überbrückung langer Distanzen geeignet ist.

Die RS-485-Schnittstelle des AdvaBoard-Kits enthält eine automatische Richtungsumschaltung, sowie einen auf dem AdvaBoard RPi1 per Steckbrücke aktivierbaren RS-485-Leitungs-Terminator. Darüber hinaus ist eine konfigurierbare automatische 9.Bit-Modifikation als Adresskennung (Bit 9=1: Adresse, Bit 9=0: Daten) integriert, wie sie z.B. in vielen Mikrocontrollern vorgesehen und für das Advamation-RS-485-Protokoll notwendig ist.

Der verwendete RS-485-Steckverbinder enthält neben den Datenleitungen mehrere Stromversorgungsleitungen, so dass 1 Kabel zum Anschluss eines externen Geräts ausreicht, und keine zusätzlichen Stromkabel notwendig sind. Das AdvaBoard-Kit enthält allerdings selbst keine entsprechende +12V/+24V-Stromversorgung. Deshalb gibt es im AdvaBoard-Kit einen zweiten RS-485-Steckverbinder, der als RS-485-Netzteil-Anschluss verwendet werden, und die RS-485-Geräte dann mit +12V bzw. +24V versorgen kann.

Für größere Leistungen (z.B. für größere Motoren) sind die Kontakte "A1" und "A2" vorgesehen, die jedoch im AdvaBoard-Kit sinnvollerweise nicht bestückt sind. Werden derartige Leistungen benötigt, so sollte ein entsprechendes externes Netzteil mit den Kontakten "A1" und "A2" verwendet, ohne den Strom durch die AdvaBoard-Kit-Steckverbinder "durchzuschleifen".

Zu beachten ist, dass gleichzeitig immer nur entweder die RS-232 oder die RS-485-Schnittstelle verwendet werden kann. Es ist jedoch möglich, per Software zwischen den beiden Schnittstellen umzuschalten, z.B. per Kommandozeilenprogramm:

# Umschalten auf RS-485, Baudrate 115200, 9.Bit-Modifikation ein:
sudo am_rpi_advaboard_tool -m RS485_CFG RS485 1701 1

RS-485-Steckverbinder: D-Sub 7W2, Buchse/Stecker

D-Sub 7W2 Buchse D-Sub 7W2 Stecker
RS-485-Buchse RS-485-Netzteilanschluss
(Ansicht: Steckseite) (Ansicht: Steckseite)
Pin Signal Strom Beschreibung
1 +24V max. 5A 24V-Stromversorgung, bei Bedarf
2 +12V max. 5A 12V-Elektronik-Stromversorgung
3 DGND max. 5A Masse für Pin 1 + 2
4 RS-N   RS-485-Datenleitung, im Ruhezustand negativere Leitung (ca. 2.3V)
5 RS-P   RS-485-Datenleitung, im Ruhezustand positivere Leitung (ca. 2.7V)
A1 (+12..+48V) max. 30A im AdvaBoard-Kit nicht verwendet
A2 (PGND) max. 30A im AdvaBoard-Kit nicht verwendet

I2C

Der I2C-Bus ist mittlerweile die Schnittstelle für digitale Sensoren, z.B. für Temperatursensoren, Temperatur-/Feuchtesensoren, Beschleunigungssensoren, Bewegungsmelder etc.

Im AdvaBoard-Kit wird diese Schnittstelle verwendet, um die Tastatur-/Poti-/LED-Einheit und den Temperatur-/Helligkeitssensor anzubinden sowie für die interne Kommunikation auf dem AdvaBoard RPi1 selbst. Zudem ist die I2C-Schnittstelle auf einen Steckverbinder auf der Rückseite herausgeführt.

Das AdvaBoard verwendet dabei:

  • 3.3V Versorgungsspannung
  • 3.3V Pegel (nicht 5V-tolerant!)
  • eine separate Leitung für die Versorgung per Batterie
  • eine Interrupt-Leitung für schnelle Reaktionszeiten und das Aufwecken des AdvaBoards/Raspberry Pis bei bestimmten Ereignissen

Die Stromaufnahme aller angschlossenen 3.3V-Geräte darf hierbei 100mA nicht überschreiten. Die I2C-Adressen 8, 9 und 10 sind durch das AdvaBoard-Kit bereits belegt und können nicht für externe Sensoren verwendet werden.

Der Raspberry Pi enthält leider einen Fehler in seiner I2C-Schnittstelle, die dazu führen kann, dass Daten verloren gehen oder verfälscht ankommen, sofern ein I2C-Gerät das sogenannte "Clock-Stretching" verwendet. (siehe auch: http://www.advamation.de/technik/raspberrypi/rpi-i2c-bug.html). Das AdvaBoard RPi1 kann diesen Fehler jedoch teilweise abfangen. Nähere Informationen hierzu finden sich in der Software-Dokumentation unter "I2C-clock-stretching".

Als Steckverbinder für I2C verwenden wir innerhalb von Gehäusen üblicherweise 6-polige Pfostenverbinder, außerhalb von Gehäusen codierte 9-polige D-Sub-Steckverbinder. Eine Adaption ist mittels D-Sub-Steckverbindern mit Flachbandkabelanschluss sehr einfach möglich.

Steckverbinder: D-Sub Buchse, 9-polig (DB9), blau

DB9-Buchse, blau
I2C-Steckverbinder
(Ansicht: Steckseite)
Pin Signal Beschreibung
5 GND Masse
9 SDA I2C-Datenleitung
4 +3.3V
Stromversorgung für I2C-Geräte, 3.3V, geschaltet,
max. 100 mA zusammen mit Pin 2/11 des I/O-Steckverbinders
8 SCL I2C-Taktleitung
3 +VBatt Stromversorgung für I2C-Geräte, batteriegestützt
7 ALERT I2C-/SMBus-Interruptleitung
2 NO PIN Stecker-Codierung
6 -- nicht verwendet
1 -- nicht verwendet

Für den Anschluss externer I2C-Geräte empfehlen sich hierbei neben normalen DB9-Steckern (ohne Pin 2) insbesondere DB9-Stecker mit Flachkabelanschluss (z.B. D-SUB ST 09FB von reichelt.de) und Adapter von DB9 auf Feder- bzw. Schraubklemmen (z.B. DELOCK 65269).

I/O-Steckverbinder

Das AdvaBoard bietet einige Analog- und Digital-I/Os, die beim AdvaBoard-Kit auf einen 25-poligen D-Sub-Steckverbinder auf der Rückseite herausgeführt sind. Diese beinhalten:

  • 8 Digital-I/Os per CPLD
  • 2 Digital-I/Os per Mikrocontroller inkl. PWM
  • 2 Analog-Ausgänge (8 Bit, einstellbarer Bereich 0..0.25/0.5/1.0/2.0mA, max. 2.0V),
    alternativ als Digital-I/Os nutzbar
  • 4 Analog-Eingänge (16 Bit, 1 ksps) inkl. Spannungsteiler und Filter
Alle Digital-I/Os verwenden einen 3.3V Pegel und sind 5V-tolerant.
Sollten für eine Anwendung mehr I/Os notwendig sein, so können entweder entsprechende Erweiterungsmodule in das AdvaBoard-Kit eingebaut, oder externe I/O-Platinen per per I2C oder RS-485 angeschlossen werden-

Als I/O-Steckverbinder verwenden wir innerhalb von Gehäusen üblicherweise 20-polige Pfostenverbinder, außerhalb von Gehäusen codierte 25-polige D-Sub-Steckverbinder. Eine Adaption ist mittels D-Sub-Steckverbindern mit Flachbandkabelanschluss sehr einfach möglich.

Steckverbinder: D-Sub Buchse, 25-polig (DB25), blau

DB25-Buchse, blau
I/O-Steckverbinder
(Ansicht: Steckseite)
Pin Signal Beschreibung
1 NO PIN Stecker-Codierung
14 -- nicht verwendet
2 +3,3V
Versorgung für externe Elektronik
max. 100mA zusammen mit Pin 11 und externen I2C-Geräten
15 GND Masse
3 AIN0 Analog-Eingang 0, inkl. Spannungsteiler und Filter-Kondensator
16 AIN1 Analog-Eingang 1, inkl. Spannungsteiler und Filter-Kondensator
4 AIN2 Analog-Eingang 2, inkl. Spannungsteiler und Filter-Kondensator
17 AIN3 Analog-Eingang 3, inkl. Spannungsteiler und Filter-Kondensator
5 IO 0.4 / IDA0 Digital-I/O 4 / Analog-Ausgang 0
18 IO 0.5 / IDA1 Digital-I/O 5 / Analog-Ausgang 1
6 IO 0.6 / PWM0 Digital-I/O 6 / PWM 0 / Frequenzausgang 0
19 IO 0.7 / PWM1 Digital-I/O 7 / PWM 1 / Frequenzausgang 1
7 IO 1.0 / CPLDIO0 CPLD-I/O 0 / RPi PWM
20 IO 1.1 / CPLDIO1 CPLD-I/O 1
8 IO 1.2 / CPLDIO2 CPLD-I/O 2
21 IO 1.3 / CPLDIO3 CPLD-I/O 3
9 IO 1.4 / CPLDIO4 CPLD-I/O 4
22 IO 1.5 / CPLDIO5 CPLD-I/O 5
10 IO 1.6 / CPLDIO6 CPLD-I/O 6
23 IO 1.7 / CPLDIO7 CPLD-I/O 7
11 +3,3V
Versorgung für externe Elektronik
max. 100mA zusammen mit Pin 2 und externen I2C-Geräten
24 GND Masse
12 -- nicht verwendet
25 -- nicht verwendet
13 NO PIN Stecker-Codierung

Für den Anschluss empfehlen sich hierbei neben normalen DB25-Steckern (ohne Pin 1 und 13) insbesondere DB25-Stecker mit Flachkabelanschluss (z.B. D-SUB ST 25FB von reichelt.de) und Adapter von DB25 auf Feder- bzw. Schraubklemmen (z.B. DELOCK 65318).

Tastatur, Potis, LEDs, Piezoschallwandler

Insbesondere für Ausbildungszwecke und kleine Anwendungen wurden im AdvaBoard-Kit eine kleine Tastatur, 2 Potis, 4 LEDs und ein Piezoschallwandler integriert. Die Anbindung dieser Komponenten an das AdvaBoard RPi1 erfolgt hierbei mit einer eigenen I2C-Erweiterungsplatine, die ber unser Advamation RS-485-/I2C-Protokoll angesprochen wird.

Tastatur

Die Tastatur besteht aus einem Tastenfeld mit 12 Tasten (0-9, *, #), das elektrisch als 4*3-Matrix (4 Zeilen, 3 Spalten) ausgeführt ist.

Um die Tasten abzufragen, kann vom Raspberry Pi aus ein Tastaturscan durchgeführt werden, indem nacheinander die Ausgänge entsprechend gesetzt und die Eingänge gelesen werden [1]. Zusätzlich ist eine automatische Tastenüberwachung und ein automatischer Tastaturscan integriert:

  • Tastenüberwachung: Es wird ständig die Tastatur auf Tastendrücke überwacht. Ob derzeit eine Taste gedrückt ist, wird in einem virtuellen Eingangsbit abgelegt, das per I2C abgefragt werden kann. Zusätzlich kann bei einem Tastendruck ein I2C-Interrupt ausgelst werden.

  • Tastaturscan: Es wird ständig die Tastatur auf Tastendrücke überwacht und nach einem Tastendruck automatisch die gedrückte Taste ermittelt. Ob derzeit eine Taste gedrückt ist und der Scancode der letzten gedrückten Taste wird in einem virtuellen Eingangs-Byte abgelegt, das per I2C abgefragt werden kann.

    Solange eine Taste gedrückt bleibt, werden weitere Tastendrücke ignoriert, um bauartbedingte Fehlerkennungen ("rollover") zu vermeiden.

Die Tastenüberwachung und der Tastaturscan sind ein-/ausschaltbar.

Kommunikation per am_rpi_advaboard_tool:

# Tastatur-Scan aktivieren
sudo am_rpi_advaboard_tool -m I2C_PROT 10  IO_CONTROL 0  0x08

# Tastendrücke abfragen
sudo am_rpi_advaboard_tool -m I2C_PROT 10  INPUT_READ 2 1
# Tastendrücke in einer Endlosschleife abfragen
while true; do sudo am_rpi_advaboard_tool -m I2C_PROT 10  INPUT_READ 2 1 -v 0; sleep 0.1; done

# Tastatur-Scan deaktivieren
sudo am_rpi_advaboard_tool -m I2C_PROT 10  IO_CONTROL 0  0x04

per Java:

// Tastatur-Scan aktivieren
advaboard.i2c_prot(10, AM_CMD.IO_CONTROL, I(0, 0x08));

// Tastendrücke abfragen (Digital-I/O, Offset 2, Länge 1)
int[] key;
key = advaboard.i2c_prot(10, AM_CMD.INPUT_READ, I(2, 1));
if((key[0] & 0x80) != 0) {
    System.out.printf("Key pressed, Scancode %d%n", key[0] & 0x7F);
}

// Tastatur-Scan deaktivieren
advaboard.i2c_prot(10, AM_CMD.IO_CONTROL, I(0, 0x04));

per Python:

# Tastatur-Scan aktivieren
advaboard.i2c_prot(10, AM_CMD.IO_CONTROL, (0, 0x08))

# Tastendrücke abfragen (Digital-I/O, Offset 2, Länge 1)
key = advaboard.i2c_prot(10, AM_CMD.INPUT_READ, (2, 1))
# for Python 3:
if key[0] & 0x80:
    print("Key pressed, Scancode %d" % (key[0] & 0x7F))
# for Python 2:
if ord(key[0]) & 0x80:
    print("Key pressed, Scancode %d" % (ord(key[0]) & 0x7F))

# Tastatur-Scan deaktivieren
advaboard.i2c_prot(10, AM_CMD.IO_CONTROL, (0, 0x04))

Potis

2 Potis, 270° Drehwinkel, 500 Ohm, angeschlossen an einen 10-Bit-A/D-Wandler.

Die A/D-Wandler zum Einlesen der Potis können per I2C ein-/ausgeschaltet werden; ebenso sind die A/D-Wandler-Werte per I2C abfragbar.

Kommunikation per am_rpi_advaboard_tool:

# A/D-Wandler starten
sudo am_rpi_advaboard_tool -m I2C_PROT 10  ANALOG_CONTROL 0 0b00001111

# A/D-Wandler lesen
sudo am_rpi_advaboard_tool -m I2C_PROT 10  ANALOGIN_READ4

per Java:

// A/D-Wandler starten
advaboard.i2c_prot(10, AM_CMD.ANALOG_CONTROL, I(0, 0x0F));

// warten, bis A/D-Wandler-Werte gültig sind
int status[];
while(true) {
    status = advaboard.i2c_prot(10, AM_CMD.ANALOG_STATUS, I(0,1));
    if((status[0] & 0x44) == 0x44) {
        break;
    }
    // sleep
    try {
        Thread.sleep(10);
    }
    catch(InterruptedException ex) {
    }
}

// A/D-Wandler lesen (beide Potis)
int adc[];
adc = advaboard.i2c_prot(10, AM_CMD.ANALOGIN_READ4);
// nur 1. Poti lesen
adc = advaboard.i2c_prot(10, AM_CMD.ANALOGIN_READ2);
// nur 2. Poti lesen
adc = advaboard.i2c_prot(10, AM_CMD.ANALOGIN_READ, I(2, 2));

per Python:

# A/D-Wandler starten
advaboard.i2c_prot(10, AM_CMD.ANALOG_CONTROL, (0, 0x0F))

# warten, bis A/D-Wandler-Werte gültig sind
while True:
    status = advaboard.i2c_prot(10, AM_CMD.ANALOG_STATUS, (0,1))
    # for Python 3:
    if status[0] & 0x44 == 0x44:
        break
    # for Python 2:
    if ord(status[0]) & 0x44 == 0x44:
        break
    time.sleep(0.01)

# A/D-Wandler lesen (beide Potis)
adc = advaboard.i2c_prot(10, AM_CMD.ANALOGIN_READ4)
# nur 1. Poti lesen
adc = advaboard.i2c_prot(10, AM_CMD.ANALOGIN_READ2)
# nur 2. Poti lesen
adc = advaboard.i2c_prot(10, AM_CMD.ANALOGIN_READ, (2, 2))

LEDs

4 LEDs (2*rot, 1*gelb, 1*grün), per PWM dimmbar

Die 4 LEDs können per I2C ein- und ausgeschaltet werden. Zusätzlich ist es möglich, per PWM die Helligkeit der LEDs einzustellen oder diese blinken zu lassen.

Kommunikation per am_rpi_advaboard_tool:

# LED 0 an
sudo am_rpi_advaboard_tool -m I2C_PROT 10  OUTBIT_CLR 0x14
# LED 0 aus
sudo am_rpi_advaboard_tool -m I2C_PROT 10  OUTBIT_SET 0x14

# LED 1 an
sudo am_rpi_advaboard_tool -m I2C_PROT 10  OUTBIT_CLR 0x15
# LED 1 aus
sudo am_rpi_advaboard_tool -m I2C_PROT 10  OUTBIT_SET 0x15

# LED 2 an
sudo am_rpi_advaboard_tool -m I2C_PROT 10  OUTBIT_CLR 0x16
# LED 2 aus
sudo am_rpi_advaboard_tool -m I2C_PROT 10  OUTBIT_SET 0x16

# LED 3 an
sudo am_rpi_advaboard_tool -m I2C_PROT 10  OUTBIT_CLR 0x17
# LED 3 aus
sudo am_rpi_advaboard_tool -m I2C_PROT 10  OUTBIT_SET 0x17


# Helligkeit per PWM einstellen
# - LED 0 aus, PWM-Modus an
sudo am_rpi_advaboard_tool -m I2C_PROT 10  OUTBIT_SET 0x14
sudo am_rpi_advaboard_tool -m I2C_PROT 10  ANALOG_CONTROL 2 0x02

# - LED-Helligkeit (0xFF=min. Helligkeit, 0x00=max. Helligkeit)
sudo am_rpi_advaboard_tool -m I2C_PROT 10  ANALOGOUT_WRITE 1 0xF0
sudo am_rpi_advaboard_tool -m I2C_PROT 10  ANALOGOUT_WRITE 1 0xC0
sudo am_rpi_advaboard_tool -m I2C_PROT 10  ANALOGOUT_WRITE 1 0x80
sudo am_rpi_advaboard_tool -m I2C_PROT 10  ANALOGOUT_WRITE 1 0x00

# - PWM-Modus aus
sudo am_rpi_advaboard_tool -m I2C_PROT 10  ANALOG_CONTROL 2 0x01

per Java:

// LED 0 an
advaboard.i2c_prot(10, AM_CMD.OUTBIT_CLR, I(0x14));
// LED 0 aus
advaboard.i2c_prot(10, AM_CMD.OUTBIT_SET, I(0x14));

// LED 1 an
advaboard.i2c_prot(10, AM_CMD.OUTBIT_CLR, I(0x15));
// LED 1 aus
advaboard.i2c_prot(10, AM_CMD.OUTBIT_SET, I(0x15));

// LED 2 an
advaboard.i2c_prot(10, AM_CMD.OUTBIT_CLR, I(0x16));
// LED 2 aus
advaboard.i2c_prot(10, AM_CMD.OUTBIT_SET, I(0x16));

// LED 3 an
advaboard.i2c_prot(10, AM_CMD.OUTBIT_CLR, I(0x17));
// LED 3 aus
advaboard.i2c_prot(10, AM_CMD.OUTBIT_SET, I(0x17));


// LED 0 Helligkeit
// Helligkeit per PWM einstellen
// - LED 0 aus, PWM-Modus an
advaboard.i2c_prot(10, AM_CMD.OUTBIT_SET, I(0x14));
advaboard.i2c_prot(10, AM_CMD.ANALOG_CONTROL, I(2, 0x02));

// - LED-Helligkeit (0xFF=min. Helligkeit, 0x00=max. Helligkeit)
advaboard.i2c_prot(10, AM_CMD.ANALOGOUT_WRITE, I(1, 0xF0));
advaboard.i2c_prot(10, AM_CMD.ANALOGOUT_WRITE, I(1, 0xC0));
advaboard.i2c_prot(10, AM_CMD.ANALOGOUT_WRITE, I(1, 0x80));
advaboard.i2c_prot(10, AM_CMD.ANALOGOUT_WRITE, I(1, 0x00));

// - PWM-Modus aus
advaboard.i2c_prot(10, AM_CMD.ANALOG_CONTROL, I(2, 0x01));

per Python:

# LED 0 an
advaboard.i2c_prot(10, AM_CMD.OUTBIT_CLR, (0x14,))
# LED 0 aus
advaboard.i2c_prot(10, AM_CMD.OUTBIT_SET, (0x14,))

# LED 1 an
advaboard.i2c_prot(10, AM_CMD.OUTBIT_CLR, (0x15,))
# LED 1 aus
advaboard.i2c_prot(10, AM_CMD.OUTBIT_SET, (0x15,))

# LED 2 an
advaboard.i2c_prot(10, AM_CMD.OUTBIT_CLR, (0x16,))
# LED 2 aus
advaboard.i2c_prot(10, AM_CMD.OUTBIT_SET, (0x16,))

# LED 3 an
advaboard.i2c_prot(10, AM_CMD.OUTBIT_CLR, (0x17,))
# LED 3 aus
advaboard.i2c_prot(10, AM_CMD.OUTBIT_SET, (0x17,))


# LED 0 Helligkeit
# Helligkeit per PWM einstellen
# - LED 0 aus, PWM-Modus an
advaboard.i2c_prot(10, AM_CMD.OUTBIT_SET, (0x14,))
advaboard.i2c_prot(10, AM_CMD.ANALOG_CONTROL, (2, 0x02))

# - LED-Helligkeit (0xFF=min. Helligkeit, 0x00=max. Helligkeit)
advaboard.i2c_prot(10, AM_CMD.ANALOGOUT_WRITE, (1, 0xF0))
advaboard.i2c_prot(10, AM_CMD.ANALOGOUT_WRITE, (1, 0xC0))
advaboard.i2c_prot(10, AM_CMD.ANALOGOUT_WRITE, (1, 0x80))
advaboard.i2c_prot(10, AM_CMD.ANALOGOUT_WRITE, (1, 0x00))

# - PWM-Modus aus
advaboard.i2c_prot(10, AM_CMD.ANALOG_CONTROL, (2, 0x01))

Piezoschallwandler

Zusätzlich zur Tastatur, den Potis und LEDs ist ein kleiner Piezoschallwandler integriert. Per I2C kann dieser ein-/ausgeschaltet, sowie dessen Frequenz eingestellt werden.

Standardmäßig können Frequenzen zwischen ca. 50 Hz und 12 kHz eingestellt werden. Zu beachten ist, dass bei Piezoschallwandlern die Lautstärke bauartbedingt stark frequenzabhängig ist.

Kommunikation per am_rpi_advaboard_tool:

# aktivieren
sudo am_rpi_advaboard_tool -m I2C_PROT 10  ANALOG_CONTROL 1 0x40

# Frequenz einstellen, z.B. ca. 1 kHz
sudo am_rpi_advaboard_tool -m I2C_PROT 10  ANALOGOUT_WRITEN 12

# deaktivieren
sudo am_rpi_advaboard_tool -m I2C_PROT 10  ANALOG_CONTROL 1 0x10

per Java:

// aktivieren
advaboard.i2c_prot(10, AM_CMD.ANALOG_CONTROL, I(1, 0x40));

// Frequenz einstellen, z.B. ca. 1 kHz
advaboard.i2c_prot(10, AM_CMD.ANALOGOUT_WRITEN, I(12));

// deaktivieren
advaboard.i2c_prot(10, AM_CMD.ANALOG_CONTROL, I(1, 0x10));

per Python:

# aktivieren
advaboard.i2c_prot(10, AM_CMD.ANALOG_CONTROL, (1, 0x40))

# Frequenz einstellen, z.B. ca. 1 kHz
advaboard.i2c_prot(10, AM_CMD.ANALOGOUT_WRITEN, (12,))

# deaktivieren
advaboard.i2c_prot(10, AM_CMD.ANALOG_CONTROL, (1, 0x10))

detaillierte Beschreibung

Der folgende Abschnitt beschreibt die I2C-Erweiterungsplatine, an die die Tastatur, die Potis, die LEDs und der Piezoschallwandler angeschlossen sind, im Detail. Auf alle Funktionen der Platine kann über unser Advamation RS-485-/I2C-Protokoll zugegriffen werden.

I2C-Schnittstelle:
  • I2C-Adresse: 10 / 0x0a

  • Protokoll: Advamation RS-485-/I2C-Protokoll, inkl. CRC/PEC

  • Unterstützte Kommandos:

    • Kommunikation:

      0x01 Adresse lesen
      0x02 Adresse setzen
      0x03 Adresse ins EEPROM sichern
      0x04 Scan
      0x05 bei UIN/Nummer: Adresse lesen
      0x06 bei UIN/Nummer: Adresse setzen
      0x07 UIN lesen
      0x08 Kommunikations-Parameter lesen
      0x09 Kommunikations-Parameter setzen
    • Geräte-Information:

      0x10 Seriennummer lesen
      0x11 Identifikation lesen
      0x12 Geräteinformationen lesen
    • EEPROM:

      0x18 EEPROM-Status lesen
      0x19 EEPROM-Größe lesen
      0x1A EEPROM lesen
      0x1B EEPROM schreiben
      0x1C Einstellungen aus EEPROM laden
      0x1D Einstellungen ins EEPROM sichern
    • Gerät/Diagnose:

      0x20 Echo
      0x28 Reset
      0x29 Handler-Flags lesen
      0x2A Handler-Flags löschen
      0x2B Handler auslösen
    • Digital-I/O:

      0x30 Eingang lesen, 1 Byte
      0x31 Eingang lesen, 2 Bytes
      0x32 Eingang lesen, 4 Bytes
      0x33 Eingang lesen, 8 Bytes
      0x34 Eingang lesen, Offset + N
      0x35 Ausgang zurücklesen, 1 Byte
      0x36 Ausgang zurücklesen, 2 Bytes
      0x37 Ausgang zurücklesen, 4 Bytes
      0x38 Ausgang zurücklesen, 8 Bytes
      0x39 Ausgang zurücklesen, Offset + N
      0x3A Ausgang schreiben
      0x3B Ausgang schreiben, Offset + N
      0x3C Ausgangs-Bit setzen
      0x3D Ausgangs-Bit löschen
      0x3E I/O Update
      0x40 Konfiguration lesen
      0x41 Konfiguration schreiben
      0x42 Status lesen
      0x43 Control schreiben
      0x44 Handler: Control lesen
      0x45 Handler: Control schreiben
      0x46 Handler: Ausgang lesen
      0x47 Handler: Ausgang schreiben
      0x48 Event: Konfiguration lesen
      0x49 Event: Konfiguration schreiben
    • Analog-I/O:

      0x50 Eingang lesen, 1 Byte
      0x51 Eingang lesen, 2 Bytes
      0x52 Eingang lesen, 4 Bytes
      0x53 Eingang lesen, 8 Bytes
      0x54 Eingang lesen, Offset + N
      0x55 Ausgang (zurück)lesen, 1 Byte
      0x56 Ausgang (zurück)lesen, 2 Bytes
      0x57 Ausgang (zurück)lesen, 4 Bytes
      0x58 Ausgang (zurück)lesen, 8 Bytes
      0x59 Ausgang (zurück)lesen, Offset + N
      0x5A Ausgang schreiben
      0x5B Ausgang schreiben, Offset + N
      0x60 Konfiguration lesen
      0x61 Konfiguration schreiben
      0x62 Status lesen
      0x63 Control schreiben
      0x64 Handler: Control lesen
      0x65 Handler: Control schreiben
      0x66 Handler: Ausgang lesen
      0x67 Handler: Ausgang schreiben
      0x68 Event: Konfiguration lesen
      0x69 Event: Konfiguration schreiben
Kommunikations-Parameter:
Offset Länge Bedeutung
0 1 (reserved)
1 1
min. I2C-Clock-Stretching-Zeit in 1.306ms
(Standardeinstellung: 08h für ca. 10.5ms / >= 95.7 kHz)
Digital-I/Os:
Eingang Ausgang Bedeutung
0.0 0.0 (nicht verwendet)
0.1 0.1 (nicht verwendet)
0.2 0.2 (nicht verwendet)
0.3 0.3 (nicht verwendet)
0.4 0.4 (nicht verwendet)
0.5 0.5 Tastatur, Spalte 3
0.6 0.6 Tastatur, Spalte 2
0.7 0.7 Tastatur, Spalte 1
1.0 1.0 Tastatur, Zeile 1
1.1 1.1 Tastatur, Zeile 2
1.2 1.2 Tastatur, Zeile 3
1.3 1.3 Tastatur, Zeile 4
1.4 1.4 LED 0 (0=an, 1=aus bzw. PWM)
1.5 1.5 LED 1 (0=an, 1=aus bzw. PWM)
1.6 1.6 LED 2 (0=an, 1=aus bzw. PWM)
1.7 1.7 LED 3 (0=an, 1=aus bzw. PWM)
2.0 I2C-Interrupt (0=low/interrupt, 1=high/kein Interrupt)
2.6..0
Tastatur-Scancode der letzten gedrückten Taste (1..12) oder 0
(falls Tastatur-Scan aktiviert)
2.7
1=Tastatur-Taste gedrückt, 0=keine Taste gedrückt
(falls Tastenüberwachung oder Tastatur-Scan aktiviert)

Alle Digital-I/Os sind Open-Collector-I/Os mit einem schwachen Pullup-Widerstand. Um einen I/O-Pin als Eingang zu verwenden, muss der entsprechende Ausgang vorher auf 1 (high) gesetzt werden.

Tastatur-Scancodes:

Scancode Taste
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 *
11 0
12 #
Digital-I/O-Konfiguration:

Mit der Digital-I/O-Konfiguration kann festgelegt werden, welche I/Os für den Tastatur-Scan verwendet werden sollen. Folgende Werte sind jeweils gültig:

0 / 0b00: nicht für Tastatur-Scan verwendet
1 / 0b01: Tastatur-Scan-Eingang
3 / 0b11: Tastatur-Scan-Ausgang
Bits Bedeutung Standardeinstellung
0.1..0 I/O 0.0-Konfiguration 0
0.3..2 I/O 0.1-Konfiguration 0
0.5..4 I/O 0.2-Konfiguration 0
0.7..6 I/O 0.3-Konfiguration 0
1.1..0 I/O 0.4-Konfiguration 0
1.3..2 I/O 0.5-Konfiguration 3 (Tastaturscan-Ausgang)
1.5..4 I/O 0.6-Konfiguration 3 (Tastaturscan-Ausgang)
1.7..6 I/O 0.7-Konfiguration 3 (Tastaturscan-Ausgang)
2.1..0 I/O 1.0-Konfiguration 1 (Tastaturscan-Eingang)
2.3..2 I/O 1.1-Konfiguration 1 (Tastaturscan-Eingang)
2.5..4 I/O 1.2-Konfiguration 1 (Tastaturscan-Eingang)
2.7..6 I/O 1.3-Konfiguration 1 (Tastaturscan-Eingang)
3.1..0 I/O 1.4-Konfiguration 0
3.3..2 I/O 1.5-Konfiguration 0
3.5..4 I/O 1.6-Konfiguration 0
3.7..6 I/O 1.7-Konfiguration 0

Die Konfiguration für die im AdvaBoard-Kit eingebaute Tastatur lautet somit:

0x00 0xfc 0x55 0x00

Diese Konfiguration ist standardmäßig eingestellt; wurde sie verändert, so kann sie folgendermaßen wiederhergestellt werden:

# Konfiguration schreiben
sudo am_rpi_advaboard_tool -m I2C_PROT 10  IO_CFG_WRITE 0  0x00 0b11111100 0b01010101 0x00
# Konfiguration ins EEPROM sichern
sudo am_rpi_advaboard_tool -m I2C_PROT 10  EEPROM_CFG_STORE 3
Digital-I/O-Status:
Bits Bedeutung
0.0 Tastenüberwachung: 1=aktiviert, 0=deaktiviert
0.1 Tastatur-Scan: 1=aktiviert, 0=deaktiviert
0.2
0.3
0.4 Event 0: 1=aktiviert, 0=deaktiviert
0.5 Event 1: 1=aktiviert, 0=deaktiviert
0.6
0.7

Die Tastenüberwachung testet periodisch, ob eine Taste gedrückt wurde, und schreibt das Ergebnis in den Digital-Eingang 2.7. Der Tastatur-Scan scannt die Tastatur periodisch, und schreibt die Information, ob eine Taste gerdrückt ist sowie den Scancode in den Digital-Eingang 2.x.

Digital-Control:
Bits Bedeutung
0.0 1=Tastenüberwachung deaktivieren
0.1 1=Tastenüberwachung aktivieren
0.2 1=Tastatur-Scan deaktivieren
0.3 1=Tastatur-Scan aktivieren
0.4
0.5
0.6
0.7
1.0 1=Event 0 deaktivieren
1.1 1=Event 0 aktivieren
1.2 1=Event 1 deaktivieren
1.3 1=Event 1 aktivieren
1.4
1.5
1.6
1.7
Digital I/O-Events/-Handler:
  • 3 Handler (Reset-Handler + 2 nutzerspezifische Handler)
  • Handler-Ausgang: BITMASK0 OUTPUT0 BITMASK1 OUTPUT1 BITMASK2 OUTPUT2
  • Handler-Control: CONTROL0 CONTROL1
  • 2 Events: BITMASK0 INPUT0 BITMASK1 INPUT1 BITMASK2 INPUT2
Analog-I/O:

Analog-Eingänge:

Bytes Bedeutung
1..0 AIN0: rotes Poti
3..2 AIN1: blaues Poti
5..4 AIN2: (nicht verwendet)
7..6 AIN3: Temperatur (unkalibriert)
9..8 AIN4: Versorgungsspannung

Der Wertebereich der Analog-Eingänge beträgt 0..0xFFC0 bei einer Auflösung von 10 Bit.

Analog-Ausgänge:

Bytes Bedeutung
0 Piezo-Beeper-Frequenz (0..255, 0 entspricht hierbei 256)
1 LED 0 PWM, 0..0xFF
2 LED 1 PWM, 0..0xFF
3 LED 2 PWM, 0..0xFF
4 LED 3 PWM, 0..0xFF

Die Frequenz des Pizeo-Beepers berechnet sich folgendermaßen:

Frequenz = PWM-Takt / 2 / 1..256

Beim standardmäßig eingestellten PWM-Takt von 25.5 kHz ergibt sich somit:

Frequenz = 12.75 kHz / 1..256

Die LED-Helligkeit kann per PWM eingestellt werden, wobei ein PWM von 0xFF der minimalen Helligkeit, und ein PWM von 0x00 der maximalen Helligkeit entspricht.

Analog-Konfiguration:

Über die Analog-Konfiguration kann der PWM-Takt eingestellt werden:

PWM Takt = (24.5 MHz / Vorteiler / (Teiler+1)) ± 2%

Ein 8-Bit PWM-Zyklus dauert 256 Takte, ein 16-Bit PWM-Zyklus 65536 Takte.

Bytes Bedeutung
1 PWM-Frequenz-Vorteiler: 0x00=1, 0x01=4, 0x02=12, 0x03=48
0 PWM-Frequenz-Teiler, 0x00..0xFF

Die Standard-Einstellung ist:

Vorteiler: 0x01: 4
Teiler:    0xef: 240
PWM-Takt:  25.5 kHz (± 2%)
Analog-Status:
Bits Bedeutung
0.0 AIN0 Status: 0=aus, 1=an
0.1 AIN0 Modus: 0=aus bzw. nur 1 Mal einlesen, 1=kontinuierlich einlesen
0.2 AIN0 Gültigkeit: 0=ungültig, 1=gültig
0.3
0.4 AIN1 Status: 0=aus 1=an
0.5 AIN1 Modus: 0=aus bzw. nur 1 Mal einlesen, 1=kontinuierlich einlesen
0.6 AIN1 Gültigkeit: 0=ungültig, 1=gültig
0.7
1.0 AIN2 Status: 0=aus 1=an
1.1 AIN2 Modus: 0=aus bzw. nur 1 Mal einlesen, 1=kontinuierlich einlesen
1.2 AIN2 Gültigkeit: 0=ungültig, 1=gültig
1.3
1.4 AIN3 Status: 0=aus 1=an
1.5 AIN3 Modus: 0=aus bzw. nur 1 Mal einlesen, 1=kontinuierlich einlesen
1.6 AIN3 Gültigkeit: 0=ungültig, 1=gültig
1.7
2.0 AIN4 Status: 0=aus 1=an
2.1 AIN4 Modus: 0=aus bzw. nur 1 Mal einlesen, 1=kontinuierlich einlesen
2.2 AIN4 Gültigkeit: 0=ungültig, 1=gültig
2.3
2.7..4 Piezo-Beeper PWM-Modus
3.3..0 LED 0 PWM-Modus
4.3..0 LED 1 PWM-Modus
5.3..0 LED 2 PWM-Modus
6.3..0 LED 3 PWM-Modus

gültige PWM-Modi:

0: PWM deaktiviert
1: PWM8 / 8-Bit PWM
2: PWM16 / 16-Bit PWM
3: FREQ / Rechtechfrequenz-Ausgabe
Analog-Control:
Bits Bedeutung
0.1..0 ADC0: 1=stop, 2=1 Mal einlesen, 3=kontinuierlich einlesen
0.3..2 ADC1: 1=stop, 2=1 Mal einlesen, 3=kontinuierlich einlesen
0.5..4 ADC2: 1=stop, 2=1 Mal einlesen, 3=kontinuierlich einlesen
0.7..6 ADC3: 1=stop, 2=1 Mal einlesen, 3=kontinuierlich einlesen
1.1..0 ADC4: 1=stop, 2=1 Mal einlesen, 3=kontinuierlich einlesen
1.7..4 Piezo-Beeper PWM: 1=deaktivieren, 2=PWM8, 3=PWM16, 4=Frequenzausgabe
2.3..0 LED 0 PWM: 1=deaktivieren, 2=8-Bit PWM, 3=16-Bit PWM, 4=Frequenzausgabe
3.3..0 LED 1 PWM: 1=deaktivieren, 2=8-Bit PWM, 3=16-Bit PWM, 4=Frequenzausgabe
4.3..0 LED 2 PWM: 1=deaktivieren, 2=8-Bit PWM, 3=16-Bit PWM, 4=Frequenzausgabe
5.3..0 LED 3 PWM: 1=deaktivieren, 2=8-Bit PWM, 3=16-Bit PWM, 4=Frequenzausgabe
[1]siehe z.B. Wikipedia-Eintrag zu Tastaturen

Temperatur-/Helligkeitssensor

Optional können im AdvaBoard-Kit ein Temperatur- und ein Helligkeitssensor eingebaut sein, die per I2C angebunden sind.

Temperatursensor:

Auslesen per am_rpi_advaboard_tool::

sudo am_rpi_advaboard_tool -m I2C 2 0x48 0x00
Helligkeitssensor:
Typ: Avago Technologies APDS-9300-020
I2C-Adresse: 0x29

Auslesen per am_rpi_advaboard_tool::

# Chip-ID lesen
sudo am_rpi_advaboard_tool -m I2C 1 0x29 0x8A
# Einschalten/Aktivieren
sudo am_rpi_advaboard_tool -m I2C 1 0x29 0x80 0x03
# Einschalt-Status lesen
sudo am_rpi_advaboard_tool -m I2C 1 0x29 0x80
# Werte lesen
sudo am_rpi_advaboard_tool -m I2C 4 0x29 0x8C

Erweiterungen

Sollten die Funktionen bzw. I/Os des AdvaBoard-Kits für eine Anwendung nicht ausreichen, so kann das AdvaBoard-Kit mit Erweiterungsplatinen ausgebaut werden. Insgesamt ist Platz für bis zu 5 Erweiterungsplatinen (1* an der Rückwand unter dem Display, 4* rechts unten, Platinenmaß ca. 42 × 47mm) vorgesehen.

Die Erweiterungsplatinen werden üblicherweise per E-SPI, I2C oder RS-485 an das AdvaBoard RPi1 angebunden, und besitzen meist einen 20-poligen Wannenstecker oder einen 15-poligen D-Sub-Steckverbinder als I/O-Steckverbinder.

Informationen zu den verfügbaren und geplanten Erweiterungen finden Sie im Abschnitt Zubehör / Erweiterungen.