Innholdsfortegnelse:

Bærbar værstasjon for natthimmelsobservatører: 7 trinn (med bilder)
Bærbar værstasjon for natthimmelsobservatører: 7 trinn (med bilder)

Video: Bærbar værstasjon for natthimmelsobservatører: 7 trinn (med bilder)

Video: Bærbar værstasjon for natthimmelsobservatører: 7 trinn (med bilder)
Video: Arduino Weather Station 2024, Juli
Anonim
Bærbar værstasjon for natthimmelsobservatører
Bærbar værstasjon for natthimmelsobservatører

Lysforurensning er et av mange problemer i verden. For å løse dette problemet må vi vite hvor mye nattehimmelen er forurenset med kunstig lys. Mange elever med lærere i verden prøver å måle lysforurensning med dyre sensorer. Jeg bestemte meg for å bytte mitt bærbare luxmeter (for mer sjekk tidligere instruksjonsprosjekt Portable Luxmeter) til værstasjon med TSL2591 -sensor. Denne sensoren er sensitiv nok til å måle nattforurensning. Jeg legger også til HTU21D for måling av temperatur og fuktighet.

Trinn 1: Hva er nattforurensning og hvordan den måler

Hva er nattforurensning og hvordan den måler
Hva er nattforurensning og hvordan den måler

Nattforurensning er lys fra lamper, biler, hus, enorme LCD -paneler i byen og hvert lys laget av mennesker. Det lette kallet kunstig. For observatører er kunstig lys hovedproblemet for å se stjerner fra byen, og de må gå utenfor byen. For mennesker er høy lysforurensning skadelig. Og også for trær, gress og dyr.

For å kontrollere lysforurensning av stedet ditt, kan du se lysforurensningskart her

Det er bare modell, og reelle verdier kan variere. Det er derfor jeg opprettet det luxmeteret.

For måling av lysforurensning måler jeg bare lux og beregner størrelsen/ arsec2.

Jeg kan beregne fra lux til candela per suqare meter:

1 cd/m2 = 1 lux

Størrelse per kvadratbuesekvens (mag/arcsec2) beskriver nattehimmels bakgrunn (det kaller overflatelysstyrke).

Mer på wiki: Surface brightness

For å beregne cd/m2 til mag/arcsec2 er formelen:

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

unihedron.com/projects/darksky/magconv.php

Trinn 2: BOM

BOM
BOM

For dette prosjektet trenger du:

1. WEMOS D1 Mini eller en hvilken som helst mikrokontroller

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

WEMOS D1 MINI (Yanwen Economic Air Mail)

WEMOS D1 MINI (AliExpress Standard Shipping)

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

usb -kabel for programmering og opplasting av kode til wemos

2. TSL2591 Sensor

TSL2591 (Yanwen Economic Air Mail)

TSL2591 (Kina postregistrert luftpost)

TSL2591 (Kina postregistrert luftpost)

3. HTU21D temperatur- og fuktighetssensor

HTU21D (Cainiao Super Economy)

HTU21D (Yanwen Economic Air Mail - gratis frakt)

4. OLED -skjerm 0,96 (128 x 64)

OLED -skjerm

OLED -skjerm

OLED -skjerm

5. 18650 batteri

18650 litiumionbatteri

18650 litiumionbatteri

batteri 18650 holder

6. TP4056 lademodul

tp4056

tp4056

7. bryterknapper eller dyppegenser

swtich rød dukkert

swtichers, mange forskjellige

8. breadboard og dupont kabler

lite brødbrett

breadboard kit

9. sak, lager jeg av tre + tape

rød tape

Prusa 3D -skriver, jeg håper jeg skal gjøre etui av plast: D

Trinn 3: Krets

Krets
Krets

Kretsen er ganske enkel:

Koble alle i2c -modulene (TSL2591, OLED, HTU21D) til SCL- og SDA -pinner på wemos (SDA -> D2, SCL -> D1).

Driv dem med 3,3 V fra wemos.

Koble pluss terminalen til batteriet til 5V pin på wemos og batteri + pin på tp4056 lademodul til pluss terminal på batteriet.

Koble alle grunner sammen.

Trinn 4: HTU21D -sensor

HTU21D -sensor
HTU21D -sensor

Jeg kjøper ny temperatursensor, som måler med nøyaktighet 0,3 ° C!

Ting du bør vite om denne sensoren (fra sparkfun):

  • Bruker I2C -grensesnittet
  • Typisk fuktighetsnøyaktighet på ± 2%
  • Typisk temperaturnøyaktighet på ± 0,3 ° C
  • Fungerer fra 0 til 100% fuktighet, men denne sensoren anbefales ikke for tøffe miljøer der den kan komme i kontakt med vann (for eksempel regn).
  • 3.3V sensor - bruk inline logiske nivåomformere eller 10k motstander for å begrense 5V signaler
  • Bare en HTU21D -sensor kan bo på I2C -bussen om gangen

Mitt sammendrag: det er en god sensor, fordi den måler med nøyaktighet 0,3 ° C og både - temperatur og fuktighet. Fordeler er I2C -forstyrrelser og ulemper 3.3V, men det spiller ingen rolle i mitt tilfelle.

Trinn 5: TSL2591

TSL2591
TSL2591

Denne sensoren er god til å måle forurensning av nattehimmelen på grunn av sensitiviteten (til 188 mikro lux!).

1. er dioder med mulig ir og fullt mål. Jeg bruker den ikke.

2. spenningsregulator fra 5V til 3,3V

Chipspesifikasjoner (fra adafruit):

  • Omtrentlig menneskelig øyerespons
  • Ekstremt stort dynamisk område 1 til 600, 000, 000 tellinger
  • Lux -område: 188 uLux -følsomhet, opptil 88.000 Lux -inngangsmålinger.
  • Temperaturområde: -30 til 80 *C
  • Spenningsområde: 3,3-5V inn i regulatoren
  • Grensesnitt: I2C
  • Dette kortet/brikken bruker I2C 7-biters adresse 0x29 (fast)
  • Dimensjoner: 19mm x 16mm x 1mm /.75 "x.63" x.04 "Vekt: 1,1 g
  • 2 dioder for måling begge - IR og Fullspektrum

Sammendrag:

188 uLux er perferkt, også I2C -kommunikasjon er enkel. Kanskje problemet kan løses I2C -adressen (0x29). Ombord regulatoren er også god og mulig å bruke sensoren om vinteren (frost).

Trinn 6: Kode

Du trenger disse bibliotekene (jeg legger dem til i 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 bruke min, eller lage din egen. Ikke glem å angi maksimal integrasjonstid (600 MS) og gain til maks (GAIN_MAX) for måling av nattehimmelen.

Hvis du prøver å bruke koden min, kan du laste ned ino -filen. Når jeg kopierer koden min, kan det være noe galt med biblioteker

Jeg bruker å laste ned image av månen bare for moro skyld. Du kan bruke hvilken som helst, bare bruk denne siden for å få matrise:

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 kontroller for tegnbaserte LCD-skjermer. https://unihedron.com/projects/darksky/magconv.php… #include

#inkludere

#include #include #include "Adafruit_HTU21DF.h" #include "Adafruit_TSL2591.h" int counter; // OLED display TWI address #define OLED_ADDR 0x3C Adafruit_SSD1306 display (-1); // - 1 for omstartvisning med omstartsknapp på arduino bord Adafruit_HTU21DF htu = Adafruit_HTU21DF (); Adafruit_TSL2591 tsl = Adafruit_TSL2591 (2591); // legg inn et nummer for sensoridentifikatoren (for senere bruk) uint32_t lum; uint16_t ir, full; int ulux; flyte lux; flyte temp; flyte rel_hum; float mag_arcsec2; // visual mags/arcsecond² [verdi i mag/arcsec2] = Log10 ([verdi 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 usignert 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, 0xff, 0xff 0xfc, 0x07, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x07, 0xff, 0xf8, 0xff, 0xff, 0xff 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,, 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, 0xf, 0x00,, 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, 0x00, 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, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 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, 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, 0xff 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, 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, 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, 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, 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, 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, 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, 0x0, 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}; ugyldig oppsett () {// 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 // oppsett for oled display display.begin (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 (HVIT); display.setFont (& FreeSerif9pt7b); display.clearDisplay (); } hulrom () {lux = 0; ulux = 0; mag_arcsec2 = 0; temp = 0; rel_hum = 0; forsinkelse (100); lum = tsl.getFullLuminosity (); ir = lum >> 16; full = lum & 0xFFFF; forsinkelse (100); lux = tsl.calculateLux (full, 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 ();}

Trinn 7: Inne

Innsiden
Innsiden
Innsiden
Innsiden

Jeg lager eget etui, og jeg bruker brødbrett med dupontkabler som du kan se.

Jeg bruker TP4056 for å lade batteri med usb -kabel (trenger swtich dip jumper).

For å slå på/av bruker jeg dip jumper.

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

For nattehimmelen skal TSL2591 vise fra 0 til 1000 000 microlux (ulux) og tilsvarende mag/bue sek2

(ca. 14 til 22 mag/arsec2).

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

Anbefalt: