Mbits บทที่ 9 การเชื่อมต่อตัวตรวจจับสภาพแวดล้อม

ในชุด 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 ลองเอาไปประยุกต์กันดูนะครับ

Facebook Comments Box