광범위한 I/O 센서와 강력한 컴퓨팅 리소스가 핵심인 IIoT 설계에 이상적인 UDOO Neo

작성자: 유럽 편집자

DigiKey 유럽 편집자 제공

사물 인터넷(IoT)은 센서 및 액추에이터와 같은 광범위한 에지 노드 장치를 위해 설계된 콤팩트한 헤드리스 마이크로 컨트롤러 기판의 빠른 성장에 크게 기여하고 있습니다. 소량의 I/O와 무선 마이크로 컨트롤러가 장착되며 전력 소비량이 매우 낮은 이러한 기판 및 모듈은 클라우드 기반 분석 서비스에 데이터를 제공하는 장치군을 구성합니다. 이러한 응용 제품의 대다수는 더 많은 컴퓨팅 리소스, 오퍼레이터 인터페이스, 연결 옵션을 요구합니다.

게이트웨이 기능을 수행하거나, 여러 센서에서 데이터를 수집하거나, 로컬 제어를 시작하거나, 이러한 기능의 조합을 수행할 때에는 더 많은 기능과 리소스를 가진 단일 기판 컴퓨터가 필요합니다. 개별 장비의 다양한 요구 사항을 모두 충족할 수 있는 내장형 장치를 제작할 방법을 모색하는 산업용 장비 제조업체 대다수는 메인 내장형 기판 및 필요에 따라 주변 장치 애드온을 사용하는 플랫폼 방식을 채택합니다. 소량에서 중간 정도 양의 경우, 시중에서 최근 인기가 증가하고 있는 오픈 소스 단일 기판 컴퓨터(SBC) 중 하나를 선택하는 편이 훨씬 이득입니다. NRE 비용, 무선 규정 인증 및 소프트웨어 사용이 크게 줄어들 뿐만 아니라 개발 팀이 통합 가능한 무수한 장치에 대한 평가, 설계, 시제품 제작을 수행할 필요 없이 설계의 응용 측면을 빠르게 시작할 수 있기 때문입니다.

IoT가 엔지니어링 팀에 미치는 주목할 만한 영향 중 하나는 새 프로젝트에 접근하는 방식의 근본적인 변화입니다. 팀이 내장형 기판을 처음부터 설계할 능력을 충분히 갖추고 있을 수 있지만, 팀의 최종적인 목표는 촉박한 일정 내에 실시 설계를 제공하는 것입니다. 자체 기판을 만들기 전에 SBC 플랫폼을 사용하여 설계를 빠르게 추적하려는 경우 모든 기계적 파일, 레이아웃 및 BOM에 대한 액세스가 필요합니다.

UDOO Neo

그림 1: UDOO Neo

UDOO Neo는 개발자가 고려할 수 있는 SBC의 한 가지 예입니다. UDOO Neo는 Basic, Extended, Full의 세 버전으로 제공되며, 모두 Android 및 Linux용 Freescale i.MX6SoloX 응용 프로세서를 기반으로 하는 포괄적인 저가형 시스템입니다. 이 기사에서는 Neo Full을 중심으로 살펴보겠습니다. 이 Freescale 장치는 1GHz에서 실행되는 강력한 단일 코어 ARM® Cortex®-A9 프로세서 및 최대 200MHz에서 실행될 수 있는 ARM Cortex-M4 I/O 실시간 코프로세서가 단일 칩에 내장되어 있습니다. GPIO, UART, I2C 등과 같은 여러 하드웨어 구현 기능을 공유 및 사용할 수 있으며 고속 AXI 버스를 통해 서로 연결됩니다. 개발자는 편집 가능한 먹싱(muxing)을 통해 코어가 사용하는 주변 장치 기능의 구성을 지정할 수 있습니다.

