32 KiB
C หรือที่เรียกว่า I-squared-C เป็นโปรโตคอลที่รองรับการสื่อสารแบบหลายตัวควบคุมและหลายอุปกรณ์ต่อพ่วง โดยอุปกรณ์ที่เชื่อมต่อสามารถทำหน้าที่เป็นตัวควบคุมหรืออุปกรณ์ต่อพ่วงที่สื่อสารผ่านบัส I²C (ชื่อของระบบการสื่อสารที่ใช้ในการถ่ายโอนข้อมูล) ข้อมูลจะถูกส่งในรูปแบบของแพ็กเก็ตที่มีการระบุที่อยู่ของอุปกรณ์ที่เชื่อมต่อซึ่งเป็นเป้าหมายของข้อมูลนั้น
💁 โมเดลนี้เคยถูกเรียกว่า master/slave แต่คำนี้กำลังถูกเลิกใช้เนื่องจากมีความเกี่ยวข้องกับการเป็นทาส Open Source Hardware Association ได้เปลี่ยนมาใช้คำว่า controller/peripheral แต่คุณอาจยังพบการอ้างอิงถึงคำเดิมในบางที่
อุปกรณ์จะมีที่อยู่ (address) ที่ใช้เมื่อเชื่อมต่อกับบัส I²C ซึ่งมักจะถูกกำหนดไว้ล่วงหน้าในอุปกรณ์ ตัวอย่างเช่น เซ็นเซอร์ Grove แต่ละประเภทจาก Seeed จะมีที่อยู่เดียวกัน เช่น เซ็นเซอร์วัดแสงทั้งหมดจะมีที่อยู่เดียวกัน และปุ่มทั้งหมดจะมีที่อยู่ที่แตกต่างจากเซ็นเซอร์วัดแสง บางอุปกรณ์สามารถเปลี่ยนที่อยู่ได้โดยการปรับตั้งค่าจัมเปอร์หรือการบัดกรีขาเข้าด้วยกัน
I²C มีบัสที่ประกอบด้วยสายหลัก 2 เส้น พร้อมกับสายไฟอีก 2 เส้น:
สาย | ชื่อ | คำอธิบาย |
---|---|---|
SDA | Serial Data | สายนี้ใช้สำหรับส่งข้อมูลระหว่างอุปกรณ์ |
SCL | Serial Clock | สายนี้ส่งสัญญาณนาฬิกาที่มีอัตราที่กำหนดโดยตัวควบคุม |
VCC | Voltage common collector | แหล่งจ่ายไฟสำหรับอุปกรณ์ ซึ่งเชื่อมต่อกับสาย SDA และ SCL เพื่อจ่ายไฟผ่านตัวต้านทาน pull-up ที่จะปิดสัญญาณเมื่อไม่มีอุปกรณ์ใดเป็นตัวควบคุม |
GND | Ground | ให้กราวด์ร่วมสำหรับวงจรไฟฟ้า |
ในการส่งข้อมูล อุปกรณ์หนึ่งจะเริ่มต้นด้วยการออกสัญญาณเริ่มต้น (start condition) เพื่อแสดงว่าพร้อมที่จะส่งข้อมูล จากนั้นจะกลายเป็นตัวควบคุม ตัวควบคุมจะส่งที่อยู่ของอุปกรณ์ที่ต้องการสื่อสารด้วย พร้อมกับระบุว่าต้องการอ่านหรือเขียนข้อมูล หลังจากส่งข้อมูลเสร็จสิ้น ตัวควบคุมจะส่งสัญญาณหยุด (stop condition) เพื่อบอกว่าการส่งข้อมูลเสร็จสิ้นแล้ว หลังจากนั้นอุปกรณ์อื่นสามารถกลายเป็นตัวควบคุมและส่งหรือรับข้อมูลได้
22C มีข้อจำกัดด้านความเร็ว โดยมี 3 โหมดที่ทำงานด้วยความเร็วคงที่ โหมดที่เร็วที่สุดคือ High Speed mode ซึ่งมีความเร็วสูงสุดที่ 3.4Mbps (เมกะบิตต่อวินาที) แต่มีอุปกรณ์เพียงไม่กี่ชนิดที่รองรับความเร็วนี้ ตัวอย่างเช่น Raspberry Pi ถูกจำกัดให้ทำงานในโหมด fast mode ที่ 400Kbps (กิโลบิตต่อวินาที) ส่วนโหมดมาตรฐานทำงานที่ 100Kbps
💁 หากคุณใช้ Raspberry Pi พร้อมกับ Grove Base hat เป็นฮาร์ดแวร์ IoT คุณจะเห็นช่องเสียบ I2C หลายช่องบนบอร์ดที่สามารถใช้สื่อสารกับเซ็นเซอร์ I2C ได้ เซ็นเซอร์ Grove แบบแอนะล็อกยังใช้ I2C ร่วมกับ ADC เพื่อส่งค่าที่เป็นแอนะล็อกในรูปแบบข้อมูลดิจิทัล ดังนั้นเซ็นเซอร์วัดแสงที่คุณใช้จึงจำลองขาแอนะล็อก โดยส่งค่าผ่าน I2C เนื่องจาก Raspberry Pi รองรับเฉพาะขาดิจิทัล
Universal asynchronous receiver-transmitter (UART)
UART เกี่ยวข้องกับวงจรทางกายภาพที่ช่วยให้อุปกรณ์สองตัวสามารถสื่อสารกันได้ โดยแต่ละอุปกรณ์จะมีขาสื่อสาร 2 ขา ได้แก่ ขาส่ง (Tx) และขารับ (Rx) โดยขา Tx ของอุปกรณ์ตัวแรกจะเชื่อมต่อกับขา Rx ของอุปกรณ์ตัวที่สอง และขา Tx ของอุปกรณ์ตัวที่สองจะเชื่อมต่อกับขา Rx ของอุปกรณ์ตัวแรก ซึ่งช่วยให้สามารถส่งข้อมูลได้ทั้งสองทิศทาง
- อุปกรณ์ 1 ส่งข้อมูลจากขา Tx ของมัน ซึ่งจะถูกอุปกรณ์ 2 รับผ่านขา Rx
- อุปกรณ์ 1 รับข้อมูลผ่านขา Rx ที่อุปกรณ์ 2 ส่งมาจากขา Tx
🎓 ข้อมูลจะถูกส่งทีละบิต ซึ่งเรียกว่าการสื่อสารแบบ serial ระบบปฏิบัติการและไมโครคอนโทรลเลอร์ส่วนใหญ่มี serial ports ซึ่งเป็นการเชื่อมต่อที่สามารถส่งและรับข้อมูลแบบ serial ได้ และสามารถเข้าถึงได้ผ่านโค้ดของคุณ
อุปกรณ์ UART มี baud rate (หรือที่เรียกว่า Symbol rate) ซึ่งเป็นความเร็วที่ข้อมูลจะถูกส่งและรับในหน่วยบิตต่อวินาที Baud rate ที่พบบ่อยคือ 9,600 หมายถึงข้อมูล 9,600 บิต (0 และ 1) ถูกส่งในแต่ละวินาที
UART ใช้ start และ stop bits - โดยจะส่ง start bit เพื่อบอกว่าจะส่งข้อมูล 1 ไบต์ (8 บิต) จากนั้นส่ง stop bit หลังจากส่ง 8 บิตเสร็จแล้ว
ความเร็วของ UART ขึ้นอยู่กับฮาร์ดแวร์ แต่ถึงแม้การใช้งานที่เร็วที่สุดก็ไม่เกิน 6.5 Mbps (เมกะบิตต่อวินาที หรือหลายล้านบิตที่ส่งในแต่ละวินาที)
คุณสามารถใช้ UART ผ่าน GPIO pins ได้ โดยตั้งค่าขาหนึ่งเป็น Tx และอีกขาหนึ่งเป็น Rx จากนั้นเชื่อมต่อกับอุปกรณ์อื่น
💁 หากคุณใช้ Raspberry Pi พร้อมกับ Grove Base hat เป็นฮาร์ดแวร์ IoT คุณจะเห็นช่องเสียบ UART บนบอร์ดที่สามารถใช้สื่อสารกับเซ็นเซอร์ที่ใช้โปรโตคอล UART ได้
Serial Peripheral Interface (SPI)
SPI ถูกออกแบบมาสำหรับการสื่อสารในระยะสั้น เช่น การเชื่อมต่อไมโครคอนโทรลเลอร์กับอุปกรณ์จัดเก็บข้อมูล เช่น หน่วยความจำแฟลช โดยใช้โมเดล controller/peripheral ซึ่งมี controller หนึ่งตัว (โดยปกติคือโปรเซสเซอร์ของอุปกรณ์ IoT) ที่ทำงานร่วมกับ peripherals หลายตัว controller จะควบคุมทุกอย่างโดยเลือก peripheral และส่งหรือขอข้อมูล
💁 เช่นเดียวกับ I2C คำว่า controller และ peripheral เป็นการเปลี่ยนแปลงล่าสุด ดังนั้นคุณอาจยังเห็นคำศัพท์เก่าใช้อยู่
SPI controllers ใช้สาย 3 เส้น พร้อมกับสายเพิ่มเติม 1 เส้นต่อ peripheral โดย peripherals ใช้สาย 4 เส้น สายเหล่านี้ได้แก่:
สาย | ชื่อ | คำอธิบาย |
---|---|---|
COPI | Controller Output, Peripheral Input | สายนี้ใช้สำหรับส่งข้อมูลจาก controller ไปยัง peripheral |
CIPO | Controller Input, Peripheral Output | สายนี้ใช้สำหรับส่งข้อมูลจาก peripheral ไปยัง controller |
SCLK | Serial Clock | สายนี้ส่งสัญญาณนาฬิกาที่กำหนดโดย controller |
CS | Chip Select | controller มีสายหลายเส้น หนึ่งเส้นต่อ peripheral และแต่ละเส้นเชื่อมต่อกับสาย CS บน peripheral ที่สอดคล้องกัน |
สาย CS ใช้เพื่อเปิดใช้งาน peripheral หนึ่งตัวในแต่ละครั้ง โดยสื่อสารผ่านสาย COPI และ CIPO เมื่อ controller ต้องการเปลี่ยน peripheral จะปิดใช้งานสาย CS ที่เชื่อมต่อกับ peripheral ที่กำลังใช้งานอยู่ จากนั้นเปิดใช้งานสายที่เชื่อมต่อกับ peripheral ที่ต้องการสื่อสารต่อไป
SPI เป็น full-duplex หมายความว่า controller สามารถส่งและรับข้อมูลพร้อมกันจาก peripheral เดียวกันโดยใช้สาย COPI และ CIPO SPI ใช้สัญญาณนาฬิกาบนสาย SCLK เพื่อให้แน่ใจว่าอุปกรณ์ทำงานสอดคล้องกัน ดังนั้นจึงไม่จำเป็นต้องใช้ start และ stop bits เหมือนกับ UART
SPI ไม่มีข้อจำกัดด้านความเร็วที่กำหนดไว้ โดยการใช้งานมักสามารถส่งข้อมูลได้หลายเมกะไบต์ต่อวินาที
ชุดพัฒนา IoT มักรองรับ SPI ผ่าน GPIO pins ตัวอย่างเช่น บน Raspberry Pi คุณสามารถใช้ GPIO pins 19, 21, 23, 24 และ 26 สำหรับ SPI
การสื่อสารแบบไร้สาย
เซ็นเซอร์บางตัวสามารถสื่อสารผ่านโปรโตคอลไร้สายมาตรฐาน เช่น Bluetooth (ส่วนใหญ่เป็น Bluetooth Low Energy หรือ BLE), LoRaWAN (โปรโตคอลเครือข่ายพลังงานต่ำระยะไกล) หรือ WiFi ซึ่งช่วยให้เซ็นเซอร์ที่อยู่ห่างไกลสามารถสื่อสารได้โดยไม่ต้องเชื่อมต่อกับอุปกรณ์ IoT ทางกายภาพ
ตัวอย่างหนึ่งคือเซ็นเซอร์วัดความชื้นในดินเชิงพาณิชย์ ซึ่งจะวัดความชื้นในดินในพื้นที่ จากนั้นส่งข้อมูลผ่าน LoRaWAN ไปยังอุปกรณ์ฮับที่ประมวลผลข้อมูลหรือส่งต่อไปยังอินเทอร์เน็ต วิธีนี้ช่วยให้เซ็นเซอร์อยู่ห่างจากอุปกรณ์ IoT ที่จัดการข้อมูล ลดการใช้พลังงานและความจำเป็นในการใช้เครือข่าย WiFi ขนาดใหญ่หรือสายเคเบิลยาว
BLE เป็นที่นิยมสำหรับเซ็นเซอร์ขั้นสูง เช่น อุปกรณ์ติดตามสุขภาพที่สวมใส่บนข้อมือ ซึ่งรวมเซ็นเซอร์หลายตัวและส่งข้อมูลเซ็นเซอร์ไปยังอุปกรณ์ IoT เช่น โทรศัพท์ของคุณผ่าน BLE
✅ คุณมีเซ็นเซอร์ Bluetooth อยู่กับตัว ในบ้าน หรือในโรงเรียนหรือไม่? สิ่งเหล่านี้อาจรวมถึงเซ็นเซอร์วัดอุณหภูมิ เซ็นเซอร์ตรวจจับการเคลื่อนไหว อุปกรณ์ติดตาม และอุปกรณ์ฟิตเนส
วิธีหนึ่งที่อุปกรณ์เชิงพาณิชย์นิยมใช้ในการเชื่อมต่อคือ Zigbee Zigbee ใช้ WiFi เพื่อสร้างเครือข่ายแบบตาข่าย (mesh networks) ระหว่างอุปกรณ์ โดยที่แต่ละอุปกรณ์เชื่อมต่อกับอุปกรณ์ใกล้เคียงให้มากที่สุดเท่าที่จะเป็นไปได้ สร้างการเชื่อมต่อจำนวนมากเหมือนใยแมงมุม เมื่ออุปกรณ์หนึ่งต้องการส่งข้อความไปยังอินเทอร์เน็ต มันสามารถส่งไปยังอุปกรณ์ที่ใกล้ที่สุด ซึ่งจะส่งต่อไปยังอุปกรณ์ใกล้เคียงอื่น ๆ และต่อไปเรื่อย ๆ จนถึงตัวประสานงานและสามารถส่งไปยังอินเทอร์เน็ตได้
🐝 ชื่อ Zigbee มาจากการเต้นรำแบบ waggle ของผึ้งน้ำหวานหลังจากกลับมาที่รัง
วัดระดับความชื้นในดิน
คุณสามารถวัดระดับความชื้นในดินได้โดยใช้เซ็นเซอร์วัดความชื้นในดิน อุปกรณ์ IoT และต้นไม้ในบ้านหรือพื้นที่ดินใกล้เคียง
งาน - วัดความชื้นในดิน
ทำตามคำแนะนำที่เกี่ยวข้องเพื่อวัดความชื้นในดินโดยใช้อุปกรณ์ IoT ของคุณ:
การปรับเทียบเซ็นเซอร์
เซ็นเซอร์อาศัยการวัดคุณสมบัติทางไฟฟ้า เช่น ความต้านทานหรือความจุไฟฟ้า
🎓 ความต้านทาน (Resistance) วัดในหน่วยโอห์ม (Ω) คือการวัดว่ามีการต้านทานกระแสไฟฟ้าที่ไหลผ่านวัสดุมากน้อยเพียงใด เมื่อมีการใช้แรงดันไฟฟ้ากับวัสดุ ปริมาณกระแสที่ไหลผ่านจะขึ้นอยู่กับความต้านทานของวัสดุ คุณสามารถอ่านเพิ่มเติมได้ใน หน้าความต้านทานไฟฟ้าบน Wikipedia
🎓 ความจุไฟฟ้า (Capacitance) วัดในหน่วยฟารัด (F) คือความสามารถของส่วนประกอบหรือวงจรในการเก็บและสะสมพลังงานไฟฟ้า คุณสามารถอ่านเพิ่มเติมเกี่ยวกับความจุไฟฟ้าได้ใน หน้าความจุไฟฟ้าบน Wikipedia
การวัดเหล่านี้ไม่ใช่สิ่งที่มีประโยชน์เสมอไป - ลองจินตนาการถึงเซ็นเซอร์วัดอุณหภูมิที่ให้ค่าการวัดเป็น 22.5KΩ! ดังนั้นค่าที่วัดได้จำเป็นต้องถูกแปลงเป็นหน่วยที่มีประโยชน์โดยการปรับเทียบ - นั่นคือการจับคู่ค่าที่วัดได้กับปริมาณที่วัดเพื่อให้สามารถแปลงการวัดใหม่เป็นหน่วยที่ถูกต้อง
เซ็นเซอร์บางตัวมาพร้อมกับการปรับเทียบล่วงหน้า ตัวอย่างเช่น เซ็นเซอร์วัดอุณหภูมิที่คุณใช้ในบทเรียนก่อนหน้านี้ได้รับการปรับเทียบแล้วเพื่อให้สามารถส่งค่าการวัดอุณหภูมิในหน่วย °C ได้ ในโรงงาน เซ็นเซอร์ตัวแรกที่สร้างขึ้นจะถูกนำไปสัมผัสกับช่วงอุณหภูมิที่ทราบและวัดค่าความต้านทาน จากนั้นจึงใช้ค่าที่ได้สร้างสูตรคำนวณที่สามารถแปลงค่าที่วัดได้ในหน่วย Ω (หน่วยของความต้านทาน) เป็น °C
💁 สูตรในการคำนวณความต้านทานจากอุณหภูมิเรียกว่า สมการ Steinhart–Hart
การปรับเทียบเซ็นเซอร์วัดความชื้นในดิน
ความชื้นในดินวัดได้โดยใช้ปริมาณน้ำในดินแบบ gravimetric หรือ volumetric
- Gravimetric คือการวัดน้ำหนักของน้ำในน้ำหนักดินต่อหน่วย โดยวัดเป็นจำนวนกิโลกรัมของน้ำต่อกิโลกรัมของดินแห้ง
- Volumetric คือการวัดปริมาณน้ำในปริมาตรดินต่อหน่วย โดยวัดเป็นจำนวนลูกบาศก์เมตรของน้ำต่อลูกบาศก์เมตรของดินแห้ง
🇺🇸 สำหรับชาวอเมริกัน เนื่องจากความสอดคล้องของหน่วย สามารถวัดได้ในหน่วยปอนด์แทนกิโลกรัม หรือฟุตลูกบาศก์แทนลูกบาศก์เมตร
เซ็นเซอร์วัดความชื้นในดินวัดความต้านทานไฟฟ้าหรือความจุไฟฟ้า - ซึ่งไม่เพียงแต่เปลี่ยนแปลงตามความชื้นในดิน แต่ยังขึ้นอยู่กับประเภทของดินด้วย เนื่องจากส่วนประกอบในดินสามารถเปลี่ยนแปลงคุณสมบัติทางไฟฟ้าของดินได้ ดังนั้นเซ็นเซอร์ควรได้รับการปรับเทียบ - นั่นคือการนำค่าที่วัดได้จากเซ็นเซอร์ไปเปรียบเทียบกับค่าที่ได้จากวิธีการทางวิทยาศาสตร์ ตัวอย่างเช่น ห้องปฏิบัติการสามารถคำนวณความชื้นในดินแบบ gravimetric โดยใช้ตัวอย่างดินจากพื้นที่เฉพาะที่เก็บตัวอย่างหลายครั้งต่อปี และใช้ตัวเลขเหล่านี้ปรับเทียบเซ็นเซอร์ โดยจับคู่ค่าที่วัดได้จากเซ็นเซอร์กับค่าความชื้นในดินแบบ gravimetric
กราฟด้านบนแสดงวิธีการปรับเทียบเซ็นเซอร์ โดยจับค่าแรงดันไฟฟ้าสำหรับตัวอย่างดินที่วัดในห้องปฏิบัติการโดยเปรียบเทียบน้ำหนักเปียกกับน้ำหนักแห้ง (โดยการวัดน้ำหนักเมื่อเปียก จากนั้นอบให้แห้งและวัดน้ำหนักอีกครั้ง) เมื่อได้ค่าการวัดหลายค่าแล้ว สามารถนำมาพล็อตลงกราฟและสร้างเส้นที่เหมาะสมกับจุดข้อมูล เส้นนี้สามารถใช้แปลงค่าที่วัดได้จากเซ็นเซอร์วัดความชื้นในดินโดยอุปกรณ์ IoT ให้เป็นค่าความชื้นในดินจริง
💁 สำหรับเซ็นเซอร์วัดความชื้นในดินแบบ resistive แรงดันไฟฟ้าจะเพิ่มขึ้นเมื่อความชื้นในดินเพิ่มขึ้น สำหรับเซ็นเซอร์แบบ capacitive แรงดันไฟฟ้าจะลดลงเมื่อความชื้นในดินเพิ่มขึ้น ดังนั้นกราฟสำหรับเซ็นเซอร์แบบ capacitive จะมีแนวโน้มลดลง ไม่ใช่เพิ่มขึ้น
กราฟด้านบนแสดงค่าแรงดันไฟฟ้าที่วัดได้จากเซ็นเซอร์วัดความชื้นในดิน และโดยการติดตามค่าดังกล่าวไปยังเส้นบนกราฟ สามารถคำนวณค่าความชื้นในดินจริงได้
วิธีนี้ช่วยให้เกษตรกรต้องการเพียงค่าการวัดในห้องปฏิบัติการไม่กี่ค่าจากพื้นที่หนึ่ง จากนั้นสามารถใช้ IoT devices วัดความชื้นในดินได้ - ช่วยลดเวลาในการวัดอย่างมาก
🚀 ความท้าทาย
เซ็นเซอร์วัดความชื้นในดินแบบ resistive และ capacitive มีความแตกต่างกันอย่างไร? และเซ็นเซอร์ประเภทใด (ถ้ามี) ที่เหมาะสมที่สุดสำหรับเกษตรกร? คำตอบนี้จะเปลี่ยนไปหรือไม่ระหว่างประเทศที่กำลังพัฒนาและประเทศที่พัฒนาแล้ว?
แบบทดสอบหลังการบรรยาย
การทบทวนและการศึกษาด้วยตนเอง
ศึกษาเพิ่มเติมเกี่ยวกับฮาร์ดแวร์และโปรโตคอลที่ใช้โดยเซ็นเซอร์และแอคชูเอเตอร์:
งานที่ได้รับมอบหมาย
ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้