Tag Archives: Cortex-M0+

TESPA – IoT Platform จากไทย ขอระดมทุนระดับโลก

ผลงานจากคนไทยครับ โดย Maker AsiaGravitech Thailand และ Deaware ได้เปิดตัวโครงการระดมทุนสร้าง TESPA ที่ Kickstarter โดยเป็น platform ที่มีไมโครคอนโทรลเลอร์และบอร์ดต่อพ่วงต่างๆ เหมาะสำหรับสร้างผลงานเอามาใช้กับ Internet of Things

โดยบอร์ดไมโครคอนโทรลเลอร์จะเรียกว่า Hawk ใช้ชิป ESP8266 และ STM32F042G6 (เป็น ARM Cortex-M0) มีพอร์ต USB และพัฒนากับ Arduino IDE ได้ ในส่วนของบอร์ดต่อขยายจะเรียกว่า Wings จะใช้เป็นอินพุตหรือเอาท์พุตหรือเซนเซอร์ มี 20 แบบ เท่าที่ดูจากรูปน่าจะสามารถต่อซ้อนขึ้นไปได้เรื่อยๆ ไม่ต้องกลัวว่าจะเกยกัน เพราะมีส่วนของแผงวงจรที่ยื่นออกไปข้างๆ

นอกจากนี้ยังมี cloud service ไว้พัฒนาผลงานโดยผ่านหน้าเว็บ รายละเอียดอื่นๆ (ภาษาไทย) มีในหน้าเว็บ Home of Maker ซึ่งก็เป็นผู้ร่วมสนับสนุนผลงานนี้ ราคาระดมทุนเริ่มที่ 15 ดอลลาร์ อาจจะแพงกว่า NodeMCU V1.0 ซึ่งราคาราวๆ 7 ดอลลาร์ แต่ ESP8266 รุ่นที่ใช้ในผลงานนี้มี flash ขนาด 8MB เลย

ที่มา https://www.kickstarter.com/projects/463050344/tespa-iot-development-platform

For English http://makerasia.com/2015/08/tespa-bringing-the-most-complete-internet-of-things-iot-development-platform-to-kickstarter/

พึ่งไปเจอมาว่า มี feature ซึ่ง TESPA จะทราบว่า HAWK นั้นเสียบอยู่บน WINGS อะไรบ้าง

 

 

มาแล้ว Arduino Zero บอร์ดใช้ชิป Cortex-M0+ และ Arduino TRE Developer Edition

บอร์ด Arduino ตัวใหม่ตัวนี้ชื่อว่า Arduino Zero ครับ ใช้ไอซีไมโครคอนโทรลเลอร์ ATSAMD21G18 ของ Atmel ซึ่งเป็นแบบ 32-bit ใช้แกนประมวลผลจาก ARM Cortex-M0+ ซึ่งเป็นรุ่นประหยัดไฟได้สูงมาก เดาว่าที่ใช้ชื่อ Zero ซึ่งแปลว่าศูนย์ น่าจะได้มาจากการที่แกนประมวลผลรุ่น Cortex-M0+ ที่ใช้อยู่นี้มีจุดเด่นในเรื่องการใช้กำลังไฟฟ้าน้อยมากๆ ทำงานที่ความเร็ว 48 MHz มีหน่วยความจำ SRAM 32 KB  และ flash 256 KB ตัวถัง LQFP 48 ขา

มีช่องต่อให้เสียบ Arduino Shield เหมือน Arduino ทั่วๆ ไป แต่เข้าใจว่าใช้แรงดันไฟฟ้า 3.3 โวลต์ซึ่งเป็นขนาดแรงดันไฟฟ้าของไฟเลี้ยงของไมโครคอนโทรลเลอร์ ถ้าเอา Shield ที่ทำงานที่ 5 โวลต์มาใส่อาจเกิดอันตรายหรือบอร์ดพังได้ นอกจากนี้ไอซี ATSAMD21G18 มีจำนวน I/O มากกว่าขาที่ใช้ต่อในรูปแบบ Arduino Shield อันที่จริงมีแม้แต่ USB embedded Host มาให้ด้วย ซึ่งก็น่าเสียดายเหมือนกันถ้าบอร์ดไม่ได้ต่อขาออกมาใช้ให้คุ้ม หรืออย่างก่อนหน้านี้ Arduino Due ก็มีช่องต่อที่ Shield หลายขาและก็มี USB host เหมือนกัน แต่ผมว่าบอร์ดนี้น่าจะเน้นเอาไปใช้ในงานที่ต้องการประหยัดไฟฟ้าหรือมีไฟฟ้าให้ใช้จำกัด

