stm32——esp8266物联网开发,连接onenet云平台(http)做智能家居(1)
此处感谢b站up主——彼岸有光我们有船(我认为讲的和江科大老师一样好,如果习惯江科大老师的讲法的朋友们都可以看看捏) 提供的教程和最初的正点原子的源码,因为我学习的是江科大的stm32,所以进行了部分改编和部分注释,在此把视频内容简化,进行简单的复习。
前言:
本实验分为三个大阶段:1.利用esp8266连接上onenet云平台;2.利用云平台做可视化界面并获取数据到stm32中;3.微信小程序通过onenet云平台获取和控制stm32。
本实验使用的是esp8266的usart传输模式,连接云平台,本博客将讲述第一步:利用esp8266连接上onenet云平台。
如有雷同,可能不是巧合哈哈哈。
从创建onenet开始~
A.onenet的进入
直接在浏览器中输入onenet就可以进入云平台中

如图,注册登录onenet后,点击控制台。再点击多协议接入。在多协议接入中

点击添加产品,在添加产品中

除了下面的联网方式选择wifi,设备接入选择http,操作系统选择Android,运营商随便选择。
然后点击添加设备。在设备列表中

名称和编号都可以随便写。
加了设备之后就行了。
B.onenet云平台需要记下的东西。
master—apikey。
设备id。

onenet的初始内容就差不多了。
利用esp8266上传消息到onenet中
esp8266的传输在本实验中是用的usart3
先浅浅讲述一下代码的思路
本代码的不可或缺的四个文件:time(中断,用的Tim2),usart3(esp8266的上传),sys (我也不知道这个文件是干什么的,要是朋友你能够优化这个代码把sys从项目中弄走就谢谢你了),esp8266(初始化)
主要代码作用在注释中已经写出啦
usart的c文件
#include "usart3.h"
#define USART3_RXBUF_LEN 15
u8 t;
u8 USART3_RX_BUF[USART3_MAX_RECV_LEN]; //接收缓冲,最大USART3_MAX_RECV_LEN个字节.
u8 USART3_TX_BUF[USART3_MAX_SEND_LEN]; //发送缓冲,最大USART3_MAX_SEND_LEN字节
vu16 USART3_RX_STA=0;
//初始化串口3,使用9600波特率,和esp8266设备进行通信
//bound:波特率
void Usart3_Init(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); //此处使用的是USART3,是APB2时钟的外设
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能USART3和上面的GPIOB时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输入,用于发送
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //引脚的Tx
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入,用于接收或者浮空输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //引脚的Rx
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
USART_InitTypeDef USART_InitStructure; //USART的配置
USART_InitStructure.USART_BaudRate = 115200;//通常esp8266为115200的波特率
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;//收发模式
USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
USART_Init(USART3, &USART_InitStructure); //USART3
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//开启串口接受中断
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitTypeDef NVIC_InitStructure; //中断
NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; //抢占优先级3
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子优先级3
NVIC_Init(&NVIC_InitStructure);
USART_Cmd(USART3, ENABLE); //使能串口3
TIM2_Int_Init(1000-1,7200-1); //10ms中断
USART3_RX_STA=0; //清零
TIM_Cmd(TIM2,DISABLE); //关闭定时器2
}
//串口3的发送函数 len=USART_RX_STA&0x3fff;
//得到此次接收到的数据长度USART_SendData(USART1, USART_RX_BUF[t]);
void Uart3_SendStr(u8* SendBuf,u8 len)
{
//len=SendBuf&0x3fff;//得到此次接收到的数据长度
for(t=0;t
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
