Indholdsfortegnelse:

Bærbar vejrstation til nattehimmelobservatører: 7 trin (med billeder)
Bærbar vejrstation til nattehimmelobservatører: 7 trin (med billeder)

Video: Bærbar vejrstation til nattehimmelobservatører: 7 trin (med billeder)

Video: Bærbar vejrstation til nattehimmelobservatører: 7 trin (med billeder)
Video: Davis Vantage Pro 2 weather station a windy day #shorts #weather #weatherstation 2024, Juli
Anonim
Bærbar vejrstation til nattehimmelobservatører
Bærbar vejrstation til nattehimmelobservatører

Lysforurening er et af mange problemer i verden. For at løse dette problem skal vi vide, hvor meget nathimlen er forurenet med kunstigt lys. Mange studerende med lærere i verden forsøger at måle lysforurening med dyre sensorer. Jeg besluttede mig for at ændre mit bærbare luxmeter (for mere tjek tidligere instruktører projekt Portable Luxmeter) til vejrstation med TSL2591 sensor. Denne sensor er følsom nok til at måle natforurening. Jeg tilføjer også HTU21D til måling af temperatur og luftfugtighed.

Trin 1: Hvad er natforurening, og hvordan måles det

Hvad er natforurening, og hvordan måles det
Hvad er natforurening, og hvordan måles det

Natforurening er lys fra lamper, biler, huse, enorme LCD -paneler i byen og ethvert lys fremstillet af mennesker. Det lys kaldes kunstigt. For observatører er kunstigt lys det største problem at se stjerner fra byen, og de skal gå uden for byen. For mennesker er forurening med højt lys skadeligt. Og også til træer, græs og dyr.

For at kontrollere lysforurening af dit sted kan du se lysforureningskort her

Det er kun model, og reelle værdier kan variere. Derfor skabte jeg det luxmeter.

Til måling af lysforurening måler jeg kun lux og beregner størrelse/ arsec2.

Jeg kan beregne fra lux til candela per suqare meter:

1 cd/m2 = 1 lux

Størrelse pr. Kvadratisk buesekund (mag/buesek. 2) beskriver nattehimmelens baggrund (det kalder overfladens lysstyrke).

Mere om wiki: Surface brightness

Til beregning af cd/m2 til mag/arcsec2 er formlen:

[værdi i mag/arcsec2] = Log10 ([værdi i cd/m2]/108000)/-0,4

unihedron.com/projects/darksky/magconv.php

Trin 2: BOM

BOM
BOM

Til dette projekt har du brug for:

1. WEMOS D1 Mini eller en hvilken som helst mikrokontroller

(Jeg bruger wemos, fordi den er den mindste, med usb -port kan du prøve Arduino Nano)

WEMOS D1 MINI (Yanwen økonomisk luftpost)

WEMOS D1 MINI (AliExpress Standard forsendelse)

WEMOS D1 MINI 10 stk. (Kina postregistreret luftpost - gratis forsendelse)

usb -kabel til programmering og upload af kode til wemos

2. TSL2591 Sensor

TSL2591 (Yanwen Economic Air Mail)

TSL2591 (Kina postregistreret luftpost)

TSL2591 (Kina postregistreret luftpost)

3. HTU21D temperatur- og fugtighedsføler

HTU21D (Cainiao Super Economy)

HTU21D (Yanwen Economic Air Mail - gratis forsendelse)

4. OLED -skærm 0,96 (128 x 64)

OLED display

OLED display

OLED display

5. 18650 batteri

18650 lithium -ion batteri

18650 lithium -ion batteri

batteri 18650 holder

6. TP4056 opladningsmodul

tp4056

tp4056

7. skifte knapper eller dip jumper

swtich rød dip

swtichers, en masse forskellige

8. brødbræt og dupont kabler

lille brødbræt

brødbræt kit

9. sag, jeg opretter af træ + tape

bureaukrati

Prusa 3D -printer, jeg håber, jeg vil gøre etui fra plastik: D

Trin 3: Kredsløb

Kredsløb
Kredsløb

Kredsløbet er ret simpelt:

Tilslut alle i2c -moduler (TSL2591, OLED, HTU21D) til SCL- og SDA -ben på wemos (SDA -> D2, SCL -> D1).

Forsyn dem med 3,3 V fra wemos.

Tilslut batteriets plusterminal til 5V pin på wemos og batteri + pin på tp4056 opladningsmodul til plus terminal på batteri.

Tilslut alle grunde sammen.

Trin 4: HTU21D -sensor

HTU21D -sensor
HTU21D -sensor

Jeg køber ny temperatursensor, som måler med nøjagtighed 0,3 ° C!

Ting du bør vide om denne sensor (fra sparkfun):

  • Bruger I2C -grænsefladen
  • Typisk fugtighedsnøjagtighed på ± 2%
  • Typisk temperaturnøjagtighed på ± 0,3 ° C
  • Fungerer fra 0 til 100% luftfugtighed, men denne sensor anbefales ikke til barske miljøer, hvor den kan komme i kontakt med vand (f.eks. Regn).
  • 3.3V sensor - brug inline logiske niveauomformere eller 10k modstande til at begrænse 5V signaler
  • Kun en HTU21D -sensor kan ligge på I2C -bussen ad gangen

Mit sammendrag: det er en god sensor, fordi den måler med nøjagtighed 0,3 ° C og både - temperatur og fugtighed. Fordele er I2C -interferens og ulemper ved 3.3V, men det betyder ikke noget i mit tilfælde.

Trin 5: TSL2591

TSL2591
TSL2591

Denne sensor er god til at måle forurening af nattehimlen på grund af dens følsomhed (til 188 mikro lux!).

1. er dioder med mulig ir og fuldt mål. Jeg bruger den ikke.

2. spændingsregulator fra 5V til 3,3V

Chipspecifikationer (fra adafruit):

  • Tilnærmer menneskeligt øjenrespons
  • Ekstremt bredt dynamisk område 1 til 600.000.000 tællinger
  • Lux Range: 188 uLux følsomhed, op til 88.000 Lux input målinger.
  • Temperaturområde: -30 til 80 *C
  • Spændingsområde: 3,3-5V til indbygget regulator
  • Grænseflade: I2C
  • Dette kort/chip bruger I2C 7-bit adresse 0x29 (fast)
  • Dimensioner: 19 mm x 16 mm x 1 mm /.75 "x, 63" x.04 "Vægt: 1,1 g
  • 2 dioder til måling af begge - IR og fuldt spektrum

Resumé:

188 uLux er perferct, også I2C -kommunikation er enkel. Måske kan problemet løses I2C -adresse (0x29). Ombord på regulatoren er også god og mulig at bruge sensor om vinteren (frost).

Trin 6: Kode

Du har brug for disse biblioteker (jeg tilføjer dem til en zip -fil):

  • Adafruit-GFX-Library-master
  • adafruit_gfx_library_master
  • Adafruit_HTU21DF_Library-master
  • Adafruit_Sensor-master
  • Adafruit_TSL2591_Library-master

Kode: du kan bruge min, eller oprette din egen. Glem ikke at indstille maksimal integrationstid (600 MS) og gain til max (GAIN_MAX) for måling af nattehimlen.

Hvis du prøver at bruge min kode, skal du downloade ino -fil. Når jeg kopierer fra min instruerbare kode, er der noget galt med biblioteker

Jeg bruger indlæsning af billede af månen bare for sjov. Du kan bruge enhver, bare brug denne side til get array:

javl.github.io/image2cpp/

//https://lastminuteengineers.com/oled-display-arduino-tutorial///https://javl.github.io/image2cpp/ // mcd til størrelsesorden https://unihedron.com/projects/darksky/magconv.php… // HD44780 er en controller til karakterbaserede flydende krystaldisplays (LCD). https://unihedron.com/projects/darksky/magconv.php… #include

#omfatte

