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

מנורת LED אלחוטית תואמת אור Arduino באמצעות פוטורסיסטור: 4 שלבים
מנורת LED אלחוטית תואמת אור Arduino באמצעות פוטורסיסטור: 4 שלבים

וִידֵאוֹ: מנורת LED אלחוטית תואמת אור Arduino באמצעות פוטורסיסטור: 4 שלבים

וִידֵאוֹ: מנורת LED אלחוטית תואמת אור Arduino באמצעות פוטורסיסטור: 4 שלבים
וִידֵאוֹ: מנורת LED מבית XIAOMI Yeelight | סקירה 2024, נוֹבֶמבֶּר
Anonim
מנורת LED אלחוטית תואמת אור Arduino באמצעות פוטורסיסטור
מנורת LED אלחוטית תואמת אור Arduino באמצעות פוטורסיסטור
מנורת LED אלחוטית תואמת אור Arduino באמצעות פוטורסיסטור
מנורת LED אלחוטית תואמת אור Arduino באמצעות פוטורסיסטור
מנורת LED אלחוטית תואמת אור Arduino באמצעות פוטורסיסטור
מנורת LED אלחוטית תואמת אור Arduino באמצעות פוטורסיסטור

מדריך זה מפרט את השלבים הדרושים לבניית מנורת לד חישה אור אלחוטית בסיסית באמצעות Arduino Unos ופוטורסיסטור. יישום אפשרי למכשיר זה יהיה תאורה של חדר שאין בו חלונות עם אור שמש מלאכותי, התואם את תנאי התאורה בפועל בחוץ בזמן אמת. בואו נתחיל!

רשימת אספקה:

Arduino Uno x2

מקלט אלחוטי NR224L01 x2 (אופציונלי - תיק גב NRF24L01 x2)

טרנזיסטור דרלינגטון TIP120

פוטורסיסטור

נוריות 5 מ מ x3

לחץ על הכפתור

נגד 100 אוהם x3

נגד 10k אוהם x3

חוטי מגשר שונים

שלב 1: חיווט המודולים והמעגל NRF24L01

חיווט המודולים והמעגל NRF24L01
חיווט המודולים והמעגל NRF24L01
חיווט המודולים והמעגל NRF24L01
חיווט המודולים והמעגל NRF24L01
חיווט המודולים והמעגל NRF24L01
חיווט המודולים והמעגל NRF24L01

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

הערה: בתמונות של הפרויקט שלי, תבחין כי משדרי NRF24L01 מחוברים למכשיר PCB אחר. זהו מודול תרמיל למקלטים המשדרים, המתפקד כווסת כוח. בנוסף להקלת החיווט, תיקי גב אלה מסדירים את כניסת החשמל ל- NRF24L01, ומאפשרים שימוש באספקת חשמל של 5V. השמטתי תרמילים אלה בתרשים שלי למען הבהירות.

(אם תחליט להשתמש בתרמילי הגב, עיין בקישור זה לקבלת תרשים של מיקומי הפינים בהתייחס למלאי NRF24L01).

להלן מצורף עותק PDF של המעגל, לצורך התקרבות/צפייה קלה יותר.

שלב 2: קידוד המשדר

השלב האחרון הוא קידוד. יהיה עליך להתקין את ספריית RadioHead או ספרייה מקבילה לשימוש עם המודולים NRF24L01.

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

צירפתי גם את קובץ ה-.ino (NRF_Send) מטעמי נוחות.

#לִכלוֹל

#לִכלוֹל

RH_NRF24 nrf24; // אתחול משדר כ- nrf24

כפתור int = 5; // הגדרת ערכי סיכה לכפתור ולפוטוריסטור

int pResistor = A0; int int = 0; // ערך האור בין 0-1023

הגדרת חלל ()

{Serial.begin (9600); pinMode (כפתור, INPUT); pinMode (pResistor, INPUT); if (! nrf24.init ()) // מתריע בפני המשתמש אם האתחול של המודול נכשל Serial.println ("init failed"); // ברירות מחדל לאחר init הן 2.402 GHz (ערוץ 2), 2Mbps, 0dBm אם (! Nrf24.setChannel (1)) Serial.println ("setChannel נכשל"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF נכשל"); }

לולאת חלל ()

{if (digitalRead (כפתור)) {// שלח הודעה אם הכפתור נלחץ value = analogRead (pResistor); // קרא את הערך של הפוטורזיסטור (0-1023) uint8_t data = {value}; // קובע מערך בשם "data " המכיל את ערך האור nrf24.send (data, sizeof (data)); // שלח את המערך למקבל nrf24.waitPacketSent (); // המתן עד שהחבילה נשלחה Serial.println ("ערך קל:" +מחרוזת (ערך)); // הדפס את ערך האור במסך הטורי}}

שלב 3: קידוד המקלט

עבור המקלט, הקוד משתמש גם בספריית RadioHead.

#לִכלוֹל

#לִכלוֹל

RH_NRF24 nrf24;

int LEDPin = 3;

int int = 0; // ערך האור בין 0-1023

הגדרת חלל ()

{Serial.begin (9600); pinMode (LEDPin, OUTPUT); if (! nrf24.init ()) Serial.println ("init נכשל"); // ברירות מחדל לאחר init הן 2.402 GHz (ערוץ 2), 2Mbps, 0dBm אם (! Nrf24.setChannel (1)) Serial.println ("setChannel נכשל"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF נכשל"); }

לולאת חלל ()

{// המתן להודעה uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; // אחסן את ההודעה שהתקבלה כמערך בשם "buf " uint8_t len = sizeof (buf); // אחסן את גודל ה- buf כ- "len" בעוד (nrf24.waitAvailableTimeout (200) && nrf24.recv (buf, & len)) // מקבל את ההודעה במשך 200 אלפיות השנייה או עד שכל ההודעה תתקבל {value = buf [0]; // קובע ערך למדד הראשון של buf , שהוא האינט מהפוטורזיסטור analogWrite (LEDPin, מפה (ערך, 0, 1023, 0, 255)); // מגדיר את סיכת ה- PWM להפיק ערך מדורג בין 0-255 עבור בהירות ה- LED Serial.println (מחרוזת (ערך)); } analogWrite (LEDPin, 0); }

שלב 4: בוצע

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

מוּמלָץ: