תוכן עניינים:
- שלב 1: שטר ציוד חיוני
- שלב 2: חיבורי חומרה להתקנה
- שלב 3: תכנות פטל פטל ב- Java
- שלב 4: פרקטיות הקוד
- שלב 5: ניצול בעולם הקונסטרוקטיבי
- שלב 6: מסקנה
וִידֵאוֹ: תחנת מזג אוויר אישית באמצעות פטל פטל עם BME280 בג'אווה: 6 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:12
מזג אוויר גרוע תמיד נראה גרוע יותר מבעד לחלון
תמיד היינו מעוניינים לעקוב אחר מזג האוויר המקומי שלנו ומה שאנו רואים מהחלון. רצינו גם שליטה טובה יותר על מערכת החימום והמזגן שלנו. בניית תחנת מזג אוויר אישית היא חווית למידה נהדרת. כשתסיים לבנות את הפרויקט הזה תהיה לך הבנה טובה יותר של אופן הפעולה של תקשורת אלחוטית, כיצד פועלים חיישנים ועד כמה עוצמת פלטפורמת Raspberry Pi יכולה להיות. עם פרויקט זה כבסיס והניסיון שנצבר, תוכל לבנות בקלות פרויקטים מורכבים יותר בעתיד.
שלב 1: שטר ציוד חיוני
1. פטל פטל
השלב הראשון הוא לשים את היד שלך על לוח Raspberry Pi. Raspberry Pi הוא מחשב לוח יחיד המופעל על ידי לינוקס. מטרתו לשפר את כישורי התכנות והבנת החומרה. הוא אומץ במהירות על ידי חובבים וחובבי אלקטרוניקה לפרויקטים חדשניים.
2. מגן I²C עבור פטל פטל
INPI2 (מתאם I2C) מספק את Raspberry Pi 2/3 יציאת I²C לשימוש עם מספר התקני I²C. הוא זמין בחנות Dcube
3. חיישן לחות, לחץ וטמפרטורה דיגיטאליים, BME280
BME280 הוא חיישן לחות, לחץ וטמפרטורה בעל זמן תגובה מהיר ודיוק כולל גבוה. רכשנו חיישן זה מחנות Dcube
4. כבל חיבור I²C
היה לנו את כבל החיבור I²C זמין בחנות Dcube
5. כבל מיקרו USB
כבל מיקרו USB ספק הכוח הוא בחירה אידיאלית להפעלת ה- Raspberry Pi.
6. פירוש גישה לאינטרנט באמצעות מתאם EthernetCable/WiFi
אחד הדברים הראשונים שתרצה לעשות הוא לחבר את ה- Raspberry Pi שלך לאינטרנט. אנו יכולים להתחבר באמצעות כבל אתרנט. אפשרות נוספת היא שתוכל להתחבר לרשת אלחוטית באמצעות מתאם אלחוטי USB.
7. כבל HDMI (כבל תצוגה וקישוריות)
כל צג HDMI/DVI וכל טלוויזיה אמורים לעבוד כתצוגה עבור ה- Pi. אבל זה אופציונלי. לא ניתן לשלול גם אפשרות גישה מרחוק (כמו SSH). אתה יכול גם לקבל גישה באמצעות תוכנת PUTTY.
שלב 2: חיבורי חומרה להתקנה
הפוך את המעגל לפי הסכימה המוצגת.
במהלך הלמידה, למדנו היטב את היסודות של האלקטרוניקה בנוגע לידע על חומרה ותוכנה. רצינו להכין סכמה אלקטרונית פשוטה לפרויקט זה. סכמות אלקטרוניות הן כמו שרטוט לאלקטרוניקה. שרטוט ועקוב אחר העיצוב בזהירות. יישמנו כאן כמה יסודות של אלקטרוניקה. ההיגיון מוביל אותך מ- A ל- B, הדמיון ייקח אותך לכל מקום!
חיבור של Raspberry Pi ו- I²C Shield
קודם כל קח את ה- Raspberry Pi והנח עליו את מגן I²C (עם יציאת I²C הפונה כלפי פנים). לחץ בעדינות על המגן על סיכות ה- GPIO של פי וסיימנו עם שלב זה קל כמו עוגה (ראו את התמונה).
חיבור החיישן ו- Raspberry Pi
קח את החיישן וחבר איתו את כבל I²C. וודא שפלט I²C תמיד מתחבר לקלט I²C. אותו הדבר צריך להיעשות לגבי הפטל פטל עם מגן I²C המותקן מעליו סיכות GPIO. יש לנו את מגן I²C ואת כבלי החיבור בצד שלנו כהקלה גדולה מאוד ויתרון גדול מאוד מכיוון שאנו נשארים רק עם אפשרות plug and play. אין עוד בעיות סיכות וחיווט ולכן הבלבול נעלם. רק דמיין את עצמך ברשת החוטים ונכנס לזה. הקלה מזה. זה הופך את הדברים לבלתי מורכבים.
הערה: החוט החום צריך תמיד לעקוב אחר חיבור הארקה (GND) בין הפלט של התקן אחד לקלט של התקן אחר
קישוריות לאינטרנט היא צורך
יש לך כאן בחירה למעשה. אתה יכול לחבר את Raspberry Pi באמצעות כבל ה- LAN או עם מתאם ה- Nano USB האלחוטי לקישוריות WIFI. כך או כך, המניפסט הוא להתחבר לאינטרנט שהושג.
הפעלת המעגל
חבר את כבל ה- Micro USB לשקע החשמל של Raspberry Pi. אגרוף וואלה! הכל טוב ונתחיל מיד.
חיבור לתצוגה
אנו יכולים לחבר את כבל ה- HDMI למסך או לטלוויזיה. אנו יכולים לגשת ל- Raspberry Pi מבלי לחבר אותו למסך באמצעות -SSH (גש לשורת הפקודה של ה- Pi ממחשב אחר). אתה יכול גם להשתמש בתוכנת PUTTY לשם כך. אפשרות זו מיועדת למשתמשים מתקדמים, כך שלא נעסוק בה בהרחבה כאן.
שמעתי שיהיה מיתון, החלטתי לא להשתתף
שלב 3: תכנות פטל פטל ב- Java
קוד הג'אווה לחיישן Raspberry Pi ו- BME280. הוא זמין במאגר Github שלנו.
לפני שתמשיך לקוד, הקפד לקרוא את ההוראות המופיעות בקובץ ה- Readme ולהגדיר את ה- Raspberry Pi בהתאם לכך. ייקח רק רגע לעשות זאת. תחנת מזג אוויר אישית היא מערכת מכשירים למדידת מזג אוויר המופעלים על ידי אדם פרטי, מועדון, אגודה או אפילו עסק. תחנות מזג אוויר אישיות עשויות להיות מופעלות אך ורק להנאתו ולחינוכו של הבעלים, אך מפעילי תחנת מזג אוויר אישיים רבים משתפים גם את נתוניהם עם אחרים, או על ידי איסוף נתונים באופן ידני והפצתם, או באמצעות שימוש באינטרנט או ברדיו חובבני.
הקוד נמצא בצורה הפשוטה ביותר שאתה יכול לדמיין ולא אמורה להיות לך שום בעיה עם זה אלא לשאול אם יש לך. גם אם אתה יודע אלף דברים, עדיין תשאל מישהו שיודע.
תוכל להעתיק מכאן גם את קוד ה- Java שעובד עבור חיישן זה.
// מופץ ברישיון רצון חופשי. // השתמש בו בכל דרך שתרצה, להרוויח או בחינם, בתנאי שהוא מתאים לרישיונות של העבודות המשויכות אליו. // BME280 // קוד זה נועד לעבודה עם מודול מיני BME280_I2CS I2C הזמין ב- ControlEverything.com. //
ייבא com.pi4j.io.i2c. I2CBus;
ייבא com.pi4j.io.i2c. I2CDevice; יבוא com.pi4j.io.i2c. I2CFactory; יבוא java.io. IOException;
מחלקה ציבורית BME280
{main static void main (String args ) זורק חריגה {// צור אוטובוס I2C I2CBus bus = I2CFactory.getInstance (I2CBus. BUS_1); // קבל מכשיר I2C, כתובת I2C BME280 היא 0x76 (108) I2CDevice device = bus.getDevice (0x76); // קרא 24 בתים של נתונים מהכתובת 0x88 (136) בתים b1 = בתים חדשים [24]; device.read (0x88, b1, 0, 24); // המר את הנתונים // מקדמי טמפרטורה int dig_T1 = (b1 [0] & 0xFF) + ((b1 [1] & 0xFF) * 256); int dig_T2 = (b1 [2] & 0xFF) + ((b1 [3] & 0xFF) * 256); אם (dig_T2> 32767) {dig_T2 -= 65536; } int dig_T3 = (b1 [4] & 0xFF) + ((b1 [5] & 0xFF) * 256); אם (dig_T3> 32767) {dig_T3 -= 65536; } // מקדמי לחץ int dig_P1 = (b1 [6] & 0xFF) + ((b1 [7] & 0xFF) * 256); int dig_P2 = (b1 [8] & 0xFF) + ((b1 [9] & 0xFF) * 256); אם (dig_P2> 32767) {dig_P2 -= 65536; } int dig_P3 = (b1 [10] & 0xFF) + ((b1 [11] & 0xFF) * 256); אם (dig_P3> 32767) {dig_P3 -= 65536; } int dig_P4 = (b1 [12] & 0xFF) + ((b1 [13] & 0xFF) * 256); אם (dig_P4> 32767) {dig_P4 -= 65536; } int dig_P5 = (b1 [14] & 0xFF) + ((b1 [15] & 0xFF) * 256); אם (dig_P5> 32767) {dig_P5 -= 65536; } int dig_P6 = (b1 [16] & 0xFF) + ((b1 [17] & 0xFF) * 256); אם (dig_P6> 32767) {dig_P6 -= 65536; } int dig_P7 = (b1 [18] & 0xFF) + ((b1 [19] & 0xFF) * 256); אם (dig_P7> 32767) {dig_P7 -= 65536; } int dig_P8 = (b1 [20] & 0xFF) + ((b1 [21] & 0xFF) * 256); אם (dig_P8> 32767) {dig_P8 -= 65536; } int dig_P9 = (b1 [22] & 0xFF) + ((b1 [23] & 0xFF) * 256); אם (dig_P9> 32767) {dig_P9 -= 65536; } // קרא 1 בתים של נתונים מהכתובת 0xA1 (161) int dig_H1 = ((בייט) device.read (0xA1) & 0xFF); // קרא 7 בתים של נתונים מהכתובת 0xE1 (225) device.read (0xE1, b1, 0, 7); // המר את הנתונים // מקדמי לחות int dig_H2 = (b1 [0] & 0xFF) + (b1 [1] * 256); אם (dig_H2> 32767) {dig_H2 -= 65536; } int dig_H3 = b1 [2] & 0xFF; int dig_H4 = ((b1 [3] & 0xFF) * 16) + (b1 [4] & 0xF); אם (dig_H4> 32767) {dig_H4 -= 65536; } int dig_H5 = ((b1 [4] & 0xFF) / 16) + ((b1 [5] & 0xFF) * 16); אם (dig_H5> 32767) {dig_H5 -= 65536; } int dig_H6 = b1 [6] & 0xFF; אם (dig_H6> 127) {dig_H6 -= 256; } // בחר מרשם לחות הבקרה // לחות מעל קצב הדגימה = התקן אחד. כתב (0xF2, (בייט) 0x01); // בחר מרשם מדידת בקרה // מצב רגיל, טמפ 'ולחץ על קצב הדגימה = התקן אחד. כתב (0xF4, (בתים) 0x27); // בחר register register // Stand_by time = 1000 ms device.write (0xF5, (byte) 0xA0); // קרא 8 בתים של נתונים מהכתובת 0xF7 (247) // לחץ msb1, לחץ msb, לחץ lsb, טמפ 'msb1, טמפ' msb, טמפ 'lsb, לחות lsb, לחות msb בייט נתון = בתים חדשים [8]; device.read (0xF7, data, 0, 8); // המרת נתוני לחץ וטמפרטורה לאורך 19 סיביות adc_p = (((long) (data [0] & 0xFF) * 65536) + ((long) (data [1] & 0xFF) * 256) + (long) (נתונים [2] & 0xF0)) / 16; long adc_t = (((long) (data [3] & 0xFF) * 65536) + ((long) (data [4] & 0xFF) * 256) + (long) (data [5] & 0xF0)) / 16; // המרת נתוני הלחות long adc_h = ((long) (data [6] & 0xFF) * 256 + (long) (data [7] & 0xFF)); // חישובי קיזוז טמפרטורה כפול var1 = (((כפול) adc_t) / 16384.0 - ((כפול) dig_T1) / 1024.0) * ((כפול) dig_T2); כפול var2 = ((((כפול) adc_t) / 131072.0 - ((כפול) dig_T1) / 8192.0) * (((כפול) adc_t) /131072.0 - ((כפול) dig_T1) /8192.0)) * ((כפול) dig_T3); t_fine כפול = (ארוך) (var1 + var2); cTemp כפול = (var1 + var2) / 5120.0; כפול fTemp = cTemp * 1.8 + 32; // חישובי קיזוז לחץ var1 = ((כפול) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((כפול) dig_P6) / 32768.0; var2 = var2 + var1 * ((כפול) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((כפול) dig_P4) * 65536.0); var1 = (((כפול) dig_P3) * var1 * var1 / 524288.0 + ((כפול) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((כפול) dig_P1); כפול p = 1048576.0 - (כפול) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((כפול) dig_P9) * p * p / 2147483648.0; var2 = p * ((כפול) dig_P8) / 32768.0; לחץ כפול = (p + (var1 + var2 + ((כפול) dig_P7)) / 16.0) / 100; // חישובי קיזוז לחות כפול var_H = (((כפול) t_fine) - 76800.0); var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1.0 + dig_H6 / 67108864.0 * var_H * (1.0 + dig_H3 / 67108864.0 * var_H))); לחות כפולה = var_H * (1.0 - dig_H1 * var_H / 524288.0); אם (לחות> 100.0) {לחות = 100.0; } אחרת אם (לחות <0.0) {לחות = 0.0; } // נתוני פלט למסך System.out.printf ("טמפרטורה בצלזיוס: %.2f C %n", cTemp); System.out.printf ("טמפרטורה בפרנהייט: %.2f F %n", fTemp); System.out.printf ("לחץ: %.2f hPa %n", לחץ); System.out.printf ("לחות יחסית: %.2f %% RH %n", לחות); }}
שלב 4: פרקטיות הקוד
עכשיו, הורד (או git משוך) את הקוד ופתח אותו ב- Raspberry Pi.
הפעל את הפקודות כדי לאסוף ולהעלות את הקוד במסוף ולראות את הפלט על צג. לאחר מספר רגעים, הוא יסנן את כל הפרמטרים. על מנת לוודא שיש לך מעבר קוד חלק ותוצאה רגועה (אש), אתה חושב על רעיונות נוספים לביצוע תיקונים נוספים (כל פרויקט מתחיל בסיפור).
שלב 5: ניצול בעולם הקונסטרוקטיבי
BME280 משיג ביצועים גבוהים בכל היישומים הדורשים מדידת לחות ולחץ. יישומים אלה המתפתחים הם מודעות הקשר, למשל. זיהוי עור, זיהוי שינוי החדר, ניטור כושר / רווחה, אזהרה לגבי יובש או טמפרטורות גבוהות, מדידת נפח וזרימת אוויר, בקרת אוטומציה ביתית, בקרת חימום, אוורור, מיזוג אוויר (HVAC), אינטרנט של דברים (IoT), שיפור GPS (למשל שיפור הזמן עד לתקן הראשון, חישוב מתים, איתור שיפוע), ניווט פנימי (שינוי זיהוי רצפה, זיהוי מעליות), ניווט בחוץ, יישומי פנאי וספורט, תחזית מזג אוויר ואינדיקטיית מהירות אנכית (עלייה/כיור) מְהִירוּת).
שלב 6: מסקנה
כפי שאתה יכול לראות, פרויקט זה הוא הדגמה מצוינת למה חומרה ותוכנה מסוגלות. תוך זמן קצר אפשר לבנות פרויקט כה מרשים! כמובן שזו רק ההתחלה. יצירת תחנת מזג אוויר אישית מתוחכמת יותר כמו תחנות מזג אוויר אישיות משדות התעופה יכולה לכלול עוד כמה חיישנים כמו מד -מד (מהירות הרוח), שידור מטר (ראות), פירנומטר (קרינת שמש) וכו '. יש לנו סרטון הדרכה ב- YouTube שיש לו את התפקוד הבסיסי של חיישן I²C עם Rasp Pi. זה באמת מדהים לראות את התוצאות והעבודה של התקשורת I²C. בדוק זאת גם כן. כיף לבנות וללמוד! אנא יידע אותנו מה אתה חושב על ההנחיה הזו. נשמח לבצע שיפורים במידת הצורך.
מוּמלָץ:
תחנת מזג האוויר של NaTaLia: תחנת מזג אוויר מונעת על ידי סולארית Arduino בוצעה בדרך הנכונה: 8 שלבים (עם תמונות)
תחנת מזג האוויר של NaTaLia: תחנת מזג אוויר המופעלת באמצעות Arduino סולארית בוצעה בדרך הנכונה: לאחר שנה של הפעלה מוצלחת בשני מיקומים שונים אני משתף את תוכניות הפרויקט של תחנת מזג האוויר המונעות על ידי סולארי ומסביר כיצד היא התפתחה למערכת שיכולה לשרוד לאורך זמן. תקופות מכוח השמש. אם אתה עוקב
תחנת מזג אוויר בחדר באמצעות Arduino & BME280: 4 שלבים
תחנת מזג אוויר בחדר באמצעות Arduino & BME280: בעבר שיתפתי תחנת מזג אוויר פשוטה שהציגה את הטמפרטורה והלחות של האזור המקומי. הבעיה איתו הייתה שיידרש זמן עדכון והנתונים לא היו מדויקים. במדריך זה נכין צג מזג אוויר פנימי
תחנת מזג אוויר באמצעות Wemos D1 Mini, BME280 ו- Sensate .: 6 שלבים
תחנת מזג אוויר באמצעות Wemos D1 Mini, BME280 ו- Sensate .: בפוסטים קודמים שיתפתי שיטות שונות לבניית תחנת מזג אוויר. אם לא בדקת זאת הנה קישור. במדריך זה אדגים כיצד לבנות תחנת מזג אוויר פשוטה באמצעות Wemos ופלטפורמת IoT בשם Sensate
תחנת מזג אוויר באמצעות פטל פטל עם BME280 בפייתון: 6 שלבים
תחנת מזג אוויר באמצעות פטל פטל עם BME280 בפייתון: הוא maith a scéalaí an aimir (מזג האוויר הוא מספר סיפורים טוב) עם התחממות כדור הארץ ושינויי אקלים, דפוס מזג האוויר העולמי הופך לא יציב ברחבי העולם שלנו ומוביל למספר מזג אוויר הקשור למזג אוויר. אסונות טבע (בצורות, קיצוניות
תחנת מזג אוויר Acurite 5 in 1 באמצעות פיי פטל ו- Weewx (תחנות מזג אוויר אחרות תואמות): 5 שלבים (עם תמונות)
תחנת מזג אוויר Acurite 5 in 1 באמצעות פי פטל ו- Weewx (תחנות מזג אוויר אחרות תואמות): כשקניתי את תחנת מזג האוויר Acurite 5 in 1 רציתי להיות מסוגל לבדוק את מזג האוויר בבית שלי בזמן שהייתי בחוץ. כשהגעתי הביתה והגדרתי אותו הבנתי שאני חייב לחבר את המסך למחשב או לקנות את הרכזת החכמה שלהם