ยังไม่ระบุราคาและวิธีพัฒนาโปรแกรม ซึ่งเมื่อเป็นแบบ Cortex-M0+ แล้วคงใช้ IDE ตัวเก่าที่ใช้กับบอร์ด Arduino ซึ่งใช้ไมโครคอนโทรลเลอร์ AVR ไม่ได้เพราะคนละแบบกัน นอกจากนี้บนบอร์ดยังมีไอซี Atmel A06 0736 (ในคอมเมนต์หนึ่งจากเว็บที่มา บอกว่าน่าจะเป้นไอซี AT32UC3A4256 แบบเดียวกับบอร์ด ATSAMD21 XPlained ของ Atmel) ไว้ทำ Embedded Debugger (EDBG) ของ Atmel เองบนบอร์ดได้เลยผ่านทางช่อง USB ในการทดสอบและแก้ไขข้อบกพร่องของโปรแกรม ไม่ต้องหาอุปกรณ์อื่นๆ มาต่อเพิ่ม (แต่บนบอร์ดก็มีหัวต่อที่พิมพ์ข้อความว่า JTAG) แบบนี้น่าจะมาชนกับ PICkit In-Circuit Debugger ที่เป็นอุปกรณ์ของ PIC แต่ก็อาจไปฟาดกับ OpenOCD ก็เป็นได้

อีกข่าวคราว Arduino TRE ที่เคยเขียนถึง ก็ออกจำหน่ายสำหรับ developer จำนวนจำกัดแล้วครับ การเขียนโปรแกรมต้องผ่าน IDE ที่เป็นหน้าเว็บของมัน แต่งานนี้ก็คงต้องเจอกับ UDOO ซึ่งมีหน่วยประมวลผลแบบ Cortex-A9 (มีหลาย core) และ Cortex-M3 ที่น่าจะได้พลังประมวลผลมากกว่า

ที่มา @Arduino

ปล. รายละเอียดเพิ่มเติมคงจะมาจากงาน Maker Faire Bay Area next weekend ในบูธของ Arduino, ARM และ Atmel ครับ

updated: ล่าสุด มีคลิปสัมภาษณ์ Massimo Banzi CEO ของ Arduino ในงาน Maker Faire

ดูเหมือนว่า Arduino Zero สร้างมาเพื่อเน้นเอาไปใช้ในงาน Internet of Things ซึ่งน่าจะต้องไม่กินไฟมาก แต่คงต้องมีการเชื่อมต่อผ่านอินเทอร์เน็ตด้วย เช่นผ่าน Ethernet หรือ Wi-Fi ก็น่าจะใช้ต่อผ่าน USB host ที่มันมีอยู่ก็ดีนะครับ แทนที่จะต้องต่อผ่าน SPI อันที่จริง Arduino YUN ก็มี Wi-Fi แต่ดูเหมือนจะเน้นไปที่การเขียนโปรแกรมผ่าน cloud มากกว่า Internet of Things

ทดลองโปรแกรม LPC800 Mini-Kit บน Linux ด้วย lpc21isp

คราวที่แล้วที่ทดลองโปรแกรมบอร์ดไมโครคอนโทรลเลอร์ตัวน้อย LPC800 Mini-Kit โดยใช้โปรแกรม Flash Magic คราวนี้มาลองโปรแกรม lpc21isp บน Linux บ้าง ซึ่งแจกเป็น source code ก็ไปดาวน์โหลดแล้วสร้างเองเลยครับ

