회사에 있는 좋은 프로그램으로 라즈베리 파이4를 구했다. 나는 시간만 썼다. 11월 말까지 진행할 계획인데, 시간이 지날수록 그 프로그램 목적 달성하기 어려워 보인다. 나는 얻은 바 있어 거래에 만족한다. 나중에 보고서를 작성하면 된다.
저가형 모터를 돌리려 라즈베리 파이를 사용함은 너무 비싸다. 단순 독립된 디바이스와 달리 IoT 디바이스로 라즈베리 만큼 좋은 장차가 없다. 아무리 싸게 만들어도 같은 기능을 가진 하드웨어를 라즈베리 파이보다 싸게 만들 수 없어 보인다. 맞춤형 하드웨어를 설계하는 순간 수 백만원 깨질 듯 하다. 이런 좋은 사양 디바이스를 그냥 쓰기 아까워 docker를 설치하여 mysql, ptyhon 기능을 추가했다.
특히 요즘 뜨는 python이 데이터를 최적화하여 처리한다. 배우기도 쉽다. 모듈도 다양하여 남이 작성하여 공개한 인터넷 코드를 보면 금방 적용할 수 있다. python을 사용하지 않고 gnu c로 같은 기능을 만든다면 손해가 엄청나다.
mysql 역시 데이터를 잘 처리한다. 파일에 데이터를 저장하나 조회하기 어렵고 python과 연계가 어렵다. mysql이 기본 라즈베리에 파이 OS에 설치되지 않아, docker로 금방 설치했다.
PLC가 주는 데이터를 socket으로 받았고, 메인 프로세스가 인터넷에서 받은 데이터와 비교하여 모터를 특정 각도로 움직이기로 했다. 중간에 IPC를 적용하여 억지로 넣은 코드도 좀 있다.
다음 그림과 같이 구성했다.
gnu c에서 python을 사용하려면 fork로 child process를 만들고 exec로 대체해야 한다. 잘못 사용하면 while(1){fork();} 이런 식으로 전개되는 수가 있다. 이 코드를 실행하는 순간 ssh가 먹통되고 아무 작업을 할 수 없다.