สารบัญ:

ESP32 การเลื่อน WordClock บน LED Matrix: 5 ขั้นตอน (พร้อมรูปภาพ)
ESP32 การเลื่อน WordClock บน LED Matrix: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ESP32 การเลื่อน WordClock บน LED Matrix: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ESP32 การเลื่อน WordClock บน LED Matrix: 5 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Word Clock - PxMatrix, PCB and design 2024, พฤศจิกายน
Anonim
Image
Image

ในโครงการนี้ ฉันสร้าง Scrolling WordClock ด้วย ESP32, LED Matrix และกล่องซิการ์

WordClock คือนาฬิกาที่สะกดเวลามากกว่าแค่พิมพ์บนหน้าจอหรือมีมือที่อ่านได้ นาฬิกาเรือนนี้จะบอกคุณว่าเวลา 10 นาทีเลย 3 โมงเย็นหรือเที่ยงวัน ฉันยังตั้งโปรแกรมให้ใช้ Prevening (จากทฤษฎีบิ๊กแบง) ซึ่งเป็นชื่อช่วงเวลาคลุมเครือระหว่างช่วงบ่ายถึงเย็น เริ่ม 16.00 น.

ESP32 นั้นยอดเยี่ยม สนุกมากและราคาไม่แพง ถ้าคุณชอบการเขียนโปรแกรม Arduino คุณจะทึ่งกับสิ่งที่ ESP32 สามารถทำได้ในราคาต่ำกว่า 10 ดอลลาร์ พวกเขาใช้ Arduino IDE และตั้งโปรแกรมได้ง่าย ฉันจะสาธิตวิธีการทำสิ่งนี้ในคำแนะนำนี้

เสบียง

  • ESP32 – ประมาณ $10 ใน amazon
  • LED Matrix (max7219) (และสายไฟ) - $9 amazon
  • กล่องซิการ์
  • สายไฟ USB
  • เครื่องพิมพ์ 3d เสริมสำหรับขาตั้ง esp32

ขั้นตอนที่ 1: ตั้งค่า Arduino IDE ของคุณเพื่อรองรับ ESP32

รับ Arduino IDE:

  • ในเบราว์เซอร์ไปที่
  • คลิกที่ซอฟต์แวร์ จากนั้นดาวน์โหลด เพื่อรับ ARDUINO 1.8.12
ภาพ
ภาพ

เพิ่มการรองรับ ESP32 ให้กับ Arduino IDE ของคุณ:

  • เริ่ม Arduino IDE
  • คลิกที่เมนูไฟล์แล้วเลือกการตั้งค่า

เมื่ออยู่ใน "การตั้งค่า" ให้เพิ่มการสนับสนุนของผู้ผลิตโดยเพิ่มบรรทัดต่อไปนี้ใน "Additional Board Manager"

ภาพ
ภาพ

dl.espressif.com/dl/package_esp32_index.js

สิ่งนี้จะทำให้เราเข้าถึงเพื่อเพิ่มบอร์ดใน IDE

ไปที่เมนูเครื่องมือ จากนั้นไปที่บอร์ด แล้วไปที่ผู้จัดการบอร์ด

ภาพ
ภาพ

ถัดไปค้นหา "ESP" และเพิ่มแพ็คเกจโดย Expressif

ภาพ
ภาพ

สุดท้ายนี้ เราต้องการกลับไปที่เมนู "เครื่องมือ" จากนั้นไปที่ "บอร์ด" อีกครั้งแล้วเลื่อนลงเพื่อค้นหาอุปกรณ์ ESP32 ของคุณ

ของฉันคือ "โมดูล ESP32 Wrover"

ภาพ
ภาพ

ขั้นตอนที่ 2: เชื่อมต่อ LED Matrix กับ ESP32

ภาพ
ภาพ

เมทริกซ์ LED ประกอบด้วย LED ขนาด 8x8 จำนวน 4 บล็อกและใช้ชิป MAX7219 นั่นทำให้เรามี LED 8x32 ในเมทริกซ์หรือ 256 LED !!!.

esp32 ถูกระงับที่ฉันสร้างขึ้นใน TinkerCad ที่ยึดของฉันถือหมุดโดยหงายขึ้นเพื่อให้คุณสามารถต่อสายไฟได้

LED Matrix เชื่อมต่อกับ ESP32 โดยใช้ SPI (Serial Peripheral Interface)

ใช้สายตัวเมีย/ตัวเมียและต่อหมุดดังนี้:

  • ESP32 - 5v เป็น VCC บนเมทริกซ์
  • ESP32 - GND ถึง GND บนเมทริกซ์
  • ESP32 - PIN5 (G5) เป็น CS บน Matrix
  • ESP32 - PIN23 (G23) ไปยัง Din บน Matrix
  • ESP32 - ตรึง 18 (G18) ถึง CLK บน Matrix

เป็นไปได้ที่จะใช้พินอื่นหรือถ้า ESP32 ของคุณมีพินที่แตกต่างกัน

ขั้นตอนที่ 3: นำมันมารวมกัน

เอามารวมกัน
เอามารวมกัน

ต่อไปฉันตัดกล่องซิการ์เพื่อให้ฉันมีที่สำหรับวางจอแสดงผล LED กล่องนุ่มและฉันสามารถใช้มีดโกนหนวดได้ จากนั้นฉันก็ขัดให้เรียบ

ฉันยังตัดทั้งด้านหลังสำหรับสายไฟ ฉันเพิ่งใช้พลังงาน USB ฉันสามารถเพิ่มแบตเตอรี่เครื่องชาร์จโทรศัพท์ USB ในกล่องซิการ์ได้หากฉันต้องการให้เป็นแบบไร้สาย

ขั้นตอนที่ 4: ไฟล์ Arduino IDE และ INO

ไฟล์ Arduino IDE และ INO
ไฟล์ Arduino IDE และ INO

ส่วนที่ดีที่สุดคือรหัส แต่ก่อนอื่นเราต้องเพิ่มไลบรารีเพื่อให้โปรแกรมใช้การแสดงผลในวิธีที่ง่ายขึ้น ฉันเพิ่มไลบรารี MD_MAX72xx แล้ว

หากต้องการเพิ่มไลบรารี ให้คลิกที่เมนู "Sketch" จากนั้น "Include Library" และ "Manage Libraries" จะโหลดขึ้นและอนุญาตให้คุณค้นหาไลบรารี MD_MAX72xx เพียงคลิกที่ติดตั้งและคุณมี

ต่อไปรับไฟล์ Arduino INO ของฉัน:

github.com/aapicella/wordClock/blob/master/Word_Clock_LED_NTP_final_.ino

โหลดไฟล์ ino ลงใน Arduino IDE ของคุณ

เชื่อมต่อ USB จาก ESP32 กับคอมพิวเตอร์ของคุณ

คลิกที่ "ร่าง" จากนั้นอัปโหลด

ณ จุดนี้นาฬิกาจะไม่ทำงาน ESP32 จะไม่แสดงอะไรเลย ทำไม? เราจำเป็นต้องเพิ่ม WIFI ของคุณลงในรหัสเพราะ WordClock เชื่อมต่อกับอินเทอร์เน็ตเพื่อรับเวลา ถูกต้อง…ขั้นตอนต่อไป ->

ขั้นตอนที่ 5: รหัส

ในที่สุดเราก็มาถึงส่วนที่ฉันชอบ โปรแกรม. ฉันจะครอบคลุมจากบนลงล่างหากคุณสนใจ เพื่อให้โปรแกรมทำงานกับอินเทอร์เน็ตที่บ้านของคุณ คุณเพียงแค่เปลี่ยนบรรทัดเหล่านี้

// เพิ่มข้อมูลเครือข่ายของคุณ

const ถ่าน *ssid = "xxxxxx";

อักขระ const *รหัสผ่าน = "xxxxxx";

โปรแกรมค่อนข้างซับซ้อน แต่สนุกมาก

หากต้องการปิดใช้งาน "การป้องกัน" เพียงเปลี่ยนค่าเป็นเท็จ:

const บูลีน PREVENING=true; //ทฤษฎีบิกแบง.

หากต้องการปิดใช้งานการแสดงเวลาดิจิทัลหลังจากเลื่อนให้เปลี่ยนเป็นเท็จ

const บูลีน DISPLAY_DIGITAL=true; //เปิดการแสดงเวลาดิจิตอลหลังจากเลื่อน

เลื่อนเวลา:

ฉันได้รับเวลาจากเซิร์ฟเวอร์เวลาบนอินเทอร์เน็ตโดยใช้ NTP (Network Time Protocol) เวลาจะถูกเก็บไว้ในตัวแปรที่เรียกว่า timeinfo และเราได้ชั่วโมงและนาทีจากมัน

int ชั่วโมง = timeinfo.tm_hour; ///0-23

int นาที = timeinfo.tm_min; //0-59

ถัดไปตรวจสอบ AM หรือ PM

มันคือ AM ถ้าชั่วโมง <12

ฉันสร้างสตริงชื่อ "theTime" และเริ่มต้นด้วย:

theTime="มันคือ";

เพื่อให้ได้ตัวเลขเป็นคำ ฉันได้สร้างอาร์เรย์ของคำสำหรับตัวเลขไม่เกิน 30

ถ่าน const *ตัวเลข = {

"0", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า", "สิบ", "สิบเอ็ด", "สิบสอง" "," สิบสาม", "สิบสี่", "ไตรมาส", "สิบหก", "สิบเจ็ด", "สิบแปด", "สิบเก้า", "ยี่สิบ", "ยี่สิบเอ็ด", "ยี่สิบสอง", "ยี่สิบสาม" ", "ยี่สิบสี่", "ยี่สิบห้า", "ยี่สิบหก", "ยี่สิบเจ็ด", "ยี่สิบแปด", "ยี่สิบเก้า", "ครึ่งหลัง"};

ดังนั้นเมื่อเวลา 12:05 น. หรือห้านาทีผ่านไป มันจะเป็น Arduino

ตัวเลข[5] นาทีที่ผ่านมา ตัวเลข[12]

เพื่อตรวจสอบว่า "นาทีที่ผ่านมา" หรือ "นาทีถึง" เราเพียงแค่ดูนาที หากนาที < 31 จะเป็น "นาทีที่ผ่านไป" หากนาทีที่มากกว่า 31 เราใช้ "นาทีถึง" แต่ใช้ตัวเลข[60 นาที] ดังนั้น 12:50 จะเป็น 60-50 นาที หรือตัวเลข[10] ซึ่งจะ ให้เวลาเรา 10 นาทีถึง 12.00 น.

แน่นอนว่ามีกฎอื่นๆ เช่น วันที่ 15, 30, 45 เราไม่ใส่นาที มันก็แค่ครึ่งหรือสี่ถึงครึ่ง และถ้านาทีเป็น 0 เวลาก็จะเท่ากับ "สิบโมง" หรือเที่ยง

ในการรวมเข้าด้วยกัน ฉันผนวกรายการทั้งหมดเข้ากับ String theTime จากนั้นแสดงบน LED Matrix ฉันใช้คำสั่ง if จำนวนมาก ฉันน่าจะใช้ case แต่ง่ายกว่าที่จะใส่ต่อไป

สำหรับตัวอย่างของเรา 12:05

theTime="มันคือ"

ถ้านาที < 31 ใช้ "นาทีที่ผ่านไป" มิฉะนั้นจะเป็น "นาทีถึง"

theTime+= numbers[5] + " minutes Past" + number [12] + "O'Clock" //หมายเหตุ: เครื่องหมาย += ถูกผนวก

ต่อไปเราจะดูชั่วโมงเพื่อพิจารณาว่าเป็นเวลาเช้า บ่าย หรือเย็น

theTime+= "ในตอนเย็น"

สตริงสุดท้ายที่ไปยังเมทริกซ์คือ:

“ห้านาทีสิบสองนาฬิกาในตอนเย็น”

โครงการนี้เขียนได้สนุกมาก หากคุณชอบโปรดคลิกหัวใจและโหวตให้ฉัน

แนะนำ: