반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리


반응형

Getting Started with the Arduino Yún LininoOS



Arduino Yún(雲)은 다른 Arduino board와는 많이 다릅니다. 프로그래밍 중에는 Arduino Leonardo와 매우 유사하며 동일한 프로세서 인 Atmel ATmega32U4를 사용합니다. 그리고 LininoOS 및 OpenWrt 무선 스택을 실행하는 Atheros AR9331이라는 추가 프로세서가 있습니다. USB를 통해 32U4를 프로그래밍하는 것은 Arduino Leonardo와 동일합니다. Wi-Fi 네트워크에 연결하도록 Yún(雲)을 구성하면 Wi-Fi를 통해 32U4를 프로그래밍 할 수 있습니다.


Quick Start

Arduino Yún(雲)은 모든 board에 공통적 인 통합 개발 환경 인 Arduino Software (IDE)를 사용하여 프로그래밍됩니다. Getting Started에서 설명 된대로 PC에 이 IDE가 설치되어 있어야합니다.



Installing Drivers for the Yún(雲)

OSX


첫 번째로 Yún(雲)을 Mac에 연결하면 "Keyboard Setup Assistant"가 시작됩니다. Yún(雲)을 위해 따로 구성 할 것은 없습니다. 창 왼쪽 상단의 빨간색 버튼을 클릭하여이 대화 상자를 닫을 수 있습니다.




Windows


Arduino Software (IDE)의 Windows 버전에는 이미 적절한 드라이버가 들어 있습니다. 설치하면 운영 체제에서 설치하게됩니다. Yún(雲)을 연결하면 드라이버가 자동으로 설치됩니다.



Linux
Ubuntu 10.0.4 이상용 드라이버를 설치할 필요는 없지만 포트 5353이 방화벽에 의해 차단되지 않도록하십시오.


Open your first sketch

LED blink 예제 스케치를 엽니 다 : File > Examples >01.Basics > Blink.





Select your board type and port


Arduino 또는 Genuino board에 해당하는 Tools> Board 메뉴에서 항목을 선택해야합니다.





Tools | Serial Port menu에서 board의 serial device를 선택하십시오. COM3 나 그 이상이 될 것입니다. (COM1 및 COM2는 일반적으로 하드웨어 직렬 포트 용으로 예약 됨). 이것을 알려면 board를 disconnect 한 후 메뉴를 다시 여세요. 사라지는 항목이 Arduino 또는 Genuino board 입니다. board를 다시 연결하고 해당 직렬 포트를 선택하십시오. board가 WiFi에서 제대로 구성되면 스크린 샷과 같이 포트 목록에서 board를 찾을 수 있습니다.





Upload the program

이제 environment에서 'Upload'버튼을 클릭하기 만하면됩니다. 잠시 기다린 후 - board의 RX 및 TX LED가 깜박이는 것이 보여야 합니다. 업로드가 완료되면 'Done uploading'라는 메시지가 상태 표시 줄에 나타납니다.





업로드가 완료되고 몇 초 후에 on-board LED가 깜박일 것입니다. If it does, congratulations! Arduino Yún(雲)을 잘 사용하고 있는 겁니다. 문제가있는 경우 troubleshooting suggestions을 참조하십시오.




Get inspired

이제 Yún(雲) board를 설정하고 프로그래밍 했으므로  Project Hub 튜토리얼 플랫폼에서 영감을 얻거나 Bridge library and examples를 더 깊이 파고들 수 있습니다. Yún(雲)  hardware page에서 추가 기술 정보를 확인할 수도 있습니다.






Please Read...



Arduino Leonardo와의 차이점





YUn은 32U4 칩 외에도 OpenWrt를 기반으로 한 LininoOS라는 임베디드 시스템 용 Linux 배포판을 실행하는 Atheros AR9331이라는 추가 프로세서를 보유하고 있습니다. Python 2.7의 full install도 포함되어 있습니다.

Yún(雲)은 Leonardo보다 다양한 물리적 특성과 connectors 를 가지고 있습니다. on-board SD 슬롯, Ethernet jack 및 USB-A Host connector가 있습니다. Yún(雲)에는 ower barrel connector가 없습니다. 마이크로 USB 커넥터에서 전원을 공급받을 수 있습니다.

5V 레귤레이터가 내장되어 있지 않습니다. 5V 이상으로 Yún(雲)에 전원을 공급하면 손상 될 수 있습니다. 마이크로 USB 연결에서 Yún(雲)에 전원을 공급하지 않으면 board의 VIN 및 5V 핀에 전원을 공급할 수 있습니다. VIN 핀을 사용하는 경우 5V 이상을 공급할 수 없으므로 board가 손상 될 수 있습니다. 되도록 USB 연결로 Yún(雲)에 전원을 공급하는 것이 권장됩니다.

SD, Ethernet 및 USB-A 커넥터는 물리적으로 32U4 프로세서에 연결되지 않으며 AR9331에 연결됩니다.

Yún(雲)의 32U4는 Serial1을 사용할 수 없다는 점을 제외하면 Leonardo와 같은 방식으로 작동합니다. AR9331 프로세서와 통신하기 위해 예약되어 있습니다.

또한 Yún(雲)에는 WiFi 모듈이 내장되어있어 무선 라우터에 연결하거나 액세스 포인트 역할을 할 수 있습니다.

32u4, WiFi 및 AR9331 프로세서에는 모두 자체 재설정 단추가 있습니다.






Yún(雲)에는 전원, WLAN 연결, WAN 연결 및 USB를 나타내는 몇 가지 상태 LED가 있습니다. 또한 핀 13은 상태 표시등 중 하나에 연결됩니다.





OpenWrt LininoOS


LininoOS는 약 3000 개의 패키지가 내장되어 있으며 OpenWRT 배포를 기반으로합니다. LininoOS는 GPG 서명이있는 패키지 관리 기능을 갖춘 완벽하게 쓰기 가능한 파일 시스템을 제공합니다. LininoIO와 통합되어 IoT 공간을위한 완벽한 리눅스 시스템입니다. LininoOS는 Arduino Yun을 위해 많은 혁신적인 기능들을 제공합니다.


    LininoIO는 마이크로 프로세서 환경에 마이크로 컨트롤러 기능을 통합 할 수있는 소프트웨어 프레임 워크입니다. LininoOS를 사용하여 Linux 측에서 Node.js, Python, Bash 등을 사용하여 응용 프로그램을 간단하게 작성하여 board와 모든 장치를 완벽하게 제어 할 수 있습니다.


    Ideino Node.js가 포함 된 Node.js는 빠르고 확장 가능한 네트워크 애플리케이션을 손쉽게 구축 할 수 있도록 Chrome의 JavaScript 런타임에 구축 된 플랫폼입니다. Node.js는 가볍고 효율적이며 분산 장치에서 실행되는 데이터 집약적 인 실시간 애플리케이션에 완벽한 이벤트 구동 비 차단 I / O 모델을 사용합니다. Ideino는 node.js 응용 프로그램을 작성하고 디버깅 할 수있는 임베디드 편집기입니다.


    AllJoyn은 범용 소프트웨어 프레임 워크와 연결된 제품 및 소프트웨어 응용 프로그램 간의 상호 운용성을 지원하여 동적 인 근거리 네트워크를 만들 수있는 핵심 시스템 세트를 제공하는 오픈 소스 프로젝트입니다.


지속적인 개선과 OpenWrt 커뮤니티와 Arduino 커뮤니티의 제안으로 인해 LininoOS는 계속 개선 되고 있습니다. Yún(雲)에 설치된 LininoOS 를 설치한 지 오래 된 경우 upgrade tutorial 을 확인하고 사용 가능한 최신 버전을 실행하고 있는지 확인하십시오.


웹 인터페이스에 액세스하는 방법은 아래에 설명되어 있습니다.



Install additional software on Linux


Yún(雲)은 "curl"과 "python"을 포함하여 LininoOS에 사전 설치된 여러 소프트웨어를 제공합니다. Yún(雲)에 다른 소프트웨어를 설치 할 수 있습니다. Linux 시스템에서는 "opkg"도구를 사용하여 추가 소프트웨어를 설치할 수 있습니다. LininoOS에 대한 사전 컴파일 된 패키지는 최신 버전에서 찾을 수 있습니다.
LininoOS 시스템과 인터페이스 할 때 Arduino 's Bridge 라이브러리를 통해 액세스하거나 SSH를 통해 명령 행을 사용해야합니다. command line에 익숙하지 않다면 자주 사용되는 프로그램과 몇 가지 기본 사항에 대해 읽어보십시오.


Python



LininoOS에는 Python 2.7 설치가 포함되어 있으며, 여기에 응용 프로그램이나 스크립트를 작성할 수 있습니다. Python에 대한 자세한 내용은 Python 2.7 documentation pages를 참조하십시오.


처음으로 Python을 시작한다면 많은 훌륭한 자료가 온라인에 있습니다. "Learn Python the Hard Way" 는 자신 만의 스크립트로 시작하고 실행하기 위해 알아야 할 모든 것을 다루고 있습니다.



External storage on the Yún


Yún(雲)에 내장 된 비 휘발성 메모리는 쓰기가 제한되어 있으므로 사용하지 않는 것이 좋습니다.


데이터 저장을 위해 microSD 카드 나 thumb drive와 같은 외부 메모리를 사용하거나 스크립트, 웹 페이지 등을 사용할 수 있습니다. Yún(雲)이 32U4를 통해 이러한 드라이브에 대한 정보에 액세스하여 저장하려면 volume의 root에 arduino라는 디렉토리가 있어야합니다.


Web services


LininoOS는 클라이언트와 서버에 REST를 사용합니다. REST는 "Representational State Transfer"의 머리 글자입니다. Arduino 하드웨어의 여러 부분을 URL을 통해 노출하는 소프트웨어 아키텍처입니다.


기본적으로 REST API 액세스는 비밀번호로 보호됩니다. 암호를 변경하지 않고 서비스에 액세스하려면이 설정을 변경할 수 있습니다. 이 설정을 변경하려면 Yún(雲) 구성 패널을 입력하십시오. 페이지 하단에 액세스 변경을위한 토글이 표시됩니다.



REST의 개념에 대한 훌륭한 소개는 여기에서 찾을 수 있습니다.


Yún(雲)이 인식하는 세 가지 REST 엔드 포인트는 다음과 같습니다.


    / arduino
    /데이터
    /mailbox



"/ arduino"디렉토리에는 사전 구성된 것이 없습니다. end point 다음에 URL에 추가 된 것은 웹 서버에서 32U4의 스케치로 전달됩니다. 스케치 내부에서 API를 정의 할 수 있습니다. board의 핀에 액세스하는 방법을 보려면 Bridge 예제를 참조하십시오.


"/ data"는 내부 키 / 값 저장에 액세스하는 데 사용됩니다. 사용할 수있는 통화는 다음과 같습니다.


    / put / KEY / VALUE : 저장소에 값을 저장합니다.
    / get / KEY : JSON에서 요청한 키의 값을 얻습니다.
    / get : JSON에서 전체 저장 목록을 가져옵니다.
    / delete : 내부 저장소를 삭제합니다.



"mailbox"은 Mailbox라는 대기열에 메시지를 추가하는 데 사용됩니다. 메시지 대기열은 Linux 시스템에 저장되며 Arduino 마이크로 컨트롤러에서 읽을 수 있습니다. 사용 가능한 REST 호출은 다음과 같습니다.


    "/ mailbox / message"
   



Resetting the processors (AR9331, WiFi, and 32U4)


LininoOS를 재부팅하는 AR9331을 다시 시작하려면 아날로그 입력 핀과 board의 LED에 가까운 "Yún(雲) RST"재설정 버튼을 누릅니다.


32U4를 다시 시작하고 현재 설치된 Arduino 스케치를 다시 시작하려면 Ethernet 포트 옆에있는 버튼을 두 번 누릅니다.


WiFi 용 재설정 버튼은 USB-A 커넥터 옆에 있습니다. "WLAN RST"라고 표시되어 있습니다. 버튼을 누르면 WLAN LED가 깜박입니다.


다른 네트워크로 이동하여 더 이상 웹 인터페이스를 통해 Yún(雲)에 무선으로 액세스 할 수없는 경우 Wi-Fi 재설정 버튼 (WLAN RST)을 5 초 이상 30 초 미만으로 길게 눌러 Yún(雲)의 네트워크 구성을 재설정 할 수 있습니다. AR9331 프로세서가 재부팅됩니다. WiFi 구성이 재설정되고 Yún(雲)이 자체 Wi-Fi 네트워크 Arduino Yún(雲)-XXXXXXXXXXXXX를 시작합니다. 다른 모든 수정 / 구성은 유지됩니다.


LininoOS 배포를 기본 상태로 재설정하려면 WiFi 재설정 버튼 (WLAN RST)을 30 초 이상 누릅니다. board는 원래 설정으로 되돌아갑니다. 상자에서 꺼내거나 이전에 다시 플래시 한 LininoOS 이미지의 최신 업데이트로 가져 왔습니다. 무엇보다도 이것은 설치된 모든 파일과 네트워크 설정을 제거합니다.



Resetting the password


웹 패널 암호를 재설정하고 변경할 수 있습니다. USB 케이블로 Arduino Yún(雲)을 컴퓨터에 연결하고 YunSerialTerminal 스케치를 업로드하십시오. Arduino IDE의 Bridge 예제에서 찾을 수 있습니다. Yún(雲) 부팅이 완료되면 직렬 모니터를 열고 드롭 다운 메뉴에서 New Line 문자를 선택한 다음 Enter 키를 누릅니다. 아래와 같은 것이 직렬 모니터에 나타나야합니다.






이제 암호를 변경하려면 passwd 명령을 실행해야합니다. passwd를 직렬 모니터 입력에 입력하고 Enter 키를 누릅니다. 새 암호를 입력하라는 메시지가 나타나면 암호를 다시 입력하여 확인하십시오. 원하는 경우 약한 암호 오류를 무시할 수 있습니다. 입력 한 두 암호가 일치하면 시스템 암호가 변경되고 새 암호로 웹 패널에 액세스 할 수 있습니다.



Serial re-enumeration on reset.


Yún(雲)에는 직렬 통신을 처리하는 전용 칩이 없기 때문에 직렬 포트가 가상이라는 것을 의미합니다. 이는 운영 체제와 board 자체의 소프트웨어 루틴입니다. Arduino를 연결할 때 컴퓨터가 직렬 포트 드라이버 인스턴스를 생성하는 것처럼 32u4는 부트 로더를 실행할 때마다 직렬 인스턴스를 생성합니다. 이 board는 USB의 CDC (Connected Device Class) 드라이버의 인스턴스입니다.


즉, 32U4 프로세서를 리셋 할 때마다 USB 직렬 연결이 끊어지고 다시 설정됩니다. board가 직렬 포트 목록에서 사라지고 목록이 다시 열거됩니다. Yún(雲)에 대한 직렬 연결이 열려있는 프로그램은 연결을 끊습니다. 이것은 USB 연결 (보조 ATmega8U2 또는 ATmega16U2 프로세서에서 유지 관리)을 닫지 않고 주 프로세서 (ATmega328P)를 재설정 할 수있는 Arduino Uno와는 대조적입니다. 이 차이점은 드라이버 설치, 업로드 및 통신에 영향을 미칩니다.
직렬 포트를 열면 재설정되지 않습니다.


Yún(雲)은 컴퓨터에서 직렬 포트를 열 때 스케치를 다시 시작하지 않습니다. 즉, board에서 컴퓨터로 이미 전송 된 직렬 데이터 (예 : setup ()에서 전송 된 대부분의 데이터 포함)가 표시되지 않습니다.


이는 아래에 설명 된 콘솔에도 적용됩니다.



즉, 직렬 또는 콘솔 print (), println () 또는 write () 문을 setup ()에 사용하면 직렬 모니터 또는 콘솔 연결을 열 때 해당 문구가 표시되지 않습니다. 이 문제를 해결하려면 포트가 다음과 같이 열려 있는지 여부를 확인할 수 있습니다.

// Serial Monitor가 열릴 때까지 프로그램을 멈춘다.
   while (! Serial);


또는
// Console이 열릴 때까지 프로그램을 중지합니다.
   while (! Console);

반응형