手把手教你开发基于单片机的wifi通信的物联网项目(远程灯控制)
《《《《《正文》》》》》
《前言》
本文主要介绍开发一个基于单片机的wifi通信远程灯控制的方法,单片机只需支持UART通信即可,以实现最简单的远程控制开关、远程控制亮度,配网后,只需手机联网就可控制联网设备;
本文的wifi模块是基于涂鸦智能的wifi模块,主芯片使用STM32F103C8T6;wifi模块与主芯片使用最基本的UART串口实现通信;
《WIFI模块申请》
1、登入涂鸦智能loT平台;
平台网址:https://www.tuya.com/cn/
2、创建产品;
3、方案选择;
方案选择wifi,点击创建产品。这里有很多涂鸦自己定义的产品,我们先选这个;其他可根据自己的项目选择;
4、功能定义;
第3步之后会跳出功能选择;选择自己需要的功能;
我定义了开关状态值,bool类型表示开\关;以及亮度值,Value类型表示亮度,从0-1000;
5、选择手机app面板;
下载手机涂鸦智能App,这里我使用了涂鸦提供的界面,这个界面根据自己需求开发,或者有特殊要求也可以提交需求,涂鸦会帮你开发;
6、选择wifi模组,并下单购买;
下面是我的模块,你选择一个模块就行;
7、其他默认即可;等待模块快递寄到;
《硬件设计》
1、获取模组封装尺寸;
在硬件开发下,模组详情下获取封装尺寸;
2、下面这个是我的封装尺寸,涂鸦自家的模块封装尺寸都差不多;
3、画模块封装pcblib;
这里我自己画的,带3D;供参考;下载地址:
https://pan.baidu.com/s/1hqxgKS46EaokUoN7utyw7g
提取码:airX
4、原理图设计:
按键是长按5s进入配网;灯是指示wifi模块工作状态,常亮表示联网正常,长灭表示未配网;快闪表示正在配网状态;wifi模组与MCU使用usart串口连接;这里的按键口A_14和灯口A_19注意,会在下面代码配置里使用到;
5、布板
略。。。。就是拉拉线,没什么特殊要求;
我的部分pcb;
6、回来的板子;
焊接后:这里我把最初的原理图端口和封装端口左右镜像弄反了,所以只能这么焊;上面分享的封装资源是修改后ok的;
《软件设计》
当中涉及的PWM、UART等模块代码可参考以下文章。
基于C语言的机械按键模块化软件开发(模块化程度高,可高速移植)
STM32F103之脉冲宽度调制(PWM)模块开发(含呼吸灯实例源代码)
STM32F103之时基中断(TIM)模块开发
STM32F103调试串口(USART)模块开发(内含Printf重定向函数说明)
软件其实主要是模块与主芯片之间的UART通信;我这里使用涂鸦的提供的WIFI的SDK进行移植;
1、获取我上面文章的USART模块代码;
相关代码获取地址:
https://pan.baidu.com/s/1zyrOF18WxIq0H3_4qU7Evg
关注公众号,发送1234,获取提取码;
2、获取SDK:进入涂鸦平台,进入产品开发,在硬件开发的最下面下载MCU_SDK,这里有很多资料,都可以下载看看;
3、打开下载包,将里面的mcu_sdk复制到usart工程文件下,除了VERSION.md文件,其他都加入工程;
3、下面开始移植,涂鸦有移植教学文档;在网站的文档中心搜索移植就可以找到移植说明文档,这里你可以看他的文档详细些;下面是我的移植过程;
4、在文件路径中添加mcu_sdk文件路径;
把wifi.h头文件写到main.h
把main.h头文件写在wifi.h里
这个时候编译还有很多问题,不急;
5、我们模块的方式使用模块自处理模式,找到protocol.h下将这个功能宏定义打开;并根据硬件,指示灯GPIO是A_19,就是19,按键GPIO是A_14,就是14,如下代码:
6、在protocol.c添加字节发送函数;
7、在USART串口接收中断函数中添加uart_receive_input()函数;如下:
8、在protocol.c的all_data_update函数上传自己初始化数据的;这个是用来上电更新所有数据的,我就默认上电关闭led,亮度值为1%,即10;如下代码;
如果你本地改变了数据,就调用上面的各自的函数就能实现数据上传了;
mcu_dp_bool_update(DPID_SWITCH_LED,0); //BOOL型数据上报;
mcu_dp_value_update(DPID_BRIGHT_VALUE,100); //VALUE型数据上报;
9、在protocol.c里有数据下传的函数,只要在这个函数里添加自己的响应操作就就可以实现wifi控制了;我这个有2个功能,开关和亮度,就有下面2个函数,有多少数据下传就有多少个函数;
10、在主函数main.c初始化调用wifi_protocol_init();usart波特率为9600;在死循环里调用wifi_uart_service();必须放在while(1),不要加任何判断;
int main(void)
{
NvicConfig();
USART_init(9600);
wifi_protocol_init();
for(;;)
{
wifi_uart_service();
}
}
11、最后编译,把错误去掉,一般都是些中文。注释掉就可以了;
12、下载,长按按键5s,涂鸦wifi就会进入配网状态,灯会快闪;打开手机涂鸦智能app进行配网;
这样整个联网就成功了;
《远程灯实例》
下面是我的涂鸦智能App控制LED亮灭、亮度的实例视频;也可使用4g,只要手机联网就可以远程控制;
代码地址:
https://pan.baidu.com/s/1ptGuLFsNW9MM5Xqv2Dmx6w
提取码:airX
《《《《《END》》》》》
手把手教你开发基于单片机的wifi通信的物联网项目(远程灯控制)相关推荐
- 手把手教你开发基于深度学习的人脸识别【考勤/签到】系统
人脸识别介绍 平台环境需求 技术点 系统流程 细节设计 人脸检测 人脸关键点定位 人脸特征提取 模型的训练 模型的部署 MySQL数据库的使用 MFC工程的搭建 软件使用 人脸识别介绍 人脸识别技术是 ...
- 0基础手把手教你开发探探类社交软件(Tinder项目产品架构说明文档)
目录介绍 1.关于项目App整体架构 1.1项目整体架构 1.1.1 目前项目使用架构 1.1.2 目前常见的架构 1.1.3 MVP架构优点及缺点 1.2.主要的技术要点 1.2.1 布局常用及技巧 ...
- 手把手教你学51单片机——函数进阶与按键
目录 写在前面 一.单片机最小系统解析 1.1电源 1.2晶振 1.3复位电路 二.C语言--函数 2.1函数的调用 2.2函数的形参和实参 三.按键 3.1独立按键 3.2独立按键控制led数码管显 ...
- c语言52单片机液晶屏显示,[手把手教你学51单片机C语言教程]22 LCD12864液晶屏显示.pdf...
您所在位置:网站首页 > 海量文档  > 计算机 > C/C++资料 [手把手教你学51单片机C语言教程]22 LCD ...
- c语言怎么编程输出相框,手把手教你学PIC单片机C语言教程第1课.PDF
手把手教你学PIC单片机C语言教程第1课 - PIC HL-K18 - PIC HL-K18 慧净电子--做人人都买得起的PPIICC单片机开发板真诚为你服务,基于HHLL--KK1188 开发板 手 ...
- java 注册探探账号_零基础手把手教你开发探探类社交软件Tinder
原标题:零基础手把手教你开发探探类社交软件Tinder 目录介绍 1.关于项目App整体架构 1.1项目整体架构 1.1.1 目前项目使用架构 1.1.2 目前常见的架构 1.1.3 MVP架构优点及 ...
- 手把手教你:基于LSTM的股票预测系统
系列文章 第七章.手把手教你:基于深度残差网络(ResNet)的水果分类识别系统 第六章.手把手教你:人脸识别的视频打码 第五章.手把手教你:基于深度学习的滚动轴承故障诊断 目录 系列文章 一.项目简 ...
- 手把手教你开发IOT设备
手把手教你开发IOT设备 1.概述 IOT设备的开发是基于rt-thread rtos实现.rt-thread是一个国产RTOS,它是一个RTOS,但又不仅仅是RTOS,支持大量的芯片,驱动,还包含大 ...
- 物联网全栈教程--手把手教你开发一个智能浇花器
下面来说一下课程的安排,本教程可以分为三大章节,30个小章节,在1-10章节,手把手讲解了如何实现一个定时/实时控制的浇花器,可以对浇花器电量进行显示,可以进行定时设置,以及实时控制,低功耗模式等等, ...
- 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接
转自即时通讯网:http://www.52im.net/ 本文原作者:"水晶虾饺",原文由"玉刚说"写作平台提供写作赞助,原文版权归"玉刚说" ...
最新文章
- Python培训教程分享:10款超好用的Python开发工具
- Openstack组件部署 — Networking service_Compute Node
- SpringBoot+Vue使用Get请求时提示:Error parsing HTTP request header
- java 中的event_Java中this与event有什么不同
- java中怎么把生成文件到项目根目录_[SpringBoot2.X] 02- 项目结构介绍
- BugkuCTF-Crypto题easy_crypto
- 在Windows Server 2008中安装Exchange Server 2007 SP1
- 如何解决arcmap中的反走样问题。
- 关于Cocos2d-x中图集中图片的调用
- Tensorflow2.0之Minist手写数字识别
- 《南风窗》长篇报道:仇恨引爆悲剧
- 一致性算法-Gossip协议详解
- python mp3转wav_python 录音,WAV转MP3
- SAS PROC FORMAT
- Gitee项目分享——学之思开源考试系统
- 上海伯俊软件科技有限公司面试题
- 深入浅出系列之——并查集详解【武侠版】【简单有趣】
- 如何换config.plist、换clover和添加引导的教程
- css实现立体长方柱
- Python期末复习
热门文章
- 秒赞机器人好友_qq空间秒赞机器人好友 qq空间说说秒赞神器
- 格式工厂视频格式转换器下载
- 什么是需求跟踪矩阵RTM
- 游戏十五大基本游戏类型介绍
- 应用程序无法正常启动0xc0150002 解决方案
- SIM900A GPRS无线通信
- deepin Linux虚拟输入法,输入法 - deepin Wiki
- java 文件读写 中文_java读写中文文件
- ZEMAX双胶合透镜设计——光学设计学习笔记1
- property java_java-必须为元素类型“ property”声明属性“...