외주로 열전사 프린터를 갖고 서버통신으로 입력에 따른 이미지를 출력하도록 하는 프로젝트를 했었는데, 그 과정에서 라즈베리파이 - 프린터를 갖고 제작한 것에 대한 리뷰가 많지 않아서 이슈가 있던 것들을 위주로 따로 정리를 했습니다. 프로젝트에 대한 설명을 자세히 하기는 어렵지만 Android - Flask (REST API - Raspberry pi) + Printer 형태로 되어 있습니다.
준비물
Raspberry pi Sets
9V 2A Adapter with plug (중요!! - 꼭 9V 2A 인 것을 확인하세요)
* 설명에는 5V 2A라고 되어있지만 이미지 등을 깔끔하게 출력하기 위해서는 9V 2A 어댑터를 사용하는 것을 추천드립니다!!
구현
1) Raspberry pi Setting
sudo apt-get update
sudo apt-get upgrade
sudo raspi-config (Serial 권한 허용 [첫 번째 꺼는 No, 두번째 꺼는 Yes로])
pip3 install flask-restful
sudo apt-get install git cups wiringpi build-essential libcups2-dev libcupsimage2-dev python-serial python-pil python-unidecode
git clone https://github.com/adafruit/zj-58
cd zj-58
make
sudo ./install
cd
git clone https://github.com/galacticfan/Python-Thermal-Printer/
이후에 /dev/serial0, 19200로 접근하면 깨지는 글자 없이 출력이 될것입니다. 한글 출력의 경우 추가 라이브러리 등 복잡한 방법이 필요하여 이미지로 대체하였습니다.
2) Printer Setting
프린터 연결의 경우 아래 포스트를 참고하면 되는데, 해당 제품의 경우 순서에만 맞게 라즈베리파이에 꽂고 Power 선 부분만 어댑터에 맞게 잘라서 사용하면 된다.
medium.com/geckoboard-under-the-hood/building-a-slack-printer-for-remote-retrospectives-8de0282e5791
프린터 코딩의 경우 (github.com/galacticfan/Python-Thermal-Printer/) 이 깃에서 제공하는 함수들을 사용하면 쉽게 사용할 수 있고, 추가로 필요한 부분의 경우 OS 함수로 명령어를 직접 보내줄수도 있습니다.
* Issue
- 알 수 없는 문자가 계속 나오거나 아예 아무것도 나오지 않는 경우 확인을 해야할 것이 우선 전원이 제대로 들어가고 있는지 (대다수의 경우), 이미지가 깨지지 않았는지 (기본 예시를 출력해볼 것!)를 확인해보는 것이 좋습니다.
- 가끔 Text 앞에 J 같은 글자가 나오는 경우가 있는데, 이는 Adafruit_Thermal.py에서 printBreakTime 변수를 바꿔주면 다른 값으로 찍히게 되는데 이부분을 만지면 해결이 될 수도 있습니다.