智能语音垃圾桶解决方案设计

更新时间Invalid datetian yang

概况

随着大众环保意识的提升以及社会环境保护监管的加强,全国各地逐步实行垃圾分类政策。个人家庭、地方社区和社会企业对智能垃圾分类设备的需求也愈发强烈。

涂鸦开发者基于涂鸦 IoT 平台智能垃圾桶产品的 MCU 接入方案,配合涂鸦三明治语音 Wi-Fi 通信板(VWXR2)和 涂鸦三明治直流供电电源板开发的智能语音垃圾桶,通过语音识别和云端垃圾分类标准数据库对接功能,实现了对垃圾类型的快速识别和垃圾的准确、无接触投放,提供了更加卫生和高效的垃圾分类解决方案。

物料清单

硬件 (3)
  • 涂鸦三明治语音 Wi-Fi 通信板(VWXR2)

    数量:1

    涂鸦三明治语音 Wi-Fi 通信板(VWXR2)

  • MG996R 舵机控制

    数量:1

    MG996R 舵机控制

  • 涂鸦三明治直流供电电源板

    数量:1

    涂鸦三明治直流供电电源板

步骤

作品框图

开发过程

硬件部分

  • 语音控制模块
  • MCU 通信板
  • MG996R 舵机控制
  • 供电模块

软件部分

采用涂鸦智能 MCU 接入方式完成接入。

  1. 创建产品。 使用智能垃圾桶的模型,自定义 DP 云云对接。

  2. 创建 DP 点。 添加垃圾分类网站 URL 。

  3. 创建设备面板。

  4. 点击保存,扫描二维码可在手机端查看。

MCU_SDK 移植

  1. 登录 IoT 平台

  2. 选择目标模组,在产品>硬件开发页面的底部的下载资料区域,下载 MCU SDK

  3. 配置开发板,移植 SDK。

    说明: Demo 采用 Arduino Uno 开发板。

    1. 在 Arduino IDE 中单击文件 > 新建,新建项目。

      工程中,您需要注意以下函数:

      • setup():用于初始化,只执行一次
      • loop():循环执行函数
    2. 将 MCU 开发包中文件复制至新建的项目路径下。

    3. .c文件后缀改为.cpp

    4. 打开 .ino 文件,即可在 IDE 中发现添加的 MCU SDK 文件。

    5. 移植代码和报错排查。 MCU SDK 初次导入工程未进行任何移植操作前,编译会参数报错,属于正常现象。后续步骤中,您需要依次对代码进行移植修改,直到编译后没有错误。

      说明: 调试方法参见 MCU SDK开发包移植调试

  4. 编写主函数

#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 开发工具与服务,助力开发者更高效的完成设备接入,并为开发者提供物联网应用开发及场景服务能力。

您正在浏览的内容为涂鸦开发者平台注册用户自主发布,版权归原作者所有,涂鸦开发者平台不拥有其著作权,亦不承担相应法律责任,涂鸦开发者平台不对该等内容作出不违反、不侵权的陈述与保证。您应知晓并了解您对于该等内容的复制、改编、转发传播等任何其他使用行为应当符合法律法规并应取得相关权利人的许可,您的该等行为所造成的全部相应后果(包括但不限于侵权、违约、受损、与第三方的纠纷等)均应由您个人承担。内容知识产权相关条款可查看涂鸦开发者平台用户协议。如果您发现有涉嫌侵权的内容,请立即通过平台上的联系方式联系平台进行举报并发送有关证据,一经查实,平台将立刻删除涉嫌侵权内容。

喜欢举报