MFC 내 IoT디바이스에 사용되는 마이크로프로세스 개발언어별 GPIO 설정 방법

(The method of GPIO setting by programming languages used in IoT devices in MFC)

권 오 언†, 이 수 성†, 최 준 형†*

†(재)경북IT융합산업기술원

(Oeon Kwon, Soosung, Lee, Jun-Hyeong Choi)

(†Gyeongbuk Institute of IT Convergence Indestry Technology (GITC))

Abstract : Recently, the semiconductor crisis causes problems, which are the supply and development of MCU for building MFC. Many developers depend on their development environment and programming languages for MCU development. However, as a mentioned semiconductor supply problem, developers, who depend on the specific development environment, have difficulty developing the same operations as their environment. Therefore, in this paper, we proposed a method of MCU development that does not depend on a specific development environment. We confirmed that the same MCU operations are possible with various programming languages in our experiment environment.

Keywords : IoT, Micro-fulfillment center, MCU, GPIO

I. 서 론

* 교신저자(Corresponding Author)

권오언, 이수성, 최준형 : 경북IT융합산업기술원

※ 본 연구는 중소벤처기업부의 규제자유특구혁신사업육성 지원에 의한 연구임 [P0020333]

MFC (Micro-Fulfillment Centers)의 발전으로 인해 물류업계는 크게 성장하였다. MFC는 도심형 소형물류센터이며 지리적 장점과 물류 이행의 결합으로 풀필먼트 서비스가 가능해졌다. 풀필먼트(Fulfillment)란 물류 전문업체가 상품의 입고, 포장, 배송 등 판매자를 대신해 주문한 제품이 물류창고를 거쳐 고객에게 배달하기까지의 전 과정을 일괄적으로 처리하는 것을 말한다. 최근 무인운송로봇, 포장자동화 시스템 등 첨단 물류기술을 도입하고 있으며, AI로봇팔, 지능형 스캐너 ITS, 자동분류기 휠소터 등 MFC 내에 활용되어 지고 있는 추세이다.

최적화된 종합 물류 서비스를 제공하기 위하여 각각의 운영 프로세스 상에 물류 IT가 활용되고 있으며[1] MFC 내 첨단장비들의 도입과 더불어 많은 IoT디바이스를 통해 온습도, 풍향, 공기질등 측정에 활용되어지고 있다. 하지만 최근 반도체 대란으로 인한 MCU(MicroController Unit)의 수급문제가 발생하여 IoT 디바이스 개발 및 납품 등 많은 차질이 발생하였다. 그 중 특정 개발언어에 장기간 숙달된 개발자들이 해당언어에 종속된 MCU 개발 문제를 하나로 들 수 있다. 특정 개발 언어에 숙달된 개발자가 비슷한 사양의 대체 MCU를 활용하여 개발 시, 개발 시간 증대 및 실제 구동 기능 문제 등으로 이어져 IoT 디바이스 신뢰성을 낮출 수 있다. 따라서, 본 논문에서는 MFC 내 활용되는 IoT디바이스에 동일 MCU를 활용하여 여러 개발언어를 통해 동일 기능 구현할 수 있도록 설정 방법을 제시한다.

이하, 본 논문의 구성은 다음과 같다. 2장에서는 간략한 MCU 소개 3장에서는 GPIO 명칭 및 개발언어별 제어 방법을 서술하며, 마지막으로 4장에서 결론을 맺는다.

Ⅱ. MCU 소개

그림 3. 개발언어별 소스코드 예시

Fig 3. The examples of source code by programming languages

라즈베리파이 재단에서 만든 초소형/초저가형 컴퓨터라 불리는 라즈베리파이의 GPIO(General Purpose Input Output)를 제어하는 MCU 칩 중 하나인 RP2024를 활용한다[2]. RP2024는 라즈베리파이피코에서 사용할 수 있으며 그림 1의 GPIO핀을 제공한다. 개발자들은 GPIO를 활용하여 MFC 내에 활용할 수 있는 센서들을 부착하여 IoT디바이스 및 IoT플랫폼을 구현할 수 있다.

그림 1. GPIO 핀

Fig 1. GPIO Pins

Ⅲ. GPIO 명칭 및 개발언어별 제어방법

RP2024 MCU는 개발언어별 라이브러리를 통해 동일 GPIO 핀이더라도 다르게 사용된다. 아래 그림 2를 통해 GPIO 핀 이름 및 번호가 다르게 사용됨을 알 수 있다.

C언어의 경우 WiringPi 핀, Python인 경우 Physical 핀 또는 BCM 핀을 사용하며 Java는 그림 2에서 보이는 Name의 핀 이름 및 번호를 사용한다. Python의 경우 라이브러리에 따라 Physical 핀 또는 BCM 핀이름을 사용한다.

그림 2. 개발언어별 GPIO 핀 명칭

Fig 2. The name of each GPIO Pin by programming languages

또한 동일 MCU로 동일 GPIO를 제어하지만 개발언어별 GPIO 라이브러리도 달리 사용된다. C언어는 WiringPi 라이브러리, Python은 GPIO Zero 또는 Rpi.GPIO 라이브러리, Java는 pi4j 라이브러리를 사용해야만 한다. 그림 3은 동일 GPIO 핀을 사용하여 개발언어별 100 밀리초 간격으로 LED 100번 온/오프 제어하는 소스코드이다.

IV. 결  론

최근, MFC에서 제품을 관리하기 위하여 IoT디바이스를 활용하고 있다. 하지만 IoT디바이스에 사용되는 MCU 수급 문제와 특정 종속된 개발언어 사용으로 개발시간 증대와 실제 구동기능에 문제가 발생할 수 있다. 이를 해결하기 위하여 본 논문에서는 동일MCU를 활용하여 특정언어에 MCU개발이 종속되지 않고 개발에 차질이 없도록 각 개발언어별 GPIO 핀 설정 및 구현방법을 소개하였다.

향후 본 연구는 동일MCU를 언어별 실제 구동 시간을 통해 조금 더 효율적인 개발언어를 측정 및 구현할 예정이다.

참 고 문 헌

[1] 정성용, 정기연. 스마트 물류 IT 기술 및 사례. 전자공학지, 2012.

[2] 이성진, 최철길, 최병윤. GPIO를 사용한 RaspberryPi 보드 제어. 한국정보통신학회, 2014.