stm32——esp8266物联网开发,连接onenet云平台(http)做智能家居(1)

2024-04-18 1130阅读

此处感谢b站up主——彼岸有光我们有船(我认为讲的和江科大老师一样好,如果习惯江科大老师的讲法的朋友们都可以看看捏) 提供的教程和最初的正点原子的源码,因为我学习的是江科大的stm32,所以进行了部分改编和部分注释,在此把视频内容简化,进行简单的复习。

前言:

本实验分为三个大阶段:1.利用esp8266连接上onenet云平台;2.利用云平台做可视化界面并获取数据到stm32中;3.微信小程序通过onenet云平台获取和控制stm32。

本实验使用的是esp8266的usart传输模式,连接云平台,本博客将讲述第一步:利用esp8266连接上onenet云平台。

如有雷同,可能不是巧合哈哈哈。

  1. 从创建onenet开始~

A.onenet的进入

直接在浏览器中输入onenet就可以进入云平台中

stm32——esp8266物联网开发,连接onenet云平台(http)做智能家居(1)

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

stm32——esp8266物联网开发,连接onenet云平台(http)做智能家居(1)

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

stm32——esp8266物联网开发,连接onenet云平台(http)做智能家居(1)

除了下面的联网方式选择wifi,设备接入选择http,操作系统选择Android,运营商随便选择。

然后点击添加设备。在设备列表中

stm32——esp8266物联网开发,连接onenet云平台(http)做智能家居(1)

名称和编号都可以随便写。

加了设备之后就行了。

B.onenet云平台需要记下的东西。

  1. master—apikey。

  1. 设备id。

stm32——esp8266物联网开发,连接onenet云平台(http)做智能家居(1)

onenet的初始内容就差不多了。

  1. 利用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
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]