เมื่อไม่กี่ปีที่ผ่านมา [Frans-Willem] ได้รับแผง LED RGB สองสามตัว แผงสิบ 32 × 16 เป็นไฟ LED จำนวนมากและขับเคลื่อนแผงเหล่านี้ทั้งหมดต้องใช้ฮาร์ดแวร์ที่มีประสิทธิภาพเพียงพอ เขาพยายามทำงานกับบอร์ดพัฒนา FPGA แต่ไม่มีหน่วยความจำเพียงพอสำหรับสี 24 บิต ไมโครคอนโทรลเลอร์ Du Jour – TI Stellaris – ไม่สามารถรับสีได้มากกว่า 16 บิตมากนักโดยไม่ต้องกะพริบ ด้วย LED จำนวนมาก แต่ไม่มีวิธีขับรถ [Frans-willem] วางแผงไว้ในกล่องที่ไหนสักแห่งรอให้วันที่พวกเขาสามารถใช้ในการผลิตอย่างเต็มที่
วันนี้มาเมื่อ [Frans-Willem] ได้รับการแนะนำให้รู้จักกับชิป STM32 กับคณะกรรมการการค้นพบ F1 ในขณะที่พยายามค้นหาบทละครอิเล็กทรอนิกส์บางอย่างที่จะใช้กับบอร์ดนี้เขาสะดุดบนแผง LED และให้พวกเขาลองอีกมากมาย ผลลัพธ์ที่น่าตื่นเต้นมีสี 33 บิตพร้อมภาพเคลื่อนไหวที่สตรีมเหนือเราเตอร์เหนือ WiFi
แผงที่เป็นปัญหาคือแผง LED HUB75 ใน 32 × 8 แผงมีหกหมุดข้อมูล – สองตัวสำหรับแต่ละสี – สี่แถวเลือกพินและพินควบคุมสามแถว Pins เลือกแถวเลือกแถวของพิกเซลที่ใช้งานอยู่ในครั้งเดียว วนรอบผ่านเร็วพอและดูเหมือนว่าพวกเขาทั้งหมดอยู่ในครั้งเดียว หมุดควบคุมทำงานได้ดีเหมือนหมุดควบคุมของการลงทะเบียนกะด้วยหมุดข้อมูลที่เติมในบทบาทที่เห็นได้ชัด
รหัสที่ผลักดันไฟ LED ทั้งหมดที่เกิดขึ้นใน STM32F4 ด้วยความช่วยเหลือของ DMA และ FSMC หรือตัวควบคุมหน่วยความจำแบบคงที่ที่ยืดหยุ่นที่พบในชิป อุปกรณ์ต่อพ่วงนี้ดูแลสายการควบคุมที่พบในหน่วยความจำดังนั้นเมื่อคุณสลับการเขียน STROBE ชิปจะทิ้งสิ่งที่อยู่ในบรรทัดข้อมูลไปยังที่อยู่ที่แน่นอนในหน่วยความจำ มันเป็นวิธีที่ดีในการดูแลการสร้างสัญญาณนาฬิกา
สำหรับการส่งพิกเซลไปยังไดรเวอร์จอแสดงผลนี้ [Frans-willem] กำลังใช้ TP-Link WR703N ที่เป็นที่นิยมตลอดกาล เขาวางแผนที่จะส่งข้อมูลพิกเซลทั้งหมดผ่านพอร์ต USB แต่มีค่าใช้จ่ายมากเกินไป USB 1.1 ไม่เร็วพอ ที่ได้รับการแก้ไขโดยใช้ UART บนเราเตอร์กับผู้ขับขี่รถยนต์ใหม่และ OpenWrt รุ่นที่คอมไพล์ใหม่
ซอฟต์แวร์ทั้งหมดที่จะทำซ้ำโครงการนี้มีอยู่ใน GitHub และมีวิดีโอที่ยอดเยี่ยมที่แสดงว่าโครงการที่เสร็จสมบูรณ์สามารถทำได้ คุณสามารถตรวจสอบได้ด้านล่าง