반응형

https://youtube.com/live/E5GbRPUkAJY

[아두이노#620] arduino에 자동차에서 사용하는 안전벨트센서, 시트압력센서, 가속페달센서를 연결해서 값을 측정,하는 방법 알아보기!(녹칸다/상편)

이번편은 아두이노에 자동차에서 사용하는 각종센서를 연결해서 측정해보도록 한다!

(참고사항)
1.녹칸다는 아두이노 1.8.19버전을 사용중인데, 가능한 빠른 미래에 아두이노 ide 최신버전으로 교체할 예정!
2.그런데 아직 옜날버전인데, 최신버전을 사용하더라도 코드가 아무런 차이가 없으므로 잘 활용하면 됨!
3.오늘의 수준은 아두이노 완전 초급자를 기준으로 하도록 함!
4.아두이노 IDE의 시리얼모니터와 시리얼플로터를 사용할때는 보레이트를 확인한다!
5.시리얼플로터는 값을 숫자로만 출력했을때 그래프가 그려지고, 출력되는 값에 문자가 섞여있으면 시리얼모니터에서 확인해야함!
6.아두이노의 디지털핀은 입력으로 설정하면 입력만 가능하다!
7.디지털핀을 출력으로 설정하면 입력과 출력이 둘다 가능하다!
8.아두이노에서 부저를 제어할때는 전용 함수가 따로 있으므로 LED를 제어하는것과 같이 pinMode나 digitalWrite함수를 사용할 필요가 없음!
9.아두이노의 아날로그 입출력은 pinMode를 할 필요가 없다!

(안전밸트센서의 원리)
1.녹칸다가 들고온 센서중에 가장 단순한형태!
2.아두이노 입장에서는 스위치와 완벽히 동일하다!
3.안전밸트 버클을 센서에 결합하면 마치 스위치가 눌려진것과 같고, 버클을 분리하면 스위치를 안눌른것과 동일하게 된다!
4.기본적으로 아두이노에 스위치를 연결할때는 풀업저항이나 풀다운저항을 연결해야한다!
5.그런데, 편의를 위해서 아두이노의 내부 풀업저항을 사용하게 되면 별도의 풀업저항을 연결할 필요는 없다!
6.안전밸트센서는 바이너리 센서이기 때문에 안전밸트를 했다! 혹은 안했다! 둘중에 하나로만 인식가능하다!
7.스위치류는 극성이 존재하지 않는다!
8.풀업과 풀다운의 차이는 무엇입니까? 그냥 신호의 차이일 뿐이다!

(시트압력감지/궁뎅이감지센서)
1.여러개의 압력측정 포인트가 있는데, 모두다 병렬로 연결되어서 결국 1개의 센서가 있는것과 같다!
2.스트레스를 받으면 저항값이 바뀌는 가변저항의 일종이다!
3.결국 하나의 거대한 저항과 같은 역할을 하기 때문에 아두이노에 연결할때는 전압분배법칙에 의해서 고정저항 하나를 이용해서 연결하여야 한다!
4.측정해본결과 압전센서에 가해진 압력에따라서 그래프가 쭉 올라가는게 아니라, 그냥 바이너리 센서처럼 압력이 가해졌다 or 가해지지 않았다와 같은 2가지 값밖에 관찰이 안되었다!
5.아두이노의 디지털핀은 센서로부터 입력되는 전압의 레벨이 대략 2.5V보다 크다면 HIGH로 인식하고 그보다 작다면 LOW로 인식한다!
6.앉은 횟수를 카운트하기 위해서는 일어선상태가 LOW신호이고, 앉은 상태가 HIGH신호가 입력되므로 일어선상태에서 앉았을때 RISING EDGE가 발생하게 되는데, 그 신호를 받아서 1회 카운트를 올려야한다!

(가속페달센서)
1.녹칸다의 것과 동일하다면 빨간색선에 아두이노의 5V, 노란색선에 GND연결, 녹색선이 신호선인데 아날로그 0번핀에 연결해서 아날로그 값 측정하기!
2.얼마만큼 가속페달을 밟았는지에 따라서 서로다른 아날로그 값이 출력이된다!
3.실측해보면 대략 가속페달의 아날로그값 범위가 170~870정도인데, 200보다 작으면 그냥 페달을 안밟은걸로 간주하고, 200~900의 범위로 가속페달값을 잡아서 아날로그값의 0.1%의 값을 속도값에 가산하도록 한다!

(예제목차)
1.아두이노의 시리얼통신을 활성화하고 안전밸트센서의 신호를 시리얼플로터에 0.1초간격으로 그래프로 출력하시오!

620_1(시리얼플로터에출력하기).txt
0.00MB

 

2.아두이노에서 안전밸트가 채워져있으면 채워져있다고 문자열로 시리얼모니터에 출력하고 아니라면 안채워져있다고 출력하시오!

620_2(착용유무판별하기).txt
0.00MB

 

3.안전밸트가 채워져있으면 LED가 OFF되고, 안전밸트가 안채워져있으면 LED를 ON시키는 예제를 만드시오!

620_3(LED로확인하기).txt
0.00MB

 

4.예제3에서 안전밸트를 착용 안하고 있으면 LED를 0.1초간격으로 깜빡이도록 하시오!

620_4(LED반짝이기).txt
0.00MB

 

5.아두이노의 3번핀에 부저를 연결하고 안전밸트를 착용하지 않으면 부저로 경고음을 발생시키시오!

620_5(부저로경고하기).txt
0.00MB

 

6.시트압력센서를 아두이노의 아날로그0번핀에 연결하고 측정한 값을 시리얼플로터에 0.01초 간격으로 출력하시오!

620_6(시트센서그래프).txt
0.00MB

 

7.예제6번에서 측정한 시트압력센서의 아날로그값을 전압으로 계산해서 시리얼 모니터에 출력하시오!

620_7(시트압력센서전압측정).txt
0.00MB

 

8.시트압력센서를 예제6에서 아날로그0에 연결했는데, 디지털2번핀으로 옮기고 바이너리 값으로 측정하시오!

620_8(시트압력센서디지털측정).txt
0.00MB

 

9.녹칸다가 자동차 시트에 몇번 앉았는지를 카운트 하시오!(앉았다가, 일어났다가 다시 앉으면 2회)

620_9(시트에앉은횟수카운트).txt
0.00MB

 

10.아두이노에 I2C통신을 하는 1602LCD를 연결하고 녹칸다가 자동차 시트에 앉았는지 아닌지를 LCD화면에 0.1초 간격으로 출력하시오!(라이브러리필요)

620_10(LCD에출력하기).txt
0.00MB

 

11.아두이노의 아날로그 0번핀에 가속페달센서를 연결하고 측정한 값을 0.01초간격으로 시리얼플로터에 출력해서 어떻게 값이 측정되는지 시각적으로 확인하시오!

620_11(가속페달센서).txt
0.00MB

 

12.녹칸다가 가속페달을 아날로그값 500이상으로 밟으면 0.01초간격일때 속도가 1씩 증가하도록 하고, 최대 속도는 300이 되도록 하시오! 그리고 500미만이라서 속도가 떨어지는 상황이라면 1씩 속도가 감소해서 0이 되도록 하시오!

620_12(속도설정하기).txt
0.00MB

 

13.예제12에서 500이라는 지정된 값을 이용하는게 아니라 얼마만큼 가속페달을 밟았는지에 비례해서 속도가 증감되도록 하시오! 이때 가속페달을 완전이 밟지 않는다면 속도가 일정하게 감소한다!(비례제어)

620_13(비례제어).txt
0.00MB

 

14.예제13의 속도를 1602LCD에 출력하시오!

620_14(비례제어LCD).txt
0.00MB

반응형
Posted by 덕력킹
,