Review Intel Edison – What will you make?

Review Intel Edison – What will you make?

          Thomas Alva Edison ชาวอเมริกันผู้นี้คงคุ้นหูหรือเป็นแบบอย่างของใครหลายคนเนื่องจากเป็นนักประดิษฐ์ที่มีผลงานมากมาย แต่ที่โด่งดังและทำให้เป็นที่รู้จักของทุกคนคือเขาเป็นผู้ประดิษฐ์หลอดไฟฟ้าที่สามารถใช้งานได้จริงขึ้นสำเร็จเป็นคนแรกของโลก พร้อมด้วยวลีเตือนใจให้เกิดความพยายามในการทำสิ่งต่างๆ อย่าง 
          “I have not failed. I’ve just found 10,000 ways that won’t work.”
          “ผมไม่ได้ล้มเหลว ผมแค่พบ 10,000 วิธีการที่มันไม่สำเร็จ”
          และ 
          “Genius is one percent inspiration, ninety-nine percent perspiration.” 
          “อัจฉริยะนั้นมีแรงบันดาลใจร้อยละ 1, อีกร้อยละ 99 คือความพยายามทำงานหนัก”
          เกริ่นนำด้วยชื่อของนักประดิษฐ์คนสำคัญคนนี้ เนื่องจาก Intel ได้นำชื่อของเขามาใช้เป็นชื่อของสินค้าชื่อว่า Intel Edison

Intel Edison

01

Intel Edison Module

          บอร์ดจากผู้ผลิตชิพรายใหญ่อย่าง Intel ด้วยพลังการประมวลผลของไมโครโพรเซสเซอร์ Intel Atom x86 Dual-Core 500 MHz รันระบบปฏิบัติการ Linux Yocto (for embedded) สามารถทำงานแบบ Multitasking ได้ เสริมด้วยไมโครคอนโทรลเลอร์ Intel Quark ความเร็ว 100 MHz เพื่อรองรับการทำงานแบบ Real-Time หน่วยความจำหลัก 1GB LPDDR3 แฟลชแบบ eMMC 4GB นอกจากนี้ยังมาพร้อมกับ Wi-Fi 802.11 a/b/g/n และ Bluetooth 4.0 Low Energy (BLE) บนบอร์ด จึงถูกจัดอยู่ในกลุ่มบอร์ดสำหรับทำ Internet of Things เหมาะกับนักพัฒนาตั้งแต่มือสมัครเล่น นักประดิษฐ์ จนถึงผู้ที่ต้องการนำไปพัฒนาผลิตสินค้าใช้งานจริง มี I/O ต่างๆ ถึง 40 ขา สามารถเชื่อมต่ออุปกรณ์ได้หลากหลายทั้ง SD Card UART I2C SPI I2S พร้อม USB 2.0 OTG ด้านพลังงานขณะ Standby กินต่ำสุดเพียง 13-35 mW เท่านั้น
          Intel Edison รองรับการพัฒนาแอพพลิเคชั่นบน CPU OS ที่เป็น Linux ด้วย Arduino IDE สามารถเขียนโปรแกรม Arduino ลควบคุมการทำงานของ I/O ต่างๆ นอกจากนี้ยังสามารถพัฒนาด้วย C/C++ หรือ Python และรองรับการพัฒนา Node.JS และ HTML5 ผ่าน Intel XDK ส่วนการพัฒนาบน MCU OS ที่เป็น RTOS (Real-Time OS) มี SDK และ IDE ให้พัฒนา นอกจากนี้ยังสามารถเชื่อมต่อเข้ากับระบบต่างๆ ของ Intel ได้ โดยทาง Intel มีโซลูชั่นสำหรับการพัฒนา Internet of Things ตั้งแต่ระดับอุปกรณ์เล็กๆ ไปจนถึงระบบใหญ่บน Cloud และแพลตฟอร์มในการวิเคราะห์ข้อมูล Intel IoT Analytic Platform
Intel Edison มีจำหน่าย 3 รูปแบบ ได้แก่
– Intel Edison Module (ThaiEasyElec ไม่ได้นำโมดูลเปล่าเข้ามาจำหน่าย)
– Intel Edison Mini Breakout Board (รหัสสินค้า EFDV355)
– Intel Edison Arduino Breakout Board (รหัสสินค้า EFDV373)
          โดยที่ตัวโมดูลมีเสาอากาศให้เลือกแบบ On-Board Antenna และแบบ External Antenna ผ่านคอนเน็คเตอร์แบบ u.FL ซึ่งเรานำเข้ามาจำหน่ายเฉพาะแบบ On-Board Antenna ผ่านคอนเน็คเตอร์แบบ u.FL ซึ่งเรานำเข้ามาจำหน่ายเฉพาะแบบ On-Board Antenna

02

Intel Edison Mini Breakout Board 

03

Intel Edison Arduino Breakout Board

          หากใครซื้อเป็นโมดูลเปล่าๆ จะใช้งานยากสักนิดหนึ่งเพราะคอนเน็คเตอร์แบบ 70 ขาของโมดูลนั้นหาซื้อยาก และต้องทำแผ่นวงจรเชื่อมต่อเพิ่มเติมขึ้นเอง ดังนั้น หากสนใจนำไปใช้งานอย่างน้อยควรจะซื้อแบบ Mini Breakout Board ซึ่งสามารถเชื่อมต่อ USB ได้ และมีช่องสำหรับบัดกรีเฮดเดอร์เพื่อเชื่อมต่ออุปกรณ์ที่ต้องการได้สะดวกขึ้น ส่วนใครที่ต้องการนำไปเรียนรู้อาจจะเลือกเป็นแบบ Arduino Breakout Board ก็สะดวกไปอีกแบบเพราะสามารถเอา Shield ของ Arduino ที่เคยใช้งานอยู่มาเสียบแล้วลองเขียนโปรแกรมได้

04

คอนเน็คเตอร์ 70 ขาตัวเมียบน Mini Breakout และ Arduino Breakout

สำหรับเสียบโมดูล Edisonเราเลยลองซื้อ Intel Edison Mini

          เราเลยลองซื้อ Intel Edison Mini Breakout Board เป็น Intel Edison Module เสาอากาศแบบ On-Board Antenna พร้อมกับ Mini Breakout Board และซื้อ Arduino Breakout Board เปล่าๆ มาเพิ่มเติมมาเพื่อทดลองใช้งานโดย Intel Edison Module จะแยกใส่กล่องพลาสติกแข็งมาเหมือนเวลาเราซื้อ CPU คอมพิวเตอร์แบบกล่องจาก Intel เราสามารถถอดไปใส่กับ Mini Breakout Board หรือ Arduino Breakout Board ได้
Getting Started
          พอแกะบอร์ดออกมาจากกล่องแล้วอย่าเพิ่งใจร้อนเสียบสายเสียบไฟนะครับ ให้ลองเข้าไปอ่านข้อมูลที่ intel.com/Edison ก่อน

05

  หากสนใจส่วนไหนก็สามารถกดเข้าไปอ่านได้เลยครับ เสร็จแล้วลื่อนลงมาด้านล่างจะมีลิงก์ต่างๆ ที่เป็นประโยชน์มากมาย ที่น่าสนใจได้แก่ Community > Getting started จะนำเข้าไปสู่ข้อมูลสำหรับเริ่มต้นเรียนรู้ และส่วน Software Downloads > Arduino IDE สำหรับดาวน์โหลดซอฟท์แวร์ในการพัฒนา ให้ดาวน์โหลดมาก่อนดีกว่าเพราะขนาดใหญ่เหมือนกัน

06

Software Downloads
          กดเข้าไปจะแสดงหน้า Edison – Software Downloads เลือกดาวน์โหลดตามแต่ละระบบปฏิบัติการที่ตัวเองใช้งานได้เลย (แต่ในพรีวิวนี้จะอ้างอิงของ Windows นะครับ) โดยของ Windows จะเป็นไฟล์ .7z ขนาดประมาณ 160 MB ซึ่งต้องใช้โปรแกรม 7-zip แตกไฟล์ด้วยครับ นักพัฒนาคนไหนยังไมเคยลงหรือเคยใช้งาน 7-zip ไปหามาไว้ใช้ด่วนๆ แล้วจะรู้ว่าของดีและฟรีมีอยู่ในโลกนี้ ใช้แล้วลืมสิ้นทั้ง WinZip หรือ WinRAR กันเลยทีเดียว (www.7-zip.org)

