基于arduino平台开发ESP32-C3 SUPERMINI+MAX31865+PT100(三线制)的过程记录

需求

最开始想做一个测温的单片机,用来测量炉温,后面将需求细化后发现还是有不少东西的

  • 测温范围0-350°
  • 单片机尺寸和功耗越小越好
  • 熟悉pt100,且热电阻用途广泛,网上资料多
  • 可以在手机查看温度情况

选型

基于上述情况,也借助AI推荐,有了以下的选型

  • 单片机采用ESP32-C3 SUPERMINI,尺寸小巧,虽然gpio不多,但也有SPI通讯,够用了。有2.5G WIFI,有蓝牙,方便和手机通讯,有type-c接口烧录和供电,不错不错
  • pt100一般用温度传送器,但需要用单片机的模数转换,模拟量的传输影响比较多,且受精度影响,虽然不是不能用,但AI推荐配合MAX31865模块采集pt100的温度,这样单片机可以直接从模块中读取温度值,这个模块也可以支持2、3、4线制,并自动校准零点

开发过程

基础的焊接就不说了,主要提一下MAX31865的处理

MAX31865的处理

虽然这个模块支持2、3、4线制,但是需要根据需求焊接一下焊盘,我的热电阻买的三线制,所以需要将“2/3Wire”焊上短接;将“24 3”焊盘的中间和右边焊上短接,中间和左边的用刀切开出厂默认的短接线
可能是挺长时间没玩单片机,基础知识有点忘了,max31865有vin和3.3两个端口,供电范围3-5v,需要接在vin上,3.3是模块在5v供电输入时可以继续向外提供3.3v供电的接口,所以最开始接错了,还好模块有保护,没烧芯片
因为只有一个模块,所以RDY不用接线

pt100的处理

三线制热电阻有一个红色端子,两个蓝色端子。蓝色的不用区分,在F+、RTD+各插一个就行,红色的插F-或RTD-都可以,因为“2/3Wire”焊上短接的就是F-和RTD-

ESP32-C3 SUPERMINI的处理

单片机有自己带的SPI端口,我没用,用到的其他GPIO模拟,也没差,虽然MAX31865是3-5v供电,但还是提供了5v给它

基础测温程序

用的arduino开发,安装MAX31865库,自带一个示例程序,注意

// Use software SPI: CS, DI, DO, CLK
Adafruit_MAX31865 thermo = Adafruit_MAX31865(10, 11, 12, 13);

这里将SPI的四条线定义好对应的单片机gpio口就行

遇到的问题

arduino的串口监视器没有输出

根据样例,应该会每秒输出温度值,但没有,翻了很多网页,测试出来解决方法,默认“USB CDC On Boot”是disable,但是可能单片机片上传输芯片,调整为enable,就能正常输出了,其他配置没啥


USB CDC设置

单片机选择micropython还是arduino

原本想用python开发,因为程序往片上一传就能运行,不用等,但是总是有点问题,不能正常SPI通讯,获取不到MAX31865的反馈,搜了搜百度,还是换回arduino用MAX31865库
就正常了……
期间用USB逻辑分析仪采样,显示也是没有模块的数据读取,不知道是电平宽度还是什么问题
看来还是老老实实用arduino比较好

手机显示温度

ESP系列可以开WIFI这个不用说了,但是正常的开个AP,还得手机连上WIFI后,自己打开浏览器去输入单片机IP,访问它的网页
感谢百度,我用了一个方法,手机连上WIFI后强制自动弹出网页,并显示温度值
这里要说到状态码302,手机连上WIFI后,如果WIFI有强制认证,会返回302状态码,并跳转到认证网页。用到这个方法,我不用认证,只要显示温度就好啦


虽然只是很简单的一个小东西,但坑还是不少,弄了好长一段时间,回想以前的单片机基础知识,中间还以为MAX31865被我弄坏了,还好没有hhhh

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容