Computer >> Hướng Dẫn Máy Tính >  >> Kết Nối Mạng >> WiFi

Bắt đầu với FreeRTOS trên ESP8266 NodeMCU — Hướng dẫn thực tế

Bởi Denis Nuțiu

Gần đây, tôi mua NodeMCU từ AliExpress khoảng $4. Lý do là muốn biết tại sao ESP8266 được nhắc nhiều vậy.

NodeMCU là nền tảng IoT mã nguồn mở. Bao gồm firmware chạy trên Wi-Fi SoC ESP8266 từ Espressif Systems, và phần cứng dựa trên module ESP-12.

Nguồn: ESP8266 Datasheet

So với Arduino UNO, ESP8266 của tôi đánh bại nó hoàn toàn về sức mạnh CPU và giá.

ESP8266 nhanh gấp 5 lần và rẻ 82% so với Arduino. ESP8266 cũng có kết nối WiFi.

Tôi rất ngạc nhiên khi truy cập trang Espressif cho ESP8266. Có hàng tá tài liệu và nguồn lực. Ví dụ, có ứng dụng Android bảo ESP8266 kết nối WiFi. App gửi SSID và mật khẩu dưới dạng gói tin, ESP8266嗅探 (sniff) chúng, và kết nối WiFi. Điều này gọi là SmartConfig, do Texas Instruments phát minh.

Trong bài này, tôi sẽ hướng dẫn thiết lập và chạy ví dụ Smart Config từ Espressif RTOS SDK.

Đây là thứ bạn cần:

  • Máy tính hiện đại.
  • Board NodeMCU với ESP12-E
  • VirtualBox (https://www.virtualbox.org/wiki/Downloads)
  • Ubuntu Server LTS (https://www.ubuntu.com/download/server)

Cấu hình VirtualBox cho phát triển

  1. Tải VirtualBox và cài Ubuntu Server. Dễ làm, nếu không biết, Google hoặc xem hướng dẫn đồ họa từng bước. Cài OS là kỹ năng hay. (Mẹo: Khi VirtualBox nhắc chọn ổ đĩa, làm dynamically allocated và ít nhất 50GB. Sẽ đỡ đau đầu sau.)
  2. Đảm bảo truy cập internet từ bên trong máy ảo và cấu hình DNS server:

Chuột phải máy ảo rồi Settings -> Network

Để cấu hình DNS server, xem ví dụ này.

Ví dụ: dns-nameservers 8.8.8.8 8.8.4.4 Nếu ping Google được, là ok!

  1. (Tùy chọn) Cài OpenSSH và Samba server. Sẽ làm cuộc sống dễ dàng hơn.

  2. (Tùy chọn) Bật port forwarding. Để SSH trực tiếp vào máy ảo, bật port forwarding. Ví dụ, map cổng 2222 trên máy host sang cổng 22 của máy ảo.

Bật Port forwarding: Settings -> Network -> Port Forwarding

Nếu bật port forwarding, bạn có thể SSH vào máy ảo từ máy host như hình dưới.

FIG1: ssh -p 2020 denis@localhost

Lưu ý: Nếu bạn dùng Windows, cần Putty để SSH vào máy ảo.

  1. Cắm NodeMCU và chạy lệnh:
tail -f /var/log/kern.log

Lệnh này tiết lộ thiết bị được nhận diện là /dev/ttyUSB0. Nếu không có gì xảy ra, cần thêm USB vào máy ảo. Sau khi thêm, rút cắm thiết bị lại.

Thêm USB: Settings -> Ports -> USB

Nếu bạn đến đây và mọi thứ hoạt động, chúc mừng! Bạn sẵn sàng biên dịch SDK và chạy ví dụ SmartConfig. Có thể tweet cho tôi tại https://twitter.com/metonymyqt

Biên dịch SDK và nạp board

  1. Cài gói cần thiết (như dưới). Thông tin cũng có trong readme.md của SDK.
sudo apt-get install make unrar-free autoconf automake libtool gcc g++ gperf flex bison texinfo gawk ncurses-dev libexpat-dev python-dev python python-serial sed git unzip bash help2man wget bzip2 libtool-bin
  1. Tạo thư mục mới và vào đó: mkdir Development && cd Development

  2. Clone Open SDK: https://github.com/pfalcon/esp-open-sdk

git clone --recursive https://github.com/pfalcon/esp-open-sdk.git
  1. Chạy make: make

Cảnh báo: Bước này mất khá lâu, hãy kiên nhẫn. Trên máy ảo của tôi hoàn thành sau 50 phút. Của bạn có thể hơn/kém, nhưng trước khi chạy make, hãy chắc chắn kết nối internet và DNS cấu hình đúng. Cách tốt nhất kiểm tra: ping Google hoặc trang khác nếu Google bị chặn.

Lệnh ping thành công: $ ping medium.com

Nếu ping thành công, thu nhỏ cửa sổ và xem tập phim yêu thích. Quay lại sau ~40 phút (đảm bảo máy không ngủ).

Sau khi SDK build thành công, sẽ thấy thông báo yêu cầu thêm vào path. Thực hiện:

echo 'export PATH=/home/denis/Development/esp-open-sdk/xtensa-lx106-elf/bin:$PATH' >> ~/.profile

Lệnh thêm chuỗi vào file ~/.profile. Bây giờ chạy:

xtensa-lx106-elf-gcc --version

Nếu lệnh chạy thành công, bạn sẵn sàng!

  1. Kiểm tra board

Cắm NodeMCU và chạy lsusb xác nhận thiết bị kết nối. Sau đó chạy esptool.py chip_id. Bây giờ nên thấy chip id của board.

esptool.py chipid

  1. Clone ESP8266_RTOS_SDK
git clone https://github.com/espressif/ESP8266_RTOS_SDK.git
  1. Export đường dẫn SDK và SDK/BIN:
echo 'export SDK_PATH=/home/denis/Development/ESP8266_RTOS_SDK' >> ~/.profile
echo 'export BIN_PATH=/home/denis/Development/ESP8266_RTOS_SDK/bin' >> ~/.profile
  1. Biên dịch ví dụ SmartConfig
cd /home/denis/Development/ESP8266_RTOS_SDK/examples/smart_config/
chmod +x ./gen_misc.sh
./gen_misc.sh

Chấp nhận giá trị mặc định cho đến khi hỏi SPI_SIZE_MAP. Chọn 4 vì NodeMCU flash 32Mbit = 4MB. _Có thể chọn SPISPEED 3=80Mhz_

Sẽ thấy như sau:

!!!SDK_PATH: /home/denis/Development/ESP8266_RTOS_SDK
BIN_PATH: /home/denis/Development/ESP8266_RTOS_SDK/bin

No boot needed.
Generate eagle.flash.bin and eagle.irom0text.bin successully in BIN_PATH
eagle.flash.bin — — — →0x00000
eagle.irom0text.bin — →0x20000
!!!
  1. Nạp board
cd $BIN_PATH
esptool.py erase_flash
esptool.py write_flash 0x00000 $BIN_PATH/eagle.flash.bin 0x20000 $BIN_PATH/eagle.irom0text.bin 0x3FC000 $BIN_PATH/esp_init_data_default.bin

Bây giờ, nếu reset board, bạn không thấy LED nhấp nháy.

  1. Dùng Ứng dụng Điện thoại

  2. Ứng dụng Android

  3. Ứng dụng iPhone

Chụp màn hình từ thiết bị Android của tôi

Mở ứng dụng, chắc chắn kết nối WiFi AP, nhập mật khẩu, bấm xác nhận. Sau vài giây ESP8266 kết nối AP. Xong. Chúc mừng bạn đến cuối!

Nếu muốn phát triển thêm với ESP8266-RTOS-SDK, truy cập trang chủ. Sẽ thấy nhiều tài liệu và nguồn lực. Cũng xem các ví dụ khác trong thư mục SDK.

Cảm ơn bạn đã đọc. Muốn liên hệ, tìm tôi trên Twitter: MetonymyQT

Tài nguyên

  • ESP8266 Overview
  • ESP8266 Resources
  • FreeRTOS Website

Học lập trình miễn phí. Chương trình mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người tìm được việc làm lập trình viên. Bắt đầu ngay