โปรเจกต์ NodeMCU Internet Hardware WatchDog
นี่คือ "Internet Hardware Watchdog" ที่จะทำการ reboot ตัว WiFi router เมื่อเกิดปัญหาหรือการทำงานที่ผิดปกติขึ้น
นี่คือ "Internet Hardware Watchdog" ที่จะทำการ reboot ตัว WiFi router เมื่อเกิดปัญหาหรือการทำงานที่ผิดปกติขึ้น
▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์
ผมรักการขุดเหรียญและเชื่อมั่นจริงๆ ว่า Blockchain และสกุลเงินดิจิทัลจะเปลี่ยนโลกได้ในสักวันหนึ่ง Cryptocurrency มีบทบาทสำคัญในชีวิตของผมมาก และทำให้ผมกลายเป็นคนตื่นเช้า ฮ่าๆ เครื่องขุด (Miners) จำเป็นต้องเชื่อมต่ออินเทอร์เน็ตตลอด 24 ชั่วโมงทุกวัน เมื่อเร็วๆ นี้ผมไปทำธุระข้างนอกช่วงสั้นๆ แล้ว Router ของผมก็หยุดทำงานด้วยเหตุผลโง่ๆ บางอย่าง ทำให้ผมเข้าถึงเครือข่ายที่บ้านและเครื่องขุดไม่ได้เลย พอผมกลับมา เป้าหมายเดียวของผมคือการแก้ปัญหานี้โดยการสร้าง "Internet Hardware Watchdog" ที่จะทำการ Reboot ตัว Router เมื่อเกิดปัญหาอะไรก็ตามขึ้น
หมายเหตุ: หากคุณทำงานกับ "ไฟบ้าน (Mains Power)" เช่น การเดินสายไฟ AC 120v หรือ 240v คุณควรใช้อุปกรณ์และเครื่องป้องกันที่เหมาะสมเสมอ และตรวจสอบว่าคุณมีทักษะและประสบการณ์เพียงพอ หรือปรึกษาช่างไฟฟ้าที่มีใบอนุญาต โปรเจกต์นี้ไม่ได้ออกแบบมาเพื่อให้เด็กใช้งาน

ให้ผมอธิบายตรรกะการทำงานให้ฟังก่อนนะครับ สรุปสั้นๆ คือ ในการตั้งค่านี้ผมจะทำการ Ping ไปที่ "www.google.com" และทันทีที่การ Ping หลุด ผมจะทำการ Reboot ตัว Router
เพื่อให้บรรลุสิ่งนี้ NodeMCU จะเริ่มเชื่อมต่อกับเครือข่าย WiFi ก่อน จากนั้นจึง Ping ไปที่ 8.8.8.8 (www.google.com) หากได้รับผลการ Ping ที่สำเร็จ รูปแบบไฟ LED สีน้ำเงิน 1 ใน 3 แบบจะแสดงขึ้นมา
หากการ Ping ล้มเหลว จะมีการลองใหม่ (Retries) อีก 5 ครั้งก่อนที่จะ Reboot ตัว Router เหตุผลที่ผมไม่ Reboot ทันทีก็เพื่อหลีกเลี่ยงผลลัพธ์ที่ผิดพลาด (False Positive) อย่างไรก็ตาม เมื่อตัวนับ "fail_count" ครบ 5 ครั้ง NodeMCU จะสั่งปิด Router โดยการดึงหน้าสัมผัสของ Relay Module หน้าสัมผัสของ Relay จะถูกหน่วงไว้ 15 วินาทีก่อนจะปล่อย เพื่อให้ Router ได้ทำการ Power Cycle อย่างเหมาะสม เมื่อปล่อยหน้าสัมผัสแล้ว ระบบจะรออีกหนึ่งนาทีก่อนจะส่งคำขอ Ping ครั้งถัดไป เพื่อให้เวลา Router ทำกิจกรรม POST ได้สำเร็จ

ขั้นตอนข้างต้นจะถูกทำซ้ำไปเรื่อยๆ ในส่วน Loop ของ Code ครับ

สำหรับโปรเจกต์นี้เราต้องการ: NodeMCU, Stepdown Converter, Relay Module, LED สีแดง 2 ดวง, LED สีน้ำเงิน 3 ดวง, Resistor ขนาด 100Ω, ปลั๊กตัวผู้ และเต้ารับตัวเมีย

คราวนี้เรามาประกอบอุปกรณ์เข้าด้วยกันตามที่ผมแสดงไว้ใน Schematic diagram เลยครับ โปรดระมัดระวังอย่างมากขณะจัดการกับเต้ารับและสายไฟบ้าน AC
ตัว Stepdown Converter จะจ่ายไฟให้กับ NodeMCU และ Relay Module ส่วน LED จะเชื่อมต่อกับ Digital Pins ของ Microcontroller ตัว Relay ทำหน้าที่เหมือนสวิตช์ คอยเปิดหรือปิด Router ตามผลการตอบรับของ Ping โปรดตรวจสอบ Pins ของ Relay Module ของคุณให้ดีก่อนเชื่อมต่อเข้ากับวงจร

นี่คือหน้าตา Board ของผมในรูปแบบ 2D และ 3D ครับ โดยพื้นฐานแล้วผมได้สร้างแบบจำลองของ NodeMCU Prototyping Board ที่คุณสามารถซื้อได้จาก AliExpress ในราคาประมาณ $4 ถึง $6

เริ่มต้นด้วยการบัดกรี NodeMCU ลงบน Board เนื่องจากผมใส่ใจใน Sensor และ Microcontroller ของผมมาก ผมจึงไม่บัดกรีมันลงบน Board โดยตรง แต่จะใช้การบัดกรี 'Female Pin Headers' ลงบน Board แทน เพื่อใช้ติดตั้ง Sensor และ Microcontroller ทั้งหมดลงไป

ตอนแรกผมกะจะบัดกรี LED ลงบน Board โดยตรง แต่จู่ๆ ก็คิดอะไรได้บางอย่าง เลยเปลี่ยนไปบัดกรีพวกมันลงบน Perfboard แยกต่างหาก แล้วค่อยบัดกรี Perfboard นั้นเข้ากับ NodeMCU Development Board อีกที ซึ่งจริงๆ แล้วมันไม่จำเป็นเลยครับ

เมื่อติดตั้ง LED เรียบร้อยแล้ว ขั้นตอนต่อไปของผมคือการบัดกรี Stepdown Converter และ Relay Module ลงบน Board หากคุณอยากรู้ว่าผมสร้าง Relay Module นี้ได้อย่างไร โปรดดูที่บทเรียนที่ 19 DIY Relay Module ของผมได้ที่: https://www.youtube.com/watch?v=3n69b4sdDjk ลิงก์วิดีโอและบล็อกโพสต์อยู่ในคำอธิบายด้านล่างครับ
ต่อไป ผมเจาะรูที่กล่องใสแล้วใช้กาวติดเต้ารับเข้าไป ผมทำเลอะเทอะนิดหน่อยตอนทากาว แล้วเผลอทำกล่องติดกับโต๊ะกินข้าวเฉยเลย ผมยังเจาะรูที่ด้านหลังกล่องสำหรับสายไฟที่จะเชื่อมต่อกับแหล่งจ่ายไฟ AC Main ด้วย

ก็ประมาณนี้ครับ ขอย้ำอีกครั้งนะครับ: หากคุณทำงานกับ "ไฟบ้าน" เช่น 110v หรือ 240v AC คุณควรใช้อุปกรณ์และเครื่องป้องกันที่เหมาะสมเสมอ และตรวจสอบว่าคุณมีทักษะและประสบการณ์เพียงพอ หรือปรึกษาช่างไฟฟ้าที่มีใบอนุญาต โปรเจกต์นี้ไม่ได้ออกแบบมาเพื่อให้เด็กใช้งาน

เพื่อให้การติดตั้งเสร็จสมบูรณ์ ผมได้ใส่กะโหลกจิ๋วไว้ในกล่องอะคริลิกด้วย กะโหลกนี้วางอยู่บนโต๊ะทำงานผมจนฝุ่นเกาะมาเป็นปีแล้วครับ ฮ่าๆ

คราวนี้เรามาดู Code กันครับ คุณสามารถดาวน์โหลด Code และทรัพยากรอื่นๆ ได้จากลิงก์ในคำอธิบายด้านล่าง ในการรัน Code ที่แนบมานี้ คุณต้องดาวน์โหลดและติดตั้ง "ESP8266Ping" Library คุณสามารถดาวน์โหลดได้จาก GitHub หรือจากลิงก์ในคำอธิบายด้านล่าง ให้แตกไฟล์แล้วคัดลอกไปยังโฟลเดอร์ Library ของ Arduino จากนั้นเปลี่ยนประเภท Board เป็น ESP8266 ใน Arduino IDE และเลือก NodeMCU
Code เริ่มต้นด้วยการรวม Library และ Variable ทั้งหมดไว้ที่ด้านบน
จากนั้นในส่วน setup() ผมได้กำหนด Pin Modes ทั้งหมดและทำการเชื่อมต่อกับ WiFi Router
ในส่วน loop() ผมจะทำการทดสอบ Ping และตามผลการทดสอบ ผมจะสั่งให้ LED สีน้ำเงินกะพริบหรือทำการ Power Cycling ตัว Router
ขอบคุณอีกครั้งที่เข้ามาชมโพสต์ของผม หวังว่ามันจะเป็นประโยชน์กับคุณนะครับ หากคุณต้องการสนับสนุนผม สามารถกดติดตามได้ที่ YouTube Channel: https://www.youtube.com/user/tarantula3บล็อกโพสต์: Internet Hardware WatchDog : https://diy-projects4u.blogspot.com/2021/12/internet-hardware-watchdog.htmlDIY Relay Module : http://diy-projects4u.blogspot.com/2020/08/diy-relay-module.html
วิดีโอ:
แหล่งข้อมูลอื่นๆ:
สนับสนุนงานของผม:
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้