Seeeduino XIAO Microcontroller (LAB5)

การทดลองที่ 5 จะเป็นการเชื่อมต่อระหว่าง Seeeduino XIAO กับอุปกรณ์อินพุต/เอาต์พุตต่างๆ ด้วย I2C หรือ IIC ทั้งนี้การเชื่อมต่ออุปกรณ์ต่างๆ ผ่านรูปแบบการสื่อสารนี้ก็เพื่อเพิ่มความสามารถให้กับบอร์ดประมวลผล โดยมีจุดเด่นในเรื่องของการสื่อสารได้ค่อนข้างเร็ว, ใช้ขาสำหรับเชื่อมต่ออุปกรณ์น้อย, สามารถเชื่อมต่ออุปกรณ์ต่างๆ เข้ามาแบบขนานและมีอุปกรณ์อินพุต/เอาต์พุตใช้รูปแบบการสื่อสารลักษณะนี้มากมาย ในตัวอย่างการทดลองที่ 5 จะเป็นการใช้ตัวเซนเซอร์ความเข้มของแสงสำหรับทดลอง

รูปที่ 1 เป็นลักษณะของโมดูลเซนเซอร์แสง BH1750 ขนาดเล็ก ซึ่งใช้การสื่อสารแบบ I2C โดยการเชื่อมต่อเข้ากับบอร์ด Seeeduino XIAO ที่ขา 4 (SDA) และ 5 (SCL) และต่อไฟเลี้ยง 3.3V ที่อยู่กับบอร์ด Seeeduino XIAO ได้ทันที และข้างล่างนี้จะเป็นคุณสมบัติของโมดูลเซนเซอร์ BH1750
BH1750 sensor specifications (Ref. https://github.com/claws/BH1750 [11])
- Operating voltage: 3.3V .. 4.5V max
- Low current by power down: max 1uA
- I2C bus interface: max 400kHz
- Ambience light:
- Range: 1 – 65535 lx
- Deviation: +/- 20%
- Selectable resolutions:
- 4 lx (low resolution, max 24 ms measurement time)
- 1 lx (mid resolution max 180 ms measurement time)
- 0.5 lx (high resolution 180 ms measurement time)
- No additional electronic components needed
จากข้อมูลข้างบนจะเป็นคุณสมบัติของโมดูล BH1750 เบื้องต้น และเราสามารถศึกษารายละเอียดเพิ่มเติมตามลิ้งข้างล่างบทความนี้ครับ [12]

รูปที่ 2 โปรแกรมที่ใช้ในการรับค่าจากโมดูลเซนเซอร์แสง BH1750 ซึ่งเราสามารถเรียกใช้งานได้จากตัวอย่างไลบารี่และเราสามารถปรับโปรแกรมการใช้งานนี้เพื่อนำไปประยุกต์ใช้งานได้ตามเหมาะสม
/* Seeeduino XIAO Microcontroller LAB5 Test I2C Protocol by BH1750 Sensor Date : 3-6-64 */ #include <Wire.h> #include <BH1750.h> BH1750 lightMeter; void setup(){ Serial.begin(115200); Wire.begin(); lightMeter.begin(); Serial.println(F("BH1750 Test begin")); } void loop() { float lux = lightMeter.readLightLevel(); Serial.print("Light: "); Serial.print(lux); Serial.println(" lx"); delay(1000); }
การทำงานของโปรแกรมคร่าวๆคือ ช่วงบรรทัดแรกเราจะใช้ไลบารี่ 2 ส่วนคือ Wire.h และ BH1750.h เป็นโปรแกรมใช้งานสำเร็จที่สามารถเรียกใช้งานได้ทันที ซึ่งจะช่วยให้เราใช้เวลาในการพัฒนาโปรแกรมทั่วไปได้เร็วขึ้น จากนั้นบรรทัดถัดลงมา (void setup) จะเป็นการกำหนดค่าความเร็วในการสื่อสารด้วยคำสั่ง Serial.begin(115200); และกำหนดการเริ่มใช้งานการสื่อสารแบบ I2C และโมดูลเซนเซอร์
จากนั้นในลูปคำสั่ง (void loop) จะใช้คำสั่งอ่านค่าจากตัวเซนเซอร์ float lux = lightMeter.readLightLevel(); โดยค่าที่อ่านได้จะถูกเก้บไว้ที่ตัวแปร lux เสร็จแล้วนำค่าที่ได้ไปแสดงผลที่พอร์ตคอม (COM12) ในโปรแกรม Arduino IDE (Serial Monitor) แล้วหน่วงเวลาไว้ 1 วินาทีและกลับไปอ่านค่าจากตัวเซนเซอร์อีกครั้ง สำหรับข้างล่างนี้จะเป็นลิงก์ดาวน์โหลดไฟล์ไลบารี่สำหรับโมดูล BH1750
BH1750 Arduino library ------> https://github.com/claws/BH1750

รูปที่ 3 แสดงลักษณะของสัญญาณที่เกิดขึ้นจากขา 4 (SDA) ทั้งนี้ทดลองวัดสัญญาณเพื่อสังเกตการส่งข้อมูลระหว่างโมดูลเซนเซอร์ BH1750 และบอร์ด Seeeduino XIAO

รูปที่ 4 แสดงการทดสอบให้ตัวโมดูล BH1750 รับแสงจากหลอดนีออนโดยตรง และส่งค่ามายังพอร์ตคอม (COM12)

รูปที่ 5 เป็นค่าแสดงผลที่ได้จากโมดูล BH1750 ซึ่งค่าที่โดยเฉลี่ยประมาณ 1150 lx

รูปที่ 6 แสดงการทดสอบให้ตัวโมดูล BH1750 ถูกบังด้วยถุงกรองแสงและส่งค่ามายังพอร์ตคอม (COM12)

รูปที่ 7 เป็นค่าแสดงผลที่ได้จากโมดูล BH1750 โดยจะสังเกตเห็นว่าช่วงบรรทัดบนจะมีค่าเฉลี่ยประมาณ 380 lx ซึ่งตัวเซนเซอร์ถูกบังด้วยถุงกรองแสงและบรรทัดถัดมาจะมีค่ากลับไปที่ประมาณ 1120 lx เมื่อเอาถุงกรองแสงออกเพื่อให้เห็นความแตกต่าง

สำหรับการทดลองที่ 5 นี้เป็นการสื่อสารแบบ I2C ระหว่างบอร์ด Seeeduino XIAO และอุปกรณ์อินพุต/เอาต์พุตต่างๆ ซึ่งสามารถนำมาเชื่อมต่อได้ง่าย และช่วยให้บอร์ด Seeeduino XIAO มีขาใช้งานในด้านอื่นๆ เพิ่มขึ้น ซึ่งเหมาะอย่างยิ่งสำหรับโครงงานที่ต้องการตัวประมวลผลได้รวดเร็ว ขนาดเล็ก และใช้พื้นที่จำกัด และการเลือกบอร์ดประมวลผลนี้มาใช้งานก็เป็นอีกตัวเลือกหนึ่งครับ.
Reference
- Seeeduino XIAO – Seeed Wiki (seeedstudio.com)
- How to Add Seeed boards to Arduino IDE – Seeed Wiki (seeedstudio.com)
- Grove Shield for Seeeduino XIAO with embedded battery management chip – Seeed Wiki (seeedstudio.com)
- https://wiki.seeedstudio.com/Seeeduino-XIAO-CircuitPython/
- Seeeduino XIAO_v1.0_191112.sch (seeedstudio.com)
- Seeeduino XIAO Expansion board – Seeed Wiki (seeedstudio.com)
- https://www.seeedstudio.com/Seeeduino-XIAO-Pre-Soldered-p-4747.html
- https://www.seeedstudio.com/Seeeduino-XIAO-Expansion-board-p-4746.html
- ArduPicLab: How to modify analog output range of Arduino Due
- https://forum.seeedstudio.com/
- https://github.com/claws/BH1750
- https://www.mouser.com/datasheet/2/348/bh1750fvi-e-186247.pdf
- https://www.instructables.com/BH1750-Digital-Light-Sensor/