ESP8266系列
====
.. raw:: html
--------------
ESP8266 如此多的编程方法,有SDK/Arduino/Lua/MicoPython等,我到底选择哪个?
-----------------------------------------------
即使更多的编程方法,其调用的都是C为底层的,但是根据项目需求来选型编程方式,能使你的项目快速落地即可。我司推荐使用SDK编程开发,
- 采用C语言编程,跨平台移植性强;
- 如果使用 cmake 需要将例程中 CMakeLists.txt 文件内的链接配置一同复制。
--------------
ESP8266 rtos 环境搭建
---------------------------------------------
本博文搭配视频教学: `https://www.bilibili.com/video/BV1q4411e7MB?p=4 `__
Windows 安装 Linux 系统
~~~~~~~~~~~~~~~~~~~~~~~~
下载 VM 虚拟机 版本15.5.1, `或点我下载 `__ ,共享码:FC7D0-D1YDL-M8DXZ-CYPZE-P2AY6 :
::
https://www.vmware.com/go/getworkstation-win
下载镜像,这里选择ubuntu桌面版18.04.4版本, `或点我下载 `__ 。
::
http://mirrors.aliyun.com/ubuntu-releases/16.04/ubuntu-16.04.6-desktop-amd64.iso
重要的一步,VM安装乌邦图步骤请参考如下教程, `或点我访问 `__ :
::
https://jingyan.baidu.com/article/f96699bb147a73894e3c1b2e.html
我们还需要安装几个常用的软件:
::
sudo apt-get purge vim-common
sudo apt-get install vim
sudo apt install git
搭建编译环境
~~~~~~~~~~~~~~~~~~
环境一变再变,也要看准官方的文档搭建,因为每个版本的环境会有所不一致!
::
https://docs.espressif.com/projects/esp-idf/zh_CN/latest/get-started/linux-setup.html
2.2.1. 基本环境
::::::::::::::
开始一堆依赖安装:
::
sudo apt-get install git wget flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache libffi-dev libssl-dev
成功之后:
.. image:: ../../../_static/esp/esp8266/20200326101812773.png
2.2.2. 编译工具链获取
:::::::::::::::::::
.. image:: ../../../_static/esp/esp8266/2020030815531638.png
可以看到,ESP8266 最新版本的编译工具链目前是 **5.2.0版本**,为了提高大家的效率,我这里给大家贴下安信可共享下载链接,可缩短下载时间,下图可以看到明显的下载效果:
::
sudo wget https://axk.coding.net/api/share/download/1f1b2769-e56a-4de8-b91a-01c70ff8b9ac
.. image:: ../../../_static/esp/esp8266/20200308160939762.png
解压其到当前文件夹:
::
sudo tar -zvxf 1f1b2769-e56a-4de8-b91a-01c70ff8b9ac
修改其权限为777:
::
sudo chmod 777 -R xtensa-lx106-elf
2.2.3. 获取ESP8266_RTOS_SDK 代码
:::::::::::::::::::::::::::::::
带子模块递归方式拉取!
::
git clone --recursive https://gitee.com/xuhongv/AiThinkerProjectForESP.git
2.2.4. 设置环境变量
::::::::::::::::::::
这里就简单很多,就设置2个变量即可!先拿到上述的工具链路径和SDK路径!
以我的环境为例:
::
export PATH=$PATH:/home/xuhongv/Desktop/ESPRESSIF/ESP8266/xtensa-lx106-elf/bin
export IDF_PATH=/home/xuhongv/Desktop/ESPRESSIF/ESP8266/ESP8266_RTOS
- 之后按下 i 表示嵌入代码: vim ~/.bashrc
- 任意一处添加 表示嵌入上面代码!
- 按下esc 再 :wq 表示写入保存: source ~/.bashrc
- 工具链环境测试是否设置成功: xtensa-lx106-elf-gcc -v
- IDF_PATH 路径测试是否设置成功: echo $IDF_PATH
.. image:: ../../../_static/esp/esp8266/20200308163133901.gif
查看工具链是否正确?
.. image:: ../../../_static/esp/esp8266/20200308163311759.png
IDF_PATH 路径测试是否设置成功?如果提示为空则是设置失败;(忽略文件夹名字)
.. image:: ../../../_static/esp/esp8266/2020030816344719.png
编译代码
-----------
终于到了编译代码啦!!过程体验真的比Windows顺畅的一匹!
进去任意一个例子,然后 make menuconfig 面板设置,当然默认也可以!
.. image:: ../../../_static/esp/esp8266/20200308163922209.gif
通过CPU多核make all -j8 快速编译成功之后,会有如下提示!可以看到有指定的串口下载等信息!
::
Generating esp8266.project.ld
LD build/hello-world.elf
esptool.py v2.4.0
To flash all build output, run 'make flash' or:
python /home/xuhongv/Desktop/ESPRESSIF/ESP8266/ESP8266_RTOS_SDK/components/esptool_py/esptool/esptool.py --chip esp8266 --port /dev/ttyUSB0 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size 2MB 0x0 /home/xuhongv/Desktop/ESPRESSIF/ESP8266/ESP8266_RTOS_SDK/examples/get-started/hello_world/build/bootloader/bootloader.bin 0x10000 /home/xuhongv/Desktop/ESPRESSIF/ESP8266/ESP8266_RTOS_SDK/examples/get-started/hello_world/build/hello-world.bin 0x8000 /home/xuhongv/Desktop/ESPRESSIF/ESP8266/ESP8266_RTOS_SDK/examples/get-started/hello_world/build/partitions_singleapp.bin
烧录和串口打印
--------------
在Linux环境烧录我们的ESP8266模块开发板,主要注意这个串口读取的权限问题!插进我们的开发板之后,会有提示,如果没有提示,查看 **虚拟机 --> 可移动设备 -->点击对应的串口!**
.. image:: ../../../_static/esp/esp8266/20200308164315372.png
- 串口烧录: make flash
- 串口信息监听:make monitor
【常见问题】如何查看是否开发板已连接到虚拟机Linux了?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
先通过查看是否依附,再看看是否在列表中? 2条指令即可:
::
dmesg | grep ttyS*
ls /dev/tty*
.. image:: ../../../_static/esp/esp8266/20200308170825515.png
【常见问题】权限问题 /dev/ttyUSB0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**使用某些 Linux 版本向 ESP32 烧写固件时,可能会出现 Failed to open port /dev/ttyUSB0 错误消息。此时,可以将当前用户增加至 ref Linux Dialout 组 。**
因为默认情况下,只有root用户和属于dialout组的用户会有读写权限,因此直接把自己的用户加入到dialout组就可以了。操作完命令后要重启一下,就永久生效了。
::
xuhongv@ubuntu:~$ sudo usermod -aG dialout xuhongv
【常见问题】如何烧录指定的串口:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
比如烧录到 **/dev/ttyUSB1**,加上 **ESPPORT** 参数即可!
::
make flash ESPPORT=/dev/ttyUSB1
【常见问题】烧录不稳定
~~~~~~~~~~~~~~~~~~~
我建议还是使用 CP2102 串口芯片的板子! 别用CH340!
【常见问题】提示没有那个文件或目录
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
例如:
::
xuhongv@xuhongv-ubuntu:~/ESPRESSIF/ESP8266/ESP8266_RTOS_SDK/mycode/spi_oled$ make menuconfig
Makefile:8: /home/xuhongv/ESPRESSIF/ESP8266_RTOS_SDK/make/project.mk: 没有那个文件或目录
make: *** 没有规则可制作目标“/home/xuhongv/ESPRESSIF/ESP8266_RTOS_SDK/make/project.mk”。 停止。
检查下 IDF_PATH 路径!! 再重新设置!
【常见问题】make menuconfig 时候报错:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
例如:
::
cc -c -DCURSES_LOC="" -DLOCALE -MMD -MP -I "." -I "/home/xuhongv/ESPRESSIF/ESP8266/ESP8266_RTOS_SDK/tools/kconfig" /home/xuhongv/ESPRESSIF/ESP8266/ESP8266_RTOS_SDK/tools/kconfig/mconf.c -o mconf.o
:0:12: fatal error: curses.h: 没有那个文件或目录
compilation terminated.
Makefile:173: recipe for target 'mconf.o' failed
make[1]: *** [mconf.o] Error 1
make[1]: 离开目录“/home/xuhongv/ESPRESSIF/ESP8266/ESP8266_RTOS_SDK/tools/kconfig”
因为一些依赖没装好, 需要安装下即可:
::
sudo apt-get install git wget make libncurses-dev flex bison gperf python python-seria
上面运行失败的,或者:
::
sudo apt-get install libncurses5-dev
【Windows系统下ESP-IDF开发环境搭建教程】
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
`点我查看`