Satura rādītājs:

Meteoroloģiskā stacija, izmantojot Raspberry Pi ar BME280 Python: 6 soļi
Meteoroloģiskā stacija, izmantojot Raspberry Pi ar BME280 Python: 6 soļi

Video: Meteoroloģiskā stacija, izmantojot Raspberry Pi ar BME280 Python: 6 soļi

Video: Meteoroloģiskā stacija, izmantojot Raspberry Pi ar BME280 Python: 6 soļi
Video: Part 1: Software Build of LoRa Receiver and WiFi Webserver based on Arduino ESP32 (EP12) 2024, Novembris
Anonim
Image
Image
Imperatīvais likumprojekts
Imperatīvais likumprojekts

ir malacis un mērķtiecīgs (Laiks ir labs stāstnieks)

Ņemot vērā globālās sasilšanas un klimata pārmaiņu problēmas, globālie laika apstākļi visā pasaulē kļūst neparasti, izraisot vairākas ar laika apstākļiem saistītas dabas katastrofas (sausumu, ekstremālu temperatūru, plūdus, vētras un ugunsgrēkus), šķiet, ka ir nepieciešama meteoroloģiskā stacija ļaunums mājās. Izmantojot meteoroloģisko staciju projektu, jūs daudz uzzināsit par pamata elektroniku, izmantojot lētu detaļu un sensoru kopumu. To ir diezgan viegli iestatīt, un jūs to varat iegūt īsā laikā.

1. solis: obligāts likumprojekts

Imperatīvais likumprojekts
Imperatīvais likumprojekts
Imperatīvais likumprojekts
Imperatīvais likumprojekts
Imperatīvais likumprojekts
Imperatīvais likumprojekts

1. Aveņu Pi

Paņemiet rokas uz Raspberry Pi dēļa. Raspberry Pi ir ar Linux darbināms vienas plates dators. Raspberry Pi ir patiešām lēts, niecīgs un daudzpusīgs, veidots no pieejama un funkcionāla datora, lai skolēni varētu apgūt programmēšanas un programmatūras izstrādes pamatus.

2. I2C vairogs Raspberry Pi

INPI2 (I2C adapteris) nodrošina Raspberry Pi 2/3 an I²C portu lietošanai ar vairākām I2C ierīcēm. Tas ir pieejams veikalā DCUBE.

3. Digitālais mitruma, spiediena un temperatūras sensors, BME280

BME280 ir mitruma, spiediena un temperatūras sensors, kam ir ātrs reakcijas laiks un augsta kopējā precizitāte. Šo sensoru iegādājāmies veikalā DCUBE.

4. I2C savienojuma kabelis

Mēs izmantojām I²C kabeli, kas pieejams šeit DCUBE Store.

5. Mikro USB kabelis

Mikro USB kabelis Barošanas avots ir ideāla izvēle Raspberry Pi barošanai.

6. Interpretējiet piekļuvi internetam, izmantojot Ethernet kabeli/WiFi adapteri

Piekļuvi internetam var iespējot, izmantojot Ethernet kabeli, kas savienots ar vietējo tīklu un internetu. Varat arī izveidot savienojumu ar bezvadu tīklu, izmantojot USB bezvadu atslēgu, kurai būs nepieciešama konfigurācija.

7. HDMI kabelis (displeja un savienojuma kabelis)

Jebkuram HDMI/DVI monitoram un jebkuram televizoram vajadzētu darboties kā Pi displejam. Varat arī attālināti piekļūt Pi, izmantojot SSH, novēršot nepieciešamību pēc monitora (tikai pieredzējušiem lietotājiem).

2. solis: aparatūras savienojumi shēmai

Aparatūras savienojumi shēmai
Aparatūras savienojumi shēmai
Aparatūras savienojumi shēmai
Aparatūras savienojumi shēmai

Izveidojiet ķēdi saskaņā ar parādīto shēmu. Kopumā savienojumi ir ļoti vienkārši. Esiet mierīgs un ievērojiet iepriekš sniegtos norādījumus un attēlus, un jums nevajadzētu rasties problēmām. Mācoties, mēs rūpīgi iepazināmies ar elektronikas pamatiem attiecībā uz zināšanām par aparatūru un programmatūru. Mēs vēlējāmies šim projektam izveidot vienkāršu elektronikas shēmu. Elektroniskās shēmas ir kā rasējumi. Izveidojiet projektu un uzmanīgi sekojiet dizainam. Šeit var noderēt daži elektronikas pamatjēdzieni!

Raspberry Pi un I2C Shield savienojums

Vispirms paņemiet Raspberry Pi un novietojiet uz tā I²C vairogu. Viegli nospiediet vairogu, un mēs esam pabeiguši šo darbību tikpat viegli kā pīrāgs (skatiet attēlu).

Sensora un Raspberry Pi savienojums

Paņemiet sensoru un pievienojiet tam I²C kabeli. Pārliecinieties, vai I²C izeja VIENMĒR ir savienota ar I²C ieeju. Tas pats ir jāievēro attiecībā uz Raspberry Pi ar I²C vairogu, kas uzlikts virs tā GPIO tapām. Mēs iesakām izmantot I²C kabeļus, jo tas novērš vajadzību nolasīt pinouts, lodēt un savārgumu, ko izraisa pat vismazākā nobīde. Izmantojot šo vienkāršo plug and play kabeli, jūs varat viegli instalēt, nomainīt dēļus vai pievienot vairāk plates lietojumprogrammai.

Piezīme. Brūnajam vadam vienmēr jāseko zemējuma (GND) savienojumam starp vienas ierīces izeju un citas ierīces ieeju

Interneta savienojums ir galvenais

Šeit jums ir divas izvēles. Vai nu jūs varat pieslēgt Raspberry Pi tīklam, izmantojot Ethernet kabeli, vai arī izmantot USB -WiFi adapteri WIFI savienojumam. Jebkurā gadījumā, ja tas ir savienots ar internetu, jūs esat nodrošināts.

Ķēdes ieslēgšana

Pievienojiet Micro USB kabeli Raspberry Pi barošanas ligzdai. Punch up un voila! Mūsu komanda ir informācija.

Savienojums ar ekrānu

HDMI kabeli var savienot ar monitoru vai televizoru. Turklāt mēs varam piekļūt Raspberry Pi, nepievienojot to monitoram, izmantojot attālo piekļuvi. SSH ir ērts rīks drošai attālinātai piekļuvei. Šim nolūkam varat izmantot arī programmatūru PUTTY. Šī opcija ir paredzēta pieredzējušiem lietotājiem, tāpēc mēs to šeit sīkāk neaprakstīsim.

Tā ir ekonomiska metode, ja nevēlaties tērēt daudz

3. darbība: Raspberry Pi programmēšana programmā Python

Raspberry Pi programmēšana Python
Raspberry Pi programmēšana Python

Raspberry Pi un BME280 sensora Python kods. Tas ir pieejams mūsu Github krātuvē.

Pirms turpināt kodu, noteikti izlasiet Readme failā sniegtos norādījumus un iestatiet Raspberry Pi atbilstoši tam. Tikai nedaudz laika jūs sagatavosiet iestatīšanai. Laika stacija ir iekārta, kas atrodas uz sauszemes vai jūrā, ar instrumentiem un aprīkojumu atmosfēras apstākļu mērīšanai, lai sniegtu informāciju laika prognozēm un pētītu laika apstākļus un klimatu.

Kods ir skaidri redzams jūsu priekšā, un tas ir visvienkāršākajā formā, kādu varat iedomāties, un jums nevajadzētu rasties problēmām. Joprojām jautājiet, vai kāds (pat ja jūs zināt tūkstoš lietas, tomēr jautājiet kādam, kas zina).

Arī no šejienes varat nokopēt šī sensora darba Python kodu.

# Izplatīts ar brīvās gribas licenci.# Izmantojiet to, kā vēlaties, gūstiet peļņu vai bez maksas, ja tas iekļaujas saistīto darbu licencēs. # BME280 # Šis kods ir paredzēts darbam ar BME280_I2CS I2C mini moduli, kas pieejams vietnē ControlEverything.com. #

importēt smbus

importa laiks

# Iegūstiet I2C autobusu

autobuss = smbus. SMBus (1)

# BME280 adrese, 0x76 (118)

# Lasīt datus no 0x88 (136), 24 baiti b1 = bus.read_i2c_block_data (0x76, 0x88, 24)

# Konvertējiet datus

# Temperatūras koeficienti dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2], ja dig_T2> 32767: dig_T2 -= 65536 dig_T3 = b1 [5] * 256 + b1 [4] ja dig_T3> 32767: dig_T3 -= 65536

# Spiediena koeficienti

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

# BME280 adrese, 0x76 (118)

# Lasīt datus atpakaļ no 0xA1 (161), 1 baita dig_H1 = kopnes.lasīt_baitu_dati (0x76, 0xA1)

# BME280 adrese, 0x76 (118)

# Lasīt datus no 0xE1 (225), 7 baiti b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)

# Konvertējiet datus

# Mitruma koeficienti dig_H2 = b1 [1] * 256 + b1 [0], ja dig_H2> 32767: dig_H2 -= 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF), ja dig_H4> 32767: dig_H4 -= 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16), ja dig_H5> 32767: dig_H5 -= 65536 dig_H6 = b1 [6], ja dig_H6> 127: dig_H6 -= 256

# BME280 adrese, 0x76 (118)

# Atlasiet vadības mitruma reģistru, 0xF2 (242) # 0x01 (01) Mitruma pārsnieguma paraugu ņemšana = 1 kopne.rakstīt_baitu_datus (0x76, 0xF2, 0x01) # BME280 adrese, 0x76 (118) # Atlasiet kontroles mērījumu reģistru, 0xF4 (244) # 0x27 (39) Spiediena un temperatūras pārmērīgas paraugu ņemšanas ātrums = 1 # Normālā režīma kopne.rakstīt_baitu_dati (0x76, 0xF4, 0x27) # BME280 adrese, 0x76 (118) # Izvēlieties konfigurācijas reģistru, 0xF5 (245) # 0xA0 (00) Gaidīšanas gaidīšanas laiks = 1000 ms autobuss.write_byte_data (0x76, 0xF5, 0xA0)

miega laiks (0,5)

# BME280 adrese, 0x76 (118)

# Nolasīt datus no 0xF7 (247), 8 baiti # Spiediens MSB, Spiediens LSB, Spiediens xLSB, Temperatūra MSB, Temperatūra LSB # Temperatūra xLSB, Mitrums MSB, Mitruma LSB dati = bus.read_i2c_block_data (0x76, 0xF7, 8)

# Pārvērtiet spiediena un temperatūras datus par 19 bitiem

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

# Konvertējiet mitruma datus

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

# Temperatūras nobīdes aprēķini

var1 = { * (dig_T3) t_fine = (var1 + var2) cTemp = (var1 + var2) / 5120,0 fTemp = cTemp * 1,8 + 32

# Spiediena nobīdes aprēķini

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 spiediens = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100

# Mitruma kompensācijas aprēķini

var_H = ((t_smalks) - 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 *))) mitrums = var_H * (1,0 - dig_H1 * var_H / 524288.0), ja mitrums> 100.0: mitrums = 100.0 elifa mitrums <0.0: mitrums = 0.0

# Izvadiet datus ekrānā

drukāt "Temperatūra pēc Celsija: %.2f C" %cTemp drukāt "Temperatūra pēc Fārenheita: %.2f F" %fTemp drukāt "Spiediens: %.2f hPa" %spiediena druka "Relatīvais mitrums: %.2f %%" %mitrums

4. darbība: darbības kods

Darbības kods
Darbības kods

Tagad lejupielādējiet (vai git pull) kodu un atveriet to Raspberry Pi.

Palaidiet komandas, lai apkopotu un augšupielādētu kodu terminālī, un redziet izvadi displejā. Pēc dažām sekundēm tas parādīs visus parametrus. Pēc tam, kad esat pārliecinājies, ka viss darbojas lieliski, varat izstrādāt vēl dažus interesantus.

5. darbība. Izmantošana praktiskajā pasaulē

BME280 sasniedz augstu veiktspēju visos pielietojumos, kur nepieciešama mitruma un spiediena mērīšana. Šīs jaunās lietojumprogrammas ir konteksta izpratne, piem. Ādas noteikšana, telpas maiņas noteikšana, fitnesa uzraudzība / labsajūta, brīdinājums par sausumu vai augstu temperatūru, tilpuma un gaisa plūsmas mērīšana, mājas automatizācijas vadība, vadības apkure, ventilācija, gaisa kondicionēšana (HVAC), lietu internets (IoT), GPS uzlabošana (piem., Laika uzlabojums līdz pirmajam labojumam, nederīga aprēķināšana, slīpuma noteikšana), navigācija iekštelpās (grīdas noteikšanas maiņa, lifta noteikšana), navigācija brīvā dabā, atpūtas un sporta lietojumprogrammas, laika prognoze un vertikālā ātruma indikācija (pieaugums/nogrimšana) Ātrums).

6. darbība. Secinājums

Ceru, ka šis projekts iedvesmo turpmākus eksperimentus. Sarežģītākas meteoroloģiskās stacijas izveide var ietvert vēl dažus sensorus, piemēram, lietus mērītāju, gaismas sensoru, anemometru (vēja ātrumu) utt. Jūs varat tos pievienot un mainīt kodu. Mums ir video pamācība pakalpojumā YouTube, kurā ir I²C sensora pamatfunkcijas ar Rasp Pi. Ir patiešām pārsteidzoši redzēt I²C sakaru rezultātus un darbu. Pārbaudiet to arī. Jautri veidojiet un mācieties! Lūdzu, dariet mums zināmu, ko jūs domājat par šo pamācību. Mēs labprāt veiktu dažus uzlabojumus, ja nepieciešams.

Ieteicams: