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实时显示相关推荐

  1. 利用ESP8266制作环境监测系统+APP inventor制作手机App实时显示

    利用ESP8266制作环境监测系统+APP inventor制作手机App实时显示 原理讲解 ESP8266读取各种传感器数值 传感器数据推送到云端 app inventor 制作app 接收实时数据 ...

  2. 物联网实训文件_物联网环境监测系统(大体架构)

    物联网环境监测系统(大体架构) 目录 物联网环境监测系统(大体架构) 1:实验箱介绍 2:环境监测系统介绍 Environment类 用来分装采集好的数据 Gather接口 客户端采集模块 Clien ...

  3. udp服务器实时显示温湿度,(可远程)ESP8266读DHT11温湿度,APP inventor制作app实时显示...

    原理讲解 原理简述:利用发布订阅模式.第一步,先读取DHT11温湿度数值,第二步,新建主题,然后esp8266往这个主题发送消息,第三步.app inventor 订阅这个主题,因为app inven ...

  4. (可远程)ESP8266读DHT11温湿度,APP inventor制作app实时显示

    ESP8266读DHT11温湿度传感器------APP inventor实时显示 原理讲解 ESP8266读取DHT11 温湿度推送到云端 app inventor 制作app 接收实时数据 关键程 ...

  5. (远程控制)App inventor 编写安卓app控制 ESP8266

    (远程控制)App inventor 编写安卓app控制 ESP8266 第一 下载ESP8266示例(arduino ide 编程开发) 第二 修改demo例程 第三 app inventor 开发 ...

  6. esp32-cam拍照上传,app inventor 制作安卓app实时显示

    esp32-cam拍照上传,app inventor 制作安卓app实时显示 1.ESP32-cam开发环境配置 2 .程序下载 连线 3. 控制台查看图片 第四.app 开发 1.ESP32-cam ...

  7. 手机app软件测试教程,手机app制作软件测试app的技巧和方式(上)

    测试(Testing)是写程序很重要的过程之一.当手机app制作软件一步步完成,过程中你需要不断的测试,随时掌握画面.写出来的功能是否在交到使用者手上时是正常运作.而Thunkable平台上提供了什么 ...

  8. python制作物联网控制软件下载_Python+树莓派制作IoT(物联网)门控设备

    今天就和大家分享一个正在制作的物联网开关门监控设备. 因为考虑需要在户外使用这套物联网门控设备,所以利用树莓派完成这个设备有两个问题需要解决, 第一是需要解决树莓派和相关模块的供电问题. 第二就是需要 ...

  9. ultraiso制作u盘系统linux,ultraiso制作Linux USB启动盘的操作步骤

    大家熟悉使用ultraiso制作Linux USB启动盘的操作步骤吗?不清楚的朋友和小编一起看看吧. ultraiso制作Linux USB启动盘的操作步骤 首先下载软碟通这个软件UltraISO,网 ...

最新文章

  1. @Singleton能保证单例吗
  2. 【数据结构与算法】之深入解析“零钱兑换”的求解思路与算法示例
  3. 20160512关于mac安装caffe的记录
  4. 压缩命令_Linux gzip命令:压缩文件或目录
  5. python爬取多页数据_python爬虫实现爬取同一个网站的多页数据代码实例
  6. Elasticsearch使用备忘
  7. 基于WCF的通道网络传输数据压缩技术的应用研究
  8. 社区护理 100404
  9. 移动边缘计算卸载技术笔记(一)
  10. 百度语音识别API报错KeyError: ‘result‘
  11. 高清视频格式-BD-remux、BD-RE、BDRip的区别
  12. 网络文章(摘录)_顺序
  13. 绿联蓝牙发射器 linux,绿联蓝牙发射器 Switch蓝牙耳机完美解决方案
  14. 简单的python爬虫程序:爬取斗鱼直播人气前五十的主播
  15. 北邮信通复试题c语言,北邮计算机考研复试题的C语言解答精选.pdf
  16. NetBIOS 漏洞的入侵与防御
  17. 计算机远程用户屏蔽,允许/阻止用户使用远程桌面服务进行远程连接
  18. 前端开发面试题及答案
  19. 「镁客早报」华为余承东欢迎苹果使用5G芯片;三星首款折叠手机本月开卖...
  20. 在Visual Studio Code 中配置Python 中文乱码问题

热门文章

  1. 洪水灾害数据下载介绍
  2. jsqlparser mysql_使用JSQLParser解析SQL中涉及到的表
  3. python零基础cap_零基础学Python语言CAP
  4. 阿里DDD项目最佳实践-COLA 架构总览
  5. 小火山视频-有趣有料有亮点的视频
  6. 常耀俊老师经典《360人际沟通技巧》课程
  7. elementUI 日期时间选择器添加默认时间
  8. 计算机毕业设计JAVA好车惠二手车交易平台mybatis+源码+调试部署+系统+数据库+lw
  9. Python-去除字符串中不想要的字符
  10. GPS电子围栏如何触发进出围栏报警,GPS定位系统又是如何管理的