UDOO Neo Full은 1GB의 플래시를 내장하며 폭넓은 GPIO, 직렬 인터페이스, 완전한 Wi-Fi 802.11 b/g/n 및 BLE 연결을 제공합니다. 내장형 9축 동작 센서, 3축 가속도계, 자력계와 자이로스코프, LVDS, HDMI, 카메라 및 오디오 인터페이스가 장착된 이 기판은 다양한 산업용 설계에 적합합니다.

운영 체제 관점에서 볼 때 Cortex-A9 코어는 Android Lollipop 또는 UDOObuntu(14.04 LTS)를 실행할 수 있습니다. Cortex-M4는 전체 Arduino 실드 헤더를 포함한 전체 스택 Arduino 환경에 액세스할 수 있으므로 매우 유연한 플랫폼이 됩니다.

UDOO Neo Full 기판의 주요 특징

그림 2: UDOO Neo Full 기판의 주요 특징

그림 2에서 빨간색으로 표시된 외부 핀은 기본적으로 GPIO 모드에서 Cortex-A9에 지정됩니다. 따라서 이러한 핀은 파일 시스템(Linux, Android)에서 직접 제어할 수 있습니다. 녹색으로 표시된 내부 핀은 Arduino UNO 핀 출력과 동일한 크기로 Cortex-M4에 의해 지정 및 제어됩니다.

기판 전력은 하나의 6VDC ~ 15VDC 공급 장치에서 제공되며 모든 GPIO는 3.3VDC입니다. 그림 3의 회로도 제품 구성도에서 i.MX 응용 프로세서 주변의 주요 부품 및 인터페이스를 볼 수 있습니다.

Neo 제품군은 헤드리스 컴퓨팅 플랫폼으로 사용되거나, LVDS 터치 패널이나 HDMI를 추가하여 사용자 제어에 적합한 플랫폼으로 사용됩니다. 의도한 응용 제품에 동작 센서 또는 많은 메모리가 필요하지 않은 경우에는 Neo의 Basic 또는 Extended 버전을 선택하여 기판 비용을 절감할 수 있습니다. 여러 원격 응용 제품의 경우 헤드리스 구성이 적합하며 SSH 원격 터미널 또는 유사한 방식을 통해 통신이 이루어집니다.

UDOO Neo의 i.MX6 제품 구성도

그림 3: UDOO Neo의 i.MX6 제품 구성도

UDOO Neo는 그 어느 때보다 쉽게 시작할 수 있습니다. Wiki 스타일 사이트에서 보다 포괄적인 구성 및 코드 샘플과 함께, 기판을 실행하는 데 필요한 모든 정보를 확인할 수 있습니다. 이 사이트에서는 필요한 경우 전체 기계적 레이아웃 파일 및 BOM 목록도 제공합니다.

기판은 운영 체제가 설치되지 않은 상태로 제공됩니다. Linux 또는 Android 중 무엇을 선택하든 용량이 8GB 이상인 microSD 카드에 액세스할 수 있어야 합니다. Neo의 설명서 사이트에서 선택한 운영 체제를 PC 또는 랩톱에 다운로드하고 압축을 풉니다. 그런 다음 카드 소켓이나 USB 어댑터에 microSD 카드를 삽입해야 합니다. 컴퓨터의 명령줄에 액세스하고(자세한 설명을 보려면 여기를 클릭) 지침에 따라 카드 및 모든 파티션을 마운트 해제한 다음 운영 체제 이미지를 전송합니다. 완료 후에는 카드를 동기화하거나 꺼내어 이미지 쓰기를 적절하게 닫아야 합니다.

이제 Neo에 microSD 카드를 삽입하고 마우스와 키보드(일반적으로 USB), HDMI 모니터(초기에 정상 작동 여부를 확인하기 위해 권장됨)를 연결한 다음 전원을 켭니다. 기판의 녹색 및 노란색 LED를 통해 동작 표시가 잠깐 나타나며, Linux를 선택한 경우에는 UDOO Ubuntu 데스크톱 이전에 Tux(Linux Penguin)가 화면에 나타나야 합니다. 이 익숙한 데스크톱을 사용하여 Linux의 모든 기능 및 유틸리티에 액세스할 수 있습니다. 또한 Neo 구성 Arduino IDE가 Linux 배포판에 사전 로드되고 데스크톱에서 사용할 수 있도록 준비됩니다. 다음 단계에서는 Neo의 웹 기반 제어 패널에 연결합니다. 이를 수행하는 방법은 다양합니다. Neo의 브라우저로 udooneo.local 웹 서버에 연결하거나 기판 자체의 IP 주소(알고 있는 경우)를 지정하는 방법도 있습니다. 그림 4를 참조하십시오.

UDOO Neo 웹 제어 패널

그림 4: UDOO Neo 웹 제어 패널

이 제어 패널은 Neo 내부에서 진행 중인 상황을 효과적으로 보여 줍니다. 유선 및 무선 연결 상태 정보, 센서 및 요약 기판 정보 이외에도 무선 액세스 포인트를 설정 및 연결하고, 국가별 설정을 지정하고, 디스플레이 출력을 변경하는 구성 옵션도 제공합니다. 가속도계, 자이로스코프 및 자력계의 축 및 계수 데이터도 제공되며 기판을 천천히 움직여서 작동을 테스트할 수 있습니다.

샘플 Arduino 스케치를 테스트하고 일부 간단한 스케치를 작성하는 기능도 웹 제어 패널에서 제공됩니다. 그림 5를 참조하십시오. Arduino UNO와 같은 기판에 익숙한 사용자는 그림 5의 샘플 애플리케이션에서 핀 13을 토글하는 간단한 ‘점멸’ 예제를 확인해 볼 수 있습니다. Neo의 빨간색 LED가 이 핀에 연결되므로 이 스케치를 업로드하면 이 LED가 깜박입니다. 프로그래밍 애플리케이션 중 Ardublocky 애플리케이션이 제공되며 이를 통해 그래픽 형식의 상호 연결된 논리 블록 방식으로 Arduino 스케치를 만들 수 있습니다.

Arduino 웹 IDE 및 스케치 샘플

그림 5: Arduino 웹 IDE 및 스케치 샘플

앞에서 말한 바와 같이, Neo에는 두 세트의 GPIO가 장착됩니다. Arduino 스케치에서 액세스 가능하면 내부(가장 안쪽 헤더 세트)라고 하고 Linux 내에서 액세스 가능하면 외부라고 합니다. 모두 입력 구성에서 기본적으로 설정되며, 입력 또는 출력으로 구성할 수 있고 필요에 따라 코어 인터럽트를 생성할 수 있습니다. MPU는 핀 먹싱(Pin muxing)을 통해 이러한 외부 핀에 보다 특화된 작업을 지정할 수 있습니다.

Linux에서 액세스 가능한 GPIO

그림 6: Linux에서 액세스 가능한 GPIO. 전체 크기 이미지를 보려면 여기를 클릭하십시오.

GPIO 핀은 다음과 같은 간단한 명령을 사용하여 명령줄에서 제어할 수 있습니다.

echo out > /gpio/pin19/direction - 해당 핀을 출력 핀으로 설정

echo in > /gpio/pin19/direction - 해당 핀을 입력 핀으로 설정

출력으로 지정된 핀은 echo 0 > /gpio/pin19/value를 사용하여 낮은 제로 전압으로 설정하거나,

echo 1 > /gpio/pin19/value를 사용하여 높은 +3.3VDC로 설정할 수 있습니다.

입력 핀 값은 cat /gpio/pin19/value를 사용하여 읽을 수 있습니다.

UDOObuntu Linux에 사전 설치된 udoo-gpio-export 패키지는 /sys/class/gpio 디렉터리에서 링크를 만들고 모든 GPIO를 입력으로 내보내는 기능을 합니다. 이와 같은 고급 요구 사항에 대한 자세한 내용은 UDOO 설명서에서 확인할 수 있습니다.

Cortex-A9와 Cortex-M4 코어 사이의 통신은 공유 메모리를 사용하여 데이터를 교환하는 양방향 가상화 직렬 핀을 통해 이루어집니다. 이 데이터는 /dev/ttyMMC를 사용하여 Linux 내에서 읽거나(예: minicom –D /ttyMCC) Serial0 개체를 사용하여 Arduino 스케치 내에서 읽을 수 있습니다.

UDOO Neo Full의 기판에는 세 개의 3동작 센서가 있습니다. 14비트 가속도계와 16비트 자력계가 동일 패키지(Freescale FXOS8700CQ 장치) 내에 있습니다. 가속도계는 동적으로 선택 가능한 +/-2 g, +/- 4 g, +/- 8g의 세 가지 전체 범위를 제공합니다.

3축 자이로스코프는 Freescale FXAS21002C입니다.

이러한 센서는 I2C 버스에 연결되며(그림 7 참조) 양 코어에서 액세스할 수 있습니다.

센서 및 장치 구성을 보여 주는 I2C 버스

그림 7: 센서 및 장치 구성을 보여 주는 I2C 버스

명령줄에서

echo 1 > /sensors/accelerometer/enable 또는 echo 1 > /sensors/gyroscope/enable을 사용하여 센서를 활성화할 수 있으며 cat /sensors/magnetometer/data와 같은 명령으로 1개 값을 읽을 수 있습니다.

내장형 애플리케이션은 적절한 I2C 레지스터를 통해 값을 직접 읽을 수 있습니다. 가속도계와 자력계는 주소 0x1E 및 gyroscope 0x20을 사용합니다.

Python과 같은 더 높은 레벨의 언어를 통해서도 센서에 액세스할 수 있습니다. 새 기판을 사용하는 초기 단계에서는 기판 설계의 오픈 소스 및 커뮤니티 특성에 대해 감사해야 합니다. Cortex-A9에서 실행되는 Python 애플리케이션 내에서 센서 인터페이스 코드를 제공하는 Neo.GPIO Python 라이브러리(GitHub에서 사용 가능)가 적절한 예입니다. Python은 이미 UDOObuntu 배포판에 포함되어 있으므로 Neo에서 개발할 때 손쉽게 선택할 수 있습니다. 사용하기 전에 GitHub에서 .ZIP 파일을 다운로드한 다음 Python 애플리케이션을 만들 디렉터리에 압축을 풉니다. .ZIP 파일에는 몇 가지 코드 예제도 포함되어 있으며 그림 8에서 단순화된 버전을 확인할 수 있습니다.

자이로스코프를 읽고 데이터를 표시하는 Python 프로그램

그림 8: 자이로스코프를 읽고 데이터를 표시하는 Python 프로그램

그림 8에 표시된 Python 코드를 명령줄에서 실행하려면 루트로 실행해야 합니다. 위의 방법대로 UDOO Neo를 사용하는 경우에는 사용자 계정이 udooer이므로 GyroExample.py 프로그램을 다음과 같은 방법으로 포함해야 합니다. 그림 9를 참조하십시오.

echo udooer | sudo –S su –c ‘python GyroExample.py’

실행 중인 GyroExample.py 코드의 화면 캡처

그림 9: 실행 중인 GyroExample.py 코드의 화면 캡처

UDOO Neo는 산업용 IoT 애플리케이션을 위한 이상적인 개발 플랫폼 역할을 하는 포괄적이고 강력한 SBC를 제공합니다. Neo를 사용하면 초기 애플리케이션을 매우 빠르게 실행하고 제품을 시간 및 비용의 측면에서 가능한 가장 효율적인 방식으로 출시할 수 있습니다.

DigiKey logo

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.

작성자 정보

유럽 편집자

게시자 정보

DigiKey 유럽 편집자