August 18, 2017

디바이스마트 미디어:

[29호] Intel Edison Review

Edi

 

바야흐로 IOT(Internet of Things : 사물인터넷)시대가 막 개화하려하고 있는 이 시대 우연한 기회에 에디슨 보드라는 것을 알게 되었습니다. 모든 사물이 인터넷에 연결되어 정보를 공유할 수 있는 체계를 통칭하여 IOT라 한다고 하지만 선뜻 와 닿지는 않는 것 같습니다. 이렇게 사물을 인터넷과 연결시켜주는 다리와도 같은 역할을 인텔 에디슨 보드가 충실히 해낼 수 있을까요?

저는 라즈베리파이보드와 스마트폰을 연동하여 Wi-Fi 기반에서 RC CAR를 제어해 본 경험이 있었기에 모듈형 초소형 컴퓨터에 대해서는 그리 낯설지 않은 것 같습니다. 맨 처음 라즈베리파이보드를 접했을 때의 문화적 충격보다도 갑절은 더 할 에디슨 보드의 리뷰를 시작해보려 하며 Breakout보드를 사용하여 리눅스, 아두이노 등을 테스트 해보고자 합니다. 궁극적으로는 에디슨보드를 인터넷에 물려서 동작시켜보려 합니다.

본 리뷰는 디바이스마트 ((주)엔티렉스)의 지원을 받아 작성하게 되었습니다. 아직 시장에 출시된 지 얼마 되지 않은 관계로 한글로 된 정보가 거의 없다보니 인텔 홈페이지와 해외 웹사이트 등을 참고해 가며 본 리뷰 보고서를 작성하였습니다.

 

 

[1] 에디슨 보드 제품 외관 및 사양

 

 

  1. 에디슨 보드 개봉

   작은 스마트폰 케이스만한 상자에 에디슨보드와 에디슨 Breakout보드가 각각 1매씩 들어 있었습니다. 에디슨 Breakout보드는 별매품이지만 에디슨보드를 사용하려면 적어도 이 보드 정도는 갖춰야 하기에 주최 측에서 배려를 해주셨습니다. 먼저 사이즈가 어느 정도 되는지 이해하기 쉽도록 자를 대고 촬영해 보았습니다.

02번03번

04번

 Intel® Edison(상품코드:1160265)와 Intel® Edison Breakout Board(상품코드:1160267)

 

  2. 에디슨 보드 간략 살펴보기

   인텔사의 홍보성 글에 ®에디슨컴퓨팅모듈은 “IoT 프로토타입” 및 “웨어러블 컴퓨팅” 제품 생산에 대한 진입 장벽을 낮출 수 있도록 많은 고려가 있었다고 합니다.

70핀 커넥터를 통해 외부와 전기적으로 연결되며 와이파이/블루투스를 포함하고 있습니다만 비디오 입출력(LCD등 디스플레이장치, 디스플레이 커넥터) 등은 미포함입니다.

항 목 내 역
프로세서  Dual Core IA-32 @ 500 MHz,
32-bit Intel® Atom™ Processor Z34xx Series @ 100 MHz
RAM  1 GB LPDDR3 POP memory
(2 channel 32 bits @ 800 MT/sec)
내장 스토리지  4 GB eMMC (v4.51 spec)
전력관리  TI SNB9024 power management IC
무선  Dual-band (2.4 and 5 GHz) IEEE 802.11a/b/g/n
블루투스  BT 4.0 + 2.1 EDR
안테나  Dual-band onboard chip antenna or u.FL for external antenna
컨넥터  70-pin Hirose DF40 Series
(1.5, 2.0, or 3.0 mm stack height)
사이즈  35.5 × 25.0 × 3.9 mm maximum
전원공급  3.15 to 4.5 V
I/O  40 general purpose GPIO which can be configured as:
• SD card: 1 interface
• UART: 2 controllers (one full flow control, one Rx/Tx)
• I2C: 2 controllers
• SPI: 1 controller with 2 chip selects
• I2S: 1 controller
• GPIO: Additional 14 (with 4 capable of PWM)
USB2.0  1 OTG controller
Clock  19.2MHz, 32kHz

표1 : 하드웨어 기능

   프로세서는 500MHz로 돌아가는 32비트 듀얼코어 프로세서와 100MHz로 돌아가는 아톰프로세서로 구성된 것이 눈에 띄며 1GB램과 4GB eMMC는 어지간한 프로그램 구동환경에는 문제가 없을 정도로 넉넉해 보입니다. 또한 고속 SD CARD를 처리하기 위한 SDIO가 붙어 있어 SD메모리카드 연결도 충분히 고려되어 있음을 알 수 있습니다.

   

    2.1. 에디슨보드 블록도

05번

 

 

     2.2. 내부 모듈 사진

06번

 

 

 

 3. 각 부분별 세부 사항

 

 3.1. Intel® Atom™ processor Z34XX

인텔의 Z34XX 아톰프로세서는 스마트폰 시장을 타겟으로 22nm 공정으로 만들어진 SoC라고 합니다. 앞서 설명 드린 바와 같이 내부에는 IA-32 기반의 500MHz급 듀얼코어를 포함하고 있습니다. 64비트 명령어 디코드나 비순차적실행 등을 위해 두 CPU 코어 간에는 1MB 공유 캐쉬메모리를 설치해 놓고 있습니다.

 

3.2. 와이파이/블루투스 모듈

