Jetson Nano를 이용하여 영상 재 가공 및 송수신 기능을 가진 서버를 구현다. 그런데 테스트를 위해서 10시간쯤 돌리다가 방열판에 손을 대어보았는데... 상당히 온도가 올라간 것을 알수 있었다. 지금 날씨에서는 크게 무리가 없어보이지만 앞으로 여름이 다가오면... 살짝 데미지를 입을 수 있을 것 같아... FAN을 사용하기로 했다. 

     

      그래서 만들려고 하다가 이런것들은 다른분들이 이미 잘 만들어놨겠거니 생각하여 검색하니 대략 파이선으로 만든것과 CPP로 컨버팅한것 두개가 눈에 띈다. 필자는 파이선보다는 CPP쪽에 맘에들어 CPP소스를 통해서 테스트를 진행하려한다. 

     

    우선 동작 방법은 간단하다. 

     

      현재 나온 임베디드 시스템의 경우 디바이스트리와 커널을 통해 몇가지 설정만 해주면 /sys/class 하위에 접근할 수 있는 인터페이스가 제공된다. 예를들면 현재 시스템의 온도(별도의 온도센서가 없다면 코어온도)를 확인하려면 단순히 아래와 같이 입력하면 된다. 

     

    $ cat /sys/class/thermal/thermal_zone0/temp

    45000

     

    위와 같이 시스템온도가 약 45도 정도임을 확인할 수 있다. 물론, Ubuntu나 Debian에서 제공하는 위젯을 이용하면 시각적으로 확인도 가능하다. 

     

    그리고 fan의 경우 아직 확인은 하지 않았지만,

     

    $ ls -al /sys/devices/pwm-fan으로 접근할 수 있다. 

     

    예를들면 다음과 같다. echo 뒤의 숫자는 pwm의 값이다. 0인경우 OFF가 된다. 그리고 입력되는 숫자의 크기에 따라 pwm의 주기가 변경되며 이는 모터의 동작(속도)에 관여한다.

     

    $ echo 255 > /sys/devices/pwm-fan/target_pwm

     

     

     

    그리고 해당 pwm 값을 서렂ㅇ할 수 있는 파일에 특정한 값을 넣으므로서 FAN을 제어할 수 있다. PWM을 이용하는 이유는 FAN을 ON/OFF 형태로 제어하면 끄거나 켜거나 밖에 되지 않는데, FAN이 켜졌을 때 최대속도로 돌면 진동과 소음이 발생할 수 있다. 따라서 낮은 온도에서는 구동되지 않거나 천천히, 높은온도에 봉착하면 빠르게 돌려서 온도를 낮춘다음 FAN을 천천히 구동할 수 있도록 해야 소음에서 부터 그나마 벗어날 수 있게 된다. PWM은 전체 주기에서 사용자가 지정한 주기끼지를 이용하여 펄스를 만들어내므로 이러한 모터들의 속도를 제어할 수 있다. 

     

      어쨋거나, 개별로는 동작시키는게 어렵지 않다. 이제 이 두 기능을 묶어야 한다. 하나는 온도를 읽어오고, 나머지 하나는 특정온도가 되면 PWM값을 조정하여 FAN의 세기를 조정하게 해야한다. 간단한 방법으로는 스크립트를 만들어 백그라운드로 구동하는 방법이 있지만, 켜질 때마다 실행해야 하며, 잠시 멈추거나 종료하려면 스크립트를 강제 종료하여야 한다.  이러한 방법은 매우 번거롭다. 특히 깜빡하는 경우에 대 참사가 발생할 수 도 있다. 

     

      그래서 이러한 부분을 스크립트나, 파이선 또는 다양한 프로그래밍 랭귀지로 작성한다음, 서비스에 등록한다. 리눅스 개발자는 이를 흔희 데몬이라 부르는데, 이렇게 데몬으로 만든다음 systemd에 등록하면 systemctl 명령등을 이용하여 편리하게 제어가 가능하다. 

     

    아래와 같이 명령하여 제어가 가능하다. 

    $ systemctl start/stop {service 대상}

     

    필자가 찾은 버전은 cpp로 컨버팅한 버전으로 github에서 다운로드 받아 컴파일하고 설치할 수 있다. 

     

    직접만들어 사용하기 어렵다면 아래의 링크에서 다운로드 하여 시스템에 설치하여 주자. 

     

    필자도 직접 만들 필요가 있다고 판단되면 만들던지 하겠지만... 시간이....

     

    자료 위치는 아래와 같다. 

     

    https://github.com/hooperbill/fan-daemon

     

    GitHub - hooperbill/fan-daemon: Jetson Nano fan control daemon

    Jetson Nano fan control daemon. Contribute to hooperbill/fan-daemon development by creating an account on GitHub.

    github.com

     

    도움이 되었기를 바란다. 

     

    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기