저번에는 라즈베리파이에 옥토프린터를 설치했었다. 헌데 라즈베리는 gpio가 비글본보다 적고 pwm이나 adc를 사용하려면 외부에 별도 IC나 회로가 필요했지만 adc와 pwm이 각각 8개씩 존재하는 비글본은 그 자체만으로도 내가 원하는 시스템을 구성하기에 충분했다. (adc는 약간의 외부 회로가 필요할 것 같다.) 헌데 단점은 언제나 그렇듯 비글본은 해외에서도 라즈베리파이에 비해 사용자가 부족하여 자료나 정보를 찾기가 쉽지가 않다. 이번에도 고난이 예상되지만 안되는 것을 되게 만들었을 때 느껴지는 희열은 엔지니어만의 특권이 아닌가 싶다. 고로 험난한 길을 간다.
∗필자는 집에 굴러다니던 비글본이 있어서 비글본을 이용해보려 한다. 가격만 보자면 비글본의 그렇게 저렴하진 않으므로 라즈베리가 있다면 추가로 IC나 회로를 꾸미는게 더 저렴할지도 모르겠다.
당장 내가 원하는 시스템은 3D 프린터 이곳 저곳에 온도 센서를 이용하여 온도를 측정 및 저장하여 그래프로 보여주고, 온도에 따라 팬의 세기를 조절하는 것이다. TMC2100을 사용하다보니 드라이브나 모터에서 발열이 상당한데 지금은 모터에 방열판과 팬을 이용해서 24v로 돌리고 있고 최대 36°C까지 측정이 되었다. 근데 팬 소음이 상당하다..
팬이 온도에 따라 자동제어 될 때 그 효율이 얼마나 올라 갈지, 소음은 얼마나 줄어들지 봐야겠다.
그럼 설치를 시작해보자.
준비 : 리눅스가 설치된 비글본(필자는 https://elinux.org/Beagleboard:BeagleBoneBlack_Debian 에서 strech snapshot console 17-11-05에 릴리즈된 이미지를 받아서 emmc에 설치함. kernel ver: 4.9.59-ti-r74)
참조 사이트 : https://github.com/foosel/OctoPrint/wiki/Setup-BeagleBone-Black-Rev-C-(Jessie)
기본적으로 위의 참조사이트를 참조하며 진행하였다.
시작 전에 필요한 패키지를 설치하자.
sudo apt-get update sudo apt-get install python-pip python-dev python-setuptools python-virtualenv git libyaml-dev build-essential cpufrequtils usbutils
- cpufrequtils 를 사용하여 비글본의 cpu 성능을 최대치로 설정한다.cpufreq-info 를 이용하여 현재 cpu의 속도를 보자.
pi@beaglebone:~$ cpufreq-info cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009 Report errors and bugs to cpufreq@vger.kernel.org, please. analyzing CPU 0: driver: cpufreq-dt CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: 300 us. hardware limits: 300 MHz - 1000 MHz available frequency steps: 300 MHz, 600 MHz, 720 MHz, 800 MHz, 1000 MHz available cpufreq governors: conservative, ondemand, userspace, powersave, performance, schedutil current policy: frequency should be within 300 MHz and 1000 MHz. The governor "performance" may decide which speed to use within this range. current CPU frequency is 1000 MHz. cpufreq stats: 300 MHz:0.00%, 600 MHz:0.00%, 720 MHz:0.00%, 800 MHz:0.00%, 1000 MHz:100.00%
필자는 이미 최고 성능으로 셋팅을하여 속도가 1000 MHz로 보여진다.
보통 ondemand로 셋팅이 되어있어서 속도가 300 MHz로 되어있을 것이다.sudo nano /etc/init.d/cpufrequtils
를 하여 cpufrequtils를 살펴보면 GOVERNOR=”ondemand” 라고 되어있는데 ondemand를 performance로 수정하고 저장한다. (저장은 ctrl + o, 종료는 ctrl + x)
재부팅 후 cpufreq-info를 다시 해보면 바뀐 것을 확인할 수 있다. - pi 유저 추가하고 재부팅
cd~ sudo adduser pi sudo adduser pi tty sudo adduser pi sudo sudo reboot -h now
- 옥토프린트 설치에 필요한 파일을 받는다.
git clone https://github.com/foosel/OctoPrint.git OctoPrint
- 옥토프린트 설치
cd OctoPrint sudo python setup.py install
설치 시간이 어느정도 걸린다.
- 설치가 끝나면 테스트를 해본다.
./run
을 실행하면 옥토프린트 서버가 시작되는 것을 볼 수 있다.
http://ip주소:5000으로 접속하면 옥토프린트 화면을 볼 수 있다.
ctrl+c를 눌러 서버를 중지한다. - 옥토프린터 시작시 자동실행 되게 하기.
cd ~ sudo nano OctoPrint/scripts/octoprint.default #DAEMON=/home/pi/OctoPrint/venv/bin/octoprint 에서 #을 지우고 DAEMON=/home/pi/OctoPrint/venv/bin/octoprint 로 수정후 저장후 나온다. sudo cp OctoPrint/scripts/octoprint.init /etc/init.d/octoprint sudo chmod +x /etc/init.d/octoprint sudo cp OctoPrint/scripts/octoprint.default /etc/default/octoprint sudo update-rc.d octoprint defaults
- 자동실행 테스트
sudo service octoprint start
start 대신 reboot을 넣어봐도 된다.
필자는 위에서 DAEMON 앞에 #을 그대로 두고 reboot을 했을 때 시작할 수 없다는 메시지가 나왔었다.
재부팅을 하면 옥토프린트 서버가 자동실행되서 웹상에서 바로 접속이 가능하다.
추가 사항
위에서 #제거를 안하는 바람에 다음을 실행했었다.
cd OctoPrint virtualenv venv ./venv/bin/pip install pip --upgrade ./venv/bin/python setup.py install
시리얼 포트 접속이 안 된다면
sudo usermod -a -G tty pi sudo usermod -a -G dialout pi
여기까지 비글본과 ramps를 연결하고 옥토프린트에서 연결까지 되는 것을 확인하였다.
다음 포스트는 GPIO or PWM 제어 or ADC값읽기 중 한가지 주제로 포스팅을 하겠습니다.