جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-23 12:53
التلوث الضوئي هو واحد من العديد من المشاكل في العالم. لحل هذه المشكلة ، نحتاج إلى معرفة مقدار تلوث سماء الليل بالضوء الاصطناعي. يحاول العديد من الطلاب مع المعلمين في العالم قياس التلوث الضوئي باستخدام أجهزة استشعار باهظة الثمن. قررت تغيير مقياس الكم المحمول الخاص بي (لمزيد من التحقق من مشروع التعليمات السابق المحمولة Luxmeter) إلى محطة الطقس باستخدام مستشعر TSL2591. هذا المستشعر حساس بدرجة كافية لقياس التلوث الليلي. أيضًا ، أقوم بإضافة HTU21D لقياس درجة الحرارة والرطوبة.
الخطوة الأولى: ما هو التلوث الليلي وكيف يتم قياسه
التلوث الليلي هو ضوء من المصابيح والسيارات والمنازل ولوحات شاشات الكريستال السائل الضخمة في المدينة وكل ضوء يصنعه الإنسان. هذا الضوء نداء مصطنع. بالنسبة للمراقبين ، يعد الضوء الاصطناعي مشكلة رئيسية لرؤية النجوم من المدينة ، ويجب أن يذهبوا إلى خارج المدينة. بالنسبة للإنسان ، يعد التلوث الضوئي العالي ضارًا. وكذلك للأشجار والعشب والحيوانات.
للتحقق من التلوث الضوئي في مكانك ، يمكنك مشاهدة خريطة التلوث الضوئي هنا
إنه نموذج فقط ، ويمكن أن تختلف القيم الحقيقية. لهذا السبب صنعت مقياس الرفاهية هذا.
لقياس التلوث الضوئي ، أقيس فقط اللوكس وأحسب المقدار / arsec2.
يمكنني حساب من لوكس إلى كانديلا لكل متر سقاري:
1 شمعة / م 2 = 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 قطعة (البريد الجوي الصيني المسجل - الشحن المجاني)
كابل يو اس بي للبرمجة وتحميل الكود على wemos
2. جهاز استشعار TSL2591
TSL2591 (البريد الجوي الاقتصادي Yanwen)
TSL2591 (البريد الجوي الصيني المسجل)
TSL2591 (البريد الجوي الصيني المسجل)
3. جهاز استشعار درجة الحرارة والرطوبة HTU21D
HTU21D (الاقتصاد الفائق Cainiao)
HTU21D (البريد الجوي الاقتصادي Yanwen - شحن مجاني)
4. شاشة OLED 0.96 (128 × 64)
شاشة OLED
شاشة OLED
شاشة OLED
5. بطارية 18650
بطارية ليثيوم أيون 18650
بطارية ليثيوم أيون 18650
حامل بطارية 18650
6. وحدة شحن TP4056
tp4056
tp4056
7. أزرار التبديل أو تراجع الطائر
swtich تراجع أحمر
swtichers ، الكثير من الاختلاف
8. كابلات اللوح و دوبونت
لوح صغير
طقم اللوح
9. حالة ، أقوم بإنشاء من الخشب + الشريط
شريط احمر
طابعة Prusa 3D ، آمل أن أفعل حالة من البلاستيك: D.
الخطوة 3: الدائرة
الدائرة بسيطة جدًا:
قم بتوصيل جميع وحدات i2c (TSL2591 ، OLED ، HTU21D) بدبابيس SCL و SDA على wemos (SDA -> D2 ، SCL -> D1).
زودهم بجهد 3.3 فولت من wemos.
قم بتوصيل طرف البطارية الإضافي إلى دبوس 5 فولت على wemos والبطارية + دبوس في وحدة الشحن tp4056 إلى محطة إضافية على البطارية.
اربط كل الأسطح معًا.
الخطوة 4: مستشعر HTU21D
أشتري مستشعر درجة حرارة جديد ، والذي يقيس بدقة 0.3 درجة مئوية!
أشياء يجب أن تعرفها عن هذا المستشعر (من Sparkfun):
- يستخدم واجهة I2C
- دقة رطوبة نموذجية ± 2٪
- دقة درجة الحرارة النموذجية ± 0.3 درجة مئوية
- يعمل من صفر إلى 100٪ رطوبة ولكن لا ينصح بهذا المستشعر في البيئات القاسية حيث يمكن أن يتلامس مع الماء (مثل المطر).
- مستشعر 3.3 فولت - استخدم محولات المستوى المنطقي المضمنة أو مقاومات 10 كيلو للحد من إشارات 5 فولت
- يمكن لجهاز استشعار HTU21D واحد فقط أن يتواجد على ناقل I2C في المرة الواحدة
ملخصي: إنه مستشعر جيد ، لأنه يقيس بدقة 0.3 درجة مئوية وكلاهما - درجة الحرارة والرطوبة. الإيجابيات هي تدخل I2C وسلبيات 3.3 فولت ، لكن لا يهم في حالتي.
الخطوة 5: TSL2591
هذا المستشعر جيد لقياس تلوث السماء ليلاً بسبب حساسيته (حتى 188 ميكرو لوكس!).
1. هي الثنائيات مع الأشعة تحت الحمراء الممكنة والقياس الكامل. أنا لا أستخدمه.
2. منظم الجهد من 5 فولت إلى 3.3 فولت
مواصفات الرقاقة (من adafruit):
- يقترب من استجابة العين البشرية
- نطاق ديناميكي واسع للغاية من 1 إلى 600 ، 000 ، 000 عدد
- نطاق لوكس: 188 حساسية uLux ، ما يصل إلى 88000 قياسات إدخال لوكس.
- نطاق درجة الحرارة: -30 إلى 80 * درجة مئوية
- نطاق الجهد: 3.3-5 فولت في منظم على متن الطائرة
- الواجهة: I2C
- تستخدم هذه اللوحة / الشريحة عنوان I2C 7 بت 0x29 (ثابت)
- الأبعاد: 19 مم × 16 مم × 1 مم /.75 بوصة ×.63 بوصة ×.04 بوصة الوزن: 1.1 جرام
- عدد 2 من الثنائيات لقياس كلا من الأشعة تحت الحمراء والطيف الكامل
ملخص:
188 ULux ممتاز ، كما أن اتصال I2C بسيط. ربما يمكن إصلاح المشكلة عنوان I2C (0x29). يوجد أيضًا منظم جيد على متن الطائرة ويمكن استخدام المستشعر خلال فصل الشتاء (الصقيع).
الخطوة 6: الكود
أنت بحاجة إلى هذه المكتبات (أقوم بإضافتها إلى ملف مضغوط واحد):
- Adafruit-GFX-Library-Master
- adafruit_gfx_library_master
- Adafruit_HTU21DF Library-master
- Adafruit_Sensor-master
- Adafruit_TSL2591_Library-master
الكود: يمكنك استخدام خاصتي أو إنشاء رمز خاص به. لا تنس تعيين أقصى وقت للتكامل (600 مللي ثانية) واكتساب الحد الأقصى (GAIN_MAX) لقياس السماء ليلاً.
إذا حاولت استخدام الكود الخاص بي ، يرجى تنزيل ملف ino. عندما أنسخ من التعليمات البرمجية الخاصة بي ، هناك خطأ ما في المكتبات
أستخدم تحميل صورة القمر للمتعة فقط. يمكنك استخدام أي منها ، فقط استخدم هذه الصفحة للحصول على مجموعة:
javl.github.io/image2cpp/
//https://lastminuteengineers.com/oled-display-arduino-tutorial///https://javl.github.io/image2cpp/ // mcd to magnitude https://unihedron.com/projects/darksky/magconv.php… // HD44780 عبارة عن وحدة تحكم لشاشات الكريستال السائل القائمة على الأحرف (شاشات LCD). https://unihedron.com/projects/darksky/magconv.php… # تضمين
#يشمل
# تضمين # تضمين # تضمين "Adafruit_HTU21DF.h" # تضمين "Adafruit_TSL2591.h" عداد int؛ // عرض OLED عنوان TWI # تعريف عرض OLED_ADDR 0x3C Adafruit_SSD1306 (-1) ؛ // - 1 لإعادة العرض مع زر إعادة التشغيل على لوحة اردوينو Adafruit_HTU21DF htu = Adafruit_HTU21DF () ؛ Adafruit_TSL2591 tsl = Adafruit_TSL2591 (2591) ؛ // تمرير رقم لمعرف المستشعر (لاستخدامك لاحقًا) uint32_t lum ؛ uint16_t ir ، كامل ؛ int ulux تعويم لوكس تعويم درجة الحرارة تعويم rel_hum. تعويم mag_arcsec2 ؛ // أكواب مرئية / ثانية قوسية² [القيمة في mag / arcsec2] = Log10 ([القيمة في cd / m2] / 108000) / - 0.4 // رموز // درجة لـ Celsius const ودرجة حرف غير موقعة PROGMEM = {0xe، 0x11، 0x11 ، 0x11 ، 0xe ، 0x0 ، 0x0 ، 0x0} ؛ // الأس 2 const الأس char غير الموقعة PROGMEM = {0xe ، 0x1b ، 0x3 ، 0x6 ، 0xc ، 0x18 ، 0x1f ، 0x0}؛ // 'moon_logo' ، 128 × 64 بكسل ، مقدمة حرف غير موقعة 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 ، 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 ، 0xff ، 0x80 ، 0x1f ، 0xbe ، 0x7f ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0x80 ، 0x1f ، 0xcc ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 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 ، 0x00 ، 0x3f ، 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 ، 0xff ، 0xfc ، 0x00 ، 0x3f ، 0x80 ، 0x1f ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xf8 ، 0x00 ، 0x3f ، 0x00 ، 0x0f ، 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 ، 0xff 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 ، 0xe0 ، 0x0f ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xc0 ، 0x48 ، 0x7f ، 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 ، 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 ، 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 ، 0xff ، 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 ، 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 ، 0xff ، 0xff ، 0xfc ، 0x01 ، 0x0f ، 0x3f ، 0xff ، 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 ، 0xff ، 0x00 ، 0x00 ، 0x1f ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0xff ، 0x80 ، 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 ، 0xff ، 0xff ، 0xff ، 0xfe ، 0x00 ، 0x00 ، 0x1f ، 0xff ، 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 ، HIGH MED ، LOW ، tsl.setTiming (TSL2591_INTEGRATIONTIME_600MS) ؛ // 100MS ، 200 MS ، 300MS ، 400MS ، 500MS ، 600MS // إعداد لشاشة OLED. ابدأ (SSD1306_SWITCHCAPVCC ، OLED_ADDR) ؛ display.clearDisplay () ، display.display () ، display.drawBitmap (0 ، 0 ، مقدمة ، 128 ، 64 ، أبيض) ؛ display.display () ، تأخير (1000) ؛ display.setTextSize (1) ، display.setTextColor (WHITE) ، display.setFont (& FreeSerif9pt7b) ؛ display.clearDisplay () ، } حلقة فارغة () {لوكس = 0 ؛ ulux = 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) {ulux = 0 ؛ } mag_arcsec2 = log10 (لوكس / 108000) / - 0.4 ؛ // (log ((ulux / 108000)) /(-0.4) temp = htu.readTemperature () ؛ rel_hum = htu.readHumidity () ؛ display_values () ؛} void 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، 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، exponent، 8، 8، WHITE)؛ display. setCursor (83، 55)؛ display.print (mag_arcsec2)؛ display.display ()؛}
الخطوة 7: الداخل
أقوم بإنشاء حالة خاصة وأستخدم لوح التجارب مع كبلات دوبونت كما ترون.
أنا أستخدم TP4056 لشحن البطارية بكابل USB (أحتاج إلى وصلة ربط swtich dip).
لتشغيل / إيقاف أستخدم وصلة القفز.
لضوء النهار ، يظهر TSL2591 0 و mag / arcsec2 هو nan.
بالنسبة للسماء الليلية ، يجب أن يظهر TSL2591 من 0 إلى 1000000 microlux (ulux) و mag / arcsec2 المقابل
(cca.14 إلى 22 ماج / arsec2).
بالنسبة إلى القمر الكامل ، قمت بقياس 50 كيلو ulux وهو 0.05 لوكس.
موصى به:
محطة أرصاد جوية بسيطة باستخدام ESP8266: 6 خطوات (بالصور)
محطة طقس بسيطة باستخدام ESP8266: في هذا Instructable ، سأشارك كيفية استخدام ESP8266 للحصول على بيانات مثل درجة الحرارة والضغط والمناخ وما إلى ذلك ، وبيانات YouTube مثل Subscribers & amp؛ amp؛ إجمالي عدد المشاهدات. وعرض البيانات على الشاشة التسلسلية وعرضها على شاشة LCD. ستكون البيانات و
محطة أرصاد جوية بالطاقة الشمسية: 5 خطوات (بالصور)
محطة أرصاد جوية بالطاقة الشمسية المعيارية: أحد المشاريع التي أردت بناءها لبعض الوقت كان محطة أرصاد جوية معيارية. معياري بمعنى أنه يمكننا إضافة المستشعرات التي نريدها فقط عن طريق تغيير البرنامج. تنقسم محطة الطقس المعيارية إلى ثلاثة أجزاء. اللوحة الرئيسية بها W
محطة أرصاد جوية صغيرة مع Attiny85: 6 خطوات (بالصور)
محطة طقس صغيرة مع Attiny85: وصف Indigod0g حديثًا محطة طقس صغيرة تعمل بشكل جيد ، باستخدام اثنين من Arduinos. ربما لا يريد الجميع التضحية بـ 2 Arduinos للحصول على قراءات للرطوبة ودرجة الحرارة وعلقت أنه من الممكن أن
محطة أرصاد جوية منخفضة الطاقة: 6 خطوات (بالصور)
محطة الطقس منخفضة الطاقة: الآن في نسختها الثالثة وبعد أن تم اختبارها لأكثر من عامين ، تمت ترقية محطة الطقس الخاصة بي للحصول على أداء منخفض للطاقة وموثوقية أفضل في نقل البيانات
محطة أرصاد جوية منزلية ESP-Now: 9 خطوات (بالصور)
محطة طقس منزلية ESP-Now: كنت أرغب في الحصول على محطة طقس منزلية لبعض الوقت ، بحيث يمكن لكل فرد في العائلة التحقق من درجة الحرارة والرطوبة بسهولة. بالإضافة إلى مراقبة الظروف الخارجية ، كنت أرغب في مراقبة غرف معينة في المنزل وكذلك