Electric Imp 플랫폼으로 IoT 제품 개발 가속

작성자: Jacob Beningo

DigiKey 북미 편집자 제공

인터넷 연결 제품을 설계하려면 많은 기술이 필요합니다. 개발자는 내장형 소프트웨어를 작성하고 회로 기판을 구성하는 방법을 알아야 하며 장치에 보안을 적용하고 네트워크에 연결하여 장치를 원격으로 업데이트 및 관리하는 방법을 이해해야 합니다.

단일 IoT 제품에 대한 전문성과 인프라를 구축하는 작업은 까다롭고 시간과 비용이 많이 소요될 수 있습니다. 개발팀은 비용 및 출시 시간 요구 사항을 충족하기 위해 개발을 가속화하고 일반적인 설계 주기에서 수행해야 할 작업을 최소화할 방법이 필요합니다.

이를 지원하는 다양한 IoT 플랫폼이 구체화되고 있지만 개발자가 신속하게 개발 작업을 시작하는 데 필요한 하드웨어 및 소프트웨어를 함께 제공하는 Electric Imp의 플랫폼이 특히 관심을 끌고 있습니다.

이 기사에서는 Electric Imp의 IoT 플랫폼을 소개하고 사용 방법에 대해 알아봅니다.

Electric Imp의 IoT 플랫폼 정의

Electric Imp 플랫폼은 개발자에게 IoT 장치를 연결하고 관리하는 완전한 솔루션을 제공하는 IoT 플랫폼입니다. 이 플랫폼에는 제품을 빠르게 현실화하는 데 필요한 모든 기본 요소가 포함되어 있습니다. 이러한 기본 요소는 다음과 같습니다.

  • 완전 통합형 하드웨어
  • 내장형 운영 체제
  • 드라이버
  • API
  • 클라우드 서비스
  • 코드 라이브러리
  • 보안 솔루션

개발을 시작하려면 자신의 센서 및 자체 하드웨어를 Electric Imp 무선 모듈에 연결합니다. 이 모듈에는 사용자 정의 소프트웨어뿐만 아니라 Imp Cloud에 대한 보안 연결을 관리하는 ImpOS도 포함됩니다(그림 1). 최종 사용자와 개발자 모두 BlinkUp이라고 하는 애플리케이션을 사용하여 모바일 장치를 통해 제품 또는 개발 플랫폼에 Wi-Fi 설정을 제공할 수 있습니다. Imp 하드웨어는 Wi-Fi 정보가 수신되면 Imp Cloud와 직접 안전하게 통신할 수 있으며 여기에서 인터넷에 연결할 수도 있습니다.

Electric Imp 플랫폼 이미지

그림 1: Electric Imp 플랫폼에는 클라우드에 IoT 장치를 빠르게 연결하기 위한 입증된 완전 통합형 하드웨어, 소프트웨어, OS, API, 클라우드 서비스 및 보안이 함께 제공됩니다. (이미지 출처: Electric Imp)

Electric Imp와 같은 플랫폼을 사용하면 개발자는 다음을 포함한 여러 장점을 누릴 수 있습니다.

  • 출시 시간 단축
  • 인터넷 연결이 아닌 회사의 핵심 전문 분야에 집중
  • 제품 가치 향상 및 차별화
  • 연결 인프라 및 전문성 구축 필요성 제거

Electric Imp 하드웨어

Electric Imp 하드웨어는 개발자에게 다음이 포함된 표준 하드웨어 집합을 제공합니다.

  • 802.11 b/g/n 또는 a/b/g/n Wi-Fi 트랜시버
  • 32비트 ARM® Cortex® 프로세서
  • 견고한 내장형 운영 체제와 고장 방지 펌웨어 업데이트
  • GPIO, PWM 및 Analog In과 같은 사용자 선택 가능 I/O
  • SPI, UART 및 I2C를 통한 통신

이 모듈은 Murata Electronics에서 제조되었습니다. 설계자가 누릴 수 있는 주된 차별화 특성은 내부 프로세서, Wi-Fi 연결 옵션 및 패키징입니다. 예를 들어 imp005(LBWA1UZ1GC-901)는 320MHz ARM Cortex-R4 기반 프로세서를 기반으로 하며 2.45GHz 및 5GHz 대역 모두에서 작동합니다. 반면 imp003(LBWA1ZV1CD-716)은 144MHz ARM Cortex-M4F 기반 프로세서를 기반으로 하며 2.45GHz 대역에서만 작동합니다. 두 패키지 모두 표면 실장 패키지입니다(그림 2).

