最近在玩ESP8266 + BMP280 的APRS气象数据报,其实很早之前就看到过BG6CQ老师的github上的软件仓库 https://github.com/bg6cq/nodemcu_bme280 ,也刚好买过一块esp8266神器,然后之前买电子元件的时候还买过BMP280温度气压计,于是刻了快小PCB搭了个AMS1117-3.3的供电玩过。但那个时候模块之间,电源之间都是杜邦线和跳线焊接飞来飞去。非常不适合长期固定使用。后来就给扔盒子里吃灰了。
最近换了我大UOS系统,想着练练手,用KiCAD画了一块板子,再也没飞线了,然后还加了锂电池以及太阳能电池板供电。这样可以不需要接电源直接放在有光照的地方长期工作了。
本来这事就算完成了,欢迎访问 BG6CQ老师的APRS服务器 http://202.141.176.3/ ,搜索BI8AKT-12就能看到我的气象站了。但是想着esp8266这么彪悍的板子带了ADC,正好还可以把电压给检测了,顺便放到气象报文里一起传上来的,这样以后远程也可以随时掌握锂电池电压,而不用时不时拿万用表去量一下看还有电没有了。
但是Lua代码稍微一改,传上去发现BG6CQ大佬的固件是没有打包ADC功能的,没法用,必须要重新刷固件。于是乎想着大家伙平时都在用的那个固件编译网站,可以选完模块就自动给你编译好固件,打开页面访问后,一顿操作,点了提交后,网页直接报个错,说我选的模块太多了,后面我又老老实实的减少模块再试,报错还是一样的,知道最后我只选了一个模块还是报这个错,我就觉得不对劲了,马上XX云弄个虚拟机主机从国外的IP访问过去,发现就啥都正常,选多个模块都不报错,这个网站应该是对中国IP做了限制了,XX对抗难道都提现到民间层面了吗 ?国内访问知会给他带来广告点击量,而不会真正的给你生成固件。国外IP直接一次性搞定,但TMD我等了一下午也没等到他发邮件通知我固件是否编译好了。
最后还是自己动手丰衣足食,自己编译吧,反正各种嵌入式固件我也编译的不少了,人家代码都写全了你动手编译一下还是应该的,白嫖不要太过分。
git clone --recurse-submodules https://github.com/nodemcu/nodemcu-firmware.git
要编译出你需要的模块直接修改这个文件就好了。
app/include/user_modules.h
esptool.py --port COM3 write_flash 0 nodemcu-master-11-modules-2018-11-01-11-20-13-float.bin
然后我看编译的那个bin目录下有两个文件,就拿那个300多k的大的文件直接刷进去,结果死活启动不了,串口全是乱码(其实是代码已经跑飞了),后面一度以为我USB转TTL线跑不了115200那么高的波特率,还专门编译一版9600波特率的固件,发现现象是一样的,后面回头仔细再阅读了官网的文档:https://nodemcu.readthedocs.io/en/release/flash/#which-files-to-flash ,才发现,人家说的很清楚了,自己编译的会产生两个bin文件,要分别刷到0x00000和0x10000两个地址,折腾了快1个多小时才发现。
后面直接分开刷
./esptool.py --port /dev/ttyUSB0 write_flash 0x00000 ./0x00000.bin
./esptool.py --port /dev/ttyUSB0 write_flash 0x10000 ./0x10000.bin
这样就完全正常了。
刷完自己编译的带ADC模块的固件后,发现之前的Lua脚本报错,仔细看了下,tmr里面的语法和2018年的时候不一样了,于是乎参考官网手册改了改格式就好了。这样就供电的锂电池电压检测也有了,温度和气压也有了,为了省电,采用深度睡眠,半个小时唤醒一次采集一下温度电压发送出去,然后再进入深度睡眠,通过前面2周的使用,这套小玩意儿用了2周电池电压还是保持在刚开始放到窗户边的4.0几伏,基本上白天太阳能电池板的充电能满足一整天的消耗,只要有光,这玩意就能一直运行,完全不用关心它。
下一步就是把FreeCAD再复习一下,给他做个外壳3D打印出来。
参考连接: