Hướng dẫn lập trình ESP8266 trên Ubuntu

5Lập trình ESP8266 trên Ubuntu với nonos SDK và RTOS SDK như thế nào ? Mình xin giới thiệu với các bạn các bước cơ bản để có thể cấu hình môi trường để có thể làm việc với ESP8266 trên ubuntu. Trong bài viết này sẽ có 2 phần, phần đầu tiên mình sẽ hướng dẫn các bạn có thể làm mọi bước để có thể cài đặt được một môi trường để lập trinh cho ESP8266, phần 2 sẽ là tải môi trường mình đã làm sẵn về build lại để đỡ mất thời gian.

Chuẩn bị

Trước khi bắt đầu thì mình cần có một số đồ nghề sau:

  • ESP8266, mình dùng kit NodeMCU
  • Dây cáp.
  • Máy tính xài hệ điều hành Ubuntu

 

Cài đặt

Với ESP8266/ESP32 đều có thể cài thông qua 1 số bước cơ bản với Arduino trên win, cách này khá đơn giản và dễ làm, tuy nhiên cái gì dễ quá thì các bạn thường không thích, nên đành tăng độ khó lên một chút để tăng thêm sự hấp dẫn.

Cài các tool cần thiết

Nếu bạn dùng bản 32 bit

sudo apt-get install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-i386 python-serial libexpat-dev
mkdir -p $HOME/ESP8266-Toolchain-217
mkdir -p $HOME/ESP8266-Toolchain-217/compiler
mkdir -p $HOME/ESP8266-Toolchain-217/sdk

Nếu bạn dùng bản 64 bit

sudo apt-get install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-amd64 python-serial libexpat-dev
mkdir -p $HOME/ESP8266-Toolchain-217
mkdir -p $HOME/ESP8266-Toolchain-217/compiler
mkdir -p $HOME/ESP8266-Toolchain-217/sdk

Cài đặt Xtensa crosstool-NG

sudo apt-get install libtool-bin help2man python python2.7-dev
cd $HOME/ESP8266-Toolchain-217/compiler
git clone https://github.com/jcmvbkbc/crosstool-NG.git
cd crosstool-NG
./bootstrap && ./configure --prefix=`pwd` && make && make install
./ct-ng xtensa-lx106-elf
unset LD_LIBRARY_PATH
./ct-ng build
PATH=$PWD/builds/xtensa-lx106-elf/bin:$PATH

Quá trình cài phải build khá lâu, mất khoảng 20 phút nên bạn chịu khó chờ nhé.
Kết quả

Kiểm tra lại compiler đã được cài đặt chưa bằng lệnh

xtensa-lx106-elf-gcc -v

Nếu hiện thông báo như sau ở cuối cùng là thành công

Thread model: single gcc version 4.8.2 (crosstool-NG 1.20.0)

Cập nhật thư viện cho Xtensa

cd $HOME/ESP8266-Toolchain-217/compiler/crosstool-NG/builds/xtensa-lx106-elf/xtensa-lx106-elf/sysroot/usr
sudo wget -O lib/libc.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libc.a
sudo wget -O lib/libhal.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a
sudo wget -O include.tgz https://github.com/esp8266/esp8266-wiki/raw/master/include.tgz
sudo tar -xvzf include.tgz

Cài đặt Espressif NonOS SDK và RTOS SDK

Để đơn giản và nhanh chóng nhất thì bạn có thể tải bản SDK mình đã nén sẵn tại link sau đây ,sau khi tải về giải nén cho vào thư mục sdk nằm trong ESP8266-Toolchain-217.

Tải esptool

cd $HOME/ESP8266-Toolchain-217
git clone https://github.com/themadinventor/esptool.git

Tải Putty

Thông thường trên win sẽ có phần mềm terminal là teraterm, ở ubuntu thì mình dùng putty, các bạn có thể tải bằng lệnh

sudo apt-get install putty

Lập trình chương trình đầu tiên

Coi như bước chuẩn bị ban đầu đã xong, mình có tham khảo một số cách build và flash chương trình của các hướng dẫn từ nước ngoài thì cũng khá là phức tạp mà không kế thừa được cho các dự án của cá nhân, nên mình tận dụng luôn chương trình mẫu của anh TuanPM có chỉnh sửa lại một chút. Tất cả các ví dụ này các bạn có thể clone về bằng lệnh

cd $HOME
git clone https://github.com/hocarm/ESP8266-NonOS-RTOS-Example.git

Biên dịch

Ở đây có 3 ví dụ mẫu, với từng ví dụ thì các bạn gõ lệnh như sau

esp8266-nonos-blink

cd $HOME/ESP8266-Toolchain-217/ESP8266-NonOS-RTOS-Example/esp8266-nonos-blink
export PATH=$HOME/ESP8266-Toolchain-217/compiler/crosstool-NG/builds/xtensa-lx106-elf/bin:$PATH
make

esp8266-nonos-helloword

cd $HOME/ESP8266-NonOS-RTOS-Example/esp8266-nonos-helloword
export PATH=$HOME/ESP8266-Toolchain-217/compiler/crosstool-NG/builds/xtensa-lx106-elf/bin:$PATH
make

esp8266-rtos-basic

cd $HOME/ESP8266-NonOS-RTOS-Example/esp8266-rtos-basic
export PATH=$HOME/ESP8266-Toolchain-217/compiler/crosstool-NG/builds/xtensa-lx106-elf/bin:$PATH
make

Nếu bạn make thành công sẽ có thông báo kiểu như sau

/home/sc/ESP8266-Toolchain-217/esptool/esptool.py elf2image main.out -o main
esptool.py v2.1-beta1
Creating image for ESP8266…

Flash

Bước trên chỉ là xong make (giống với bước build project), để flash nạp vào ESP8266 thì cần dùng lệnh sau cho tất cả các project

make flash

Khi bạn flash thành công sẽ có thông báo như sau


Chip is ESP8266
Uploading stub…
Running stub…
Stub running…
Changing baud rate to 480600
Changed.
Configuring flash size…
Flash params set to 0x0240
Compressed 29040 bytes to 21689…
Wrote 29040 bytes (21689 compressed) at 0x00000000 in 0.5 seconds (effective 475.8 kbit/s)…
Hash of data verified.
Compressed 193956 bytes to 143445…
Wrote 193956 bytes (143445 compressed) at 0x00010000 in 3.2 seconds (effective 480.8 kbit/s)…
Hash of data verified.
Compressed 128 bytes to 75…
Wrote 128 bytes (75 compressed) at 0x003fc000 in 0.0 seconds (effective 166.9 kbit/s)…
Hash of data verified.

Leaving…
Hard resetting…

Monitor

Sau khi nạp chương trình xong để kiểm tra kết quả ta dùng putty bằng cách mở biểu tượng putty hoặc gõ lệnh

putty

Thường thì NodeMCU sau khi cắm vào máy tính dùng Ubuntu sẽ có tên là /dev/ttyUSB0, nếu không đúng bạn có thể tìm tên bằng lệnh lsusb

Chọn cổng và tốc độ baud 115200 và flash firmware của ví dụ esp8266-nonos-helloword sau đó quan sát kết quả

Kết quả

Với esp8266-nonos-helloword ta sẽ thấy chuỗi Hello world! và thông tin của chip như hình trên

Với esp8266-nonos-blink thì sẽ là LED trên kit NodeMCU chớp tắt.

Tăng tốc

Nếu bạn thấy các bước trên vẫn còn quá phức tạp nhưng vẫn muốn thử xem một project nó make trên ubuntu thế nào, flash xuống ESP8266 ra sao, hoặc là muốn bỏ qua mấy bước cấu hình để tập trung vào code thì bạn có thể dùng đồ mình đã build sẵn qua cách sau:

Bước 1: Tải ToolChain + SDK tại ToolChain217, sau đó giải nén ra Home, hoặc có phương án khác là

cd $HOME
git clone https://github.com/hocarm/ESP8266-Toolchain-217

Bước 2: quay lại bước Biên dịch ở bên trên, thay lại đường dẫn PATH=$HOME/ESP8266-Toolchain-217/compiler/crosstool-NG/builds/xtensa-lx106-elf/bin bằng PATH=$HOME/ESP8266-Toolchain-217/compiler/xtensa-lx106-elf/bin

Sở dĩ có thay đổi là do mình xóa hết mấy phần build linh tinh khá nặng của xtensa và làm cho đường dẫn ngắn đi.

Ví dụ luôn cho các bạn dễ hiểu với blink led

cd $HOME/ESP8266-NonOS-RTOS-Example/esp8266-nonos-blink 
export PATH=$HOME/ESP8266-Toolchain-217/compiler/xtensa-lx106-elf/bin:$PATH
make
make flash

Bước 3: quan sát kết quả led chớp tắt.

Tạm kết

Vậy là xong được các bước để cấu hình môi trường ban đầu để lập trình với ESP8266 trên Ubuntu theo 2 SDK có sẵn là NONOS và RTOS. Để phát triển dự án của mình các bạn có thể tham khảo thêm các ví dụ ở mục Examples trong 2 SDK. Nếu còn trục trặc bạn có thể hỏi tại đây mình sẽ giúp bạn 😀

Tham khảo [1][2][3][4][5]

2 thoughts on “Hướng dẫn lập trình ESP8266 trên Ubuntu

  1. nếu dùng ngôn ngữ có sẵn trong ubuntu là python, mà muốn điều khiển arduino chẳng hạn như led thông qua esp8266.
    thì phương thức thực hiện như thế nào vậy ad. thanks

Add Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.