프로그래밍/CAN통신(MCP2515)

[아두이노#123] CAN통신모듈(MCP2515/4편) 1:N통신으로 온도센서와 먼지센서값 측정하기(녹칸다/포로리야공대가자)

덕력킹 2020. 10. 27. 22:15
반응형

 

회로도준비중

 

(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-1-1.txt
0.00MB
123-1-2.txt
0.00MB
123-1-3.txt
0.00MB


예제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인 슬레이브에게 먼지센서값을 요청하는 패킷

123-2-1.txt
0.00MB
123-2-2.txt
0.00MB
123-2-3.txt
0.00MB


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)

bota.tistory.com/1341

레퍼런스코드(먼지센서/예제36-1)

bota.tistory.com/1169

반응형