(开源)STC89c51结合ESP8266制作物联网环境监测系统+APP inventor制作手机App实时显示
STC89c51结合ESP8266制作物联网环境监测系统+APP inventor制作手机App实时显示
- 第一 、先上效果图
- 第二、原理讲解
- 第三、c51读取各种传感器数值
- 第四、传感器数据推送到云端
- 第四 下载程序到STC89c51即可
- 第五、app inventor 制作app 接收实时数据
- 关键程序讲解
- 第六、效果展示
- 第七 可能遇到的一些小问题
第一 、先上效果图
c51程序在第四步,app程序在第五步
第二、原理讲解
原理简述:利用发布订阅模式。第一步,先STC89c51获取各种传感器数值,第二步,新建主题,然后c51往这个主题发送消息,第三步。app inventor 订阅这个主题,因为app inventor 制作的app 订阅了这个主题,就可以收到来自这个主题的消息,也就是可以收到各种传感器数值。
关于发布订阅:
订阅(订阅):订阅给定的一个主题。
发布(发布)将信息发送到指定的主题。
只有订阅该主题的设备才可以收到发往该主题的消息。
通俗的来讲:就是像博客订阅的场景,什么意思呢,也就是说100个人订阅了你的博客,如果博主发表了文章,那么100个人就会同时收到通知邮件,订阅/发布模式就是这样的原理。
如果还不理解的话再通俗讲一下,就像生活中听收音机,要想听收音机,肯定就是调频啦,只有在正确的频道上面,我们才能听得到好听的节目,所以说订阅首先要订阅一个频道/主题,只有订阅了该主题,我们才能收到发往该频道/主题的消息。
在本例程中,c51借助ESP8266推送消息,app订阅主题,就可以实时接收c51发来的消息了。
第三、c51读取各种传感器数值
由于大家的传感器不一样,这里就不统一做例程了,在程序里直接使用了虚拟数值,大家知道就好。
char data1[] = "32"; 为了演示定义的模拟数据,可根据自己传感器自行采集数据char data2[] = "27.8"; //char data3[] = "45"; char data4[] = "26"; char data5[] = "99.12"; char data6[] = "ON";
这里只定义了6个数值,当然可以根据自己需要,随意增加或者减少传感器数值个数,数据类型可自行随意修改。
第四、传感器数据推送到云端
c51示例程序下载:点击下载
程序说明,波特率9600,晶振11.0592
由于ESP8266-01默认波特率是115200,需要先手动调节esp8266-01的波特率。
调整方法:ESP8266-01连接到usb转ttl
五根线
esp8266---------UsbTTL
tx----------rx
rx----------tx
vcc-------3.3v
gnd--------gnd
en----------3.3v
打开串口调试助手,设置波特率115200,找到esp8266的com口并打开,发送
AT+UART=9600,8,1,0,0
末尾应该加上回车换行,串口会回复ok
如果不回复ok,可能固件不支持修改波特率,需要刷官方AT固件,教程: 刷官方固件
串口调试助手: 点击下载
如果上一步传感器数据可以成功读取,那么就可以在上版的基础上,把数据上传到云端。
用keil 打开程序,需要修改WIFI等信息
#define Ssid "newhtc" //WIFI名称,,修改为自己路由器的WIFI名称,好像不支持中文
#define PassWord "qq123456" //WIFI密码,修改为自己路由器的
#define Uid "4d9ec352e0376f2110a0c601a2857225" //巴法云UID密钥,控制台获取
#define Topic "mytemp" //巴法云控制台创建,名称自定义,app订阅主题要和这个推送主题一致
在巴法创客云控制台 新建一个主题,主题名字随意,例如mytemp,本实例用用mytemp,使用示例代码时应修改为自己的主题名字,字母或数字或字母加数字组合。UID为用户私钥,在 巴法创客云控制台 注册登陆后可获得。
登陆完成后,可在控制台看到自己的私钥UID,如图所示:
创建主题,在控制台,可创建主题。
- 第一输入主题,字母或数字或字母+数字组合。
- 点击创建主题。
WIFI名称为自己的路由器WIFI名称,区分大小写,写错会导致连接不上网络的。
void POST(void)//POST数据函数
{int dataLen;uchar postData[150];char strLen[3];char data1[] = "32"; 为了演示定义的模拟数据,可根据自己传感器自行采集数据char data2[] = "27.8"; //char data3[] = "45"; char data4[] = "26"; char data5[] = "99.12"; char data6[] = "ON"; //通过&符号整合需要post的数据。传感器数据用#分开,以便app进行数据分割//自己要知道每个数据代表的意思,一会app端会按排列分割提取数值sprintf(postData,"uid=%s&topic=%s&msg=#%s#%s#%s#%s#%s#%s#\r\n",Uid,Topic,data1,data2,data3,data4,data5,data6); dataLen = strlen(postData); //计算数据长度sprintf(strLen,"%d",dataLen); //int类型转charESP8266_Set("AT+CIPMODE=1"); //开启透明传输模式ms_delay(1000);ESP8266_Set("AT+CIPSTART=\"TCP\",\"api.bemfa.com\",80"); // 连接服务器和端口ms_delay(1000);ESP8266_Set("AT+CIPSEND"); //进入透传模式,下面发的都会无条件传输ms_delay(1000);ESP8266_Set_Only("POST /api/device/v1/data/1/ HTTP/1.1\r\nHost: api.bemfa.com\r\nContent-Type: application/x-www-form-urlencoded\r\nConnection:close\r\nContent-Length:");//ţքdeviceۅ ţքsensorۅESP8266_Set(strLen);//数据长度(postData数据长度),一定要准确ESP8266_Set("");//回车(发完数据长度后,有回车,不懂的百度http post 格式)ESP8266_Set(postData);//发送数据 ms_delay(2000);ESP8266_Set("+++"); //memset(strLen,'\0',3); //重置数组memset(strLen,'\0',sizeof postData);//重置数组
}
通过&符号整合需要post的数据。传感器数据用#分开,以便app进行数据分割
自己要知道每个数据代表的意思,一会app端会按排列分割提取数值
利用HTTP POST形式,往服务器进行消息推送,具体接口可参考:巴法云官方文档
第四 下载程序到STC89c51即可
下载工具STC-ISP:下载:https://www.lanzous.com/iaxa4fc 密码:1234
STC89c51/52和ESP8266接线问题
c51 ----------8266
P30----------TX
P31----------RX
3.3v-----------3.3v
Gnd---------Gnd
3.3v-----------EN
试了8266直接接5v也工作,不过不建议使用
如果路由器有网络的话,数据会自动上传,可在巴法创客云控制台 刷新网页,即可看到上传的数据。如下图所示:
第五、app inventor 制作app 接收实时数据
安装appInventor 点击下载安装
本操作只提供一个app的demo,界面过于丑陋,大家可自由发挥更改界面。
app inventor 程序下载:点击下载
顶部导航栏,依次点击(项目–>导入项目aia),选择上一步骤下载的aia文件导入即可。点击导入的项目,即可看到控制面板,面板主要分为在组建设计和逻辑设计,用户可在右上角进行模式切换。
(组建设计)面板可以向屏幕添加组建以进行二次开发。(逻辑面板)则进行相关逻辑编写。
导入aia文件后,如果只是简单使用,只需要修改两个地方,一个是主题名字,一个是UID,均需开发者置换成自己的topic(主题名字)和UID(用户私钥),均可在创客云控制台获取点击跳转。
此处的主题topic应该和ESP8266程序里面设定的主题修改为一样,不然会收不到消息。UID修改为自己的私钥。
界面还有功能之类的自己可以随意加,更改好,下载apk文件即可。
关键程序讲解
程序下载,修改关键参数后就可直接使用的,以下是关键程序讲解:
接收到带传感器的数据后,依照#号对字符串进行分割,有几个数值,就分割几次,自己要记住第几个数值代表哪种传感器就行了,比如要记住data1是温度,data2是湿度等等,这里的分割次数需要和上传的数据个数相等,有6个数值,就分割6次,7个数值就分割7次,就是依次增加或者减少就行。
当屏幕初始化时,会先订阅主题,只有订阅了这个主题,就可以实时收到发到该主题的消息,cmd=1是订阅指令,就是订阅主题的意思;cmd=9是遗嘱指令,就是获取服务器保存的数值,关于具体指令格式,可以在接入文档了解:接入文档
第六、效果展示
app可实时展示当前各种传感器信息,可做远程监控,手机只要有网络就可以收到数据信息。不管是2G 3G 4G WIFI都行
第七 可能遇到的一些小问题
(开源)STC89c51结合ESP8266制作物联网环境监测系统+APP inventor制作手机App实时显示相关推荐
- 利用ESP8266制作环境监测系统+APP inventor制作手机App实时显示
利用ESP8266制作环境监测系统+APP inventor制作手机App实时显示 原理讲解 ESP8266读取各种传感器数值 传感器数据推送到云端 app inventor 制作app 接收实时数据 ...
- 物联网实训文件_物联网环境监测系统(大体架构)
物联网环境监测系统(大体架构) 目录 物联网环境监测系统(大体架构) 1:实验箱介绍 2:环境监测系统介绍 Environment类 用来分装采集好的数据 Gather接口 客户端采集模块 Clien ...
- udp服务器实时显示温湿度,(可远程)ESP8266读DHT11温湿度,APP inventor制作app实时显示...
原理讲解 原理简述:利用发布订阅模式.第一步,先读取DHT11温湿度数值,第二步,新建主题,然后esp8266往这个主题发送消息,第三步.app inventor 订阅这个主题,因为app inven ...
- (可远程)ESP8266读DHT11温湿度,APP inventor制作app实时显示
ESP8266读DHT11温湿度传感器------APP inventor实时显示 原理讲解 ESP8266读取DHT11 温湿度推送到云端 app inventor 制作app 接收实时数据 关键程 ...
- (远程控制)App inventor 编写安卓app控制 ESP8266
(远程控制)App inventor 编写安卓app控制 ESP8266 第一 下载ESP8266示例(arduino ide 编程开发) 第二 修改demo例程 第三 app inventor 开发 ...
- esp32-cam拍照上传,app inventor 制作安卓app实时显示
esp32-cam拍照上传,app inventor 制作安卓app实时显示 1.ESP32-cam开发环境配置 2 .程序下载 连线 3. 控制台查看图片 第四.app 开发 1.ESP32-cam ...
- 手机app软件测试教程,手机app制作软件测试app的技巧和方式(上)
测试(Testing)是写程序很重要的过程之一.当手机app制作软件一步步完成,过程中你需要不断的测试,随时掌握画面.写出来的功能是否在交到使用者手上时是正常运作.而Thunkable平台上提供了什么 ...
- python制作物联网控制软件下载_Python+树莓派制作IoT(物联网)门控设备
今天就和大家分享一个正在制作的物联网开关门监控设备. 因为考虑需要在户外使用这套物联网门控设备,所以利用树莓派完成这个设备有两个问题需要解决, 第一是需要解决树莓派和相关模块的供电问题. 第二就是需要 ...
- ultraiso制作u盘系统linux,ultraiso制作Linux USB启动盘的操作步骤
大家熟悉使用ultraiso制作Linux USB启动盘的操作步骤吗?不清楚的朋友和小编一起看看吧. ultraiso制作Linux USB启动盘的操作步骤 首先下载软碟通这个软件UltraISO,网 ...
最新文章
- @Singleton能保证单例吗
- 【数据结构与算法】之深入解析“零钱兑换”的求解思路与算法示例
- 20160512关于mac安装caffe的记录
- 压缩命令_Linux gzip命令:压缩文件或目录
- python爬取多页数据_python爬虫实现爬取同一个网站的多页数据代码实例
- Elasticsearch使用备忘
- 基于WCF的通道网络传输数据压缩技术的应用研究
- 社区护理 100404
- 移动边缘计算卸载技术笔记(一)
- 百度语音识别API报错KeyError: ‘result‘
- 高清视频格式-BD-remux、BD-RE、BDRip的区别
- 网络文章(摘录)_顺序
- 绿联蓝牙发射器 linux,绿联蓝牙发射器 Switch蓝牙耳机完美解决方案
- 简单的python爬虫程序:爬取斗鱼直播人气前五十的主播
- 北邮信通复试题c语言,北邮计算机考研复试题的C语言解答精选.pdf
- NetBIOS 漏洞的入侵与防御
- 计算机远程用户屏蔽,允许/阻止用户使用远程桌面服务进行远程连接
- 前端开发面试题及答案
- 「镁客早报」华为余承东欢迎苹果使用5G芯片;三星首款折叠手机本月开卖...
- 在Visual Studio Code 中配置Python 中文乱码问题
热门文章
- 洪水灾害数据下载介绍
- jsqlparser mysql_使用JSQLParser解析SQL中涉及到的表
- python零基础cap_零基础学Python语言CAP
- 阿里DDD项目最佳实践-COLA 架构总览
- 小火山视频-有趣有料有亮点的视频
- 常耀俊老师经典《360人际沟通技巧》课程
- elementUI 日期时间选择器添加默认时间
- 计算机毕业设计JAVA好车惠二手车交易平台mybatis+源码+调试部署+系统+数据库+lw
- Python-去除字符串中不想要的字符
- GPS电子围栏如何触发进出围栏报警,GPS定位系统又是如何管理的