와이파이/ 블루투스 모듈은 브로드컴의 BCM43340을 기반으로 만들어져 있습니다. 이 BCM43340의 특징을 살펴보면

      ■ 2.4GHz/5GHz IEEE802.11 a/b/g/n 듀얼밴드 제공

      ■ 802.11n 모드에서 통상적으로 90Mbps의 스루풋과 최대 150Mbps까지의 속도 제공

      ■ SDIO v2.0과 gSPI(40MHz) 호스트 인터페이스 제공

      ■ 블루투스 4.0 지원, 블루투스 전송규격 Class1, Class2

      ■ 보안기능

          WPA, WPA2 지원

           IEEE802.11i 규격을 따르는 고속 데이터 암호화 지원(AES)

           W-Fi Protected setup(WPS) 지원

 

    3.3. NAND(eMMC) Flash 메모리 관리

    에디슨보드는 4GB의 NAND Flash메모리를 가지고 있으며 파일시스템과 유저데이터를 저장하는 공간으로 사용할 수 있습니다.

      ■ 버스 모드

          데이터버스폭: 1bit, 4bit, 8bit

           데이터 전송률 : 최대 200MBps

           MMC I/F 클럭주파수 : 0~200MHz

           MMC I/F 부트주파수 : 0~52MHz

 

    3.4. DDR SRAM

    에디슨 보드는 1GB LPDDR3 메모리를 최대 1033MT/s까지 지원합니다.

      ■ 8개의 뱅크를 가지고 있음

      ■ Row 어드레스 : R0~R13

      ■ Column 어드레스 : C0~C9

      ■ Dual-채널 32bit

      ■ 최대 400Mhz 클록인가(800 MT/s)

 

    3.5. 전력관리장치(PMIC : Power Management IC)

    에디슨 보드는 TI의 SNB9024 전력관리칩을 장착하고 있습니다. 이 칩을 통해 입출력되는 신호의 크기 등을 통제할 수가 있습니다.

      ■ 4개의 고효율 Buck컨버터(강압형 레귤레이터)를 내장 하고 있음

           Two dual-phase 0.55 to 1.2 V @ 4.8 A with DVS

           One dual-phase 1.24 V @ 2.5 A

           One single-phase 1.8 V @ 1.1 A

      ■ 1개의 5V 1.2A 부스트(승압형) 컨버터 내장

      ■ 1개의 3.3V/3.4V 1.4A Buck-Boost 컨버터 내장

      ■ 5개의 LDO 레귤레이터 내장

           3개의 프로그래머블 레귤레이터(1.05~2.85V@100~300mA)

           1개의 고정밀도 1V@ 2mA

           DVS(Dynamic Voltage Scaling : 동적전압제어)0.75~0.95V@220mA

      ■ 2개의 부하 절체기

      ■ USB-AC/DC 어댑터전원 탐지 및 외부 충전회로 제어(충전 전류제어기능)

      ■ I2C Interface and dedicated SVI

      ■ PMIC 용 인터럽트 제어

      ■ 7개의 범용 1.8V I/O와 최대 3.3V를 지원하는 2개의 I/O

      ■ 백업시간을 위한 32.768kHz RTC

      ■ 알람타이머 인터럽트

      ■ 슬립 클록 출력 : 32.768kHz

 

    3.6. USB2.0 트랜시버 ULPI(High speed USB 2.0 표준) 인터페이스

    ULPI인터페이스는 TUSB1211 USB2.0 트랜시버 칩을 통해 USB 컨트롤러와 연결되어 있습니다. 이 칩은 모든 USB2.0 데이터 전송속도를 수용합니다. (High speed : 480Mbps, Full speed 12Mbps, Low speed 1.5Mbps) TUSB1211은 또한 USB배터리 충전규격 v1.1을 지원합니다.

 

    3.7. 통합형 칩안테나와 외장형안테나를 위한 u.FL 컨넥터

    에디슨모듈은 Wi-Fi통신용 2.4Ghz와 5Ghz의 이중밴드 안테나를 보드에 내장하고 있습니다. 내장안테나는 플라스틱케이스에 들어가는 소형폼팩터에 주로 사용되어 질 수 있고 더 큰 장치나 금속 엔클로져에 들어갈 때는 외장형 안테나를 u.FL컨넥터에 끼워 사용 할 수 있습니다.

 

    3.8. 70핀 인터페이스 컨넥터

    이 컨넥터는 히로세 70핀 DF40시리즈의 헤더 타입으로 구성되어 있습니다. 히로세 컨넥터 파트넘버는 DF40C-70DP-0.4V(51)입니다.

신호명 보조기능 내용
2,4,6 VSYS 시스템 입력전원 (에디슨보드 동작 전원) (3.3 to 4.5 V)
8,10 3.3 V 3.3 V 출력단자
12 1.8 V 1.8 V 출력단자
(디지털 I/O핀 전압레벨과 동일)
14 DCIN DC 아답터로부터 전원공급 단자 (만일 배터리로부터 전원을 공급 받는 경우 미 연결)
1,5,9,
11,13,15
GND 접지
7 MSIC_SLP_
CLK3
32 kHz sleep 클록 출력
3 USB_ID USB OTG ID pin
16 USB_DP USB D+
18 USB_DN USB D-
20 USB_VBUS USB VBUS input
(does not power system)
17 PWRBTN# Power/sleep 입력버튼
(엑티브 low)
19 FAULT USB power fault input (from external USB current limit switch)
21 PSW USB power output enable (to external USB current limit switch)
23 V_VBAT_BKUP 리얼타임클록 배터리 입력핀(RTC)
36 RESET_OUT# 시스템 리셋출력 (active low)
24 GP44 GPIO
25 GP165 GPIO
26 GP45 GPIO
28 GP46 GPIO
30 GP47 GPIO
32 GP48 GPIO
34 GP49 GPIO
42 GP15 GPIO
48 GP14 GPIO
35 GP12_PWM0 PWM_0 GPIO, capable of PWM output
33 GP13_PWM1 PWM_1 GPIO, capable of PWM output
37 GP182_PWM2 PWM_2 GPIO, capable of PWM output
39 GP183_PWM3 PWM_3 GPIO, capable of PWM output
41 GP19 I2C_1_SCL GPIO, I2C1 clock
(open collector when configured for I2C)
43 GP20 I2C_1_SDA GPIO, I2C1 data
(open collector when configured for I2C)
45 GP27 I2C_6_SCL GPIO, I2C6 clock
(open collector when configured for I2C)
47 GP28 I2C_6_SDA GPIO, I2C6 data
(open collector when configured for I2C)
50 GP42 I2S_2_RXD GPIO, I2S2 receive data (input)
52 GP40 I2S_2_CLK GPIO, I2S2 clock (output)
54 GP41 I2S_2_FS GPIO, I2S2 frame sync (output)
56 GP43 I2S_2_TXD GPIO, I2S2 transmit data (output)
22 GP134 UART_2_RX GPIO, UART2 receive (input)
27 GP135 UART_2_TX GPIO, UART2 transmit (output)
51 GP111 SPI_2_FS1 GPIO, SPI2 chip select 1 (output)
53 GP110 SPI_2_FS0 GPIO, SPI2 chip select 0 (output)
55 GP109 SPI_2_CLK GPIO, SPI2 clock output
57 GP115 SPI_2_TXD GPIO, SPI2 transmit data (output)
59 GP114 SPI_2_RXD GPIO, SPI2 receive data (input)
46 GP131 UART_1_TX GPIO, UART1 transmit (output)
61 GP130 UART_1_RX GPIO, UART1 receive data (input)
63 GP129 UART_1_RTS GPIO, UART1 ready to send (output)
65 GP128 UART_1_CTS GPIO, UART1 clear to send (input)
44 GP84 SD_0_CLK_FB GPIO, SD clock feedback
58 GP78 SD_0_CLK GPIO, SD clock output
60 GP77 SD_0_CD# GPIO, SD card detect input (active low)
62 GP79 SD_0_CMD GPIO, SD command
66 GP80 SD_0_DAT0 GPIO, SD data 0
70 GP81 SD_0_DAT1 GPIO, SD data 1
64 GP82 SD_0_DAT2 GPIO, SD data 2
68 GP83 SD_0_DAT3 GPIO, SD data
67 OSC_CLK_OUT_ 19.2 MHz high speed clock output
31 RCVR_MODE 펌웨어 리커버리 모드
69 FW_RCVR 펌웨어 리커버리
(active high on boot)
29,38,
40,49
Unused.

표2 : 에디슨보드 컨넥터 핀과 시그널 리스트

    4.1. I2C 인터페이스

    에디슨보드는 2개의 I2C 채널이 있으며 I2C1은 pin41, 34에 연결되고, I2C6는 pin45, 47에 연결되어 있으며 기본적인 모드는 다음과 같습니다.

      ■ 표준모드(전송 속도는 최대 100kbps)

      ■ 고속모드(전송 속도는 최대 400kbps)

      ■ 하이스피드모드(전송속도는 최대 3.4Mbps)

      ■ 항상 I2C마스터 모드로 동작

      ■ 7bit, 10bit 어드레싱 모드 지원

 

    4.2. SD CARD 인터페이스

    SD3.0 규격을 준수하며 핀 44, 58, 60, 62, 64, 66, 68, 70을 사용

      ■ 호스트 클록은 최대 50MHz까지 출력

      ■ 카드삽입과 방출을 검지할 수 있음

      ■ SD 호스트컨트롤러는 표준 SD3.0을 지원함

      ■ SD메모리 전용

      ■ 2.85V 디바이스 지원을 위해 레벨 변환을 필요로 함

 

    4.3. UART 인터페이스

    UART는 2개가 지원되며 UART1은 H/W 흐름제어가 제공되나 UART2는 그렇지 않다. UART1은 핀 46, 63, 61, 54에 연결되어 있으며 UART2는 핀 22, 27에 연결한다.

      ■ 16550 칩과 동등

      ■ 64바이트 버퍼

      ■ 보레이트는 300bps ~ 3.686Mbps까지를 지원

    UART2 포트는 Linux 디버그용 포트로 사용된다.

 

    4.4. SPI 인터페이스

    SPI 채널은 핀 51, 53, 55, 57, 59에 연결되어 있으며 2개의 chip select신호를 사용할 수 있습니다.

      ■ 단일 프레임전송을 할 때는 클럭의 위상에 따라 4가지 모드를 지원

      ■ 멀티프레임 전송모드에서는 SPH = 1, SPO = 0 또는 1로 설정됨

      ■ 마스터모드에서 최대 25Mhz, 슬레이브 모드에서 16.67MHz를 지원

 

    4.5. I2S 인터페이스

    I2S인터페이스는 핀 50, 52, 54, 56에 연결되어 있습니다. 에디슨보드에서 가능한 포맷은 에디슨보드 하드웨어 구조 설명서 (edison-module_ HG_331189-002.pdf)상 Table6를 참조

 

    4.6. PWM

    PWM출력을 위해 4개의 GPIO가 사용될 수 있으며 핀 33, 35, 37, 39가 할당되어 있습니다. PWM 각 채널은 8비트 분해능을 가집니다.

    PWM 출력주파수 및 주기는 아래와 같이 구합니다.

   - Target frequency ~= 19.2 MHz * Base_unit value/256

   - Target PWM duty cycle ~= PWM_on_time_divisor / 256

 

    4.7. GPIO

    GPIO 포트는 외부와 인터페이스용 I/O로 사용될 수 있습니다. 핀 24, 25, 26, 28, 30, 32, 34, 42, 48 등 9개가 사용될 수 있으며 I2C, I2S, UART 등이 사용되지 않는다면 해당 포트도 GPIO로 사용될 수 있습니다. 각 핀은 풀업이나 풀다운 저항을 소프트웨어적으로 설정할 수 있으며 2k, 20k, 50kohm 등을 선택할 수 있습니다. 특히 I2C핀은 910옴의 저항으로 연결되어 있음에 유의해야 합니다. GPIO 포트는 기본적으로 edge status를 읽어들이기 전에 글리치 제거가 이뤄져 신뢰성을 높이는 구조로 되어 있습니다. 참고로 출력전류 공급능력은 ±3mA로 다소 약한 편입니다.

 

    4.8. USB

    에디슨 보드는 단일 USB2.0포트를 갖고 있으며 코드의 다운로드용으로 사용됩니다. 핀 3, 16, 18, 20이 포트와 연결됩니다.

    에디슨 모듈은 디바이스측으로 전력을 공급하지 않는 구조이고 OTG기능이 또한 설치되어 있으며 이 기능은 3번 핀의 ID시그널에 의존하여 동작됩니다. OTG모드에서 전력공급은 외부 보드에서 수행하여야 합니다. PSW(핀21), FAULT(핀19)는 VBUS상에서 과전류가 흐르는지 탐지하며 이는 ULPI가 담당합니다.

07번

    4.9. Clock

에디슨보드는 2개의 클럭 출력포트를 갖고 있습니다. 7번 핀은 32KHz 슬립클럭과 연결되어 있고 67번 핀은 19.2MHz 출력핀과 연동됩니다. 슬립모드에서도 ±3mA의 출력 전류를 흘릴 수 있습니다. 19.2Mhz 클록은 TBD mA의 높은 전류를 공급할 수 있는 능력이 있습니다.

    4.10. 시스템리셋

    에디슨보드는 PWRBTN#(pin17)과 RESET_OUT@(pin36) 등 2개의 리셋 시그널용 핀이 있으며 PWRRTN#는 엑티브 LOW에서 동작되고 sleep, power off등의 이유에 의해 변합니다. RESET_OUT핀은 오픈드레인으로 되어 있으며 시스템 리셋에 의해 발생됩니다.

    4.11. 스페셜 소프트웨어 리커버리

    에디슨보드는 부팅하는 동안 2개의 신호선이 사용됩니다. 이 기능을 위해 69번핀 FW_RCVR, 31번핀은 RCVR_MODE로 사용됩니다. FW_RCVR은 RESET_OUT 부팅이 이뤄지는 동안 LOW 상태로 유지가 되어야 합니다.

    4.12. 전원 입출력

    VSYSY : 3.15V~4.5V를 인가할 수 있습니다. USB_VBUS : 표준 USB VBUS신호인 4.75V ~ 5.25V를 인가할 수 있습니다. 에디슨 보드에서 출력되는 3.3V, 1.8V는 최대 250mA 까지 흘려줄 수 있습니다.(TBV) 와이파이와 블루투스가 정상적으로 동작되기 위해서는 최소한 3.15V가 필요합니다.

    4.13. V_VBAT_BKUP

    PMIC는 코인배터리나, 수퍼캡을 충전시킬 수 있는 능력이 있습니다. 외장 배터리는 핀23 V_VBAT_BKUP에 연결할 수 있으며 PMIC는 프로그램에 의해 2.5, 3.0, 3.15, 3.3v로 선택될 수 있습니다. 충전전류 역시 프로그램에 의해 10, 50, 100, 500uA로 선택되어 질 수 있습니다.

  5. 전원

  에디슨보드는 배터리나 AC벽전원에 의해 동작 시킬 수가 있으며 전원공급을 하는 방법이나 충전을 하는 회로는 외부에서 디자인 되어야 합니다.

    5.1. VSYS에 메인전력 공급하기

    에디슨보드는 VSYS(핀 2,4,6)에 전원을 인가하며 이 핀은 내부적으로는 VBAT에까지 연결되어 있습니다. 이 VSYS는 최소 3.15V에서 최대 4.5V를 넘지 말아야 합니다.

    5.2. 사례 1 – 리튬폴리머 배터리를 직결하는 방식

    배터리 전원을 단순하게 연결하는 방법은 배터리를 VSYS에 직접 연결하는 것입니다. 그러나 이러한 연결은 추천하지 않습니다. 왜냐하면 충전시스템에서 사용되는 전력이 배터리와 VSYS에 양분되어 공급되기 때문입니다.

 08번

 

    5.3. 사례 2 – 다이오드와 FET절연을 통한 리튬 폴리머 배터리 연결하는 방식

   - 이러한 구성은 동작 시 다이오드에 의한 전압강하가 발생됨

   - 이러한 구성은 부팅시에 배터리를 떼어 놓을 수 있음

   - 다이오드를 P-FET로 변경하면 전압강하를 최소화 시킬 수 있음

   - 이러한 기능 통제를 하는 유사한 칩이 BQ24073이다.

09번

    5.4. 사례 3 – USB VBUS로 연결 하는 방식

    USB 전원공급장치에서 직접 에디슨을 실행할 수는 없습니다. VSYS로 인가되는 최대 전압은 4.5V이기 때문에 그렇습니다. 즉 USB 전원사양(4.75V -5.25V)은 에디슨의 안전 동작범위를 초과합니다. 따라서 USB 전원은 BQ24074와 같은 벅다운 컨버터로 변환해서 공급해야 합니다.

    이상은 인텔사에서 공개한 하드웨어 가이드를 토대로 작성해 본 자료입니다. 무턱대고 접근해 들어가기보다는 해당 보드의 스펙이 어떠한지를 면밀히 따져보고 접근해 들어가는 것이 학습 효과를 높이는데 도움이 되지 않을까 생각됩니다. 다음은 Breakout 보드에 대해서 살펴보도록 하겠습니다.

 

 

[2] 브레이크아웃 보드 살펴보기

 

  1. 개요

  Intel® Edison breakout board는 인텔에디슨 모듈로부터 1.8V로 입출력 되도록 설계가 되어 있습니다. 이 보드는 전원공급기, 배터리충전회로, USB OTG, USART to USB 브릿지, I/O 헤더 등으로 구성되어 있습니다.

10번

  2. Breakout 보드 상 점퍼의 구성

      ■ J2 : 배터리와 연결용 컨넥터로 왼편이 +V, 오른편이 GND이 컨넥터에 리튬이온 전지를 연결하면 자동으로 충전이 이뤄지며 J21, J22, J3 등으로부터 전력을 공급 받게 된다.

      ■ J1 : 써미스터가 내장된 배터리를 연결한 경우에는 open 한다.

      ■ J3 : 마이크로 USB FTDI로 USB to Serial 포트를 제공. 이 포트를 통해서 리눅스 콘솔로 사용할 수 있음

      ■ J16 : 마이크로 USB AB 컨넥터로 OTG 기능을 수행이 포트를 통해 PC와 연결되면 에디슨모듈을 스토리지(USB 메모리)로 PC가 인식

      ■ J17~J20 : 그림의 왼편부터 1번 핀

      ■ J21 : 메인 전원공급핀으로 DC 7~15를 인가할 수 있음

      ■ J22 : 보드 아랫편에 패턴이 준비되어 있으나 실제로는 부품이 없음

11번

그림2 :  Top Wiew

29 금강초롱 12그림3 : Bottom View

    2.1. USB 인터페이스

    에디슨 보드는 단일 USB2.0 인터페이스를 갖고 있습니다. 이 인터페이스의 주된 용도는 프로그램의 다운로드입니다. 또한 ID신호라인과 함께 USB OTG기능을 제공토록 설계 되어 있습니다. 만일 마이크로B USB케이블이 연결되면 에디슨보드는 USB디바이스가 되며 USB케이블로부터 전원을 공급받게 됩니다. 또한 마이크로A USB케이블이 연결되면 에디슨 보드는 호스트로서의 기능을 수행하며 J21, J22를 통해 전력을 공급해주어야 합니다. 이 경우 Breakout 보드는 USB 컨넥터로 5V를 출력하게 될 것입니다.

    2.2 Breakout 보드 확장헤더 핀 구성

    GPIO 핀은 Input, Output로 프로그램 될 수 있으며 입력모드로 프로그램 된다면 인터럽트나 웨이크업 소스로 사용될 수 있습니다. 입력 핀은 풀업이나 풀다운으로 프로그램 될 수 있는데 2KΩ, 20KΩ, 50KΩ 등이 가능합니다. I2C핀은 추가적으로 910Ω이 걸리게 됩니다.

    입력핀으로 사용되는 핀은 기본적으로 그리치 제거 동작이 일어납니다.

    • 100 ns for a 50 MHz clock when SoC is in S0 state.

    • 260 ns for 19.2 MHz clock when SoC is in S0i1 or S0i2 State.

    • 155.5 μs for 32 kHz clock (RTC) when SoC is in S0i3 State.

    포트당 출력전류는 최대 ±3mA입니다.

    2.3. Breakout 보드 핀헤더와 아두이노 표준핀간 연계

    ■ J17 컨넥터 라인

Breakout
보드핀
SoC 용도 기능설명 아두이노
표준핀
J17 – pin 1 GP182_PWM2 GPIO capable of PWM output. DIG6
J17 – pin 2 NC No connect.
J17 – pin 3 NC No connect.
J17 – pin 4 VIN 7 to 15 V. 5V Out Pin
J17 – pin 5 GP135 UART2_TX GPIO, UART2 transmit output.
J17 – pin 6 RCVR_MODE Firmware recovery mode.
J17 – pin 7 GP27 I2C6_SCL GPIO,IC26 SCL output open
collector.
`
J17 – pin 8 GP20 I2C1_SDA GPIO, I2C1 data open collector.
J17 – pin 9 GP28 I2C6_SDA GPIO, I2C6 data open collector.
J17 – pin 10 GP111 SSP5_FS1 GPIO, SSP2 chip select 2 output.
J17 – pin 11 GP109 SSP5_CLK GPIO, SSP5 clock output.
J17 – pin 12 GP115 SSP5_TXD GPIO, SSP5 transmit data output.
J17 – pin 13 OSC_CLK_OUT_0 High speed clock output.
J17 – pin 14 GP128 UART1_CTS GPIO, UART1 clear to send input. DIG2

■ J18 컨넥터 라인

Breakout
보드핀
SoC 용도 기능설명 아두이노
표준핀
GP182_PWM2 GPIO capable of PWM output. DIG6
J18 – pin 1 GP13_PWM1 GPIO capable of PWM output. DIG5
J18 – pin 2 GP165 GPIO A5
J18 – pin 3 GPI_PWRBTN_N Power button input.
J18 – pin 4 MSIC_SLP_CLK2 32 kHz sleep clock.
J18 – pin 5 V_VBAT_BKUP RTC backup battery input.
J18 – pin 6 GP19 I2C1_SCL GPIO,IC21 SCL output open collector.
J18 – pin 7 GP12_PWM0 GPIO capable of PWM output. DIG3
J18 – pin 8 GP183_PWM3 GPIO capable of PWM output. DIG9
J18 – pin 9 NC No connect.
J18 – pin 10 GP110 SSP5_FS0 GPIO, SSP1 chip select 2 output.
J18 – pin 11 GP114 SSP5_RX GPIO, SSP5 receive data input.
J18 – pin 12 GP129 UART1_RTS GPIO, UART1 ready to send output. DIG4
J18 – pin 13 GP130 UART1_RX GPIO, UART1 receive data input. DIG0
J18 – pin 14 FW_RCVR Firmware recovery, active high on boot.

■ J19 컨넥터 라인

Breakout
보드핀
SoC 용도 기능설명 아두이노
표준핀
J19 – pin 1 NC No connect.
J19 – pin 2 V_V1P80 System 1.8 V I/O output power. 1.8V
J19 – pin 3 GND Ground. GND
J19 – pin 4 GP44 ALS_INT_N GPIO, ALS interrupt input. A0
J19 – pin 5 GP46 ACCELEROMETER_INT_1 GPIO, accelerometer interrupt input. A2
J19 – pin 6 GP48 GYRO_DRDY GPIO, gyro data ready input. DIG7
J19 – pin 7 RESET_OUT# System reset out low. RESET
J19 – pin 8 GP131 UART1_TX GPIO, UART 1 Tx output. DIG1
J19 – pin 9 GP14 AUDIO_CODEC_INT GPIO, audio codec interrupt input. A4
J19 – pin 10 GP40 SSP2_CLK GPIO, SSP2 clock output. DIG13(GP40)
J19 – pin 11 GP43 SSP2_TXD GPIO, SSP2 transmit data output. DIG11(GP115)
J19 – pin 12 GP77 SD_CDN GPIO, SD card detect low input.
J19 – pin 13 GP82 SD_DAT2 GPIO, SD data 2
J19 – pin 14 GP83 SD_DAT3 GPIO, SD data 3

■ J20 컨넥터 라인

Breakout
보드핀
SoC 용도 기능설명 아두이노
표준핀
J20 – pin 1 V_VSYS System input power.
J20 – pin 2 V_V3P30 System 3.3 V output. 3.3V
J20 – pin 3 GP134 UART2_RX UART2 Rx (input).
J20 – pin 4 GP45 COMPASS_DRDY GPIO, compass data ready input. A1
J20 – pin 5 GP47 ACCELEROMETER_INT_2 GPIO, accelerometer interrupt input 2. A3
J20 – pin 6 GP49 GYRO_INT GPIO, gyro interrupt input. DIG8
J20 – pin 7 GP15 GPIO.
J20 – pin 8 GP84 SD_CLK_FB GPIO, SD clock feedback input.
J20 – pin 9 GP42 SSP2_RXD GPIO, SSP2 Rx data input. DIG12(GP42)
J20 – pin 10 GP41 SSP2_FS GPIO, SSP2 frame sync output. DIG10(GP41)
J20 – pin 11 GP78 SD_CLK GPIO, SD clock output.
J20 – pin 12 GP79 SD_CMD GPIO, SD command.
J20 – pin 13 GP80 SD_DAT0 GPIO, SD data 0.
J20 – pin 14 GP81 SD_DAT1 GP81 SD data 1.

■ 아두이노핀과 직접적으로 관련된 핀

Breakout
보드핀
SoC 용도 기능설명 아두이노
표준핀
J19 – pin 4 GP44 ALS_INT_N GPIO, ALS interrupt input. A0
J20 – pin 4 GP45 COMPASS_DRDY GPIO, compass data ready input. A1
J19 – pin 5 GP46 ACCELEROMETER_INT_1 GPIO, accelerometer interrupt input. A2
J20 – pin 5 GP47 ACCELEROMETER_INT_2 GPIO, accelerometer interrupt input 2. A3
J19 – pin 9 GP14 AUDIO_CODEC_INT GPIO, audio codec interrupt input. A4
J18 – pin 2 GP165 GPIO A5
J18 – pin 13 GP130 UART1_RX GPIO, UART1 receive data input. DIG0
J19 – pin 8 GP131 UART1_TX GPIO, UART 1 Tx output. DIG1
J17 – pin 14 GP128 UART1_CTS GPIO, UART1 clear to send input. DIG2
J18 – pin 7 GP12_PWM0 GPIO capable of PWM output. DIG3
J18 – pin 12 GP129 UART1_RTS GPIO, UART1 ready to send output. DIG4
J18 – pin 1 GP13_PWM1 GPIO capable of PWM output. DIG5
J17 – pin 1 GP182_PWM2 GPIO capable of PWM output. DIG6
J19 – pin 6 GP48 GYRO_DRDY GPIO, gyro data ready input. DIG7
J20 – pin 6 GP49 GYRO_INT GPIO, gyro interrupt input. DIG8
J18 – pin 8 GP183_PWM3 GPIO capable of PWM output. DIG9
J17 – pin 10 GP111 SSP5_FS1 GPIO, SSP2 chip select 2 output.
J20 – pin 10 GP41 SSP2_FS GPIO, SSP2 frame sync output. DIG10(GP41)
J17 – pin 12 GP115 SSP5_TXD GPIO, SSP5 transmit data output.
J19 – pin 11 GP43 SSP2_TXD GPIO, SSP2 transmit data output. DIG11(GP115)
J18 – pin 11 GP114 SSP5_RX GPIO, SSP5 receive data input.
J20 – pin 9 GP42 SSP2_RXD GPIO, SSP2 Rx data input. DIG12(GP42)
J17 – pin 11 GP109 SSP5_CLK GPIO, SSP5 clock output.
J19 – pin 10 GP40 SSP2_CLK GPIO, SSP2 clock output. DIG13(GP40)
J19 – pin 7 RESET_OUT# System reset out low. RESET Pin
J20 – pin 2 V_V3P30 System 3.3 V output 3.3V Out Pin
J17 – pin 4 VIN 7 to 15 V. 5V Out Pin
J19 – pin 2 V_V1P80 System 1.8 V I/O output power. Voltage In
J19 – pin 3 GND Ground GND

주의) A0~A5핀은 별매인 아두이노Breakout Board에서만 지원함

    2.4. 전원공급계통

    에디슨보드는 저전력 장치로 평상시 부하전류가 200mA를 넘지 않으며 Wi-Fi 송신 시 짧게 600mA 정도가 흐릅니다. 외부로부터 7~15V 전원을 받게 되면 내부적으로 DC-DC컨버터에 의해 5V로 변환됩니다. 배터리 충전회로는 최대 4.4V로 제한되어 있습니다. 이 전압은 에디슨보드의 VSYS의 안전권인 5.15V~4.5V에서 동작되어야 하기 때문이기도 합니다.

    내장된 충전기는 표준형 리튬배터리를 최대 4.2V선까지 충전시키며 충전전류는 190mA로 제한되도록 프로그램 되어 있습니다. 안전을 위해 충전중인 배터리가 과열되지 않도록 과열에 대한 대책이 필요합니다.

    요약 정리를 해보자면

    1. USB 호스트 모드에서는 항상 외부 전원 연결을 요구함

    2. 배터리는 과열방지대책이 되어 있는 것을 사용함이 바람직하며 과열 시 차단되도록 설계할 것

29 금강초롱 13

 

  ★ 별첨 : 아두이노 연계 포트 사용

 

1. 아두이노 Digital pin7에서 토글 데이터를 내보내는 예
구 분 명 령 어 비고
GPIO 설정대상 선택 echo -n “223″ > /sys/class/gpio/export
echo -n “255″ > /sys/class/gpio/export
echo -n “48″ > /sys/class/gpio/export
풀업/풀다운
레지스터 정지
echo -n “in” > /sys/class/gpio/gpio223/direction
논리레벨 시프터 설정 echo -n “out” > /sys/class/gpio/gpio255/direction
echo -n “1″ > /sys/class/gpio/gpio255/value
GPIO로 출력 내보내기 echo -n “out” > /sys/class/gpio/gpio48/direction
echo -n “1″ > /sys/class/gpio/gpio48/value
echo -n “0″ > /sys/class/gpio/gpio48/value
echo -n “1″ > /sys/class/gpio/gpio48/value
1->0->1
반복됨
2. 아두이노 Digital pin7에서 데이터를 읽어오는 예  
구 분 명 령 어 비고
GPIO 설정대상 선택 echo -n “223″ > /sys/class/gpio/export
echo -n “255″ > /sys/class/gpio/export
echo -n “48″ > /sys/class/gpio/export
풀업 레지스터 설정 echo -n “out” > /sys/class/gpio/gpio223/direction
echo -n “1″ > /sys/class/gpio/gpio223/value
논리레벨 시프터 설정 echo -n “out” > /sys/class/gpio/gpio255/direction
echo -n “0″ > /sys/class/gpio/gpio255/value
GPIO에서 읽기 echo -n “in” > /sys/class/gpio/gpio48/direction
cat /sys/class/gpio/gpio48/value
1이 읽혀짐
GPIO에서 읽기 echo -n “0″ > /sys/class/gpio/gpio223/value
cat /sys/class/gpio/gpio48/value
0이 읽혀짐

[3]  에디슨 보드로 Hello World에 도전하기

  이번에는 에디슨 보드로 LED점멸 동작시켜봄으로써 위대한(?) 첫걸음을 디뎌보려 합니다. 저는 H/W에서 “Hello World!” 격에 해당하는 것이 LED점멸이라고 생각합니다. 우선 LED점멸 기능을 위해 기본적으로 필요한 일들을 준비해 보도록 하겠습니다.

  1. 준비물

    ■ Intel Edison Breakout board – 핀 헤더를 기판 아래에 납땜하여 붙일 것

    ■ Arduino-Intel IDE – 아두이노 개발환경

    ■ 브레드보드

    ■ LED, 330Ω, 1kΩ 저항 각 1개

    ■ 2SC1815 NPN Transistor

    ■ Male to Female 점퍼와이어 3개

    ■ Male to Male 점퍼와이어 약간

    ■ 1N4007 Diode

 

  2. 브레이크 아웃보드 정비

  제일 먼저 DC전원잭을 아래 사진과 같이 연결해 줍니다.

29 금강초롱 15

  이 커넥터로 DC를 공급해주면 스스로 동작되는 무언가를 만들 수 있게 됩니다.

  다음으로 14핀 헤더를 4개 준비하여 아래 사진과 같이 납땜합니다. 납땜시 중앙 8번핀들을 우선 납땜하고 정렬에 문제가 없는지 확인하고 나머지 핀들을 조심스럽게 납땜합니다.


29 금강초롱 1629 금강초롱 17

 

  3. 에디슨 보드를위한 소프트웨어와 드라이버 파일 확보

    ■ FTDI Driver : http://www.ftdichip.com/Drivers/CDM/CDM%20v2.10.00%20WHQL%20Certified.exe 이 드라이버파일은 J3포트를 Serial 포트로 인식하게 만드는데 사용됨

 29 금강초롱 18 29 금강초롱 19

    ■ 에디슨보드 드라이버 : http://downloadmirror.intel.com/24271/eng/IntelEdisonDriverSetup1.0.0.exe

 29 금강초롱 20 29 금강초롱 21

    ■ PuTTY 터미널에뮬레이터

    http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

 

  4. 에디슨보드에 최신 리눅스이미지 설치하기

    4.1. 최신 이미지 다운로드

     https://communities.intel.com/docs/DOC-23242

    필자가 다운로드한 이미지는 edison-image-rel1-maint-rel1-ww42-14.zip입니다. 이 이미지를 내 로컬 디스크의 적당한 영역에 풉니다.

29 금강초롱 22

 

    4.2. 위 파일들을 에디슨보드에 복사하여 넣습니다.

    이 작업은 J16 커넥터에 마이크로USB케이블이 연결되면 에디슨보드가 마치 대용량 USB메모리처럼 보이므로 이곳에다 복사하여 넣으면 됩니다.

29 금강초롱 23

 

  5. 에디슨보드에 Yocto Linux 플래시디스크 굽기

    J3에 마이크로 USB케이블이 연결된 상태에서 PuTTY등을 써서 Telnet으로 에디슨 보드에 접근 합니다. 아래는 Yocto Linux를 설치하고 설정하는 예입니다.  에디슨 보드를 사용하다보면 플래시OS가 깨져 다운로드가 잘 안 되는 등 이상한 짓을 하는 경우가 있는데 이때도 아래와 같은 방법으로 시스템을 초기화 할 수 있습니다.

  ① 제일 먼저 마이크로USB 케이블(스마트폰과 PC 연결용)을 J3 포트에 연결합니다.

  ② 전원을 공급하기 위해 2번째 USB포트도 연결합니다.

  ③ 장치관리자를 실행합니다.

  ④ 장치관리자의 포트섹션에서 포트번호가 떠오르는지 확인합니다.

29 금강초롱 24

 

  ⑤ PuTTY 등 터미널에뮬레이터를 실행합니다.

   - Connection Type : Serial

   - Serial line : ComXX

   - Speed : 115200

29 금강초롱 25

 

   ⑥ Open을 클릭합니다.

   첫 번째 바이트를 까먹는 경우가 생기는데 이는 에디슨이 슬립모드에 있을 때는 Tx, Rx라인을 놓고 있다가 데이터가 들어가면 그때서야 깨어나기 때문이며 이때 1바이트가 달아납니다. 한번 키를 누른 후 20초 이내에 계속 눌러주면 데이터를 잃지 않습니다.

   ⑦ 빈 화면이 나타나면 엔터를 두 번 쳐봅니다.

   ⑧ “root”를 입력하면 암호를 물어보지 않고 그냥 넘어갑니다.

   ⑨ “reboot ota”를 입력한 후 엔터를 누릅니다. 에디슨이 리부팅 되면서 플래시에 굽기를 시작합니다. 약 10분이 소요됩니다.

   ⑩ 에디슨 보드 기본 설정하기

    다음번 프롬프트가 뜨면 “configure_edison”이라고 치면 환경 설정작업을 할 수 있습니다. 부득이한 사정이 없는 한 configure_edison으로 환경을 바꾸는 작업을 권하지 않습니다. 에디슨을 끌 때는 “systemctl poweroff”라고 치며 라즈베리파이에서 사용되는 리눅스 명령어가 대부분 먹혀듭니다.

 

  ※ 자주 쓰는 명령어 ※

       ls : 디렉터리 리스트

      cd : 디렉터리 이동

      cat : 파일의 내용을 봄

      vi : 파일을 편집

      [tab] : 디렉터리에 유사명칭의 파일이 존재할 때 타이핑을 도와줌

      find : 파일이나 디렉터리를 찾기

 

 

  6. 에디슨보드에 전원을 공급해보기

 29 금강초롱 24-2

 

   우선 마이크로USB 케이블을 2개 준비하여 J3과 J16에 꽂은 후 PC와 연결합니다. 아두이노 IDE의 com port는 장치관리자에서 확인된 포트번호로 설정해줍니다. 에디슨보드의 GPIO는 1.8V로 입출력이 이뤄지므로 본 LED 점멸테스트를 위해서는 전류 증폭회로가 필요하게 됩니다.

   필자는 일반적으로 디지털스위칭 용도로 많이 사용되는 2SC1815 NPN 트랜지스터를 사용하였습니다. 연결 회로도는 아래와 같습니다.

구분 Breakout Board 핀번호 용 도
Power 3.3V J20-P02  타겟(브레드)보드로 3.3V 공급
GND J19-P03  접지
OUTPUT J18-P13 - LED를 점멸하기 위한 1.8V레벨의 신호선
1KΩ을 거쳐서 2SC1815 NPN TR의 BASE로 연결됨
※ 아두이노의 Digital port D0에 해당됨
29 금강초롱 27 

 

  7. 아두이노IDE 환경에서 프로그램 하기

   우선 에디슨보드만을 위한 전용 아두이노 IDE 프로그램 설치가 필요하며 아래 주소에서 다운로드를 합니다. 이 프로그램은 인텔사에서 공급합니다. (https://www-ssl.intel.com/content/www/us/en/do-it-yourself/downloads-and-documentation.html)

29 금강초롱 28

 

   위 페이지에는 에디슨보드를 운영하는데 필요한 프로그램, 문서자료 등이 가득 들어 있으므로 자주 방문해 보는 것이 좋겠습니다.

아두이노 IDE에서 아래와 같은 간단한 소스를 입력해봅니다.

void setup() {

   // Digital Pin 0 in Arduino IDE is mapped to J18-P13 on the Edison breakout board

pinMode(0, OUTPUT);

}

void loop() {

   //Tun on the LED

digitalWrite(0,HIGH);

delay(1000);

   //Turn off the LED

digitalWrite(0,LOW);

delay(1000);

}

   컴파일이 끝나고 에디슨보드로 전송이 완료되면 아래와 같은 화면을 볼 수 있습니다.

29 금강초롱 29

 

   파일 > 예제에는 아두이노 IDE에 담겨있는 인텔 에디슨보드용 예제파일이 모여 있는 곳입니다. 이곳에 있는 예제들을 살펴보는 것 만으로도 상당한 발전을 이룰 수 있다고 봅니다.

 

※ 도움말 경로 : C:\arduino-windows-1.0.4\arduino-1.5.3-Intel.1.0.4\reference\index.html

※ 라이브러리 경로 : C:\arduino-windows-1.0.4\arduino-1.5.3-Intel.1.0.4\hardware\arduino\edison\libraries

 29 금강초롱 331

   브레드보드 상에서 동작중인 사진입니다. 사실 보기에는 단출해 보이지만 작가의 의도대로 동작이 이뤄지고 있음을 보여주는 의미심장한 사진임이 틀림없습니다.

29 금강초롱 30

 

   이번 차에는 에디슨보드에 핀 헤더를 부착하여 외부와 전기적으로 소통하는 채널을 형성하였고 이 핀에 LED를 연결하여 점멸하는 예제를 실행하여 봤습니다. 에디슨보드가 Break out보드와 결합되기만 하여도 얼마든지 외부와 소통할 수 있다는 것을 확인한 것이 이번 도전에서 가장 큰 의미가 아닐까 합니다.

   아쉬운 점이라면 에디슨보드에는 자체적인 A/D컨버터가 탑재되어 있지 않다는 점이며 아날로그량을 다루려면 반드시 추가 H/W구성이 반드시 필요하다는 것입니다. 이제 에디슨 보드로 무엇을 만들어 볼 수 있을까요? 진가를 발휘하고 싶다면 와이파이, 블루투스, SDIO, I2S를 활용하는 것이 어떨까요? 에디슨 보드가 인터넷과 한 몸이 되어 홈오토메이션, 헬스케어용 도구로 마구마구 활용될 수 있을 것으로 봅니다.

   다음 장에서는 와이파이나 블루투스 등을 응용한 예제를 진행하고자 합니다.

[4]  Wi-Fi로 인터넷과 소통하기

   이번에는 에디슨보드의 최대 강점인 외부와 소통하는 채널을 활용하는 방법을 다뤄보고자 합니다. 이 부분은 공개된 자료가 거의 없는 것이 현실인지라 Intel 커뮤니티, 유튜브, 구글검색 및 직접 실험을 통해 얻은 정보를 바탕으로 작성되었습니다. 기본적인 무선랜 환경을 만든 다음 웹브라우저를 통해 에디슨보드와 네트웍으로 소통하기까지를 쭉~ 진행해 보도록 하겠습니다.

※ 유의사항 : 만일 실습해 보기를 원할 경우 먼저 본 글을 한번 흝어 전체적인 흐름을 파악하고 따라 하시기를 권합니다.

  1. 실험환경 구성

    1.1. 인텔에디슨 브레이크아웃보드 운영환경 분석

    본 리뷰를 위해 지급받은 인텔 에디슨보드와 인텔 에디슨 브레이크아웃 보드를 활용하여 입출력을 하기에는 여러모로 불편한 점이 많습니다.

      ■ 브레이크아웃보드 핀 배열 문제 : 14핀*4열로 구성된 핀으로는 브레드보드판에 연결하기도 불편하고 신호선을 외부로 인출하기도 몹시 불편함

      ■ 신호레벨문제 : 에디슨보드는 기본적으로 1.8V로 디지털입출력이 이뤄지기에 일반적으로 사용되는 3.3V 내지는 5.0V 주변장치들과 통신에 제약이 있음

   위 문제를 극복하기 위해 필자는 다음과 같이 접근하였습니다.

    1.2. 나만의 브레이크 아웃보드 제작

    아래 사진과 같이 인텔 에디슨 브레이크아웃보드 핀 맵상 아두이노와 연계된 핀들을 활용하여 아래와 같이 만능기판에 베이스 보드를 만들게 되었습니다. 핀 배열은 기본적으로 아두이노 우노보드와 동일하게 구성하였습니다. 다만 에디슨 보드는 아날로그 입력 기능이 없는 관계로 DIG0~DIG13만 사용이 가능합니다.

29 금강초롱 332 29 금강초롱 333

※ 인텔에디슨용 아두이노보드는 당연히 Analog 입력이 가능하며 이를 위해 별도의 A/D컨버터칩을 사용하였으며 SPI로 에디슨보드와 통신합니다.

 

    1.3. 1.8v 레벨 컨버터

    아래 사진과 같이 MOSFET를 사용하여 1.8v와 3.3v를 이어주는 변환기를 만들었습니다. SMD 디바이스와 에나멜동선을 사용하면 20핀 DIP타입으로 크게 어렵지 않게 제작이 가능합니다.

29 금강초롱 334 29 금강초롱 335

 

 

  2. 에디슨보드 무선랜 접속환경 구성하기

     2.1. 제 1단계 – Simple Web Server WiFi.ino 실행

       ■ 아두이노실행 ▶ 파일 ▶ 예제 ▶ Wi-Fi ▶ Simple Web Server WiFi ▶ 컴파일/다운로드

       - 소스상 ssid 수정: 접속하고자 하는 무선랜 공유기의 SSID

       - 소스상 pass 수정: 공유기의 무선랜 암호

       ■ 아두이노 터미널 창을 열면 아래와 같은 내용을 볼 수 있음

        이 창을 통해 방금 에디슨보드가 부여 받은 사설 IP주소를 확인

29 금강초롱336

 

    2.2. 제 2단계 – 웹브라우져로 에디슨보드에 접속하기

      ■ Set Device Password 섹션 : 에디슨보드가 AP모드로 사용될 때 사용할 비번과 root 비번이 설정된다. 즉, 여기에 등록되는 비번이 무선랜과 root 두 군데에 동시에 사용된다.

      ■ Change Device 섹션 : 에디슨보드가 AP모드로 사용될 때 쓰일 SSID와 mDNS에서 식별될 이름을 부여 한다. 즉, Host name이 된다.

      ■ Connect a WiFi network 섹션 : 이미 설치된 무선랜으로 접속하기 위해 사용될 SSID와 네트웍프로토콜, 암호를 등록한다.

29 금강초롱337

      ■ 위 화면에서 “Submit”을 누르고 잠시 기다리면 아래와 같이 셋업이 정상적으로 종료되었다는 메시지를 볼 수 있습니다.

 29 금강초롱338

 

  3. 에디슨보드를 웹서버로 만들기

    3.1. 제 3단계 – Test_WiFiWebserver.ino 소스 컴파일하고 다운로드

/*

 WiFi Web Server

A simple web server that shows the value of the digital input pins.

using a Edison Board Wi-Fi channel.

This example is written for a network using WPA encryption. For

WEP or WPA, change the Wifi.begin() call accordingly.

Circuit:

* WiFi shield attached

* Analog inputs attached to pins A0 through A5 (optional)

1.created 13 July 2010

    by dlf (Metodo2 srl)

2.modified 31 May 2012

    by Tom Igoe

3.modified 2015.02.10

    by Dae-Hwan, Kim

    - Changed digital port reading process.

*/

#include <SPI.h>

#include <WiFi.h>

char ssid[] = “myLivingRoom”; // your network SSID (name)

char pass[] = “??????????”;     // your network password

int keyIndex = 0;             // your network key Index number (needed only for WEP)

int status = WL_IDLE_STATUS;

WiFiServer server(8080);  // by Dae-Hwan, Kim Modify

void setup() {

 // initialize the digital pin as an input.

 pinMode(0, INPUT);

 pinMode(1, INPUT);

 pinMode(2, INPUT);

 pinMode(3, INPUT);

 pinMode(4, INPUT);

 pinMode(5, INPUT);

 //Initialize serial and wait for port to open:

 Serial.begin(9600);

 while (!Serial) {

   ; // wait for serial port to connect. Needed for Leonardo only

 }

 // check for the presence of the shield:

 if (WiFi.status() == WL_NO_SHIELD) {

   Serial.println(“WiFi shield not present”);

   // don’t continue:

   while(true);

 }

 String fv = WiFi.firmwareVersion();

 if( fv != “1.1.0” )

   Serial.println(“Please upgrade the firmware”);

 // attempt to connect to Wifi network:

 while ( status != WL_CONNECTED) {

   Serial.print(“Attempting to connect to SSID: “);

   Serial.println(ssid);

   // Connect to WPA/WPA2 network. Change this line if using open or WEP network:

   status = WiFi.begin(ssid, pass);

   // wait 10 seconds for connection:

   delay(10000);

 }

 server.begin();

 // you’re connected now, so print out the status:

 printWifiStatus();

}

void loop() {

 // listen for incoming clients

 WiFiClient client = server.available();

 if (client) {

   Serial.println(“new client”);

   // an http request ends with a blank line

   boolean currentLineIsBlank = true;

   while (client.connected()) {

     if (client.available()) {

       char c = client.read();

       Serial.write(c);

       // if you’ve gotten to the end of the line (received a newline

       // character) and the line is blank, the http request has ended,

       // so you can send a reply

       if (c == ‘\n’ && currentLineIsBlank) {

         // send a standard http response header

         client.println(“HTTP/1.1 200 OK”);

         client.println(“Content-Type: text/html”);

         client.println(“Connection: close”);  // the connection will be closed after completion of the response

         client.println(“Refresh: 5”);  // refresh the page automatically every      5 sec

         client.println();

         client.println(“<!DOCTYPE HTML>”);

         client.println(“<html>”);

         // output the value of each analog input pin

         for (int digitalChannel = 0; digitalChannel < 6; digitalChannel++) {

           int sensorReading = digitalRead(digitalChannel);

           client.print(“Digital input [“);

           client.print(digitalChannel);

           client.print(“] is “);

           client.print(sensorReading);

           client.println(“<br />”);

         }

         client.println(“</html>”);

          break;

       }

       if (c == ‘\n’) {

         // you’re starting a new line

         currentLineIsBlank = true;

       }

       else if (c != ‘\r’) {

         // you’ve gotten a character on the current line

         currentLineIsBlank = false;

       }

     }

   }

   // give the web browser time to receive the data

   delay(1);

   // close the connection:

   client.stop();

   Serial.println(“client disonnected”);

 }

}

void printWifiStatus() {

 // print the SSID of the network you’re attached to:

 Serial.print(“SSID: “);

 Serial.println(WiFi.SSID());

 // print your WiFi shield’s IP address:

 IPAddress ip = WiFi.localIP();

 Serial.print(“IP Address: “);

 Serial.println(ip);

 // print the received signal strength:

 long rssi = WiFi.RSSI();

 Serial.print(“signal strength (RSSI):”);

 Serial.print(rssi);

 Serial.println(“ dBm”);

}

 

    3.2. 제 4단계 – 아두이노 IDE의 시리얼모니터 실행

    에디슨보드로 다운로드를 실행한 후 곧장 시리얼 모니터를 실행하면 아래와 같은 화면을 볼 수 있습니다. 물론 SSID와 IP주소는 필자와 다르게 보일 것입니다. 여기 보이는 주소가 “에디슨웹서버” 주소가 됩니다.

29 금강초롱339

    3.3. 제 5단계 – 웹브라우져를 띄워 웹서버(에디슨보드)로 접속

      ■ 접속주소 : http://192.168.123.108:8080/ 등으로 접속한다. IP주소는 위 시리얼모니터창의 값을 사용하고 포트번호 8080은 다른 값을 사용하면 안 됩니다. 이 값은 에디슨보드에 8080을 사용하겠다고 위 소스코드에서 선언이 되어있기 때문입니다.

      ■ 아래는 센서 상태를 원격으로 읽어 웹브라우져 상에 표시를 하고 있는 것입니다.

29 금강초롱340

      ■ 또한 시리얼모니터를 띄워 놓으면 아래와 같이 클라이언트(웹브라우저)가 접속해와 자료를 가져가고 있는 모습을 실시간으로 모니터링 할 수 있습니다.

29 금강초롱341

4. 마무리하기

   지난 두어 달 간 에디슨보드를 친구삼아 행복한 시간을 보냈습니다. 에디슨보드는 한마디로 초소형 리눅스컴퓨터이며 블루투스와 와이파이를 통해 외부 세계와 소통할 수 있고 자신은 SPI, I2C, USART 등으로 외연을 확대할 수 있는 제품임에 틀림이 없습니다. 에디슨보드가 현장에서 사용될 때는 아마도 STM32F4시리즈나 라즈베리파이2 보드 등과 접전이 불가피해 보입니다. 에디슨보드가 가격에 있어서 특별히 크게 메리트 있어 보이지는 않으나 간단한 센싱과 인터넷에 연결되어 작동하는 상황을 가정해 본다면 이러한 조건에서는 다소간의 경쟁력은 있어 보입니다. 에디슨보드의 컴퓨팅파워를 적극 활용해 웹을 기반으로 동작되는 어플리케이션을 구성한다면 나름 상당히 유용하겠다는 생각이 듭니다. 에디슨보드를 웹상에서 구동하려 한다면 다소간의 지식들은 필요해 보입니다.

웹서버 개념  3-Tier 아키텍쳐 등 Http서비스가 이뤄지는 기본 원리
TCP/IP개념  클라이언트(PC 웹브라우져)와 서버(에디슨보드)간 통신체계
Html/css/java script  html로 웹페이지를 구성하고 서비스가 이뤄지는 원리
Linux  에디슨 보드의 동작상태 모니터링 및 문제 해결
아두이노 우노  IDE기반에서 아두이노 프로그래밍, C언어 핸들링 등
기타  아나로그/디지털로직, SPI, I2C, SD CARD, Power, USB, Serial 등 이해

이상으로 부족하나마 에디슨 보드에 대한 리뷰를 마칩니다.

감사합니다.

  5. 참고

  · https://www-ssl.intel.com/content/www/us/en/do-it-yourself/downloads-and-documentation.html

  · https://communities.intel.com/message/264386#264386

  · https://communities.intel.com/docs/DOC-23192

  · https://communities.intel.com/community/makers/edison/getting-started

  · https://communities.intel.com/message/264386#264386

  · http://blog.microcasts.tv/2014/10/16/edison-mini-breakout-the-rea l-getting-started-guide

  · 아두이노 우노 스펙 : http://arduino.cc/en/Main/ArduinoBoardUno

  · 아날로그 입력핀 : https://communities.intel.com/thread/57506

  · 1.8v To 3.3v 레벨 변환기 제작

    – https://learn.sparkfun.com/tutorials/bi-directional-logic-level -converter-hookup-guide

    – http://dlnmh9ip6v2uc.cloudfront.net/tutorialimages/BD-LogicLevelConverter/an97055.pdf

  · https://communities.intel.com/message/250732#250732

 

저자소개
 99번 제작, 사진, 글 : 금강초롱 객원기자 

한국 마사회 정보기술처 근무

네이버 블로그 blog.naver.com/crucian2k3 운영 중

 

[기획상품] Intel® Edison Kit for Arduino + Wooden Case

Intel® Edison Kit for Arduino

Intel® Edison Breakout Board

Intel® Edison

 

 

 

Leave A Comment

*