มารู้จัก Android things OS ใหม่ ที่ไม่ใหม่หมดจดจาก Google ตอนที่ 2 ติดตั้ง Android things

Kritsada Arjchariyaphat
Deaware
Published in
3 min readJan 8, 2017

Developer Kits

จากที่เกริ่นไว้ในตอนที่ 1 ว่าทางฮาร์ดแวร์ที่จะใช้ในการพัฒนาด้วย Android things ได้จำเป็นจะต้องได้รับการรับรองจาก Android things ซะก่อน

ปัจจุบัน ( preview edition ) ยังรองรับแค่เพียง 3 บอร์ดหลักๆ 3 CPU ต่างตระกูลต่างผู้ผลิตกันดังต่อไปนี้

1. Intel® Edison

บอร์ด Intel Edison จาก Intel หนึ่งเดียวในสามบอร์ดที่เป็น x86 ด้วยสเปค CPU 500MHz และไมโครคอนโทรลเลอร์อีก 100 MHz, Ram 1 GB และ eMMC 4GB Dual-band WiFi และ Bluetooth 4.0

จะสังเกตุได้ว่าความเร็วถือว่าไม่ได้สูงมาก แต่จุดเด่นคือ มีขนาดเล็ก, การเชื่อมต่อสามารถต่อยอดได้ง่ายทั้ง WiFi, Bluetooth

ข้อเสียของมันคือ 59$ ต่อโมดูล และต้องซื้อบอร์ดเสริมแยกต่างหาก O_o ด้วยราคาขนาดนี้ทำให้นักพัฒนารายเล็กๆ หรือผู้เริ่มต้นไม่ค่อยสนใจเท่าไหร่ เพราะสเปคเมื่อเทียบกับราคาถือว่าแพง

2. NXP Pico i.MX6UL

ยืนหยัดมาตั้งแต่สมัย Brillo กับ Pico I.MX6UL ด้วยความที่ Open ทางซอฟต์แวร์จริงๆ จาก NXP

สำหรับ I.MX6UL ความเร็วก็ไม่ได้สูงมากอยู่ที่ 696 MHz แบบ Single Core ARM Cortex-A7

ข้อดีมีอยู่อย่างหนึ่งที่เด่นมากคือ ราคาของ I.MX6UL ( เฉพาะ CHIP ) ถูกมากทำให้สามารถพัฒนาต่อยอดฮาร์ดแวร์ได้ค่อนข้างดี แต่พอเป็นโมดูลครบทั้งเซตตามรูปทำให้ราคาอยู่ที่ 69$ ก็ถือว่ายังแพงอยู่ดี แต่ก็ดีกว่า Intel Edison ที่ครบชุดแล้วแพงกว่า

แต่ด้วยความที่ NXP ค่อนข้างมีเอกสารและคู่มือการพัฒนาที่ดีมากสำหรับบริษัทขนาดเล็ก หรือนักพัฒนารายเล็ก ผมถือว่าเป็นบอร์ดที่น่าสนใจมากที่จะนำมาต่อยอดในงานออกแบบ

และถ้าสังเกตุว่าทั้งสองบอร์ดทั้ง Intel Edison แล Pico I.MX6UL จะมีความใกล้เคียงกันทั้งความเร็ว สเปค การเชื่อมต่อ และที่สำคัญไม่เก่งด้านมัลติมีเดียทั้งคู่
ใครจะใช้ Process Video หรือเล่นวีดีโอนี่เลิกคิดถึงสองบอร์ดนี้ไปได้เลย

3. Raspberry PI 3

ในวงการนักพัฒนา รวมไปถึง Maker ไม่มีใครไม่รู้จัก Raspberry PI ที่ปัจจุบันดำเนินการมาถึงเวอร์ชั่น 3 แล้ว ดังนั้นถ้า Android things จะดึงนักพัฒนาเข้ามาเล่น ทดสอบ ต้องทำบน Raspberry PI 3 นี่แหละใกล้ตัวที่สุดเพราะราคาแค่ 35$ และหาซื้อได้ง่าย

แต่ข้อสังเกตุคือ ตอนพัฒนา Brillo นี่ Raspberry PI ตอนแรกไม่อยู่ในกลุ่มนะครับ ซักพักถึงเข้าร่วมโปรเจค Brillo แล้วก็อยู่รอดมาถึง Android things โดยที่เพื่อนๆ คนอื่นหายไปหมดจนเหลือแค่ 3 บอร์ดนี่เอง

ด้วยสเปค ARM Cortex A53 Quad-core 900MHz และ RAM 1GB ทำให้เป็นบอร์ดที่เร็วแรงที่สุดใน 3 บอร์ดนี้แล้ว แต่ถ้าใครทดลองเล่นทำแสดงผลแล้วรู้สึกช้า ไม่ต้องแปลกใจเพราะ Android things preview นี่ยังไม่มีการใช้งาน Hardware ประมวลผลทั้งนั้น ซอฟต์แวร์กันล้วนๆ ดังนั้นก็ต้องรอครับ ถึงจะได้เห็นประสิทธิภาพที่แท้จริงกัน

Raspberry PI 3 ฉันเลือกนาย

สำหรับผู้เขียนขอเลือก Raspberry PI 3 มาเขียนบทความครับ เพราะถ้าผู้อ่านสนใจจะได้ทดลองเล่นไปด้วยกันได้เลย

เนื่องจากเป็นบอร์ดเดียวในที่ยกตัวอย่างมา ที่มี HDMI ดังนั้นจึงสามารถต่อจอ HDMI monitor ประกอบไปด้วยได้นะครับ

ต้องย้ำกันอีกทีว่า System Image จะถูกจัดเตรียมให้โดย Google, Android things ให้ดาวน์โหลดจาก link

ดังนั้นสายฮาร์ดคอร์แบบจะ build จาก source เองเพื่อปรับแต่งอะไรซักอย่างก็อดไปครับ

Flashing the image

  1. นำ SD Card ขั้นต่ำขนาด 8GB ขึ้นไปเสียบที่คอมพิวเตอร์
  2. Unzip image ที่ดาวน์โหลดมาบนวินโดว์ให้ใช้โปรแกรมอย่าง 7-Zip
  3. วิธีการแฟลชทำได้เหมือน ​Raspbian Os เลยหรือดูได้จาก

4. นำ SD Card ที่ผ่านการแฟลช Image แล้วเสียบเข้าไปที่บอร์ด Raspberry PI

5. เตรียมบอร์ดราสเบอรี่ไพ โดยตรวจสอบว่าต่อพอร์ตตามต่อไปนี้

หมายเลข 1 เสียบสายพาวเวอร์ผ่าน micro USB โดยพยายามหาซอร์สที่มากกว่า 2A หรือเทียบ เท่าจะดีครับ

หมายเลข 2 เสียบสายแลนเข้ากับเน็ตเวิคของเรา

หมายเลข 3 เชื่อมต่อ HDMI เข้าไปที่จอมอนิเตอร์

6. รอซักครู่จนกว่า Android things จะเริ่มบูตขึ้นมาบนหน้าจอ

ทีนี้เราก็จะสามารถใช้ adb tool กับตัว Android things หรือพัฒนา Application
ได้แล้ว

มาแอบดูโครงสร้างของ Android things บน SD Card กันดีกว่า

โครงสร้างของ Android things บน SD Card

สังเกตุว่าโครงสร้างของ Android things มีการแบ่ง partitions ถี่ยิบมาก
ปกติบน Raspbian Os จะแบ่งออกเป็น

Boot ( FAT32 ) ประมาณ 70 MB และที่เหลือเป็น Linux Os ( Ext4 ) ตามขนาดของ SD card ทั้งหมด

ดังนั้น Android things ที่ออกแบบให้แต่ละพาทิชั่นมีหน้าที่แตกต่างกันเป็นอย่างดี ดังนั้นข้อแรกที่จะช่วยคือกรณีที่เกิดไฟดับระหว่างการทำงานตัวระบบปฏิบัติการจะไม่พังไปเลยทันทีครับ ตรงนี้ก็ตรงจากตอนที่ 1 ที่บอกว่า Google ตั้งใจสร้างระบบปฏิบัติการบน Connected Embedded Devices ที่ผู้ใช้ไม่จำเป็นต้องมีความรู้ Linux กัน

หมายเหตุจากผู้เขียน :

ในตอนที่ทดลองผู้เขียนพบว่าจอที่เตรียมมา Raspberry PI มีการอ่านค่า EDID ไม่ถูก

ทำให้การแสดงผลผิดพลาด ซึ่งอาการแบบนี้เป็นตั้งแต่ในระดับ kernel จึงได้ทดลองแก้คอนฟิกดูว่าจะสามารถคอนฟิกได้เหมือนกับ Linux ปกติไหม

เข้าไปที่ CONFIG.TXT พบว่าลักษณะการ pass parameter ยังใช้ของ Raspberry PI อยู่ทางผู้เขียนจึงได้ลอง pass config parameter ของจอไป

การแสดงผลก็เหมือนจะถูกต้องแต่ตัว Android things ยังไม่ยอมแสดงผลให้ตรงกับค่าใหม่ที่คอนฟิกเข้าไป อาจจะต้องไปแก้ที่ส่วนอื่นอีกหรือปล่าวตรงนี้ผมไม่แน่ใจครับเพราะ Google ปิดการแก้ไขระบบหมด ต้องเดาๆ เอา

จุดนี้ต้องรอดูกันว่าอนาคตจะมีการแก้ปัญหาในส่วนนี้ไหม ในกรณีที่งาน IoT จำเป็นต้องเลือกขนาดฮาร์ดแวร์ ที่ระบบต้องรับรู้ระดับ kernel แต่เราไม่สามารถแก้ไขระบบอะไรเพิ่มเติมได้เลย

ตอนต่อไปเริ่มต้นเขียน App สำหรับ Android things กัน

--

--