LAB: I2C Protocol
จุดประสงค์
เพื่อศึกษาการอ่านค่าข้อมูล sensor ที่ส่งข้อมูลผ่านสาย I2C
เพื่อศึกษาการส่งข้อมูลระหว่าง Microcontroller ไปยัง Microcontroller โดยทั้งสองใช้การสื่อสารกันผ่าน I2C interface
LAB1: Basic I2C Communication
การทดลองนี้เป็นการเขียนโปรแกรมลงบอร์ด M5Stack ให้ค้นหา Address I2C ของ sensor ที่เชื่อมต่อกับบอร์ด M5Stack
อุปกรณ์ทดลอง
Components | Quantity |
---|---|
1 | |
1 |
โปรแกรม
Arduino IDE
โปรแกรม KingstVIS
ตั้งค่าโปรแกรม 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"
PIN Connect
การต่อวงจร: บอร์ด M5Stack ต่อกับ เซนเซอร์ DHT12 และ BMP280
M5Stack | Sensor BMP280 | Sensor DHT12 |
---|---|---|
I2C (21D) | SDA | SDA |
I2C (22C) | SCL | SCL |
GND | GND | GND |
ตัวอย่างวงจร
Code
M5Stack scan I2C address
การเขียนโปรแกรม scan หา Address ของเซนเซอร์นั้นใช้เพื่อทดสอบว่าเซนเซอร์ที่เชื่อมต่อนั้นอยู่ในเครือข่าย I2C ของบอร์ด Microcontroller แล้ว
เราสามารถหาค่า address ของเซนเซอร์ได้จาก datasheet ของเซนเซอร์ หรือ จาก code การทดลองนี้ ถ้าต้องการหาค่า I2C address ของ เซนเซอร์ตัวใดให้เชื่อมต่อเพียงเซนเซอร์ที่ต้องการหาและถอดวงจรเซนเซอร์ที่ไม่ต้องการออก
บันทึกผลการทดลอง
หา I2C Address ของทั้งสอง sensor และ I2C Address ของ M5Stack แล้วเติมลงในตารางด้านล่าง
Devices | I2C Address |
---|---|
AIR PRESSURE Sensor (BMP280) | ..... |
Temp, Humidity Sensor (DHT12) | ..... |
M5Stack | ..... |
2. บันทึกภาพวงจรการทดลองและภาพผลที่แสดงบน Serial monitor ผลการ Scan หาค่า I2C Address ของเซนเซอร์
3. อธิบายว่าเพราะอะไรเราต้องรู้ค่า I2C Address ของอุปกรณ์ เมื่อเราต้องการใช้งานโปรโตคอล I2C
LAB2: M5Stack อ่านค่า DHT12 Sensor
ทดลองให้ M5Stack อ่านค่า DHT12 Sensor การทดลองนี้เป็นการเขียนโปรแกรมลงบอร์ด M5Stack ให้อ่านค่า DHT12 sensor และใช้ logic analyzer แสดงค่า sensor เมื่อ M5Stack ส่งคำสั่งอ่านค่า DHT12 sensor
อุปกรณ์ทดลอง
Components | Quantity |
---|---|
1 | |
1 |
โปรแกรม
Arduino IDE
โปรแกรม KingstVIS
ตั้งค่าโปรแกรม KingstVIS
"ใช้แบบเดิม"
PIN Connect
การต่อวงจร: บอร์ด M5Stack ต่อกับเซนเซอร์ DHT12 และ Logic analyzer
M5Stack | Sensor DHT12 | Logic Analyzer |
---|---|---|
I2C (21D) | SDA | Channel 0 |
I2C (22C) | SCL | Channel 1 |
GND | GND | GND |
ติดตั้งไลบรารี่ DHT12 สำหรับเขียนโปรแกรม Arduino IDE อ่านค่า DHT12 sensor
เปิดโปรแกรม Arduino IDE
ไปที่ Sketch >> Include Library >>Manage Libraries...
พิมพ์ ค้นหา DHT12 >> เลือก DHT12 sensor library >> Install
หลังจากติดตั้งเรียบร้อยให้ปิดโปรแกรมแล้วเปิดใหม่
สร้างไฟล์แล้วเขียนโปรแกรมตาม code ด้านล่าง แล้ว upload code ลง M5Stack
Code
M5Stack read data DHT12 Sensor
บันทึกผลการทดลอง
บันทึกผลการทดลองที่ Logic analyzer แสดง เทียบกับ Serial monitor และอธิบายว่าข้อมูลที่ได้เป็นอย่างไร
LAB3: MCU to MCU communication
การทดลองนี้เป็นการเขียนโปรแกรมลงบอร์ด M5Stack ให้ทำหน้าที่เป็น Master อ่านข้อความจาก Arduino UNO ที่ทำหน้าที่เป็น Slave ผ่าน I2C bus
อุปกรณ์ทดลอง
Components | Quantity |
---|---|
1 | |
1 | |
Arduino UNO | 1 |
ตั้งค่าโปรแกรม KingstVIS
เชื่อมต่อ 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"
PIN Connect
การต่อวงจร: บอร์ด M5Stack ต่อกับบอร์ด Arduino UNO และ Logic Analyzer
M5Stack | Arduino UNO | Logic Analyzer |
---|---|---|
SDA (pin 21D) | SDA (pin A4) | Channel 0 |
SCL (pin 22C) | SCL ( pin A5) | Channel 1 |
GND | GND | GND |
ตัวอย่างวงจร
Code: M5Stack is a master reader
Code: Arduino UNO is a slave
บันทึกผลการทดลอง
บันทึกผล Serial monitor แสดงข้อความที่บอร์ด M5Stack (Master) ได้รับ และข้อความบนโปรแกรม KingstVIS ของ logic analyzer
อธิบายผลการทดลองที่ logic analyzer แสดงเทียบกับ serial monitor ของ M5Stack ที่ทำหน้าที่เป็น master
Last updated