在前一篇文章中,(暂未实践)分析使用ESP32将有线键盘转换为蓝牙无线键盘,提到了基于ESP8266的一个有意思的开源项目,ESP8266 USB Software Driver,决定来折腾一下。模拟一个低速USB(USB 1.1)连接至计算机,在ESP8266开发板上使用WiFi的方式控制。现在可以实现的是,An Example USB HID,可以作为人体学输入设备使用。此处要注意,不要被误导了,这个开源项目不是将USB的鼠标键盘连接至ESP8266,来无线控制,在前面的一篇中已经阐述了为什么不能了。
这个项目还没有被移植到Arduino IDE中,所以我们得手动编译下。

下载编译esp-open-sdk

在cnlohr/espusb中有完整的Getting Started Guide
前半段是官方的esp-open-sdk安装步骤,所以有啥问题可以参考官方的资料。

一开始安装依赖库。

Ubuntu 14.04:

$ 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

Later Debian/Ubuntu versions may require:

$ sudo apt-get install libtool-bin

创建一个esp8266的文件夹,并进入。

mkdir ~/esp8266/
cd ~/esp8266/

然后就clone

git clone --recursive https://github.com/pfalcon/esp-open-sdk.git
cd esp-open-sdk/
make

我们这里就用make命令就行了。还可以有

make STANDALONE=y
make STANDALONE=n

但是这里我们用不到。

编译中遇到的问题

我最开始使用的WSL,Windows的Linux子系统,使用的版本是Ubuntu 16.04。几乎,使用各种交叉编译工具,就没有一次就能成功的,如果不是发行版的问题,就需要解决一下网络问题,一般没什么特殊的问题。如果是其他平台,可以看官方esp-open-sdk的文档

make[2]: Entering directory '/home/ubuntu/esp8266/esp-open-sdk/crosstool-NG'
[INFO ]  Performing some trivial sanity checks
[INFO ]  Build started 20190816.192731
[INFO ]  Building environment variables

make的时候,会拉取其他依赖项,如果遇到了编译错误等问题,可以看esp-open-sdk/crosstool-NG/build.log中的日志,看遇到了什么。显而易见,因为大家都明白的网络情况,所以几乎全是网络方面的问题。

20190816210122.png

当然需要Dai¥%Li,后文用DL代替,

export http_proxy=socks5://127.0.0.1:10808
export https_proxy=socks5://127.0.0.1:10808

但是我还是推荐,直接使用proxychains,比较省事。或者直接使用一台XX的服务器,我用的vultr,不要给我说还有什么网络问题。这个网速一慢,真的就不知道等到啥时候了。有时候,那个镜像的服务器可能恰好又在法国那种,即便是有了DL,速度也起不来。

20190816205931.png

20190817003532.png

sudo apt install proxychains

vim /etc/proxychains.conf

诸如提示,在wget某个链接时找不到cloog-0.18.4.tar.gz了。

官方倒是甩锅比较直接,反正就是网络问题,自行解决。
Canned response: Download problems #100

可以手动上这里下载至目录esp8266\esp-open-sdk\crosstool-NG\.build\tarballs
jeremyd2019/crosstool-NG

http://www.bastoul.net/cloog/pages/download/cloog-0.18.4.tar.gz

当目录中已经有相应的依赖包时,会提示Already have。至于还有什么问题就再说吧,见招拆招。有些常见的问题可以看,crosstool-ng搭建交叉编译环境注意事项

[DEBUG]    Already have 'gmp-6.0.0a'
[DEBUG]    Already have 'mpfr-3.1.3'
[DEBUG]    Already have 'isl-0.14'
[DEBUG]    Already have 'cloog-0.18.4'
[DEBUG]    Already have 'mpc-1.0.3'
[DEBUG]    Already have 'expat-2.1.0'
[DEBUG]    Already have 'ncurses-6.0'
[DEBUG]    Already have 'binutils-2.25.1'

放置文件应该是这样,请使用wget下载。

20190817012057.png

编译完成后

Xtensa toolchain is built, to use it:

export
PATH=/home/cyqsd/esp8266/esp-open-sdk/xtensa-lx106-elf/bin:$PATH

Espressif ESP8266 SDK is installed, its libraries and headers are
merged with the toolchain

在使用了魔法让上面的编译成功了以后,咳咳咳,费这么大力干啥,Docker直接不就好了吗,Building/flashing under a Docker container

20190817031049.png

20190817030711.png

export PATH=~/esp8266/esp-open-sdk/xtensa-lx106-elf/bin:$PATH

我们回到根目录中,有如下的几个目录,对于平时开发足够了,但是这个项目要使用v1.5.4及以下版本,还得调整下。

20190817031140.png

  • xtensa-lx106-elf 编译器
  • esptool 烧录工具
  • ESP8266_NONOS_SDK NONOS_SDK

警告:ESPUSB不适用于ESP8266_NONOS_SDK v2.0及更高版本。请下载并使用v1.5.4及以下版本。
从espressif下载ESP8266 nonos sdk v1.5.1并删除提供的sdk,因为提供的sdk是v2.0及更高版本。

rm sdk
cd ..
wget --content-disposition "http://bbs.espressif.com/download/file.php?id=1046"
unzip ESP8266_NONOS_SDK_V1.5.1_16_01_08.zip

最后,输入esp-open-sdk并将sdk v1.5.x链接回来。

cd esp-open-sdk/
ln -sf ../esp_iot_sdk_v1.5.1 sdk

还需安装libusb依赖项。

sudo apt-get install libusb-1.0-0-dev

从Git克隆espusb项目递归并进入'espusb'文件夹。

git clone --recursive https://github.com/cnlohr/espusb
cd espusb

20190817031829.png

此处是配置文件要注意,要进行一些修改。

  • ESP的IP(默认值:192.168.4.1)
  • 设备路径(默认值:/dev/ttyUSB0)
  • PAGE_OFFSET:为网站分配的内存大小
  • SDK_DEFAULT:SDK的路径位置(在我们的例子中:~/esp8266 /esp-open-sdk)
  • FWBURNFLAGS:esptool将二进制文件烧录到ESP中的速度。CP2102默认值不能为1000000,请更改为115200或1500000。
  • SDK:SDK文件夹的位置(默认为注释,删除'#'并将目录更改为“$(HOME)/esp8266/esp_iot_sdk_v1.5.1”(截图中为1.5.2根据实际情况修改,否则找不到)

20190817032026.png

如果需要修改引脚,不是这个下面的宏定义,真正的是这个的下面。

//DPLUS and DMINUS are not actually used except for setting things up.
#define DPLUS 12
#define DMINUS 13

运行make all来编译二进制文件。

export ESP_ROOT="~/esp8266/esp-open-sdk/" 
make all
make burn

20190817045730.png

我没有把板子直接连接上来,烧写工具会报错,不管,拷贝出来用flash_download_tools。下次编译可以使用空中升级。

烧录固件

无论是自己从头编译的还是从Github下载的现有的Bin,均通过如下地址进行烧录。

文件名烧录地址
image.elf-0x00000.bin0x00000
image.elf-0x40000.bin0x40000
page.mpfs0x100000

编译完成后,会得到三个需要的文件。

20190817045304.png

/web 目录中

20190817045448.png

对于WSL可能还需要打开OpenSSH。

20190817044328.png

空中升级

如果您的ESP和开发PC在同一个网络中,运行make netweb,它将根据user.cfg中设置的内容找到IP地址,并烧写到ESP。

make netweb

连接线路

需要大于或等于1K的电阻

24dde9e80b9d.png

演示

CNLohr在油管上的视频:Wifi Controlled USB Mouse and Keyboard (ESP8285)

通过能连接到Wifi的设备,进行控制。

20190817041052.png

20190817044327.png

附录-完整的编译esp-open-sdk日志

百度网盘 提取码:m2ks

附录-真正的通过WiFi连接的鼠标

不过,话说回来抛开这个项目,我考虑的是这个东西科学吗?有基于2.4G的,基于蓝牙的,WiFi的?查了下,还真的有Ozmo2000芯片,不过也是板上的8051,11年左右的产品,这种东西,说实话,意义不大。颤抖吧凡人!全球第一款Wifi鼠标评测,只有以前的太平洋电脑网才真的在测评。

文章目录