Electric Imp imp005(왼쪽) 및 imp003(오른쪽) 이미지

그림 2: imp005(왼쪽) 및 imp003(오른쪽) 모듈은 Wi-Fi 모듈과 ARM Cortex 마이크로 컨트롤러를 통합하여 장치 실장 면적이 최소화됩니다. (이미지 출처: Murata Electronics)

표면 실장 패턴은 브레이크아웃 기판이 없으면 액세스가 쉽지 않습니다. imp003에는 개발자가 장치에 전원을 공급하기 위한 USB 인터페이스와 Electric Imp의 독창적인 BlinkUp 방법을 사용하여 모듈을 Wi-Fi 설정으로 프로그래밍하는 데 필요한 광 트랜지스터 및 기타 지원 부품이 포함된 간단한 브레이크아웃인 IMP003-BREAKOUT으로 구성되어 있습니다(그림 3).

Murata imp003 브레이크아웃 모듈 이미지

그림 3: imp003 브레이크아웃 모듈은 개발자가 최종 제품에 사용될 Electric Imp 하드웨어에 손쉽게 익숙해질 수 있도록 해주는 적은 핀 수의 개발 기판입니다. (이미지 출처: Murata Electronics)

imp005 모듈은 핀 수가 더 많을 뿐만 아니라 더 강력한 ARM Cortex-R4 프로세서를 사용하기 때문에 imp005 브레이크아웃 기판은 좀더 정교합니다(그림 4). imp005 브레이크아웃 기판에는 광 트랜지스터 이외에도 이더넷, 장치 전원 공급용 표준 USB 인터페이스 및 호스트 연결도 포함되어 있습니다.

Murata Electronics의 imp005 브레이크아웃 모듈 이미지

그림 4: imp005 브레이크아웃 모듈은 개발자에게 더 강력한 imp005에 대한 액세스를 제공합니다. imp005에는 USB 및 이더넷과 같은 고급 연결 옵션 이외에도 ARM Cortex-R4 마이크로 컨트롤러가 포함됩니다. (이미지 출처: Murata Electronics)

BlinkUp을 사용하여 Electric Imp 설정

모든 IoT 장치가 직면하는 한 가지 문제는 장치를 로컬 Wi-Fi 라우터 정보로 프로그래밍하는 방법입니다. Electric Imp는 광 트랜지스터를 사용하여 SSID 및 암호를 장치로 프로그래밍하는 독창적인 방법으로 이 문제를 해결했습니다.

플랫폼 및 최종 제품 사용자는 Electric Imp BlinkUp 애플리케이션을 모바일 장치로 다운로드한 다음 애플리케이션에 자신의 네트워크 정보를 입력합니다. 메시지가 나타나면 모바일 장치를 광 트랜지스터 위에 대고 누릅니다. 그러면 모바일 장치의 화면에 Electric Imp 하드웨어를 프로그래밍하는 명령 시퀀스가 깜박입니다(그림 5). 프로그래밍이 완료되면 개발을 시작할 수 있습니다.

경고! 네트워크 정보를 프로그래밍 하는 동안 모바일 장치 화면을 보지 마십시오. 심한 두통이나 간질 발작을 일으킬 수 있습니다.

Electric Imp BlinkUp 애플리케이션 이미지

그림 5: BlinkUp 애플리케이션을 사용하면 개발자나 사용자가 Wi-Fi SSID 및 암호를 입력하고 이 정보를 일련의 점멸을 통해 모바일 장치에서 광 트랜지스터로 전송하여 정보를 손쉽게 Electric Imp 모듈로 전송할 수 있습니다. 따라서 Bluetooth 또는 USB와 같은 추가적인 연결이 필요하지 않습니다. (이미지 출처: Electric Imp)

개발자가 Electric Imp 모듈을 인터넷에 연결하면 모듈은 Imp Cloud에 고유 ID를 등록합니다. 이 ID는 BlinkUp 애플리케이션에서도 찾을 수 있습니다. 고유 ID는 모듈을 식별하고 이를 온라인 개발 환경에 연결하는 데 사용됩니다. 또한 ID는 제품에 펌웨어 업데이트를 푸시하고 장치를 관리할 때도 사용됩니다. 모듈은 개발 환경에 로그인한 다음 모델로 알려져 있는 새 소프트웨어 애플리케이션을 생성하고 모델에 모듈 ID를 연결하여 클라우드에 연결할 수 있습니다(그림 6).

클라우드를 통해 모듈을 Electric Imp 소프트웨어 모델에 연결하는 이미지

그림 6: 사용 가능한 Imp 모듈 목록을 검토한 다음 기존 소프트웨어 모델 또는 새 모델을 장치에 할당하는 것만으로 클라우드를 통해 모듈을 소프트웨어에 연결합니다. (이미지 출처: Electric Imp)

모델이 생성되면 개발자는 온라인 개발 환경에 액세스할 수 있습니다. 이를 통해 Electric Imp 모듈용 소프트웨어를 작성하고 클라우드에서 실행되어 해당 모듈과 통신하는 코드도 작성할 수 있습니다. 서버 및 모듈 애플리케이션 코드는 Squirrel이라고 하는 스크립팅 언어로 작성됩니다. Squirrel의 표기법은 C 프로그래밍 언어와 유사하므로 대부분의 내장형 개발자가 자연스럽게 전환할 수 있습니다.

개발 환경은 세 가지 기본 단위로 나뉩니다. 첫 번째는 에이전트 코드라고 하는 서버측 코드입니다. 두 번째는 스크립트가 컴파일되고 Imp Cloud로 관리될 때 모듈에 배포할 수 있는 장치 코드입니다. 세 번째는 에이전트 및 장치 동작의 모니터링 및 디버깅에 사용할 수 있는 로그입니다.

Electric Imp 개발 환경 이미지

그림 7: Electric Imp 개발 환경은 개발자가 단일 보기에서 장치 펌웨어 및 클라우드 소프트웨어로 동시에 작업할 수 있는 완전 통합 환경입니다. (이미지 출처: Electric Imp)

LED 점멸 프로그램으로 'Hello World' 출력

Electric Imp 모듈에서는 매우 쉽게 애플리케이션을 실행할 수 있습니다. 개체를 높은 추상화 수준에서 하드웨어 기능에 할당할 수 있습니다. 이를 통해 Imp 모듈이 기본 마이크로 컨트롤러가 블랙박스처럼 작동합니다.

개발자가 수행할 첫 번째 단계는 단자를 통해 'Hello World'를 출력하거나 LED를 점멸하는 것입니다. LED 점멸에 필요한 코드를 살펴보겠습니다.

먼저 개발자는 개발 환경에 로그인하고 'Hello World' 또는 'Blinky' 모델을 만든 다음 이를 대상 모듈에 할당해야 합니다. 다른 애플리케이션과 마찬가지로 개발자는 핀과 변수를 할당 및 구성합니다. 이 경우 LED가 핀 5에 연결되었으면 개발자는 LED를 구성하고 상태 변수를 생성하는 코드를 작성할 수 있습니다(목록 1).

// Create a global variable called 'led' and assign the 'pin' object to it

led <- hardware.pin5;

 

// Configure 'led' to be a digital output with a starting value of digital 0 (low, 0V)

led.configure(DIGITAL_OUT, 0);

 

// Create a global variable to store current state of 'led‘

state <- 0;

목록 1: Electric Imp 모듈용 소프트웨어는 제공되는 라이브러리 및 Squirrel 스크립팅 언어를 사용하여 간단하게 작성할 수 있습니다. 이 스크립트는 LED를 구성하고 상태 변수를 생성합니다. (코드 출처: Electric Imp)

그런 다음 간단한 애플리케이션 함수를 작성하여 LED를 점멸할 수 있습니다(목록 2).

function blink()

{   

   // Invert the value of state:   

   // when state = 1, 1-1 = 0   

   // when state = 0, 1-0 = 1   

   state = 1 - state;     

 

   // Write current state to 'led' (which is pin9)   

   led.write(state);   

 

   // Schedule the imp to wakeup in 0.5 seconds and call blink() again        

   imp.wakeup(0.5, blink);

}

목록 2: LED 점멸 또는 하드웨어 제어는 라이브러리 집합을 통해 수행할 수 있습니다. 이를 통해 개발이 간소화되며 개발 시간이 크게 단축됩니다. 이 예에서는 간단한 함수를 사용하여 LED 리소스에 액세스하고 ImpOS를 통해 함수 실행을 500밀리초 동안 지연합니다(코드 출처: Electric Imp).

이렇게 간단합니다. LED를 구성하고 하드웨어에서 이를 점멸하는 데 필요한 Squirrel 코드는 이게 전부입니다. 10줄 남짓의 코드로 LED 프로그램을 작성할 수 있으며 개발자는 ARM 코어 레지스터를 전혀 몰라도 됩니다. 고수준 API에 간단하게 액세스할 수 있습니다.

기존 센서를 Electric Imp 모델에 통합

기존 센서 및 부품을 Electric Imp 플랫폼에 통합하는 작업 역시 비교적 간단합니다. 이 플랫폼을 사용하면 개발자는 #require 명령으로 이미 개발된 라이브러리를 포함시킬 수 있습니다. 이 명령은 C 프로그래밍 언어의 #include 명령과 유사합니다. 이미 개발되어 개발자가 곧바로 사용할 수 있는 몇 가지 유형의 라이브러리가 있습니다. 이러한 라이브러리에는 다음이 포함됩니다.

  • 웹 서비스
  • 유틸리티
  • 하드웨어 드라이버

제품 개발자는 계전기, 가속도계, 자력계 등의 장치를 Electric Imp 모듈에 인터페이스하고 이러한 부품에 맞게 이미 작성된 라이브러리를 사용하여 더 빠르게 설계할 수 있습니다. 라이브러리는 Electric Imp 개발 센터 웹 사이트에서 사용할 수 있습니다.

다양한 Electric Imp 라이브러리 이미지

그림 8: Electric Imp에는 개발 시작 시점부터 곧바로 사용할 수 있는 광범위한 라이브러리를 갖추고 있습니다. 이러한 라이브러리는 개발 시간을 단축하며 주요 하드웨어 장치 및 소프트웨어 서비스에 대한 액세스를 제공합니다. (이미지 출처: Electric Imp)

Electric Imp IoT 플랫폼 사용에 대한 유용한 정보

Electric Imp 솔루션과 같은 플랫폼을 사용할 때 개발팀이 고려해야 할 몇 가지 고려 사항이 있습니다. 먼저 Electric Imp 모듈에서는 두 가지 주요 부품인 Wi-Fi 무선 및 마이크로 컨트롤러가 하나의 패키지로 통합됩니다. 이러한 통합 덕분에 비용과 크기를 낮출 수 있습니다. 다음으로 개발자는 제품의 부품을 선정할 때 기존 하드웨어 및 드라이버 라이브리러를 검토해야 합니다. 기존 라이브러리를 활용하면 개발 주기 단축에 도움이 됩니다.

마지막으로 개발자는 Electric Imp 플랫폼이 인터넷에 직접 연결되지 않는다는 점을 기억해야 합니다. 모든 통신은 먼저 Imp Cloud에 대한 보안 연결을 통해 수행됩니다. 그런 다음 에이전트를 사용하여 메시지를 웹으로 전달합니다. 또한 개발자는 데이터 저장소 및 분석과 같은 타사 서비스용 라이브러리도 클라우드 측에서 사용할 수 있습니다. 라이브러리의 기존 코드를 최대한 활용하세요.

결론

설계자가 기존 기술을 사용하여 IoT 플랫폼을 활용한다면 IoT 장치 개발은 매우 빠르게 진행될 수 있습니다. 현재 출시된 여러 플랫폼 중 하나를 활용하면 개발자는 자신의 전문 분야에 집중하고 인프라 처리는 다른 회사에서 처리하도록 할 수 있습니다. 지금까지 살펴본 것처럼 Electric Imp IoT 플랫폼은 적극적으로 고려할만한 흥미롭고 독창적인 솔루션입니다.

 
DigiKey logo

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

작성자 정보

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo는 임베디드 소프트웨어 컨설턴트로서 현재 십여 개국 이상의 국가에 있는 고객들과 협력하여 제품 품질, 비용, 출시 기간을 향상시켜 고객의 비즈니스를 극적으로 변화시키고 있습니다. 그는 인기 있는 강연자이자 기술 교육자이며 임베디드 소프트웨어 개발 기술에 대해 200개 이상의 기사를 발표했습니다. 그는 미시간 대학교 공학 석사 학위를 비롯하여 세 개의 학위를 소지하고 있습니다. 월간 Embedded Bytes 뉴스레터를 수신하려면 jacob@beningo.com 및 Jacob Beningo의 웹 사이트인 www.beningo.com으로 언제든지 문의해 주세요.

게시자 정보

DigiKey 북미 편집자