Easy
โปรเจกต์ Arduino Oplà weather station (Cloud compatible)
สร้าง Cloud compatible weather station ด้วย Oplà IoT Kit และ monitor สภาพแวดล้อมของคุณ!
สร้าง Cloud compatible weather station ด้วย Oplà IoT Kit และ monitor สภาพแวดล้อมของคุณ!
Project Supporter Team
โพสต์โดย
สวัสดีทุกคน! ในโปรเจกต์นี้ เราจะสร้างสถานีตรวจวัดสภาพอากาศที่รองรับ arduino cloud โดยใช้ arduino Oplà IoT Kit! โปรเจกต์นี้จะแนะนำคุณตั้งแต่ขั้นตอนการสร้าง การเขียน Code และการตั้งค่า cloud thing รวมถึง cloud dashboard ผมจะพยายามอธิบายทุกอย่างให้เรียบง่ายและเป็นมิตรกับมือใหม่ที่สุดเท่าที่จะเป็นไปได้ และมีการรวมรูปภาพประกอบเพื่อให้เข้าใจขั้นตอนต่างๆ ได้ดียิ่งขึ้น ดังนั้นโปรเจกต์นี้จึงเหมาะสำหรับทุกคน แต่ถ้าคุณพบปัญหาใดๆ สามารถตรวจสอบขั้นตอน Troubleshooting ที่ช่วงท้ายของคำอธิบาย หรือคอมเมนต์ถามได้เลย ผมยินดีที่จะช่วยเหลือคุณ เมื่อพร้อมแล้ว ขอให้สนุกกับโปรเจกต์นี้ และที่สำคัญที่สุดคือ: ขอให้สนุกครับ !






เราจะแสดงผลค่าที่วัดได้แบบเรียลไทม์ 5 ค่าบนหน้าจอของ MKR IoT Carrier คุณสามารถเลือกดูข้อมูลต่างๆ ได้โดยการใช้ 5 buttons บน Carrier: temperature, humidity, pressure, light level และ moisture (ของต้นไม้) โดยค่า temperature, humidity, pressure และ light level จะถูกวัดโดย sensor ที่ติดตั้งมาในตัวของ MKR IoT Carrier อย่างไรก็ตาม เราจะวัดค่า moisture ของต้นไม้โดยใช้ Capacitive Soil Moisture Sensor ซึ่งรวมอยู่ในชุด Oplà IoT Kit จากนั้นเราสามารถตรวจสอบข้อมูลทั้งหมดนี้ได้ผ่านหน้าจอของ MKR IoT Carrier (ซึ่งรวมอยู่ใน Oplà IoT Kit) หรือผ่าน Arduino Cloud Dashboard ใน 4 ขั้นตอนถัดไป ผมจะแสดงให้คุณเห็นถึงวิธีการตั้งค่า cloud thing, การเขียนโปรแกรมใน cloud (+ คำอธิบายการทำงานของ code) และวิธีการตั้งค่า Cloud Dashboard เพื่อให้เราสามารถตรวจสอบทุกอย่างผ่านอุปกรณ์อย่างเช่น smartphone ได้
ขั้นตอนแรกในการสร้างสถานีตรวจวัดสภาพอากาศคือการประกอบโปรเจกต์ ซึ่งรวมถึงการเชื่อมต่อบอร์ด MKR WiFi 1010 เข้ากับ MKR IoT Carrier Rev 2, การบรรจุทุกอย่างลงในเคส และการเชื่อมต่อ Capacitive Soil Moisture Sensor เข้ากับ Carrier โดยใช้สายเคเบิล อุปกรณ์ทั้งหมดเหล่านี้รวมอยู่ใน Oplà IoT Kit แต่สามารถซื้อแยกได้เช่นกัน
1. เชื่อมต่อบอร์ด MKR WiFi 1010 เข้ากับ MKR IoT Carrier Rev 2

2. นำบอร์ด MKR ที่เชื่อมต่อกับ MKR IoT Carrier แล้ว ใส่ลงในเคสตามที่แสดงในวิดีโอ
https://www.datocms-assets.com/34108/1600784428-encasingassemblyopla.mp4
3. เชื่อมต่อ Capacitive Soil Moisture Sensor เข้ากับ Carrier โดยใช้สายเคเบิลที่รวมอยู่ใน Oplà IoT Kit โดยเลือกเชื่อมต่อที่ analog Grove Ports ช่องใดช่องหนึ่งบน MKR IoT Carrier (A0 หรือ A6)

