ESP8266, hay gọi đầy đủ là ESP8266EX[1][2] là một vi mạch Wi-Fi giá rẻ, có hỗ trợ bộ giao thức TCP/IP và có thể tích hợp vào thành phần của vi điều khiển, được sản xuất bởi hãng Espressif Systems ở Thượng Hải, Trung Quốc.
Chip ESP8226 lần đầu tiên được các nhà sản xuất phương Tây chú ý vào tháng 8 năm 2014 với module ESP-01, do nhà sản xuất bên thứ ba là Ai-Thinker sản xuất. Module này cho phép các vi điều khiển kết nối với mạng Wi-Fi và thực hiện các kết nối TCP/IP đơn giản bằng cách sử dụng các lệnh kiểu Hayes (tập lệnh AT). Tuy nhiên, ban đầu hầu như không có tài liệu tiếng Anh nào về chip và các tập lệnh của nó.[3] Vì mức giá rất thấp với rất ít thành phần bên ngoài khác trên module, các module ESP8266 đã thu hút nhiều hacker khám phá nó và các phần mềm trên đó, cũng như việc dịch thuật các tài liệu tiếng Trung Quốc của chip.[4]
ESP8285 là một chip ESP8266 với 1 MiB bộ nhớ flash được tích hợp, cho phép người dùng có thể sản xuất các thiết bị có khả năng kết nối với Wi-Fi chỉ với một chip đơn.[5]
Dòng chip kế thừa ESP8266 là ESP32, bao gồm cả vi điều khiển ESP32-C3[6] tương thích chân.
Tính năng kĩ thuật
Như nhiều vi mạch khác, cần thêm các khối khác để vi mạch ESP8266EX có thể hoạt động được. Một thiết kế tối thiểu cho ESP8266EX cần thêm các khối (tham khảo hình: Thiết kế tham khảo cho các module sử dụng chip ESP8266EX):[7]
• Power supply (tạm dịch: khối nguồn)
• Power-on sequence and reset
• Flash
• Crystal oscillator
• RF
• External resistor (tạm dịch: điện trở ngoại)
• UART
Các module ESP8266 như ESP-01, ESP-12,... đều được thiết kế từ chip ESP8266EX với các khối như trên.
Tính năng
Các tính năng của chip ESP8266EX bao gồm:
Bộ xử lý: Lõi vi xử lý L106 32-bit RISC dựa trên Tiêu chuẩn Tensilica Xtensa Diamond,[1] hoạt động ở tần số 80 MHz[8][9] và SRAM trên chip.[10]
Bộ nhớ nội: Bộ nhớ nội của ESP8266EX bao gồm SRAM và ROM. ESP8266EX có thể truy xuất các bộ nhớ này thông qua các interface iBus, dBus, và AHB. Kích thước SRAM nhỏ hơn 36kB khi ESP8266EX hoạt động ở chế độ station. ROM của ESP8266EX không lập trình được nên chương trình được lưu trong Flash ngoại.[8][9]
Flash ngoại: ESP8266EX sử dụng flash ngoại để lưu trữ chương trình và boot trực tiếp chương trình từ bus SPI.[11][12] Kích thước flash ngoại mặc định sẽ khác nhau với từng loại module ESP8266, như ESP-01 có kích thước flash ngoại là 1MB,[8] ESP-12E có kích thước flash ngoại là 16MB.[9] Nếu chương trình sử dụng kích thước lớn hơn kích thước mặc định thì bộ flash ngoại với kích thước lớn hơn phải được sử dụng tuy nhiên kích thước flash ngoại tối đa về mặt lý thuyết cho phép là 16 MB.[8][9] Kích thước bộ nhớ flash nhỏ nhất có thể là 512 kB (tắt chế độ OTA) hoặc 1 MB (bật chế độ OTA).[8][9]
3 SPI: general Slave/Master SPI, Slave SDIO/SPI và general Slave/Master HSPI.[2]
I²C: Hỗ trợ 1 I²C hoạt động được ở cả chế độ master và slave. Vì các GPIO đều có thể được cấu hình ở chế độ cực máng hở nên các GPIO đều có thể được cấu hình cho các chân SDA hay SCL của I²C bằng phần mềm.[14][15]
Giao diện I²S với DMA (sử dụng chung chân với GPIO)
UART: Hỗ trợ 2 UART là UART0 và UART1. UART0 sử dụng GPIO3 (RX) và GPIO1 (TX). UART1 sử dụng GPIO2 (TX) và GPIO8 (TX). Tuy nhiên GPIO8 được dùng để kết nối bộ nhớ flash của chip nên UART1 chỉ sử dụng được GPIO2 để truyền dữ liệu.[16]
VCC, chân điện áp (+3.3 V; có thể chịu được điện áp đến 3.6 V)
RST, Reset
CH_PD, Chip tắt nguồn (Chip power-down)
TX, truyền bit dữ liệu X, cũng là GPIO1
SDK
Vào tháng 10 năm 2014, Espressif Systems đã phát hành bộ công cụ phát triển phần mềm (SDK), giúp ESP8266 có thể hoạt động như là một vi điều khiển riêng biệt chứ không cần phải sử dụng như là một module hỗ trợ giao tiếp WiFi cho một vi điều khiển khác như trước đó.[19] Kể từ đó, đã có nhiều bản phát hành SDK chính thức từ Espressif; Espressif duy trì hai phiên bản của SDK, ESP8266 NonOS SDK[20] và ESP8266 RTOS SDK[21] (dựa trên FreeRTOS).[22]
Một phiên bản SDK thay thế cho SDK chính thức của Espressif là bộ SDK mã nguồn mở ESP-Open-SDK[23] dựa trên Bộ trình dịch GNU (GCC), hiện được Max Filippov duy trì.[24] Một SDK thay thế khác là bộ "Unofficial Development Kit" (tạm dịch: "Bộ công cụ phát triển không chính thức") của Mikhail Grigorev,[25][26] tuy nhiên hiện tại chưa được cộng đồng đánh giá cao (với chỉ 260 sao vào năm 2021) trên Github.
ESP8266 BASIC - Một trình biên dịch mã nguồn mở giống BASIC được thiết kế riêng cho các ứng dụng Internet of Things. Môi trường phát triển dựa trên trình duyệt tự lưu trữ.
ESP Easy - Được phát triển bởi cộng đồng kỹ sư phát triển nhà thông minh.
ESPHome - ESPHome là hệ thống để điều khiển các board ESP8266 hoặc ESP32 bởi các file cấu hình đơn giản nhưng hiệu quả và điều khiển các board này từ xa thông qua hệ thống nhà thông minh.[27]
Tasmota - phần mềm mã nguồn mở, rất phổ biến với những người phát triển nhà thông minh.
ESP-Open-RTOS - Phần mềm mã nguồn mở cho ESP8266 dựa trên FreeRTOS.
ESP-Open-SDK - SDK tích hợp miễn phí và mở mã nguồn (càng nhiều càng tốt) cho các chip ESP8266 và ESP8285.
Espruino - Một Javascript SDK đang được phát triển, mô phỏng giống với Node.js. Hỗ trợ một số MCU, bao gồm cả ESP8266.
ESPurna - Phần mềm mã nguồn mở cho ESP8285 và ESP8266.
Forthright - Dự án mã nguồn mở của Jones Forth cho vi điều khiển ESP8266.
MicroPython - Một dự án MicroPython cho nền tảng ESP8266 (nằm trong dự án triển khai Python cho các thiết bị nhúng)
Moddable SDK bao gồm ngôn ngữ JavaScript và hỗ trợ thư viện cho ESP8266
Mongoose OS - Hệ điều hành mã nguồn mở cho các sản phẩm được kết nối. Hỗ trợ ESP8266 và ESP32. Phát triển bằng C hoặc JavaScript.[28]
PlatformIO - Một IDE và trình gỡ lỗi hợp nhất đa nền tảng, hỗ trợ mã nguồn và các thư viện Arduino, cùng nhiều framework khác cho nhiều dòng vi điều khiển khác nhau, bao gồm cả ESP8266.[29][30]
Punyforth - Ngôn ngữ lập trình lấy cảm hứng từ Forth cho ESP8266.
Sming - Một framework C/C++ bất đồng bộ đang được phát triển tích cực với hiệu suất vượt trội và hỗ trợ nhiều tính năng mạng.
uLisp - Một phiên bản của ngôn ngữ lập trình Lisp được thiết kế đặc biệt để chạy trên các bộ vi xử lý có bộ nhớ RAM hạn chế.
ZBasic cho ESP8266 - Một phần mềm từ Visual Basic 6 của Microsoft, đã được điều chỉnh để làm ngôn ngữ điều khiển cho họ vi điều khiển ZX và ESP8266.
Zerynth - Một IoT framework để lập trình ESP8266[31] và các vi điều khiển khác bằng Python.
Module Espressif
Đây là series các module ESP8266 đã được sản xuất:[32]
Trong bảng trên (và hai bảng tiếp theo), "Số chân hoạt động được" bao gồm các chân GPIO và ADC mà các thiết bị bên ngoài có thể được gắn vào MCU ESP8266. "Khoảng các giữa 2 chân cạnh nhau" là khoảng trống giữa các chân trên module ESP8266, điều quan trọng để biết liệu thiết bị có được sử dụng trên breadboard hay không. "Hệ số hình thức" mô tả cách đóng gói module, ví dụ như là "2 × 9 DIL", có nghĩa là hai hàng 9 chân được sắp xếp theo kiểu "Dual In Line", giống như các chân của IC DIP. "LED" cho biết trên board có LED không. Nhiều module ESP-xx bao gồm một đèn LED nhỏ trên board mạch có thể được lập trình để nhấp nháy từ đó có thể biết hoạt động của module. Có một số tùy chọn loại antenna cho các board ESP-xx bao gồm trace antenna (tạm dịch: antenna chìm trên board), on-board ceramic antenna (tạm dịch: antenna gốm trên board mạch) và đầu nối bên ngoài cho phép gắn antenna Wi-Fi bên ngoài vào. Vì giao tiếp Wi-Fi tạo ra rất nhiều RFI (Radio Frequency Interference, nhiễu tần số vô tuyến), do đó các cơ quan chính phủ như FCC muốn các thiết bị điện tử được che chắn (shielded) để làm giảm thiểu sự gây nhiễu với các thiết bị khác. Một số module ESP-xx được đặt trong một hộp kim loại có đóng dấu phê duyệt FCC trên đó. Thị trường thế giới thứ nhất và thứ hai có thể sẽ yêu cầu FCC phê duyệt và che chắn các thiết bị Wi-Fi.[cần dẫn nguồn]
Module Ai-Thinker
Đây là loại module đầu tiên được sản xuất với ESP8266 bởi nhà sản xuất bên thứ ba Ai-Thinker và vẫn là module có sẵn rộng rãi nhất cho đến thời điểm này.[36] Chúng được gọi chung là "module ESP-xx". Để có thể phát triển được một ứng dụng với các board này yêu cầu thêm một số thành phần phần cứng bổ sung, đặc biệt là bộ chuyển đổi TTL-to-USB nối tiếp (đôi khi được gọi là cầu chuyển đổi USB-to-UART) và nguồn điện 3,3 volt cấp từ bên ngoài. Những nhà phát triển mới làm quen với ESP8266 được khuyến khích sử dụng các board mạch phát triển Wi-Fi ESP8266 cỡ lớn hơn như NodeMCU. Các thành phần như chuyển USB-to-UART và đầu nối Micro-USB cùng với bộ điều chỉnh nguồn 3,3 volt đã được tích hợp sẵn trên board NodeMCU. Trong quá trình xây dựng dự án thực tế, các thành phần kể trên trong board NodeMCU không còn cần thiết nữa và các module ESP-xx rẻ hơn khi ấy là một lựa chọn phù hợp với công suất thấp và kích thước chân nhỏ.
Trong cột Ghi chú, kích thước bộ nhớ Flash áp dụng cho module đã cho và tất cả những module bên dưới module đó trong bảng. Các ngoại lệ áp dụng cho một module đơn được hiển thị trong ().
Tên
Số chân hoạt động được
Khoảng các giữa 2 chân cạnh nhau
Hệ số hình thức
LED
Antenna
Shielded
Kích thước (mm)
Ghi chú
ESP-01
6
0.1 in
2×4 DIL
Có
PCB trace
Không
14.3 × 24.8
Module có 2 phiên bản: loại 512 KiB bộ nhớ Flash và mạch in có màu xanh, loại 1 MiB Flash từ AI-Cloud hoặc module từ AI-Thinker có PCB màu đen.[8]
Được đánh dấu "FCC". So với module ESP-12, module ESP-13 có shield được được đặt ở một bên của board.
ESP-14
22
2 mm
2×8 castellated +6
Có
PCB trace
Có
24.3 × 16.2
Được quảng cáo là "AI Cloud Inside".
Các board khác
Các dòng board ESP8266 khác sau này trở nên phổ biến hơn so với các module ESP-xx ban đầu vì đã hỗ trợ các thành phần cần thiết trong việc phát triển các ứng dụng phần mềm, bao gồm mạch chuyển đổi USB sang UART trên board mạch (như CP2102 của Silicon Labs hoặc WCH CH340G) và đầu nối Micro-USB kết hợp với bộ ổn áp 3,3 volt để cung cấp cả nguồn điện cho board mạch và kết nối với máy tính chủ trong quá trình phát triển phần mềm. Với các module ESP-xx trước đó, bộ chuyển đổi USB-to-serial và bộ ổn áp 3.3V phải được người dùng mua riêng để nối dây vào module ESP-xx. Các board mạch ESP8266 hiện đại như NodeMCU cũng dễ làm việc hơn và cung cấp nhiều chân GPIO hơn. Hầu hết các board mạch được liệt kê ở đây đều dựa trên module ESP-12E. Các module ESP8266 mới khác cũng đang được giới thiệu dường như vài tháng một lần.
Tên
Số chân hoạt động được
Pitch
Form factor
LED
Antenna
Shielded
Kích thước (mm)
Ghi chú
Bolt IoT
14
0.1 in
2×14 DIL
Có
PCB trace
Có
30 × 40
Module hỗ trợ khe cắm thẻ nhớ và các tính năng như Lib-Discovery và Fail Safe Mode. Có khả năng kết nối IoT cloud riêng từ nhà sản xuất.
Sử dụng module ESP8266MOD của AI Thinker, hỗ trợ cổng Micro-USB, chân cắm pin, camera và thẻ nhớ uSD. Kích thước tương thích với các shield Arduino Uno.
Sử dụng module AI Thinker Model ESP8266MOD (ESP-13) và FTDI cho việc lập trình và cổng Mini-USB để cấp nguồn. Hoàn toàn tương thích với phần mềm Adafruit Huzzah. Bao gồm áp kế BMP280, các connector ADS1115 và Grove I2C. Hỗ trợ khe cắm cho máy đo gió (anemometer)/Wind Vane/Rain Bucket.
Board phát triển với chip Espressif ESP8266 ESP-12E và board rời cho CH340G USB.
ESP32-C3
Vào năm 2020, Espressif đã công bố một chip mới ESP32-C3, tương thích với các chân của ESP8266. Nó hoạt động dựa trên một CPU RISC-V32-bit lõi đơn với tốc độ xung nhịp lên đến 160 MHz. Nó bao gồm 400 kB SRAM và bộ nhớ ROM 384 kB được tích hợp sẵn.[59]
^ abcEspressif 2020, tr. 1, "1. Overview", "1.1. General Purpose Input/Output Interface (GPIO)", "1.3. Serial Peripheral Interface (SPI/HSPI)"
^Brian Benchoff (ngày 26 tháng 8 năm 2014). “New Chip Alert: The ESP8266 WiFi Module (It's $5)”. Hackaday. Truy cập ngày 24 tháng 3 năm 2021, "As far as the English-speaking world is concerned, there is absolutely nothing to be found anywhere on the Internet on this module.", "All the documentation is in Chinese"Quản lý CS1: postscript (liên kết)
^“Introducing ESP32-C3”. Espressif. Truy cập ngày 11 tháng 3 năm 2021, "ESP32-C3 is a cost-effective, RISC-V-based MCU with Wi-Fi and Bluetooth LE 5.0 connectivity for secure IoT applications."Quản lý CS1: postscript (liên kết)
^Espressif 2019, tr. 6, "Figure 1-3. ESP8266EX Module Schematics"
^ abcdefAI-Thinker, ESP-01 2015, tr. 12, "4.1. MCU: The CPU clock speed is 80MHz. It can also reach a maximum value of 160MHz.", "4.2.1. Internal SRAM and ROM", "4.2.2. External SPI Flash"
^ abcdeAI-Thinker, ESP-12E 2015, tr. 12, "4.1. MCU: The CPU clock speed is 80MHz. It can also reach a maximum value of 160MHz.", "4.2.1. Internal SRAM and ROM", "4.2.2. External SPI Flash"
^Espressif 2019, tr. 1, "Besides the Wi-Fi functionalities, ESP8266EX also integrates an enhanced version of Tensilica's L106 Diamond series 32-bit processor and on-chip SRAM"
^Espressif 2020, tr. 72, "8. HSPI Host Multi-device API: SPI bus is especially used to read CPU programming code from the external Flash"
^AI-Thinker, ESP-01 2015, tr. 3, "1. Preambles: When ESP8266EX hosts the application, it boots up directly from an external flash."
^“ESPHome”. esphome.io. Truy cập ngày 26 tháng 3 năm 2021, "ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems."Quản lý CS1: postscript (liên kết)