07

นอกจากนี้ให้โหลดไฟล์ Windows Driver Setup มาด้วยครับ อยู่ด้านล่างของหน้านี้ ขนาดไม่ใหญ่ประมาณ 10MB เป็นไฟล์ .exe

08

กลับมาที่ในส่วนของ Community > Getting Started ให้ลองกดเข้าไปดูครับ จะขึ้นหน้าแบบนี้ สำหรับ Windows ก็ให้ทำตามหน้านี้ได้เลย ส่วนใครใช้ Mac หรือ Linux ก็กดลิงก์ตรงรูปแอปเปิ้ลกับเพนกวินของตัวเองได้เลยครับ

09

    ในหน้านี้จะมี Video Overview และมีขั้นตอนให้เริ่มต้นใช้งานบอร์ด หากไม่รีบร้อนสามารถนั่งดูไปก่อนก็ได้

10

  ในขั้นตอนแรกบนหน้าเว็บไซต์จะสอนให้เราประกอบตัวบอร์ดก่อน เนื่องจากบอร์ดใส่กล่องแยกเสาพลาสติกมา และแยกตัวโมดูล Edison ใส่กล่องมา ทำตามขั้นตอนได้เลย

11

หลังประกอบเสร็จให้เชื่อมต่อสาย Micro USB สองเส้นเข้าไปที่บอร์ด แต่อย่าเพิ่งเสียบสายเข้าคอมพิวเตอร์นะครับ เส้นด้านล่างใกล้ๆ ชิพ FTDI คือ Serial Console ของ Linux ส่วนเส้นด้านบนใกล้ๆ สวิชต์ใช้อัพโหลดโปรแกรมจาก Arduino IDE แล้วเลื่อนสวิตช์ SW1 มาทาง Micro USB Port เพื่อให้จ่ายไฟผ่านทางพอร์ตนี้

12

กลับมาที่ไฟล์ที่โหลดเสร็จแล้วจะได้มา 2 ไฟล์ คือ arduino-windows-1.0.4.7z และ IntelEdisonDriversSetup1.0.0.exe ให้คลิกขวาเลือก 7-zip > Extract Here แตกไฟล์ .7z ออกมาก็จะได้ไดเรกทอรี่ Arduino-ide1.5.3-Intel.1.0.4

13

 เข้าไปในไดเรกทอรี่แล้วเปิดไฟล์ arduino.exe รันโปรแกรม Arduino IDE 1.5.3 สำหรับพัฒนาโปรแกรมบนบอร์ด Intel Edison เลือกเมนู Tools > Board > Intel Edison

14

Driver Installation
          จากนั้นเสียบสาย USB เข้าที่คอมพิวเตอร์ หน้าต่าง Driver Installation จะแสดงขึ้นมา

15

 เปิดไฟล์ IntelEdisonDriverSetup1.0.0 ที่โหลดมาเพื่อติดตั้ง Driver แล้วทำตามขั้นตอนที่แสดงบนหน้าจอ ในหน้า Welcome … กดปุ่ม Next >

16

 ในหน้า License Agreement กดปุ่ม I Agree

18

 ในหน้า Choose Components เลือก Intel Edison device USB driver แล้วกดปุ่ม Next >

19

  ในหน้า Choose Install Location ให้ใช้ค่าที่โปรแกรมติดตั้งกำหนดมาให้ กดปุ่ม Install

20

รอให้ติดตั้งจนเสร็จ

21

เมื่อติดตั้งเสร็จ จะแสดงหน้าไดอะล็อก Installed successfully กดปุ่ม OK

22

ในหน้า Completing… กดปุ่ม Finish

23

 สำหรับ Software และ Driver อื่นๆ ที่ต้องใช้เพิ่มเติมในเครื่องอาจมีอยู่แล้ว เช่น FTDI Driver และ PuTTY Software หากยังไม่มีสามารถทำตามขั้นตอนที่ 3 ในลิงก์ Getting Started (https://communities.intel.com/docs/DOC-23147) เพื่อติดตั้งได้ เมื่อติดตั้ง Software กับ Drivers เรียบร้อย Arduino IDE ของเราก็พร้อมเชื่อมต่อกับบอร์ด Intel Edison
Examples with Blink
          กลับมาที่ Arduino IDE เลือกเมนู File > Examples > Basics > Blink

จะแสดงโค้ดโปรแกรมดังนี้

  เลือกเมนู Tools > Board > Intel Edison เลือกเมนู Tools > Serial Port แล้วเลือกพอร์ต Intel Edison Virtual Com Port ในเครื่องโดยดูได้จาก Device Manager จากตัวอย่างเป็น COM10


          กดปุ่ม Upload  หลอด LED บนบอร์ดที่ต่ออยู่ที่ขา 13 จะกระพริบติดดับสลับกัน

 Intel Edison Arduino Breakout Board สามารถเชื่อมต่อกับ Shield ของ Arduino ได้ เนื่องจากออกแบบมาให้มีขาสัญญาณตรงกันกับ Arduino Uno R3 รายละเอียดต่างๆ สามารถอ่านเพิ่มเติมได้จากเอกสาร Intel Edison Arduino Board Hardware Guide
(https://communities.intel.com/docs/DOC-23161)

  แม้ในทางฮาร์ดแวร์จะออกแบบให้ Edison แบบ Arduino Breakout Board สามารถใช้งานร่วมกับ Arduino Shield ได้ แต่ในทางปฏิบัติแล้วตัวอย่างโปรแกรมรวมทั้งไลบรารี่ต่างๆ นั้นไม่สามารถที่จะใช้ของเดิมได้ทั้งหมด เนื่องจาก Edison มีสถาปัตยกรรมและคำสั่งแตกต่างจากของ Arduino ทั่วไปที่เป็น AVR
          หากเป็นอุปกรณ์มีการเชื่อมต่อพื้นฐานไม่ซับซ้อน ยกตัวอย่างเช่นใช้เพียง Digital Input หรือ Digital Output ต่างๆ จะไม่มีปัญหา แต่หากมีการเรียกใช้ไลบรารี่ที่ซับซ้อนหรือมีการลงไปใช้งานอ้างถึง AVR ไลบรารี่หรือโปรแกรมตัวอย่างเหล่านั้นอาจจะไม่สามารถทำงานได้ ผู้พัฒนาก็ต้องเขียนติดต่อสื่อสารด้วยตัวเอง จากปัญหานี้ทาง Intel ได้ทดสอบและจัดทำเอกสารสรุปผลการทดสอบ Shield ต่างๆ ที่สามารถใช้งานร่วมกันได้กับ Edison (รวมทั้ง Galileo 1 และ 2) ไว้ให้ดาวน์โหลดมาศึกษาเพิ่มเติมได้จากลิงก์ https://communities.intel.com/docs/DOC-23424 ซึ่งปัจจุบันได้รวบรวมข้อมูลของ Shield และ Module ต่างๆ ไว้มากกว่า 60 ตัว จากผู้ผลิตรายต่างๆ เช่น Sparkfun Adafruit DFrobot SeeedStudio เป็นต้น

30

Example with Ultrasonic Module
          ทดสอบการทำงานของ Ultrasonic Module สำหรับวัดระยะ รหัสสินค้า ESEN267 ซึ่งมีตัวอย่างโค้ดอยู่ที่หน้าสินค้า ดาวน์โหลดแล้วแตกไฟล์ US020_GPIO_Arduino >> Download ที่นี่ 

31
32

 เปิดไฟล์ใน Arduino IDE สำหรับ Edison

33

เชื่อมต่อฮาร์ดแวร์ให้ตรงกับที่โค้ดกำหนดโดยใช้ขา 2 ต่อเข้ากับขา Echo และใช้ขา 3 ต่อเข้ากับขา Trig ของโมดูล พร้อมต่อ 5V กับ GND ให้กับโมดูลด้วย

34

 กดปุ่มอัพโหลดเพื่อคอมไพล์และอัพโหลดโปรแกรมให้บอร์ดทำงาน จากนั้นเปิด Serial Monitor ของ Arduino เพื่อดูการทำงาน จากภาพลองยิง Ultrasonic ลงพื้นจากโต๊ะที่มีความสูงประมาณ 75 เซนติเมตร ค่าที่แสดงออกมาเป็นหน่วยมิลลิเมตร

35
36

Example with Real-Time Clock Shield
          จากตัวอย่างที่ผ่านมาแสดงว่าเราสามารถใช้โค้ดตัวอย่างโปรแกรมของ Arduino กับ Edison ได้ แต่อย่างที่เกริ่นไว้ข้างต้นแล้วว่าเราไม่สามารถใช้โค้ดตัวอย่างของ Arduino ได้ทั้งหมด เราจึงลองเอา EFDV345 Real-Time Clock Shield มาเชื่อมต่อแล้วทดสอบ เนื่องจากมี I/O ต่างๆ ครบถ้วนดี เหมาะกับการนำไปเริ่มต้นเรียนรู้ ทั้ง LED Button Buzzer Real-Time Clock 7-segment Light Sensor Temperature Sensor สามารถศึกษารายละเอียดเพิ่มเติมการเชื่อมต่อฮาร์ดแวร์ได้จากหน้าเว็บไซต์

37

  ให้ดาวน์โหลดตัวอย่างได้จากลิงก์ http://www.thaieasyelec.com/downloads/EFDV345/Example%20Code_Real%20Time%20Clock%20Shield.zip 
          เสร็จแล้วแตกไฟล์ออกมาจะได้ไดเรกทอรี่ต่างๆ ได้แก่ MsTimer2 TickTockShield TimerOne TM1636 ดังภาพ

38

นำไลบรารี่ต่างๆ ไปไว้ที่ C:\Users\<ชื่อผู้ใช้ของท่าน>\Documents\Arduino

39

เสียบ Real-Time Clock Shield เข้ากับบอร์ด Edison

40

 ปิดหน้าต่างโปรแกรม Arduino IDE ทั้งหมดแล้วเปิดขึ้นมาใหม่ จากนั้นไปที่เมนู File > Examples > TickTockShield > RunLED แล้วกดปุ่ม Upload เพื่อคอมไพล์และอัพโหลดไปที่บอร์ด เพื่อดูผลการทำงานจะเห็นว่าโค้ดตัวอย่างทำงานได้ (ลองเปลี่ยนความเร็วในตัวแปร speed)

41
42

ไปที่เมนู File > Examples > TickTockShield > SensorControlBrightness เปิดตัวอย่างการใช้งานเซ็นเซอร์วัดแสงด้วย LDR จากนั้นกดปุ่ม Upload แล้วดูการทำงาน เมื่อเราเอานิ้วไปบังตัว LDR จะทำให้หลอด LED ติดขึ้นมา

43

 ไปที่เมนู File > Examples > TickTockShield > MeasureTemperature เปิดตัวอย่างการใช้งานเซ็นเซอร์วัดอุณหภูมิ จากนั้นกดปุ่ม Upload แล้วดูการทำงาน จะพบว่าสามารถอัพโหลดได้แต่ไม่ทำงาน ดังนั้น เราไม่สามารถใช้งานตัวอย่างโปรแกรมของ Arduino ที่มีอยู่มากมายกับ Edison ได้ทั้งหมด ก็ต้องเขียนโปรแกรมเชื่อมต่อกับฮาร์ดแวร์ต่างๆ ด้วยตัวเอง การเลือกใช้ Shield จึงควรต้องตรวจสอบจากลิสต์ของทาง Intel ก่อนว่าจะสามารถใช้งานตัวอย่างได้เลยหรือไม่