Archiv der Kategorie: Tutorial

Arduino – Get started!

Gerade eben habe ich mein neues Spielzeug in Betrieb genommen. Ich bin seit ein paar Tagen Besitzer eines Arduino UNO R3. Die Entwicklungsumgebung Arduino 1.0.6 macht auf den ersten Blick einen ordentlichen Eindruck und bringt zahlreiche Code Examples mit, was für den Einstieg sehr gut ist.

Aber das beste ist natürlich, dass es die Software auch für den MAC gibt!

Und was macht man als erstes? Richtig! Eine Led zum leuchten bringen!

Benötigt wird:

  • Arduino
  • Taster (im Beispiel ein Öffner)
  • LED mit Vorwiderstand

Aufgabe:

Beim Betätigen des Tasters soll die LED leuchten!

Aufbau

Steckplatine

 

Code

Der Sketch sieht wie folgt aus:

/*
- Einfaches Projekt zur Darstellung des Setups der Ein- / Ausgänge
- Durch betätigen des Tasters wird eine LED eingeschalten
- ACHTUNG: Im Beispiel handelt es sich bei dem Taster um einen Öffner!
*/

//Variablendeklaration
int Button=1;
const int LED_1 = 12;
const int Btn = 13;

//Setupfunktion für die IO's
void setup()
{
pinMode(Btn, INPUT);
pinMode(LED_1, OUTPUT);
}

//Hauptfunktion
void loop()
{
Button = digitalRead(Btn);

if (Button == 0)
{
digitalWrite(LED_1, HIGH);
}

else
{
digitalWrite(LED_1, LOW);
}
}

 

 

Luftdrucksensor BMP085 am RaspberryPi B+

Dieses kleine Tutorial soll zeigen, wie man den Sensor BMP085 mit dem RaspberryPi B+ verheiratet. Folgende Werte können mit diesem später ausgewertet werden:

  • Barometrischer Luftdruck
  • Temperatur
  • Höhe

Vorerst geht es nur um die Inbetriebnahme des Sensors. Eine Verwendung in einem eigenem Projekt/Programm folgt später.

Das Datenblatt des Chips gibt es HIER.

 

Beschaltung

Der Sensor  wird über den I2C-Bus an den RaspberryPi angeschlossen. In diesem Beispiel speziell an den RaspberryPi B+. Das folgende Schema zeigt das Pinout des RPi B+ und die dazugehörigen Bezeichnungen der GPIO´s.

GPIO Expansion

Quelle: http://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/Raspberry-Pi-B-Plus-V1.2-Schematics.pdf

Es werden folgende Pin´s benutzt:

  • Pin 01 – 3,3VDC
  • Pin 03 – GPIO2 (SDA1)
  • Pin 05 – GPIO3 (SCL1)
  • Pin 39 – Ground

Der Sensor wird gemäß der Beschriftung auf der Platine an den RPi angeschlossen.

Steckplatine

Steckplatine

 

Schritt 1: I2C-Bus aktivieren

Zuerst müssen die zwei Kernelmodule i2c-bcm2708 und i2c-dev aktiviert werden. Das geschieht, in dem sie in die Datei /etc/modules eingetragen werden. Mit folgendem Kommando wird die Datei geöffnet:

sudo nano /etc/modules

 

Jetzt werden die beiden Zeilen hinzugefügt:

i2c-bcm2708
i2c-dev

 

Im Anschluss kann mit CTRL+O gespeichert, der Dateiname mit ENTER bestätigt und die Datei mit CTRL+X geschlossen werden.

Außerdem müssen zwei Blacklisteinträge in der Datei /etc/modprobe.d/raspi-blacklist.conf gelöscht oder auskommentiert werden. Also auch diese Datei öffnen

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

 

und die Beiden Einträge auskommentieren

#blacklist spi-bcm2708
#blacklist i2c-bcm2708

 

Weil der Sensor später mit Python angesprochen werden soll, werden gleich noch 2 Module installiert, welche die Arbeit mit dem I2C-Bus unter Python ermöglichen.

sudo apt-get install python-smbus i2c-tools

 

Jetzt muss der RPi neu gebootet werden!

Nach dem Reboot sollte das Kommando

sudo i2detect -y 1

 

folgende Ausgabe bringen

i2detect -y 1

Der Sensor ist nun erfolgreich mit dem RPi verbunden und kann verwendet werden.

 

Schritt 2: Testen des Sensors

Zum Testen des Sensors benutze ich die BMP Python Library von Adafruit und ein kleines Testtool. Zuerst wird die Library mit folgenden Kommandos installiert:

git clone https://github.com/adafruit/Adafruit_Python_BMP.git
cd Adafruit_Python_BMP
sudo python setup.py install

 

Im Anschluss wird das Testtool gestartet und sollte eine ähnliche Ausgabe bringen

cd examples
sudo python simpletest.py

 

simpletest.py

Inbetriebnahme des Kameramoduls – RaspiCam

Montage

Das Kameramodul wird über die CSI – Schnittstelle mit dem RaspberryPi verbunden. Dieser befindet sich zwischen dem Ethernet- und dem HDMI-Port. Um das Flachbandkabel des Kameramoduls anzuschließen, muss der schwarze Teil der CSI-Schnittstelle nach oben gezogen werden. Anschließend kann das Flachbandkabel mit der blauen Markierung in Richtung Ethernet-Port in den Steckverbinder geschoben werden. Zum Fixieren wird nun der schwarze Steckverbinder wieder nach unten gedrückt.

RaspiCam

Aktivierung und Inbetriebnahme

Nachdem das Kameramodul verbunden ist, kann der Raspberry eingeschalten werden. Das System sollte auf dem aktuellen Stand sein. Ein Upgrade des Systems macht man mit

[sourcecode language=“python“ wraplines=“false“ collapse=“false“]
sudo apt-get update
sudo apt-get upgrade
[/sourcecode]

Aktiviert wird das Modul im Konfigurationsassistent. Diesen ruft man mit

[sourcecode language=“python“ wraplines=“false“ collapse=“false“]
sudo raspi-config
[/sourcecode]

auf. Hier wählt man Punkt 5 „Enable Camera“ mit Hilfe der Pfeiltasten an und bestätigt mit Enter. Im darauffolgenden Fenster bewegt man den Cursor mit den Pfeiltasten auf Enabled und bestätigt wieder mit Enter. Das Kameramodul ist nun aktiviert. Den Assistenten verlässt man nun über Finish. Im Anschluss wird man gefragt, ob ein Reboot durchgeführt werden soll. Hier bestätigt man mit Ja.

Test des Kameramoduls

Um einen Test des Kameramoduls durchzuführen, kann folgender Befehl genutzt werden.

[sourcecode language=“python“ wraplines=“false“ collapse=“false“]
raspistill -o test.jpg
[/sourcecode]

Nun wird für 5 Sekunden das Bild des Kameramoduls angezeigt und anschließend wird ein Foto gemacht. Das Foto wird unter dem angegebenen Namen gespeichert. Der Zielort ist hier der Ort, an dem man sich im Terminal befindet.

Der Befehl kann wie folgt angepasst werden, um zum Beispiel das aufgenommene Foto auf dem Desktop zu speichern. „pi“ ist der Benutzer und muss ggf. noch angepasst werden.

[sourcecode language=“python“ wraplines=“false“ collapse=“false“]
raspistill -o /home/pi/Desktop/test.jpg
[/sourcecode]

Weitere Funktionen

Alle Funktionen kann man aus der RaspiCam Dokumentation entnehmen. Interessant für den Anfang könnten noch Video- und Zeitrafferaufnahmen sein.

Videoaufnahmen

Ein Video wird wie folgt aufgenommen

[sourcecode language=“python“ wraplines=“false“ collapse=“false“]
raspivid -o test.h264 -t 5000
[/sourcecode]

Der Speicherort kann wie bei der Fotoaufnahme auch hier angepasst werden. Die Dauer des Videos wird mit -t in Millisekunden angegeben. Für das Beispiel wären das 5000 ms (Entspricht 5 Sekunden).

Zeitrafferaufnahmen

Für eine Zeitrafferaufnahme nutzt man folgenden Befehl

[sourcecode language=“python“ wraplines=“false“ collapse=“false“]
raspistill -tl 1000 -t 20000 -o foto%04d.jpg
[/sourcecode]

Mit dem Zusatz -tl gibt man vor, wann ein Foto gemacht werden soll. In diesem Beispiel ist das alle 1000 ms (jede Sekunde).  Bei -t gibt man die Dauer des Zeitraffers an. In diesem Beispiel sind das 20000 ms (20 Sekunden). Auch hier kann nach -o wieder der Speicherort angepasst werden. Mit %04d definiert man, dass die Dateinamen der Einzelaufnahmen eine 4-stellige fortlaufende Nummerierung bekommen.

Inbetriebnahme der GPIO-Ports des RaspberryPi

Um die GPIO-Ports in Betrieb nehmen zu können werden folgende Pakete benötigt:

  • Python Entwicklungstools
  • Python GPIO Library

Die GPIO – Ports können auch ohne der Library benutzt werden. Allerdings macht sie die Arbeit viel komfortabler.

 

Schritt 1: Installation der Python Entwicklungstools

[sourcecode language=“python“ wraplines=“false“ collapse=“false“]
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-dev
[/sourcecode]

 

Schritt 2: Installation der Python GPIO Library

[sourcecode language=“python“ wraplines=“false“ collapse=“false“]
apt-get install python-rpi.gpio
[/sourcecode]

 

Schritt 3: Code

Der Code wird unter dem Dateinamen gpio.py gespeichert. Dieser kann natürlich angepasst werden.

[sourcecode language=“python“ wraplines=“false“ collapse=“false“]
#! /usr/bin/python

import time
import RPi.GPIO as GPIO

#Setup der GPIO-Ports
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)

#Definition der GPIO-Pins 3, 5, 7 als Ausgang
GPIO.setup(3, GPIO.OUT)
GPIO.setup(5, GPIO.OUT)
GPIO.setup(7, GPIO.OUT)

#Endlosschleife
while True:
#GPIO 3 auf HIGH setzen, 2 sec warten und auf LOW setzen
GPIO.output(3, GPIO.HIGH)
time.sleep(2)
GPIO.output(3, GPIO.LOW)

#GPIO 5 auf HIGH setzen, 2 sec warten und auf LOW setzen
GPIO.output(5, GPIO.HIGH)
time.sleep(2)
GPIO.output(5, GPIO.LOW)

#GPIO 7 auf HIGH setzen, 2 sec warten und auf LOW setzen
GPIO.output(7, GPIO.HIGH)
time.sleep(2)
GPIO.output(7, GPIO.LOW)

[/sourcecode]

 

Schritt 4: Script starten

Das Script wird über den Terminal gestartet.

ACHTUNG: Man muss sich im selben Ordner befinden, in dem auch das Script gespeichert ist. Am einfachsten kann man das sicherstellen, indem man den Ordner öffnet in dem sich das Script befindet und dann über

„Werkzeuge“ -> „Aktuellen Ordner im Terminal öffnen“

den Terminal startet und folgendes eingibt.

[sourcecode language=“python“ wraplines=“false“ collapse=“false“]
sudo python gpio.py
[/sourcecode]

Gestoppt werden kann das Script mit CTRL + C.

Um den Code zu testen kann man sich einen kleinen Tester mit LED´s aufbauen. Die LED´s sind wie folgt anzuschließen:

gpio

Die Spannung an den GPIO´s beträgt 3,3V. Die Vorwiderstände berechnen sich wie folgt.