程序员小哈
认证:普通会员
作者动态
手里没有USB转TTL模块,无法调试红外学习模块不要紧,利用最小系统板自己焊接一个
14小时前
基于鸿蒙OS移植OLED驱动程序
3天前
鸿蒙系统固件编译及烧写——通过AT命令完成WLAN模组Hi3861联网
3天前
涂鸦三明治开发套件开箱及固件下载
4天前
基于STM32使用TTP223点动触摸传感器模块
5天前

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 version
  my_device.init(pid, mcu_ver);
  my_device.set_dp_cmd_total(dp_array, 17);
  //register DP download processing callback function
  my_device.dp_process_func_register(dp_process);
  //register upload all DP callback function
  my_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模组,避免干扰。

配网

总结

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

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 1
收藏 1
关注 56
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