wget http://jaist.dl.sourceforge.net/project/lpc21isp/lpc21isp/1.94/lpc21isp_194.tar.gz
tar xzvf lpc21isp_194.tar.gz
sudo yum install glibc-static
gmake

ก็จะได้โปรแกรม lpc21isp มาใช้งาน จากนั้นก็ต่อแบบเดิมเลยครับ แต่ก่อนอื่นก็ทดสอบการเชื่อมต่อเหมือนอีกเช่นเคย แต่คงต้องกรอกผ่าน command line

sudo ./lpc21isp -detectonly /dev/ttyUSB0 115200 12000

ต้องเป็น root สามารถทำได้โดยใช้ sudo โดยที่ -detectonly คือการสั่งตรวจสอบรุ่นชิปบนบอร์ด (โปรแกรมนี้โปรแกรมชิปได้หลายรุ่น) /dev/ttyUSB0 คือ device ที่เป็น USB to UART ให้สั่ง dmesg เพื่อดูว่าเสียบแล้วได้ชื่ออะไร (อาจไม่ได้ชื่อเหมือนของผม) 115200 คือความเร็ว Baud Rate ของ serial port และ 12000 คือความถี่สัญญาณนาฬิกาที่ใช้ LPC800 ใช้ หน่วยเป็น kHz เมื่อพิมพ์คำสั่งแล้วเคาะ enter แล้ว รอให้เห็นจุดๆ หน่อยๆ ก็ให้กด ISP ค้างไว้ แล้วกด RESET มันก้จะแสดงชื่อรุ่นตามภาพข้างล่างครับ

lcp800-lpc21isp-001

จากนั้นก็สั่งโปรแกรมเข้าไปครับ มันรองรับทั้งไฟล์โปรแกรมที่เป็น hex และ bin และตัวมันเองสามารถเปิด serial terminal เพิื่อแสดงผลหลังจากโปรแกรมเสร็จแล้วด้วยเพื่อดูผล (ตรงคำสั่ง -term) ก็ใช้ hex file ตัวเดิมเลยครับ พิมพ์คำสั่งข้างล่าง เคาะ enter รอจุดกด ISP ค้างไว้ แล้วกด RESET เหมือนเช่นเคยครับ

sudo ./lpc21isp -term LPC810_HelloWorld_UART0_115K.hex /dev/ttyUSB0 115200 12000

lpc800-lpc21isp-002

ทดลอง LPC800 Mini-Kit

เมื่อได้ LPC800 Mini-Kit มาฟรีๆ ก็ขอทดลองและแสดงให้ดูเป็นตัวอย่างจะได้คุ้มค่าที่อุตสาห์ส่งมาให้ ก็ขอทดลองเบื้องต้นก่อนว่า มันใช้ได้จริงๆ ก่อนนะครับ โดยทำตามอย่างที่แนะนำใน http://lpcware.com/lpc800-mini-kit

ก็ต้องต่อ LPC800 กับตัวแปลง USB to UART ที่ทำหน้าที่เชื่อมต่อ serial port UART ของ LPC800 เข้ากับ USB ของคอมพิวเตอร์ ซึ่งถ้าจะให้มันเจอ USB to UART ก็ต้องติดตั้ง driver ก่อน ของผมใช้ชิป CP2102 ก็ไปหา driver ของมันมาติดตั้ง จากนั้นก็ต่อ CP2102 กับ LPC800 ตามนี้ครับ (ชื่อขาตามที่พิมพ์บนแผ่นวงจรของพวกมัน)

LPC TxD <--> CP210x  RXD
LPC RxD <--> CP210x  TXD
LPC GND <--> CP210x  GND

สำหรับไฟเลี้ยงของ LPC800 ผมจะใช้ charger 5 โวลต์ ต่อไปที่ช่อง mini USB ของมันจากก็ไป download โปรแกรม Flash Magic มาใช้งานเพื่อใช้ burn หรืออัดโปรแกรมลง LPC800 เมื่อติดตั้งมันเสร็จแล้วเปิดโปรแกรมนี้ขึ้นมา ก็ตั้งค่าหมายเลข COM Port ตามที่ได้รับตอนที่ลง driver นะครับ ของผมได้หมายเลข COM8 หรือถ้าไม่รู้ว่าหมายเลขไหนก็เรียกโปรแกรม compmgmt.msc แล้วดูที่ device manager ตรงที่ Ports ว่าได้หมายเลขไหน ค่าอื่นๆ ก็มี Baud Rate ให้เลือก 115200 ส่วน Interface เป็น None (ISP) และ Oscillator (MHz) กรอกค่า 12

lpc800-mini-kit-001

จากนั้นที่ LPC800 ที่ต่อทั้งไฟเลี้ยงและ USB to UART แล้ว ก็กดปุ่ม ISP ค้างไว้ แล้วกด RESET จะเป็นการกำหนดให้ LPC800 เข้าสู่ mode รับการ burn โปรแกรม แต่ก่อนที่จะ burn จริง ตรวจการเชื่อมต่อก่อนครับ ไปที่เมนู ISP เลือก Read Device Signature รอสักพัก ควรจะมี dialog แสดงรายละเอียดของ LPC800 ซึ่งแปลว่าเชื่อมต่อถ่ายโอนข้อมูลกันได้ครับ

lpc800-mini-kit-002

ขอปิดๆ Serial Number หน่อยนะครับ จากนั้นก็ไป download ที่จะ burn ลง LPC800  LPC810_HelloWorld_UART0_115K.hex ซึ่งคอมไพล์ไว้แล้วและแปลงเป็นไฟล์ hex แล้ว ก็ใส่ตำแหน่งของไฟล์นี้ในช่อง Hex File และติ๊กตรง Erase blocks used by hex File และ Verify after programming จากนั้นก็กด start เพื่อ burn โปรแกรมลง LPC800 ครับ

lpc800-mini-kit-003

เมื่อเสร็จแล้ว ก็จะมีคำว่า Finished ครับ

lpc800-mini-kit-004

ให้เรากด RESET ที่ LPC800 เพื่อเริ่มใช้งานโปรแกรมให้ที่เรา burn ลงไป โดยโปรแกรมนี้ จะทำการพ่นคำว่า Hello, LPC800! ออกมาทาง serial port UART ของมันเองอยู่เรื่อยๆ ถ้าใช้โปรแกรมที่ต่อกับ serial port ได้ไปดู เช่น PuTTY ก็จะเห็นผลครับ

lpc800-mini-kit-005

แล้วก็ไปอ่านเจอจาก http://www.cnx-software.com/2013/08/16/mcu-energy-efficiency-benchmark-freescale-kl02-microchip-pic24-ti-msp430-and-stmicro-stm32l/ ว่ามีการทดสอบ Cortex-M0+ ของ Freescale กับไมโครคอนโทรลเลอร์อื่น ซึ่งค่อนข้างแน่ชัดว่า Cortex-M0+ กินไฟต่ำอยู่แล้ว อันที่จริง Freescale น่าทดสอบเปรียบเทียบกับ Cortex-M0+ ของเจ้าอื่น เช่น LPC800 ของ NXP จะได้ยุติธรรมหน่อย

ได้รับ LPC800 Mini-Kits เป็นไมโครคอนโทรลเลอร์ ARM Cortex-M0+ แบบแจกฟรีแล้วครับ

เคยพูดถึงชิปไมโครคอนโทรลเลอร์ LPC800 จาก NXP ที่ใช้สถาปัตยกรรม ARM Cortex-M0+ คราวนี้ได้บอร์ด LPC800 Mini-Kits จากการแจกฟรีโดย element14 แล้วครับ ขอบคุณมากๆ ครับ
https://twitter.com/ohmohm/status/362584655611961345

updated: ไปเจออีกท่านที่ได้มาเช่นกันครับ

https://www.facebook.com/photo.php?fbid=482269538515353

Freescale เปิดตัวชิป Kinetis KL02 เป็น ARM Cortex-M0+ ที่ขนาดเล็กที่สุดในโลกเพียง 1.9×2.0 ตารางมิลลิเมตร

เคยเอ่ยถึงไมโครคอนโทรลเลอร์ที่ใช้ชิป LPC800 ของ NXP ซึ่งเป็น Cortex-M0+ มาครั้งหนึ่ง คราวนี้ของอีกผู้ผลิตครับคือ Kinetis จาก Freescale ซึ่งมีหลาย series ผลงานนี้คือ Kinetis KL02 อยู่ในตระกูล Kinetis L Series อันเป็นชิปสถาปัตยกรรม Cortex-M0+ รุ่น 32-bit ถูกออกแบบมาเพื่อเป็นไมโครคอนโทรลเลอร์แบบประหยัดไฟสุดๆ โดย ARM ซึ่งเป็นผู้ออกแบบชิปโดยไม่ได้ผลิตขายเอง แต่จะมีบริษัทอื่นๆ มาซื้อแบบซื้อสิทธิบัตรนั้นไปผลิตจำหน่ายหรือใช้งานชิปนั้น ก็เลยมักพบว่าชิปที่เป็น ARM อาจมีสถาปัตยกรรมเดียวกันแต่มาจากคนละผู้ผลิต

Kinetis KL02 ตามแหล่งข่าวอ้างว่าเป็นชิปไมโครคอนโทรลเลอร์แบบ ARM ที่มีขนาดเล็กที่สุดในโลกด้วยขนาด 1.9×2 ตารางมิลลิเมตร มันมี 20 ขา (จริงๆ น่าจะเรียกว่า ball มากกว่าเพราะขามันกลมๆ) ทำงานที่ความถี่สัญญาณนาฬิกาได้สูงสุด 48MHz หน่วยความจำแรม 4kB และหน่วยความจำ flash 32 kB มี UART (serial port) แบบพลังงานต่ำ พอร์ต SPI พอร์ต I2C สองพอร์ต มีตัวแปลง ADC (ตัวแปลงสัญญาณอนาล็อก เช่นระดับสัญญาณเสียง ให้ไปเป็นดิจิทัล) ขนาด 12-bit ตัว PWM ไว้ควบคุมความเร็วมอเตอร์ไฟฟ้า ใช้งานได้ตั้งแต่อุณหภูมิ -40 ถึง 85 องศาเซลเซียส สำหรับไมโครคอนโทรลเลอร์แล้ว มักไม่มีหน่วยควบคุมหน่วยความจำ (memory management unit: MMU) ทำให้ไม่สามารถใช้หน่วยความจำที่เป็น DRAM (dynamic RAM ซึ่งอาจแยกย่อยได้หลายแบบ เช่น double data rate synchronous dynamic RAM: DDRRAM) ซึ่งกินพื้นที่น้อยและราคาต่อหน่วยความจำถูกกว่า SRAM (static RAM) เพราะการใช้งาน DRAM ต้องการชิป MMU มาช่วยควบคุม ไม่ว่าจะเป็นการเข้าถึงหน่วยความจำแบบ paging จากหน่วยประมวลผล หรือการ refresh หน่วยความจำ DRAM ซึ่งเก็บข้อมูลด้วยตัวเก็บประจุซึ่งประจุไฟฟ้าของมันอาจรั่วได้ถ้าปล่อยทิ้งไว้เฉยๆ โดยไม่ไป “ย้ำเตือน” ความจำมันก็จะ “ลืม” ทำให้ไมโครคอนโทรลเลอร์ใช้ได้แค่ SRAM ซึ่งมักใช้ทำหน้าที่เป็น cache ให้กับ DRAM การใช้งานไมโครคอนโทรลเลอร์กับงานที่ต้องประมวลผลข้อมูลเยอะๆ เช่น image processing คงเป็นไปได้ยากแต่ถ้างานควบคุมซึ่งใช้หน่วยความจำไม่มากก็มักไม่มีปัญหา สำหรับขนาดที่เล็กของ Kinetis KL02 อาจใช้ในงานที่เดิมทีมีข้อจำกัดว่าชิ้นงานมีขนาดเล็กมากจนใส่ไมโครคอนโทรลเลอร์เข้าไปไม่ได้ เช่น อุปกรณ์ทางการแพทย์ที่คนไข้ต้องกลืนลงไป หรือการที่มันประหยัดไฟมากๆ ก็น่าจะเหมาะสำหรับงาน Internet of Things (IoT) อันที่จริงชิปไมโครคอนโทรลเลอร์ตัวอื่นๆ ถ้าวัดขนาดเฉพาะที่ตัว die ของชิปโดยไม่ไปวัดขนาดทั้งตัวถังไอซีแล้วขนาดมันก็เล็กมากอยู่แล้วนะครับ เช่น ATtiny13A มีขนาด 1.620×1.640 ตารางมิลลิเมตร ผลิตด้วยเทคโนโลยี 500 นาโนเมตร แต่มันเป็นชิปแบบ AVR รุ่น 8-bit ไม่ใช่ ARM ครับ หน่วยความจำแรมมีแค่ 32 ไบต์ และ flash ก็ขนาดแค่ 1kB เริ่มจำหน่ายให้ลูกค้ารายใหญ่ในเดือนมีนาคมนี้ครับ สำหรับการวางขายในตลาดทั่วไปจะเริ่มในเดือนกรกฎาคม 2013 ถ้าอยากลองตอนนี้ก็มีบอร์ด FRDM-KL05Z จาก Freescale ที่ใช้ชิปแบบ Kinetis KL05 ซึ่งเป็นรุ่นใหญ่กว่าแต่ก็เป็น Cortex-M0+ เหมือนกัน มี 32 ขา ความถี่สัญญาณนาฬิกาใช้ไม่เต็มที่แค่ 32.768MHz เดาว่าเพื่อเอาความถี่นี้ไปหารด้วย 32,768 (2 ยกกำลัง 15) เพื่อเป็นสัญญาณนาฬิกาของงานอื่นๆ เช่น RTC ตัวบอร์ดยังมีเซนเซอร์วัดความเร่งแบบสามแกน และ LED สามสี และยังมีวงจรที่ใช้กับ OpenSDA เพื่อที่จะเขียนโปรแกรมลงชิปผ่านทาง USB ได้โดยง่าย สะดวกแก่การพัฒนา นอกจากนี้ยังมีข่าวว่า ARM ได้ออก SDK ของชิป Cortex-M แบบ open source ด้วยครับ

ก่อนหน้านี้ก็เคยมีการแนะนำตัว Kinetis L Series มาตั้งแต่ปีที่แล้วแล้วครับ ประหยัดไฟถึงขนาดที่ว่ามีการสาธิตโดยการใช้ที่ปั่นไฟแบบมือหมุนแล้วเก็บพลังงานไฟฟ้านั้นโดยใช้แค่เก็บประจุเท่านั้นก็ยังทำงานต่อได้

Microcontroller ที่ใช้ชิป LPC800 จาก NXP แบบ Cortex-M0+ ประหยัดไฟสุดๆ

หน่วยประมวลเพื่องานไมโครคอนโทรลเลอร์ผลแบบ Cortex-M0+ ของ ARM ซึ่งประหยัดไฟสุดๆ ขนาดที่ว่าใช้ไฟจากตัวเก็บประจุยังทำงานได้ ถูกนำมาผลิตเป็นชิปโดย NXP และให้ชื่อรุ่นว่า LPC800 โดยในรุ่นนี้มีชิปหลายแบบแล้วแต่ว่าจะใส่ flash ใส่ RAM ไปมากน้อยขนาดไหน แต่ส่วนหน่วยประมวลข้างในยังเป็น Cortex-M0+ และก็มีบอร์ดทดลองออกมาด้วยครับ คือ LPC812-LPCXpresso Board

สำหรับผู้สนใจเรื่องนี้ในไทยครับ http://www.electoday.com/bbs/viewthread.php?tid=20180

ที่มา http://www.nxp.com/products/microcontrollers/cortex_m0plus/lpc800/