תוכן עניינים:

תחנת מזג האוויר של NaTaLia: תחנת מזג אוויר מונעת על ידי סולארית Arduino בוצעה בדרך הנכונה: 8 שלבים (עם תמונות)
תחנת מזג האוויר של NaTaLia: תחנת מזג אוויר מונעת על ידי סולארית Arduino בוצעה בדרך הנכונה: 8 שלבים (עם תמונות)

וִידֵאוֹ: תחנת מזג האוויר של NaTaLia: תחנת מזג אוויר מונעת על ידי סולארית Arduino בוצעה בדרך הנכונה: 8 שלבים (עם תמונות)

וִידֵאוֹ: תחנת מזג האוויר של NaTaLia: תחנת מזג אוויר מונעת על ידי סולארית Arduino בוצעה בדרך הנכונה: 8 שלבים (עם תמונות)
וִידֵאוֹ: תחזיות שינויי אקלים איך עושים את זה? ד"ר לינס אוזן, השירות המטאורולוגי 2024, יוני
Anonim
תחנת מזג האוויר של NaTaLia: תחנת מזג אוויר המופעלת באמצעות סולארית Arduino בוצעה בדרך הנכונה
תחנת מזג האוויר של NaTaLia: תחנת מזג אוויר המופעלת באמצעות סולארית Arduino בוצעה בדרך הנכונה
תחנת מזג האוויר של NaTaLia: תחנת מזג האוויר המופעלת באמצעות סולארית Arduino בוצעה בדרך הנכונה
תחנת מזג האוויר של NaTaLia: תחנת מזג האוויר המופעלת באמצעות סולארית Arduino בוצעה בדרך הנכונה

לאחר שנה של הפעלה מוצלחת בשני מיקומים שונים, אני משתף את תוכניות הפרויקט של תחנת מזג האוויר המונעות על ידי השמש ומסביר כיצד היא התפתחה למערכת שיכולה לשרוד לאורך תקופות זמן ארוכות מאנרגיה סולארית. אם תעקוב אחר ההנחיות שלי ותשתמש בדיוק באותם החומרים המופיעים ברשימה, תוכל לבנות תחנת מזג אוויר המופעלת באמצעות סולארית שתפעל לאורך שנים רבות. למעשה הגורם היחיד המגביל את משך הזמן שהוא יפעל הוא תוחלת החיים של הסוללה בה אתה משתמש.

שלב 1: הפעלת תחנת מזג האוויר

1, משדר: תיבה רכובה חיצונית עם פאנל סולארי ששולחת מדי פעם טלמטריה של מזג האוויר (טמפרטורה, לחות, מדד חום, עוצמה סולארית) ליחידת המקלט המקורה.

2, מקלט: יחידה פנימית עשויה מ- Raspberry PI 2 + Arduino Mega עם מקלט RF 433 Mhz המחובר לקליטת נתונים. בהתקנה שלי אין ליחידה זו פונקציונליות של תצוגת LCD מקומית. זה פועל ללא התייחסות. תוכנית C הראשית דואגת לקבל את הנתונים הנכנסים מה- Arduino דרך הסידרה, ולאחר מכן לרשום את הנתונים לקובץ טקסט ולהפוך את הנתונים שהתקבלו לאחרונה לזמינים באמצעות telnet למכשירים אחרים שיוכלו לבדוק אותם.

התחנה שולטת באורות בביתי על ידי קריאת פוטורסיסטור (הקובע אם זה יום או לילה בחוץ). המקלט נטול ראש במקרה שלי, אך תוכל לשנות את הפרויקט בקלות ולהוסיף צג LCD. אחד המכשירים שמשתמשים, מנתחים ומציגים את נתוני מזג האוויר מהתחנה הוא הפרויקט השני שלי: Ironforge the Toaster.

שלב 2: גרסאות ראשונות

גרסאות ראשונות
גרסאות ראשונות
גרסאות ראשונות
גרסאות ראשונות
גרסאות ראשונות
גרסאות ראשונות
גרסאות ראשונות
גרסאות ראשונות

יש הרבה פרויקטים סולאריים ברשת אבל רבים מהם מבצעים את הטעות הנפוצה שהמערכת מוציאה יותר אנרגיה מהסוללה לאורך זמן את מה שהפאנל הסולארי יכול לחדש, במיוחד במהלך חודשי החורף המעוננים והחשוכים.

כאשר אתה מתכנן מערכת המופעלת באמצעות סולארית הדבר היחיד שחשוב הוא צריכת חשמל, על כל המרכיבים: מק ו, משדר רדיו, ווסת מתח וכו '.

שימוש במחשב גדול כמו פטל פאי או מכשיר wifi רעב כמו ה- ESP רק כדי לאסוף ולהעביר כמה פיסות נתוני מזג אוויר יהיה overkill אבל כפי שאראה זאת במדריך זה אפילו לוח Arduino קטן.

