กิจกรรมที่ 9 — อัปเดตบอร์ดที่แปลงให้ส่งข้อมูลด้วย ESP-NOW (Send)
IoT ในฟาร์มอัจฉริยะหน้าแรก

กิจกรรมที่ 9 — อัปเดตบอร์ดที่แปลงให้ส่งข้อมูลด้วย ESP-NOW (Send)

30 นาที

อุปกรณ์ที่ใช้ บอร์ด GoGo-IoT พร้อมสวิตช์ลูกลอยในแก้วน้ำ, สาย USB-C, แล็ปท็อปที่ต่ออินเทอร์เน็ตได้ (ใช้ web.esphome.io และดาวน์โหลดไฟล์เฟิร์มแวร์)

สถานการณ์ของช่วงที่ 4 ระบบที่เราสร้างมาสามช่วงใช้ WiFi ทั้งหมด แต่ในฟาร์มจริง แปลงปลูกมักอยู่ห่างจากตัวเรือนจนสัญญาณ WiFi ไปไม่ถึง ช่วงนี้เราจะปรับระบบเดิมให้บอร์ด GoGo-IoT ที่แปลง ส่งค่าเซนเซอร์ผ่าน ESP-NOW ซึ่งเป็นวิธีที่บอร์ด ESP32 คุยกันเองโดยตรงโดยไม่ต้องมีเราเตอร์ และไปได้ไกลกว่า WiFi แล้วเพิ่มบอร์ด ESP32-C3 อีกตัวไว้ ที่ตัวเรือน เป็นตัวรับ ก่อนนำค่าที่รับได้ขึ้นแดชบอร์ด Home Assistant กิจกรรมนี้เริ่มจากฝั่งผู้ส่ง: อัปเดตเฟิร์มแวร์บอร์ดเดิมให้ส่งข้อมูลออกอากาศ

ในห้องอบรม บอร์ดที่แปลงยังต่อ WiFi ของโซนอยู่เหมือนเดิม เพื่อให้ Home Assistant เห็นค่าโดยตรงไว้เทียบกับค่าที่ผ่านตัวรับ และเพื่อให้เราอัปเดตหรือเปิดหน้าเว็บของบอร์ดได้ ส่วนที่ฟาร์มจริง บอร์ดที่แปลงจะไม่มี WiFi ให้ต่อ และทำงานด้วย ESP-NOW อย่างเดียว

ก่อนเริ่มช่วงที่ 4

ตรวจว่าระบบของกลุ่มพร้อมเหมือนตอนจบช่วงที่ 3 ช่วงนี้ ไม่ใช้ปั๊ม จึงให้กฎที่สั่งรีเลย์ทุกข้อปิดไว้ตลอดช่วง

ใบงาน

คลิกหัวข้อเพื่อดูวิธีทำ ทำเสร็จแล้วทำเครื่องหมายและบันทึกผล กรอกที่นี่หรือในขั้นตอนด้านล่างก็ได้

9.1ดาวน์โหลดและติดตั้งเฟิร์มแวร์รุ่นใหม่

เฟิร์มแวร์คือโปรแกรมที่อยู่ในบอร์ด รุ่นที่บอร์ดใช้มาตั้งแต่ช่วงที่ 1 ยังไม่มี ESP-NOW รุ่นใหม่ (ชื่อไฟล์มีคำว่า espnow) ทำทุกอย่างเหมือนเดิม และเพิ่มการ ส่งค่าเซนเซอร์ออกอากาศด้วย ESP-NOW ทุก 3 วินาที เราติดตั้งผ่านสาย USB ในเบราว์เซอร์ด้วยเครื่องมือเดียวกับที่ใช้อ่านชื่อบอร์ดในกิจกรรมที่ 1

ดาวน์โหลดไฟล์ของโซนเรา

  1. ดาวน์โหลดไฟล์ตามสีโซนของกลุ่ม (สีเดียวกับชื่อบอร์ดที่จดไว้ ) เก็บไว้ในแล็ปท็อป
โซน ไฟล์เฟิร์มแวร์บอร์ด GoGo-IoT รุ่น ESP-NOW
แดง gogo-iot-espnow-red.factory.bin
เขียว gogo-iot-espnow-green.factory.bin
น้ำเงิน gogo-iot-espnow-blue.factory.bin

ดูของเดิมก่อนเปลี่ยน

  1. เสียบสาย USB-C จากบอร์ด GoGo-IoT เข้าแล็ปท็อป (ถ้าบอร์ดเสียบไฟจากกล่องจ่ายไฟอยู่ ให้ย้ายสายมาที่แล็ปท็อป) เปิด Chrome หรือ Edge ไปที่ web.esphome.io กด Connect เลือกพอร์ตของบอร์ด แล้วกด Logs & Console → Reset device ดูบันทึกสักครู่: มีชื่อบอร์ดและ IP ตามปกติ แต่ ไม่มีบรรทัด GOGO, ใด ๆ นี่คือรุ่นเดิม ปิดหน้าต่างบันทึก

ติดตั้งรุ่นใหม่ลงบอร์ด

  1. กด Install เลือกไฟล์ .bin ที่ดาวน์โหลดไว้ แล้วกดยืนยันการติดตั้ง ไม่ต้องเลือกลบข้อมูลในบอร์ด (Erase) รอจนขึ้นว่าติดตั้งสำเร็จ ประมาณ 1–2 นาที ระหว่างนี้อย่าถอดสาย

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

WiFi ของโซนถูกตั้งไว้ในไฟล์แล้ว บอร์ดจะกลับมาต่อเครือข่ายเดิมและใช้ ชื่อเดิม เพราะชื่อสร้างจากหมายเลขประจำเครื่อง ไม่ได้อยู่ในชื่อไฟล์ จึง ไม่ต้องลบและเพิ่มบอร์ดใหม่ใน Home Assistant ค่าต่าง ๆ จะกลับมาเองเมื่อบอร์ดออนไลน์

↑ กลับไปที่ใบงาน

9.2ตรวจว่าบอร์ดกลับมาทำงานและอ่านแพ็กเก็ตที่ส่งออกอากาศ

อ่านบันทึกการทำงาน

  1. ที่ web.esphome.io กด Logs & Console แล้วกดปุ่ม Reset device ในหน้าเว็บ (ไม่ใช่ปุ่มบนบอร์ด) อ่านบรรทัด ===== DEVICE NAME: ... ===== เทียบกับชื่อที่จดไว้ในกิจกรรมที่ 1 ชื่อบอร์ด (ถ้าเปลี่ยนไป ให้บอกผู้สอน)
  2. รอราว 10–20 วินาทีจนมี ===== IP ADDRESS: ... ===== แสดงว่าบอร์ดต่อ WiFi ได้แล้ว

อ่านแพ็กเก็ต ESP-NOW

  1. จากนั้นทุก 3 วินาทีจะมีบรรทัดที่มีคำว่า [espnow และ >>> GOGO, ซึ่งไม่เคยมีในรุ่นเดิม นี่คือ แพ็กเก็ต หรือชุดข้อมูลหนึ่งชุดที่บอร์ดเพิ่งส่งออกอากาศ คัดลอกส่วนที่เริ่มจาก GOGO, มาหนึ่งบรรทัด
  2. อ่านความหมายของแต่ละค่าที่คั่นด้วยจุลภาค เรียงตามลำดับนี้
ลำดับ ค่า ตัวอย่าง
1 คำนำหน้าบอกว่าเป็นแพ็กเก็ตของบอร์ด GoGo GOGO
2 ชื่อบอร์ดผู้ส่ง gogo-iot-red-a1b2c3
3 หมายเลขลำดับแพ็กเก็ต นับเพิ่มทีละ 1 42
4–5 อุณหภูมิ (°C) และความชื้นอากาศ (%) 28.4,61.2
6 ความสว่าง 350
7 ความกดอากาศ (hPa) 1009.8
8 ความสั่นสะเทือน (mg) 4.1
9 สวิตช์ลูกลอย 1 = น้ำถึงลูกลอย 0 = ไม่ถึง 1
10 ปั๊มกำลังทำงาน 1 = ใช่ 0 = ไม่ 0
  1. ใช้มือครอบบอร์ดค้างไว้ แล้วดูบรรทัดถัด ๆ ไป ค่าความสว่าง (ลำดับที่ 6) ต้องลดลง เอามือออกแล้วค่าต้องกลับมา

ค่า nan (not a number) หมายถึงยังไม่มีค่าจากเซนเซอร์นั้น พบได้ในแพ็กเก็ตแรก ๆ หลังเปิดบอร์ด · ตัวรับที่เราจะติดตั้งในกิจกรรมที่ 10 อ่านบรรทัดแบบนี้แล้วแยกเป็นค่าแต่ละตัว ทุกบอร์ดในห้องส่งแพ็กเก็ตแบบเดียวกันออกอากาศพร้อมกัน จำข้อนี้ไว้ในกิจกรรมที่ 10

↑ กลับไปที่ใบงาน

9.3ดูค่าใหม่บนหน้าเว็บของบอร์ดและใน Home Assistant

หน้าเว็บของบอร์ด

  1. เปิดแท็บใหม่ พิมพ์ http:// ตามด้วย IP ของบอร์ด (จดไว้ในกิจกรรมที่ 1 หากเปลี่ยนไป ให้ใช้ IP จากบันทึกในข้อ 9.2) รายการค่าเดิมยังอยู่ครบ และมีรายการใหม่สองรายการ
  2. อ่าน ช่องสัญญาณ WiFi (channel) แล้วจดไว้ · แพ็กเก็ต ESP-NOW ที่ส่ง (espnow sent) คือจำนวนแพ็กเก็ตที่ส่งไปแล้วตั้งแต่เปิดบอร์ด รีเฟรชหน้าแล้วดูว่าเพิ่มขึ้น

ช่องสัญญาณสำคัญอย่างไร คลื่น 2.4 GHz แบ่งเป็นช่อง 1–13 บอร์ดที่ต่อ WiFi จะใช้ช่องเดียวกับเราเตอร์ที่มันต่ออยู่ และ ESP-NOW ส่งออกทางช่องนั้น ตัวรับต้องอยู่ช่องเดียวกันจึงจะได้ยิน เราจะใช้ตัวเลขนี้ตรวจในกิจกรรมที่ 10 หากตัวรับไม่ได้รับอะไรเลย

Home Assistant

  1. ใน Settings → Devices & services เปิดหน้าอุปกรณ์ของบอร์ด GoGo-IoT รายการเดิมกลับมาครบและมีสองรายการใหม่ในกลุ่ม Diagnostic เหมือนบนหน้าเว็บของบอร์ด ไม่ต้องเพิ่มอุปกรณ์ใหม่

ถ้าบอร์ดใน Home Assistant ยังแสดง unavailable เกินหนึ่งนาที ให้ตรวจว่าบอร์ดต่อ WiFi ได้แล้ว (มี IP ในบันทึก) และสีในชื่อไฟล์ที่ติดตั้งตรงกับโซน

↑ กลับไปที่ใบงาน

คำถามท้ายกิจกรรม ที่ฟาร์มจริง บอร์ดที่แปลงจะทำงานด้วย ESP-NOW อย่างเดียวโดยไม่มี WiFi ความสามารถอะไรบ้างที่เราเคยใช้ในช่วงที่ 1–3 จะหายไป (ลองนึกถึงหน้าเว็บของบอร์ด การเห็นบอร์ดใน Home Assistant โดยตรง และการติดตั้งเฟิร์มแวร์) และเราจะตั้งค่าหรืออัปเดตบอร์ดที่แปลงได้อย่างไร

เมื่อเสร็จแล้ว เสียบสาย USB ของบอร์ด GoGo-IoT กลับเข้ากล่องจ่ายไฟ เพื่อให้แล็ปท็อปว่างสำหรับบอร์ดตัวรับในกิจกรรมที่ 10 บอร์ดยังส่ง ESP-NOW ต่อไปโดยไม่ต้องต่อกับแล็ปท็อป