LAB: I2C Protocol
Last updated
Last updated
Assoc. Prof. Wiroon Sriborrirux, Founder of Advance Innovation Center (AIC) and Bangsaen Design House (BDH), Electrical Engineering Department, Faculty of Engineering, Burapha University
เพื่อศึกษาการอ่านค่าข้อมูล sensor ที่ส่งข้อมูลผ่านสาย I2C
เพื่อศึกษาการส่งข้อมูลระหว่าง Microcontroller ไปยัง Microcontroller โดยทั้งสองใช้การสื่อสารกันผ่าน I2C interface
การทดลองนี้เป็นการเขียนโปรแกรมลงบอร์ด M5Stack ให้ค้นหา Address I2C ของ sensor ที่เชื่อมต่อกับบอร์ด M5Stack
Components | Quantity |
---|---|
Arduino IDE
โปรแกรม KingstVIS
เชื่อมต่อ logic Analyzer กับ คอมพิวเตอร์
เปิดโปรแกรม Kingst VIS
ไปที่ Analyzers >> คลิ๊ก icon add(+) >> เลือก I2C
ไปที่ Analyzers >> คลิ๊ก icon setting >> Edit ตั้งค่าตามรูปด้านล่าง >> OK
ไปที่ Analyzers อีกครั้ง >> คลิ๊ก icon setting >> Display Format >> Dec เพื่อให้ decoder เป็นข้อมูลชุดตัว แบบเลขฐาน 10 (DEC)
ไปที่ Channel 0 เลือกกด Indicates "rising edge trigger"
การต่อวงจร: บอร์ด M5Stack ต่อกับ เซนเซอร์ DHT12 และ BMP280
ตัวอย่างวงจร
M5Stack scan I2C address
การเขียนโปรแกรม scan หา Address ของเซนเซอร์นั้นใช้เพื่อทดสอบว่าเซนเซอร์ที่เชื่อมต่อนั้นอยู่ในเครือข่าย I2C ของบอร์ด Microcontroller แล้ว
เราสามารถหาค่า address ของเซนเซอร์ได้จาก datasheet ของเซนเซอร์ หรือ จาก code การทดลองนี้ ถ้าต้องการหาค่า I2C address ของ เซนเซอร์ตัวใดให้เชื่อมต่อเพียงเซนเซอร์ที่ต้องการหาและถอดวงจรเซนเซอร์ที่ไม่ต้องการออก
หา I2C Address ของทั้งสอง sensor และ I2C Address ของ M5Stack แล้วเติมลงในตารางด้านล่าง
2. บันทึกภาพวงจรการทดลองและภาพผลที่แสดงบน Serial monitor ผลการ Scan หาค่า I2C Address ของเซนเซอร์
3. อธิบายว่าเพราะอะไรเราต้องรู้ค่า I2C Address ของอุปกรณ์ เมื่อเราต้องการใช้งานโปรโตคอล I2C
ทดลองให้ M5Stack อ่านค่า DHT12 Sensor การทดลองนี้เป็นการเขียนโปรแกรมลงบอร์ด M5Stack ให้อ่านค่า DHT12 sensor และใช้ logic analyzer แสดงค่า sensor เมื่อ M5Stack ส่งคำสั่งอ่านค่า DHT12 sensor
Arduino IDE
โปรแกรม KingstVIS
"ใช้แบบเดิม"
การต่อวงจร: บอร์ด M5Stack ต่อกับเซนเซอร์ DHT12 และ Logic analyzer
ติดตั้งไลบรารี่ DHT12 สำหรับเขียนโปรแกรม Arduino IDE อ่านค่า DHT12 sensor
เปิดโปรแกรม Arduino IDE
ไปที่ Sketch >> Include Library >>Manage Libraries...
พิมพ์ ค้นหา DHT12 >> เลือก DHT12 sensor library >> Install
หลังจากติดตั้งเรียบร้อยให้ปิดโปรแกรมแล้วเปิดใหม่
สร้างไฟล์แล้วเขียนโปรแกรมตาม code ด้านล่าง แล้ว upload code ลง M5Stack
M5Stack read data DHT12 Sensor
บันทึกผลการทดลองที่ Logic analyzer แสดง เทียบกับ Serial monitor และอธิบายว่าข้อมูลที่ได้เป็นอย่างไร
การทดลองนี้เป็นการเขียนโปรแกรมลงบอร์ด M5Stack ให้ทำหน้าที่เป็น Master อ่านข้อความจาก Arduino UNO ที่ทำหน้าที่เป็น Slave ผ่าน I2C bus
เชื่อมต่อ logic Analyzer กับ คอมพิวเตอร์
เปิดโปรแกรม Kingst VIS
ไปที่ Analyzers >> คลิ๊ก icon add(+) >> เลือก I2C
ไปที่ Analyzers >> คลิ๊ก icon setting >> Edit ตั้งค่าตามรูปด้านล่าง >> OK
ไปที่ Analyzers อีกครั้ง >> คลิ๊ก icon setting >> Display Format >> ASCII เพื่อให้ decoded เป็นข้อมูลชุด แบบตัวอักษร (ASCII)
ไปที่ Channel 0 เลือกกด Indicates "rising edge trigger"
การต่อวงจร: บอร์ด M5Stack ต่อกับบอร์ด Arduino UNO และ Logic Analyzer
ตัวอย่างวงจร
บันทึกผล Serial monitor แสดงข้อความที่บอร์ด M5Stack (Master) ได้รับ และข้อความบนโปรแกรม KingstVIS ของ logic analyzer
อธิบายผลการทดลองที่ logic analyzer แสดงเทียบกับ serial monitor ของ M5Stack ที่ทำหน้าที่เป็น master
M5Stack | Sensor BMP280 | Sensor DHT12 |
---|---|---|
Devices | I2C Address |
---|---|
Components | Quantity |
---|---|
M5Stack | Sensor DHT12 | Logic Analyzer |
---|---|---|
Components | Quantity |
---|---|
M5Stack | Arduino UNO | Logic Analyzer |
---|---|---|
I2C (21D)
SDA
SDA
I2C (22C)
SCL
SCL
GND
GND
GND
AIR PRESSURE Sensor (BMP280)
.....
Temp, Humidity Sensor (DHT12)
.....
M5Stack
.....
1
1
I2C (21D)
SDA
Channel 0
I2C (22C)
SCL
Channel 1
GND
GND
GND
1
1
Arduino UNO
1
SDA (pin 21D)
SDA (pin A4)
Channel 0
SCL (pin 22C)
SCL ( pin A5)
Channel 1
GND
GND
GND
1
1