0)准备工作,之前一直对esp8266不了解,现在想着给鱼缸加个定时打氧的程序,控制泵的工作。所以购买了一个esp8266 Relay,自己摸索写个简单程序。让泵工作一段时间,再休眠一段时间。
1)宿主机Ubuntu 20.04.5
2)下载cross compile
https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz
3)clone源码
git clone https://github.com/espressif/ESP8266_RTOS_SDK.git
使用最新的程序
~/esp8266/ESP8266_RTOS_SDK$ git log
commit af0cdc36fa2600033d0a09301c754008cf1503c1 (HEAD -> master, origin/master, origin/HEAD)
Merge: 35375c17 d93c5bb8
Author: Dong Heng <dongheng@espressif.com>
Date: Sat May 6 10:04:24 2023 +0800
Merge branch 'feature/httpd_support_reuse_addr' into 'master'
feat(httpd): Allow binding to same address and port upon restarting server without delay
See merge request sdk/ESP8266_RTOS_SDK!1675
4)安装pip
~/esp8266$ python --version
Python 2.7.18
$ wget https://bootstrap.pypa.io/pip/2.7/get-pip.py # 下载安装脚本
$ sudo python get-pip.py # 运行安装脚本
~/esp8266$ sudo python get-pip.py
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at Release process - pip documentation v23.2.dev0 pip 21.0 will remove support for this functionality.
Collecting pip<21.0
Downloading pip-20.3.4-py2.py3-none-any.whl (1.5 MB)
|████████████████████████████████| 1.5 MB 27 kB/s
Collecting setuptools<45
Downloading setuptools-44.1.1-py2.py3-none-any.whl (583 kB)
|████████████████████████████████| 583 kB 31 kB/s
Collecting wheel
Downloading wheel-0.37.1-py2.py3-none-any.whl (35 kB)
Installing collected packages: pip, setuptools, wheel
Successfully installed pip-20.3.4 setuptools-44.1.1 wheel-0.37.1
~/esp8266$
~/esp8266/ESP8266_RTOS_SDK$ python -m pip install --user -r requirements.txt
5)cd esp8266/ESP8266_RTOS_SDK/examples/get-started/hello_world
make menuconfig
make all
6)在多多上买的esp8266 relay,很小的一个东西。
7)GPIO0接地,开始烧录。
我们先看下ESP8266-01S引脚说明:
序号 | 引脚名称 | I/O | 描述 | DC特性 | 备注 |
1 | UTXD | AT 串口发送输出 | 3.3V | 开机时禁止下拉 | |
2 | GND | 地 | |||
3 | CH_PD(EN) | 模块断电信号 | 3.3V | 1)高电平工作; 2)低电平模块供电关掉; | |
4 | GPIO2 | 预留,默认悬空 | 3.3V | 开机上电时必须为高电平,禁止硬件下拉;内部默认已拉高 | |
5 | GPIO16 | I | 复位信号(RESET) | 3.3V | 低电平复位,高电平工作(默认高); |
6 | GPIO0 | 模块状态灯/工作模式选择 | 3.3V | 1)默认WiFiStatus: WiFi工作状态指示灯控制信号; 2)工作模式选择: 上拉:FlashBoot,工作模式; 下拉:UARTDownload,下载模式(下载固件); | |
7 | VCC | I | 模块采用单电源供电,通过 1 个VCC 电源引脚供电,电压范围:3.0V-3.6V,电流>600mA | Vmax=3.6V Vmin=3.0V Vnorm=3.3V | 电源供电能力请大于600mA;否则可能会引起模块工作异常,或者无线性能不好。 |
8 | URXD | AT 串口发送输入 | 3.3V |
从引脚定义来看,我们只需要把GPIO0引脚下拉接地就可以进入烧录固件模式啦。
8)make menuconfig时,选择8M flash size. make之后,会提示编译出来的文件,烧录地址是什么
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 dout --flash_freq 40m --flash_size 8MB 0x0 esp8266/ESP8266_RTOS_SDK/examples/wifi/getting_started/station/build/bootloader/bootloader.bin 0x10000 esp8266/ESP8266_RTOS_SDK/examples/wifi/getting_started/station/build/wifi_station.bin 0x8000 esp8266/ESP8266_RTOS_SDK/examples/wifi/getting_started/station/build/partitions_singleapp.bin
虽然我们是在linux上编译出来的,还是可以使用windowns上的工具烧录固件。同样也可以用make flash直接在linux上操作。
9)完成之后
使用串口工具查看打印信息,
10),代码部分,查看relay的硬件图,它是由gpio0来控制的,所有我们只需要操作它,给它相应的高低电平,即可。
#define GPIO_LED_NUM0 0,
while(1)
{
printf("open gpio\n");
gpio_set_level(GPIO_LED_NUM0, 1); /*open*/
gpio_set_level(GPIO_LED_NUM2, 1); /*open*/
vTaskDelay(1000*6 / portTICK_PERIOD_MS); /* 延时500ms*/
printf("close gpio\n");
gpio_set_level(GPIO_LED_NUM0, 0); /*close */
gpio_set_level(GPIO_LED_NUM2, 0); /*close */
vTaskDelay(1000*6/ portTICK_PERIOD_MS);
}