สารบัญ:
วีดีโอ: True Binary Clock พร้อม NTP Sync: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:02
นาฬิกาเลขฐานสองที่แท้จริงจะแสดงเวลาของวันเป็นผลรวมของเศษส่วนเลขฐานสองของเต็มวัน ตรงข้ามกับ "นาฬิกาไบนารี" แบบเดิมที่แสดงเวลาเป็นตัวเลขทศนิยมที่เข้ารหัสแบบไบนารีซึ่งสอดคล้องกับชั่วโมง/นาที/วินาที "นาฬิกาไบนารี" แบบดั้งเดิมนั้นใช้เลขฐานสองเข้ารหัสทศนิยมเข้ารหัสเพศ อะไรจะวุ่นวาย! นาฬิกาเลขฐานสองที่แท้จริงทำให้สิ่งต่าง ๆ ง่ายขึ้นอย่างมาก
ในนาฬิกาเลขฐานสองที่แท้จริง หลักแรกบอกคุณคือครึ่งวัน หลักที่สองคือวันที่สี่ หลักที่สามคือแปดของวัน ฯลฯ สามารถอ่านความละเอียดใด ๆ อย่างรวดเร็ว (พร้อมฝึกแน่นอน)). หลักแรกเข้ารหัส AM กับ PM อย่างมีประสิทธิภาพ หลักที่สองเข้ารหัสว่าเช้าตรู่หรือบ่ายโมง/บ่ายแก่ๆ และอื่นๆ
ในการออกแบบนาฬิกาเลขฐานสองที่แท้จริงของฉัน ฉันใช้ความละเอียดสิบสองหลัก ดังนั้นวันแบ่งออกเป็น 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
- WS2812B แถบ LED
- ปุ่มกด
- ตัวต้านทาน 470 โอห์ม
- ตัวต้านทาน 10K โอห์ม
- ตัวเก็บประจุ 470 ยูเอฟ
- ไอติมแท่ง
- หินอ่อน
- ไม้ (หรือวัสดุแผ่นอื่นๆ) สำหรับเคส
ขั้นตอนที่ 1: วงจร
เพื่อให้มีการแสดงผล โปรเจ็กต์นี้ใช้แถบไฟ LED RGB ที่วางเป็น 3 แถว ฉันตัดแถบไฟ LED 8 ดวง 3 แถบจากแถบไฟ LED WS2812B และบัดกรีเข้าด้วยกัน (มันเปราะบางและการบัดกรีแผ่นเล็กๆ นั้นทำได้ยาก ฉันพันปลายที่บัดกรีด้วยเทปพันสายไฟเพื่อป้องกันการดัดงอ) แม้ว่าฉันจะต้องการไฟ LED 4 ดวงต่อแถวเท่านั้น แต่ฉันก็ตัดแถบ 8 อันออกเพื่อที่ฉัน สามารถมีระยะห่างระหว่างไฟได้มากขึ้นโดยใช้ไฟ LED อื่น ๆ เท่านั้น จากนั้นแถบเหล่านี้จะติดกับฐานแบนที่ทำจากแท่งไอติม ในแต่ละแถวจะมีแท่งไอติมแท่งสองชั้นสำหรับทำโปรไฟล์เพื่อให้ด้านหน้าติดกับด้านในของตัวเรือนนาฬิกา (ดูรูป)
แถบไฟ LED ใช้พลังงานจาก VU และ GND ของ NodeMCU VU เป็นกระแสไฟ (เกือบ) มาจาก USB โดยตรง ดังนั้นจึงให้ไฟ LED WS2812B 5V แม้ว่า ESP8266 จะทำงานที่ 3.3V ฉันวางตัวเก็บประจุ 470 uF ไว้เหนือสายไฟสำหรับแถบ WS2812B เพื่อป้องกันไฟ LED ข้อมูลสำหรับแถบนำเชื่อมต่อกับพิน D3 ของ NodeMCU ผ่านตัวต้านทาน 470 โอห์ม อ้างถึงคำแนะนำนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการควบคุมไฟ LED WS2812B ด้วย ESP8266 วงจรถูกบัดกรีบนโปรโตบอร์ดด้วยส่วนหัวระหว่างตัวผู้กับตัวเมียสำหรับ NodeMCU
มีการแนบปุ่มกดเข้ากับ D6 ของ NodeMCU สามารถกดปุ่มนี้ในขณะที่นาฬิกากำลังเริ่มต้นเพื่อส่งไปยังโหมดการตั้งค่า (ซึ่งการตั้งค่า wifi, เซิร์ฟเวอร์ NTP และการตั้งค่าเขตเวลาสามารถแก้ไขได้) ที่ปลายด้านหนึ่ง ปุ่มกดเชื่อมต่อกับ D6 และ GND ผ่านตัวต้านทาน 10K Ohm และอีกด้านหนึ่งเชื่อมต่อกับแหล่งจ่ายไฟ เมื่อไม่ได้กดปุ่ม D6 จะอ่านค่าต่ำ เมื่อกด D6 จะอ่านค่าสูง
ขั้นตอนที่ 2: ซอฟต์แวร์
ซอฟต์แวร์สำหรับ ESP8266 เขียนขึ้นโดยใช้รหัส Arduino ไฟ LED ได้รับการจัดการโดยใช้ไลบรารี FastLED และการซิงค์ NTP ทำได้โดยไลบรารี NTPClient เวลาจะซิงค์โดย NTP ทุกชั่วโมง
เมื่อเริ่มต้นฟังก์ชันการตั้งค่า โปรแกรมจะตรวจสอบเพื่อดูว่ามีการกดปุ่มที่เชื่อมต่อกับ D6 หรือไม่ ถ้าใช่ ESP8266 จะสร้างเครือข่าย wifi (SSID และรหัสผ่านสามารถเปลี่ยนได้ในรหัส SSID เริ่มต้นคือ "TrueBinary" และรหัสผ่านคือ "thepoweroftwo") เชื่อมต่อกับเครือข่ายนี้จากอุปกรณ์ใดก็ได้และไปที่ 192.168.1.1 ESP8266 จะแสดงหน้าเว็บที่มีรูปแบบที่คุณสามารถป้อน wifi SSID และรหัสผ่าน เซิร์ฟเวอร์ NTP ที่ต้องการ และเขตเวลาชดเชยจาก UTC หลังจากส่งแบบฟอร์มเหล่านี้ไปยัง ESP8266 แล้ว ระบบจะบันทึกข้อมูลลงในที่เก็บข้อมูล EEPROM ภายใน
หากไม่ได้กดปุ่ม นาฬิกาจะเริ่มทำงานตามปกติ อ่านการตั้งค่าจาก EEPROM เชื่อมต่อกับ wifi เพื่อใช้ NTP และเริ่มแสดงเวลา
หมายเหตุ: ฟังก์ชัน setDisplay(int index) ใช้ตัวเลขตั้งแต่ 0-11 โดยที่ 0 คือหลักแรก (ครึ่งวัน) และ 11 คือตัวเลขสุดท้าย (1/4096 ของวัน) และเปิด LED ที่เกี่ยวข้องโดยใช้ปุ่ม " ไฟ LED "อาร์เรย์ ต้องกรอกฟังก์ชันนี้ตามการกำหนดค่าการแสดงผลของคุณ ตัวอย่างความคิดเห็นของฉันสอดคล้องกับวิธีที่ฉันบัดกรีแถวในแบบซิกแซกมากกว่าแบบ end-to-end และข้าม LED อื่น ๆ ทุกอัน
ขั้นตอนที่ 3: ที่อยู่อาศัย
ในการใส่นาฬิกา ฉันใช้มุมไม้ทาสีที่บังเอิญมี ด้านนอกด้านหนึ่ง ฉันเจาะ 12 รูในตารางที่สอดคล้องกับตำแหน่งของไฟ LED จากนั้นฉันก็ติดไฟ LED ไว้ที่ด้านในของมุมโดยติดส่วนที่นูนขึ้นของแท่งไอติมระหว่างแถวกับไม้ (ตามที่แสดง) เพื่อกระจายแสงจากหลอด LED ฉันติดลูกแก้วที่ด้านบนของรู ฉันทำได้โดยจุ่มครึ่งล่างของหินอ่อนแต่ละลูกในอีพอกซีเรซินแล้ววางลงในรู NodeMCU และโปรโตบอร์ดถูกขันเข้าด้านในอีกด้านของมุม ด้านข้างปูด้วยไม้สามเหลี่ยมเล็กๆ ติดด้วยกาวไม้ ด้านใดด้านหนึ่งมีรูสำหรับพอร์ต micro USB ของ NodeMCU และมีรอยเจาะที่มุมสำหรับปุ่มกด
ขั้นตอนที่ 4: เสร็จแล้ว
นาฬิกาเลขฐานสองที่แท้จริงของเราเสร็จแล้ว! ในการตั้งค่า ให้กดปุ่มค้างไว้ขณะเสียบปลั๊กเพื่อให้อยู่ในโหมดการตั้งค่า จากนั้นป้อนข้อมูลรับรอง WiFi บนหน้าเว็บ เมื่อตั้งค่าแล้ว คุณสามารถเสียบนาฬิกาได้ทุกที่ และจะเชื่อมต่ออินเทอร์เน็ตโดยอัตโนมัติและเริ่มแสดงเวลาเป็นเลขฐานสอง
ต้องใช้จุดฝึกฝนในการอ่านเวลาในรูปแบบเลขฐานสองที่แท้จริง แต่มันเป็นแบบฝึกหัดที่สนุกและหลังจากนั้นไม่นานมันก็กลายเป็นวิธีที่รวดเร็วในการหาเวลาเพียงแค่เหลือบมอง!
แนะนำ:
Micro Binary Clock: 10 ขั้นตอน (พร้อมรูปภาพ)
Micro Binary Clock: ก่อนหน้านี้ได้สร้าง Instructable (Binary DVM) ซึ่งใช้ประโยชน์จากพื้นที่แสดงผลที่ จำกัด โดยใช้ไบนารี มันเป็นเพียงขั้นตอนเล็ก ๆ ที่เคยสร้างโมดูลรหัสหลักสำหรับการแปลงทศนิยมเป็นไบนารีเพื่อสร้างนาฬิกาไบนารี
All Band Receiver พร้อม SI4732 / SI4735 (FM / RDS, AM และ SSB) พร้อม Arduino: 3 ขั้นตอน
All Band Receiver พร้อม SI4732 / SI4735 (FM / RDS, AM และ SSB) พร้อม Arduino: เป็นโปรเจ็กต์เครื่องรับย่านความถี่ทั้งหมด ใช้ห้องสมุด Arduino Si4734 ห้องสมุดนี้มีตัวอย่างมากกว่า 20 ตัวอย่าง คุณสามารถฟัง FM ด้วย RDS สถานี AM (MW) ในพื้นที่ SW และสถานีวิทยุสมัครเล่น (SSB) เอกสารทั้งหมดที่นี่
อินเทอร์เฟซ ESP32 พร้อม SSD1306 Oled พร้อม MicroPython: 5 ขั้นตอน
อินเทอร์เฟซ ESP32 พร้อม SSD1306 Oled พร้อม MicroPython: Micropython เป็นการเพิ่มประสิทธิภาพของ python และมีขนาดเล็กของ python ซึ่งหมายถึงการสร้างสำหรับอุปกรณ์ฝังตัวซึ่งมีข้อจำกัดด้านหน่วยความจำและใช้พลังงานต่ำ Micropython สามารถใช้ได้กับคอนโทรลเลอร์หลายตระกูล ซึ่งรวมถึง ESP8266, ESP32, Ardui
PWM พร้อม ESP32 - Dimming LED พร้อม PWM บน ESP 32 พร้อม Arduino IDE: 6 ขั้นตอน
PWM พร้อม ESP32 | Dimming LED พร้อม PWM บน ESP 32 พร้อม Arduino IDE: ในคำแนะนำนี้เราจะดูวิธีสร้างสัญญาณ PWM ด้วย ESP32 โดยใช้ Arduino IDE & โดยทั่วไปแล้ว PWM จะใช้เพื่อสร้างเอาต์พุตแอนะล็อกจาก MCU ใดๆ และเอาต์พุตแอนะล็อกนั้นอาจเป็นอะไรก็ได้ระหว่าง 0V ถึง 3.3V (ในกรณีของ esp32) & จาก
ไฟ LED Bluetooth ที่ควบคุมโดยสมาร์ทโฟน (พร้อม Live Music Sync): 7 ขั้นตอน
ไฟ LED บลูทูธที่ควบคุมด้วยสมาร์ทโฟน (พร้อม Live Music Sync): ฉันชอบสร้างสิ่งต่างๆ มาโดยตลอด หลังจากที่ฉันพบว่าหอพักวิทยาลัยแห่งใหม่ของฉันมีแสงสว่างมาก ฉันจึงตัดสินใจเพิ่มสีสันเล็กน้อย ***คำเตือน*** หากคุณสร้าง โครงการนี้ในระดับเดียวกับการตั้งค่าของฉัน คุณจะทำงานกับองค์ประกอบจำนวนพอสมควร