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

תחנת מזג אוויר אישית באמצעות פטל פטל עם BME280 בג'אווה: 6 שלבים
תחנת מזג אוויר אישית באמצעות פטל פטל עם BME280 בג'אווה: 6 שלבים

וִידֵאוֹ: תחנת מזג אוויר אישית באמצעות פטל פטל עם BME280 בג'אווה: 6 שלבים

וִידֵאוֹ: תחנת מזג אוויר אישית באמצעות פטל פטל עם BME280 בג'אווה: 6 שלבים
וִידֵאוֹ: למה יש כל כך הרבה סוגי שקעים בעולם? | כאן סקרנים 2024, יולי
Anonim
Image
Image
שטר ציוד חיוני
שטר ציוד חיוני

מזג אוויר גרוע תמיד נראה גרוע יותר מבעד לחלון

תמיד היינו מעוניינים לעקוב אחר מזג האוויר המקומי שלנו ומה שאנו רואים מהחלון. רצינו גם שליטה טובה יותר על מערכת החימום והמזגן שלנו. בניית תחנת מזג אוויר אישית היא חווית למידה נהדרת. כשתסיים לבנות את הפרויקט הזה תהיה לך הבנה טובה יותר של אופן הפעולה של תקשורת אלחוטית, כיצד פועלים חיישנים ועד כמה עוצמת פלטפורמת 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 בג'אווה
תכנות Raspberry Pi בג'אווה

קוד הג'אווה לחיישן 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. בדוק זאת גם כן. כיף לבנות וללמוד! אנא יידע אותנו מה אתה חושב על ההנחיה הזו. נשמח לבצע שיפורים במידת הצורך.

מוּמלָץ: