Talaan ng mga Nilalaman:

Weather Station Paggamit ng Raspberry Pi Sa BME280 sa Python: 6 Hakbang
Weather Station Paggamit ng Raspberry Pi Sa BME280 sa Python: 6 Hakbang

Video: Weather Station Paggamit ng Raspberry Pi Sa BME280 sa Python: 6 Hakbang

Video: Weather Station Paggamit ng Raspberry Pi Sa BME280 sa Python: 6 Hakbang
Video: Lesson 37: Using BME280 Humidity, Barometric Pressure and Temperature Sensor 2024, Hulyo
Anonim
Image
Image
Batas sa Imperative Equipment
Batas sa Imperative Equipment

ay maith an scéalaí isang aimir (Ang Panahon ay isang Magaling na Tagapagsalita)

Sa mga isyu sa pag-init ng mundo at pagbabago ng klima, ang pandaigdigan na pattern ng panahon ay nagiging hindi nagagalaw sa buong mundo na humahantong sa isang bilang ng mga natural na sakuna na nauugnay sa panahon (tagtuyot, matinding temperatura, baha, bagyo, at mga sunog), isang istasyon ng panahon ang tila kinakailangan kasamaan sa bahay. Marami kang natututunan tungkol sa pangunahing electronics mula sa isang proyekto ng istasyon ng panahon gamit ang isang bungkos ng murang mga bahagi at sensor. Madali itong i-set up at sa walang oras maaari mo itong makuha.

Hakbang 1: Bill ng Imperative Equipment

Batas sa Imperative Equipment
Batas sa Imperative Equipment
Batas sa Imperative Equipment
Batas sa Imperative Equipment
Batas sa Imperative Equipment
Batas sa Imperative Equipment

1. Isang Raspberry Pi

Kunin ang iyong mga kamay sa isang board na Raspberry Pi. Ang Raspberry Pi ay isang pinalakas na solong board computer ng Linux. Ang Raspberry Pi ay talagang mura, maliit at maraming nalalaman na binuo ng isang naa-access at nagagamit na computer para sa mga nag-aaral na mag-ehersisyo ang mga pangunahing kaalaman sa pag-unlad ng programa at software.

2. I2C Shield para sa Raspberry Pi

Ang INPI2 (I2C adapter) ay nagbibigay ng Raspberry Pi 2/3 isang I²C port para magamit sa maraming mga I2C device. Magagamit ito sa DCUBE Store.

3. Digital Humidity, Pressure at Temperatura Sensor, BME280

Ang BME280 ay isang halumigmig, presyon at sensor ng temperatura na may mabilis na oras ng pagtugon at mataas na pangkalahatang kawastuhan. Binili namin ang sensor na ito mula sa DCUBE Store.

4. I2C Pagkonekta Cable

Ginamit namin ang I²C cable na magagamit dito sa DCUBE Store.

5. Micro USB cable

Ang micro USB cable Power supply ay isang mainam na pagpipilian para sa pagpapatakbo ng Raspberry Pi.

6. Bigyang kahulugan ang Pag-access sa Internet sa pamamagitan ng EthernetCable / WiFi Adapter

Maaaring paganahin ang pag-access sa Internet sa pamamagitan ng isang Ethernet cable na konektado sa isang lokal na network at internet. Bilang kahalili, maaari kang kumonekta sa isang wireless network gamit ang isang USB wireless dongle, na mangangailangan ng pagsasaayos.

7. HDMI Cable (Display & connectivity cable)

Anumang HDMI / DVI monitor at anumang TV ay dapat gumana bilang isang display para sa Pi. Bilang kahalili, maaari mong i-access ang remote sa Pi sa pamamagitan ng SSH na tinatanggihan ang pangangailangan para sa isang monitor (mga advanced na gumagamit lamang).

Hakbang 2: Mga Koneksyon sa Hardware para sa Circuit

Mga Koneksyon sa Hardware para sa Circuit
Mga Koneksyon sa Hardware para sa Circuit
Mga Koneksyon sa Hardware para sa Circuit
Mga Koneksyon sa Hardware para sa Circuit

Gawin ang circuit ayon sa ipinakita na iskematiko. Sa pangkalahatan, ang mga koneksyon ay napaka-simple. Panatilihing kalmado at Sundin ang mga tagubilin at imahe sa itaas, at dapat wala kang mga problema. Habang natututo, nakuha namin nang lubusan ang mga pangunahing kaalaman sa electronics tungkol sa hardware at kaalaman sa software. Nais naming gumuhit ng isang simpleng iskemang electronics para sa proyektong ito. Ang mga elektronikong eskematiko ay tulad ng mga blueprint. Gumuhit ng isang blueprint at sundin nang mabuti ang disenyo. Ang ilang mga pangunahing konsepto ng electronics ay maaaring maging kapaki-pakinabang dito!

Koneksyon ng Raspberry Pi at I2C Shield

Una, kunin ang Raspberry Pi at ilagay dito ang I²C Shield. Dahan-dahang pindutin ang Shield at tapos na kami sa hakbang na ito na kasing dali ng pie (tingnan ang larawan).

Koneksyon ng Sensor at Raspberry Pi

Kunin ang sensor at ikonekta ang I²C cable dito. Siguraduhin na ang I²C Output ALWAYS kumokonekta sa I²C Input. Ang pareho ay dapat sundin para sa Raspberry Pi na may kalasag na I²C na naka-mount sa ibabaw nito ang mga GPIO pin. Inirerekumenda namin ang paggamit ng mga cable ng I CC dahil pinapawalang-saysay nito ang pangangailangan para sa pagbasa ng mga pinout, paghihinang, at karamdaman na sanhi ng kahit na kaunting slip-up. Sa simpleng plug at play cable na ito, maaari kang mag-install, magpalit ng mga board, o magdagdag ng higit pang mga board sa isang application nang madali.

Tandaan: Dapat laging sundin ng brown wire ang koneksyon ng Ground (GND) sa pagitan ng output ng isang aparato at ng pag-input ng ibang aparato

Ang pagkakakonekta sa Internet ay susi

Mayroon kang dalawang pagpipilian dito. Alinman Maaari mong ikonekta ang Raspberry Pi sa network gamit ang isang ethernet cable o gumamit ng USB sa WiFi Adapter para sa Koneksyon sa WIFI. Alinmang paraan, basta ito ay konektado sa internet ay sakop ka.

Pagpapatakbo ng Circuit

I-plug ang Micro USB cable sa power jack ng Raspberry Pi. Punch up at voila! Ang aming pulutong ay impormasyon.

Koneksyon sa Screen

Maaari nating maiugnay ang HDMI cable sa isang monitor o sa isang TV. Bilang karagdagan, maaari naming ma-access ang isang Raspberry Pi nang hindi ikonekta ito sa isang monitor gamit ang remote access. Ang SSH ay isang madaling gamiting tool para sa ligtas na remote access. Maaari mo ring gamitin ang PUTTY software para doon. Ang pagpipiliang ito ay para sa mga advanced na gumagamit kaya hindi namin ito sasakupin nang detalyado dito.

Ito ay isang matipid na pamamaraan kung ayaw mong gumastos ng malaki

Hakbang 3: Pagprogram ng Raspberry Pi sa Python

Raspberry Pi Programming sa Python
Raspberry Pi Programming sa Python

Ang Python Code para sa Raspberry Pi at BME280 Sensor. Magagamit ito sa aming repository ng Github.

Bago magpatuloy sa code, tiyaking nabasa mo ang mga tagubiling ibinigay sa Readme file at I-setup ang iyong Raspberry Pi alinsunod dito. Kaunting oras lamang ang maghahanda sa iyo para sa pag-set up. Ang isang istasyon ng panahon ay isang pasilidad, alinman sa lupa o dagat, na may mga instrumento at kagamitan para sa pagsukat ng mga kondisyon sa himpapawid upang magbigay ng impormasyon para sa mga pagtataya ng panahon at pag-aralan ang panahon at klima.

Ang code ay malinaw sa harap mo at ito ay nasa pinakasimpleng form na maaari mong isipin at dapat kang walang mga problema. Itanong pa rin kung mayroon (Kahit na alam mo ang isang libong bagay, magtanong pa rin sa isang taong may alam).

Maaari mong kopyahin ang gumaganang code ng Python para sa sensor na ito mula rito.

# Ipinamamahagi ng isang lisensya na may malayang kalooban. # Gamitin ito sa anumang paraan na nais mo, tubo o libre, sa kondisyon na naaangkop ito sa mga lisensya ng mga nauugnay na gawa nito. # BME280 # Ang code na ito ay dinisenyo upang gumana sa BME280_I2CS I2C Mini Module na magagamit mula sa ControlEverything.com. #

import smbus

oras ng pag-import

# Kumuha ng I2C bus

bus = smbus. SMBus (1)

# BME280 address, 0x76 (118)

# Basahin ang data pabalik mula sa 0x88 (136), 24 bytes b1 = bus.read_i2c_block_data (0x76, 0x88, 24)

# I-convert ang data

# Temp coefficients dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] kung dig_T2> 32767: dig_T2 - = 65536 dig_T3 = b1 [5] * 256 + b1 [4] kung dig_T3> 32767: dig_T3 - = 65536

# Mga coefficient ng presyon

dig_P1 = b1 [7] * 256 + b1 [6] dig_P2 = b1 [9] * 256 + b1 [8] kung dig_P2> 32767: dig_P2 - = 65536 dig_P3 = b1 [11] * 256 + b1 [10] kung dig_P3 > 32767: dig_P3 - = 65536 dig_P4 = b1 [13] * 256 + b1 [12] kung dig_P4> 32767: dig_P4 - = 65536 dig_P5 = b1 [15] * 256 + b1 [14] kung dig_P5> 32767: dig_P5 - = 65536 dig_P6 = b1 [17] * 256 + b1 [16] kung dig_P6> 32767: dig_P6 - = 65536 dig_P7 = b1 [19] * 256 + b1 [18] kung dig_P7> 32767: dig_P7 - = 65536 dig_P8 = b1 [21] * 256 + b1 [20] kung dig_P8> 32767: dig_P8 - = 65536 dig_P9 = b1 [23] * 256 + b1 [22] kung dig_P9> 32767: dig_P9 - = 65536

# BME280 address, 0x76 (118)

# Basahin ang data pabalik mula sa 0xA1 (161), 1 byte dig_H1 = bus.read_byte_data (0x76, 0xA1)

# BME280 address, 0x76 (118)

# Basahin ang data pabalik mula sa 0xE1 (225), 7 bytes b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)

# I-convert ang data

# Mga coefficient ng Humidity dig_H2 = b1 [1] * 256 + b1 [0] kung dig_H2> 32767: dig_H2 - = 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF) kung dig_H4> 32767: dig_H4 - = 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) kung dig_H5> 32767: dig_H5 - = 65536 dig_H6 = b1 [6] kung dig_H6> 127: dig_H6 - = 256

# BME280 address, 0x76 (118)

# Piliin ang rehistro ng kahalumigmigan ng kontrol, 0xF2 (242) # 0x01 (01) Humidity Oversampling = 1 bus.write_byte_data (0x76, 0xF2, 0x01) # BME280 address, 0x76 (118) # Piliin ang Rehistro sa pagsukat ng kontrol, 0xF4 (244) # 0x27 (39) Pressure at Temperatura Oversampling rate = 1 # Karaniwang mode bus.write_byte_data (0x76, 0xF4, 0x27) # BME280 address, 0x76 (118) # Piliin ang Rehistro ng pagsasaayos, 0xF5 (245) # 0xA0 (00) Stand_by time = 1000 ms bus.write_byte_data (0x76, 0xF5, 0xA0)

oras. pagtulog (0.5)

# BME280 address, 0x76 (118)

# Basahin ang data mula sa 0xF7 (247), 8 bytes # Pressure MSB, Pressure LSB, Pressure xLSB, Temperatura MSB, Temperatura LSB # Temperatura xLSB, Humidity MSB, Humidity LSB data = bus.read_i2c_block_data (0x76, 0xF7, 8)

# I-convert ang data ng presyon at temperatura sa 19-bit

adc_p = ((data [0] * 65536) + (data [1] * 256) + (data [2] & 0xF0)) / 16 adc_t = ((data [3] * 65536) + (data [4] * 256) + (data [5] & 0xF0)) / 16

# I-convert ang data ng halumigmig

adc_h = data [6] * 256 + data [7]

# Kalkulasyon ng offset ng temperatura

var1 = (((adc_t) / 16384.0 - (dig_T1) / 1024.0) * (dig_T2) var2 = ((((adc_t) / 131072.0 - (dig_T1) / 8192.0) * ((adc_t) /131072.0 - (dig_T1) /8192.0)) * (dig_T3) t_fine = (var1 + var2) cTemp = (var1 + var2) / 5120.0 fTemp = cTemp * 1.8 + 32

# Mga kalkulasyon ng offset ng presyon

var1 = (t_fine / 2.0) - 64000.0 var2 = var1 * var1 * (dig_P6) / 32768.0 var2 = var2 + var1 * (dig_P5) * 2.0 var2 = (var2 / 4.0) + ((dig_P4) * 65536.0) var1 = ((dig_P3) * var1 * var1 / 524288.0 + (dig_P2) * var1) / 524288.0 var1 = (1.0 + var1 / 32768.0) * (dig_P1) p = 1048576.0 - adc_p p = (p - (var2 / 4096.0)) * 6250.0 / var1 var1 = (dig_P9) * p * p / 2147483648.0 var2 = p * (dig_P8) / 32768.0 pressure = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100

# Mga kalkulasyon ng offset na kahalumigmigan

var_H = (((t_fine) - 76800.0) var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1.0 + dig_H6 / 67108864.0 * var_H * (1.0 + dig_H3 / 67108864.0 * var_H))) halumigmig = var_H * (1.0 - dig_H1 * var_H / 524288.0) kung halumigmig> 100.0: halumigmig = 100.0 halumigmig na elif <0.0: halumigmig = 0.0

# Data ng output sa screen

i-print ang "Temperatura sa Celsius:%.2f C"% cTemp print "Temperatura sa Fahrenheit:%.2f F"% fTemp print "Pressure:%.2f hPa"% pressure print "Relative Humidity:%.2f %%"% halumigmig

Hakbang 4: Ang Running Code

Ang Running Code
Ang Running Code

Ngayon, i-download (o hilahin ang git) ang code at buksan ito sa Raspberry Pi.

Patakbuhin ang mga utos upang Magtipon at Mag-upload ng code sa terminal at makita ang output sa Display. Pagkatapos ng ilang segundo, ipapakita nito ang lahat ng mga parameter. Matapos matiyak na ang lahat ay gumagana nang mahusay, maaari kang bumuo ng ilang mas kawili-wili.

Hakbang 5: Paggamit sa Praktikal na Daigdig

Ang BME280 ay nakakamit ng mataas na pagganap sa lahat ng mga aplikasyon na nangangailangan ng halumigmig at pagsukat ng presyon. Ang mga umuusbong na application na ito ay may kamalayan sa Context, hal. Pagtuklas ng Balat, Pagtuklas sa Pagbabago ng Silid, Pagsubaybay sa Kalusugan / Kaayusan, Babala Tungkol sa Pagkatuyo o Mataas na Temperatura, Pagsukat ng Dami at Daloy ng Air, Pagkontrol sa Awtomatiko sa Bahay, Pagkainit ng Pagkontrol, Bentilasyon, Air Conditioning (HVAC), Internet of Things (IoT), Pagpapahusay ng GPS (hal. Pag-aayos ng Oras sa Unang Pag-ayos, Patay na Pagkuha, Pagtuklas ng Slope), Pag-navigate sa Looban (Pagbabago ng Pagtuklas sa Palapag, Pagtuklas ng Elevator), Pag-navigate sa Labas, Mga Application sa Libangan at Palakasan, Pagtataya ng Panahon At Pahiwatig ng Vertical Velocity (Rise / Sink Bilis)

Hakbang 6: Konklusyon

Inaasahan kong ang proyektong ito ay nagbibigay inspirasyon sa karagdagang pag-eksperimento. Ang paggawa ng isang mas sopistikadong istasyon ng panahon ay maaaring kasangkot sa ilang higit pang mga sensor tulad ng Rain Gauge, Light sensor, anemometer (bilis ng hangin) atbp Maaari mong idagdag ang mga ito at baguhin ang code. Mayroon kaming isang tutorial sa video sa YouTube na mayroong pangunahing paggana ng I CC sensor kasama ang Rasp Pi. Tunay na kamangha-manghang makita ang mga resulta at gumagana ng mga komunikasyon sa I²C. Suriin din ito. Magsaya sa pagbuo at pag-aaral! Mangyaring ipaalam sa amin kung ano ang palagay mo sa itinuturo na ito. Gusto naming gumawa ng ilang mga pagpapabuti kung kinakailangan.

Inirerekumendang: