สารบัญ:

สถานีตรวจอากาศแบบพกพาสำหรับผู้สังเกตการณ์ท้องฟ้ายามค่ำคืน: 7 ขั้นตอน (พร้อมรูปภาพ)
สถานีตรวจอากาศแบบพกพาสำหรับผู้สังเกตการณ์ท้องฟ้ายามค่ำคืน: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: สถานีตรวจอากาศแบบพกพาสำหรับผู้สังเกตการณ์ท้องฟ้ายามค่ำคืน: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: สถานีตรวจอากาศแบบพกพาสำหรับผู้สังเกตการณ์ท้องฟ้ายามค่ำคืน: 7 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: "กลุ่มดาวบนท้องฟ้า" ความงดงามของท้องฟ้าในยามค่ำคืน 2024, กรกฎาคม
Anonim
สถานีตรวจอากาศแบบพกพาสำหรับผู้สังเกตการณ์ท้องฟ้ายามค่ำคืน
สถานีตรวจอากาศแบบพกพาสำหรับผู้สังเกตการณ์ท้องฟ้ายามค่ำคืน

มลภาวะทางแสงเป็นหนึ่งในปัญหามากมายในโลก เพื่อแก้ปัญหานั้น เราต้องรู้ว่าท้องฟ้ายามค่ำคืนปนเปื้อนด้วยแสงประดิษฐ์มากแค่ไหน นักเรียนหลายคนที่มีครูในโลกพยายามวัดมลภาวะทางแสงด้วยเซ็นเซอร์ราคาแพง ฉันตัดสินใจเปลี่ยน luxmeter แบบพกพาของฉัน (สำหรับตรวจสอบเพิ่มเติม โครงการคำสั่งก่อนหน้า Portable Luxmeter) เป็นสถานีตรวจอากาศด้วยเซ็นเซอร์ TSL2591 เซ็นเซอร์นี้มีความไวเพียงพอสำหรับการวัดมลภาวะในตอนกลางคืน นอกจากนี้ ฉันยังเพิ่ม HTU21D สำหรับการวัดอุณหภูมิและความชื้น

ขั้นตอนที่ 1: มลพิษในตอนกลางคืนคืออะไรและวัดได้อย่างไร

มลพิษในตอนกลางคืนคืออะไรและวัดได้อย่างไร
มลพิษในตอนกลางคืนคืออะไรและวัดได้อย่างไร

มลภาวะในตอนกลางคืนคือแสงจากโคมไฟ รถยนต์ บ้าน จอ LCD ขนาดใหญ่ในเมือง และแสงทุกดวงที่มนุษย์สร้างขึ้น ที่เรียกแสงประดิษฐ์ สำหรับผู้สังเกตการณ์ แสงประดิษฐ์เป็นปัญหาหลักในการดูดาวจากเมือง และต้องออกไปนอกเมือง สำหรับมนุษย์ มลภาวะทางแสงสูงเป็นอันตราย และสำหรับต้นไม้ หญ้า และสัตว์

สำหรับการตรวจสอบมลภาวะทางแสงของสถานที่ของคุณ คุณสามารถดูที่นี่ lightpollutionmap

เป็นเพียงแบบจำลองเท่านั้น และมูลค่าที่แท้จริงอาจแตกต่างกันไป นั่นเป็นเหตุผลที่ฉันสร้างลักซ์มิเตอร์นั้น

สำหรับการวัดมลภาวะทางแสง ผมวัดแค่ลักซ์และคำนวณขนาด/arsec2

ฉันสามารถคำนวณจาก lux เป็น candela ต่อ suqare เมตร:

1 cd/m2 = 1 ลักซ์

ขนาดต่อตารางอาร์ควินาที (mag/arcsec2) อธิบายพื้นหลังท้องฟ้ายามค่ำคืน (เรียกความสว่างของพื้นผิว)

เพิ่มเติมเกี่ยวกับวิกิ: ความสว่างของพื้นผิว

สำหรับการคำนวณ cd/m2 ถึง mag/arcsec2 เป็นสูตร:

[ค่าเป็น mag/arcsec2] = Log10([ค่าเป็น cd/m2]/108000)/-0.4

unihedron.com/projects/darksky/magconv.php

ขั้นตอนที่ 2: BOM

บอม
บอม

สำหรับโครงการนี้คุณต้องการ:

1. WEMOS D1 Mini หรือไมโครคอนโทรลเลอร์ใดๆ

(ฉันใช้ wemos เพราะมันเล็กที่สุด มีพอร์ต usb คุณสามารถลองใช้ Arduino Nano ได้)

WEMOS D1 MINI (ไปรษณีย์อากาศเศรษฐกิจ Yanwen)

WEMOS D1 MINI (การจัดส่งแบบมาตรฐานของ AliExpress)

WEMOS D1 MINI 10 pcs (China Post Air Mail ที่ลงทะเบียน - จัดส่งฟรี)

สาย usb สำหรับเขียนโปรแกรมและอัพโหลดโค้ดไปยัง wemos

2. เซ็นเซอร์ TSL2591

TSL2591 (ไปรษณีย์อากาศเศรษฐกิจ Yanwen)

TSL2591 (ไปรษณีย์จีนลงทะเบียนไปรษณีย์)

TSL2591 (ไปรษณีย์จีนลงทะเบียนไปรษณีย์)

3. HTU21D เซ็นเซอร์อุณหภูมิและความชื้น

HTU21D (ซุปเปอร์อีโคโนมี่ของ Cainiao)

HTU21D (Yanwen Economic Air Mail - จัดส่งฟรี)

4. จอแสดงผล OLED 0.96 (128 x 64)

จอแสดงผล OLED

จอแสดงผล OLED

จอแสดงผล OLED

5.แบตเตอรี่18650

แบตเตอรี่ลิเธียมไอออน 18650

แบตเตอรี่ลิเธียมไอออน 18650

ที่ใส่แบตเตอรี่18650

6. โมดูลการชาร์จ TP4056

tp4056

tp4056

7. สวิตช์ปุ่มหรือจัมเปอร์จุ่ม

สวิตซ์ เรดดิป

swtichers ที่แตกต่างกันมากมาย

8. สายเขียงหั่นขนมและสายเคเบิลดูปองท์

เขียงหั่นขนมขนาดเล็ก

ชุดเขียงหั่นขนม

9.เคสผมสร้างจากไม้+เทป

เทปสีแดง

เครื่องพิมพ์ 3D พรูซา ฉันหวังว่าฉันจะทำเคสจากพลาสติก:D

ขั้นตอนที่ 3: วงจร

วงจร
วงจร

วงจรค่อนข้างง่าย:

เชื่อมต่อโมดูล i2c ทั้งหมด (TSL2591, OLED, HTU21D) กับหมุด SCL และ SDA บน wemos (SDA -> D2, SCL -> D1)

ขับเคลื่อนด้วย 3.3 V จาก wemos

เชื่อมต่อขั้วบวกของแบตเตอรี่กับพิน 5V บน wemos และแบตเตอรี่ + พินบนโมดูลการชาร์จ tp4056 เข้ากับขั้วบวกของแบตเตอรี่

เชื่อมต่อทุกพื้นที่เข้าด้วยกัน

ขั้นตอนที่ 4: เซ็นเซอร์ HTU21D

เซ็นเซอร์ HTU21D
เซ็นเซอร์ HTU21D

ฉันซื้อเซ็นเซอร์อุณหภูมิใหม่ซึ่งวัดได้อย่างแม่นยำ 0.3 °C !

สิ่งที่คุณควรรู้เกี่ยวกับเซ็นเซอร์นี้ (จาก sparkfun):

  • ใช้อินเทอร์เฟซ I2C
  • ความแม่นยำของความชื้นโดยทั่วไป ±2%
  • ความแม่นยำของอุณหภูมิโดยทั่วไปที่ ±0.3 °C
  • ทำงานที่ความชื้น 0 ถึง 100% แต่ไม่แนะนำเซ็นเซอร์นี้สำหรับสภาพแวดล้อมที่รุนแรงซึ่งอาจสัมผัสกับน้ำ (เช่น ฝน)
  • เซ็นเซอร์ 3.3V - ใช้ตัวแปลงระดับลอจิกแบบอินไลน์หรือตัวต้านทาน 10k เพื่อจำกัดสัญญาณ 5V
  • เซ็นเซอร์ HTU21D หนึ่งตัวเท่านั้นที่สามารถอยู่บนบัส I2C ในแต่ละครั้ง

สรุปของฉัน: เป็นเซ็นเซอร์ที่ดีเพราะวัดได้อย่างแม่นยำ 0.3 °C และทั้ง - อุณหภูมิและความชื้น ข้อดีคือสัญญาณรบกวน I2C และข้อเสีย 3.3V แต่ในกรณีของฉันไม่สำคัญ

ขั้นตอนที่ 5: TSL2591

TSL2591
TSL2591

เซ็นเซอร์นี้เหมาะสำหรับการตรวจวัดมลภาวะบนท้องฟ้ายามค่ำคืนเนื่องจากมีความไว (ถึง 188 micro lux!)

1. เป็นไดโอดที่มี ir ที่เป็นไปได้และวัดเต็ม ฉันไม่ใช้มัน

2. ตัวควบคุมแรงดันไฟฟ้าจาก 5V ถึง 3.3 V

ข้อมูลจำเพาะของชิป (จาก adafruit):

  • การตอบสนองสายตามนุษย์โดยประมาณ
  • ช่วงไดนามิกกว้างมาก 1 ถึง 600,000, 000 Counts
  • ช่วง Lux: ความไว 188 uLux, การวัดอินพุตสูงสุด 88, 000 Lux
  • ช่วงอุณหภูมิ: -30 ถึง 80 *C
  • ช่วงแรงดันไฟฟ้า: 3.3-5V เป็นตัวควบคุมออนบอร์ด
  • อินเทอร์เฟซ: I2C
  • บอร์ด/ชิปนี้ใช้ที่อยู่ I2C 7 บิต 0x29 (คงที่)
  • ขนาด: 19 มม. x 16 มม. x 1 มม. /.75" x.63" x.04" น้ำหนัก: 1.1 ก.
  • 2 ไดโอดสำหรับวัดทั้ง IR และ Full spectrum

สรุป:

188 uLux นั้นสมบูรณ์แบบ นอกจากนี้ การสื่อสาร I2C ก็ทำได้ง่าย บางทีปัญหาสามารถแก้ไขได้ที่อยู่ I2C (0x29) นอกจากนี้ตัวควบคุมบนบอร์ดยังดีและสามารถใช้เซ็นเซอร์ได้ในช่วงฤดูหนาว (น้ำค้างแข็ง)

ขั้นตอนที่ 6: รหัส

คุณต้องการไลบรารี่เหล่านี้ (ฉันเพิ่มลงในไฟล์ zip ไฟล์เดียว):

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

รหัส: คุณสามารถใช้ของฉันหรือสร้างเอง อย่าลืมตั้งเวลาการรวมสูงสุด (600 MS) และเพิ่มสูงสุด (GAIN_MAX) สำหรับการวัดท้องฟ้ายามค่ำคืน

หากคุณพยายามใช้รหัสของฉัน โปรดดาวน์โหลดไฟล์ ino เมื่อฉันคัดลอกจากโค้ดที่สอนได้ มีบางอย่างผิดปกติกับไลบรารี

ฉันใช้ภาพโหลดของดวงจันทร์เพียงเพื่อความสนุกสนาน คุณสามารถใช้อะไรก็ได้ เพียงใช้หน้านี้เพื่อรับอาร์เรย์:

javl.github.io/image2cpp/

//https://lastminuteengineers.com/oled-display-arduino-tutorial///https://javl.github.io/image2cpp/ // mcd ถึงขนาด https://unihedron.com/projects/darksky/magconv.php… // HD44780 เป็นคอนโทรลเลอร์สำหรับจอภาพคริสตัลเหลว (LCD) แบบตัวละคร https://unihedron.com/projects/darksky/magconv.php… #include

#รวม

#include #include #include "Adafruit_HTU21DF.h" #include "Adafruit_TSL2591.h" เคาน์เตอร์ int; // จอแสดงผล OLED ที่อยู่ TWI #define OLED_ADDR 0x3C จอแสดงผล Adafruit_SSD1306 (-1); // - 1 สำหรับการแสดงผลรีสตาร์ทพร้อมปุ่มรีสตาร์ทบนบอร์ด Arduino Adafruit_HTU21DF htu = Adafruit_HTU21DF(); Adafruit_TSL2591 tsl = Adafruit_TSL2591(2591); // ส่งผ่านตัวเลขสำหรับตัวระบุเซ็นเซอร์ (สำหรับการใช้งานในภายหลัง) uint32_t lum; uint16_t ir เต็ม; int lux; ลอยลักซ์; อุณหภูมิลอยตัว; ลอย rel_hum; ลอย mag_arcsec2; // visual mags/arcsecond² [value in mag/arcsec2] = Log10([value in cd/m2]/108000)/-0.4 // symbols // degree for Celsius const unsigned char degree PROGMEM = { 0xe, 0x11, 0x11, 0x11, 0xe, 0x0, 0x0, 0x0 }; // เลขชี้กำลัง 2 const เลขชี้กำลังที่ไม่ได้ลงชื่อ 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, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0f, 0xff 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, 0xff, 0xc0, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfd, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x03, 0xff, 0xc0, 0x3f, 0xff, 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, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x3f, 0xc0, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 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, 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, 0xff, 0xf8, 0x00, 0x3f, 0xf1, 0xff, 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, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 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, 0xff, 0xe0, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xff, 0xc 0xff, 0xff, 0xff, 0xff, 0xe1, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xff07, 0xff, 0xff 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, 0xff, 0xc0, 0x38, 0xff 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, 0xff, 0ff 0xff, 0xff, 0xc0, 0xc4, 0x1f, 0xff, 0xff, 0xfc, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x60, 0x0f, 0xffx, 0xff, 0xff, 0xff 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xf0, 0x07, 0xff, 0xff, 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, 0xff, 0xff, 0xc0, 0x00, 0x01, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xe 0x43, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x4f, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0ffxff, 0ffxff 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, 0x03, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x01, 0xff, 0xff, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0ffxff, 0ffxff, 0xff, 0xff, 0xf8, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x03, 0xffxff, 0xff, 0ffxff, 0ffxff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x01, 0x0f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0ffxff, 0xff, 0xfc, 0x01, 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x3f, 0xff, 0xffxff, 0xff, 0ffxff, 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, 0xff, 0xff, 0xe0, 0x00, 0x01, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf00, 0x00, 0x7f, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x1f, 0xff, 0xc7, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x1f, 0xff, 0xc7, 0xff, 0xff, 0xfx, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 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, 0xff, 0xff 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, 0xffxff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; การตั้งค่าเป็นโมฆะ () { // htu21d htu.begin (); // tsl2591 เซ็นเซอร์ sensor_t; tsl.getSensor(&เซ็นเซอร์); tsl.setGain(TSL2591_GAIN_MAX); // MAX, MED สูง, ต่ำ, tsl.setTiming(TSL2591_INTEGRATIONTIME_600MS); // 100MS, 200 MS, 300MS, 400MS, 500MS, 600MS // การตั้งค่าสำหรับการแสดงผล oled display.begin (SSD1306_SWITCHCAPVCC, OLED_ADDR); display.clearDisplay(); display.display(); display.drawBitmap(0, 0, บทนำ, 128, 64, สีขาว); display.display(); ล่าช้า (1000); display.setTextSize(1); display.setTextColor(สีขาว); display.setFont(&FreeSerif9pt7b); display.clearDisplay(); } วงเป็นโมฆะ () { ลักซ์ = 0; ลักซ์ =0; mag_arcsec2=0; อุณหภูมิ=0; rel_hum=0; ล่าช้า (100); lum = tsl.getFullLuminosity(); ir = ลัม >> 16; เต็ม = lum & 0xFFFF; ล่าช้า (100); lux = tsl.calculateLux (เต็ม, ir); // ความเข้มของแสงใน microlux ulux= lux*1000000; ถ้า (ulux<0) { lux=0; } mag_arcsec2 = log10(ลักซ์/108000)/-0.4; // (บันทึก ((ulux/108000)) / (-0.4) temp = htu.readTemperature (); rel_hum = htu.readHumidity (); display_values (); } ถือเป็นโมฆะ display_values () { //display.drawPixel (120, 50 สีขาว); 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, สีขาว); 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, เลขชี้กำลัง, 8, 8, WHITE); display. setCursor(83, 55); display.print(mag_arcsec2); display.display(); }

ขั้นตอนที่ 7: ข้างใน

ข้างใน
ข้างใน
ข้างใน
ข้างใน

ฉันสร้างเคสของตัวเองและฉันใช้เขียงหั่นขนมกับสายเคเบิลดูปองท์อย่างที่คุณเห็น

ฉันใช้ TP4056 เพื่อชาร์จแบตเตอรี่ด้วยสาย usb (ต้องการจัมเปอร์จุ่ม swtich)

สำหรับการเปิด/ปิด ฉันใช้จัมเปอร์จุ่ม

สำหรับกลางวัน TSL2591 แสดง 0 และ mag/arcsec2 เป็น nan

สำหรับท้องฟ้ายามค่ำคืนควร TSL2591 แสดงตั้งแต่ 0 ถึง 1000000 microlux (ulux) และ mag/arcsec2 ที่สอดคล้องกัน

(cca. 14 ถึง 22 mag/arsec2).

สำหรับฟูลมูน ฉันวัด 50k lux ซึ่งเท่ากับ 0.05 ลักซ์

แนะนำ: