ในชุด IoT Activity kit มีเซนเซอร์หลายตัวที่ยังไม่ได้แนะนำการใช้งาน ตอนนี้จะมาทดลองใช้งานกันครับ
ZX-SHT30
ZX-SHT30 เป็นเซนเซอร์วัดอุณหภูมิและความชื้นแบบกันน้ำ สื่อสารผ่านระบบ I2C บัส วัดอุณหภูมิได้ -40 ถึง 125°C ความแม่นยำ +/- 0.3°C วัดความชื้นได้ 0 ถึง 100%RH ความแม่นยำ +/-3.0%RH ความแม่นยำขนาดนี้เหมาะอย่างยิ่งกับการใช้งานภาคสนาม มาดูคุณสมบัติกันครับ
คุณสมบัติทางเทคนิค
-
ใช้โมดูลหลักจากบริษัท Sensirion รุ่น SHT30
-
ทำงานที่แรงดันไฟเลี้ยง 2.4V ถึง 5.5V
-
กินกระแสเพียง 800 uA ขณะวัด
-
วัดอุณหภูมิได้ -40 °C ถึง 125 °C ความแม่นยำ +/- 0.3 °C ความละเอียด 0.015 °C
-
วัดความชื้นได้ 0 ถึง 100%RH ความแม่นยำ +/- 3.0%RH ความละเอียด 0.01 °C
-
เชื่อมต่อผ่านระบบบัส I2C
-
ให้สายเชื่อมต่อยาว 1 เมตร หัวต่อเป็นแบบ JST 4 ขา ใช้กับบอร์ด AX-Mbits และบอร์ดอื่นๆ ตามมาตรฐานของ INEX ได้ทันที
-
หัววัดเป็นแบบกันน้ำกันฝุ่น ใช้งานกล้างแจ้งได้สบาย
ZX-SHT30 เมื่อเชื่อมต่อกับบอร์ด AX-Mbits
บนบอร์ด AX-Mbits มีจุดเชื่อมต่อ 4 ขาสำหรับเชื่อมต่ออุปกรณ์ที่ใช้การสื่อสารด้วย I2C ได้ทันที สามารถเอา ZX-SHT30 มาเสียบได้ดังรูป
Extension SHT30
โปรแกรม MicroBLOCK IDE สามารถติดต่อสื่อสารกับ ZX-SHT30 ได้โดยการติดตั้ง Extension เลือกเพิ่ม Extension แล้วพิมพ์ SHT30 ที่ช่องค้นหา จากนั้นกดติดตั้งได้เลย
คำสั่งใช้งาน
ตรงไปตรงมา คำสั่งเดียว โดยจะต้องกำหนดแอดเดรสด้วย สำหรับ ZX-SHT30 จะกำหนดไว้ที่ 0x44 ส่วนตัวเลือกอีกตัวจะเลือกอ่าน อุณหภูมิ (tempetature) หรือความชื้น (humidity) ก็เลือกได้เลย
ตัวอย่างที่ 36 กดสวิตช์ A/B อ่านค่าอุณหภูมิ/ความชื้น แสดงผลที่หน้าต่าง Terminal
การทำงาน
ตัวอย่างนี้จะต้องเปิดหน้าต่าง Terminal ขึ้นมาเพื่อแสดงผลข้อมูลด้วย ถ้าแสดงเพียงค่าที่อ่านได้จาก ZX-SHT30 จะดูธรรมดาไป เลยต้องมีการใส่ข้อความที่ด้านหน้าและด้านหลังด้วย ซึ่งมาจากคำสั่ง create text with ในชุดคำสั่งหัวข้อ Operators โดยเมื่อกดสวิตช์ A จะแสดงเป็นค่าอุณหภูมิออกมา ส่วนสวิตช์ B จะแสดงเป็นค่าความชื้น ซึ่งค่าที่ได้จะเป็นทศนิยม 2 ตำแหน่งจากการทดสอบให้ความแม่นยำสูงพอสมควร
ตัวอย่างที่ 37 ปรับเปลี่ยนสี LED 5×5 ตามค่าอุณหภูมิ
เป็นการนำเอาค่าอุณหภูมิที่อ่านได้ไปใช้ประโยชน์ โดยใช้การเปรียบเทียบค่า
การทำงาน
ในตัวอย่างจะอ่านค่าอุณหภูมิจาก ZX-SHT30 มาเก็บไว้ในตัวแปร X ก่อนเพื่อจะได้ไม่ต้องอ่านซ้ำหลายๆ ครั้ง จากนั้นนำมาเปรียบเทียบ โดยให้ค่ามากอยู่บนค่าน้อยอยู่ล่าง เนื่องจากใช้คำสั่ง if else if ที่ต้องรอให้เงื่อนไขชุดแรกไม่เป็นจริง จึงค่อยไปตรวจสอบเงื่อนไขชุดต่อไป โดยถ้าค่าตรงกับที่เปรียบเทียบไว้ ให้แสดงผลตัวเลขค่าอุณหภูมิ ในสีที่กำหนด
ZX-SOIL บอร์ดตรวจสอบความชุ่มชื้นของดิน
คุณสมบัติทางเทคนิค
-
ใช้ตรวจจับความชุ่มชื้น (soil moisture) ของดินและการนำไฟฟ้าของน้ำ
-
ให้ผลการทำงานแบบดิจิทัล (“1” – ตรวจพบน้ำหรือดินเปียก, “0” – ตรวจไม่พบน้ำหรือดินแห้ง)
-
ให้ผลการทำงานแบบแอนะล็อก โดยให้แรงดันไฟตรงที่เอาต์พุตตามปริมาณความชุ่มชื้นของดิน
-
ใช้ไฟเลี้ยงในย่าน +3 ถึง +5V
การใช้งาน
เมื่อทำงานในแบบดิจิทัล : ใช้งานได้เหมือนกับสวิตช์ นั่นคือ ให้ผลการทำงานเป็น “1” เมื่อตรวจพบน้ำหรือดินมีความชุ่มชื้นมากพอ หรือดินเปียก และให้ผลการทำงานเป็น “0” เมื่อพื้นที่ตรวจจับแห้ง ซึ่งอาจหมายถึง ดินมีความชุ่มชื้นน้อย หรือดินแห้ง
เมื่อทำงานในแบบแอนะล็อก : ให้ผลการทำงานคล้ายกับวงจรจ่ายแรงดันไฟฟ้าปรับค่าได้ตามปริมาณความชุ่มชื้นของดิน หากมีความชุ่มชื้นมากหรือดินเปียก แรงดันไฟฟ้าที่ได้จะสูง และลดลงเมื่อดินมีความชุ่มชื้นน้อยลงหรือแห้ง ทำให้ความสามารถในการนำไฟฟ้าของดินบนตัวตรวจจับลดลง
การเชื่อมต่อ ZX-SOIL กับบอร์ด AX-Mbits
เพื่อให้การอ่านค่าชัดเจน จะเลือกเชื่อมต่อกับขา P6/ADC6 เพื่อให้สามารถอ่านค่าได้ทั้งรูปแบบดิจิทัลและแบบแอนะล็อก
คำสั่งใช้งาน
ถ้าอ่านค่าในโหมดดิจิทัล คือชื้นเป็น “1” แห้งเป็น “0” จะใช้คำสั่ง digital read pin อยู่ในหัวข้อ Input
ถ้าอ่านค่าในโหมดแอนะล็อก จะใช้คำสั่ง analog read pin ในหัวข้อ Input ค่าที่อ่านได้จะอยู่ในช่วง 0-4095 (วงจรแปลงแอนะล็อกเป็นดิจิทัลเป็นแบบ 12 บิต)
ตัวอย่างที่ 38 ตรวจสอบความชื้นในดินแบบดิจิทัล
การทำงาน
เป็นการเปรียบเทียบอย่างง่ายๆ โดยถ้าแห้งจะให้แสดงเครื่องหมายกากบาท แต่ถ้ามีความชื้นจะแสดงด้วยเครื่องหมายถูก
การทดสอบ
ถ้าไม่สะดวกใช้ดินในการตรวจสอบแนะนำให้ตัดขวดน้ำดื่มขนาดเล็กให้สูงประมาณ 2 นิ้ว จากนั้นใส่กระดาษทิชชู่ลงไป พรมน้ำให้เปียกพอประมาณ แล้วใช้ ZX-SOIL จุ่มเพื่อตรวจวัด ขณะไม่มีความชื้นหน้าจอจะแสดงเครื่องหมายกากบาทเมื่อมีความชื้นจะแสดงเครื่องหมายถูก
ตัวอย่างที่ 39 อ่านค่า ZX-Soil แบบแอนะล็อก
การทำงาน
ต้องการให้ทำงานเหมือนตัวอย่างที่ 39 แต่ใช้วิธีอ่านค่าแอนะล็อกแทน ซึ่งทำให้สามารถกำหนดจุดตัดตัวเลขจาก 0-4095 ต้องการให้ตำแหน่งใดเป็นจุดเริ่มต้นทำงานหรือหยุดทำงาน เช่น ถ้าทำระบบรดน้ำต้นม้อัตโนมัติ อาจจะตั้งค่าไว้ที่ 1800 ตามตัวอย่างก็ได้ เมื่อค่ามากกว่า 1800 แสดงว่ามีความชื้นมากเพียงพอ เพื่อให้เห็นค่าที่วัดได้ จะนำค่าที่วัดแสดงผลที่หน้าต่าง Terminal ด้วย
ZX-WATER
บอร์ดตรวจจับหยดน้ำและระดับน้ำ
คุณสมบัติ
-
ใช้ตรวจจับระดับน้ำ ตรวจจับน้ำหยด และตรวจจับฝน
-
ให้ผลการทำงานทั้งแบบดิจิทัล (“1” เจอน้ำ “0” ไม่เจอน้ำ) และแบบแอนะล็อก (แรงดันเปลี่ยนแปลงตามปริมาณน้ำ)
-
ทำงานที่แรงดัน 3V ถึง 5V
การเชื่อมต่อ ZX-WATER เข้ากับบอร์ด AX-Mbits
เพื่ออ่านค่าแอนะล็อกและดิจิทัลในคราวเดียว จึงเลือกต่อกับขาพอร์ต P1/ADC4
ตัวอย่างที่ 40 อ่านค่าระดับน้ำ
ก่อนที่จะนำ ZX-WATER ไปใช้ประโยชน์จะต้องตรวจสอบก่อนว่า เมื่อนำ ZX-WATER จุ่มลงในน้ำแล้วจะสามารถอ่านค่าได้เท่าใด และค่าที่อ่านมีการเปลี่ยนแปลงตามปริมาณของน้ำมากน้อยขนาดไหน
การทำงาน
จากโค้ดจะอ่านค่าจาก ZX-WATER แสดงที่หน้าต่าง Terminal ทุกๆ 0.2 วินาที
การทดสอบ
ด้านหลังของ ZX-Water จะมีขีดแสดงระดับความสูงของน้ำ ให้ทดลองจุ่ม ZX-WATER ในแก้วน้ำที่ความสูงต่างๆ แล้วบันทึกค่าไว้ เพื่อใช้เป็นข้อมูลอ้างอิงในการทดลองตัวอย่างต่อไป
จากการทดสอบ จะได้ค่าประมาณดังรูป ซึ่งสามารถนำไปใช้ประยุกต์กับการวัดระดับน้ำได้
ตัวอย่างที่ 41 จำลองระบบป๊มน้ำอัตโนมัติ
จากค่าที่อ่านได้จากตัวอย่างก่อนหน้านี้ นำมาเป็นค่าอ้างอิงเพื่อตรวจสอบปริมาณน้ำและสั่งให้ปั๊มน้ำทำงานเมื่อปริมาณน้ำน้อยกว่าที่กำหนด และหยุดทำงานเมื่อน้ำถึงค่าที่ตั้งไว้
การทำงาน
ตัวอย่างนี้ใช้ ZX-LED ต่อเข้าที่ขา P16 ทำหน้าที่แทนปั๊มน้ำ โดยการตรวจสอบจะคอยตรวจสอบว่าน้ำมีค่าต่ำกว่า 350 หรือยัง ถ้าต่ำกว่าจะให้ปั๊มน้ำ (ZX-LED) ทำงานพร้อมส่งเสียง จากนั้นวนรอจนกระทั่งปริมาณน้ำถึงค่าที่กำหนด (repeat while จะวนลูปจนกว่าเงื่อนไขจะเป็นเท็จ ) แล้วสั่งให้ปั๊มน้ำหยุดทำงาน
ZX-LUX
ZX-LUX ติดตั้งโมดูล BH1750 เป็นตัวตรวจจับความสว่างขนาดเล็ก กินกำลังงานต่ำ จากผู้ผลิต ROHM SEMECONDUCTOR มีรูปร่างหน้าตาและขาต่อใช้งานดังรูป
คุณสมบัติ
-
ติดตั้งตัวตรวจจับแสงเบอร์ BH1750
-
เชื่อมต่อผ่านระบบบัส I2C
-
วัดความส่องสว่างได้ที่ 1 ถึง 65535 ลักซ์ ค่าความผิดพลาด 20%
-
ทำงานที่ไฟเลี้ยง 3V ถึง 5.5V กินกระแส 200uA
-
ขนาด 20×38 มิลลิเมตร
EXTENSION BH1750
โปรแกรม microBLOCK IDE สื่อสารกับ ZX-LUX ได้โดยการติดตั้ง Extension BH1750 เพิ่ม ทำได้โดยเปิดหน้าต่าง Extension พิมพ์ BH1750 ที่ช่องค้นหาแล้วกดติดตั้งได้เลย
คำสั่งใช้งาน
เป็นคำสั่งที่จะคืนค่าความส่องสว่าง หน่วยเป็น Lux โดยจะมีตัวเลือกแอดเดรสระหว่าง 0x23 และ 0x5C ให้เลือกใช้ 0x23 สำหรับ ZX-LUX ได้เลย
การเชื่อมต่อ ZX-LUX เข้ากับ AX-Mbits
ตัวอย่างที่ 42 เชื่อมต่อ ZX-LUX พร้อมกับ ZX-SHT30 ด้วย ADX-I2C
จุดต่อ I2C บนบอร์ด AX-Mbits มีเพียงจุดเดียว แต่ถ้าต้องการต่อพ่วงอุปกรณ์ I2C หลายๆ ตัว บอร์ด ADX-I2C จึงถูกออกแบบมาเพื่อการนี้ จากนั้นเขียนโค้ดเพื่อแสดงทั้ง อุณหภูมิ ความชื้น และค่าความสว่าง ออกที่หน้าจอ Terminal ในบรรทัดเดียว
การทำงาน
ตัวอย่างนี้ ต้องการอ่านค่าอุณหภูมิ ความชื้น และ ความสว่าง แสดงออกมาในบรรทัดเดียวกันที่หน้าต่าง Terminal แต่การเรียกอ่านค่าความชื้นและอุณหภูมิต่อเนื่องกันทันที จะทำให้ตัว ZX-SHT30 ส่งค่าตอบกลับมาให้ไม่ทัน ดังนั้นจึงต้องสร้างตัวแปรขึ้น สำหรับเก็บข้อมูล โดยเริ่มจากอ่านค่าอุณหภูมิเก็บในตัวแปร T แล้วเว้นระยะไป 0.2 วินาทีเพื่อให้ ZX-SHT30 พร้อมก่อนจะสั่งอ่านความชื้นเก็บในตัวแปร H และอ่านค่าแสงเก็บในตัวแปร L การแสดงผลจะใช้คำสั่งสำหรับรวมข้อความ create text with เพื่อรวมข้อความและข้อมูลเข้าด้วยกัน
ผลลัพธ์ที่ได้จะเป็นข้อความร่วมกับข้อมูลดังรูป
สำหรับเซนเซอร์ต่างๆ ในเนื้อหาตอนนี้ เหมาะอย่างยิ่งสำหรับการใช้งานกับระบบ IoT ลองเอาไปประยุกต์กันดูนะครับ