กิจกรรมที่ 10 — เพิ่มบอร์ดตัวรับที่ตัวเรือน (Receive)
50 นาที
อุปกรณ์ที่ใช้ บอร์ด ESP32-C3 ตัวใหม่ (ไม่มีเซนเซอร์ ต่อไปจะเรียกว่า บอร์ดตัวรับ), สาย USB ของบอร์ดตัวรับ, แล็ปท็อปที่ต่ออินเทอร์เน็ตได้, บอร์ด GoGo-IoT ที่อัปเดตแล้วจากกิจกรรมที่ 9 เสียบไฟจากกล่องจ่ายไฟ
บอร์ดตัวรับแทนบอร์ดที่วางไว้ ในตัวเรือน ซึ่งมี WiFi ถึง หน้าที่ของมันมีอย่างเดียวคือฟังแพ็กเก็ต ESP-NOW จากบอร์ดที่แปลง แล้วนำค่าที่ได้ยินมาแสดงบนหน้าเว็บของตัวเอง และส่งต่อให้ Home Assistant ในกิจกรรมที่ 11 ในกิจกรรมนี้เราจะติดตั้งเฟิร์มแวร์ตัวรับ เปิดหน้าเว็บของมันด้วย IP แล้วบอกว่าให้ฟังบอร์ดของกลุ่มเรา

ใบงาน
คลิกหัวข้อเพื่อดูวิธีทำ ทำเสร็จแล้วทำเครื่องหมายและบันทึกผล กรอกที่นี่หรือในขั้นตอนด้านล่างก็ได้
- 10.1 ติดตั้งเฟิร์มแวร์ตัวรับ เลือกไฟล์
farm-receiverของโซนเรา แล้วติดตั้งลงบอร์ดตัวรับผ่าน web.esphome.io - 10.2 อ่านชื่อและ IP ของบอร์ดตัวรับ ชื่อ IP ตรวจว่าสีในชื่อตรงกับโซน
- 10.3 เปิดหน้าเว็บของตัวรับและระบุบอร์ดที่แปลง พิมพ์รหัสหกตัวท้ายของบอร์ด GoGo-IoT ลงช่อง sender name แล้วค่าต้องปรากฏ
- ช่องสัญญาณ WiFi ของตัวรับ (ต้องเท่ากับของบอร์ดที่แปลง )
- ความแรงสัญญาณ ESP-NOW บนโต๊ะ dBm
- บอร์ดอื่นที่ตัวรับได้ยิน (ชื่อหนึ่งบอร์ด)
- 10.4 ตรวจว่าค่าที่รับมาจากบอร์ดของเราจริง ครอบบอร์ดที่แปลงแล้ว ค่าความสว่างบนหน้าตัวรับเปลี่ยนภายใน วินาที
- 10.5 ทดสอบระยะทาง ถือบอร์ดที่แปลงไปไกลสุดในห้อง สัญญาณ dBm · ผล · แพ็กเก็ตที่หายรวม
- 10.6 จำลองแปลงเงียบ ปิดสวิตช์บอร์ดที่แปลง ตัวรับรายงานว่าขาดการเชื่อมต่อหลังจาก วินาที
- คำถามท้ายกิจกรรม ตัวรับได้ยินบอร์ดของกลุ่มอื่นด้วย ถ้าเป็นฟาร์มจริงที่เพื่อนบ้านใช้ระบบแบบเดียวกัน จะเกิดปัญหาอะไรได้บ้าง และควรป้องกันอย่างไร

10.1ติดตั้งเฟิร์มแวร์ตัวรับ
บอร์ดตัวรับเป็นบอร์ด ESP32-C3 ทั่วไปที่ยังไม่มีโปรแกรมของเรา ขั้นตอนเหมือนข้อ 9.1 แต่ใช้ไฟล์คนละชุด
ดาวน์โหลดไฟล์ของโซนเรา
- ดาวน์โหลดไฟล์ตามสีโซนของกลุ่ม
| โซน | ไฟล์เฟิร์มแวร์บอร์ดตัวรับ |
|---|---|
| แดง | farm-receiver-red.factory.bin |
| เขียว | farm-receiver-green.factory.bin |
| น้ำเงิน | farm-receiver-blue.factory.bin |
ติดตั้งลงบอร์ดตัวรับ
- เสียบสาย USB จากบอร์ดตัวรับเข้าแล็ปท็อป (บอร์ด GoGo-IoT ต้องเสียบไฟจากกล่องจ่ายไฟอยู่ ไม่ใช่แล็ปท็อป จะได้ไม่เลือกพอร์ตผิดบอร์ด) ที่ web.esphome.io กด Connect แล้วเลือกพอร์ตที่ปรากฏ
- กด Install เลือกไฟล์
farm-receiver-…binที่ดาวน์โหลดไว้ แล้วยืนยันการติดตั้ง รอจนสำเร็จ อย่าถอดสายระหว่างติดตั้ง
ถ้ากด Connect แล้วไม่มีพอร์ตขึ้นมาให้เลือก ให้ลองสาย USB เส้นอื่น (สายชาร์จบางเส้นไม่มีสายข้อมูล) หรือกดปุ่ม BOOT บนบอร์ดค้างไว้ขณะเสียบสาย แล้วกด Connect ใหม่

10.2อ่านชื่อและ IP ของบอร์ดตัวรับ
อ่านและบันทึกข้อมูลบอร์ด
- กด Logs & Console แล้วกดปุ่ม Reset device ในหน้าเว็บ อ่านบรรทัด
===== DEVICE NAME: ... =====ชื่อจะเป็นfarm-receiver-สี-รหัสหกตัวเช่นfarm-receiver-red-d4e5f6 - ตรวจสีในชื่อ ต้องตรงกับโซนของเรา ถ้าไม่ตรงแสดงว่าติดตั้งไฟล์ผิดสี ให้กลับไปทำข้อ 10.1 ด้วยไฟล์ที่ถูกต้อง
- รอจนมี
===== IP ADDRESS: ... =====แล้วจดทั้งสองค่า ชื่อบอร์ดตัวรับ IP - ปล่อยหน้าบันทึกนี้เปิดไว้ก่อน จะใช้ดูในข้อ 10.3
ถ้าหน้าต่างบันทึกว่างเปล่า ให้กด Reset device ในหน้าเว็บอีกครั้ง อย่าถอดสายและอย่ากดปุ่มบนบอร์ด · บอร์ดตัวรับบางรุ่นมีช่อง USB สองช่อง ถ้าติดตั้งได้แต่ไม่เห็นบันทึก ให้ลองอีกช่องหนึ่ง

10.3เปิดหน้าเว็บของตัวรับและระบุบอร์ดที่แปลง
เปิดหน้าเว็บ
- เปิดแท็บใหม่ พิมพ์
http://ตามด้วย IP ของบอร์ดตัวรับ จะเห็นรายการค่าชุดเดียวกับบอร์ด GoGo-IoT แต่ต่อท้ายว่า ESP-NOW และยังว่างอยู่ทุกรายการ เพราะตัวรับยังไม่รู้ว่าต้องฟังบอร์ดไหน ส่วน บอร์ดอื่นที่ได้ยิน (other boards heard) จะเปลี่ยนไปเรื่อย ๆ นั่นคือบอร์ดของกลุ่มอื่นในห้องที่กำลังส่งออกอากาศอยู่ - จดชื่อบอร์ดอื่นที่ได้ยินมาหนึ่งชื่อ แล้วอ่าน ช่องสัญญาณ WiFi (channel) ของตัวรับ
บอกตัวรับว่าฟังบอร์ดของเรา
- หารายการ ชื่อบอร์ดที่แปลง (sender name) พิมพ์ รหัสหกตัวท้าย ของบอร์ด GoGo-IoT ของกลุ่ม (จากชื่อ เช่น
a1b2c3) แล้วกดปุ่มส่งหรือ Enter พิมพ์ทั้งชื่อก็ได้ ตัวพิมพ์เล็กหรือใหญ่ไม่ต่างกัน - ภายในไม่กี่วินาที บอร์ดที่รับข้อมูลอยู่ (receiving from) จะแสดงชื่อเต็มของบอร์ดเรา รับข้อมูลจากแปลง (link) เป็น ON และค่าอุณหภูมิ ความชื้น ความสว่าง ลูกลอย ปรากฏขึ้น ดูในหน้าบันทึกของตัวรับด้วย จะมีบรรทัด
<<< GOGO,…ทุก 3 วินาที คู่กับบรรทัด>>>ที่เห็นในกิจกรรมที่ 9 - อ่าน ความแรงสัญญาณ ESP-NOW (rssi) dBm ตัวเลขติดลบ ยิ่งใกล้ 0 ยิ่งแรง บนโต๊ะเดียวกันมักอยู่ราว −30 ถึง −50 dBm
ถ้ารอเกินหนึ่งนาทีแล้วยังไม่มีค่า ตรวจตามลำดับ (1) รหัสที่พิมพ์ตรงกับชื่อบอร์ด GoGo-IoT ของเราทุกตัว (2) บอร์ด GoGo-IoT มีไฟและส่งอยู่ ดูจากหน้าเว็บของมันว่า แพ็กเก็ต ESP-NOW ที่ส่ง เพิ่มขึ้น (3) ช่องสัญญาณ WiFi ของสองบอร์ดต้องเท่ากัน ( กับ ) ถ้าต่างกัน แสดงว่าสองบอร์ดต่อเราเตอร์คนละตัว ให้ปิดแล้วเปิดบอร์ดตัวรับใหม่หนึ่งครั้ง (หรือย้ายไปใกล้บอร์ด GoGo-IoT) แล้วดูช่องสัญญาณอีกครั้ง หากยังไม่ตรง ให้บอกผู้สอน
การเลือกด้วยชื่อคือกลไกอย่างง่ายที่ทำให้ตัวรับของทุกกลุ่มใช้เฟิร์มแวร์ชุดเดียวกันได้ ที่ฟาร์มจริงซึ่งมีบอร์ดคู่เดียว อาจตั้งชื่อไว้ในเฟิร์มแวร์เลย หรือให้ตัวรับรับเฉพาะจากหมายเลขประจำเครื่อง (MAC address) ของบอร์ดที่แปลง

10.4ตรวจว่าค่าที่รับมาจากบอร์ดของเราจริง
ทดลองแล้วดูที่ตัวรับ
- ให้คนหนึ่งใช้มือครอบบอร์ด GoGo-IoT ค้างไว้ อีกคนดูหน้าเว็บของ ตัวรับ จับเวลาตั้งแต่เริ่มครอบจนค่าความสว่าง (ESP-NOW) ลดลง วินาที เทียบกับเวลาที่วัดในกิจกรรมที่ 1 ( วินาที) ส่วนที่เพิ่มขึ้นคือการรอแพ็กเก็ตรอบถัดไป ซึ่งส่งทุก 3 วินาที
- ยกสวิตช์ลูกลอยพ้นน้ำ สวิตช์ลูกลอย (ESP-NOW) บนหน้าตัวรับต้องเปลี่ยนเป็น OFF วางกลับแล้วต้องเป็น ON
เทียบสองหน้าจอ
- เปิดหน้าเว็บของบอร์ด GoGo-IoT ไว้อีกแท็บ ค่าความชื้นและอุณหภูมิบนสองหน้าต้องตรงกัน (ต่างกันได้ไม่เกินหนึ่งรอบส่ง)
ค่าที่เห็นบนหน้าตัวรับ เดินทางมาสองต่อ: จากเซนเซอร์ผ่าน ESP-NOW ถึงตัวรับ แล้วจากตัวรับผ่าน WiFi ถึงเบราว์เซอร์ของเรา ที่ฟาร์มจริง ต่อแรกยาวเป็นร้อยเมตร ต่อที่สองอยู่ในบ้าน

10.5ทดสอบระยะทาง
บอร์ด GoGo-IoT มีถ่าน 18650 อยู่ด้านใต้ ถ้าถ่านมีไฟ บอร์ดจะทำงานต่อเมื่อถอดสาย USB จึงถือเดินได้
พาบอร์ดที่แปลงออกห่าง
- ถอดสาย USB ของบอร์ด GoGo-IoT ออกจากกล่องจ่ายไฟ ดูว่าบอร์ดยังทำงาน (ค่าบนหน้าตัวรับยังอัปเดต) ถ้าบอร์ดดับ แสดงว่าถ่านไม่มีไฟ ให้ใช้เพาเวอร์แบงก์จ่ายไฟแทน หรือเสียบกับปลั๊กที่ไกลที่สุดที่หาได้
- ให้สมาชิกคนหนึ่งถือบอร์ดเดินไปยังจุดที่ ไกลที่สุดในห้อง โดยไม่ออกนอกห้อง (บอร์ดต้องยังต่อ WiFi ของห้องอยู่ ไม่เช่นนั้นช่องสัญญาณอาจเปลี่ยน) อีกคนดูหน้าเว็บของตัวรับ
- เมื่อถึงจุดไกลสุด อ่านความแรงสัญญาณ dBm และดูว่าค่ายังอัปเดตทุก 3 วินาทีหรือไม่ ถ้ามีคนหรือเสาบัง ให้ลองยกบอร์ดสูงขึ้น
- เดินกลับมาที่โต๊ะ อ่าน แพ็กเก็ตที่หาย (packets lost) คือจำนวนแพ็กเก็ตที่ตัวรับนับได้ว่าขาดหายไประหว่างทาง (จากหมายเลขลำดับที่กระโดด)
- เสียบสาย USB ของบอร์ด GoGo-IoT กลับเข้ากล่องจ่ายไฟ
ในห้องโล่ง ESP-NOW ไปได้ 100–200 เมตร ระยะที่ทดสอบได้ในห้องนี้จึงยังไม่ถึงขีดจำกัด สิ่งที่ควรสังเกตคือ สัญญาณอ่อนลงเท่าไรเมื่อไกลขึ้นและมีสิ่งกีดขวาง และ แพ็กเก็ตหายไปบ้างโดยระบบไม่ส่งซ้ำ เพราะการส่งออกอากาศแบบนี้ไม่มีการตอบรับ ผู้ออกแบบจึงต้องส่งซ้ำเป็นระยะ อย่างที่บอร์ดเราส่งทุก 3 วินาที

10.6จำลองแปลงเงียบ
ปิดบอร์ดที่แปลง
- ปิดสวิตช์ ON / OFF บนบอร์ด GoGo-IoT พร้อมกับเริ่มจับเวลา ดูหน้าเว็บของตัวรับ
- นับจนกว่า รับข้อมูลจากแปลง (link) เปลี่ยนเป็น OFF และค่าเซนเซอร์ (ESP-NOW) กลายเป็น
NaN(ไม่มีค่า) จดเวลา วินาที - เปิดสวิตช์บอร์ดกลับ รอให้บอร์ดต่อ WiFi ได้ (ราว 10–20 วินาที) ค่าต้องกลับมาเอง
ตัวรับถูกตั้งไว้ว่า ถ้าไม่ได้ยินบอร์ดที่เลือกไว้เกิน 15 วินาที (ประมาณ 5 รอบส่ง) ให้รายงานว่าขาดการเชื่อมต่อ และ ลบค่าเดิมทิ้ง แทนที่จะแสดงค่าค้างไว้ นี่คือหลัก fail-safe เดียวกับกิจกรรมที่ 5: ระบบต้องบอกได้ว่า “ไม่รู้” ดีกว่าแสดงตัวเลขเก่าเหมือนยังรู้อยู่ ในกิจกรรมที่ 11 เราจะให้ Home Assistant เตือนเมื่อเกิดเหตุการณ์นี้
คำถามท้ายกิจกรรม ตัวรับได้ยินบอร์ดของกลุ่มอื่นด้วย ถ้าเป็นฟาร์มจริงที่เพื่อนบ้านใช้ระบบแบบเดียวกัน จะเกิดปัญหาอะไรได้บ้าง และควรป้องกันอย่างไร (คิดทั้งเรื่องการเลือกรับเฉพาะบอร์ดของเรา และเรื่องคนอื่นอ่านข้อมูลของเราได้)