ST 퀘스트 이벤트
Quest 7
[퀘스트7 과제] 온도 모니터링 및 제어 with 강우알람 작성자 : 디오마루

마지막 과제의 수행기록이 등록되지 않아 자유게시판에 올립니다.

 

과제7의 경우는 자유과제로 modbus 통신을 이용한 온도센서입력/강우센서입력/제어출력을 할수 있는

모듈과 통신을 하여 화면에 온도 모니터 및 제어 등의 상태를 나타내고 설정합니다.

 

아래의 사진으로 설명합니다.

 

 

위의 그림은 전체적인 구성도와 흐름도입니다,

 

 

 

 

위의 사진은 실제적인 구성을 한 부분입니다 ( modbus 모듈을 입수한다고 다소 지출을 많이 하였네요..)

제어 출력은 LED, 강우센서입력은 스위치로 대신합니다.

 

 

아래의 그림은 STM32MP1보드에 표시되는 부분의 설명입니다.

 

 

아래 그림은 온도 모니터링 부분의 시간축을 설정하는 부분입니다.

 

 

 

아래는 FAN / HEAT / 강우  제어 및 출력을 하는 부분입니다

 

위의 아이콘 이미지를 처음에 GIF로 그림이 움직이는 것으로 하였는데, ubuntu에서는 문제 없었는데, STM32MP1에 올려 실행하니

이미지를 로딩 할 수 없다고 하여 디버깅하다고 결국 PNG이미지로 대체하였습니다. (과제 제출 시간이 촉박하여)

 

 

모드버스(modbus)통신부분의   Modbus Master example ( https://doc.qt.io/qt-5/qtserialbus-modbus-master-example.html )을

참조하여 제어모듈과의 통신가능함을 확인하고, 시스템 제품 입수 및 구성하는데, 한주가 지나갔습니다.

기본적으로 모드버스 통신의 원리 및 예제프로그램의 이해하는데 상당한 시간을 보내었습니다.

모드버스 통신 프로토콜은   Modbus Specifications and Implementation Guides ( http://www.modbus.org/specs.php )에서

자료를 받아 스터디를 진행하였습니다.

 

온도 모니터링을 구현하기위해 알아보니 QCustomPlot  등이 존재하지만, 포팅에 문제가 있을것 같아 

결국 qt에서 제공하는 패키지로 구현하는데 시간이 많이 걸리더군요,

 

이번 기회의 과제로 난생 처음 리눅스, STM32MP1, Qt 등의 프로그래밍을 하여 보았는데, 너무나 보람된 나날이 되었습니다.

물론 힘든 날들의 연속과 거의 밤샘을 하는 수준으로 과제를 진행하였군요.

아무쪼록 이번 기회를 주신 e4ds와 st 관계자 분들에게 감사의 인사를 드립니다.

 

동영상을 올리니 권한없음을 나타내어 링크문자를 올립니다.

관련 동영상 : https://www.youtube.com/watch?v=RABKcOH5HT4

                  https://youtu.be/RABKcOH5HT4

 

modbus의 통신 주기는 500ms 로 설정되어 있어, 입력 및 출력은 통신주기에 의존하므로,

지연 입력 및 출력을 볼 수 있습니다. 이는 모드버스 통신주기에 의한 부분입니다

온도 및 관련 입출력은 빠른 응답이 필요하지 않는 부분이 옵티마이저는 하지 않았습니다.

또한 글자폰트의 사이즈를 Qt의 기본설정인 font.point 사이즈를 font.pixels 사이즈로 변경하니

PC화면의 글자 크기와 동일하게 보여 주었습니다. 다만 위 동영상의 시간축 설정은 폰트 사이즈 변경을

찾지 못하여 폰트 크기가 크게 표시되었습니다.

 

 

실행파일  : 첨부파일을 어떻게 추가하는가요??? 

               https://drive.google.com/file/d/1PbMFlTZI79gFKkJWXMM4iaVcQKxfkvaW/view?usp=sharing

               구글드라이브에 올립니다.

 

감사합니다.

 

 

추신) 다시 한번 더..........

        본 과제를 마무리 지을 수 있도록 질문에 도움주신 여러 챌린저분들께 감사의 인사를 드립니다.

        너무나도 많은 도움에 재차 감사합니다.

        또한 e4ds와 st 관계자 분들에게 감사의 인사를 드립니다