Innehållsförteckning:

Väderstation med Raspberry Pi med BME280 i Python: 6 steg
Väderstation med Raspberry Pi med BME280 i Python: 6 steg

Video: Väderstation med Raspberry Pi med BME280 i Python: 6 steg

Video: Väderstation med Raspberry Pi med BME280 i Python: 6 steg
Video: BME280 Sensor Test with Arduino: pressure, humidity and temperature for the New Chronograph Project 2024, Juli
Anonim
Image
Image
Imperativ utrustningsräkning
Imperativ utrustningsräkning

is maith an scéalaí an aimir (vädret är en bra berättare)

Med frågor om global uppvärmning och klimatförändringar blir det globala vädermönstret oregelbundet över hela vår värld som leder till ett antal väderrelaterade naturkatastrofer (torka, extrema temperaturer, översvämningar, stormar och skogsbränder), en väderstation verkar vara en nödvändig ont hemma. Du lär dig mycket om grundläggande elektronik från ett väderstationsprojekt med hjälp av ett gäng billiga delar och sensorer. Det är ganska enkelt att installera och på nolltid kan du ha det.

Steg 1: Imperativ utrustningsräkning

Imperativ utrustningsräkning
Imperativ utrustningsräkning
Imperativ utrustningsräkning
Imperativ utrustningsräkning
Imperativ utrustningsräkning
Imperativ utrustningsräkning

1. En hallon Pi

Få tag på en Raspberry Pi -bräda. Raspberry Pi är en Linux -driven enkelkortsdator. Raspberry Pi är riktigt billig, liten och mångsidig byggd av en tillgänglig och funktionell dator för eleverna att utöva grunderna för programmering och mjukvaruutveckling.

2. I2C Shield för Raspberry Pi

INPI2 (I2C -adaptern) tillhandahåller Raspberry Pi 2/3 en I²C -port för användning med flera I2C -enheter. Den är tillgänglig i DCUBE Store.

3. Digital fukt-, tryck- och temperatursensor, BME280

BME280 är en fukt-, tryck- och temperatursensor som har snabb responstid och hög övergripande noggrannhet. Vi köpte den här sensorn från DCUBE Store.

4. I2C -anslutningskabel

Vi använde I²C -kabeln som finns här i DCUBE Store.

5. Micro USB -kabel

Mikro -USB -kabeln Strömförsörjning är ett idealiskt val för att driva Raspberry Pi.

6. Tolka Internetåtkomst via EthernetCable/WiFi -adapter

Internetåtkomst kan aktiveras via en Ethernet -kabel som är ansluten till ett lokalt nätverk och internet. Alternativt kan du ansluta till ett trådlöst nätverk med en trådlös USB -dongel, vilket kräver konfiguration.

7. HDMI -kabel (Display & anslutningskabel)

Alla HDMI/DVI -skärmar och alla TV -apparater ska fungera som en skärm för Pi. Alternativt kan du fjärråtkomst till Pi via SSH, vilket innebär att behovet av en bildskärm (endast avancerade användare) avvisas.

Steg 2: Hårdvaruanslutningar för krets

Hårdvaruanslutningar för kretsar
Hårdvaruanslutningar för kretsar
Hårdvaruanslutningar för kretsar
Hårdvaruanslutningar för kretsar

Gör kretsen enligt schemat. I allmänhet är anslutningarna mycket enkla. Var lugn och följ instruktionerna och bilderna ovan, så ska du inte ha några problem. Medan vi lärde oss fick vi grundligt med elektronikens grundläggande kunskaper om hårdvara och mjukvara. Vi ville ta fram en enkel elektronikschema för detta projekt. Elektroniska scheman är som ritningar. Rita upp en ritning och följ designen noggrant. Några grundläggande begrepp inom elektronik kan vara användbara här!

Anslutning av Raspberry Pi och I2C Shield

Ta först Raspberry Pi och placera I²C Shield på den. Tryck försiktigt på skärmen och vi är klara med det här steget så enkelt som paj (se bilden).

Anslutning av sensorn och Raspberry Pi

Ta sensorn och anslut I²C -kabeln med den. Se till att I²C -utgång ALLTID ansluts till I²C -ingången. Detsamma måste följas för Raspberry Pi med I²C-skölden monterad över GPIO-stiften. Vi rekommenderar användning av I²C-kablarna eftersom det förnekar behovet av avläsning av pinout, lödning och sjukdomskänsla orsakad av ens minsta glidning. Med denna enkla plug and play -kabel kan du enkelt installera, byta ut kort eller lägga till fler kort i en applikation.

Obs: Den bruna tråden bör alltid följa jordanslutningen (GND) mellan utgången på en enhet och ingången till en annan enhet

Internetanslutning är nyckeln

Du har två val här. Antingen kan du ansluta Raspberry Pi till nätverket med en Ethernet -kabel eller använda en USB till WiFi -adapter för WIFI -anslutning. Hur som helst, så länge den är ansluten till internet du är täckt.

Startar kretsen

Anslut Micro USB -kabeln till strömuttaget på Raspberry Pi. Punch upp och voila! Vår trupp är information.

Anslutning till skärm

Vi kan antingen ha HDMI -kabeln ansluten till en bildskärm eller till en TV. Dessutom kan vi komma åt en Raspberry Pi utan att ansluta den till en bildskärm med fjärråtkomst. SSH är ett praktiskt verktyg för säker fjärråtkomst. Du kan också använda PUTTY -programvaran för det. Detta alternativ är för avancerade användare så vi kommer inte att täcka det i detalj här.

Det är en ekonomisk metod om du inte vill spendera mycket

Steg 3: Raspberry Pi -programmering i Python

Raspberry Pi -programmering i Python
Raspberry Pi -programmering i Python

Python -koden för Raspberry Pi och BME280 -sensorn. Den är tillgänglig i vårt Github -arkiv.

Innan du går vidare till koden, se till att du läser instruktionerna i Readme -filen och konfigurerar din Raspberry Pi enligt den. Bara en liten stund gör dig redo för installation. En väderstation är en anläggning, antingen på land eller till sjöss, med instrument och utrustning för mätning av atmosfäriska förhållanden för att ge information om väderprognoser och för att studera väder och klimat.

Koden är helt klart framför dig och den är i den enklaste form som du kan tänka dig och du bör inte ha några problem. Fråga fortfarande om någon (Även om du vet tusen saker, fråga fortfarande någon som vet).

Du kan också kopiera den fungerande Python -koden för den här sensorn härifrån.

# Distribueras med en fri viljelicens.# Använd den hur du vill, vinst eller gratis, förutsatt att den passar in i licenserna för dess associerade verk. # BME280 # Denna kod är utformad för att fungera med BME280_I2CS I2C Mini -modulen som är tillgänglig från ControlEverything.com. #

importera smbus

importtid

# Skaffa I2C -buss

buss = smbus. SMBus (1)

# BME280 -adress, 0x76 (118)

# Läs tillbaka data från 0x88 (136), 24 byte b1 = bus.read_i2c_block_data (0x76, 0x88, 24)

# Konvertera data

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

# Tryckkoefficienter

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

# BME280 -adress, 0x76 (118)

# Läs tillbaka data från 0xA1 (161), 1 byte dig_H1 = bus.read_byte_data (0x76, 0xA1)

# BME280 -adress, 0x76 (118)

# Läs tillbaka data från 0xE1 (225), 7 byte b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)

# Konvertera data

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

# BME280 -adress, 0x76 (118)

# Välj kontrollfuktighetsregister, 0xF2 (242) # 0x01 (01) Luftfuktighetsöverprovning = 1 buss.write_byte_data (0x76, 0xF2, 0x01) # BME280 -adress, 0x76 (118) # Välj kontrollmätningsregister, 0xF4 (244) # 0x27 (39) Tryck och temperatur Översamplingshastighet = 1 # Normalt läge buss. Skriv_byte_data (0x76, 0xF4, 0x27) # BME280 -adress, 0x76 (118) # Välj konfigurationsregister, 0xF5 (245) # 0xA0 (00) Standby -tid = 1000 ms buss.write_byte_data (0x76, 0xF5, 0xA0)

tid. sover (0,5)

# BME280 -adress, 0x76 (118)

# Läs tillbaka data från 0xF7 (247), 8 byte # Tryck MSB, tryck LSB, tryck xLSB, temperatur MSB, temperatur LSB # Temperatur xLSB, luftfuktighet MSB, luftfuktighet LSB data = bus.read_i2c_block_data (0x76, 0xF7, 8)

# Konvertera tryck- och temperaturdata till 19-bitar

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

# Konvertera luftfuktighetsdata

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

# Temperaturförskjutningsberäkningar

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

# Beräkningar av tryckförskjutning

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

# Beräkning av luftfuktighetskompensation

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_))) luftfuktighet = var_H * (1,0 - dig_H1 * var_H / 524288,0) om fuktighet> 100,0: fuktighet = 100,0 elif fuktighet <0,0: luftfuktighet = 0,0

# Mata ut data till skärmen

tryck "Temperatur i Celsius: %.2f C" %cTemp tryck "Temperatur i Fahrenheit: %.2f F" %fTemp utskrift "Tryck: %.2f hPa" %tryck tryck "Relativ luftfuktighet: %.2f %%" %luftfuktighet

Steg 4: Löpningskoden

Löpningskoden
Löpningskoden

Ladda ner (eller git pull) koden och öppna den i Raspberry Pi.

Kör kommandona för att kompilera och ladda upp koden på terminalen och se utdata på displayen. Efter några sekunder kommer alla parametrar att visas. Efter att ha sett till att allt fungerar bra kan du utveckla några mer intressanta.

Steg 5: Användning i praktisk värld

BME280 uppnår hög prestanda i alla applikationer som kräver fukt- och tryckmätning. Dessa nya applikationer är kontextmedvetenhet, t.ex. Huddetektering, upptäckt av rumsbyte, Fitnessövervakning / välbefinnande, Varning angående torrhet eller höga temperaturer, Mätning av volym och luftflöde, Hemmautomatiseringskontroll, Kontrollvärme, Ventilation, Luftkonditionering (HVAC), Internet of Things (IoT), GPS-förbättring (t.ex. förbättring av tid-till-första-fix, dödräkning, detektering av lutning), inomhusnavigering (byte av golvdetektering, hissdetektering), utomhusnavigering, fritids- och sportapplikationer, väderprognoser och vertikal hastighetsindikering (stigning/sänkning) Fart).

Steg 6: Slutsats

Hoppas detta projekt inspirerar till ytterligare experiment. Att göra en mer sofistikerad väderstation kan innebära några fler sensorer som regnmätare, ljussensor, vindmätare (vindhastighet) etc. Du kan lägga till dem och ändra koden. Vi har en videohandledning på YouTube som har den grundläggande funktionen för I²C -sensorn med Rasp Pi. Det är verkligen fantastiskt att se resultaten och arbetet med I²C -kommunikationen. Kontrollera det också. Ha kul att bygga och lära! Låt oss veta vad du tycker om detta instruerbara. Vi gör gärna några förbättringar om det behövs.

Rekommenderad: