SlideShare a Scribd company logo
Textul si imaginile din acest document sunt licentiate
Attribution-NonCommercial-NoDerivs
CC BY-NC-ND
Codul sursa din acest document este licentiat
Public-Domain
Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website /
blog, printare, sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul
sursa din acest document poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara
nici un fel de limitari.
Raspberry PI si senzorul BMP085 Blue Edition
BMP085 Blue Edition este un senzor de inalta precizie pentru presiune
atmosferica si temperatura. Senzorul poate masura de la 300 la 1100 hPa cu o
precizie absoluta de pana la 0.03 hPa. Senzorul se alimenteaza cu o tensiune
cuprinsa intre 1.8 si 3.6V si se conecteaza direct la portul I2C al placii
Raspberry PI.
In acest tutorial vei programa placa Raspberry PI sa afiseze pe un shield
LCD 16x2 temperatura si presiunea atmosferica.
Vei avea nevoie de urmatoarele componente:
• O placa Raspberry PI.
• Un shield LCD 16x2 pentru Raspberry PI.
• Un senzor BMP085 Blue Edition.
• Fire pentru conexiuni.
• O sursa de alimentare pentru Raspberry (5V).
Cum conectez shield-ul LCD si senzorul BMP085 ?
1. Conecteaza shield-ul la portul GPIO al placii Raspberry PI. Shield-ul
poate fi infipt direct in portul GPIO sau il poti conecta prin
intermediul panglicii de tip cobbler.
2. Asigura-te ca bareta mama 2x13 este lipita pe shield, altfel nu poti
conecta senzorul de temperatura si presiune atmosferica. La
achizitionarea shield-ului poti opta pentru shield cu bareta lipita.
http://www.robofun.ro/forum
3. Conecteaza senzorul BMP085 conform tabelului urmator:
Raspberry PI 3.3V BMP085 pin VCC
Raspberry PI GND BMP085 pin GND
Raspberry PI pin SDA BMP085 pin SDA
Raspberry PI pin SCL BMP085 pin SCL
4. Foloseste aceasta schema a portului GPIO ca referinta:
http://www.robofun.ro/forum
Configurarea portului I2C.
Inainte de a instala programul este necesara configurarea portului I2C al
Raspberry PI.
1. Deschide urmatorul fisier prin comanda:
sudo nano /etc/modules
2. Adauga in acest fisier urmatoarele linii:
i2c-bcm2708
i2c-dev
http://www.robofun.ro/forum
3. Salveaza fisierul cu CTRL X si Y si restarteaza Raspberry PI prin:
reboot
4. Dupa restartare executa urmatoarele 2 comenzi:
sudo apt-get install python-smbus
sudo apt-get install i2c-tools
5. Deschide urmatorul fisier prin comanda:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
6. Comenteaza cele 2 linii ca in imagine:
blacklist spi-bcm2708
blacklist i2c-bcm2708
http://www.robofun.ro/forum
7. Asigura-te ca senzorul este detectat corect. Tasteaza urmatoarea
comanda:
sudo i2cdetect -y 1
8. Senzorul este detectat corect la adresa 0x77.
Programul senzorului.
Exista o librarie special construita pentru acest senzor. Instalarea este
structurata pe urmatorii pasi:
1. In primul pas vei creea un fisier. Acolo se vor regasi libraria si
programul senzorului.
sudo mkdir senzor_bmp085
2. Executa urmatoarea comanda:
http://www.robofun.ro/forum
sudo git clone https://github.com/adafruit/Adafruit-Raspberry-Pi-
Python-Code.git
3. Schimba locatia:
cd Adafruit-Raspberry-Pi-Python-Code
cd Adafruit_BMP085
4. Executa urmatoarea comanda:
http://www.robofun.ro/forum
sudo python Adafruit_BMP085_example.py
5. Acest program citeste datele senzorului si le afiseaza in terminal.
Urmeaza sa modifici acest program pentru ca datele sa fie afisate
pe shield-ul LCD.
Cum afisez temperatura si presiunea pe un LCD?
In continuare este listat codul sursa modificat. Copiaza-l si executa-l cu
python.
#!/usr/bin/python
from Adafruit_BMP085 import BMP085
import RPi.GPIO as GPIO
import time
LCD_RS = 22
LCD_E = 18
LCD_D4 = 16
LCD_D5 = 11
LCD_D6 = 12
LCD_D7 = 15
LCD_WIDTH = 16
LCD_CHR = True
LCD_CMD = False
LCD_LINE_1 = 0x80
LCD_LINE_2 = 0xC0
E_PULSE = 0.00005
E_DELAY = 0.00005
http://www.robofun.ro/forum
#
===================================================================
========
# Example Code
#
===================================================================
========
# Initialise the BMP085 and use STANDARD mode (default value)
# bmp = BMP085(0x77, debug=True)
def main():
lcd_init()
lcd_byte(LCD_LINE_1, LCD_CMD)
lcd_string("ROBOFUN.RO",2)
lcd_byte(LCD_LINE_2, LCD_CMD)
lcd_string("Raspberry PI",2)
time.sleep(5)
bmp = BMP085(0x77)
# To specify a different operating mode, uncomment one of the
following:
# bmp = BMP085(0x77, 0) # ULTRALOWPOWER Mode
# bmp = BMP085(0x77, 1) # STANDARD Mode
# bmp = BMP085(0x77, 2) # HIRES Mode
# bmp = BMP085(0x77, 3) # ULTRAHIRES Mode
while 1:
temp = bmp.readTemperature()
pressure = bmp.readPressure()
altitude = bmp.readAltitude()
http://www.robofun.ro/forum
print "Temperatura: %.2f C" % temp
print "Presiune: %.2f hPa" % (pressure / 100.0)
print "Altitudine: %.2f" % altitude
textLCDOne = "Temp:%s C" % temp
textLCDTwo = "Pres:%s hPa" % (pressure / 100.0)
lcd_byte(LCD_LINE_1, LCD_CMD)
lcd_string(textLCDOne,1)
lcd_byte(LCD_LINE_2, LCD_CMD)
lcd_string(textLCDTwo,1)
time.sleep(1)
def lcd_init():
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(LCD_E, GPIO.OUT)
GPIO.setup(LCD_RS, GPIO.OUT)
GPIO.setup(LCD_D4, GPIO.OUT)
GPIO.setup(LCD_D5, GPIO.OUT)
GPIO.setup(LCD_D6, GPIO.OUT)
GPIO.setup(LCD_D7, GPIO.OUT)
lcd_byte(0x33,LCD_CMD)
lcd_byte(0x32,LCD_CMD)
lcd_byte(0x28,LCD_CMD)
lcd_byte(0x0C,LCD_CMD)
lcd_byte(0x06,LCD_CMD)
lcd_byte(0x01,LCD_CMD)
def lcd_string(message,style):
# style=1 Left justified
# style=2 Centred
# style=3 Right justified
if style==1:
message = message.ljust(LCD_WIDTH," ")
elif style==2:
message = message.center(LCD_WIDTH," ")
elif style==3:
message = message.rjust(LCD_WIDTH," ")
http://www.robofun.ro/forum
for i in range(LCD_WIDTH):
lcd_byte(ord(message[i]),LCD_CHR)
def lcd_byte(bits, mode):
# Send byte to data pins
# bits = data
# mode = True for character
# False for command
GPIO.output(LCD_RS, mode) # RS
# High bits
GPIO.output(LCD_D4, False)
GPIO.output(LCD_D5, False)
GPIO.output(LCD_D6, False)
GPIO.output(LCD_D7, False)
if bits&0x10==0x10:
GPIO.output(LCD_D4, True)
if bits&0x20==0x20:
GPIO.output(LCD_D5, True)
if bits&0x40==0x40:
GPIO.output(LCD_D6, True)
if bits&0x80==0x80:
GPIO.output(LCD_D7, True)
# Toggle 'Enable' pin
time.sleep(E_DELAY)
GPIO.output(LCD_E, True)
time.sleep(E_PULSE)
GPIO.output(LCD_E, False)
time.sleep(E_DELAY)
# Low bits
GPIO.output(LCD_D4, False)
GPIO.output(LCD_D5, False)
GPIO.output(LCD_D6, False)
GPIO.output(LCD_D7, False)
if bits&0x01==0x01:
GPIO.output(LCD_D4, True)
if bits&0x02==0x02:
GPIO.output(LCD_D5, True)
if bits&0x04==0x04:
GPIO.output(LCD_D6, True)
if bits&0x08==0x08:
GPIO.output(LCD_D7, True)
http://www.robofun.ro/forum
# Toggle 'Enable' pin
time.sleep(E_DELAY)
GPIO.output(LCD_E, True)
time.sleep(E_PULSE)
GPIO.output(LCD_E, False)
time.sleep(E_DELAY)
if __name__ == '__main__':
main()
http://www.robofun.ro/forum

More Related Content

PDF
Adxl345 raspberry pi
PDF
Arduino alcoolmetru
PDF
Arduino matriceled8x8
PDF
Curs gratuitarduino lectia3-proiectesimple-1
PDF
Curs gratuitarduino lectia9-senzoriatmosferici
PDF
Arduino comparatorul intern
PDF
Curs gratuitarduino lectia10-lcd-uri
PDF
Arduino gsmgprs-shield-partea-a-2-a
Adxl345 raspberry pi
Arduino alcoolmetru
Arduino matriceled8x8
Curs gratuitarduino lectia3-proiectesimple-1
Curs gratuitarduino lectia9-senzoriatmosferici
Arduino comparatorul intern
Curs gratuitarduino lectia10-lcd-uri
Arduino gsmgprs-shield-partea-a-2-a

Similar to Raspberry pi bmp085blueedition (20)

PDF
Raspberry pi firmata - arduino
PDF
Arduino toraspberrypi firmata
PDF
Arduino multiplexarea le-durilor
PDF
Arduino wifi shield-drivermotoarel298
PDF
Arduino yala electronicabazatapecodsecret
PDF
Arduino pid
PDF
Arduino rtc
PDF
Curs gratuitarduino lectia1-arduinoblink
PDF
Arduino indicatoare cp-usiram
PDF
Arduino gyro stabilizator
PDF
Arduino comunicatie i2c
PDF
Arduino releemodio2
PDF
Arduino gsm gprs shield
PPT
Aiesec University 2012-arduino
PDF
Curs gratuitarduino lectia2-senzorianalogici
PDF
Voip criptat voip
PDF
Raspberry pi wirelesshotspot
DOCX
PDF
Raspberry piuln2803
PDF
Conector bluetoothmatesilver arduino-pc
Raspberry pi firmata - arduino
Arduino toraspberrypi firmata
Arduino multiplexarea le-durilor
Arduino wifi shield-drivermotoarel298
Arduino yala electronicabazatapecodsecret
Arduino pid
Arduino rtc
Curs gratuitarduino lectia1-arduinoblink
Arduino indicatoare cp-usiram
Arduino gyro stabilizator
Arduino comunicatie i2c
Arduino releemodio2
Arduino gsm gprs shield
Aiesec University 2012-arduino
Curs gratuitarduino lectia2-senzorianalogici
Voip criptat voip
Raspberry pi wirelesshotspot
Raspberry piuln2803
Conector bluetoothmatesilver arduino-pc
Ad

More from Iulius Bors (19)

PDF
Set prizecomandatedinarduino
PDF
Raspberry pi timelapse
PDF
Raspberry pi lcd-shield20x4
PDF
Programare in prolog_pentru_inteligenta_artificiala
PDF
Motoare pascupasarduinoeasydriver
PDF
Curs gratuitarduino lectia15-seismografcuexcel
PDF
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
PDF
Curs gratuitarduino lectia13-mousesitastatura
PDF
Curs gratuitarduino lectia12-conexiunewifi-googledocs
PDF
Curs gratuitarduino lectia11-muzicacuarduino
PDF
Curs gratuitarduino lectia8-comunicareethernet
PDF
Curs gratuitarduino lectia7-senzoridistanta
PDF
Curs gratuitarduino lectia6-senzoriforta
PDF
Curs gratuitarduino lectia5-accelerometre
PDF
Curs gratuitarduino lectia4-modalitati decomunicare
PDF
Cum instaleziapachesimysql peraspberrypi
PDF
Asamblare statie meteo
PDF
Arduino yun arduino-wifi-ethernet-linux
PDF
Arduino uno rfidid-12
Set prizecomandatedinarduino
Raspberry pi timelapse
Raspberry pi lcd-shield20x4
Programare in prolog_pentru_inteligenta_artificiala
Motoare pascupasarduinoeasydriver
Curs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia11-muzicacuarduino
Curs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia5-accelerometre
Curs gratuitarduino lectia4-modalitati decomunicare
Cum instaleziapachesimysql peraspberrypi
Asamblare statie meteo
Arduino yun arduino-wifi-ethernet-linux
Arduino uno rfidid-12
Ad

Raspberry pi bmp085blueedition

  • 1. Textul si imaginile din acest document sunt licentiate Attribution-NonCommercial-NoDerivs CC BY-NC-ND Codul sursa din acest document este licentiat Public-Domain Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website / blog, printare, sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul sursa din acest document poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara nici un fel de limitari.
  • 2. Raspberry PI si senzorul BMP085 Blue Edition BMP085 Blue Edition este un senzor de inalta precizie pentru presiune atmosferica si temperatura. Senzorul poate masura de la 300 la 1100 hPa cu o precizie absoluta de pana la 0.03 hPa. Senzorul se alimenteaza cu o tensiune cuprinsa intre 1.8 si 3.6V si se conecteaza direct la portul I2C al placii Raspberry PI. In acest tutorial vei programa placa Raspberry PI sa afiseze pe un shield LCD 16x2 temperatura si presiunea atmosferica. Vei avea nevoie de urmatoarele componente: • O placa Raspberry PI. • Un shield LCD 16x2 pentru Raspberry PI. • Un senzor BMP085 Blue Edition. • Fire pentru conexiuni. • O sursa de alimentare pentru Raspberry (5V). Cum conectez shield-ul LCD si senzorul BMP085 ? 1. Conecteaza shield-ul la portul GPIO al placii Raspberry PI. Shield-ul poate fi infipt direct in portul GPIO sau il poti conecta prin intermediul panglicii de tip cobbler. 2. Asigura-te ca bareta mama 2x13 este lipita pe shield, altfel nu poti conecta senzorul de temperatura si presiune atmosferica. La achizitionarea shield-ului poti opta pentru shield cu bareta lipita. http://www.robofun.ro/forum
  • 3. 3. Conecteaza senzorul BMP085 conform tabelului urmator: Raspberry PI 3.3V BMP085 pin VCC Raspberry PI GND BMP085 pin GND Raspberry PI pin SDA BMP085 pin SDA Raspberry PI pin SCL BMP085 pin SCL 4. Foloseste aceasta schema a portului GPIO ca referinta: http://www.robofun.ro/forum
  • 4. Configurarea portului I2C. Inainte de a instala programul este necesara configurarea portului I2C al Raspberry PI. 1. Deschide urmatorul fisier prin comanda: sudo nano /etc/modules 2. Adauga in acest fisier urmatoarele linii: i2c-bcm2708 i2c-dev http://www.robofun.ro/forum
  • 5. 3. Salveaza fisierul cu CTRL X si Y si restarteaza Raspberry PI prin: reboot 4. Dupa restartare executa urmatoarele 2 comenzi: sudo apt-get install python-smbus sudo apt-get install i2c-tools 5. Deschide urmatorul fisier prin comanda: sudo nano /etc/modprobe.d/raspi-blacklist.conf 6. Comenteaza cele 2 linii ca in imagine: blacklist spi-bcm2708 blacklist i2c-bcm2708 http://www.robofun.ro/forum
  • 6. 7. Asigura-te ca senzorul este detectat corect. Tasteaza urmatoarea comanda: sudo i2cdetect -y 1 8. Senzorul este detectat corect la adresa 0x77. Programul senzorului. Exista o librarie special construita pentru acest senzor. Instalarea este structurata pe urmatorii pasi: 1. In primul pas vei creea un fisier. Acolo se vor regasi libraria si programul senzorului. sudo mkdir senzor_bmp085 2. Executa urmatoarea comanda: http://www.robofun.ro/forum
  • 7. sudo git clone https://github.com/adafruit/Adafruit-Raspberry-Pi- Python-Code.git 3. Schimba locatia: cd Adafruit-Raspberry-Pi-Python-Code cd Adafruit_BMP085 4. Executa urmatoarea comanda: http://www.robofun.ro/forum
  • 8. sudo python Adafruit_BMP085_example.py 5. Acest program citeste datele senzorului si le afiseaza in terminal. Urmeaza sa modifici acest program pentru ca datele sa fie afisate pe shield-ul LCD. Cum afisez temperatura si presiunea pe un LCD? In continuare este listat codul sursa modificat. Copiaza-l si executa-l cu python. #!/usr/bin/python from Adafruit_BMP085 import BMP085 import RPi.GPIO as GPIO import time LCD_RS = 22 LCD_E = 18 LCD_D4 = 16 LCD_D5 = 11 LCD_D6 = 12 LCD_D7 = 15 LCD_WIDTH = 16 LCD_CHR = True LCD_CMD = False LCD_LINE_1 = 0x80 LCD_LINE_2 = 0xC0 E_PULSE = 0.00005 E_DELAY = 0.00005 http://www.robofun.ro/forum
  • 9. # =================================================================== ======== # Example Code # =================================================================== ======== # Initialise the BMP085 and use STANDARD mode (default value) # bmp = BMP085(0x77, debug=True) def main(): lcd_init() lcd_byte(LCD_LINE_1, LCD_CMD) lcd_string("ROBOFUN.RO",2) lcd_byte(LCD_LINE_2, LCD_CMD) lcd_string("Raspberry PI",2) time.sleep(5) bmp = BMP085(0x77) # To specify a different operating mode, uncomment one of the following: # bmp = BMP085(0x77, 0) # ULTRALOWPOWER Mode # bmp = BMP085(0x77, 1) # STANDARD Mode # bmp = BMP085(0x77, 2) # HIRES Mode # bmp = BMP085(0x77, 3) # ULTRAHIRES Mode while 1: temp = bmp.readTemperature() pressure = bmp.readPressure() altitude = bmp.readAltitude() http://www.robofun.ro/forum
  • 10. print "Temperatura: %.2f C" % temp print "Presiune: %.2f hPa" % (pressure / 100.0) print "Altitudine: %.2f" % altitude textLCDOne = "Temp:%s C" % temp textLCDTwo = "Pres:%s hPa" % (pressure / 100.0) lcd_byte(LCD_LINE_1, LCD_CMD) lcd_string(textLCDOne,1) lcd_byte(LCD_LINE_2, LCD_CMD) lcd_string(textLCDTwo,1) time.sleep(1) def lcd_init(): GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) GPIO.setup(LCD_E, GPIO.OUT) GPIO.setup(LCD_RS, GPIO.OUT) GPIO.setup(LCD_D4, GPIO.OUT) GPIO.setup(LCD_D5, GPIO.OUT) GPIO.setup(LCD_D6, GPIO.OUT) GPIO.setup(LCD_D7, GPIO.OUT) lcd_byte(0x33,LCD_CMD) lcd_byte(0x32,LCD_CMD) lcd_byte(0x28,LCD_CMD) lcd_byte(0x0C,LCD_CMD) lcd_byte(0x06,LCD_CMD) lcd_byte(0x01,LCD_CMD) def lcd_string(message,style): # style=1 Left justified # style=2 Centred # style=3 Right justified if style==1: message = message.ljust(LCD_WIDTH," ") elif style==2: message = message.center(LCD_WIDTH," ") elif style==3: message = message.rjust(LCD_WIDTH," ") http://www.robofun.ro/forum
  • 11. for i in range(LCD_WIDTH): lcd_byte(ord(message[i]),LCD_CHR) def lcd_byte(bits, mode): # Send byte to data pins # bits = data # mode = True for character # False for command GPIO.output(LCD_RS, mode) # RS # High bits GPIO.output(LCD_D4, False) GPIO.output(LCD_D5, False) GPIO.output(LCD_D6, False) GPIO.output(LCD_D7, False) if bits&0x10==0x10: GPIO.output(LCD_D4, True) if bits&0x20==0x20: GPIO.output(LCD_D5, True) if bits&0x40==0x40: GPIO.output(LCD_D6, True) if bits&0x80==0x80: GPIO.output(LCD_D7, True) # Toggle 'Enable' pin time.sleep(E_DELAY) GPIO.output(LCD_E, True) time.sleep(E_PULSE) GPIO.output(LCD_E, False) time.sleep(E_DELAY) # Low bits GPIO.output(LCD_D4, False) GPIO.output(LCD_D5, False) GPIO.output(LCD_D6, False) GPIO.output(LCD_D7, False) if bits&0x01==0x01: GPIO.output(LCD_D4, True) if bits&0x02==0x02: GPIO.output(LCD_D5, True) if bits&0x04==0x04: GPIO.output(LCD_D6, True) if bits&0x08==0x08: GPIO.output(LCD_D7, True) http://www.robofun.ro/forum
  • 12. # Toggle 'Enable' pin time.sleep(E_DELAY) GPIO.output(LCD_E, True) time.sleep(E_PULSE) GPIO.output(LCD_E, False) time.sleep(E_DELAY) if __name__ == '__main__': main() http://www.robofun.ro/forum