Sisällysluettelo:

Sääasema Raspberry Pi: n ja BME280: n avulla Pythonissa: 6 vaihetta
Sääasema Raspberry Pi: n ja BME280: n avulla Pythonissa: 6 vaihetta

Video: Sääasema Raspberry Pi: n ja BME280: n avulla Pythonissa: 6 vaihetta

Video: Sääasema Raspberry Pi: n ja BME280: n avulla Pythonissa: 6 vaihetta
Video: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, Heinäkuu
Anonim
Image
Image
Pakollinen laitelasku
Pakollinen laitelasku

on maith scéalaí an aimir (Sää on hyvä tarinankertoja)

Ilmaston lämpenemisen ja ilmastonmuutoksen vuoksi globaali säämalli on muuttumassa epäsäännölliseksi kaikkialla maailmassa, mikä johtaa useisiin säähän liittyviin luonnonkatastrofeihin (kuivuus, äärilämpötilat, tulvat, myrskyt ja metsäpalot), sääasema näyttää välttämättömältä paha kotona. Opit paljon peruselektroniikasta sääasemaprojektista käyttämällä joukkoa halpoja osia ja antureita. Se on melko helppo asentaa ja se ei ole hetkessä.

Vaihe 1: Pakollinen laitelasku

Pakollinen laitelasku
Pakollinen laitelasku
Pakollinen laitelasku
Pakollinen laitelasku
Pakollinen laitelasku
Pakollinen laitelasku

1. Vadelma Pi

Ota kädet Raspberry Pi -levylle. Raspberry Pi on Linux -käyttöinen yhden kortin tietokone. Raspberry Pi on todella halpa, pieni ja monipuolinen, joka on rakennettu helppokäyttöisestä ja toimivasta tietokoneesta, jotta oppijat voivat harjoittaa ohjelmoinnin ja ohjelmistokehityksen perusteita.

2. I2C Shield Raspberry Pi: lle

INPI2 (I2C -sovitin) tarjoaa Raspberry Pi 2/3 an I²C -portin käytettäväksi useiden I2C -laitteiden kanssa. Se on saatavana DCUBE Storesta.

3. Digitaalinen kosteus-, paine- ja lämpötila -anturi, BME280

BME280 on kosteus-, paine- ja lämpötila -anturi, jolla on nopea vasteaika ja korkea kokonaistarkkuus. Ostimme tämän anturin DCUBE Storesta.

4. I2C -liitäntäkaapeli

Käytimme I²C -kaapelia, joka on saatavana täältä DCUBE Storesta.

5. Micro -USB -kaapeli

Micro USB -kaapeli Virtalähde on ihanteellinen valinta Raspberry Pi -laitteen virransyöttöön.

6. Tulkitse Internet -yhteys Ethernet -kaapelin/WiFi -sovittimen kautta

Internet -yhteys voidaan ottaa käyttöön Ethernet -kaapelilla, joka on kytketty paikalliseen verkkoon ja Internetiin. Vaihtoehtoisesti voit muodostaa yhteyden langattomaan verkkoon käyttämällä langatonta USB -sovitinta, joka edellyttää määritystä.

7. HDMI -kaapeli (näyttö- ja liitäntäkaapeli)

Kaikkien HDMI-/DVI -näyttöjen ja televisioiden pitäisi toimia Pi: n näyttönä. Vaihtoehtoisesti voit etäkäyttää Pi: tä SSH: n kautta, jolloin näyttöä ei tarvita (vain kokeneille käyttäjille).

Vaihe 2: Piirin laitteistoyhteydet

Laitteiston liitännät piirille
Laitteiston liitännät piirille
Laitteiston liitännät piirille
Laitteiston liitännät piirille

Tee piiri piirustuksen mukaisesti. Yleensä liitännät ovat hyvin yksinkertaisia. Pysy rauhallisena ja noudata yllä olevia ohjeita ja kuvia, eikä sinulla pitäisi olla ongelmia. Oppiessamme opimme perusteellisesti elektroniikan perusteet laitteisto- ja ohjelmistotiedoista. Halusimme laatia yksinkertaisen elektroniikkakaavion tälle projektille. Elektroniset kaaviot ovat kuin piirustuksia. Laadi suunnitelma ja seuraa suunnittelua huolellisesti. Muutama elektroniikan peruskäsite voi olla hyödyllinen täällä!

