Poté, co jsme si v minulém návodu pro Raspberry Pi vyzkoušeli ovládání LED diody pomocí tlačítka, tak se můžeme posunout na složitější modul. Pro ukázku, jak fungují knihovny s Pythonem, jsem si vybral senzor teploty a tlaku Bosch BMP180.

Raspberry Pi: I2C modul BMP180

Pro tento modul jste už mohli vidět náš návod pro Arduino. Dnes si tedy vyzkoušíme, jak se liší použití knihovny mezi Arduinem a Pythonem na Raspberry Pi.
Jako první krok tedy můžeme zapojit modul s Raspberry Pi. Pro zapojení nám budou stačit čtyři propojovací vodiče. Ty postupně zapojíme na piny podle obrázku níže, kdy zleva vidíme pin pro napájení 3,3 Voltu, dále I2C pin SCL, SDA a nakonec s jednou mezerou pin GND.

Raspberry Pi: I2C modul BMP180

Druhý krok bude spočívat v povolení I2C komunikace a otestování, zda Raspberry vidí I2C zařízení. Pro povolení komunikace po I2C si otevřeme nabídku programů, kde v kategorii „Preferences“ otevřeme aplikaci „Raspberry Pi Configuration“.

Raspberry Pi: I2C modul BMP180

V té se přepneme na záložku „Interfaces“, na které následně přepneme I2C protokol na možnost „Enabled“. A po potvrzení tlačítkem „OK“ můžeme skenovat zařízení připojená na I2C sběrnici.

Raspberry Pi: I2C modul BMP180

Pro skenování si otevřeme Terminal a zavoláme příkaz „i2cdetect -y 1“. Tímto příkazem požádáme Raspberry Pi o proskenování I2C portu 1.
Pro ukázku můžete níže vidět nejprve situaci, kdy není I2C komunikace povolená a je tedy vypsaná chybová hláška o neexistenci I2C zařízení.
Při druhém zavolání již proběhne tisk výsledku skenování, kdy vidíme, že bylo nalezeno zařízení s adresou 0x77. A pokud znáte adresu senzoru BMP180, tak víte, že je to náš připojený modul.

Raspberry Pi: I2C modul BMP180

A nyní se můžeme přesunout už na samotný program pro načtení dat ze senzoru BMP180. Pro zjednodušení práce, podobně jako na Arduinu, můžeme i s Pythonem používat již hotové knihovny, které stáhneme na Internetu.
Pro testování BMP180 jsem našel hotovou knihovnu, která je sice označena jako knihovna pro modul BMP085, ale tyto moduly mají stejný komunikační protokol, takže to pro nás není problém.
Pro stažení knihovny je zapotřebí otevřít Terminal a zadat tyto příkazy:

git clone https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git
cd Adafruit-Raspberry-Pi-Python-Code/
git checkout 9ff733d59242a02f7ccd0222001ce80f6090a978
cd Adafruit_BMP085

První příkaz nám stáhne z uvedeného GIT repozitáře balík knihoven od společnosti Adafruit.
Druhým příkazem se přepneme do uvedené složky z GITu a třetím příkazem provedeme stažení určité větve balíku, který obsahuje knihovnu (nejen) pro náš modul BMP.
Posledním příkazem se pak přepneme do složky se soubory pro modul BMP085. Zde se nachází soubory s knihovnou (Adafruit_BMP085.py a Adafruit_I2C.py) a dále dva ukázkové programy.
Já jsem využil pro otestování program Adafruit_BMP085_example.py, který je níže uveden s českými popisky.
Doporučuji tedy nyní otevřít z nabídky programů „Programming“ vývojové prostředí „Python 2 (IDLE)“. Je nutné použít verzi 2, protože v ní je napsaná použitá knihovna. Po otevření si otevřete program Adafruit_BMP085_example, který je v cestě:
„/home/pi/Adafruit-Raspberry-Pi-Python-Code/Adafruit_BMP085“.
Případně můžete otevřít ukázkový program z předchozího kroku otevřeného Terminálu pomocí příkazu „idle Adafruit_BMP085_example.py“.

Ukázkový program na svém začátku obsahuje připojení modulu BMP085 z knihovny Adafruit a následně inicializaci modulu „bmp“ z knihovny. Můžete si všimnout, že využíváme modul ve standardním módu, přičemž níže v komentářích máte uvedenou ukázku, jak využít také dalších módů.
Poté jsou uvedeny tři příkazy, které postupně díky použité knihovně provedou načtení teploty, tlaku a nadmořské výšky do jednotlivých proměnných. Pro získání přesnější nadmořské výšky je opět v komentáři uveden návod, kdy musíme do závorek zadat tlak u hladiny moře.
A na konci programu se nachází už jen výpis všech naměřených údajů.

#!/usr/bin/python

# Pripojeni modulu BMP085 z knihovny Adafruit
from Adafruit_BMP085 import BMP085

# Inicializace modulu BMP085 ve STANDARD modu
bmp = BMP085(0x77)

# Ostatni mody pro snizeni odberu nebo zvyseni presnosti
# bmp = BMP085(0x77, 0)  # ULTRALOWPOWER Mod
# bmp = BMP085(0x77, 1)  # STANDARD Mod
# bmp = BMP085(0x77, 2)  # HIRES Mod
# bmp = BMP085(0x77, 3)  # ULTRAHIRES Mod

# Nacteni teploty do promenne
teplota = bmp.readTemperature()

# Nacteni tlaku do promenne
tlak = bmp.readPressure()

# Vypocet nadmorske vysky s vychozi hodnotou tlaku
nadmVyska = bmp.readAltitude()

# Pro zvysenou presnost nadmorske vysky je nutne do zavorek
# zadat tlak u hladiny more - v ukazce 1023.5 hPa
# nadmVyska = bmp.readAltitude(102350)

# Tisteni udaju na obrazovku
print "Teplota: %.2f stC" % teplota
print "Tlak:    %.2f hPa" % (tlak / 100.0)
print "Nadmorska vyska:    %.2f m" % nadmVyska

Nyní tedy můžeme přejít ke spuštění. To můžete udělat buď pomocí tlačítka F5 nebo zavoláním v nabídce „Run-Run Module“. Nyní můžete vidět v konzoli Python Shell informaci o restartu skriptu a následně výpis z našeho programu. Ten v tomto případě obsahuje pouze jednorázový výpis, a tak nemusíme program nijak ukončovat.

Raspberry Pi: I2C modul BMP180

Jak vidíte, tak komunikovat s Arduino moduly pomocí Raspberry Pi je podle mého názoru jednoduché a díky Pythonu i poměrně přehledné. Rád bych Vás jen upozornil, že pokud budete chtít program někam přemístit, je nutné s ním zkopírovat i zdrojové soubory knihovny (Adafruit_BMP085.py a Adafruit_I2C.py) nebo jejich přeložené verze s příponou „.pyc“. Případně existují i další řešení využití knihoven, ke kterým se dostaneme zase někdy příště.

Zmíněné Raspberry Pi desky na eshopu:

Raspberry Pi 3 B:
https://dratek.cz/arduino/1385-raspberry-pi-3-model-b-quad-core-1-2-ghz-64bit-cpu-1gb-ram-wifi-bluetooth-4-1-1473147122.html

Raspberry Pi 3 B+:
https://dratek.cz/arduino/3067-raspberry-pi-3-model-b-64-bit-1gb-ram.html

Raspberry Pi Zero:
https://dratek.cz/arduino/3106-raspberry-pi-zero-h.html

FB tw

Další podobné články