想能够在Esp8266上面进行编程序,你必须做到以下两步。
- 给Esp8266刷写固件
- 找到合适的串口通信工具,可以让我们刷写程序进去。
看似只有简单的两步,中间的艰辛我不知道遇到了多少。
第一步:刷写固件
刷写固件我上来遇到的第一个问题就是我的Ubuntu系统识别不了我通过usb连接的Esp8266。
通过学习,我知道了我需要给我的系统装对应的驱动软件。
因为我用的Ubuntu系统,不像window那样,可以直接运行驱动软件**.exe这么简单。
1.1 给电脑装驱动程序
你先要看下你的Esp8266开发版上面写的需要什么哪个版本的驱动程序:
可以清晰的看到上面写着
Ch340G驱动。
- 查看Ubuntu系统是否有Ch340驱动:
jiki@jiki-M15X:~$ ls /lib/modules/$(uname -r)/kernel/drivers/usb/serial
aircable.ko cypress_m8.ko garmin_gps.ko iuu_phoenix.ko metro-usb.ko opticon.ko quatech2.ko ti_usb_3410_5052.ko visor.ko
ark3116.ko digi_acceleport.ko io_edgeport.ko keyspan.ko mos7720.ko option.ko safe_serial.ko upd78f0730.ko whiteheat.ko
belkin_sa.ko empeg.ko io_ti.ko keyspan_pda.ko mos7840.ko oti6858.ko sierra.ko usb_debug.ko wishbone-serial.ko
ch341.ko f81232.ko ipaq.ko kl5kusb105.ko mxuport.ko pl2303.ko spcp8x5.ko usbserial.ko xsens_mt.ko
cp210x.ko f81534.ko ipw.ko kobil_sct.ko navman.ko qcaux.ko ssu100.ko usb-serial-simple.ko
cyberjack.ko ftdi_sio.ko ir-usb.ko mct_u232.ko omninet.ko qcserial.ko symbolserial.ko usb_wwan.ko
如果你看到了有一个Ch34*.ko的文件,如果这个驱动很老了,你需要先删除掉:
jiki@jiki-M15X:~$ cd /lib/modules/$(uname -r)/kernel/drivers/usb/serial
sudo rm -rf ch341.ko
- 下载ch34*驱动文件
下载网址
解压后里面有三个文件:
- 编译上一步下载的驱动文件,生成最终的.ko驱动文件。
3.1 查看操作系统的发行编号:
uname -r
打开网址:elixir.bootlin.com/linux/v5.8/…
根据查询到的操作系统编号,然后复制里面的内容全部替换掉ch34x.c的内容。
3.2 编译程序,生成.ko文件
进入刚才的含有ch34x.c的文件目录,执行make命令:
jiki@jiki-M15X:~/Downloads/CH341SER_LINUX$ make
make -C /lib/modules/5.8.0-55-generic/build M=/home/jiki/Downloads/CH341SER_LINUX
make[1]: 进入目录“/usr/src/linux-headers-5.8.0-55-generic”
AR /home/jiki/Downloads/CH341SER_LINUX/built-in.a
CC [M] /home/jiki/Downloads/CH341SER_LINUX/ch34x.o
MODPOST /home/jiki/Downloads/CH341SER_LINUX/Module.symvers
CC [M] /home/jiki/Downloads/CH341SER_LINUX/ch34x.mod.o
LD [M] /home/jiki/Downloads/CH341SER_LINUX/ch34x.ko
make[1]: 离开目录“/usr/src/linux-headers-5.8.0-55-generic”
- 复制ch3x.ko文件
复制ch34x.ko文件至系统默认驱动文件夹:
sudo cp ch34x.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial
输入命令查看:lsmod
iki@jiki-M15X:~/Downloads/CH341SER_LINUX$ lsmod
Module Size Used by
ch34x 24576 0
usbserial 53248 1 ch34x
nls_iso8859_1 16384 2
nvidia_uvm 1019904 0
nvidia_drm 57344 13
nvidia_modeset 1228800 10 nvidia_drm
如果没有看到。就执行命令 sudo depmood -a 重启电脑。然后插上你的usb。在执行lsmod就有了。
这里出现了一点小插曲,上面的步骤我全部执行完毕了,驱动也都装好了。但是我插上我的usb但还是检测不到我的端口,我就纳闷了,这是为啥啊。然后我怀疑是不是我的数据线有问题,因为我这个数据显示给电器充电用的,它是不是没有数据传输的能力,,,,,,,然后我找来了我的手机数据线,然后在一插。。识别出来了。。。原来不是我的驱动装的不对,是我的数据线有问题。
现在可以检测一下我们的usb是否可以通信了,输入命令:ls -l /dev/ttyUSB0
如果是下面这样展示,那么你就成功了。
yu@librity:~$ ls -l /dev/ttyUSB0
crw-rw-rw- 1 root dialout 188, 0 9月 17 09:46 /dev/ttyUSB0
yu@librity:~$
如果说没有这个文件,那还有一种可能是你的驱动被占用了,需要移除被占用的驱动。方法看我的另外一篇文章《关于Ubuntu22.04。Esp8266串口ch340一直连接不上的问题解决》。
/dev/ttyUSB0他还没有写的权限,我们需要给他加写的权限:
sudo chmod 666 /dev/ttyUSB0
1.2 刷入固件
- 下载固件: 网址
对于Ubuntu系统刷固件有两个办法。
- 使用软件
Thonny,看我的文章《Thonny使用》 - 使用esptool 教程
擦除闪存:esptool.py --port /dev/ttyUSB0 erase_flash
刷入固件:esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20170108-v1.8.7.bin
- 使用Esp-IDF:教程
到这里关于Ubuntu和esp8266的环境配置就完成了
help('modules')