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

שעון בינארי אמיתי עם סינכרון NTP: 4 שלבים
שעון בינארי אמיתי עם סינכרון NTP: 4 שלבים

וִידֵאוֹ: שעון בינארי אמיתי עם סינכרון NTP: 4 שלבים

וִידֵאוֹ: שעון בינארי אמיתי עם סינכרון NTP: 4 שלבים
וִידֵאוֹ: The Magic Behind WAN Networking: Exploring OSI's Layer 2 2024, נוֹבֶמבֶּר
Anonim
שעון בינארי אמיתי עם סנכרון NTP
שעון בינארי אמיתי עם סנכרון NTP
שעון בינארי אמיתי עם סנכרון NTP
שעון בינארי אמיתי עם סנכרון NTP

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

בשעון בינארי אמיתי, הספרה הראשונה אומרת לך שהיא חצי היום, הספרה השנייה היא רבע יום, הספרה השלישית היא שמינית ביום וכו '. ניתן לקרוא אותה לכל רזולוציה מהר מאוד (בתרגול כמובן). הספרה הראשונה מקודדת ביעילות AM מול PM, הספרה השנייה מקודדת בין אם מוקדם AM/PM או AM/PM מאוחר, וכן הלאה.

בעיצוב השעון הבינארי האמיתי שלי השתמשתי ב -12 ספרות ברזולוציה, כך שהיום מחולק ל -2^12 = 4096 חלקים (כל תוספת היא כ -20 שניות). במקום לשמור את כל הספרות בשורה, 12 הספרות הופרדו ל -3 שורות של 4 ספרות. למרות שהספרות הבינאריות בפועל אינן משתנות, הדבר מאפשר לקרוא את השעון כ -3 ספרות משושה מקודדות, השורה הראשונה מציגה 16 של היום (1.5 שעות), השורה השנייה מציגה 256 של היום (~ 5 דקות), ו השורה השלישית המציגה 4096 שישיות ביום (~ 20 שניות).

השעון מסונכרן ל- NTP (Network Time Protocol) באמצעות ESP8266. ה- ESP8266 מוגדר כך, בעת ההפעלה, לחיצה על כפתור בשעון תשלח אותו למצב הגדרות. במצב הגדרות, השעון ייצור רשת WiFi המשרתת דף אינטרנט שניתן להשתמש בו כדי להזין הגדרות wifi משלך, שרת NTP ואזור זמן. מידע זה נשמר ב- EEPROM של ה- ESP8266 ונקרא כאשר השעון מתחיל לפעול במצב שעון כך שהוא יכול להתחבר לאינטרנט ולאחזר את השעה.

אספקה:

  • NodeMCU ESP8266
  • רצועת LED WS2812B
  • לחץ על הכפתור
  • נגד 470 אוהם
  • נגד 10K אוהם
  • קבל 470 uF
  • מקלות ארטיק
  • גוּלוֹת
  • עץ (או יריעת חומר אחרת) למארז

שלב 1: מעגל

מעגל חשמלי
מעגל חשמלי
מעגל חשמלי
מעגל חשמלי
מעגל חשמלי
מעגל חשמלי
מעגל חשמלי
מעגל חשמלי

על מנת לקבל תצוגה, פרויקט זה משתמש ברצועת לד מסוג RGB המונחת ב -3 שורות. חתכתי 3 רצועות של 8 נוריות מרצועת הנורות WS2812B והלחמתי אותן יחד. (הם שבירים והלחמת הרפידות הקטנות יכולה להיות קשה. עטפתי את הקצוות המולחמים בקלטת חשמל כדי לבודד אותם מכל כיפוף.) למרות שהייתי צריך רק 4 נוריות בכל שורה, גזרתי רצועות של 8 כך שאני יכול להיות מרווח גדול יותר בין האורות על ידי שימוש רק בכל לד אחר. רצועות אלה הודבקו אז לבסיס שטוח עשוי מקלות ארטיק. בין כל שורה, שכבה כפולה של מקלות ארטיק מספקת את הפרופיל כך שניתן יהיה להדביק את החלק הקדמי מול החלק הפנימי של השעון (ראו תמונה).

רצועת ה- LED מופעלת מה- VU ו- GND של ה- NodeMCU. VU מגיע לכוח (כמעט) ישירות מה- USB, כך שהוא מספק 5V לנורות WS2812B למרות שה- ESP8266 עובד ב -3.3V. הנחתי קבל 470 uF על פני הכוח עבור רצועת WS2812B כדי להגן על הנורות. הנתונים עבור רצועת ה- LED מחוברים לפין D3 של ה- NodeMCU באמצעות הנגד 470 אוהם. עיין במדריך זה למידע נוסף על אופן השליטה על נוריות WS2812B באמצעות ESP8266. המעגל מולחם על לוח פרוטו עם כמה כותרות זכר לנקבה עבור NodeMCU.

לחצן לחיצה הוצמד גם ל- D6 של ה- NodeMCU. ניתן ללחוץ על כפתור זה בזמן שהשעון מתחיל כדי לשלוח אותו למצב הגדרות (בו ניתן לשנות הגדרות wifi, שרת NTP והעדפות אזור זמן). בקצה אחד הכפתור מחובר ל- D6 וגם ל- GND באמצעות נגד 10K אוהם ובצד השני הוא מחובר לחשמל. כאשר הכפתור אינו נלחץ, D6 קורא נמוך; כאשר הוא נלחץ, D6 קורא גבוה.

שלב 2: תוכנה

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

התוכנה עבור ESP8266 נכתבה באמצעות קוד Arduino. הנורות מטופלות באמצעות ספריית FastLED וסנכרון NTP מתבצע על ידי ספריית NTPClient. הזמן מסונכרן על ידי NTP כל שעה.

בתחילת פונקציית ההתקנה, התוכנית בודקת אם נלחץ על הלחצן המחובר ל- D6. אם כן, ה- ESP8266 יוצר רשת wifi (ניתן לשנות את ה- SSID והסיסמה בקוד, SSID ברירת המחדל הוא "TrueBinary" והסיסמה היא "thepoweroftwo"). התחבר לרשת זו מכל מכשיר ונווט אל 192.168.1.1. ה- ESP8266 יציג דף אינטרנט עם טפסים שבהם תוכל להזין את ה- SSID והסיסמה של ה- wifi שלך, שרת NTP המועדף ואוזן אזור הזמן מ- UTC. לאחר שליחת טפסים אלה ל- ESP8266, היא תשמור את המידע לאחסון הפנימי של EEPROM.

אם הכפתור לא נלחץ, השעון יופעל כרגיל, קורא את ההגדרות מ- EEPROM, מתחבר ל- wifi כדי להשתמש ב- NTP ומתחיל להציג את השעה.

הערה: הפונקציה setDisplay (אינדקס int) לוקחת את מספר הספרה מ -0-11 כאשר 0 היא הספרה הראשונה (חצי היום) ו -11 היא האחרונה (1/4096 ליום) ומדליקה את הנורית המתאימה באמצעות " מערך leds ". יש למלא פונקציה זו בהתאם לאופן שבו הגדרת את התצוגה. הדוגמה שהגיבתי מתאימה לאופן שבו הלחמתי את השורות בצורה זיג-זג ולא מקצה לקצה ודלגתי על כל LED אחר.

שלב 3: דיור

דיור
דיור
דיור
דיור
דיור
דיור

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

שלב 4: בוצע

בוצע!
בוצע!
בוצע!
בוצע!

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

נדרש מקום לתרגול לקרוא זמן בפורמט בינארי אמיתי, אך זהו תרגיל מהנה ולאחר זמן מה הוא הופך לדרך מהירה להשיג את הזמן במבט אחד בלבד!

מוּמלָץ: