安卓+OneNet+stm32Mqtt远程物联网_小实验

Attention:只是自己简单的留个总结,记录一下

简单的结合一下在家里面搞个物联网挺实在的,开个灯了检测一下温湿度,ESP32-CAM也可以给家里安装个监控,家里有太阳能热水器可以改装一下自动上水什么的无非多找点传感器模块,如果觉得不方便也可以加一个语音模块什么的,总之拿来初学是没有问题的。当然这里面还有很多优化的问题,我学的很浅显能用就可以了。

一、OneNet

OneNet网址

  1. 这个是OneNet的网址,免费的,对于初学者像我这样的就很友好。注册一个账号,好像还得实名认证,然后创建一个产品,在该产品下创建设备devices即可,什么都不用管了。
  2. OneNet支持很多协议像Http、Mqtt什么的,类似一个服务器,你的安卓端和单片机端只负责相互向对方发数据即可,之间的数据传递、分发了什么都不需要你来管。
  3. Mqtt协议只需要知道订阅和发布即可,大概就是你订阅我(完成这个动作)我来发布消息你就会收到,因为你订阅我了关注我了,消息推送给你。通过我订阅你了,你要发送消息,那么我这里也会收到,如果很多设备都订阅你了,那么你发布消息之后这些设备都会收到消息。
二、stm32_Mqtt_ESP8266
  1. 首先这个ESP8266是个WIFI模块都很熟悉,他和单片机的串口接口接线即可。有很丰富的指令集,刚入手的话可以用串口助手简单的发送几个指令看看WIFI模块有什么相应的动作,比如:串口助手发送AT+RST,模块返回复位成功。
    在这里插入图片描述
  2. 就简单的贴一下关键代码的理解,我觉得对以后写C很有帮助

这三个函数是C库里的很实在,之前从没用过C库的函数也不知道,太尴尬了

sprintf(ClientID,"%s",DEVICEID); //把某数据按照某种格式存放到数据当中
memset(ClientID,0,128);//把某个数组可选大小清0,这是最快的方式,以前都是自己for循环的 尴尬····
memcpy(&MQTT_TxDataInPtr[2],data,size);//把某数组copy到另一个数组,这个也特别好,以前也是自己写的类似的用 实在是尴尬····

这里有一个这样的思想,把自己要发的数据先打包好放到数组当中最后等着发送出去。接下来这种方式对指针操作会有一定的提高。

unsigned char  MQTT_TxDataBuf[5][300];           
unsigned char *MQTT_TxDataInPtr;                           
unsigned char *MQTT_TxDataOutPtr;                       
unsigned char *MQTT_TxDataEndPtr;  

memcpy(&MQTT_TxDataInPtr[2],data,size);     	
MQTT_TxDataInPtr[0] = size/256;             
MQTT_TxDataInPtr[1] = size%256;              
MQTT_TxDataInPtr+=300;                 
if(MQTT_TxDataInPtr==MQTT_TxDataEndPtr)      
	MQTT_TxDataInPtr = MQTT_TxDataBuf[0];    
	
定义个5行每行300空间的数组,定义一个头指针一个尾指针一个中间指针。当我们
第一次打包好数据之后就会把数据Copy到二维数组的第一行当中,在刚开始头指针
和中间指针都指向数组的开头,MQTT_TxDataInPtr+=300; 之后头指针指向第二行
这个时候判断头指针和中间指针指向的位置不同即可判断打包的缓冲区数组内有了
数据,这个时候就可以把数据发送出去
三、AndroidStudio

安卓基于Java开发,面向对象这玩意我感觉最大的难点就是你并不知道他有什么方法,按照C语言的思想就是我需要什么功能就自己写什么功能。
这不Java就有Mqtt包,百度搜一下都有什么方法然后填入代码即可连接。

在这里插入图片描述

提供源码

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值