Phần 1: Giới thiệu tổng quan về ESP8266

Wearable

Xin chào, tiếp nối loạt bài viết về chuẩn giao tiếp Bluetooh Low Energy, hôm nay chúng ta sẽ bắt đầu quá trình tìm hiểu các ứng dụng Internet Of Things sử dụng công nghệ truyền không dây khác, đó chính là chuẩn truyền Wifi. Hiện tại dòng chip ESP8266 của Espressif đang được sử dụng rất phổ biến trong các thiết bị giao tiếp với smartphone hay web server thông qua Wifi nhờ giá thành rẻ, module nhỏ gọn và đặc biệt dễ sử dụng thông qua firmware có sẵn từ nhà sản xuất. Do đó trong loạt bài viết này chúng ta sẽ thảo luận và tìm hiểu môi trường lập trình ứng dụng với các dòng chip ESP8266

Giới thiệu về dòng chip Wifi ESP8266

Chip ESP8266 được phát triển bởi Espressif để cung cấp giải pháp giao tiếp Wifi cho các thiết bị IoT. Điểm đặc biệt của dòng ESP8266 là nó được tích hợp các mạch RF như balun, antenna switches, TX power amplifier và RX filter ngay bên trong chip với kích thước rất nhỏ chỉ 5x5mm nên các board sử dụng ESP8266 không cần kích thước board lớn cũng như không cần nhiều linh kiện xung quanh. Ngoài ra, giá thành của ESP8266 cũng rất thấp đủ để hấp dẫn các nhà phát triển sản phẩm IoT

Tóm lại, ESP8266 vừa tích hợp nhiều phần cứng hỗ trợ, vừa kích thước nhỏ, vừa hợp túi tiền thì sao chúng ta có thể cưỡng lại được, đúng không nào 🙂

Cấu trúc phần cứng của dòng chip ESP8266 có thể tóm tắt như sau:

  • Sử dụng 32-bit MCU core có tên là Tensilica
  • Tốc độ system clock có thể set ở 80MHz hoặc 160MHz
  • Không tích hợp bộ nhớ Flash để lưu chương trình
  • Tích hợp 50KB RAM để lưu dữ liệu ứng dụng khi chạy
  • Có đầy đủ các ngoại vi chuẩn đê giao tiếp như 17 GPIO, 1 Slave SDIO, 3 SPI, 1 I2C, 1 I2S, 2 UART, 2 PWM
  • Tích hợp các mạch RF để truyền nhận dữ liệu ở tần số 2.4GHz
  • Hỗ trợ các hoạt động truyền nhận các IP packages ở mức hardware như Acknowledgement, Fragmentation và Defragmentation, Aggregation, Frame Encapsulation v.v…  (và phần stack TCP/IP sẽ được thực hiện trên firmware của ESP8266)

Do không hỗ trợ bộ nhớ Flash nên các board sử dụng ESP8266 phải gắn thêm chip Flash bên ngoài và thường là Flash SPI để ESP8266 có thể đọc chương trình ứng dụng với chuẩn SDIO hoặc SPI.

Dưới đây là mạch nguyên lý đầy đủ cho ESP8266:

schematic

Chúng ta có thể thấy board ESP8266 chỉ cần thạch anh và SPI flash chip và vài linh kiện điện trở rất đơn giản phải không nào. Do đó việc tích hợp giao tiếp Wifi vào board ứng dụng với ESP8266 rất dễ dàng và nhanh chóng.

Công ty Espressif cũng cung cấp khá đầy đủ tài liệu và software tools để các nhà phát triển sản phẩm có thể nhanh chóng làm quen và phát triển ứng dụng với ESP8266. Các bạn có thể tải về từ trang https://espressif.com/en/products/hardware/esp8266ex/resources . Chúng ta sẽ thảo luận 1 số tools trong các bài sau khi đi sâu vào làm việc với ESP8266 nha.

Về mô hình lập trình ứng dụng với ESP8266, chúng ta có thể chia làm 2 loại như sau:

  • Sử dụng firmware được cung cấp bởi Espressif và giao tiếp thông qua AT commands
  • Lập trình firmware trực tiếp vào ESP8266 sử dụng bộ thư viện SDK cung cấp bởi Espressif

Chúng ta sẽ thảo luận cách thức lập trình và so sánh 2 loại lập trình trên trong các bài viết tiếp theo.

Các chế độ boot up của ESP8266

Do ESP8266 không tích hợp Flash bên trong chip để lưu code ứng dụng nên chúng ta phải lưu code ứng dụng trong bộ nhớ ngoài bao gồm chip SPI Flash hoặc SDCard. Chúng ta có thể kết nối 1 số chân GPIO để báo cho ESP8266 nơi lưu code ứng dụng để từ đó ESP8266 có thể đọc code và thực thi.

Các chế độ boot up của ESP và cấu hình chân GPIO tương ứng  như sau:

bootmode

Chân MTD0 chính là chân GPIO15 của ESP8266. Chúng ta có thể kết nối điện trở kéo lên/kéo xuống hoặc dùng nút nhấn v.v.. trên board tạo tín hiệu High/Low cho các chân để chọn bộ nhớ chứa code trên board mà ESP8266 có thể đọc vào và thực thi (ví dụ như SPI Flash chip, SDCard). Ngoài ra ESP8266 còn chế độ cho phép truyền code ứng dụng từ máy tính thông qua UART và lưu vào bộ nhớ SPI Flash trên board. Chúng ta sẽ dùng chế độ này để nạp code mới cho các board ESP8266

Các loại module cho ESP8266 trên thị trường

Ngoại trừ module ESP-WROOM-02 được phát triển bởi chính Espressif cho mục đích nghiên cứu các tính năng của ESP8266, các module ứng dụng phổ biến hiện nay của ESP8266 đều được phát triển bởi công ty AI-Thinker

Hiện tại có khá nhiều module khác nhau cho ESP8266 được sản xuất bởi công ty AI-Thinker. Đặc điểm khác nhau giữa các module này bao gồm:

  • Loại anten sử dụng (PCB anten, chip anten hoặc gắn anten ngoài)
  • Dung lượng của chip Flash SPI trên board
  • Kích thước board của module
  • Có gắn khung nhôm chống nhiễu hay không
  • Số lượng pin GPIO đưa ra chân kết nối

Hiện tại AI-Thinker sản xuất 14 loại module cho ESP  từ module ESP-01 đến ESP-14. Các bạn có thể tham khảo chi tiết tất cả 14 loại module này trong website http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family

Ở thị trường VN thì 3 module là ESP-01, ESP-07 và ESP-12F khá phổ biến và sẽ được sử dụng để demo trong các bài viết sau nên chúng ta sẽ giới thiệu sơ các module ở đây:

ESP-01

esp-01

Sử dụng on-board PCB antenna
Có 2 LED trên board để báo nguồn và báo TX
Cung cấp 3 chân GPIO (GPIO0, GPIO2 và GPIO6) và 2 chân TXD/RXD cho UART
Dung lượng SPI Flash 4MByte
Đưa chân ra jumper luôn nên có thể kết nối trực tiếp với các board khác 1 cách nhanh chóng

ESP-07

esp-07

Sử dụng chip anten on-board và có IPEX connector hỗ trợ gắn thêm anten ngoài để tăng khoảng cách truyền
Có 2 LED trên board để báo nguồn và báo TX
Đưa ra 9 chân GPIO, 2 chân TX/RX cho UART, 1 chân REST để reset chip, 1 chân ADC, 1 chân CH_PD để đưa chip vào chế độ low power
Dung lượng SPI Flash trên board là 4MByte
Có thể hàn thêm jumper để kết nối trực tiếp với board khác hoặc hàn trực tiếp lên board ứng dụng

ESP-12F

esp-12F

Sử dụng PCB anten on-board
Đưa ra 11 chân GPIO, 2 chân TX/RX cho UART,  các chân cho SPI, chân RST để reset chip, 1 chân ADC
Dung lượng SPI Flash là 4MByte
Có thể hàn jumper để căm dây vào các board khác hoặc hàn trực tiếp lên board ứng dụng

Qua 3 module ESP8266 trên chúng ta có thể so sánh nhanh như sau:

  • ESP-01 đơn giản nhất, số chân GPIO ít nhất và không có shield chống nhiễu
  • ESP-07 thì nhiều chân GPIO hơn, có shield chống nhiễu nhưng dùng chip antenna nên khoảng cách truyền không xa bằng PCB anten. Tuy nhiên có thể tăng khoảng cách truyền bằng cách gắn thêm anten ngoài với IPEX connector trên board
  • ESP-12F đưa ra nhiều chân GPIO nhất, có shield chống nhiễu và on-board PCB anten  (lưu ý là mặc dù có các chân SPI nhưng đã được sử dụng để đọc SPI Flash bên trong nên chúng ta không thể sử dụng các chân này nha)

Do đó tùy vào yêu cầu của ứng dụng, chúng ta có thể lựa chọn module từ đơn giản đến phức tạp

Qua bài viết này, chúng ta đã được giới thiệu tổng quan về dòng chip ESP8266 cho giao tiếp Wifi của các thiết bị IoT. Đây là chip SOC tích hợp đầy đủ mạch RF và phần cứng để hỗ trợ truyền nhận dữ liệu trên Wifi nên không yêu cầu thiết kế board phức tạp; và đặc biệt giá thành lại rất rẻ nên rất phổ biến trong cộng đồng phát triển ứng dụng IoT. Trong bài viết, chúng ta đã khảo sát kiến trúc phần cứng, các ngoại vi, mạch nguyên lý cũng như các module phổ biến hiện nay của ESP8266. Đây chính là kiến thức cần thiết để tiếp tục tìm hiểu sâu hơn về cách sử dụng ESP8266 trong các bài viết tiếp theo.

Nguồn htelectronics.vn