IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> arduino嵌入式开发--使用涂鸦wbr3远程控制 -> 正文阅读

[嵌入式]arduino嵌入式开发--使用涂鸦wbr3远程控制

1.安装tuya wifi SDK

项目>添加库>库管理器安装Tuya_WiFi_MCU_SDK 的第三方库
在这里插入图片描述

2.编写控制器程序

涂鸦库中有多种基础示例来帮助开发者更好地理解涂鸦库的使用:
Start:基础示例,包含一个开关 DP 功能,可以通过手机控制灯的开关

简单修改Start例程,增加向ardunio控制led功能,烧写程序

/*
 * @FileName: start.ino
 * @Author: Tuya
 * @Email: 
 * @LastEditors: Tuya
 * @Date: 2021-04-10 11:24:27
 * @LastEditTime: 2021-04-28 19:48:31
 * @Copyright: HANGZHOU TUYA INFORMATION TECHNOLOGY CO.,LTD
 * @Company: http://www.tuya.com
 * @Description: This demo is based on the Arduino UNO, and the LEDs on the UNO board are controlled by the Tuya Smart App. 
 *               Enter network connection mode when Pin7 to GND.
 * @Github:https://github.com/tuya/tuya-wifi-mcu-sdk-arduino-library
 */

#include <TuyaWifi.h>
#include <SoftwareSerial.h>

TuyaWifi my_device;


/* Current LED status */
unsigned char led_state = 0;
/* Connect network button pin */
int key_pin = 7;
int led = 10;

/* Data point define */
#define DPID_SWITCH 20
#define DPID_LIGHT 21 //灯的亮度 DP 6
#define DPID_MODE 22 //灯的工作模式 DP 
/* Stores all DPs and their types. PS: array[][0]:dpid, array[][1]:dp type. 
 *                                     dp type(TuyaDefs.h) : DP_TYPE_RAW, DP_TYPE_BOOL, DP_TYPE_VALUE, DP_TYPE_STRING, DP_TYPE_ENUM, DP_TYPE_BITMAP
*/
unsigned char dp_array[][2] = {
{DPID_SWITCH, DP_TYPE_BOOL}, 
{DPID_LIGHT, DP_TYPE_VALUE}, 
{DPID_MODE, DP_TYPE_ENUM}
}; 

unsigned char pid[] = {"6nwnhhsm5xxxxx"}; //PID
unsigned char mcu_ver[] = {"1.0.0"};

/* last time */
unsigned long last_time = 0;

void setup() 
{
  // Serial.begin(9600);
  Serial.begin(9600);

  //Initialize led port, turn off led.
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);
  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);
  //Initialize networking keys.
  pinMode(key_pin, INPUT_PULLUP);

  //Enter the PID and MCU software version
  my_device.init(pid, mcu_ver);
  //incoming all DPs and their types array, DP numbers
  my_device.set_dp_cmd_total(dp_array, 3);
  //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();
}

void loop() 
{
  my_device.uart_service();

  //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);
    }
  }
  /* 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);
    }
  }

  delay(10);
}

/**
 * 当 App 控制设备的时候,会从云端下发对应的 DP 命令到设备。设备对数据进行解析后,对下
 * 发的命令执行相应的动作。
 * @description: DP download callback function.
 * @param {unsigned char} dpid
 * @param {const unsigned char} value
 * @param {unsigned short} length
 * @return {unsigned char}
 */
unsigned char dp_process(unsigned char dpid,const unsigned char value[], unsigned short length)
{
  switch(dpid) {
    case DPID_SWITCH:
      led_state = my_device.mcu_get_dp_download_data(dpid, value, length); /* Get the value of the down DP command */
      if (led_state) {
        //Turn on
        digitalWrite(led, HIGH);
      } else {
        //Turn off
        digitalWrite(led, LOW);
      }
      //Status changes should be reported.
      my_device.mcu_dp_update(dpid, value, length);
    break;

    default:break;
  }
  return SUCCESS;
}

/**
 * @description: Upload all DP status of the current device.
 * @param {*}
 * @return {*}
 */
void dp_update_all(void)
{
  my_device.mcu_dp_update(DPID_SWITCH, led_state, 1);
}

注意:模组通讯串口使用 Arduino 引脚 0 和引脚 1,因此给 Arduino 开发板下载例程时,
请勿插三明治开发板(或长按三明治开发板板载 reset 按键),否则串口会互相干扰导致无
法正常下载程序。

3.获取产品PID

为了实现ardunio与涂鸦三明治 Wi-Fi 通信板之间的通信,您需要预先通过
涂鸦 IoT 平台创建产品以获取 PID、DP 等信息。
下面以实现产品幻彩灯带为例,获取幻彩灯带产品 PID 的步骤如下:

  1. 登录 涂鸦IoT 平台。
  2. 创建一款 自定义开发方案 的 Wi-Fi+BLE 协议幻彩灯带(本文以幻彩灯带作为参考案例)。
  3. 在 功能定义 页签中,根据功能需求选取对应的 DP 点。
    产品功能由标准功能、自定义功能及云功能三部分组成,您可以在产品开发的第一步 功能定义 页面
    完成所有功能设定。
    标准功能
  • 标准功能是指该类别产品支持的常用功能。
    自定义功能
    说明:仅选择 自定义开发方案 的产品支持自定义功能。
  • 如果您的产品功能不包含在标准功能中,您可以创建自定义功能。 功能点是对产品功能的抽象表
    示,每种功能都可以通过不同功能类型进行自定义。
    云功能
  • 云功能是基于云端的功能,不需要进行硬件嵌入式开发。目前支持的云功能 包括定时 和 跳转网
    页。
  • 定时:设定开关时间及周循环,?需硬件嵌?式开发。
  • 跳转??:主要?于设置购买产品的微商城、产品使?说明等各种??的跳转。

4.配网

通信板使用了 Wi-Fi 芯片,在 App 上选择手动添加方式,选择一个 Wi-Fi 产品进行配
网。如果通信板使用了 Wi-Fi 芯片,在 App 上选择手动添加方式,选择一个 Wi-Fi 产品进行配
网。

针对上面的代码我选择的是照明>灯丝灯>灯丝灯(wifi)进行配网。

配网成功生成一个控制面板,可以通过开关远程控制led的亮灭。

在这里插入图片描述

5.最终效果展示

在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 11:48:50  更:2021-07-29 11:50:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:36:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码