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 的步驟如下:
- 登錄 涂鴉IoT 平臺,
- 創建一款 自定義開發方案 的 Wi-Fi+BLE 協議幻彩燈帶(本文以幻彩燈帶作為參考案例),
- 在 功能定義 頁簽中,根據功能需求選取對應的 DP 點,
產品功能由標準功能、自定義功能及云功能三部分組成,您可以在產品開發的第一步 功能定義 頁面
完成所有功能設定,
標準功能
- 標準功能是指該類別產品支持的常用功能,
自定義功能
說明:僅選擇 自定義開發方案 的產品支持自定義功能, - 如果您的產品功能不包含在標準功能中,您可以創建自定義功能, 功能點是對產品功能的抽象表
示,每種功能都可以通過不同功能型別進行自定義,
云功能 - 云功能是基于云端的功能,不需要進行硬體嵌入式開發,目前支持的云功能 包括定時 和 跳轉網
頁, - 定時:設定開關時間及周回圈,?需硬體嵌?式開發,
- 跳轉??:主要?于設定購買產品的微商城、產品使?說明等各種??的跳轉,
4.配網
通信板使用了 Wi-Fi 芯片,在 App 上選擇手動添加方式,選擇一個 Wi-Fi 產品進行配
網,如果通信板使用了 Wi-Fi 芯片,在 App 上選擇手動添加方式,選擇一個 Wi-Fi 產品進行配
網,
針對上面的代碼我選擇的是照明>燈絲燈>燈絲燈(wifi)進行配網,
配網成功生成一個控制面板,可以通過開關遠程控制led的亮滅,

5.最終效果展示

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290955.html
標籤:其他
上一篇:ESP8266-01S使用教程