הטוב ביותר הוא תמיד מדידת זרם במהלך תהליך הבנייה שלך עם מטר או עם היקף (שימושי כאשר אתה מנסה למדוד קוצים קטנים בשימוש במהלך הפעולה בפרקי זמן קצרים מאוד (אלפיות השנייה)).

בתמונה הראשונה אתה יכול לראות את התחנה הראשונה שלי (Arduino Nano Based) ואת הלוח השני של Arduino Barebone Atmega 328P.

הגרסה הראשונה, למרות שהיא עבדה בצורה מושלמת (ניטור סביבה ושליחת נתונים באמצעות רדיו) הייתה בעלת צריכת חשמל גבוהה מדי ~ 46mA ורוקנה את הסוללה תוך מספר שבועות.

כל הגרסאות השתמשו בסוללה הבאה:

18650 לוח סוללה נטענת מוגבר ליתיום 6000mAh מובנה

עדכן על סוללות ScamFire אלה. למרות שמדובר במדריך ישן למדי עדיין הרגשתי שאני חייב לתקן אותו בגלל הסוללה המזויפת הזו. אל תקנה את הסוללה שהוזכרה, בצע מחקר משלך לגבי סוללות LION/LIPO אחרות, כל סוללות 3.7V יעבדו עם פרויקט זה.

לבסוף הספקתי להסיר את סוללת ScamFire כדי לראות מה היא הקיבולת האמיתית שלה. לכן נריץ 2 חישובים זה לצד זה עם היכולות האמיתיות וה"מפורסמות ".

קודם כל זה דבר אחד שהסוללה הזו מזויפת ושום דבר מה שהם טוענים לגביה לא נכון, הגרסאות החדשות עוד יותר גרועות הן העתיקו את הזיוף כשהן משאירות את מעגל ההגנה של 2 סנט, כך ששום דבר לא ימנע מהן לפרוק עד אפס.

מאמר קטן על סוללות LION/LIPO:

TLDR:

המשמעות של זה היא שהמתח המרבי של התא הוא 4.2v וכי המתח ה"נומינלי "(ממוצע) הוא 3.7V.

לדוגמה, להלן פרופיל המתח של סוללה 3.7V/4.2V 'קלאסית'. המתח מתחיל ב -4.2 מקסימלי ויורד במהירות לכ -3.7V במשך רוב חיי הסוללה. ברגע שאתה מכה 3.4V הסוללה מתה וב -3.0V מעגל הניתוק מנתק את הסוללה.

המדידות שלי באמצעות עומס דמה:

סוללה טעונה: 4.1V

חיתוך מוגדר ל: 3.4V

סימולציה של עומס: 0.15A (למכשיר שלי הייתה קצת בעיה לרדת יותר מזה).

קיבולת נמדדת: 0.77Ah תנו לו 0.8 Ah בחינם שהם 800mAh במקום 6000mAh המפורסם!

מכיוון שלסוללה זו אפילו לא היה מעגל ההגנה יכולתי לרדת בחופשיות אך ב -3.4V לאחר 10 דקות היא כבר מתרסקת עד 3.0V.

לכן בחישובים פשוטים הסוללה מספקת:

תֵאוֹרֵטִי

מתח סוללה = 3.7V

הספק = 3.7x6000 = 22000 mWh

אמיתי

מתח סוללה = 3.7V הספק = 3.7x800 = 2960 mWh

גרסה: 0.1 ARDUINO NANO מבוסס

אפילו עם ספריית LowPower ננו ארדואינו צורך ~ 16 mA (במצב שינה) -> FAIL.

תֵאוֹרֵטִי

Pavg = VxIavg = 5Vx16mA = 80 mW

חיי סוללה = 22000/80 = 275 שעות = 11 ימים בערך

RealPavg = VxIavg = 5Vx16mA = 80 mW

חיי סוללה = 800/80 = 10 שעות

גרסה: 0.2 Atmega 328P Barebone

הכוח הנצרך על ידי ATmega328 תלוי רבות במה שאתה עושה עם זה. רק כשהוא יושב שם במצב ברירת מחדל, הוא יכול להשתמש ב- 16mA @ 5V בזמן שהוא פועל במהירות 16MHz.

כאשר ה- ATmega328P נמצא במצב פעיל, הוא יבצע באופן רציף כמה מיליוני הוראות בשנייה. יתר על כן, ציוד ההיקפים המשולב אנלוגי לממיר דיגיטלי (ADC), ממשק היקפי סידורי (SPI), טיימר 0, 1, 2, ממשק דו חוטי (I2C), USART, טיימר כלב השמירה (WDT) וגילוי ההשחמה (BOD) צורכים חשמל.

כדי לחסוך בחשמל, ה- ATmega328P MCU תומך במספר מצבי שינה וניתן לכבות ציוד היקפי שאינו בשימוש. מצבי השינה נבדלים באילו חלקים נשארים פעילים, לפי משך השינה והזמן הדרוש להתעוררות (תקופת השכמה). ניתן לשלוט על מצב השינה והציוד ההיקפי הפעיל באמצעות ספריות השינה והספק של AVR או, בתמציתיות רבה יותר, באמצעות הספרייה המעולה של צריכת חשמל נמוכה.

ספריית הספק נמוך היא פשוטה לשימוש אך עוצמתית מאוד. ההצהרה LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); מכניס את ה- MCU ל- SLEEP_MODE_PWR_DOWN למשך 16 אלפיות השנייה עד 8 שניות, בהתאם לארגומנט הראשון. הוא משבית את ה- ADC ואת ה- BOD. שינה כיבוי פירושה שכל פונקציות השבבים מושבתות עד להפסקה הבאה. יתר על כן, המתנד החיצוני נעצר. רק הפרעות רמה ב- INT1 ו- INT2, הפרעות לשינוי סיכה, התאמת כתובת TWI/I2C, או WDT, אם מופעל, יכול להעיר את ה- MCU. אז עם ההצהרה היחידה, תוכלו למזער את צריכת האנרגיה. עבור 3.3 V Pro Mini ללא נורית חשמל וללא רגולטור (ראה להלן) שמריץ את ההצהרה, צריכת האנרגיה היא 4.5 μA. זה קרוב מאוד למה שמוזכר בגיליון הנתונים של ATmega328P לשינת כיבוי כאשר WDT מופעל על 4.2 μA (גליון נתונים המקושר במקורות). לכן, אני די בטוח שהפונקציה powerDown סוגרת את כל מה שאפשר באופן סביר. עם ההצהרה LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);, ה- WDT יושבת ולא תתעורר עד שתופעל הפרעה.

אז בעזרת ההתקנה של עצם עצם נוכל להכניס את השבב למצב שינה למשך 5 דקות, בעוד שהוא צורך כמות קטנה מאוד של אנרגיה (0.04 mA ללא ציוד היקפי). עם זאת זהו רק שבב Atmega 328P עם מתנד הגביש ותו לא, מגבר המתח המשמש בתצורה זו כדי להגביר את מתח הסוללה מ -3.7V -> 5.0 V צורך גם 0.01 mA.

ניקוז מתח קבוע אחד היה הנגד לצילום שהוסיף את הצריכה במצב שינה ל -1 mA כולל (זה כולל את כל הרכיבים).

הנוסחה לחישוב הצריכה המדויקת של המכשיר במצב שינה והתעוררות היא:

Iavg = (טון*יון + צלף*איסלף) / (טון + צלף)

יון = 13mA

זה בעיקר מגיע ממשדר RF433 Mhz:

משדר:

מתח עבודה: 3V - 12V fo max. צריכת חשמל 12V זרם עבודה: מקסימום פחות מ 40mA מקסימום, ודקה 9mA מצב התהודה: (SAW) מצב אפנון: ASK תדר עבודה: Eve 315MHz או 433MHz הספק שידור: 25mW (315MHz ב 12V) שגיאת תדר: +150kHz (מקסימום) מהירות: פחות מ 10Kbps

Isleep = 1mA

יהיה פחות משמעותי ללא הפוטורזיסטור.

זמן טרונון טון = 250 מס = 0.25 שניות

זמן שינה Tsleep = 5 דקות = 300 שניות

Iavg = (טון*יון + צלף*איסלף) / (טון + צלף)

Iavg = (0.25s*13mA + 300s*1mA) / (0.25s + 300s)

Iavg = 1.26mA

Pavg = VxIavg = 5Vx1.26mA = 6 mW

תֵאוֹרֵטִי

חיי סוללה = 22000mWh/6mW = 3666 שעות = 152 ימים בערך

אמיתי

חיי סוללה = 800mWh/6mW = 133 שעות = 5.5 ימים בערך

למרות שאלו עדיין היו סדרות אולטרה פייר טובות יותר מה שהשתמשתי בהתחלה אפשר היה לראות שללא הפאנל הסולארי או צריכת 1mA הנמוכה הפרויקט הזה לא ישרוד זמן רב.

אתם מוזמנים לבנות את התחנה ולרשום את הממצאים והחישובים שלכם להערות ואעדכן את המאמר. אעריך גם תוצאות עם מרכזי MCU שונים וממרי boost.

שלב 3: בניית תחנת מזג אוויר מוצלחת

בניית תחנת מזג אוויר מוצלחת
בניית תחנת מזג אוויר מוצלחת
בניית תחנת מזג אוויר מוצלחת
בניית תחנת מזג אוויר מוצלחת
בניית תחנת מזג אוויר מוצלחת
בניית תחנת מזג אוויר מוצלחת
בניית תחנת מזג אוויר מוצלחת
בניית תחנת מזג אוויר מוצלחת

למרות שזו הגרסה המוצלחת הראשונה, היא מכילה מעט כישלון בתמונות ואני לא יכול ליצור אותן מחדש כי התחנות כבר פרוסות. שני מגברי המתח המוצגים בתמונה ניתנים להשגה בזמן הכתיבה עבור דוגמנות אוויריות ויישומים אחרים. כשעיצבתי מחדש את התחנה שלי חשבתי להשיג לוח צעד גבוה יותר ויעיל יותר, אולם גודל קטן יותר בהחלט לא אומר שהיא יעילה יותר.

המודול הקטן החדש בתמונה שאין בו אפילו מחוון שהוביל למעשה לרוקן 3mA (*FAIL*) מעצמו, אז נשארתי עם הלוח הישן שלי:

PFM Control DC-DC USB 0.9V-5V to 5V dc Boost Step-up Module Power Supply Module

בזמן כתיבת מודול זה עדיין זמין ב- Ebay תמורת 99 סנט, אך אם תחליט להשתמש במגבר אחר, בדוק תמיד את צריכת החשמל המתנה. עם מגבר באיכות טובה זה לא אמור להיות יותר משלי (0.01 mA), למרות שהיה צריך להסיר את הלד הקטן על הלוח.

שלב 4: רשימת חומרה

רשימת חומרה
רשימת חומרה
  • 18650 לוח סוללה נטענת מוגבר ליתיום 6000mAh מובנה
  • Atmega 328P16M 5V עם מטען אתחול
  • ערכת Adafruit DC Boarduino (תואמת Arduino) (w/ATmega328) <זו תהיה השקעה טובה אם אתם מבצעים פרויקטים עתידיים של עצמות עצם
  • התנגדות רגישה לאור צילום פוטוזיסטור אופטורזיסטור 5 מ"מ GL5539
  • דיודה 1A 1000V 1N4007 IN4007 דיודות מיישר DO-41
  • PFM Control DC-DC USB 0.9V-5V to 5V dc Boost Step-up Module Power Supply Module
  • 1.6W 5.5V 266mA מיני מודול פאנל סולארי מטען תא אפוקסי DIY
  • מודול מטען של לוח סוללות ליתיום TP405 5V מיני USB 1A
  • ערכת קישור משדר RF ומקלט 433Mhz לשלט רחוק Arduino/ARM/MC <ערכה, מכילה גם את המשדר וגם את החיישן
  • מארז צומת מגן IP65 חיצוני מארז עמיד למים 150x110x70 מ"מ
  • מודול חיישן טמפרטורה ולחות יחסית של DHT22 עבור Arduino
  • 1x220 אוהם, 2x10KOhm, 1xLED, 1xMini מתג, 1x1N4007 דיודה
  • אדפרוט 16 מהרה / מתנד קרמיקה [ADA1873]
  • Arduino UNO/Mega וכו 'לתחנת מקלט + פטל PI 1/2/3
  • קופסת פלסטיק אקרילית שקופה (אופציונלי)

אתה יכול למצוא את כל אלה ב- eBay, אני לא רוצה לקדם שום מוכר על ידי קישור לדפים שלהם והקישורים יהפכו למות בעתיד בכל מקרה.

הערות לרשימת החומרה:

רק למקרה שתבנו את אטמגה איכשהו עם תכנות תקנו יותר מהם, אותו דבר לגבי מגבר המתח ובקר הטעינה הסולרית.

המטען הסולארי מכיל 2 נוריות LED קטנות שנדלקות רק במקרה של טעינה סולארית ומצביעות על (מצבי אדום-> טעינה, כחול-> טעון במלואו). אלה יכולים להיות גם לא מולחנים. זה דווקא נותן עוד קצת מיץ נוסף לסוללה במהלך הטעינה.

כפי שאתה רואה אין מחזיקי סוללות ברשימה שלי. למה? כי הם לא אמינים. היו לי אינספור מקרים בהם הסוללה יצאה מהמחזיק ואיבדה את החיבור. במיוחד אם ההתקנה שלך מותקנת על מוט כלים גבוה כמו שלי, פתוח לכל תנאי מזג אוויר קשים. אפילו רכסתי את הסוללה לתוך המחזיק עם 2 רוכסנים וזה עדיין הצליח לזוז החוצה. אל תעשה זאת, הסר את הציפוי החיצוני מהסוללה והלחם את החוטים ישירות בתחתית הסוללה, המכיל את מעגל ההגנה מפני טעינת יתר (אל תעקוף את ההגנה). מחזיק סוללה יכול לשמש רק להחזקת הסוללה במקומה במכשיר.

לוח טעינת סוללת ליתיום מסוג TP405 5V מיני USB 1A: למרבה הצער לוח זה אינו כולל הגנה על זרם הפוך ללוח הסולארי, לשם כך תצטרך להציב עוד דיודה אחת בין רגל אחת של הלוח הסולארי לבין מעגל הטעינה כדי לעצור את הניסיון הנוכחי. לזרום בחזרה ללוח הסולארי בלילות.

שלב 5: הרכבה

הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה

לוח זה מכיל מעט רכיבים יחסית והסמנים בלוח די פשוטים.

הקפד לא להכניס את Atmega328P בצורה לא נכונה (שיכול לחמם ולבנות את השבב, עלול להרוס גם את מגבר המתח).

בהתקנה זו השבב פונה כלפי מטה (סימון חור U קטן PIN1). כל שאר המרכיבים צריכים להיות ברורים.

השתמש בכבל מוגן (למשל: כבל שמע מ- CDrom יסתדר) עבור ה- LDR. במקרים מסוימים (לאורך שבועות רבים של בדיקות) התברר כי הוא מפריע לשידור אות הרדיו. זה היה אחד מאותם באגים שקשה לפתור אותם, אז אם אתה לא רוצה צרות פשוט השתמש בכבל מוגן, סוף הסיפור.

נורית LED: בתחתית הקופסה נוספה במקור להבהב כשיש שידור רדיו יוצא אך בהמשך התייחסתי לזה כבזבוז כוח והוא מהבהב רק 3 פעמים בתהליך האתחול.

TP: היא נקודת בדיקה למדידת הזרם של המעגל הכולל.

DHT22: אל תקנה את ה- DHT11 הזול, תשקיע 50 סנט יותר בכדי לקבל את ה- DHT22 הלבן שיכול למדוד גם טמפרטורות שליליות.

שלב 6: עיצוב מארז

עיצוב מארז
עיצוב מארז
עיצוב מארז
עיצוב מארז
עיצוב מארז
עיצוב מארז

למרות שזה קצת מוגזם, קובייה מודפסת תלת מימד (weather_cube) נוצרה כדי להחזיק את חיישן הטמפרטורה DHT22 במקומו. הקוביה מודבקת לתחתית תיבת ה- IP, וכוללת רק חור אחד כדי שהאוויר יגיע לחיישן. הוספתי רשת בחור נגד דבורים, צרעות ושאר זבובים קטנים.

ניתן להשתמש בקופסה חיצונית אופציונלית כדי להפוך את התחנה למים יותר למקרה שתתקינו אותה על מוט צלחת בשטח פתוח.

רעיון לתכונה שימושית אחת: הוספת צלחת גג מתכת גדולה 1-2 ס מ על החלק העליון של הקופסה המספקת צל מהשמש במהלך הקיץ, אם כי זה יכול גם להסיר את אור השמש השימושי שלנו מהפאנל. אתה יכול להמציא עיצוב המפריד בין הלוח והקופסה (השארת הלוח על השמש, הקופסה בצל).

בתמונות: אחת התחנות שהוסרה מסביבת העבודה לאחר שנה אחת, מתח הסוללה עדיין על 3.9V מהמם, אין נזקי מים לאף חלק בקופסה למרות שהרשת שהדבקתי בתחתית הקוביה נקרעה. הסיבה שצריך לטפל בתחנה היא תקלה בחיבור במחבר LDR, למרות שנראה כי כבל המגשר עדיין במקום, החיבור נותק ולכן הסיכה צפה לעתים ומספקת קריאות אנלוגיות לא טובות של LDR. הצעה: אם אתה משתמש בכבלי מגשר PC סטנדרטיים, הדבק את כולם לאחר שהתחנה פועלת בצורה מושלמת כדי להימנע מכך.

שלב 7: תוכנה

תוֹכנָה
תוֹכנָה

קוד התוכנה ידרוש 3 ספריות חיצוניות (LowPower, DHT, VirtualWire). הייתה לי בעיה למצוא כמה מהם בקלות באינטרנט בזמן האחרון אז צירפתי אותם לקובץ ZIP נפרד. לא משנה באיזו מערכת הפעלה אתה משתמש ב- Linux/Windows, פשוט מצא את תיקיית הספרייה של Arduino IDE וחלץ אותם שם.

רק הערה, בלי קשר לכך שכבר אני מייעצת לרכוש את DHT11, אם אתה משתמש בחיישן DHT מהסוג הלא נכון התוכנית תיתקע לנצח בהתחלה בקטע האתחול (אתה אפילו לא תראה את מנעול ההפעלה מהבהב 3 פעמים).

קוד הלולאה הראשי הוא פשוט מאוד, ראשית הוא קורא את ערכי הסביבה (טמפרטורה, מדד חום, לחות, שמש), שולח אותם דרך רדיו ואז הוא משתמש בספריית הספק נמוך כדי להרדים את הארדואינו במשך 5 דקות.

גיליתי שהורדת העומס תגביר את יציבות שידורי הרדיו. התחנה שולחת כמות קטנה מאוד של נתונים, 300 bps זה יותר ממספיק. אל תשכח שהמשדר פועל רק מכ- 4.8V, בגרסת 3.3V בעתיד זה עשוי להוביל לאיכות שידור גרועה עוד יותר (שליחת נתונים דרך קירות ומכשולים אחרים). נתקלתי בבעיה בשימוש במגה Arduino המצורפת ל- RPberry PI 2 המפעיל את המגה מה- PI, שלא קיבלתי שידור. הפתרון היה להפעיל את המגה מספק חיצוני נפרד של 12V.

שלב 8: גירסה 2 (מבוססת ESP32)

גרסה 2 (מבוססת ESP32)
גרסה 2 (מבוססת ESP32)
גרסה 2 (מבוססת ESP32)
גרסה 2 (מבוססת ESP32)
גרסה 2 (מבוססת ESP32)
גרסה 2 (מבוססת ESP32)

כל מה שיכול להישבר יישבר כדי לצטט את מרפי הישן והטוב ובסופו של דבר לאחר שנים התחנות נכשלו בדרכים מסתוריות. אחד התחיל לשלוח נתוני שמש זנביים שהגיעו לעשרות אלפים, וזה בלתי אפשרי בשל: לוח Arduino מכיל 6 ערוצים (8 ערוצים במיני ובנאנו, 16 במגה), ממיר אנלוגי לדיגיטלי של 10 סיביות. המשמעות היא שהיא תמפה מתח כניסה בין 0 ל -5 וולט לערכים שלמים בין 0 ל -1023. אז לאחר החלפת הרדיו, LDR ותכנות מחדש של ה- Atmega 328P מספר פעמים וויתרתי והחלטתי שהגיע הזמן לחדשנות. בוא נלך ל- ESP32.

הלוח בו השתמשתי היה: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi & כרטיס Bluetooth Rev1 MicroPython 4MB FLASH

wiki.wemos.cc/products:lolin32:lolin32_lit…

מיקרו-בקר ESP-32

מתח הפעלה 3.3V סיכות קלט/פלט דיגיטליות 19 סיכות כניסה אנלוגיות 6 מהירות שעון (מקסימום) 240Mhz פלאש 4M בתים אורך 5mm רוחב 2.54mm משקל 4g

שלא כמו בתמונה אין את הלוגו של LOLIN (זיוף מסין). ההפתעה הנעימה הראשונה שלי הייתה שהפינאוט המודפס על הלוח תואם את ה- pinout של Arduino! אחרי שהתמודדתי עם כל כך הרבה לוחות noname שבהם הייתי צריך לחפש pinouts כל היום מת עייף לעשות טעויות סוף סוף לוח שבו pinout הוא ישר קדימה WoW!

אולם הנה הצד האפל של הסיפור:

בתחילה חיברתי את ה- LDR ל- A15 שהוא סיכה 12 מכיוון שהיה קל יותר להדביק את הסיכות יחד. אז יש לי 4095 קריאות קריאה (שזה המקסימום שאתה יכול להשיג עם AnlogRead ב- ESP32) מה שהטריף אותי כי כל הסיבה שבניתי את התחנה מחדש הייתה קריאות ה- LDR השבורות מהישנה (ה- DHT עדיין תפקד מצוין). אז מסתבר ש:

ה- esp 32 משלב שני רישומי ACD של 12 סיביות. ADC1 עם 8 ערוצים המחוברים ל- GPIO 32-39 ואנד ADC2 עם 10 ערוצים בסיכות אחרות.העניין הוא ש- ESP32 משתמש ב- ADC2 לניהול פונקציות wifi, כך שאם אתה משתמש ב- Wifi, אינך יכול להשתמש ברשם זה. מנהל ההתקן של ADC תומך ב- ADC1 (8 ערוצים, מחוברים ל- GPIO 32 - 39) ו- ADC2 (10 ערוצים, מחוברים ל- GPIOs 0, 2, 4, 12 - 15 ו- 25 - 27). עם זאת, לשימוש ב- ADC2 יש כמה מגבלות ליישום:

מנהל ההתקן של ה- Wi-Fi משתמש ב- ADC2. לכן היישום יכול להשתמש ב- ADC2 רק כאשר מנהל ההתקן של ה- Wi-Fi לא הופעל. חלק מסיכות ה- ADC2 משמשות כסיכות רצועה (GPIO 0, 2, 15) ולכן לא ניתן להשתמש בהן באופן חופשי. כך הוא ערכות הפיתוח הרשמיות הבאות:

אז חיבור ה- LDR מהפין 12 ל- A0 שהוא סמנכ ל פתר הכל אבל אני לא מבין למה הם אפילו מפרטים סיכות ADC2 כזמינות ליצרנים. כמה חובבים אחרים בזבזו טונות של זמן עד שהבנו זאת? לפחות סמן את הסיכות הבלתי שימושיות באדום או משהו או אל תזכיר זאת במדריך כלל כך שיצרנים אחרים יכולים לברר עליהם רק אם הם באמת זקוקים להם. כל המטרה של ESP32 היא להשתמש בו עם WIFI, כולם משתמשים בו עם WIFI.

התחלה טובה כיצד להתקין את Arduino IDE ללוח זה:

למרות שהכנסתי אותו לקוד כאן הוא עובר שוב:

קוד זה עשוי לא להרכיב עבור דגמי ESP32 אחרים מאשר Weemos LOLIN 32!

בניית הגדרות: -שימוש בהעלאה/סידורי: 115200 -שימוש במעבד/זיכרון RAM: 240Mhz (Wifi | BT) -שימוש בתדר פלאש: 80 Mhz

יש טונות של תחנות מזג אוויר מבוססות ESP32 ברשת, הן הרבה יותר נפוצות ממה שגרסה 1 שלי הייתה עם שבב הברבנים מכיוון שהן קלות יותר להתקנה, אתה לא צריך מתכנת פשוט חבר את המכשיר ל- usb ותכנת אותו ואת שלהם מצב שינה עמוק מצוין לזמן רב בריצה מהסוללה. ממש זה היה הדבר הראשון שבדקתי עוד לפני הלחמה בסיכות הפריצה מכיוון שכפי שציינתי מספר מקומות בפרויקט זה הדבר החשוב ביותר הוא צריכת החשמל ועם הסוללה הנוכחית (המזויפת) ופאנל סולארי קטן המתנה כוח לא באמת יכול לעבור על 1-2mA כי אחרת הפרויקט לא יוכל לקיים את עצמו לאורך זמן.

זו שוב הייתה הפתעה נעימה שמצב השינה העמוקה פועל כפי שפורסם. במהלך השינה העמוקה הזרם היה כל כך נמוך עד שהמטר הזול שלי אפילו לא יכול היה למדוד אותו (עובד בשבילי).

במהלך שליחת הנתונים הזרם היה סביב 80mA (שזה בערך פי 5 יותר מאשר כאשר Atmega 328P התעורר ומשדר), עם זאת אל תשכח שעם ה- V1 היה ניקוז כוח ממוצע של 1mA ב- LDR במצב שינה (שהיה תלוי גם ברמות האור והלך מ 0.5mA - 1mA) שעכשיו איננו.

כעת, לאחר שהסוללה של UltraFire מושבתת אם אתה משתמש באותה סוללה, הנה מה שאתה יכול לצפות:

Iavg = (טון*יון + צלף*איסלף) / (טון + צלף)

Iavg = (2s*80mA + 300s*0.01mA) / (2s + 300s) Iavg = 0.5mA

Pavg = VxIavg = 5Vx0.5mA = 2.5 mW

תֵאוֹרֵטִי

חיי סוללה = 22000mWh/2.5mW = 8800 שעות = 366 ימים בערך

אמיתי

חיי סוללה = 800mWh/2.5mW = 320 שעות = 13 ימים בערך

לא היה לי היקף למדוד בדיוק את ההפעלה בזמן, אבל עם השינויים שלי זה מסתיים בסביבות 2 שניות.

לא רציתי להקדיש אחר הצהריים לקידוד הכל בהתאמה אישית אז חיפשתי כמה תחנות מזג אוויר אחרות ב- Instructables המבוססות על ESP32 כדי לראות מה הן עושות לאחסון נתונים. לצערי הבחינו כי הם משתמשים באתרים בלתי גמישים ומוגבלים כגון weathercloud. מכיוון שאני לא מעריץ של ה"ענן "והקוד שלהם נשבר מזמן מכיוון שהאתר שינה את ה- API שלו מאז, לקחתי את 10 הדקות שלי כדי ליצור פתרון מותאם אישית מכיוון שהוא לא קשה כמו שחושבים. בואו נתחיל!

קודם כל אין תמונת לוח מעגלים בנפרד עבור הפרויקט הזה, מכיוון שהוא משתמש באותם רכיבים בדיוק (סליחה על זה המולחם בתמונת לוח לחם מכוערת) כמו ה- V1 בהבדל שהכל פועל על 3.3V. ה- DHT התחבר באמצעות pullup ל- VCC, ה- LDR משך למטה עם 10k. הבעיה שאפשר לראות עם סוללות 18650 כמו הזיוף הסיני שלי (6500 mAh אולטרה שמש אש חחח: D) היא שהם מתחילים את עקומת הפריקה מסביב לעידן חדש בסביבות 4.1V ועוברים עד שמעגל הניתוק שלהם נכנס לפעולה כדי לעצור את הנזק לתאים (אלה שיש להם את המזל). זה בשום מקום לא טוב לנו כקלט 3.3V. למרות שללוח זה של LOLIN יש מחבר סוללת ליתיום ומעגל טעינה בפרויקט הזה רציתי לשפץ את מה שיכולתי מהתחנה הישנה, כך שעם 18650 הישן אתה לא יכול להשתמש במטען מובנה זה. הפתרון היה פשוט מאוד: ניתקתי כבל מיקרו USB המולחם לתוך 5V מתוך מגבר המתח הישן ופתרון הבעיה נפתרה, מכיוון שללוח ה- microUSB יש רגולטור.

אז ההבדל בין הגרסה הישנה והחדשה שבסוללה הישנה מספקת 3.7V -> מוגברת ל- 5V -> פועלת ardu על 5V -> כל הרכיבים פועלים על 5V.

בחדש: הסוללה מספקת 3.7V -> מוגברת ל 5V -> מוסדרת באמצעות regboard המשולבת ב- ESP32 -> כל הרכיבים הפועלים על 3.3V.

מבחינת תוכנה נזדקק גם לספריית DHT נוספת, ה- DHT של Arduino אינו תואם ל- ESP. מה שאנחנו צריכים נקרא DHT ESP.

התחלתי לבסס את הקוד שלי בדוגמה של DHT שהספק קוד זה. עבודת הקוד היא:

1, קבל את הנתונים הסביבתיים מנתוני DHT + השמש מהתא

2, התחבר ל- wifi עם IP סטטי

3, פרסם את הנתונים לסקריפט php

4, לך לישון במשך 10 דקות

כפי שתבחין כיוונתי את הקוד ליעילות כדי למזער באופן מוחלט את זמן ההתעוררות מכיוון שהוא מוריד 5 פעמים מהספק ממה שהפרוייקט הישן עשה כשהוא מופעל. איך עשיתי זאת? קודם כל אם יש איזושהי שגיאה הפונקציה getTemperature () תחזור עם false (כלומר 10 דקות שינה שוב). זה יכול להיות כאילו לא ניתן להפעיל את חיישן DHT או שחיבור ה- wifi אינו זמין. כפי שתבחין בלולאת ה- while () הרגילה להמשך ניסיונות ה- wifi לנצח גם הוסרה אך יש צורך להשאיר שם עיכוב של 1 שניות אחרת זה לא תמיד יתחבר וזה תלוי גם בסוג ה- AP, הטעינה וכו 'כמה מהר זה יקרה, עם 0.5s קיבלתי התנהגות לא עקבית (לפעמים זה לא יכול להתחבר). אם מישהו יודע דרך טובה יותר לעשות זאת אנא השאירו זאת בתגובות. רק כאשר נתוני DHT נקראים וחיבור ה- wifi יעלה הוא ינסה לפרסם את הנתונים לסקריפט בשרת האינטרנט. כל מיני פונקציות של בזבוז זמן כמו של Serial.println () מושבתות גם במצב תפעולי רגיל. כשרת אני משתמש גם ב- IP כדי להימנע מחיפוש DNS מיותר, בקוד שלי גם שער ברירת המחדל וגם שרת dns מוגדרים ל- 0.0.0.0.

אני לא מבין למה כל כך קשה ליצור API משלך כשכל מה שצריך הוא:

sprintf (תגובה, "temp =%d & hum =%d & hi =%d & sol =%d", temp, hum, hi, sol);

int httpResponseCode = http. POST (תגובה);

אתה שם את קוד ה- php הקטן הזה לכל פטל פאי ותוכל לבצע משימות מערכת () מיד בהתבסס על הטלמטריה כמו הפעלת מאווררים או הדלקת האורות אם יחשיך מספיק.

כמה הערות לגבי הקוד:

WiFi.config (staticIP, שער, רשת משנה, dns); // חייב להיות לאחר שה- Wifi יתחיל עד כמה מטומטם …

WiFi.mode (WIFI_STA); // חייב אחרת זה גם ייצור AP לא רצוי

כן טוב עכשיו אתה יודע. גם סדר הגדרות ה- IP יכול להשתנות באמצעות פלטפורמות, ניסיתי דוגמאות אחרות תחילה שבהן הוחלפו ערכי השער ורשת המשנה. למה להגדיר IP סטטי? זה די ברור, אם יש לך תיבה ייעודית ברשת שלך כמו שרת לינוקס שמריץ isc dhcpd, אתה לא רוצה מאה מיליון רשומות יומן כאשר ה- ESP יתעורר ותקבל את ה- IP מה- DHCP. נתבים בדרך כלל לא רושמים אסוציאציות כך שזה לא ייראה. זהו המחיר של חיסכון בחשמל.

V2 מעולם לא הצליח לקיים את עצמו בגלל הסוללה באיכות גרועה ופשוט שמתי אותה על מתאם אז אם אתה רוצה לבנות את ה- V1 או V2 אל תקנה את הסוללה שהוזכרה, בצע מחקר משלך על סוללות (כל 18650 יותר מ- 2000mAh קיבולת מפורסמת ב- Ebay היא הונאה עם סבירות גבוהה).

מוּמלָץ: