Përmbajtje:

Stacioni i motit duke përdorur Raspberry Pi Me BME280 në Python: 6 hapa
Stacioni i motit duke përdorur Raspberry Pi Me BME280 në Python: 6 hapa

Video: Stacioni i motit duke përdorur Raspberry Pi Me BME280 në Python: 6 hapa

Video: Stacioni i motit duke përdorur Raspberry Pi Me BME280 në Python: 6 hapa
Video: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, Korrik
Anonim
Image
Image
Fatura e Pajisjeve Imperative
Fatura e Pajisjeve Imperative

është maith a scéalaí an armancir (Moti është një tregimtar i mirë)

Me çështjet e ngrohjes globale dhe ndryshimet klimatike, modeli global i motit po bëhet i çrregullt në të gjithë botën tonë duke çuar në një numër fatkeqësish natyrore të lidhura me motin (thatësira, temperatura ekstreme, përmbytje, stuhi dhe zjarre të egra), një stacion moti duket të jetë i nevojshëm e keqja ne shtepi. Ju mësoni shumë për elektronikën bazë nga një projekt i stacionit të motit duke përdorur një mori pjesësh dhe sensorë të lirë. Prettyshtë shumë e lehtë për tu vendosur dhe në një kohë nuk mund ta kesh atë.

Hapi 1: Fatura e Pajisjeve Imperative

Fatura e Pajisjeve Imperative
Fatura e Pajisjeve Imperative
Fatura e Pajisjeve Imperative
Fatura e Pajisjeve Imperative
Fatura e Pajisjeve Imperative
Fatura e Pajisjeve Imperative

1. Një mjedër Pi

Merrni duart në një tabelë Raspberry Pi. Raspberry Pi është një kompjuter me një bord me Linux. Raspberry Pi është vërtet i lirë, i vogël dhe i gjithanshëm i ndërtuar nga një kompjuter i arritshëm dhe funksional për nxënësit që të ushtrojnë bazat e programimit dhe zhvillimit të softuerit.

2. Mburoja I2C për Raspberry Pi

INPI2 (përshtatësi I2C) siguron Raspberry Pi 2/3 një port I²C për përdorim me pajisje të shumta I2C. Availableshtë në dispozicion në Dyqanin DCUBE.

3. Sensori i Lagështisë Dixhitale, Presionit dhe Temperaturës, BME280

BME280 është një sensor lagështie, presioni dhe temperature që ka kohë të shpejtë reagimi dhe saktësi të lartë të përgjithshme. Ne e blemë këtë sensor nga Dyqani DCUBE.

4. Kabllo Lidhëse I2C

Ne përdorëm kabllon I²C të disponueshëm këtu Dyqani DCUBE.

5. Kabllo mikro USB

Kablloja mikro USB Furnizimi me energji elektrike është një zgjedhje ideale për fuqizimin e Raspberry Pi.

6 Interpretoni hyrjen në internet përmes përshtatësit EthernetCable/WiFi

Qasja në internet mund të aktivizohet përmes një kabllo Ethernet të lidhur me një rrjet lokal dhe internet. Përndryshe, mund të lidheni me një rrjet pa tel duke përdorur një dongle pa tel USB, e cila do të kërkojë konfigurim.

7. Kabllo HDMI (Ekrani i kabllit të lidhjes)

Çdo monitor HDMI/DVI dhe çdo TV duhet të funksionojë si ekran për Pi. Përndryshe, mund të qaseni në distancë në Pi përmes SSH duke mohuar nevojën për një monitor (vetëm përdoruesit e përparuar).

Hapi 2: Lidhjet e harduerit për qarkun

Lidhjet e harduerit për qarkun
Lidhjet e harduerit për qarkun
Lidhjet e harduerit për qarkun
Lidhjet e harduerit për qarkun

Bëni qarkun sipas skemës së treguar. Në përgjithësi, lidhjet janë shumë të thjeshta. Mbani qetësinë dhe ndiqni udhëzimet dhe imazhet e mësipërme, dhe nuk duhet të keni probleme. Ndërsa mësonim, ne mësuam plotësisht me bazat e elektronikës në lidhje me njohuritë e harduerit dhe softuerit. Ne donim të hartonim një skemë të thjeshtë elektronike për këtë projekt. Skemat elektronike janë si skema. Hartoni një plan dhe ndiqni me kujdes modelin. Disa koncepte themelore të elektronikës mund të jenë të dobishme këtu!

Lidhja e Raspberry Pi dhe I2C Shield

Së pari, merrni Raspberry Pi dhe vendosni Mburojën I²C mbi të. Shtypni Shield me butësi dhe ne jemi bërë me këtë hap aq të lehtë sa byrek (shiko foton).

Lidhja e Sensorit dhe Raspberry Pi

