随着大众环保意识的提升以及社会环境保护监管的加强,全国各地逐步实行垃圾分类政策。个人家庭、地方社区和社会企业对智能垃圾分类设备的需求也愈发强烈。
涂鸦开发者基于涂鸦 IoT 平台智能垃圾桶产品的 MCU 接入方案,配合涂鸦三明治语音 Wi-Fi 通信板(VWXR2)和 涂鸦三明治直流供电电源板开发的智能语音垃圾桶,通过语音识别和云端垃圾分类标准数据库对接功能,实现了对垃圾类型的快速识别和垃圾的准确、无接触投放,提供了更加卫生和高效的垃圾分类解决方案。
涂鸦三明治语音 Wi-Fi 通信板(VWXR2)
MG996R 舵机控制
涂鸦三明治直流供电电源板
采用涂鸦智能 MCU 接入方式完成接入。
创建产品。 使用智能垃圾桶的模型,自定义 DP 云云对接。
创建 DP 点。 添加垃圾分类网站 URL 。
创建设备面板。
点击保存,扫描二维码可在手机端查看。
登录 IoT 平台。
选择目标模组,在产品>硬件开发页面的底部的下载资料区域,下载 MCU SDK。
配置开发板,移植 SDK。
说明: Demo 采用 Arduino Uno 开发板。
在 Arduino IDE 中单击文件 > 新建,新建项目。
工程中,您需要注意以下函数:
将 MCU 开发包中文件复制至新建的项目路径下。
将.c
文件后缀改为.cpp
。
打开 .ino
文件,即可在 IDE 中发现添加的 MCU SDK 文件。
移植代码和报错排查。 MCU SDK 初次导入工程未进行任何移植操作前,编译会参数报错,属于正常现象。后续步骤中,您需要依次对代码进行移植修改,直到编译后没有错误。
说明: 调试方法参见 MCU SDK开发包移植调试。
编写主函数
#include "wifi.h"
#include "protocol.h"
#include <SoftwareSerial.h>
SoftwareSerial mySerial(6, 7); // RX, TX
#define _SS_MAX_RX_BUFF 300
#define relay 10
int PC13 = 3;
int s1=4;
int time_cnt = 0, cnt = 0, init_flag = 0;
void setup() {
pinMode(relay, OUTPUT); // 继电器 I/O 初始化
digitalWrite(relay, LOW);
pinMode(PC13, INPUT); // 重置 Wi-Fi 按键初始化
pinMode(2, OUTPUT); // Wi-Fi 状态指示灯初始化
Serial.begin(9600);
Serial.println("serial init successful!");
wifi_protocol_init();
}
void loop() {
if (init_flag == 0) {
time_cnt++;
if (time_cnt % 6000 == 0) {
time_cnt = 0;
cnt ++;
}
void key_scan(void)
{
static char ap_ez_change = 0;
unsigned char buttonState = HIGH;
buttonState = digitalRead(PC13);
if (buttonState == LOW) {
delay(3000);
buttonState = digitalRead(PC13);
printf("----%d",buttonState);
if (buttonState == LOW) {
printf("123\r\n");
init_flag = 0;
switch (ap_ez_change) {
case 0 :
mcu_set_wifi_mode(SMART_CONFIG);
break;
case 1 :
mcu_set_wifi_mode(AP_CONFIG);
break;
default:
break;
}
ap_ez_change = !ap_ez_change;
}
}
}
void wifi_stat_led(int *cnt)
{
#define wifi_stat_led 2
switch (mcu_get_wifi_work_state())
{
case SMART_CONFIG_STATE: //0x00
init_flag = 0;
if (*cnt == 2) {
*cnt = 0;
}
if (*cnt % 2 == 0) //LED 快闪
{
digitalWrite(wifi_stat_led, LOW);
}
else
{
digitalWrite(wifi_stat_led, HIGH);
}
break;
case AP_STATE: //0x01
init_flag = 0;
if (*cnt >= 30) {
*cnt = 0;
}
if (*cnt == 0) // LED 慢闪
{
digitalWrite(wifi_stat_led, LOW);
}
else if (*cnt == 15)
{
digitalWrite(wifi_stat_led, HIGH);
}
break;
case WIFI_NOT_CONNECTED: // 0x02
digitalWrite(wifi_stat_led, HIGH); // LED 熄灭
break;
case WIFI_CONNECTED: // 0x03
break;
case WIFI_CONN_CLOUD: // 0x04
if ( 0 == init_flag )
{
digitalWrite(wifi_stat_led, LOW);// LED 常亮
init_flag = 1; // Wi-Fi 连接上后该灯可控
*cnt = 0;
}
break;
default:
digitalWrite(wifi_stat_led, HIGH);
break;
}
}
涂鸦物联网开发平台为开发者提供了便捷的 IoT 开发工具与服务,助力开发者更高效的完成设备接入,并为开发者提供物联网应用开发及场景服务能力。