4. ปัก Capacitive Soil Moisture Sensor ลงในกระถางต้นไม้ เพื่อให้ sensor สามารถเก็บข้อมูลได้

5. เชื่อมต่อ MKR WiFi 1010 ด้วยสาย USB (รวมอยู่ใน Oplà IoT Kit) เข้ากับแหล่งจ่ายไฟ (เช่น power bank) หรือคอมพิวเตอร์ / แล็ปท็อปของคุณ
เมื่อประกอบโปรเจกต์เสร็จเรียบร้อยแล้ว เราจะเริ่มตั้งค่า Cloud Thing เพื่อให้สามารถเขียน code ได้ในขั้นตอนถัดไป
1. ไปที่เว็บไซต์ https://app.arduino.cc/things

2. เพิ่ม thing ใหม่โดยคลิกปุ่ม "+ THING" ที่มุมขวาบน

3. เลือก "Untitled" Thing, เปิดขึ้นมา แล้วเปลี่ยนชื่อเป็น weather station (ไม่บังคับ) และไปที่แถบ Setup (หากยังไม่ได้เลือก)

4. สร้าง cloud variables ใหม่ 5 ตัวตามที่แสดงในภาพด้านล่าง (กำหนด variable permission เป็น Read Only และ variable update policy เป็น Periodically, every 1s )

5. เชื่อมโยง MKR WiFi 1010 เข้ากับ Thing ของคุณ และเพิ่ม Network ของคุณ

6. เลือกแถบ Sketch และสร้าง Sketch ใหม่โดยคลิกปุ่ม Generate Sketch (เฉพาะในกรณีที่ sketch ยังไม่ได้ถูกสร้างขึ้นโดยอัตโนมัติ)

7. เข้าไปในแถบ thingProperties.h และตรวจสอบให้แน่ใจว่า variables ของคุณถูกตั้งค่าอย่างถูกต้องโดยเปรียบเทียบกับ code ด้านล่าง

ยินดีด้วย! คุณตั้งค่า Cloud Thing สำเร็จแล้ว! ขั้นตอนต่อไปคือการเขียนโปรแกรมเพื่อให้สถานีตรวจวัดสภาพอากาศทำงานได้อย่างถูกต้อง หากคุณพบปัญหาใดๆ ตรวจสอบขั้นตอน Troubleshooting ด้านล่าง (ท้ายคำอธิบาย) หรือเขียนคอมเมนต์ถามได้ครับ
เมื่อตั้งค่า Cloud Thing เสร็จแล้ว เรามาเริ่มเขียนโปรแกรมกันเลย! คุณสามารถดาวน์โหลด code ได้ที่ด้านล่าง แต่ถ้าต้องการเข้าใจการทำงานของ code ให้ดียิ่งขึ้น ผมแนะนำให้อ่านและทำตาม 7 ขั้นตอนนี้:
1. การติดตั้ง libraries ที่สำคัญ:
อันดับแรก เราต้องติดตั้ง library ที่จำเป็นเพื่อให้ code ทำงานได้ ไปที่แถบ LIBRARIES ทางด้านซ้ายของหน้าจอและติดตั้ง Arduino_MKRIoTCarrier library

2. การกำหนดค่าเริ่มต้นตัวแปร (Initializing variables)
ต่อไป เราจะตั้งค่าสิ่งที่สำคัญบางอย่าง (เช่น ตัวแปร) ซึ่งจำเป็นต้องใช้ก่อนเริ่มเขียนโปรแกรมในส่วนที่น่าสนใจ
ทำการ Include MKRIoTCarrier Library รวมถึงไฟล์ thingProperties.h และกำหนดค่าเริ่มต้น MKRIoT Carrier ตามที่แสดง:

หลังจากนั้น เราจะเพิ่มสี 6 สีสำหรับ led บน IoT Carrier ซึ่งจะแสดงผลในแต่ละโหมดที่กำหนด (รวมถึงในช่วงการตั้งค่า)

ขั้นตอนสุดท้ายก่อนเริ่มเขียนฟังก์ชัน setup() เราต้องการตัวแปร 4 ตัวเพื่อใช้สลับระหว่างโหมดต่างๆ:

3. การเขียนฟังก์ชัน setup()
เราจัดการกับตัวแปรเสร็จแล้ว ตอนนี้มาโฟกัสที่ฟังก์ชัน setup() ในฟังก์ชันนี้ เราจะเริ่มกระบวนการต่างๆ (เช่น การเชื่อมต่อบอร์ดกับ cloud) และเราจะเพิ่มหน้าจอ loading เล็กๆ สำหรับ MKR IoT Carrier Rev 2 ซึ่งจะแสดงผลเมื่อบอร์ดเชื่อมต่อกับแหล่งจ่ายไฟ
เริ่มต้นด้วยการเชื่อมต่อ Cloud และสิ่งที่จำเป็นอื่นๆ โดยใช้ code ต่อไปนี้ ซึ่งจะเริ่มการทำงานของ Serial, เชื่อมต่อบอร์ดกับ cloud และตั้งค่าตัวแปรบางอย่าง (เช่น moisture Pin ในบรรทัดที่ 44)

ขั้นตอนต่อไปคือการเขียนโปรแกรมสำหรับหน้าจอ loading ซึ่งจะปรากฏขึ้นเมื่อบอร์ดเชื่อมต่อกับแหล่งจ่ายไฟ หน้าจอ loading จะมีข้อความ 2 ส่วน ส่วนแรกคือชื่อโปรเจกต์ ("Weather Station") และอีกส่วนแสดงว่าบอร์ดเชื่อมต่อกับ Arduino Cloud สำเร็จแล้ว ("Connected to Arduino Cloud")

ตอนนี้เราเขียนฟังก์ชัน setup() เสร็จเรียบร้อยแล้ว และสามารถไปต่อที่การสร้างฟังก์ชัน loop() ซึ่งจะมี code ให้เขียนเพิ่มขึ้นอีกเล็กน้อย มาเริ่มกันเลย!
4. การตั้งค่าฟังก์ชัน loop()
นี่คือ code เพียงไม่กี่บรรทัดที่เราต้องใส่เพื่อให้ทุกอย่างทำงานได้ถูกต้อง

5. การอ่านค่าจาก sensor
ตอนนี้เราสามารถอ่านค่าที่ sensor วัดได้ โดยเขียน code ต่อไปนี้ลงในฟังก์ชัน loop สำหรับค่า temperature, humidity, pressure และ light level เราสามารถใช้ sensor ที่ติดตั้งมาในบอร์ด MKR IoT ได้โดยตรง แต่สำหรับค่า moisture เราจะอ่านค่า analog Input จาก moisture pin จากนั้นค่า moisture จะถูกนำไป map บนสเกล 0 ถึง 100 เพื่อให้เราสามารถแสดงผลเป็นเปอร์เซ็นต์ % ได้ในภายหลัง

6. การเพิ่มการควบคุมด้วย button
ในการสลับระหว่างโหมดทั้ง 5 เราจะใช้ 5 buttons บน MKR IoT Carrier Rev 2 โดยเราจะเขียน if-statements เพื่อตรวจสอบว่ามีปุ่มใดถูกกดหรือไม่

เรายังจำเป็นต้องอัปเดตหน้าจอหลังจากกดปุ่ม โดยใช้ฟังก์ชัน updateDisplay() ที่เราจะเขียนในขั้นตอนถัดไป

7. การเพิ่มโหมดแสดงผล 5 รูปแบบสำหรับหน้าจอ
ขั้นตอนสุดท้ายก่อนที่ code จะเสร็จสมบูรณ์ คือการเพิ่มโหมดแสดงผล 5 รูปแบบสำหรับหน้าจอ ซึ่งจะแสดงผลตามโหมดที่เราเลือกผ่านปุ่ม (ตัวแปร modeSelect) โดยในแต่ละโหมดจะมีสีเป็นของตัวเอง (ที่เราตั้งค่าไว้ในขั้นตอนที่ 2) เพื่อให้แยกแยะได้ง่ายขึ้น



ยินดีด้วย! คุณเขียน Code ทั้งหมดเสร็จแล้วและโปรเจกต์ของคุณเกือบพร้อมสำหรับการทดสอบแล้ว! เชื่อมต่อบอร์ด MKR WiFi 1010 เข้ากับคอมพิวเตอร์ของคุณโดยใช้สาย USB ที่รวมอยู่ใน Oplà IoT Kit แล้วคลิกปุ่ม UPLOAD เพื่ออัปโหลด code ลงในบอร์ดของคุณ! ตอนนี้ทุกอย่างควรจะทำงานได้แล้ว!
บางครั้งการเขียนโปรแกรมอาจน่าหงุดหงิดเพราะปัญหาและ bug ที่คุณอาจพบเจอ แต่ขออย่าเพิ่งยอมแพ้! แม้ว่ามันอาจจะน่าผิดหวังหากบางอย่างไม่ทำงานตามที่ควรจะเป็น แต่มันมีวิธีแก้ไขเสมอ ดังนั้นหากคุณพบปัญหาใดๆ ลองเลื่อนลงไปที่ส่วน Troubleshooting และทำตามขั้นตอนเหล่านั้น และหากยังไม่ช่วยอะไร ติดต่อผมผ่านส่วนคอมเมนต์ได้เลย ผมยินดีที่จะช่วยเหลือคุณครับ!
เพื่อแสดงผลและติดตามข้อมูลทั้งหมดที่เราเก็บรวบรวมมา เราสามารถสร้าง Arduino Dashboard ได้ตามขั้นตอนต่อไปนี้:
1. ไปที่ https://app.arduino.cc/dashboards และคลิกที่ปุ่ม "+ DASHBOARD" ที่มุมขวาบนของหน้าจอ

2. เปิด Dashboard ของคุณและเปลี่ยนชื่อ (ไม่บังคับ)
3. คลิกปุ่ม "EDIT" ที่มุมขวาบนของหน้าจอเพื่อเข้าสู่โหมดแก้ไข

4. คลิกปุ่ม "ADD" และเลือก widgets ที่คุณต้องการใช้เพื่อแสดงผลข้อมูลของคุณ

หากคุณต้องการบทเรียนเชิงลึกเพิ่มเติมเกี่ยวกับวิธีใช้และตั้งค่า arduino dashboard ผมแนะนำให้ดูที่เอกสารประกอบของ arduino ที่นี่ https://docs.arduino.cc/arduino-cloud/cloud-interface/dashboard-widgets/
หากคุณพบปัญหาใดๆ ระหว่างทำโปรเจกต์นี้ นี่คือสิ่งที่ควรตรวจสอบซ้ำอีกครั้งซึ่งอาจช่วยแก้ปัญหาของคุณได้ หากขั้นตอนต่อไปนี้ยังไม่สามารถแก้ปัญหาได้ สามารถแจ้งผมได้ในส่วนคอมเมนต์เพื่อให้ผมช่วยเหลือเพิ่มเติมครับ!
ในโปรเจกต์นี้ เราสามารถสร้างสถานีตรวจวัดสภาพอากาศที่เรียบง่ายแต่ยอดเยี่ยมได้โดยใช้ Oplà IoT Kit เราได้ตั้งค่า sensor ต่างๆ ร่วมกันเพื่อวัดค่า temperature, humidity, pressure, light level และ moisture พร้อมทั้งเชื่อมต่อทุกอย่างเข้ากับ Cloud เพื่อให้สามารถเข้าถึงข้อมูลจากระยะไกลผ่าน dashboard ที่ปรับแต่งเองได้ ตลอดเส้นทางนี้ เราได้เรียนรู้วิธีการแสดงผลข้อมูลบนหน้าจอของ MKR IoT Carrier Rev 2 และเรียนรู้เกี่ยวกับบอร์ด MKR WiFi 1010 ผมหวังว่าคุณจะสนุกกับการสร้าง เขียน Code และทำโปรเจกต์นี้! หากเป็นเช่นนั้น อย่าลืมแชร์โปรเจกต์นี้หรือแสดงความคิดเห็นทิ้งไว้ ผมตั้งตารอที่จะสร้างสรรค์โปรเจกต์ที่สนุกและน่าสนใจยิ่งขึ้นสำหรับทุกคนที่มีใจรักใน arduino! ขอบคุณที่ร่วมเป็นส่วนหนึ่งของโปรเจกต์นี้ครับ! บายบาย!
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้