本文主要对NodeMCU固件库以及SmartWifi等相关知识进行整理,并基于DS18B20形成温度监控传感器模块。
NodeMCU编译
首先clone NodeMCU源码
git clone -b dev https://github.com/nodemcu/nodemcu-firmware
在user_modules.h选择相应的模块,然后在user_config.h中设置相应的配置,大致看了一下除了smartconfig外,还有关于debug、I2C、LFS、TLS等的设置,包括此前涉及到的波特率、整数以及浮点的固件版本等都在这里面设置,由此可见之前对ESP8266调试lua代码的波特率的理解是有问题的,实际上还是在固件中就设置好了,正好是115200而已,要修改只能在这里修改
这两个文件都在app/include中
配置好之后,就可以进行编译了
sudo make clean
sudo make
编译过程需要gcc工具组件的支持,期间遇到了很多问题,也是花了不少功夫才结解决,以后有空详细学习整理一下编译相关的知识
编译完成后的二进制固件在bin文件夹里面,会包含两个文件0x00000.bin 和 0x10000.bin,具体这两个文件是什么,目前我还不是特别清楚,以后在看吧
将编译好的固件下载到ESP82666,还是使用之前的工具,即esptool
esptool.py --port /dev/ttyUSB0 write_flash 0x0000 0x00000.bin 0x10000 0x10000.bin
需要注意的是SmartConfig只有在dev版本中才有,一开始没注意到折腾了一会
在user_config.h中设置WIFI_SMART_ENABLE开启,完成上面的步骤后ESP8266中的固件就带有SmartConfig功能了
SmartWIFI
进入到SmartWIFI后,ESP8266模块会进入到监控所有数据包的模式,通过手机中的相应组件,就可以把SSID和密码等信息广播出去,这样ESP8266就可以接受到对应的wifi连接信息,由此完成wifi配置。
nodemcu中的smartwifi比较简单,示例如下:
wifi.setmode(wifi.STATION)
wifi.startsmart(0,
function(ssid, password)
print(string.format("Success. SSID:%s ; PASSWORD:%s", ssid, password))
wifi_connect(ssid,password)
end
)
通过上面的代码,结合手机端的设置,就可以获得SSID和密码。
手机端app可以用Espressif,下载链接https://github.com/espressifapp
NodeMCU的 SmartConfig功能默认是关闭的,需要下载源码进行编译固件完成,直接通过之前网络编译的方法好象没有那个选项
DS18B20
这个传感器上大学的时候就用过,当时使用单片机照着1-wire的总线协议进行位操作形成的驱动程序,当时废了不少劲才成功,现在直接就有现成的可以用,真是方便了好多
NodeMCU中DS18B20的驱动是用lua编的,并没有像其他很多传感器一样是用c编的,这样就需要使用lua文件调用来完成温度采集和转换了
在NodeMCU中下载ds18b20.lua,然后通过下面的程序就可以完成温度采集了
local t = require("ds18b20")
local pin = 3 -- gpio0 = 3, gpio2 = 4
local function readout(temp)
if t.sens then
print("Total number of DS18B20 sensors: ".. #t.sens)
for i, s in ipairs(

本文介绍了如何定制NodeMCU固件,包括编译设置、SmartConfig功能启用以及DS18B20温度传感器的集成。通过lua脚本实现了温度监控,并利用MQTT协议进行数据传输。当内存不足时,引入LuaFlashStore(LFS)扩展Lua代码存储空间,解决了内存限制问题。
最低0.47元/天 解锁文章
5322

被折叠的 条评论
为什么被折叠?



