技小新-视频教程,在哔哩哔哩可以免费观看了
已学习《物联网教程_13_UART.mp4》
物联网开发板-ESP8266
相关网站:技新网 立创开源硬件 立创商城 立创EDA(lceda.cn)
小马哥ESP8266基于乐鑫官方SDK裸机开发开发入门教程(DragonFly四轴飞行器课程配套) 介绍了具体方法。
是Tensilica L106 32位 RISC 处理器 厂家乐鑫 官网:https://www.espressif.com
ESP8266EX技术规格书 0a-esp8266ex_datasheet_cn.pdf
ESP8266 NONOS SDK 最新版V3.0.2(已停止更新),另外有RTOS SDK
Flash 下载工具(ESP8266 & ESP32 & ESP32-S2)
加了4MB的SPI Flash、晶振、天线、LED灯并引出引脚,厂家安信可 官网: https://www.ai-thinker.com
各模组比较,文档、固件、SDK、对接云平台教程、等资源 https://docs.ai-thinker.com/esp8266
工具汇总 https://docs.ai-thinker.com/tools 包含windows版本的“SDK一体化开发环境”,但是没有找到使用指南。
PDD上买的大板,无厂家标记,增加了CH340/ASM1117,左右各有15各引脚,可以直接USB刷固件,有reset和flash按钮。
根据老板提供的《ESP8266 CH340原理图.jpg》:
esp8266,内部封装了,可以不用关注。
Power部分:ASM1117实现了5V的USB口到3.3V的转换。
USB to UART部分:miniUSB通过CH340实现了自动编程电路。
IO-PIN部分:开发最重要的外部接线说明,左右各15各引脚。
ESP8266 快速入门指南 – 了解
https://www.espressif.com/sites/default/files/documentation/esp8266_quick_start_guide_cn.pdf
开发环境:基于虚拟机 VirtualBox 的 Lubuntu 镜像
包含:附录—学习资源
程序运行模式3–按reboot
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
程序下载模式1–按住flash按钮,然后按下reboot并松开,再松开flash。
ets Jan 8 2013,rst cause:2, boot mode:(1,7)
重新刷入安信可的出厂默认AT固件
特性:一条指令即可连接到安信可云服务,操作简单,任何mcu均可直接接入
下载地址: ai-thinker_esp8266_at_firmware_dout_v1.5.4.1-a_20171130.rar
有多个bin文件,但是没有说明写入哪个地址,无法刷入
安装后点击开始菜单的AiThinkerIDE_V1.0图标,出现1个welcome 和1个Goodbye窗口,无运行界面。
老的0.5版本 AiThinkerIDE_V0.5_Setup.exe 提取码:xfzs
最新版本1.5 安信可windows一体化环境IDE V1.5 版本降临,体积更小,兼容新旧版本SDK编译
Esp8266—SDK—固件烧录—个人反思
ide安装了2遍都无法编译,直接运行的eclipse.exe,导入工程,编译报错:
console窗口
make: *** No rule to make target ‘all’. Stop.
Problem窗口
Description Resource Path Location Type
make: *** No rule to make target 'all'. Stop. ESP8266_NONOS_SDK C/C++ Problem
安信可邮件回复,建议升级最新的1.5版本。
参考资料:【安信可IDE教程专题 ①】手把手教你搭建安信可开发环境,编译源码、烧录固件到ESP8266。
原创 Ai-Thinker-徐宏 [ 安信可科技 ] 2月18日
第7遍导入项目,“在Properties --> C/C++ Build --> Build directory 选择编译的工程路径,比如根目录下的 IoT_Demo工程。”
在这个步骤直接啥都不修改,编译成功。
D:\Ai-Thinker\AiThinkerIDE_V1.0\msys32\opt\arm-nono-eabi-gcc\bin\xtensa-lx106-elf-ar.exe: creating .output/eagle/debug/lib/libdriver.a
make[2]: Leaving directory '/home/aithinker/ESP8266_NONOS_SDK/IoT_Demo/driver'
xtensa-lx106-elf-gcc -L../lib -nostdlib -T../ld/eagle.app.v6.ld -Wl,--no-check-sections -Wl,--gc-sections -u call_user_start -Wl,-static -Wl,--start-group -lc -lgcc -lhal -lphy -lpp -lnet80211 -llwip -lwpa -lcrypto -lmain -ljson -lupgrade -lssl -lpwm -lsmartconfig user/.output/eagle/debug/lib/libuser.a driver/.output/eagle/debug/lib/libdriver.a -Wl,--end-group -o .output/eagle/debug/image/eagle.app.v6.out
!!!
No boot needed.
Generate eagle.flash.bin and eagle.irom0text.bin successully in folder bin.
eagle.flash.bin-------->0x00000
eagle.irom0text.bin---->0x10000
!!!
make[1]: Leaving directory '/home/aithinker/ESP8266_NONOS_SDK/IoT_Demo'
16:24:05 Build Finished (took 21s.286ms)
Build directory 默认的工程路径 ${workspace_loc:/ESP8266_NONOS_SDK}/ 实际上是
D:\Ai-Thinker\AiThinkerIDE_V1.0\msys32\home\aithinker\ESP8266_NONOS_SDK\IoT_Demo
这个目录下要存在Makefile文件。
生成文件目录
D:\Ai-Thinker\AiThinkerIDE_V1.0\msys32\home\aithinker\ESP8266_NONOS_SDK\bin
参考《2a-esp8266-sdk_getting_started_guide_cn.pdf》
根据Flash布局的图和描述,2个分区格式的第一个后最后3个分区地址是一样的。
4.1.2. 下载地址
表 4-2. Non-FOTA 的下载地址(单位:KB)
对于4096KB=32Mbit
eagle.flash.bin 0x00000 各容量相同
eagle.irom0text.bin 0x10000 各容量相同
blank.bin 0x3FB000
esp_init_data_default.bin 0x3FC000
blank.bin 0x3FE000
先按照Non-FOTA烧录,注意一定要勾选文件前面的框,先擦除erase,再烧录start
–这里对比参考书的表格里的数据时搞错了,导致下面的报错
使用putty连接串口,默认的打印波特率 为 74880 ,按板子的reset按键,串口打印
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x40100000, len 28100, room 16
tail 4
chksum 0x51
load 0x3ffe8000, len 3384, room 4
tail 4
chksum 0xab
load 0x3ffe8d40, len 4104, room 4
tail 4
chksum 0x9d
csum 0x9d
mismatch map 6,spi_size_map 4
system_partition_table_regist fail
oled屏还是显示这hello world。
表 4-4. FOTA 的下载地址(单位:KB)
对于4096KB=32Mbit
boot.bin 0x00000 实际为eagle.flash.bin
user1.bin 0x01000 实际为eagle.irom0text.bin
user2.bin 0x81000(512+512) 0x101000(1024+1024) 无需下载
blank.bin 0x3FB000
esp_init_data_default.bin 0x3FC000
blank.bin 0x3FE000
无变化
不勾选blank.bin 0x3FB000,选择Flash Size为32Mbit-C1,擦除、烧录、重启。
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x40100000, len 28100, room 16
tail 4
chksum 0x51
load 0x3ffe8000, len 3384, room 4
tail 4
chksum 0xab
load 0x3ffe8d40, len 4104, room 4
tail 4
chksum 0x9d
csum 0x9d
rf cal sector: 1019
freq trace enable 0
rf[112] : 00
rf[113] : 00
rf[114] : 01
w_flash
SDK ver: 3.0.1(78a3e33) compiled @ Jul 15 2019 17:20:05
phy ver: 1145_0, pp ver: 10.2
SDK version:3.0.1(78a3e33)
IOT VERSION = v1.0.5t45772(a)
reset reason: 6
LIGHT PARAM: R: -1
LIGHT PARAM: G: -1
LIGHT PARAM: B: -1
LIGHT PARAM: CW: -1
LIGHT PARAM: WW: -1
LIGHT PARAM: P: 1000
malloc:1
prd:1000 r : 22222 g: 22222 b: 22222 cw: 22222 ww: 22222
free:0
PWM version : 00000003
mode : sta(10:52:1c:ef:b8:8a) + softAP(12:52:1c:ef:b8:8a)
add if0
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
finish
除了mode行的sta和softAP和文档不同外,其他都相同。
烧录成功,oled屏还是显示hello world,arduino的代码顽强的运行着,重启后屏不亮。
根据串口打印“system_partition_table_regist fail”可以看到user_pre_init初始化函数调用system_partition_table_regist时执行失败了
查看编译中的error报错,
Description Resource Path Location Type
Symbol ‘SPI_FLASH_SIZE_MAP’ could not be resolved user_main.c /ESP8266_NOSPI_FLASH_SIZE_MAPNOS_SDK/examples/IoT_Demo/user line 94 Semantic Error
结合手册《2c-esp8266_non_os_sdk_api_reference_cn.pdf》的system_partition_table_regist要求:
flash map;必须与编译烧录时选择的 flash map ⼀一致,否则将会启动异
常;建议直接传⼊入宏 SPI_FLASH_SIZE_MAP,它是系统在编译时记录的 flash map 值。
在37行增加SPI_FLASH_SIZE_MAP宏定义,结合我们实际的烧录地址对比,都不能完全匹配,最多能匹配的十和6,就选4吧。
#define SPI_FLASH_SIZE_MAP 4
重新编译前面error错误了,出现新的warnning告警,提示新增的size-map重复了
user_main.c:37:0: warning: “SPI_FLASH_SIZE_MAP” redefined
参考之前的指导书可以看到 SPI_SIZE_MAP=6 是在编译规则里面带进来的,所以应该去掉这个宏定义。
选择Properties --> C/C++ Build --> Build command 中添加编译规则,当前硬件是 32Mbit的模块,所以这样填:( make COMPILE=gcc BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=DIO SPI_SIZE_MAP=6 );
但是去掉宏定义又会出现error,把编译规则去掉了SPI_SIZE_MAP=6,重新烧录2个文件后,串口打印正常,电脑连接wifi后ping 8266地址正常。
此时打开网页http://192.168.4.1/是空白的,这其实说明网页服务也是正常的。
另外有8个warning告警,忽略。
Description Resource Path Location Type
Description Resource Path Location Type
implicit declaration of function 'user_esp_platform_init' [-Wimplicit-function-declaration] user_main.c /ESP8266_NONOS_SDK/IoT_Demo/user line 122 C/C++ Problem
Invalid project path: Include path not found (\usr\include). ESP8266_NONOS_SDK pathentry Path Entry Problem
... 6个路径错误
另外把example目录上移了一级目录。
如果不是OTA时,软件应该写入0和0x10000处; 可以只烧录这2个文件,可以不擦除
而支持OTA时写入boot到0处且软件到0x1000处,注意这里少1个0。
ESP12需要选择6 32Mbit-C1,新的SDK3.0已经去掉了512K+512K的模式,这在乐鑫RTOS的readme资料有说明。
如果其他系统参数(最后3个分区的bin文件)被损坏,可以按照下面一章《NodeMCU固件烧录及测试》进行烧录来恢复。
在user_main.c文件的子函数user_init(void)中修改
这里不小心输入的中文句号也正常打印了。
// Add test code here
os_printf("\nBegin test mychar。。。\n");
char myName;
myName='B';
os_printf("myName is %c\n",myName);
os_printf("\nhello Here!\n");
编译,烧录(未擦除),复位,串口打印
PWM version : 00000003
Begin test mychar。。。
myName is B
hello Here!
mode : sta(10:52:1c:ef:b8:8a) + softAP(12:52:1c:ef:b8:8a)
add if0
add if1
dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1)
bcn 100
finish
建议客户使用新版 ESP8266_RTOS_SDK。 https://github.com/espressif/ESP8266_NONOS_SDK
到网站https://nodemcu-build.com输入邮箱,全部默认会报错,定制固件时只勾选了MQTT
收到邮件的内容
Your NodeMCU custom build finished successfully. You may now download the firmware:
This was built against the master branch and includes the following modules: file, gpio, mqtt, net, node, tmr, uart, wifi.
The files are guaranteed to be available for download for 24h.
I invite you to try my standalone desktop tool to flash firmware binaries: https://github.com/marcelstoer/nodemcu-pyflasher
Learn how to flash the firmware: https://nodemcu.readthedocs.io/en/master/en/flash/. If you’re upgrading from a previous version you should carefully study the “Upgrading Firmware” instructions on that page.
Please help keep this service alive: http://nodemcu-build.com/faq.php#support
下载烧录工具:NodeMCU-PyFlasher-4.0-x86.exe
https://github.com/marcelstoer/nodemcu-pyflasher/releases
插入nodemcu到usb口,
刷新选择端口COM5,
固件选择刚才下载的nodemcu-master-8-modules-2020-09-12-09-25-40-float.bin
默认波特率115200,
Flash mode,默认Dual I/O(DIO) (红色i提示选择方法,比如ESP12是DIO)之前用其他工具烧录的时候可能都没有选对。
Erase flash选择yes,wipes all data
Flash NodeMCU按钮开始刷固件
Console窗口打印
Command: esptool.py --port COM5 --baud 115200 --after no_reset write_flash --flash_mode dio 0x00000 D:\迅雷下载\ESP8266\nodemcu-build资料\nodemcu-master-8-modules-2020-09-12-09-25-40-float.bin
esptool.py v2.6
Serial port COM5
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
MAC: 10:52:1c:ef:b8:8a
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0240
Compressed 462848 bytes to 302014...
Wrote 462848 bytes (302014 compressed) at 0x00000000 in 26.8 seconds (effective 138.4 kbit/s)...
Hash of data verified.
Leaving...
Staying in bootloader.
Firmware successfully flashed. Unplug/replug or reset device
to switch back to normal boot mode.
根据提示插拔或者复位设备。
设备管理器中的COM口时有时无,最终win10出现一次蓝屏死机
wifi连接到ESP-XXXXXX正常
工具 ESPlorer V0.2.0-rc3
选择115200,Open,然后在右侧窗口依次点击
底部的Chip info,Chip ID,Flash ID;右侧FS info
PORT OPEN 115200
Communication with MCU...
Got answer! AutoDetect firmware...
Communication with MCU established.
NodeMCU firmware detected.
=node.heap()
> =node.info()
Warning, deprecated API! node.info() without parameter. It will be removed in the next version. See documentation for details.
3 0 0 15710346 1458208 4096 2 40000000
> =node.chipid()
15710346
> =node.flashid()
1458208
>
Total : 3509482 bytes
Used : 0 bytes
Remain: 3509482 bytes
使用串口工具SSCOM3.3以115200速率连接
AT
>> AT
Lua error: stdin:2: '=' expected near 'AT'
> print(node.info'hw'.flash_size)
4096
>