本帖最后由 temp_duan 于 2019-8-10 19:48 编辑
实现功能: 通过继电器控制一个大功率节能灯泡 电容式触控按键控制灯的开关,手机可远程控制,定时开启 上电自动进入配网模式,长按进行复位,清楚配网信息重新配网 零火线供电,外壳为86型国标
硬件准备: Stm32f103c8t6 AC-DC隔离降压电源模块220v转5v HLK-PM01 宏发继电器 1组常开10A 4脚 安规电容、压敏电阻、250V0.4A PPTC 直插自恢复保险丝 电容式触控芯片为JG908RD(晶格电子提供,淘宝上购买不到,需自行联系公司采购) ME62113.3V 500mA 低压差线性稳压器
设计电路图: 板子分两层,上层为stm32最小系统,电容式触控部分,下层板为电源处理,继电器触发单元 下层原理图及pcb: 教程开始 首先进入开发者中心,https://dev.gizwits.com/zh-cn/developer/ 进行账号的注册和登陆
创建产品、数据点、代码移植、WiFi固件烧录的过程,详细操作步骤请观看网易云课堂视频教程 网易云课堂:https://study.163.com/course/courseMain.htmcourseId=1209433825&share=2&shareId=400000000605032 b站:https://www.bilibili.com/video/av61241066 UP名称:temp_duan 代码分析: 为机智云提供1ms时基 • 在timer.c里面,修改TIM3_IRQHandler函数代码如下: 实现接收ESP8266模块的数据
• 在usart3.c里面,修改USART3_IRQHandler函数代码如下:
实现发送数据给ESP8266模块
• 在gizwits_product.c里面,修改uartWrite函数代码如下: 实现MCU软复位函数
• 在gizwits_product.c里面,修改mcuRestart函数代码如下:
硬件初始化:
配网采用自动20s内上电没有联网成功自动进入AirLink配网模式:
定时器中断服务函数中处理 控制事件处理: 定时开关采用NTP自动获取网络时间:
在定时器中获取 在userHandle函数中与每秒获取到的NTP时间进行判断 检测长按的方法: 通过定时器中断来进行判断,隔一段时间后就去判断按键是否还处于按下的状态。 通过定时器中断的扫描来进行判断按键是长按还是短按。这样使得CPU资源得到释放 按键单击时,判断时间门槛设置为50~2000ms;长按门槛为持续按下2000ms。
按键按下去会出现下降沿,设置按键IO口所在的外部端口为下降沿触发中断。 1ms定时器中断服务函数
补充内容 (2019-8-14 17:40):
https://pan.baidu.com/s/13Rd0Ch_stHvh5k7gE8EgdQ |