基于W800 SDK实战智能照明应用方案开发|学习笔记

简介: 快速学习基于W800 SDK实战智能照明应用方案开发

开发者学堂课程【平头哥物联网入门WI-FI方案开发实践基于W800 SDK实战智能照明应用方案开发】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/766/detail/13481


基于W800 SDK实战智能照明应用方案开发


内容介绍

一、背景

二、PWM 原理

三、代码介绍


一、背景

1、示例介绍

示例是基于阿里生活物联网平台,通过云智能 APP 来控制操作,控制 PWM LED 智能灯。示例主要也是开关的控制和亮度的调节。

image.png

这个框图是开发板上的 led 灯的连接方式,它主要分为三部分,W800 芯片和开关以及 PWM LED 灯。需要注意的是这个拨码开关,在需要把它拨到 ON 端。

2、应用场景拓扑

这是一个示例应用场景的拓扑图

image.png

主要涉及三个部分,设备端的 W800 开发板,云端生活物联网平台以及手机端云智能 APP ,然后通过 WiFi 与这个接入云端生活互联网平台,云智能 APP 可以通过 WiFi 或者移动网络接入云端,手机关于智能 APP 的发起了这个控制,通过云端下发给 W800 设备端完成控制。 W800 上报设备的状态和信息到云端,并在手机端展示出来。


二、PWM 原理

1、PWM

PWM 是脉冲宽度调制,是通过对一系列脉冲的宽度进行调制来获得等效的波形。在 PWM 实际开发中,经常会遇到 PWM 的周期、 PWM 频率和占空比三个内容。其中周期和频率是可以通过倒数关系相互转化,下面我将介绍一下 PWN 周期频率以及占空比。 PWM 周期是指信号从高电平到低电平,再回到高电平的时间。他们的频率是指每秒钟信号从高电平到低电平,再回到高电平的次数。占空比就是在一个周期内需要处于高电平的时间占据整个信号周期的百分比。

image.png

这个图形展示了不同占空比的波形。如第一个最上面的波形,它的占空比是50%,也就是高电平和低电平的这个时间相等,中间这一个是20%,那最下面这一个是80%。

2、PWM 产生原理

PWM 是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。PWM 产生一般涉及计数时钟、选择时机、单元、PWM 输出三个部分。其中计数时钟选择部分用于选择输入时钟来源时,一般分为内部时钟和外部时钟端产生,一般选择内部时钟 PWM 输出部分主要用于设置输出、极性、翻转等功能。急性发展主要是为了满足一些低电平有效的设备,通过简单配置而不需要额外的计算和操作。

3、时基单元

时基单元模式有三种,中心对齐模式,向上计数模式,向下计数模式。使用中心对齐模式是先从零开始计数,达到一个设定值,然后再从设定值不断的减少,再回到零这样的不断周期的一个重复操作。那么向上计数主要就是从零到达技术,到达这个设定值,然后又从设定值最高调回到零,重新开始技术,不断的往复。

向下计数是最初从一个设定值,然后不断的减少,减少到零,然后又重新装载到一个设定值。

寄存器方面现在主要包括预分频器寄存器 PSC 、自动装载寄存器 ARR 、计数器寄存器 CNT 、比较寄存器 CCRx 。 PSC 寄存器主要用于调整这个 PWM 的周期和频率。

image.png

我们来看一下这个向上技术图,这个图就是展示这项技术的一个计算、、寄存器的变化,然后从0开始不断的增加,当达到这个 CCRx 配置的时候,那个 Io 逻辑口就输出为高电平。当继续增大,一直增大到 ARR 值,这自动就重新返回到0。可以看到这个t2的位置。这个时候回到0的时候,这个 Io 逻辑口就输出为低电平。所以这个整个势力就是一个往上增长,再回到0。


三、代码介绍

1、框图

主要介绍一下示例代码的整体框图,最上面的是 PWM LED 智能灯应用示例,左边部分主要是 PWM 相关的功能,而右边部分主要是与云端相关的功能配套。相关的功能主要分为三层,从底层到上层分别是 PWM 驱动、 PWM 应用、 PWM LED 应用,右面相关的主要是网络协议栈和这个 Smart Living 生活互联网平台 SDK 。

2、相关代码文件

文件

描述

app/include/app_config.h

PWM管脚配置定义

app/include/app_main.h

PWM LED应用相关接口

app/src/app_led.c

main函数

app/src/app_led.c

PWM LED应用实现

app/src/app_pwm.h

PWM应用头文件

app/src/app_pwm.c

PWM应用源文件,封装底层PWM驱动

app/src/app_smartliving_demo.c

生活物联网平台相关的对接实现

3、PWM 管脚定义

在 app/include/app_config.h 文件中定义了3路 PWM:PWM0、PWM1 和 PWM2。

image.png

定义的内容是拐角以及附庸的功能、功能函数以及 channel 值。

4、PWM 应用

PWM 应用接口定义了五个函数。

PWM 应用接口

app/scr/app/——pwwm.h  定义了 PWM 应用接口。

PWM 应用定义

app/scr/app_pwm.c 实现了应用。

其中这些参数, period 的表示周期值单位是微秒, typedef 表示的是占空比,应用中定义的支持三路 PWM 。可以根据实际的一个需要可以减少或者添加一些PWM的数量。

5、PWM LED 应用

PWM LED 应用接口

app/include/app_main.h 定义了 PWM LED 应用接口。

init 用于初始化,control 和 set brightness 分别用于开关和设置 LED 亮度、get brightness和 status 分别用于 LED 的开关状态和亮度值。

PWM LED 应用定义

代码实现在 app/src/app_led.c 文件中

image.png

在实现方面使用了默认参数,大家可以根据需要去修改。

说明:(1).默认使用 PWM0,可修改代码使用 PWM1 或 PWM2。

(2).默认PWM 周期为100us,即频率为10kHZ。

(3).app_pwm_led_set_config 函数默认使用了低电平输出有效。

(4).亮度值需要储存到 flash ,以便重启后能够恢复。

6、生活物联网平台对接

app/scr/app_smartliving_demo.c 文件实现了生活物联网平台对接的内容。PWM LED 灯主要实现了一下的接口:接收设置指令,上报状态。其中接收设置指令是通过注册回调函去将这个 user_property set_event_handler 再生 smarter living  生活互联网平台 SDK 进行注册。SDK 收到云端的这个设置属性消息时,将接收到的内容传递给该回调函数。

7、接收设置指令

user_ property_set_event_handler 函数用于接收中生活,互联网平台下发的设置指令,指令命令为 json 格式,可通过 cJSON 库进行解析。PWM LED 灯有开关和亮度两个属性。开关是个 bool 值,像这个红框定义的这个light sweet。亮度为百分比值,这里定义的 brightness。

设置亮度值直接通过 set brightness 设置。如需添加跟多属性在下方更改。

8、上报设备状态

user_post_property 函数用于上报状态到生活物联网平台:上报内容需要组装为 json 格式。

红框部分即为 json 格式的代码,如需要更多属性,可修改红框属性代码。这里说明一下,由于 json 格式内容比较简单,示例代码没有使用 cJSON 库。

image.png

9、初始化PWM LED

#include“app_main.h”

…//省略

int main( )

{

…//省略

app_pwm_led_init( )

…//省略

}

在 app/scr/app_main.c 文件的main函数中调用

app_pwm_led_init 函数完成初始化功能。

10、调试信息

介绍一下这个调试信息,在开发中 W800 设备端到手机端 APP 控制指令时会打印出来相应的日志,调试信息。

开关灯操作

image.png

这个图展示的是开关灯操作时打印的日志。然后这里会显示,如果是 Lighth Switch 为0,那么就是关灯操作,如果 Lighth Switch 为1,那么就是开灯操作。

调整亮度操作

image.png

这幅图是显示的是那个调整亮度操作的日志信息。这上面的红框,调整亮度为53,那么这里会收到这个结成格式 brightness 等于53。那下一个是展示这个调整亮度为74, brightness 为74这样的一个 json 内容。

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
3月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
554 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
9月前
|
存储 人工智能 监控
大牛直播SDK在四足机器人和无人机巡检中的创新应用方案
在工业4.0和智能化浪潮下,传统巡检方式正经历深刻变革。四足机器人与无人机凭借灵活机动性和高效巡检能力崭露头角,而大牛直播SDK则赋予其实时直播与智能互动功能。本文介绍大牛直播SDK的核心优势、在四足机器人和无人机巡检中的应用方案,以及技术实现要点和未来展望,展示智能巡检的广阔前景。
302 6
|
10月前
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
684 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
7月前
|
人工智能 自然语言处理 开发工具
HarmonyOS NEXT~鸿蒙开发能力:HarmonyOS SDK AI 全解析
本文深入解析HarmonyOS SDK中的AI功能集,涵盖分布式AI引擎、核心组件(NLP、计算机视觉等)及智能决策能力。通过代码示例与开发实践指南,帮助开发者掌握环境配置、性能调优及多场景应用(智能家居、移动办公等)。同时探讨性能优化策略与未来演进方向,助力构建高效分布式智能应用。
842 9
|
9月前
|
存储 开发工具 开发者
揭秘 Microsoft.Docker.SDK:让容器开发更轻松的强大工具揭秘
随着云计算和容器技术的快速发展,`Docker` 已经成为容器化技术的事实标准。`Microsoft` 作为 `Docker` 的主要支持者和参与者,推出了 `Microsoft.Docker.SDK`,旨在帮助开发者更轻松地进行容器开发。本文将深入揭秘 Microsoft.Docker.SDK 的功能、使用方法以及它在容器开发中的应用。
269 14
|
10月前
|
前端开发 JavaScript 开发工具
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
668 5
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
10月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
686 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
10月前
|
JavaScript 编译器 开发工具
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
568 2
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
455 0
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
276 7