Merrni sensorin dhe lidhni kabllon I²C me të. Sigurohuni që dalja I²C të lidhet GJITHMON me hyrjen e I²C. E njëjta gjë duhet të ndiqet për Raspberry Pi me mburojën I²C të montuar mbi të me kunjat GPIO. Ne rekomandojmë përdorimin e kabllove I²C pasi mohon nevojën për të lexuar pinouts, bashkim dhe keqtrajtim të shkaktuar edhe nga rrëshqitja më e vogël Me Me këtë kabllo të thjeshtë plug and play, mund të instaloni, ndërroni bordet ose të shtoni më shumë borde në një aplikacion me lehtësi.

Shënim: Teli kafe duhet të ndjekë lidhjen Ground (GND) midis daljes së një pajisjeje dhe hyrjes së një pajisjeje tjetër

Lidhshmëria me internetin është çelësi

Këtu keni dy zgjedhje. Ose Mund ta lidhni Raspberry Pi me rrjetin duke përdorur një kabllo ethernet ose të përdorni një përshtatës USB në WiFi për lidhjen WIFI. Sido që të jetë, për sa kohë që është e lidhur me internetin ju jeni të mbuluar.

Fuqizimi i qarkut

Futeni kabllon Micro USB në prizën e energjisë të Raspberry Pi. Punch up dhe voila! Skuadra jonë është informacion.

Lidhja me ekranin

Ne ose mund ta lidhim kabllon HDMI me një monitor ose me një televizor. Për më tepër, ne mund të hyjmë në një Raspberry Pi pa e lidhur atë me një monitor duke përdorur qasje në distancë. SSH është një mjet i dobishëm për qasje të sigurt në distancë. Ju gjithashtu mund të përdorni softuerin PUTTY për këtë. Ky opsion është për përdoruesit e përparuar, kështu që ne nuk do ta mbulojmë atë në detaje këtu.

Anshtë një metodë ekonomike nëse nuk doni të shpenzoni shumë

Hapi 3: Programimi i Raspberry Pi në Python

Programimi i Raspberry Pi në Python
Programimi i Raspberry Pi në Python

Kodi Python për Sensorin Raspberry Pi dhe BME280. Availableshtë në dispozicion në depon tonë Github.

Para se të kaloni në kod, sigurohuni që të lexoni udhëzimet e dhëna në skedarin Readme dhe Konfiguroni Raspberry Pi tuaj sipas tij. Vetëm pak kohë do t'ju bëjë gati për konfigurim. Një stacion moti është një strukturë, në tokë ose në det, me instrumente dhe pajisje për matjen e kushteve atmosferike për të siguruar informacion për parashikimet e motit dhe për të studiuar motin dhe klimën.

Kodi është qartë para jush dhe është në formën më të thjeshtë që mund të imagjinoni dhe nuk duhet të keni probleme. Pyetni akoma nëse ka (edhe nëse dini një mijë gjëra, prapë pyesni dikë që e di).

Ju gjithashtu mund të kopjoni kodin Python të punës për këtë sensor nga këtu.

# Shpërndarë me një licencë të vullnetit të lirë.# Përdoreni atë në çdo mënyrë që dëshironi, fitimprurëse ose falas, me kusht që të përshtatet me licencat e veprave të tij shoqëruese. # BME280 # Ky kod është krijuar për të punuar me Mini Modulin BME280_I2CS I2C i disponueshëm nga ControlEverything.com. #

import smbus

koha e importit

# Merrni autobusin I2C

autobus = smbus. SMBus (1)

Adresa # BME280, 0x76 (118)

# Lexoni të dhënat mbrapa nga 0x88 (136), 24 bajt b1 = bus.read_i2c_block_data (0x76, 0x88, 24)

# Konvertoni të dhënat

# Koeficientët e temperaturës dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] nëse dig_T2> 32767: dig_T2 -= 65536 dig_T3 = b1 [5] * 256 + b1 [4] nëse dig_T3> 32767: dig_T3 -= 65536

# Koeficientët e presionit

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

Adresa # BME280, 0x76 (118)

# Lexoni të dhënat mbrapa nga 0xA1 (161), 1 byte dig_H1 = bus.read_byte_data (0x76, 0xA1)

Adresa # BME280, 0x76 (118)

# Lexoni të dhënat mbrapa nga 0xE1 (225), 7 bajt b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)

# Konvertoni të dhënat

# Koeficientët e lagështisë dig_H2 = b1 [1] * 256 + b1 [0] nëse dig_H2> 32767: dig_H2 -= 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF) nëse dig_H4> 32767: dig_H4 -= 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) nëse dig_H5> 32767: dig_H5 -= 65536 dig_H6 = b1 [6] nëse dig_H6> 127: dig_H6 -= 256

Adresa # BME280, 0x76 (118)

# Zgjidhni regjistrin e lagështisë së kontrollit, 0xF2 (242) # 0x01 (01) Mbidampimi i lagështirës = 1 autobus. Shkruani_bajat_data (0x76, 0xF2, 0x01) # adresa BME280, 0x76 (118) # Zgjidhni regjistrin e matjes së kontrollit, 0xF4 (244) # 0x27 (39) Shkalla e mbivendosjes së presionit dhe temperaturës = 1 # autobus i modalitetit normal. Shkruaj_bajt_data (0x76, 0xF4, 0x27) # Adresa BME280, 0x76 (118) # Zgjidh regjistrin e konfigurimit, 0xF5 (245) # 0xA0 (00) Koha e gatishmërisë = 1000 ms autobus.write_byte_data (0x76, 0xF5, 0xA0)

koha. gjumi (0.5)

Adresa # BME280, 0x76 (118)

# Lexoni të dhëna mbrapa nga 0xF7 (247), 8 bajt # Presioni MSB, Presioni LSB, Presioni xLSB, Temperatura MSB, Temperatura LSB # Temperatura xLSB, Lagështia MSB, Lagështia LSB të dhënat = bus.read_i2c_block_data (0x76, 0xF7, 8)

# Shndërroni të dhënat e presionit dhe temperaturës në 19-bit

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

# Konvertoni të dhënat e lagështisë

adc_h = të dhëna [6] * 256 + të dhëna [7]

# Llogaritjet e kompensimit të temperaturës

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

# Llogaritjet e kompensimit të presionit

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

# Llogaritjet e kompensuara të lagështisë

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))) lagështia = var_H * (1.0 - dig_H1 * var_H / 524288.0) nëse lagështia> 100.0: lagështia = 100.0 lagështia elif <0.0: lagështia = 0.0

# Dalja e të dhënave në ekran

print "Temperatura në Celsius: %.2f C" %cTemp print "Temperatura në Fahrenheit: %.2f F" %fTemp print "Presioni: %.2f hPa" %shtypje me presion "Lagështia relative: %.2f %%" %lagështia

Hapi 4: Kodi i Drejtimit

Kodi i Drejtimit
Kodi i Drejtimit

Tani, shkarkoni (ose git pull) kodin dhe hapeni atë në Raspberry Pi.

Drejtoni komandat për të përpiluar dhe ngarkuar kodin në terminal dhe shihni daljen në ekran. Pas disa sekondash, do të shfaqë të gjithë parametrat. Pasi të siguroheni që gjithçka funksionon shkëlqyeshëm, mund të zhvilloni disa më interesante.

Hapi 5: Shfrytëzimi në botën praktike

BME280 arrin performancë të lartë në të gjitha aplikimet që kërkojnë matje të lagështisë dhe presionit. Këto aplikacione në zhvillim janë ndërgjegjësimi i kontekstit, p.sh. Zbulimi i lëkurës, Zbulimi i ndryshimit të dhomës, Monitorimi / Mirëqenia e Fitnesit, Paralajmërim në lidhje me Thatësinë ose Temperaturat e Larta, Matja e Vëllimit dhe Rrjedhës së Ajrit, Kontrolli i Automatizimit të Shtëpisë, Ngrohja e Kontrollit, Ventilimi, Kondicionimi (HVAC), Interneti i Gjërave (IoT), Përmirësimi i GPS (p.sh. Përmirësimi i rregullimit të kohës së parë, llogaritja e vdekur, zbulimi i shpatit), navigimi i brendshëm (ndryshimi i zbulimit të dyshemesë, zbulimi i ashensorit), navigimi në natyrë, aplikacionet e kohës së lirë dhe sporteve, parashikimi i motit dhe treguesi i shpejtësisë vertikale (ngritje/lavaman) Shpejtësia).

Hapi 6: Përfundimi

Shpresoj se ky projekt frymëzon eksperimente të mëtejshme. Krijimi i një stacioni të motit më të sofistikuar mund të përfshijë edhe disa sensorë më shumë si Rain Gauge, Sensor drite, anemometër (shpejtësia e erës) etj. Ju mund t'i shtoni ato dhe të ndryshoni kodin. Ne kemi një video tutorial në YouTube që ka funksionimin bazë të sensorit I²C me Rasp Pi. Reallyshtë vërtet e mahnitshme të shohësh rezultatet dhe punën e komunikimeve të I²C. Kontrolloni gjithashtu. Keni argëtim duke ndërtuar dhe mësuar! Ju lutemi na tregoni se çfarë mendoni për këtë udhëzues. Ne do të donim të bënim disa përmirësime nëse ishte e nevojshme.

Recommended: