Esp8266在Ubuntu上的使用

406 阅读2分钟

想能够在Esp8266上面进行编程序,你必须做到以下两步。

  1. 给Esp8266刷写固件
  2. 找到合适的串口通信工具,可以让我们刷写程序进去。

看似只有简单的两步,中间的艰辛我不知道遇到了多少。

第一步:刷写固件

刷写固件我上来遇到的第一个问题就是我的Ubuntu系统识别不了我通过usb连接的Esp8266
通过学习,我知道了我需要给我的系统装对应的驱动软件。
因为我用的Ubuntu系统,不像window那样,可以直接运行驱动软件**.exe这么简单。

1.1 给电脑装驱动程序

你先要看下你的Esp8266开发版上面写的需要什么哪个版本的驱动程序:

步骤2.jpg 可以清晰的看到上面写着Ch340G驱动。

  1. 查看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
  1. 下载ch34*驱动文件

下载网址 解压后里面有三个文件: 步骤2.jpg

  1. 编译上一步下载的驱动文件,生成最终的.ko驱动文件。

3.1 查看操作系统的发行编号: uname -r 步骤2.jpg

打开网址:elixir.bootlin.com/linux/v5.8/… 步骤2.jpg 根据查询到的操作系统编号,然后复制里面的内容全部替换掉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”

步骤2.jpg

  1. 复制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  917 09:46 /dev/ttyUSB0
yu@librity:~$

如果说没有这个文件,那还有一种可能是你的驱动被占用了,需要移除被占用的驱动。方法看我的另外一篇文章《关于Ubuntu22.04。Esp8266串口ch340一直连接不上的问题解决》

/dev/ttyUSB0他还没有写的权限,我们需要给他加写的权限:

sudo chmod 666 /dev/ttyUSB0

1.2 刷入固件

  1. 下载固件: 网址

对于Ubuntu系统刷固件有两个办法。

  1. 使用软件Thonny,看我的文章《Thonny使用》
  2. 使用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

  1. 使用Esp-IDF:教程

到这里关于Ubuntu和esp8266的环境配置就完成了

help('modules')