ถ้าคุณเป็นวิศวกร คุณจะใช้ชิพอะไรทำ IoT ดี? รีวิว SoC จากค่ายต่างๆ 1


โดย ดร.อานันท์ (โรเจอร์) สีห์พิทักษ์เกียรติ

เกริ่นนำ

Internet of Things (IoT) เป็นกระแสที่กำลังดังในช่วงนี้ ประกอบกับผมบังเอิญไปเกี่ยวข้องกับโครงการที่ต้องพัฒนา Platform ที่ดูยังไงก็ปฏิเสธไม่ได้ว่าคือ IoT (จริงๆ ตอนแรกไม่ได้คิดจะไปยุ่งเลย) เลยตัดสินใจสำรวจดูว่ามีตัวเลือกอะไรบ้างในตลาดปัจจุบันก่อนที่จะลงทุนลงแรงมากไปกว่านี้ โดยโจทย์ผมมีดังนี้

  • ต้องสามารถเขียน Firmware เองได้ (AT Command ไม่เอา) ถ้าให้ดีอยากได้ System on a chip (SoC) คืออุปกรณ์ส่วนวิทยุกับไมโครคอนโทรเลอร์ควรรวมอยู่ในชิพเดียวกันไปเลย
  • เครือข่ายไร้สายต้องทำ Mesh Networking ได้ นั่นคือสามารถส่งต่อข้อมูลข้ามหลายๆ โหนดไปยังจุดหมายปลายทางได้ ดังนั้น wifi กับ bluetooth ตัดไปได้เลยเพราะเป็น Star Network ส่งข้อมูลได้ทอดเดียว (ข้อยกเว้นพอมีแต่ยังไม่ใช้กันกว้างขวางเท่าไหร่)
  • ทำจำนวนมากได้ในราคาถูก (ซื้อ 100 ชิ้นราคาต่อชิ้นไม่เกิน $10 ต่ำกว่านี้ได้ยิ่งดี)

ดูๆ จากโจทย์แล้วมาตรฐานที่มีให้เลือกเหลือไม่มาก คือ ZigBee, 6lowPAN, Z-wave หรือไม่ก็ทำเองไม่อิงมาตรฐาน ซึ่งเดิมก็ทำอยู่แล้วแต่ใช้เวลาพัฒนาเยอะมาก ถ้าเลือกได้จะไม่ทำอีก

รวบรัดตัดความขอนำเสนอตารางผลการสำรวจให้ดูก่อนเลย คำอธิบายของแตละเจ้าอยู่ต่อไปครับ

zigbee comparison chart

Ti

เนื่องจาก TI มีทางเลือกค่อนข้างมาก ผมอ่านเป็นตัวๆ ไปแล้วขอสรุปคุณสมบัติสำคัญมาให้ดังนี้

  • CC2520 – เป็น Rf อย่างเดียวไม่มี MCU ในตัว ถ้าจะทำ ZigBee ต้องหา MCU มาใส่ code ส่วน ZigBee เพิ่มเอง ซึ่งแม้ TI จะมี ZigBee Stack ให้แต่ก็ต้องใช้กับ MCU ของเขา ดังนั้นถ้าหวังจะใช้ Microchip PIC, หรือ Atmel ดูแล้วปวดหัวแน่
  • CC2530/CC2531 – เป็น SoC ที่น่าสนใจมาก MCU ข้างในเป็น 8051 และมีทรัพยากรต่างๆ ให้ใช้เยอะดี (แต่ดันไม่มี I2C) ส่วน CC2531 เพิ่ม USB มาให้ ดังนั้นทำ USB Dongle ได้ง่ายๆ จุดเด่นอีกอย่างของ SoC นี้คือมีโมดูลและ Development Kit ทั้งของแท้และของเทียบ ขายหลายแบบและแพร่หลายมาก ราคาโมดูลอยู่ในช่วง $US6-7 ซึ่งคุ้มค่ามาก
  • CC2538 – เจ้า SoC ตัวนี้ต่างจาก CC2530/CC2531 ตรงที่ใช้ MCU ใหญ่ขึ้นเป็นตระกูล Cortex-M3 และสนับสนุน 6lowPAN ด้วย แต่โมดูลของเทียบหาซื้อยากมีน้อยแบบ และราคาสูงถึง US$30 (ตัวชิพเองประมาณ $US10)
  • CC2650 – SoC นี้รู้สึกว่าจะค่อนข้างใหม่ (2015) ดูแล้วเทพมากเพราะสนับสนุนทุกมาตรฐานตั้งแต่ ZigBee, 6lowPAN, และ Bluetooth BLE และดูเหมือนว่าถ้าเขียนโปรแกรมให้ดีจะใช้งานพร้อมกันได้ด้วย เช่น คุย ZigBee กับ Sensor Node ต่างๆ แต่ก็ต่อมือถือผ่าน Bluetooth พร้อมๆ กันไปได้ ชุดทดลองยังมีไม่เยอะแต่ก็มากกว่า CC2538 ส่วนราคานั้นดูจะแพงหน่อย (ชิพเองราคา $US16 ถ้าซื้อเป็นพันเหลือตัวละ $US8) แต่ถ้าทำอย่างที่ว่าได้จริงก็อาจจะคุ้ม

อีกประเด็นหนึ่งคือตัว C Compiler ที่ใช้ไม่ใช่ของฟรี (คงเป็นสาเหตุทำให้ชิพเหล่านี้ไม่ดังในวงการ Maker) เจ้า CC2530/CC2531 ต้องใช้ IAR Embedded Workbench ซึ่งแพงหูฉี่ (ประมาณ $US2,000 – 3,000) ส่วน CC2538, CC2650 จะเลือกใช้ IAR หรือ Code Composer Studio (CCS) ก็ได้ ซึ่ง CCS ราคาประมาณ 1 ใน 4 ของ IAR เท่านั้น และเห็นนักพัฒนาเปรียบเทียบว่า CCS ใช้งานได้ดีไม่แพ้ IAR แม้จะ optimize ขนาดของ firmware ได้ไม่ดีเท่า IAR ก็ตาม

silicon-labs

อีกเจ้าที่ดูจะมีผลิตภัณฑ์ที่คล้ายกับทาง TI คือชิพตระกูล EM35x, EM358x, และ EM359x จาก Silicon Labs โดยข้างในใช้ MCU Cortex-M3 เหมือน CC2538/CC2650 ของ TI แต่มีทางเลือกในส่วนของ Flash และ RAM ที่มากกว่าโดยตัวใหญ่ที่สุดมา Flash ให้ 512 KB และ RAM 64 KB เมื่อเทียบกับ 128/30KB ใน CC2650 แล้วต่างกันพอสมควร (แต่ในใจนึกๆ อยู่ว่ามีงานไหนที่จะต้องใช้ Flash/Ram มากขนาดเลยไม๊) ด้าน Compiler นั้นยังคงต้องใช้ IAR เหมือนทาง TI เห็นตรงนี้แล้วผมเลยไม่ค่อยสนใจศึกษาต่อเท่าไหร่นัก

st

เจ้านี้แม้จะมีผลิตภัณฑ์ตระกูล STM32W ที่น่าจะสูสีคู่แข่ง แต่เหมือนจะมีปัญหาเรื่อง ZigBee Stack ที่ไม่มีให้ใช้ เท่าที่ดูคร่าวๆ เมื่อก่อนเขาใช้ Stack ของบริษัทหนึ่งซึ่งถูกคู่แข่ง (Silicon Labs) ซื้อไป จึงเสียสิทธิ์ในการใช้งาน เลยตกอยู่ในสถานการณ์มึนๆ ผมไม่ได้คุ้ยต่อว่าเรื่องถึงไหนแล้ว มีปัญหาแบบนี้ขอไปทางอื่นก่อนดีกว่า

freescale

ใครที่เคยใช้โมดูล XBee มาก่อนอาจสนใจ Freescale ถ้าทราบว่าภายใน XBee ใช้ชิพตระกูลนี้ แต่เนื่องจาก XBee ออกมานานแล้วจึงยังใช้ชิพ MCU กับ RF แยกกันอยู่ (เท่าที่สำรวจคร่าวๆ XBee รุ่นล่าสุดก็ยังใช้วิธีนี้อยู่) ในขณะที่ทาง Freescale ปัจจุบันมี ZigBee SoC เป็นทางเลือกให้แล้วกับตระกูล KW2x ซึ่งใช้ MCU ตระกูล Cortex-M4

ส่วนโปรแกรมพัฒนาที่ใช้นั้นทาง FreeScale ทำไว้เป็นสองขั้นตอน คือ ขั้นแรกเรียกว่า BeeKit เป็นคล้าย Wizard ไว้ customize สิ่งที่ต้องการแล้วจึง export ไปยังขั้นที่สองซึ่งเป็น IDE และ compiler ซึ่งก็มีทางเหลือให้สองทางคือใช้ CodeWorrior หรือ IAR มีรุ่นฟรีที่จำกัดความสามารถให้ใช้ทั้งสองทางเลือก

atmel

ในฐานะที่เป็นผู้ผลิต MCU ที่ใช้ในบอร์ด Arduino ยอดนิยม ถ้าเขามี SoC ZigBee ก็น่าสน  ซึ่งก็พบว่าทาง Atmel ทำออกมาจริงๆ โดยมีผลิตภัณฑ์สองสาย คือ (1) ATmega256RFR2 ซึ่งใช้ CPU ตระกูล AVR และ (2) ATSAMR21XXXX ซึ่งใช้ CPU เป็น Cortex-M0+ จุดที่น่าสนใจคือตัวที่ใช้ AVR นั้นน่าจะดัดแปลงให้ใช้กับ Arduino IDE ได้ ซึ่งก็มีคนทำอยู่บ้าง ( ดู pinoccio, APio)   แต่ดูเป็นการ Hack ให้ใช้ Arduino IDE ได้และไม่แน่ใจว่ามันสามารถใช้ ZigBee Stack ได้หรือไม่ ดูๆ เหมือนเป็น protocol อืน (LightWeight Mesh) ก็เลยตกไป

ส่วนเจ้า Cortex-M0+ นั้นจะต้องใช้ AtmelStudio ในการพัฒนา ซึ่งจุดแข็งคือฟรี มี ZigBee Stack ชื่อ BitCloud ให้ใช้และดูมีคู่มือที่อ่านง่ายกว่าเจ้าอื่นๆ แถมตัว Evaluation Board ก็ดูน่าใช้ด้วย แต่ไม่เห็นมีโมดูลที่ใช้ชิพตระกูลนี้ทำออกขาย ถ้าเลือกใช้ตัวนี้คงได้ทำวงจรส่วน RF เองทั้งหมด ซึ่งแม้จะไม่ถึงกับยากเกินไปแต่ก็มีความเสี่ยงอยู่พอสมควร (วงจรความถี่สูงแบบนี้อ่อนไหวมาก)

nxp

ทาง NXP มีผลิตภัณฑ์ SoC คือ JN5168 (และพึ่งออก JN5169 แต่ข้อมูลยังน้อย) ซึ่งดูๆ ทีแรกก็ไม่มีอะไร แต่บังเอิญไปพบบอร์ด Mesh Bee ที่ใช้ชิพนี้และเป็นบอร์ด Open Source จึงเกิดสนใจขึ้นมา เพราะ Compiler ที่ใช้นั้นฟรี ใช้ชื่อว่า BeyondStudio IDE นอกจากนั้นทาง NXP ยังทำโมดูลสำเร็จที่มุ่งเป้าให้ผู้ผลิตสามารถเอาไปใส่ในผลิตภัณฑ์ได้โดยตรง (เจ้าอื่นมักมีแต่ Evaluation Kit บอร์ดโตๆ ถ้าจะใช้จริงต้องหาซื้อโมดูลจาก 3rd party หรือ ทำบอร์ดเอง) และดูเหมือนจะมีของเทียบจากจีนขายด้วยในราคาที่ถูกกว่าเยอะ (ไม่แน่ใจว่าชิพใช้ของเทียบด้วยไม๊เห็นตั้งชื่อว่า ZM5168)

โดยรวมถือว่าน่าสนใจเพราะ แจก Compiler ฟรี (แต่เสียตรงที่หน้าโหลดหายาก ขั้นตอนการขอใช้ลึกลับ ต้องอธิบายว่าจะใช้ทำอะไร รอเขาตอบตกลง ฯลฯ) และมีตัวเลือกเรื่องโมดูลสำเร็จซึ่งทำให้ไม่ต้องทำวงจรส่วน RF เอง หรือถ้าต้องทำเองก็มีตัวอย่างแบบวงจรของ  Mesh Bee ที่สามารถโหลดมาดูเป็นตัวอย่างได้

สรุป

ดูมาหลายเจ้าแล้วสรุปว่าใช้ตัวไหนดี

  • ถ้าสมมุติว่ามีทุนเยอะพอซื้อ compiler ตัวเกือบแสนได้  ผมอาจจะเลือกชิพ CC2530 จาก TI เพราะราคาถูก (ทั้งโมดูลน่าจะทำราคาได้ตัวละ $5-6 ) มีเครื่องมือพัฒนาพร้อม แต่จะหยุดคิดนิดเดียวตรงที่ CPU มันเป็น 8051 มันจะตกยุคเมื่อไหร่ก็ไม่รู้ เพราะดูส่วนใหญ่ชิพใหม่ๆ หันไปใช้ Cortex-M กันหมด ถ้าคิดแบบนี้ก็อาจต้องเปลี่ยนไปใช้ CC2538 ที่เป็น Cortex-M3 แต่ราคาก็จะพุ่งและเสน่ห์เรื่องโมดูล 3rd Party ที่มีเยอะก็จะหายไป
  • ถ้างบน้อย และอยากเริ่มลงมือพัฒนาเร็วๆ ผมอาจจะเลือก NXP เพราะซื้อ Mesh Bee หรือโมดูลจีนมาลองในราคาไม่แพงได้ ถ้าไม่มีปัญหาเรื่องการขอใช้ Compiler ก็อาจอยู่กันได้ยาวๆ (ผมเป็น อาจารย์ดังนั้นอาจอยากเอามาใช้สอนเด็กด้วย) แต่ข้อเสียก็จะอยู่ที่ตัว CPU เป็นอะไรก็ไม่รู้ แม้จะเป็น 32 bit แต่ถ้ามันเป็น Cortex-M ผมจะสบายใจขึ้น
  • ถ้าอยากลุยๆ หน่อย กล้าทำวงจรวิทยุเอง ผมจะเอา Atmel  ATSAMR21G18A เพราะ compiler ฟรีและเปิดเผยที่สุดแล้ว การที่เขาใช้ Cortex-M0+ ก็ทำให้ราคาต่อหน่วยถูกกว่าเจ้าอื่นที่เป็น Cortex-M3 (ราคา $6 เทียบกับ $9 เฉพาะชิพที่จำนวน 100)
  • FreeScale กับ SILabs ขอบอกว่าอ่านๆ แล้วไม่ค่อยโดน เลยไม่ได้เจาะลึกเท่าไหร่

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


Leave a comment

Your email address will not be published. Required fields are marked *

One thought on “ถ้าคุณเป็นวิศวกร คุณจะใช้ชิพอะไรทำ IoT ดี? รีวิว SoC จากค่ายต่างๆ

  • PopGreen

    ผมใช้ Nordic BLE Ant ร่วมกับ Samtech Lora
    อีกตัวก็ของ Dialog. มีวงจรชาร์จกับ balun มาเลย ลดอุปกรณ์ไปได้เยอะ มีรุ่น flash เยอะด้วย
    แล้วใช้ elua ทำสคิปต์รัน app แบบ download ได้