#include #include #include "Adafruit_HTU21DF.h" #include "Adafruit_TSL2591.h" int counter; // OLED-display TWI-adresse #define OLED_ADDR 0x3C Adafruit_SSD1306 display (-1); // - 1 til genstart display med genstart knap på arduino board Adafruit_HTU21DF htu = Adafruit_HTU21DF (); Adafruit_TSL2591 tsl = Adafruit_TSL2591 (2591); // indtast et nummer til sensoridentifikatoren (til senere brug) uint32_t lum; uint16_t ir, fuld; int ulux; float lux; flyde temp; flyde rel_hum; float mag_arcsec2; // visuelle mags/buesekund² [værdi i mag/arcsec2] = Log10 ([værdi i cd/m2]/108000)/-0,4 // symboler // grad for Celsius const unsigned char degree PROGMEM = {0xe, 0x11, 0x11, 0x11, 0xe, 0x0, 0x0, 0x0}; // eksponent 2 const usigneret char -eksponent PROGMEM = {0xe, 0x1b, 0x3, 0x6, 0xc, 0x18, 0x1f, 0x0}; // 'moon_logo', 128x64px const unsigned char intro PROGMEM = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xc0, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfd, 0x, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x03, 0xff, 0xc0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x, 0xfc, 0x07, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x07, 0xff, 0xf8, 0xff, 0xff, 0x, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xbe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xcc, 0xff, 0xff, 0x8f, 0x,, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x3f, 0xc0, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf, 0xc0, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x3f, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x3f, 0x80, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x0, 0x3,, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x3f, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x3f, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x ff, 0xff, 0xf0, 0x00, 0x3f, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x3f, 0xff, 0x, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xe0, 0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x60, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x07, 0xff, 0x, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x18, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x38, 0x 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x48, 0x7f, 0xff, 0xff, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x80, 0x3f, 0xff, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xff, 0x, 0xff, 0xff, 0xc0, 0xc4, 0x1f, 0xff, 0xff, 0xfc, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x60, 0x0f, 0x, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xf0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x, 0xc0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x01, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0, 0x43, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x4f, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x5f, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x3f, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x0,, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x01, 0xff, 0xff, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x03, 0xff, 0xff,, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x01, 0x0f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x01, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x 00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x01, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x1f, 0xff, 0xc7, 0xff, 0xff, 0xff, 0x, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x03, 0x, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; ugyldig opsætning () {// htu21d htu.begin (); // tsl2591 sensor_t sensor; tsl.getSensor (& sensor); tsl.setGain (TSL2591_GAIN_MAX); // MAX, HIGH MED, LOW, tsl.setTiming (TSL2591_INTEGRATIONTIME_600MS); // 100MS, 200 MS, 300MS, 400MS, 500MS, 600MS // opsætning til oled display display. Begyndt (SSD1306_SWITCHCAPVCC, OLED_ADDR); display.clearDisplay (); display.display (); display.drawBitmap (0, 0, intro, 128, 64, WHITE); display.display (); forsinkelse (1000); display.setTextSize (1); display.setTextColor (HVID); display.setFont (& FreeSerif9pt7b); display.clearDisplay (); } hulrum () {lux = 0; ulux = 0; mag_arcsec2 = 0; temp = 0; rel_hum = 0; forsinkelse (100); lum = tsl.getFullLuminosity (); ir = lum >> 16; fuld = lum & 0xFFFF; forsinkelse (100); lux = tsl.calculateLux (fuld, ir); // lysintensitet i microlux ulux = lux*1000000; hvis (ulux <0) {ulux = 0; } mag_arcsec2 = log10 (lux/108000)/-0,4; // (log ((ulux/108000)) /(-0.4) temp = htu.readTemperature (); rel_hum = htu.readHumidity (); display_values ();} void display_values () {//display.drawPixel(120, 50, WHITE); display.clearDisplay (); display.setCursor (1, 15); display.print (temp); display.drawBitmap (42, 2, degree, 8, 5, WHITE); display.setCursor (50, 15); display.print ("C"); display.setCursor (70, 15); display.print (rel_hum); display.setCursor (114, 15); display.print ("%"); display.drawLine (1, 20, 127, 20, WHITE); display.drawLine (67, 1, 67, 20, WHITE); display.setCursor (1, 35); display.print ("ulux ="); display.setCursor (50, 35); display.print (ulux); display.setCursor (1, 55); display.print ("mag/arsec"); display.drawBitmap (70, 45, eksponent, 8, 8, WHITE); display. setCursor (83, 55); display.print (mag_arcsec2); display.display ();}

Trin 7: Inde

Inde
Inde
Inde
Inde

Jeg opretter egen sag, og jeg bruger brødbræt med dupontkabler, som du kan se.

Jeg bruger TP4056 til opladning af batteri med usb -kabel (brug swtich dip jumper).

Til tænd/sluk bruger jeg dip jumper.

For dagslys viser TSL2591 0 og mag/arcsec2 er nan.

For nattehimlen skal TSL2591 vise fra 0 til 1000 000 microlux (ulux) og tilhørende mag/arcsec2

(ca. 14 til 22 mag/arsec2).

For fullMoon målte jeg 50k ulux, hvilket er 0,05 lux.

Anbefalede: