Raspberry PI: GPIOs mittels I2C Port Expander (MCP23017) erweitern

2018-04-11 von admin

Mit dem Chip MCP23017 ist es sehr einfach möglich, eine Porterweiterung (Port Expander) des Raspberry Pi vorzunehmen. Dafür wird der I2C-Bus (Inter Integrated Circuit) des Raspberry Pi verwendet, um mit dem Baustein MCP23017 zu kommunizieren.

 

Setup

Komponenten Beschreibung
Raspberry PI Raspberry Pi 2 Model B v1.1
Betriebssystem Raspbian Stretch
Chip MCP23017
Datenblatt microchip.com/wwwproducts/en/MCP23017 (Documents)
Software fritzing.org

 

Vorbereitung

Vor dem Einsatz sollte das System des Raspberry Pi aktualisiert werden. Dafür die folgenden Befehle eingeben:

apt-get update
apt-get upgrade

Daraufhin die Verwendung von I2C in der Datei „/boot/config.txt“ aktivieren (Zeile einfügen oder auskommentieren).

dtparam=i2c_arm=on

Als nächstes in der Datei „/etc/modules“ zwei Module einfügen.

i2c-dev
i2c-bcm2708

Bei neueren Pi Versionen müssen die Module noch aus der Blacklist Datei entfernt werden:

sudo vi /etc/modprobe.d/raspi-blacklist.conf

Vor den beiden Einträgen eine Raute (#) setzen.

#blacklist spi-bcm2708
#blacklist i2c-bcm2708

 

Damit der I2C Bus angesprochen werden kann, folgende Pakete installieren:

sudo apt-get install python-smbus i2c-tools

Anschließend den Pi neu starten.

 

Verkabeln

Der MCP23017 besitzt den folgenden Aufbau, wie auf dem Bild ersichtlich. Weitere Information können dem Datenblatt entnommen werden.

Um sich mit der Funktionsweise des MCP23017 vertraut zu machen, wurden 3 Dioden angeschlossen.

Folgende PINs sind belegt:

Pin (MCP23017) Pin (Pi)
Pin 9 (VDD) Pin 1 (Power 3.3V)
Pin 10 (VSS) Pin 30 (GND)
Pin 12 (SCL) Pin 5 (GPIO3 – SCL1)
Pin 3 (SDA) Pin 3 (GPIO3 – SDA1)
Pin 18 (Reset) Power 3.3V
Pin 15 (A0)
Pin 16 (A1)
Pin 17 (A2)
GND

 

Aufbau

 

Testen

Die Adresse einen angeschlossenen I2C-Bausteins kann mit dem Programm „i2cdetect“ geprüft werden:

sudo i2cdetect -y 1
Befehl Beschreibung
ic2detect Der Befehl aus i2c-tools zum “Auffinden” von I2C Peripherie
-y Parameter zum Ausführen ohne Nachfrage
1 Nummer des Busses; Die Nummer kann 1 oder 0 sein,
je nachdem, ob der I2C0- oder I2C1-Port verwendet wird.

 

Die Ausgabe des Befehls sollte sich so darstellen:

Werte schreiben

Nachdem die Baustein-Adresse ablesbar ist, kann jetzt mit dem Schreiben von Werten begonnen werden. Dafür müssen alle Pins der Bank A (GPA) als Ausgang deklariert werden:

i2cset -y 1 0x20 0x00 0x00

Es wird in jedes der 8 Bits eine “0” geschrieben. Eine 1 würde den entsprechenden Pin als Eingang deklarieren (Default). Daraufhin können einzelne Pins oder alle angesprochen werden. Danach können mit dem Befehl „i2cset“ einzelne Pins geschaltet werden.

i2cset -y 1 0x20 0x14 0xff
Befehl Beschreibung
i2cset Der Befehl aus i2c-tools zum “Setzen” von Werten
-y Parameter zum Ausführen ohne Nachfrage
 1 Bus Nummer
0x20 Bausteinadresse
0x14 Zeile (GPA = 0x14; GPB = 0x15)
0xff Der jeweilige Wert (Pin) in hexadezimal. In diesem Fall werden alle PINs gesetzt.

 

Folgende PINs können je Bank (GPA/GPB) belegt werden:

Pin
(Wert)
Hex
7 0x80
6 0x40
5 0x20
4 0x10
3 0x08
2 0x04
1 0x02
0 0x01
all 0xff
off 0x00

 

Wenn z.B. der PIN 0 und 2 gleichzeitig gesetzt werden soll, dann muss der Hex Wert 0x05 (Binär 101) vergeben werden.

0x01 + 0x04 = 0x05

 

Werte lesen

Zum Auslesen wir der Befehl „i2cget“ verwendet.

i2cget -y 1 0x20 0x14
Befehl Beschreibung
i2cget Der Befehl aus i2c-tools zum „Auslesen“von Werten
-y Parameter zum Ausführen ohne Nachfrage
1 Bus Nummer
0x20 Adresse des Bauteils
0x14 Auszulesende Zeile
Kategorie: IT Schlagwörter: , ,

Raspberry PI: Installation ohne Monitor (Raspbian Stretch)

2017-10-03 von admin

Vor einiger Zeit habe ich das Betriebssystem Raspbian auf einem Raspberry PI installiert. Nachdem sich die Schritte für eine Installationen etwas geändert haben, hier eine überarbeitete Anleitung. Für die Installation wurde folgende Version verwendet:

Raspbian Stretch with desktop
Image with desktop based on Debian Stretch
Version: September 2017
Release date: 2017-09-07
Kernel version: 4.9

 

Schritt 1: Download des Betriebssystems unter https://www.raspberrypi.org/downloads/

wget https://downloads.raspberrypi.org/raspbian_latest

Schritt 2: Formatieren der microSD-Karte mit FAT32. (Hinweis: Die Device Adresse kann von der hier angegebenen abweichen!) Alternativ kann hier auch die Software gparted verwendet werden.

sudo mkfs.vfat /dev/mmcblk0

Schritt 3 (Optional): Vergabe einer Volumenbezeichnung

mlabel -i /dev/mmcblk0 ::meinpi  # for fat32

Schritt 4: Entpacken des runtergeladenen Betriebssystems Images

unzip raspbian_latest.zip

Schritt 5: Image Datei auf die SD-Karte übertragen

dd bs=4M if=2017-09-07-raspbian-stretch.img of=/dev/mmcblk0 conv=fsync

Schritt 6: Danach erneut auf die SD-Karte zugreifen, da aus Sicherheitsgründen SSH per default deaktiviert ist. Für die Aktivierung des Remote-Zugriffs über SSH muss eine eine leere Datei mit dem Namen „ssh“ auf der Boot Partition abgelegt werden.

touch ssh

Schritt 7: Die SD-Karte in den Raspberry Pi schieben bis es leise klickt, dann ist die Karte eingerastet. Danach noch das Netzteil und das Netzwerkkabel anschließen.

Schritt 8: Um den Pi im Netzwerk zu finden, einfach mit nmap scannen oder im Router nachschauen, welche IP Adresse vergeben wurde.

nmap -sP 192.168.168.*

Schritt 9: Erste Anmeldung am Pi mit der gefundenen IP-Adresse.

ssh pi@192.168.168.21

Das default Passwort lautet: raspberry

Schritt 10: Ändern des default Passworts

passwd

Schritt 11: Update des Systems

sudo apt-get update
sudo apt-get dist-upgrade

Schritt 12: Konfiguration des Systems (Uhrzeit, Zeitzone, …)

sudo raspi-config

Schritt 13 (Optional): Remote Desktop installieren

sudo apt-get install xrdp

Der xrdp Prozess wir automatisch beim Starten des Raspberry Pi geladen. Der Status kann wie folgt abgefragt werden:

/etc/init.d/xrdp status

Schritt 14 (Optional): Daraufhin kann eine Remote Desktop Verbindung unter Ubuntu eingerichtet werden. Zu finden ist das Programm im Menü unter „Internet | Zugriff auf entfernte Arbeitsflächen“.

pi3

Nachdem eine Verbindung aufgebaut ist, kann der Desktop verwendet werden.

Kategorie: IT Schlagwörter: , ,

Raspberry PI: Datensicherung erstellen

2016-10-21 von admin

Die Erstellung eines Backups kann eine zeitlich aufwendige Neuinstallation vermeiden und ist deshalb nur zu empfehlen. ;)

Schritt 1: Datensicherung erstellen

dd if=/dev/mmcblk0 bs=1M | gzip -c > /tmp/$(date '+%Y-%m-%d')_image.img

Schritt 2: Datensicherung wiederherstellen

gunzip -c /tmp/2016-10-21_image.img | dd of=/dev/mmcblk0 bs=1M
sync

Alternativ für Windows

Zunächst muss das Tool Win32 Disk Imager in der Binary-Version heruntergeladen und entpackt werden.

win32diskimager

Daraufhin das Feld „Device“ auswählen und das Feld „Image File“ füllen. Jetzt lediglich die Option „Read“ oder „Write“ wählen.

Kategorie: IT Schlagwörter: ,