Viet Dev

Cover image for Phần cứng fast prototype cho IoT
Tuan for Unicloud Group

Posted on

Phần cứng fast prototype cho IoT

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 framework dùng C/C++ cho MCU, LUA, Javascript, Python và Rust

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ữ IoT (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" IoT 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

Global IoT Market forecast

Để làm IoT, tất nhiên, phần cứng thiết bị kết nối Internet rất 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, Microchip với các giải pháp SoC Wifi/IoT cạnh tranh. Và phổ biến có lẽ phải kể đến chip Wifi rẻ tiền SoC ESP8266, ESP32 của Espressif.
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, Rust cho ESP32

Arduino - C/C++

Khá quen thuộc đối với cộng đồng lập trình viên phần cứng. 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ồ. Hầu hết các board Arduino đều là vi xử lý 8-bit và hiện này có nhiều biến thể Arduino với các vi xử lý đời mới mạnh mẽ, đa kết nối và rẻ tiền hơn.

Bên cạnh đó còn xuất hiện PlatformIO cung cấp framework phần mềm tương thích adruino hỗ trợ mạnh mẽ nhiều loại thiết bị và có nhiều thư viện hỗ trợ hơn, cơ chế quản lý và cập nhật gói cũng được tích hợp

Board Arduino

mbedOS - C/C++

Hãng thiết kế 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 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 được với các board mbed này. 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

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

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.

Micropython

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:

Image description

  • 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

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
  • 3-May-2022: Cập nhật nội dung

Latest comments (0)