Raspberry Pi ja I2C Shield -liitäntä

Ota ensin Raspberry Pi ja aseta I²C Shield sen päälle. Paina kilpeä varovasti, ja olemme tehneet tämän vaiheen yhtä helposti kuin piirakka (katso kuva).

Anturin ja Raspberry Pi: n liitäntä

Ota anturi ja liitä I²C -kaapeli siihen. Varmista, että I²C -lähtö kytketään AINA I²C -tuloon. Samaa on noudatettava myös Raspberry Pi -laitteessa, jossa I²C-suoja on asennettu GPIO-nastoihin.. Tämän yksinkertaisen Plug and Play -kaapelin avulla voit asentaa, vaihtaa levyjä tai lisätä lisää levyjä sovellukseen helposti.

Huomautus: Ruskean johdon tulee aina seurata maadoitusliitäntää (GND) yhden laitteen ulostulon ja toisen laitteen tulon välillä

Internet -yhteys on avainasemassa

Tässä on kaksi vaihtoehtoa. Voit joko liittää Raspberry Pi -laitteen verkkoon Ethernet -kaapelilla tai käyttää USB -WiFi -sovitinta WIFI -yhteyksiä varten. Joka tapauksessa, kunhan se on yhteydessä Internetiin, olet suojattu.

Piirin käynnistäminen

Liitä Micro USB -kaapeli Raspberry Pi -laitteen virtaliitäntään. Tsemppiä ja voila! Ryhmämme on tietoa.

Yhteys näyttöön

Voimme joko liittää HDMI -kaapelin näyttöön tai televisioon. Lisäksi voimme käyttää Raspberry Pi -laitetta kytkemättä sitä näyttöön etäyhteyden avulla. SSH on kätevä työkalu suojattuun etäkäyttöön. Voit käyttää siihen myös PUTTY -ohjelmistoa. Tämä vaihtoehto on tarkoitettu kokeneille käyttäjille, joten emme käsittele sitä yksityiskohtaisesti täällä.

Se on taloudellinen menetelmä, jos et halua käyttää paljon

Vaihe 3: Raspberry Pi -ohjelmointi Pythonissa

Raspberry Pi -ohjelmointi Pythonissa
Raspberry Pi -ohjelmointi Pythonissa

Raspberry Pi- ja BME280 -anturin Python -koodi. Se on saatavana Github -arkistostamme.

Ennen kuin jatkat koodia, muista lukea Readme -tiedoston ohjeet ja asentaa Raspberry Pi sen mukaan. Vain vähän aikaa valmistautuu asennukseen. Sääasema on joko maalla tai merellä sijaitseva laite, jossa on välineitä ja laitteita ilmakehän mittaamiseen, jotta saadaan tietoa sääennusteista ja tutkitaan säätä ja ilmastoa.

Koodi on selvästi edessäsi ja se on yksinkertaisimmassa muodossa, jonka voit kuvitella, eikä sinulla pitäisi olla ongelmia. Kysy silti jos mitään (Vaikka tiedät tuhat asiaa, kysy silti joltain, joka tietää).

Voit myös kopioida tämän anturin toimivan Python -koodin täältä.

# Jaetaan vapaaehtoisella lisenssillä.# Käytä sitä haluamallasi tavalla, voittoa tai ilmaiseksi, jos se sopii siihen liittyvien teosten lisensseihin. # BME280 # Tämä koodi on suunniteltu toimimaan BME280_I2CS I2C Mini -moduulin kanssa, joka on saatavana osoitteesta ControlEverything.com. #

tuoda smbus

tuonnin aika

# Hanki I2C -bussi

väylä = smbus. SMBus (1)

# BME280 -osoite, 0x76 (118)

# Lue data takaisin 0x88 (136), 24 tavua b1 = bus.read_i2c_block_data (0x76, 0x88, 24)

# Muunna tiedot

# Lämpötilakerroimet dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] jos dig_T2> 32767: dig_T2 -= 65536 dig_T3 = b1 [5] * 256 + b1 [4] jos dig_T3> 32767: dig_T3 -= 65536

# Painekertoimet

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

# BME280 -osoite, 0x76 (118)

# Lue tiedot takaisin 0xA1: stä (161), 1 tavun dig_H1 = väylä.lukun_tavu (0x76, 0xA1)

# BME280 -osoite, 0x76 (118)

