날짜 : 2021.01.14 목요일 / 제목 : 프로젝트 시작 ! / 날씨 : ⛅⛅⛅⛅
안녕하세요 ~! 전자과_공대생입니다 ~ (⌐■_■)
요즘 날씨가 많이 풀려서 생각보다는 안 춥네요 !
인간이 적응형 동물이라 그런 거 일수도 있겠습니다 ㅎㅎ
오늘부터 이제 프로젝트를 시작해볼까 합니다 !
그럼 오늘 할 실습을 알려드리겠습니다 !
{ 오늘 할 실습 }
👉수분량에 따른 워터펌프 작동
그럼 수분량에 따른 워터펌프 작동에 대해서 해보도록 하겠습니다 !
{ 필요한 재료 }
👉라즈베리파이
👉브레드보드
👉여러 개의 점퍼 케이블
👉토양 수분 센서
👉모터 드라이버
👉ADC
👉워터펌프
우선 회로 순서도을 보여드리겠습니다 !
순서도를 보시면 먼저 수분센서를 통하여 수분량을 수집합니다.
수집을 하였을 때 기준으로 잡아둔 수치보다 낮게 나올 경우 워터펌프가 가동됩니다.
수치보다 높게 나오로 경우는 워터펌프가 작동하지 않습니다.
그리고 이 순서를 계속해서 무한 반복하게 됩니다.
이제 연결한 회로를 보여드리도록 하겠습니다 !
여러 부품을 사용하다 보니 선이 복잡하고 많네요 ㅎㅎ
좀 더 정리된 회로를 보여드리도록 하겠습니다 !
정리를 해도 복잡해 보이는 거는 매한가지네요 ㅋㅋㅋㅋ
그래도 위에 회로보다는 좀 더 깔끔하게 정리가 되어있습니다.
아 그리고 제가 토양 수분 센서를 sen-13322를 사용한다고 했는데 부품 모듈을 찾지 못했습니다.
해서 정리된 회로 사진에 보이시는 토양 수분 센서는 제가 사용한 센서가 아닌 점을 말씀드립니다 !
또한 연결은 초록색이 SIG, 회색이 GND, 노란색이 VCC입니다 !
회로를 보여드렸으니 직접 작성한 코딩도 알려드리도록 하겠습니다 !
생각보다 양이 많죠??ㅎㅎㅎ
아무래도 부품이 여러 개가 들어가다 보니 써야 할 코딩 내용도 많아지는 것 같습니다 !
이제 하나씩 설명드리겠습니다.
우선 3개의 import는 정말 많이 했죠 ㅎㅎ
이제는 말씀 안 드려도 아셔야 합니다 !
혹시나 모르시겠으면 다른 포스팅 글을 보시면 자세히 나와있습니다 !
그다음 IN1, IN2, ENA 변수를 이용하여 드라이버 모터와 연결한 핀 번호를 지정해줍니다.
물론 핀 번호는 BCM기준입니다 !
그 밑에 HUM이 들어간 두 변수는 각각 의미하는 바가 다릅니다.
첫 번째 HUM 변수는 습도 임계치이며 두 번째 변수는 토양 습도 센서 출력 값입니다.
습도 임계치는 원하시는 숫자로 바꾸셔도 됩니다 !
토양 습도 센서 출력 값은 단순히 초기 값을 준 것이기 때문에 바꾸시면 안 됩니다.
이제 아래의 GPIO 설정과 spi 설정도 다른 포스팅 글에서 다 설명드렸으니 넘어가겠습니다 !
이제 read_spi_adc 함수에 대해서 설명드리겠습니다.
사실 이 함수도 ADC모듈을 다룰 때 설명드렸습니다.
이 함수는 ADC 값을 가져오는 함수라고 이해하시면 되겠습니다.
여기서는 변수를 adcChannel을 사용했습니다.
그다음 함수인 map 함수입니다 !
map 함수는 센서 값을 백분율로 변환하기 위한 함수입니다.
이제 try와 finally구문으로 넘어가겠습니다 !
우선 adcChannel을 0으로 초기값을 정해줍니다.
그러고 나서 while문으로 워터 펌프를 돌릴지 말지를 정하면 됩니다.
아래 hum변수에 대해서 좀 더 설명드리겠습니다.
우선 가져온 데이터를 % 단위로 변환을 해주며 습도가 높을수록 낮은 값을 반환합니다.
따라서 100에서 빼주어 습도가 높을수록 백분율이 높아지도록 계산해줍니다.
이제 if문에 대해서 설명드리겠습니다.
만일 임계치보다 수분 값이 작을 경우 워터 펌프가 작동을 합니다.
하지만 else(임계치 <수분 값) 일 경우는 워터 펌프가 작동하지 않습니다.
이 과정을 0.5초 딜레이를 걸어줍니다.
마지막으로 finally 구문은 try 구문에서 빠져나왔을 경우 실행이 됩니다.
빠져나왔을 경우 GPIO가 클리어가 되며 spi는 닫히게 됩니다.
코딩에 대한 설명은 여기까지입니다 !
지금까지 토양 수분 센서를 이용하여 토양의 습도를 체크 후 워터펌프 작동 여부를 결정하는 부분까지 완료했습니다 !
하지만 워터 펌프가 돌아야 할 때 돌지 않았습니다...
아예 작동을 안 하는 것 같습니다.
혹시나 해서 워터펌프가 작동할 때 print "yes"를 해보니 yes라는 값은 잘 출력이 되고 있습니다.
이 뜻은 워터펌프와 연결이 잘 안 되었거나 워터펌프(모터 드라이버)에 대한 코딩 오류인 것 같습니다.
이 문제에 대해서는 내일 찾아보도록 하겠습니다 !
다음 단계는 LCD와 RGB LED를 이용하여 화면과 불빛으로 화분 상태를 알려줍니다.
오늘의 포스팅 글은 여기까지입니다 !
제가 생각했던 시간들보다는 조금씩 밀렸습니다.
하지만 그래도 얼추는 하고 갈 수 있다는 점에서 좋습니다.
물론 100% 완벽하게 성공시키지 못하여 조금 아쉽긴 합니다..
하지만 아쉬움은 내일로 넘기도록 하겠습니다 ㅎㅎ
그럼 다음 글에서 뵙겠습니다 !
이상 전자과_공대생이었습니다 ~ ! (⌐■_■)
감사합니다 !
라즈베리파이 미니 프로젝트 8탄 ! [오류 잡기 성공 ! + 새로운 기능, 오류] (0) | 2021.01.22 |
---|---|
라즈베리파이 미니 프로젝트 7탄 ! [Mini Project -ing !] (0) | 2021.01.22 |
라즈베리파이 미니 프로젝트 5탄 ! [부품 공부 - 토양 수분 센서 / 모터 드라이버 / LCD] (0) | 2021.01.21 |
라즈베리파이 미니 프로젝트 4탄 ! [부품 공부 - ADC 모듈] (0) | 2021.01.21 |
라즈베리파이 미니 프로젝트 3탄 ! [프로젝트 주제 확정 !] (0) | 2021.01.21 |