基于单片机的机智云联网以及配置上下发数据教程(超详细)

这篇具有很好参考价值的文章主要介绍了基于单片机的机智云联网以及配置上下发数据教程(超详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1-4为简单介绍机智云的一些基本内容

5-13为配置内容

一、何谓机智云

机智云是致力于物联网、智能硬件云服务的开发平台,为开发者提供自助式智能硬件开发工具和开放的云端服务(完全免费)。

二、代码自动生产工具

为了降低开发者的开发门槛,缩短开发周期,降低开发资源投入,机智云(Gizwits)推出可代码自动生成服务。云端会根据产品定义的数据点生成对应产品的设备端代码。

 三、目前自动生成代码支持硬件设备方案

  1. 独立MCU方案  WIFI依靠串口与MCU进行通信(本次云家居使用此方案)
  2. SOC方案  (ESP8266、ESP32)
    方案 说明
    MCU方案 模组负责与云端信息的交互,通过串口与主控板(即MCU)进行通信,需要在MCU上讲行协议解析与外设按制的开发。
    SoC方案 节省一颗MCU芯片,利用模组内部资源完成传感器操作和产品逻辑。

 四、使用机智云开发产品

硬件上报数据,单片机,嵌入式硬件

五、创建产品(重点开始)

  1. 打开机智云官网

机智云官网:机智云|物联网云平台,智能IoT开发云平台,智能IoT软件开发平台,智能IoT开发云平台,工业物联网解决方案

2、找到开发者平台,创建个人账号

硬件上报数据,单片机,嵌入式硬件

如有账号可直接登陆,如无账号请注册后登录

硬件上报数据,单片机,嵌入式硬件

开发者中心页面如图所示

 3、点击创建产品,创建一个新产品

硬件上报数据,单片机,嵌入式硬件

硬件上报数据,单片机,嵌入式硬件

注:可用标准方案也可使用自定义方案

标准方案为机智云设定的功能定义模板,自由度低

自定义方案为用户自定义功能,自由度高

四、选择自定义方案,并如图设置

硬件上报数据,单片机,嵌入式硬件

 5、进入到新建产品中,点击去编辑添加数据点(功能定义)

硬件上报数据,单片机,嵌入式硬件

 6、添加所需要数据点 --- 即添加功能

硬件上报数据,单片机,嵌入式硬件

  添加完如图所示:

硬件上报数据,单片机,嵌入式硬件

 到此创建产品完成。

六、调试设备

  1. 返回开发者中心首页,点击“下载中心”
  2. 下载APP调试工具

 硬件上报数据,单片机,嵌入式硬件

3、下载完成后,打开虚拟设备调试

        注意:新版机智云网页端二维码有bug,需要到旧版机智云扫码绑定设备

        回到机智云官网首页,点击网页右上角“ENGLISH”,如图

硬件上报数据,单片机,嵌入式硬件 4、进入旧版开发者中心,如图

硬件上报数据,单片机,嵌入式硬件

5、进入产品生成调试二维码

硬件上报数据,单片机,嵌入式硬件

继续往下走:

硬件上报数据,单片机,嵌入式硬件

点击生成调试二维码:

硬件上报数据,单片机,嵌入式硬件

6、手机端调试APP扫描二维码绑定设备

硬件上报数据,单片机,嵌入式硬件

7、返回开发者中心进行调试,到此调查步骤完成。

七、移植代码准备

1、刷入机智云联网固件

下载固件 --- 下载中心

硬件上报数据,单片机,嵌入式硬件

这个固件是给wifi模块烧录的,本次教学,使用的是ESP8266-01s,详细烧录过程,大家可移步到我的主页进行观看(为了方便大家,我还是把连接放到下方,有需要的同学可自行查看,以及下方含有机智云联网固件下载方式)

ESP8266-01s和CH340烧录机智云固件全解-CSDN博客

https://download.csdn.net/download/weixin_52680858/88326807?spm=1001.2014.3001.5503

八、自动生成Gizwits代码

        这是机智云自动生成的代码,也就是我们配置的一下功能,机智云已经帮我们生成程序,我们只需要移植到我们的工程和找到对应的功能位置进行修改添加,便可联网成功。

1、生产代码

硬件上报数据,单片机,嵌入式硬件

下载完解压:

硬件上报数据,单片机,嵌入式硬件

以上为自动生成代码内容,此图PDF为代码移植步骤

 九、移植代码准备

  1. 单片机需满足大于2kbyte的SRAM,机智云代码有环形缓冲区
  2. 准备好与WIFI模块连接的代码串口,需开启接收中断  波特率必须时9600
  3. 准备一个定时器,并开启1ms更新中断,为数据传输提供时基
  4. OK完事开始移植
  5. WIFI模块接在USART2(接在哪个模块,同学们可自由选择,本次教学以串口2为模板)

 十、工程代码移植

1、打开下载好的代码,选中标蓝的两个文件夹,如图

硬件上报数据,单片机,嵌入式硬件

 2、把复制的两个文件夹放到工程目录中

硬件上报数据,单片机,嵌入式硬件3、打开工程配置设备虚拟树硬件上报数据,单片机,嵌入式硬件

硬件上报数据,单片机,嵌入式硬件

注:因为每个人创建的工程目录习惯不一样,所以大家的目录可能各不相同,同学们只需要把我第一步的两个文件移植进来即可

 4、添加对应.c文件

硬件上报数据,单片机,嵌入式硬件

硬件上报数据,单片机,嵌入式硬件

 5、包含相关头文件路径

魔法棒---C/C++---include

硬件上报数据,单片机,嵌入式硬件

 硬件上报数据,单片机,嵌入式硬件

6、编写USART2代码 ---- 注意波特率必须为9600

 

void Usart2_Init(void)
{
	
	GPIO_InitTypeDef GPIO_InitStruct;//定义结构体变量名
	USART_InitTypeDef usart_InitTypeDef;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//打开GPIOA时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//打开GPIOA时钟
//	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;//通用推挽输出
	GPIO_InitStruct.GPIO_Pin =GPIO_Pin_2;//配置9号
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;//速度50Mhz
	GPIO_Init(GPIOA,&GPIO_InitStruct);//初始化GPIOA
	
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;//通用推挽输出
	GPIO_InitStruct.GPIO_Pin =GPIO_Pin_3;//配置10号管脚
	GPIO_Init(GPIOA,&GPIO_InitStruct);//初始化GPIOA
	
  usart_InitTypeDef.USART_BaudRate = 9600;
	usart_InitTypeDef.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
	usart_InitTypeDef.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
	usart_InitTypeDef.USART_Parity = USART_Parity_No;
	usart_InitTypeDef.USART_StopBits = USART_StopBits_1; 
	usart_InitTypeDef.USART_WordLength = USART_WordLength_8b;
	USART_Init(USART2,&usart_InitTypeDef);
	USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
//	USART_ITConfig(USART2,USART_IT_IDLE,ENABLE);
	
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	NVIC_InitTypeDef NVIC_InitStruct={0};
	NVIC_InitStruct.NVIC_IRQChannel = USART2_IRQn;
	NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 2;
	NVIC_InitStruct.NVIC_IRQChannelSubPriority = 2;
	NVIC_Init(&NVIC_InitStruct);
	USART_Cmd(USART2,ENABLE);
	
}


void USART2_IRQHandler(void)
{
	static u8 data;
	if(USART_GetITStatus(USART2,USART_IT_RXNE))
	{
		USART_ClearITPendingBit(USART2,USART_IT_RXNE);
		data = USART_ReceiveData(USART2);
			

	}

}

7、编写1ms定时器更新中断

void TIM1_Update(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);//打开TIM4时钟
	
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct={0};
	TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;//向上计数
	TIM_TimeBaseInitStruct.TIM_Period = 1000 - 1;
	TIM_TimeBaseInitStruct.TIM_Prescaler = 72 - 1;//72Mhz  T=1/f = 1000hz
	TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStruct);
	
	TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);
	
	NVIC_InitTypeDef NVIC_InitStruct={0};
	NVIC_InitStruct.NVIC_IRQChannel = TIM1_UP_IRQn;//中断源
	NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;//使能中断源
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 2;//抢占优先级
	NVIC_InitStruct.NVIC_IRQChannelSubPriority = 2;//次级优先级
	NVIC_Init(&NVIC_InitStruct);
	
	TIM_Cmd(TIM1,ENABLE);

}


void TIM1_UP_IRQHandler(void)
{
	if(TIM_GetITStatus(TIM1,TIM_IT_Update) != RESET)
	{
		TIM_ClearITPendingBit(TIM1,TIM_IT_Update);
		
	}
}

 完成准备工作:

  • 配置USART2代码并打开接收中断
  • 完成TIM1 1ms更新中断代码

十一、移植步骤 

移植代码说明:

  1. 实现与模组通信串口驱动(中断收数据写入环形缓冲区;实现uartWrite()串口发送函数) ->USART2
  2. 实现串口打印函数printf();
  3. 实现1ms定时器,gizTimerMs()维护系统时间 (提供时基)
  4. 实现MCU复位函数,模组可请求MCU复位
  5. 实现配置入网功能,调用gizwitsSetMode()函数实现模组配网功能
  6. 实现userHandle()数据的采集(上行逻辑) 
  7. 实现 gizwitsEventProcess()控制命令的具体执行(下行逻辑)

具体参考官方移植过程

开始移植

 1、WIFI串口接收数据写入缓冲区

        将wifi 串口接收到数据写入到缓冲区中,而写入缓冲区的函数为gizPutData(),函数位置在gizwits_protocol.c文件下

注意:需在usart2.c文件里包含gizwits_protocol.h文件(要不调用函数为gizPutData()会报错

硬件上报数据,单片机,嵌入式硬件 

2、实现uartWrite()串口发送数据

        在uartWrite()函数中.协议通信会用到这个函数,而这函数会涉及数据帧数据的发送。这里需我们提供串口的发送函数(这里我们用的是串口2), uartWrite()函数具体位置在gizwits_product.c文件下

硬件上报数据,单片机,嵌入式硬件

 3、实现毫秒定时

        协议层的运行需要一个系统时间。事件单位为1毫秒,所以我们需要实现毫秒定时器(必须是 1ms的精确定时,若不准确,会影响到超时重发、定时上报等处理).gizTimerMs()函数具体位置在gizwits_product.c文件下

硬件上报数据,单片机,嵌入式硬件

注意:原文件gizTimerMs();函数没有定义记得定义一次先,就是在gizwits_product.h文件进行定义

 4、实现芯片复位函数

        根据串口协议文档规定, 模组可以发送命令复位设备 MCU, 所以用户需要实现
mcuRestart()接口完成设备的复位。此函数在gizwits_product.h

硬件上报数据,单片机,嵌入式硬件

找到函数,添加对应内容

5、实现配置入网

        模组支持 SoftAp AirLink 两种方式配置入网, 相应接口为 gizwitsSetMode(), 建议采用按键的方式, 相应的按键动作触发执行具体的模式设置。另外, 可以通过 gizwitsSetMode()接口复位模组,此函数在gizwits_protocol.h

WIFI_RESET_MODE                恢复默认出厂设置

WIFI_SOFTAP_MODE            热点配网

WIFI_AIRLINK_MODE            手机广播配网

 这里我们选择的手机广播配网,(我使用的是按键控制联网)

硬件上报数据,单片机,嵌入式硬件

 

key = key_scan();
		if(key == 1)//设置配网模式
		{
			gizwitsSetMode(WIFI_AIRLINK_MODE);
			printf("WIFI_AIRLINK_MODE OK\r\n");
		}
		if(key == 2)//恢复出厂设置
		{
			gizwitsSetMode(WIFI_RESET_MODE);
			printf("WIFI_RESET_MODE OK\r\n");
		}

6、协议处理

        根据采集到的数据。然后调用函数 gizwitsHandle()、userHandle()上报,函数位置在gizwits_protocol.c文件中,该函数主要完成协议数据的处理及数据主动上报的相关操作。

硬件上报数据,单片机,嵌入式硬件

返回main.c

在main.c进行外部声明

硬件上报数据,单片机,嵌入式硬件

 在while(1)调用gizwitsHandle()和userHandle()上报数据

gizwitsHandle(&currentDataPoint);
userHandle();

注意:自己亦可封装这两个函数,需要联网操作都需要调用这两个函数

7、初始化

自己建立一个机智云初始化函数,函数内容如下图, 内容亦是我之前上面所说的

硬件上报数据,单片机,嵌入式硬件

//机智云初始化
void Gizwits_Init(void)
{
	TIM1_Update();//TIM1初始化
	Usart2_Init();//USART2初始化
	memset((uint8_t*)&currentDataPoint, 0, sizeof(dataPoint_t));
	gizwitsInit();
}

 到这一步,配网就基本完成了

只是配网还不行,我们还需要进行数据上发到我们的机智云端,将数据显示在我们的app上,以及app如何下发命令控制我们单片机。这些都需要配置的。

十二、数据上下发配置

一、单片机上发数据到机智云云端

上发数据用到的函数为userHandle(),也就是我上面所说要放到while(1)里面的函数,只有这样我们的数据才能一直上发到云端,这个函数是在gizwits_protocol.c

硬件上报数据,单片机,嵌入式硬件

如我所示,我是将自己的温湿度、二氧化碳浓度等数据上传到机智云端。

二、app下发命令配置 

需要配置的文件gizwits_protocol.c

如我们在刚刚网页配置时,设置了一个0和1控制水泵打开,那机智云会生产对应的0和1操作,我们只需要找到对应的位置,然后往0和1里添加自己的开关便可,如下图所示:

硬件上报数据,单片机,嵌入式硬件

十三、配置成功

到这一步,基本已经配置成功了,是不是很简单,只需要按照程序来做,大家都能顺利成功配网。

看到这的同学,如果觉得对你有用,就麻烦大家点点赞和收藏,谢谢!!!!

---------以下内容为打广告-----------

本人承接各种单片机设计,价格实惠,有需要的同学可联系本人QQ1972218606

---------------------------------------------

如图为配置成功模板:

硬件上报数据,单片机,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-783026.html

到了这里,关于基于单片机的机智云联网以及配置上下发数据教程(超详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ROS通信------基于物联网(单片机)与手机通信

    ROS通信------基于物联网(单片机)与手机通信,物联网通信使用的是 http://iot.dfrobot.com.cn http://iot.dfrobot.com.cn 对于MQTT的使用可以查阅博主的 物联网MQTT通信------Easy IoT、SIoT 左边是博主3D打印一个外壳 套住了,外观没有太精美,中间是博主自己做的APP,功能暂未完善,右边是用别

    2024年02月04日
    浏览(41)
  • 毕业设计 - 基于单片机的智能饮水机系统设计与实现 (物联网 嵌入式 单片机)

    Hi,大家好,学长今天向大家介绍一个 单片机项目 基于单片机的智能饮水机系统设计与实现 大家可用于 课程设计 或 毕业设计 这次设计的智能饮水机就是单片机结合传感器的一个应用。 该系统设计综合单片机以及电子技术理论,从生活实际出发,完善了饮水机的功能。整个

    2024年02月03日
    浏览(105)
  • 单片机毕设分享 基于STM32单片机的老人防摔倒报警系统 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月02日
    浏览(64)
  • 基于单片机+物联网控制的校园空气净化计划系统设计

    摘要: 近年来,包含现代物联网技术概念的新型空气质量净化器技术原型在国内市场上已经具有一定雏形,主要还是存在以下几个不足:室内空气中的流动量和速度基本是固定的,不管室内空气系统中的任何污染物和室内空气质量如何,空气质量净化器按照所设定的作业负荷

    2024年04月13日
    浏览(40)
  • 【毕业设计】基于单片机的智能鱼缸系统设计与实现 - 嵌入式 物联网 stm32 51单片机 智能鱼缸

    Hi,大家好,今天向大家介绍一个 单片机项目, 大家可用于 课程设计 或 毕业设计 基于单片机的智能鱼缸系统设计与实现 🔥 项目分享与指导: https://gitee.com/sinonfin/sharing 近年以来,随着我国综合实力飞速飙升,人们对物质和精神生活质量的要求也不断提升,各式各样的智能

    2024年02月04日
    浏览(85)
  • 【单片机毕业设计】基于STM32单片机蓝牙app遥控语音控制老年轮椅车GSM位置定位报警系统--物联网 单片机 嵌入式

            这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉小洪学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,小洪学长分享优质毕业

    2024年01月22日
    浏览(100)
  • 【项目设计】基于STM32人脸识别系统 - 单片机 物联网 嵌入式

    项目设计主要是对于所学知识的整体回顾,需要结合各个学科,才能做出达到符合标准的设计。 文章的目的在分享优质的项目以及项目经验,提供设计思路,欢迎交流与指正不足之处。 由于人脸识别技术具有无需接触、安全性高、可靠性高等优点,在身份认证领域具有广阔

    2024年01月21日
    浏览(62)
  • 基于51/STM32单片机的智能药盒 物联网定时吃药 药品分类

     功能介绍  以51/STM32单片机作为主控系统;   LCD1602液晶显示当前时间、温湿度、药品重量   3次吃药时间、药品类目和药品数量  HX711压力采集当前药品重量  红外感应当前药盒是否打开  DS1302时钟芯片显示当前年月日、时分秒、星期  DHT11采集当前环境温度和湿度       

    2024年02月19日
    浏览(45)
  • 物联网项目分享 基于ESP32的在线墨水屏桌面摆件 -物联网 单片机 嵌入式

    hr style=\\\" border:solid; width:100px; height:1px;\\\" color=#000000 size=1\\\" 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最

    2024年02月21日
    浏览(60)
  • STM32毕设分享 - 基于单片机的智能鱼缸系统设计与实现 - 嵌入式 物联网 stm32 51单片机 智能鱼缸

    Hi,大家好,今天向大家介绍一个 单片机项目, 大家可用于 课程设计 或 毕业设计 基于单片机的智能鱼缸系统设计与实现 🔥 项目分享与指导: https://gitee.com/sinonfin/sharing 近年以来,随着我国综合实力飞速飙升,人们对物质和精神生活质量的要求也不断提升,各式各样的智能

    2024年04月11日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包