# Lue tiedot takaisin 0xE1 (225), 7 tavua b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)

# Muunna tiedot

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

# BME280 -osoite, 0x76 (118)

# Valitse säätökosteusrekisteri, 0xF2 (242) # 0x01 (01) Kosteuden ylinäytteenotto = 1 väylä.write_byte_data (0x76, 0xF2, 0x01) # BME280 -osoite, 0x76 (118) # Valitse kontrollimittausrekisteri, 0xF4 (244) # 0x27 (39) Paineen ja lämpötilan ylinäytteenottotaajuus = 1 # Normaalitila väylä.write_byte_data (0x76, 0xF4, 0x27) # BME280 -osoite, 0x76 (118) # Valitse määritysrekisteri, 0xF5 (245) # 0xA0 (00) Valmiusaika = 1000 ms väylä.write_byte_data (0x76, 0xF5, 0xA0)

aika. unta (0,5)

# BME280 -osoite, 0x76 (118)

# Lue tiedot takaisin 0xF7 (247), 8 tavua # Paine MSB, Paine LSB, Paine xLSB, Lämpötila MSB, Lämpötila LSB # Lämpötila xLSB, Kosteus MSB, Kosteus LSB data = bus.read_i2c_block_data (0x76, 0xF7, 8)

# Muunna paine- ja lämpötilatiedot 19-bittisiksi

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

# Muunna kosteustiedot

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

# Lämpötilan poikkeaman laskelmat

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

# Painepoikkeamalaskelmat

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

# Kosteuspoikkeamalaskelmat

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))) kosteus = var_H * (1,0 - dig_H1 * var_H / 524288.0) jos kosteus> 100.0: kosteus = 100.0 elif kosteus <0.0: kosteus = 0.0

# Tulosta tiedot näytölle

tulosta "Lämpötila celsiusasteissa: %.2f C" %cTempitulostus "Lämpötila Fahrenheit: %.2f F" %fTemp -tulostus "Paine: %.2f hPa" %painetuloste "Suhteellinen kosteus: %.2f %%" %kosteus

Vaihe 4: Running Code

Juoksu koodi
Juoksu koodi

Lataa nyt (tai git pull) koodi ja avaa se Raspberry Pi: ssä.

Suorita komennot kääntääksesi ja ladataksesi koodin päätelaitteeseen ja katso tulostus näytöllä. Muutaman sekunnin kuluttua se näyttää kaikki parametrit. Kun olet varmistanut, että kaikki toimii hyvin, voit kehittää mielenkiintoisempia.

Vaihe 5: Hyödyntäminen käytännön maailmassa

BME280 saavuttaa korkean suorituskyvyn kaikissa sovelluksissa, joissa vaaditaan kosteuden ja paineen mittaamista. Nämä uudet sovellukset ovat kontekstitietoisuutta, esim. Ihon tunnistus, huoneenmuutoksen havaitseminen, kuntosalin seuranta / hyvinvointi, varoitus kuivuudesta tai korkeista lämpötiloista, äänenvoimakkuuden ja ilmavirran mittaus, kodin automaation ohjaus, ohjauksen lämmitys, ilmanvaihto, ilmastointi (LVI), esineiden internet (IoT), GPS-parannus (esim. Ensimmäiseen korjaukseen tarvittava aika, kuolleen laskenta, kaltevuuden tunnistus), sisänavigointi (lattian havaitseminen, hissin tunnistus), ulkona navigointi, vapaa-ajan ja urheilusovellukset, sääennuste ja pystysuuntaisen nopeuden ilmaisu (nousu/uppoaminen) Nopeus).

Vaihe 6: Johtopäätös

Toivottavasti tämä projekti inspiroi uusia kokeiluja. Kehittyneemmän sääaseman tekeminen voi sisältää joitain muita antureita, kuten sademittari, valoanturi, tuulen nopeusmittari jne. Voit lisätä niitä ja muuttaa koodia. Meillä on YouTubessa video -opetusohjelma, jossa on I²C -anturin perustoiminnot Rasp Pi: n kanssa. On todella hämmästyttävää nähdä I²C -viestinnän tulokset ja toiminta. Tarkista myös. Hauskaa rakentamista ja oppimista! Kerro meille, mitä pidät tästä ohjeesta. Haluaisimme tehdä joitain parannuksia tarvittaessa.

Suositeltava: