Arduino+涂鸦云,教你制作幻彩灯带

大家好,我是程序员小哈。前一阵参加了涂鸦智能【幻彩灯带】Arduino开发实战训练营,参与完整个过程,收获颇丰,今天对本次制作的幻彩灯带进行一下小结,希望以后可以再次参与其他内容的训练营活动。

概况

本次DIY内容为基于Arduino+tuya SDK实现的幻彩灯带。实现了通过 涂鸦智能 App 下发 打开灯带 指令控制WS2812全彩灯板的开关,下发 音乐指令控制灯带进入音乐律动模式。

物料清单

硬件

  • 涂鸦WiFi模组(CBU)
  • Arduino UNO开发板
  • 声音传感器模块
  • 8位WS2812全彩灯板

软件

  • 涂鸦智能 App
  • Arduino 开发环境

步骤

创建产品

  1. 在涂鸦智能IoT 平台 上,在后台产品开发–>照明–>幻彩灯带 下,创建一款 幻彩灯带 产品,产品方案选择自定义方案

  1. 创建产品后,添加功能定义。由于要控制灯带的开关,需要添加一个布尔型功能点。需要设置不用的工作模式,所以需要添加一个枚举类型的功能点。

注意记录上图中的PID值,此值在稍后的Arduino UNO代码中会使用。

填写一个较规范的标识符。因为是通过标识符控制功能的实现。

  1. 进入硬件开发标签。

如果要跟MCU配合使用,即CBU模组只负责上网,MCU做主控。那么“已选云端对接方式”要选择涂鸦标准模组MCU SDK开发

然后选择模组,这里推荐WBR3模组CBU模组。

模组选择完毕,在此页面的下方,下载资料区域,涂鸦IoT平台会根据你选择的模组和定义的功能,提供一份开发资料,下载此资料可以让您快速了解涂鸦物联网平台如何使用,并加速开发过程。

公共资料区域,还可以下载涂鸦智能App

本实例中选用的是CBU模组。

开发资源包

模组调试

要想实现MCU+模组组合在一起的开发方式,首先我们要对MCU和模组之间的通讯协议了解清楚,而要了解通讯协议,我们可以借助官方的模组调试助手,利用它可以方便、快速的理解MCU与模组的交互过程。

遇到困难,也方便调试解决问题。

模组调试助手使用教程 https://developer.tuya.com/cn/docs/iot/module-debugging-assistant-instruction?id=K9hs0cj3lf0au

在 MCU 模拟模式中,涂鸦模组调试助手会模拟 MCU 自动回复模组正确的协议数据,用手机给模组配网后可测试 DP 数据的上报下发。

对应上面的信息,模组的串口2的发送引脚,输出的Log信息如下:

好了,有了上面的了解,我们接下来看一下使用Arduino+CBU模组实现的幻彩灯带如何进行控制。

Arduino代码移植

引用Arduino 库

菜单“项目”–>“加载库”

  1. 引用tuya库

如果Arduino官方已经收录了涂鸦SDK的话,那么在“管理库”中检索tuya即可;

如果没有被收录,那么使用“添加.ZIP库”文件的方式加载库。

  1. 引用Adafruit_NeoPixel库

如果因为网络的原因,管理库中下载Arduino库困难,也可以使用别人下好的库,将其放在Window系统下的:我的电脑>文档>Arduino>libraries 文件夹中。

Arduino初始化

void setup() {pinMode(BUTTON_PIN, INPUT_PULLUP);strip.begin(); // Initialize NeoPixel strip object (REQUIRED)strip.show();  // Initialize all pixels to 'off'DebugSerial.begin(9600);Serial.begin(9600);//Initialize led port, turn off led.pinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, LOW);//Initialize networking keys.pinMode(key_pin, INPUT_PULLUP);//incoming all DPs and their types array, DP numbers//Enter the PID and MCU software versionmy_device.init(pid, mcu_ver);my_device.set_dp_cmd_total(dp_array, 17);//register DP download processing callback functionmy_device.dp_process_func_register(dp_process);//register upload all DP callback functionmy_device.dp_update_all_func_register(dp_update_all);last_time = millis();music_last_time = millis();
}

循环操作

void loop() {//进入配网模式//Enter the connection network mode when Pin7 is pressed.if (digitalRead(key_pin) == LOW) {delay(80);if (digitalRead(key_pin) == LOW) {my_device.mcu_set_wifi_mode(SMART_CONFIG);      }}my_device.uart_service();/* LED blinks when network is being connected */if ((my_device.mcu_get_wifi_work_state() != WIFI_LOW_POWER) && (my_device.mcu_get_wifi_work_state() != WIFI_CONN_CLOUD) && (my_device.mcu_get_wifi_work_state() != WIFI_SATE_UNKNOW)) {if (millis()- last_time >= 500) {last_time = millis();if (led_state == LOW) {led_state = HIGH;} else {led_state = LOW;}digitalWrite(LED_BUILTIN, led_state);}}if(work_mode==3){if (millis()- music_last_time >= 50){music_last_time = millis();visualize_music();}}
}

编译与下载

注意:下载的时候,先不要连接涂鸦WiFi模组,避免干扰。

配网

结果展示

参考B站展示视频:https://www.bilibili.com/video/BV1KU4y1V7Tw/

总结

整个开发过程简单高效,大大节省了开发时间,为传统设备实现上云,提供了一个快接的方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/353755.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Unity实现在白板上绘画涂鸦

前言 有段时间没有更新博客了,不知道应该写些什么,太简单感觉没有记录的必要,太难自己都没能理解,不知道如何下手。回归初心,记录自己想记录的东西。 需要实现一个白板绘画的功能,可以使用LineRenderer或者…

手机怎么使用涂鸦?分享几个手机视频怎么添加涂鸦的妙招

相信大家在给视频进行处理时,都会运用一些视频剪辑工具来给视频增添一些涂鸦等效果,比如把云朵涂鸦成独角兽或者与其相似的图案,让那些观看我们视频的人在视觉上增加了些许乐趣,不会显得视频画面太过于枯燥乏味。 那你们知道这些…

使用Fabric.js库制作一个绘画网站,实现绘画板涂鸦功能

1.学习之前 这个功能是基于vue的,如果你没有学过vue,可能对里面的知识不理解,对于canvas要有一点点的理解,如果没有,建议学习一下 如果实在需要关于Fabricjs写的绘画功能,可以看一下我参考其他人写的文档&a…

视频涂鸦怎么弄?视频涂鸦用什么软件?

随着时代的发展,大众对于“艺术”这个词的诠释也会变得不同。这段时间里,我的朋友在朋友圈、微博发布的视频都带有浓浓的个人风格,但总体上都是依据“涂鸦”这一形式来进行的。通过在视频中绘制涂鸦,来抒发内心的情绪、展示对艺术…

如何用ps做出街头涂鸦效果

制作过程大概几分钟时间即可搞定,我们主要用的是陌鱼社区街头涂鸦喷绘行为艺术效果PS动作,需要的可以搜一下应该可以找到,下面是效果: 01、载入我们下载文件包时面的预设文件,包括笔刷、图案、动作,关闭Ps软…

ROS:坐标管理系统

目录 一、机器人中的坐标变换二、TF功能包2.2TF功能包简介2.2TF坐标变换实现2.3TF案例 三、小海龟跟随实验3.1打开小程序3.2查看当前的TF树3.3坐标相对位置关系可视化1(tf_echo)3.4坐标相对位置关系可视化2(rviz) 一、机器人中的坐…

人事管理项目-前端实现

人事管理项目-前端实现 引入Element和Axios开发Login页面配置路由配置请求转发启动前端项目 引入Element和Axios 前端UI使用Element,网络请求则使用Axios,因此首先安装Element和Axios依赖,代码如下: 依赖添加成功后,接…

妖精的尾巴手游快速升级辅助 爱蜂窝自动新手挂机升级

妖精的尾巴手游上线了,是一款特别火的手游,那么如果才能快速升级,迅速提升战斗力呢,主要依靠游戏里面的这些内容。 方式一:主线任务 主线任务是快速升级中速度最快的,能获得大量的经验和等级,后…

妖精的尾巴勇气之旅服务器维护,妖精的尾巴勇气之旅攻略大全 新手攻略开局发展技巧[多图]...

妖精的尾巴勇气之旅怎么玩,作为一个新手玩家来说的话,在开局的时候要做些什么会比较的好,如何能够更好的上手,带来一个比较好的发展,也可以为后续的阶段起到一个比较不错的铺垫呢?下面来了解下!…

【妖精的尾巴win7动漫主题】

主题描述:本主题是由主题世界win7主题下载独家原创制作而成 本地下载 迅雷下载 妖精的尾巴win7动漫主题介绍 妖精的尾巴卡通桌面壁纸下载《鼠标右键另存为本地》 妖精的尾巴卡通桌面主界面效果图 妖精的尾巴卡通桌面开始菜单效果图 妖精的尾巴卡通桌面图标效果图 妖…

智能算法实现PID智能车控制系统

目录 第一章 绪论 1.1 智能车概述 1.2 智能PID研究现状 1.3 本文工作 第二章 PID控制简介 第三章 内模PID简介 3.1 内模PID控制 第四章 内模智能PID智能车控制系统设计 4.1 系统设计 4.2 内模控制原理 第五章 系统仿真及结果分析 5.1 系统仿真分析 5.2 控制效…

Linux Shell 实现一键部署mariadb10.11

mariadb MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的Inno…

简单聊一聊数据库驱动

数据库驱动通常是数据库厂家提供的,他们按照jdbc协议对自家数据库封装了一套可对外调用的API。在应用程序和数据库之间起到了桥接的作用。它是一个软件组件,提供了与特定数据库系统进行通信的接口和功能。 1. 数据库驱动的作用: 连接数据库&…

科研工具-R-META分析与【文献计量分析、贝叶斯、机器学习等】多技术融合实践

Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,最早出现于“循证医学”,现已广泛应用于农林生态,资源环境等方面。…

如何查看文件的MD5值?

MD5 什么是MD5? md5是一种信息摘要算法,是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),它可以从一个字符串或一个文件中按照一定的规则生成一个特殊的字符串(这个特殊的字符串就被称之为摘要&…

查看文件的MD5 值

从网上下载到资源文件后,为了确保下载的文件没有被黑客非法篡改,一般都会校验一下MD5是否与最初上传的版本是否一致。查看两个文件的MD5 值可以判断文件在传输过程中有没有损坏,或者丢失字节。 Windows电脑 window(键盘左下角Ctr…

什么是md5

什么是md5? md5是一种不可逆的散列算法 不可逆:从明文可以得到密文,但是从密文不可以得到明文。散列:通过一种函数得到一个映射值,有可能是重复的!但重复的概率比较低,例如设置字符大小写字母数字的密码…

简单的MD5查询工具

这是一个MD5查询工具,输入将要加密的字符串,可以查询到其MD5值。 目前提供了32位和16位两种算法。 什么是MD5? Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数&a…

一文读懂md5,md5有什么用,什么是md5加盐

md5是一种密码散列函数,在计算机安全领域得到广泛的应用。本文将带大家了解一些md5的知识点,什么是md5,md5有什么用,什么是md5加盐,为什么md5不可逆,为什么md5可能会被解密?帮助大家快速了解md5…