Giới thiệu

  • Bài viết này nhằm mục đích giới thiệu về IoTs, các phần cứng, platform hỗ trợ
  • Những ưu điểm của vượt trội của các platform dùng LUA, Javascript, Python và C/C++ cho MCU

Nội dung

Trong giai đoạn phát triển như vũ bão về kỹ thuật điện tử và máy tính hiện nay, phần cứng ngày càng mạnh mẽ và rẻ hơn. Đặc biệt là các thiết bị với khả năng kết nối Internet và đảm nhận các công việc tự động hóa cho con người. Thì việc lập trình cho thiết bị, cho máy tính trở nên ngày càng quen thuộc hơn với nhiều người.

Thuật ngữ IoTs (Internet Of Things) ngày càng phổ biến cùng với các ứng dụng rộng rãi của nó với xã hội. Và một điều không thể phủ nhận là “miếng bánh” IoTs cực kỳ lớn mà không có nhà sản xuất hay công ty nào có thể ôm hết. Thị phần của nó phát triển theo cấp số nhân và được dự báo bởi những tổ chức uy tín hàng đầu thế giới:

Để làm IoTs, tất nhiên, phần cứng kết nối Internet là cực kỳ quan trọng. Hiện nay, trên thế giới có những giải pháp nào?. Đi đầu phải kể đến những tên tuổi như Intel với Intel Edison, rồi TI với CC3000, Nordic với NRF51822, ATMEL thì đang chuẩn bị tung ra thị trường SoC Wifi cạnh tranh. Và nổi trội nhất có lẽ phải kể đến $3 Wifi SoC ESP8266 của Espressif, Trung Quốc.
Và những phần cứng nào hỗ trợ làm prototype nhanh cho các dự án IoTs: Arduino, ChipKIT, mbed, Rasberry PI, BeagleBone Black cùng nhiều sản phẩm của những nhà bán lẻ nổi tiếng như Sparkfun (REDBOARD), Adafruit, Seeed ….

Gần đây chúng ta thấy ESPRUINO, javascript interpreter trên phần cứng chip 32-bit STM32. NodeMCU, LUA interpreter cho ESP8266.

Arduino – C/C++

Khá quen thuộc đối với cộng đồng lập trình viên. Về cơ bản thì platform này hỗ trợ nhanh chóng lập trình cho các thiết bị với nhiều module, cảm biến, cơ cấu bán sẵn và tương thích, đồng thời có cộng đồng phát triển lâu đời với hệ thống thư viện khổng lồ. Nhưng nó không thật tối ưu cho hoạt động “nồi đồng cối đá” và sản xuất số lượng lớn. Thêm vào đó hầu hết các board Arduino đều là vi xử lý 8-bit cũ kỹ.
arduino

mbed – C/C++

Hãng chip di động hàng đầu thế giới ARM Micro với dòng chip dành cho điều khiển Cortex – Mx đã phát triễn mạnh mẽ trong vài năm trở lại đây cùng hàng loạt các nhà sản xuất như ST, TI, NXP, Freescale, … đã cho ra đời platform mbed (tương lai là mbedOS) dành cho các dòng chip 32-bit này. Về giá cả cũng như khả năng hoạt động thì hầu hết các board Arduino đời trước đều không thể so sánh với các board mbed được. Cũng như hệ thống phần mềm được tổ chức bài bản của mbed.

Một số ưu điểm của mbed:
– Các hàm I/O hao hao giống với Arduino (để người dùng Arduino dễ chuyển sang)
– Platform xây dựng cho hệ thống IoT bao gồm nhiều module, tích hợp cả TCP/IP stack, USB, GSM PPP, M2M protocol, MQTT, CoAP, Websocket … và RTOS
– Ngỗn ngữ C/C++
– Được hỗ trợ bởi nhiều nhà sản xuất chip, sản xuất prototype
– Ứng dụng viết sử dụng mbed tối ưu về hiệu suất và thời gian đáp ứng
– Online compiler, chia sẻ trực tuyến, làm việc nhóm, hệt thống quản lý source code hg …
mbed

ESPRUINO – Javascript

Lập trình javascript cho phần cứng, vi điều khiển, khá thành công khi gọi vốn trên kickstated. Vi điều khiển STM32 32-bit được nạp sẵn một bộ biên dịch mã javascript được port từ tiny-js sang và các module hỗ trợ ngoại vi viết sẵn. Nó có nhiều lợi ích:
– Javascript là ngôn ngữ lập trình dễ sử dụng, thông dụng
– IDE xây dựng dạng visual, hỗ trợ blockly
– Có rất nhiều module xây dựng sẵn, bao gồm cả phần cứng và phần mềm
– Tất cả đều là mã nguồn mở, với giấy phép rất thoải mái.
espruino

NodeMCU – LUA

Chỉ mới xuất hiện gần đây khi mà Module/Chip SoC Wifi giá rẻ của Espressif – ESP8266 xuất hiện. Đây có thể nói là một platform điển hình nhất cho ứng dụng IoTs, với với khoản tầm $3 – $5 là chúng ta có thể có 1 module wifi có thể lập trình được, ngay lập tức mà không cần thiết bị nạp, phần cứng phức tạp nào hỗ trợ. Ngôn ngữ LUA cũng có nhiều ưu điểm vượt bật hơn so với Javascript khi dùng cho Embedded. Nhiều lợi ích của NodeMCU:
– Dễ dàng kết nối đến Wifi router
– Lua 5.1.4 (không có module debug, os.)
– Event-Drive programming – Như Javascript
– Build-in json, file, timer, pwm, i2c, spi, 1-wire, net, mqtt, coap, gpio, wifi, adc, uart and system api.
– GPIO pin re-mapped, use the index to access gpio, i2c, pwm.
– Có cả firmware chỉ số nguyên và firmware với hỗ trợ float
nodemcu
alt text

SPARK.IO – C/C++

Spark.io với khởi đầu là Spark Core sử dụng MCU ARM Cortex-M3 STM32F103 và module wifi CC3000 có nhiều ưu điểm:
– Phần cứng mạnh mẽ hỗ trợ phát triển ứng dụng IoT rất nhanh
– Trình biên dịch online, hỗ trợ đổ chương trình qua Wifi – rất đơn giản
– Có cộng động sử dụng đang phát triển nhanh, nhiều module thư viện chất lượng.
– Opensource hardware, software
Tuy nhiên giá thành mỗi node khá cao. Những board sau này khi thay thế wifi chip bằng Broadcom BCM43362 góp phần giảm giá thành đáng kể.
Ngoài ra Spark còn phát triển các module dạng mini như PØ and P1 giá thành có thể đáp ứng được cho mass production, những module hỗ trợ 2G/3G …
Có thể nói tới thời điểm hiện tại, Spark đã đi trước khá xa so với các platform khác.
spark-img

Micropython – python

Cũng giống trình thông dịch LUA và Javascript chạy trên Vi điều khiển, micropython cũng cần khá nhiều RAM, tuy nhiên việc lập trình sử dụng nguồn tài nguyên phần cứng thì rất nhanh và đơn giản. Micropython hỗ trợ các loại MCU từ pic 16-bit, đến Atmel teensy, STM32 và đặc biệt hỗ trợ cả chip ESP8266.
Kết nối internet hỗ trợ CC3000 của TI và ESP8266 qua UART. Tài liệu sử dụng khá rõ ràng, opensource cả phần cứng lẫn firmware với license MIT dễ chịu. Tuy nhiên, so với spark, nodemcu và espruino, tới thời điểm hiện tại micropython chưa có IDE official nào.
upython-img

Raspberry PI Zero

Máy tính $5, nghe có vẻ hơi điên rồ, nhưng RASPBERRY PI FOUNDATION với hàng loạt các mẫu máy tính giá rẻ trước đây đã tiến đến thị trường IoTs khi cho ra đời Zero. Giá rẻ, nhưng có đầy đủ các tính năng như 1 máy tính, tương thích với các app cũ, chạy trên nền raspbian, dĩ nhiên là python, nodejs hay bất kỳ ứng dụng nào có thể biên dịch trên raspbian đều có thể thực thi được. Bất kỳ lập trình viên nào không am hiểu phần cứng đều có thể bắt đầu ý tưởng của mình ngay lập tức:

  • 1Ghz, Single-core CPU
  • 512MB RAM
  • Mini HDMI and USB On-The-Go ports
  • Micro USB power
  • HAT-compatible 40-pin header
  • Composite video and reset headers

ESP32

Hứa hẹn sẽ chiếm lĩnh thị trường IoTs trong năm 2016, đàn anh của ESP8266 có giá mắc hơn 1 chút (dự đoán trong khoảng 3$ – cho module), nhưng có lẽ sẽ giải quyết tất cả các khuyết điểm của ESP8266 Chi tiết
Về cơ bản, EPS32 có những ưu điểm sau:
– 802.11 n (2.4 GHz), up to 150 Mbps
– Bluetooth 4.2 (BR/EDR/BLE)
– Xtensa® Dual-Core 32-bit LX6 microprocessors, up to 400MIPS, 128 KB ROM, 416KB SRAM
– RTC, 12-bit SAR ADC up to 16 channels, 2 × 10-bit D/A converters, 10 × touch sensors
– 4 × SPI, 2 × I2S, 2 × I2C, 2 × UART, 1 host (SD/eMMC/SDIO), 1 slave (SDIO/SPI), Ethernet MAC interface with dedicated DMA and IEEE 1588 support, CAN 2.0, IR (TX/RX), Motor PWM, LED PWM up to 16 channels

Quả thật với giá thành và tính năng như vậy, ESP32 quả là điên rồ. Thời gian ra mắt dự kiến quý 2 năm 2016.
Tác giả may mắn đựợc nhận 1 trong 200 board cho chương trình beta, hứa hẹn sẽ develop trước một vài thư viện phổ biến cho ESP32, đặc biệt là mqtt

alt text

Ngoài ra trên thế giới còn rất nhiều platform hiệu quả nữa giúp cho việc phát triển hệ thống một cách nhanh hơn và phần lớn không được đề cập ở đây.

Lịch sử thay đổi

  • 21-Apr-2015: Khởi tạo
  • 22-Apr-2015: bổ sung spark.io
  • 03-May-2015: bổ sung Micropython
  • 19-Dec-2015: Bổ sung Raspberry PI Zero, ESP32

Tham khảo:

  • Nguồn ảnh được lấy từ website của các sản phẩm được nhắc đến
  • http://www.businessinsider.com
  • Một số đánh giá dựa trên kinh nghiệm của người viết.


Phần cứng fast prototype cho IoTs

Xin chào!

Website vidieukhien.net sẽ được chuyển hướng sang https://learn.iotmaker.vn. Các nội dung sẽ được di chuyển và đóng khi hoàn thành. Cám ơn bạn đã quan tâm