[아두이노#123] CAN통신모듈(MCP2515/4편) 1:N통신으로 온도센서와 먼지센서값 측정하기(녹칸다/포로리야공대가자)
회로도준비중
(CAN통신모듈(MCP2515/4편) 1:N통신으로 온도센서와 먼지센서값 측정하기)
마스터 아두이노 1개와 슬레이브 아두이노 2개를 1:2로 연결(MCP2515)
첫번째 슬레이브 아두이노에 온습도센서 연결
두번째 슬레이브 아두이노에 미세먼지센서 연결
예제1)마스터에서 각각의 슬레이브의 정보를 request하면 데이터를 response하기
예제2)데이터 출력을 0.91인치 OLED 디스플레이에 해보기
예제123-1-1 (마스터코드)
* 슬레이브1에 온습도센서(DHT11)가 있다
* 슬레이브2에 먼지센서(GP2Y)가 있다
* 슬레이브1과 2의 ID는 define에 참조
* command id는 온습도가 0x0D이고 먼지센서는 0x0F로 하자
* (예시) 0x0F6 0x0D 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
* → ID가 0x0F6인 슬레이브에게 온습도 센서값을 요청하는 패킷
* (예시) 0x036 0x0F 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
* → ID가 0x036인 슬레이브에게 먼지센서값을 요청하는 패킷
예제123-2-1 (마스터코드)
* 마스터에 0.91인치 OLED 디스플레이를 연결하자
* SDA를 A4에 SCL을 A5에 연결하면 I2C 통신이 된다!
* 슬레이브1에 온습도센서(DHT11)가 있다
* 슬레이브2에 먼지센서(GP2Y)가 있다
* 슬레이브1과 2의 ID는 define에 참조
* command id는 온습도가 0x0D이고 먼지센서는 0x0F로 하자
* (예시) 0x0F6 0x0D 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
* → ID가 0x0F6인 슬레이브에게 온습도 센서값을 요청하는 패킷
* (예시) 0x036 0x0F 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
* → ID가 0x036인 슬레이브에게 먼지센서값을 요청하는 패킷
CAN통신라이브러리(MCP2515)
github.com/autowp/arduino-mcp2515
온습도라이브러리(DHT11)
github.com/adafruit/DHT-sensor-library
0.91인치 OLED 라이브러리(SSD1306)
github.com/adafruit/Adafruit_SSD1306
레퍼런스코드(MCP2515/예제113-1)
레퍼런스코드(먼지센서/예제36-1)