本帖最后由 Litthins 于 2021-1-23 16:58 编辑
去年在NXP社区,以“物趣系列”为主题,我们通过ST7735串口屏、OV7670摄像头和ESP8266WIFI模块实现了拍摄本地图片上传到服务器进行智能识别,再回传标注图片到本地进行显示的应用。3帖子+1视频的原创形式,帖子浏览量1400+,视频5300+的成绩,说实话远超我的预期。要回应大家的支持!这样想着,2021年的物趣系列又和大家见面了!
新的题目:
基于LPC55S69的4G联网超声雾化器设计(网页版)
下面是问答环节:
Q:物趣系列第二弹,有什么特点吗?
A:第二弹每一帖都是全新的尝试,新瓶子不装旧酒。为了和大家分享制作的乐趣,帖子内容保持精简风格,实验易于复现。
Q:第二弹第一帖的主题是什么呢?
A:去年我们用ESP8266尝试了TCP透传,今年试试4G模块走HTTP协议吧!请看下面!
物趣系列第二弹! LPC55S69之①:4G模块实现HTTP协议POST操作
第二弹的目标是实现一款基于Web控制的超声雾化器(北方的冬天真干燥!)。技术路线上,还是分三步走,第一步,LPC55S69-EVK适配L610模块实现4G联网,使用HTTP协议POST方法上传数据至服务器。本贴! 第二步,LPC55S69-EVK搭配光耦实现本地超声雾化器控制。 (PS.超声雾化器本质上是雾化片和驱动电路谐振,但调参是个技术活,这里直接使用淘宝10元货) 第三步,LPC55S69-EVK获取温度湿度数据上传云端,网页远程显示温湿度波形,控制雾化器开关。
先上L610与LPC55S69-EVK的合照!
4G模块选择其实挺多的,本次使用的L610是广和通的4G通信模块,项目用剩的。模块可通过串口引脚直接与微控制器连接。因为该模块本身已经实现有HTTP协议,使用时仅需通过AT指令进行相应的设置,十分方便。
首先是LPC55S69软件工程的建立。这里还是使用MCUXpresso IDE集成开发环境,版本号v11.2.0_4120。首页还是那么熟悉。一些朋友可能没有安装过LPC55S69对应的SDK。需要点击第一项,搜索SDK并安装,操作步骤如下图。
安装完成后可点击新建工程,由于本贴只涉及串口操作,这里无需添加外设驱动,直接生成新工程即可。新工程生成后,点击菜单-配置工具-引脚,进行串口配置。这里使用FLEXCOMM0的串口,相关引脚可参考官方设计文档中LPCXpresso55S69_Board_Schematic_RevA2.PDF文件,这里给出参考的引脚定义。 引脚配置、时钟分配和串口参数设置细节见以下三图,基本操作,不展开了。图如果看不清,可点开看大图。 串口参数设置
完成串口配置后,将4G模块连接到评估板,模块开机,LPC55S69通过以下AT指令检查模块状态: - const uint8_t AT_CPIN[] = "AT+CPIN?\r\n"; //检查SIM卡状态
- const uint8_t AT_CSQ[] = "AT+CSQ?\r\n"; //查询当前信号值
- const uint8_t AT_CGREG[] = "AT+CGREG?\r\n"; //查询数据服务是否可用
- const uint8_t AT_CGDCONT[] = "AT+CGDCONT=1,"IP","cmnet"\r\n"; //设置APN
- const uint8_t AT_MIPCALL[] = "AT+MIPCALL=1\r\n"; //请求IP
复制代码 完成IP请求后,可进行HTTP的POST配置。首先设置目标服务器的IP、端口、路由,再设置数据类型,这里上传json数据,所以是application/json。其后告诉4G模块json数据的长度,该指令后可写入对应长度的json数据,待数据写入完毕,执行POST命令,模块将使用配置好的请求格式访问目标主机。 - const uint8_t AT_HTTPSET1[] = "AT+HTTPSET="URL","目标IP:目标端口/目标路由"\r\n"; //设置HTTP的URL
- const uint8_t AT_HTTPSET2[] = "AT+HTTPSET="CONTYPE","application/json"\r\n"; //设置HTTP的数据类型为json
- const uint8_t AT_HTTPDATA[] = "AT+HTTPDATA=40\r\n"; //输入将要POST的数据,这里是40字节
- const uint8_t AT_HTTPACT[] = "AT+HTTPACT=1,30\r\n"; //执行POST
- const uint8_t AT_HTTPREAD[] = "AT+HTTPREAD=0,180\r\n"; //读取180字节返回信息
复制代码 因为只需上传温度和湿度数据,所以我们定义json数据格式如下。其中,AAAA\BBBB为4位16进制数,分别对应温度和湿度。 - {"temperature":"AAAA","humidity":"BBBB"}
复制代码 在服务器端运行基于Flask的Web框架,测试程序如下: EVK通过4G模块POST数据到服务器,服务器端产生响应: 作战成功!敬请期待第二帖:LPC55S69-EVK搭配继电器实现本地超声雾化器控制!
|