Jednoduchá meteostanica s BMP180: Rozdiel medzi revíziami
Zo stránky SensorWiki
Bez shrnutí editace |
|||
Riadok 21: | Riadok 21: | ||
== Analýza == | == Analýza == | ||
Popis komunikačnej zbernice | Popis komunikačnej zbernice: | ||
Zapojenie vývodov senzora | |||
Zapojenie vývodov senzora: | |||
[[Súbor:senzor_bmp180_pins.jpg|300px]] | [[Súbor:senzor_bmp180_pins.jpg|300px]] | ||
Priebehy signálov | Priebehy signálov: | ||
== Popis riešenia == | == Popis riešenia == |
Verzia z 14:52, 21. máj 2016
Autori: | Martin Valášek, Tomáš Timoranský | |
Študijný odbor: | Aplikovaná mechatronika a elektromobilita | 1. Ing. (2016) |
Zadanie
Senzor BMP180 vyrába firma Bosch, ide o nástupcu veľmi obľúbeného senzora BMP085. Senzor disponuje meraním atmosferického absolútného tlaku v rozsahu 300 až 1100 hPa (9000 až -500m nadmorskej výšky). Pre kompenzáciu tepelných vplyvov na meranie atmosferického tlaku, má senzor integrovaný teplomer (merací rozsah -40 až +85°C), ktorý je taktiež možno vyčítať. Komunikácia je digitalná prostredníctvom I2C zbernice.
Literatúra:
Datasheed BMP180
Analýza
Popis komunikačnej zbernice:
Priebehy signálov:
Popis riešenia
Sem opíšete ako konkrétne ste problém vyriešili. Začnite popisom pripojenia k procesoru (nezabudnite na schému zapojenia!) a zdôraznite ktoré jeho periférie ste pritom využili.
Algoritmus a program
Uveďte stručný popis algoritmu, v akom jazyku a verzii vývojového prostredia ste ho vytvorili. Je vhodné nakresliť aspoň hrubú štruktúru programu napríklad vo forme vývojového diagramu. Rozsiahly program pre lepšiu prehľadnosť rozdeľte do viacerých súborov.
Vyberte podstatné časti zdrojového kódu, použite na to prostredie source:
#!/usr/bin/python
import Adafruit_BMP.BMP085 as BMP085
import time
import serial
port = serial.Serial("/dev/ttyAMA0", baudrate=9600)
sensor = BMP085.BMP085()
while 1:
temp = sensor.read_temperature()*10
pressure = sensor.read_pressure()/10.0
print 'Temp = {0:0.2f} *C'.format(temp)
print 'Pressure = {0:0.2f} Pa'.format(pressure)
temp_h = int(temp/255)
temp_l = int(temp%255)
press_h = int(pressure/255)
press_l = int(pressure%255)
port.write("%s" % chr(temp_h) + chr(temp_l) + chr(press_h) + chr(press_l) + chr(255) )
time.sleep(1)
port.close
Zdrojový kód: serial.h a main.c
Overenie
Nezabudnite napísať čosi ako užívateľský návod. Z neho by malo byť jasné čo program robí, ako sa prejavuje a aké má užívateľské rozhranie (čo treba stlačiť, čo sa kde zobrazuje). Ak ste namerali nejaké signály, sem s nimi. Ak je výsledkom nejaký údaj na displeji, odfotografujte ho.
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.