聚豐項(xiàng)目 > 智能語(yǔ)音家居
設(shè)計(jì)思路: 1.使用AB32VG1主控 使用RT-thread RTOS, 2.外接DHT11采集室內(nèi)溫度濕度,外接光敏電阻ADC采集光照, 3.控制紅外遙控空調(diào),遠(yuǎn)程控制空調(diào)開(kāi)啟 4.霍爾元件,檢測(cè)門窗開(kāi)關(guān),通過(guò)藍(lán)牙上傳到主控 5.通過(guò)wifi上傳到云服務(wù)器,接入天貓精靈,或者涂鴉平臺(tái), 6.實(shí)現(xiàn)在天貓精靈APP,或者涂鴉APP上查看溫濕度或語(yǔ)音查詢, 解決問(wèn)題: 1.通過(guò)與天貓精靈對(duì)話就可以,了解室內(nèi)溫濕度 2.回到家前可以提前開(kāi)啟空調(diào), 3.出門忘記關(guān)閉空調(diào),遠(yuǎn)程關(guān)閉, 4.遠(yuǎn)程查看門窗的開(kāi)關(guān)狀態(tài),夜晚也可以防盜,報(bào)警 創(chuàng)新點(diǎn): 1. 遠(yuǎn)程查詢溫濕度門窗狀態(tài),控制空調(diào)開(kāi)關(guān)狀態(tài) 2. 語(yǔ)音查詢溫濕度門窗狀態(tài)
迷惘186
迷惘186
團(tuán)隊(duì)成員
迷惘186 硬件
一.硬件資源
1. AB32VG1 底板
AB32VG1主頻 120M ,片上集成 RAM 192K, Flash 4Mbit,ADC,PWM,USB,UART,IIC 等資源。提供SDK,驅(qū)動(dòng)齊全,支持RT-Thread Studio 開(kāi)發(fā)應(yīng)用,圖形化配置系統(tǒng),一鍵開(kāi)啟外設(shè),一鍵使用軟件包,強(qiáng)大的自動(dòng)代碼編輯輔助。
CPU: AB5301A;(LQFP48 封裝,主頻 120M,片上集成 RAM 192K, flash 8Mbit, ADC,
PWM, USB, UART, IIC 等資源)
搭載藍(lán)牙模塊
搭載 FM 模塊
一路 TF Card 接口
一路 USB 接口
一路 IIC 接口
一路音頻接口(美標(biāo) CTIA)
六路 ADC 輸入引腳端子引出
六路 PWM 輸出引腳端子引出
一個(gè)全彩 LED 燈模塊,一個(gè)電源指示燈,三個(gè)燒錄指示燈
一個(gè) IRDA(紅外接收端口)
一個(gè) Reset 按鍵,三個(gè)功能按鍵(通用版為兩個(gè)功能按鍵)
板子規(guī)格尺寸: 6cm*9cm
I/O 口通過(guò) 2.54MM 標(biāo)準(zhǔn)間距引出,同時(shí)兼容 Arduino Uno 擴(kuò)展接口,方便二次開(kāi)發(fā)
2.Tuya 語(yǔ)音擴(kuò)展板
涂鴉IoT語(yǔ)音模組VWXR2是基于XR872AT研發(fā)的搭載語(yǔ)音喚醒&降噪算法的IoT應(yīng)用WI-FI模組,支持WLAN 802.11b/g/n+ARM Cotex-M4F, 內(nèi)置416KB SRAM和4MB PSRAM,匹配涂鴉云端語(yǔ)音技能+IoT平臺(tái),可幫助客戶實(shí)現(xiàn)IoT產(chǎn)品的語(yǔ)音入口賦能,很好的支持了低成本在線語(yǔ)音 控制的終端產(chǎn)品
內(nèi)置低功耗32位cpu,可兼做處理器,主頻最高支持380MHz
工作電壓:2.7-5.5V
外設(shè):9*GPIO,2*Uart,2*ADC
天線支持:板載+可選ipex 采樣率:16K/16bit
語(yǔ)音輸入:內(nèi)置2路音頻ADC,可直接模擬mic
音頻輸出:1路
板載音頻功放:最大支持2.6W
推薦喚醒距離:<=3m
推薦工作底噪:<=60dbC
默認(rèn)語(yǔ)音技能:天氣、百科、日歷、計(jì)算器、成語(yǔ)、翻譯、已支持音樂(lè)內(nèi)容點(diǎn)播- 支持線性雙MIC,間距靈活可調(diào)(>40mm),ID和MD結(jié)構(gòu)設(shè)計(jì)靈活,易集成
3.機(jī)智云V2.3 Ardiono IO 擴(kuò)展板
擴(kuò)展板板載了正反轉(zhuǎn)可調(diào)速電機(jī)馬達(dá)、溫濕度傳感器、紅外感應(yīng)器、RGB全彩LED燈,另外增加了OLED擴(kuò)展接口,
二.連接原理圖
使用到 AB32VG1 底板 IO
串口1:
PA4 TX --> 語(yǔ)音模組 RX
PA3 RX --> 語(yǔ)音模組 TX
RGB LED: i2c1
PE.2 -> SDA1
PE.3 -> SCL1
OLED:i2c2
PA.0 --> SDA2
PA.1 -->SCL2
DHT11:
PB.0 --> DATA
KEY:
PE.0 --> KEY1
PF.0 --> KEY2
紅外對(duì)管:
PF.1 --> IR
電機(jī):
PA.5 PA.1
紅外接收:
PE.6 --> IR RX
光敏電阻:
PB.1 -->ADC 7
智能家居控制
程序開(kāi)源地址:https://gitee.com/miwang186/ab32vg1_smart_furniture.git
一.軟件功能
1. 讀取DTH11 溫濕度
2. OLED 顯示溫濕度 時(shí)間等,
3. 按鍵頁(yè)面切換等 (完成驅(qū)動(dòng) 顯示切換未實(shí)現(xiàn))
4. 語(yǔ)音WiFi模塊 上傳溫濕度,RGB LED 光照等參數(shù)
5. APP 遠(yuǎn)程查詢溫濕度 光照,
6. 遠(yuǎn)程紅外遙控, 紅外學(xué)習(xí)等 (未完成)
7. 遠(yuǎn)程控制電機(jī) 速度(未完成)
二.軟件流程
1.顯示線程: 每秒刷新 時(shí)間 溫濕度 光照ADC值的顯示
2.網(wǎng)絡(luò)線程: 處理語(yǔ)音WiFi 模塊 串口數(shù)據(jù)的收發(fā) 解析 連接涂鴉云服務(wù) 等
3. 傳感器線程: 每秒采集溫濕度 光照ADC值
4. 按鍵線程: 處理按鍵事件觸發(fā) 軟件定時(shí)器掃描按鍵
5. 主線程: 每5分鐘上傳一次 溫濕度 光照 涂鴉云服務(wù)
三.更新日志:
**修改時(shí)間:2021-12-6**
**修改人:miwang186**
>
1. 紅外硬件解碼測(cè)試程序測(cè)試正常
2. 使用ssd1306軟件包 模擬I2C2 驅(qū)動(dòng) OLED 顯示正常,48M速度下OLED 1FPS(120M 速度為2 FPS)PS:開(kāi)啟程序O2 時(shí)間優(yōu)化 好像并無(wú)作用
存在問(wèn)題1:同時(shí)開(kāi)啟兩個(gè)軟件I2C 無(wú)法使用,單獨(dú)開(kāi)啟任何一個(gè)運(yùn)行正常
3. GoKit功能板上 2個(gè) 輕觸開(kāi)關(guān) 和 紅外對(duì)管 識(shí)別按下
4. DHT11 使用軟件包 修改rt_hw_us_delay()函數(shù) 調(diào)整延時(shí)(示例1),輸出溫度,濕度
5. ADC使能ADC ADC0 調(diào)整例程通道即可使用 Ps:這里我以為ADC0是通道0 特意加了幾個(gè)ADC1...ADC15 結(jié)果都讀不出數(shù)值,又是大半天到浪費(fèi)
6. finsh控制臺(tái) 增加AB32IO PIN腳 Ardiono io 到映射關(guān)系輸出 方便查看IO口(示例2)
7.驅(qū)動(dòng)AB32板載LED PWM 呼吸燈, GoKit功能板上 IIC RGB燈
8.uart1 串口測(cè)試,配置需要通過(guò)修改drv_usart.c來(lái)修改波特率,
存在問(wèn)題2:在應(yīng)用通過(guò)rt_device_control(serial, RT_DEVICE_CTRL_CONFIG, &config);無(wú)法通訊
存在問(wèn)題3:系統(tǒng)時(shí)鐘修改大于48M是 finsh msh >(rx_fifo != RT_NULL) assertion failed at function:rt_hw_serial_isr, line number:1294
9. 修改部分小
bug1: I2C i通過(guò)軟件包 無(wú)法配置為io 0 限制范圍1-27
bug2: 定義名稱錯(cuò)誤 struct rt_i2c_bus_device i2c2_bus;
**修改時(shí)間:2021-12-7**
**修改人:miwang186**
>
1. 增加涂鴉語(yǔ)音模塊初始API,可以注冊(cè)網(wǎng)絡(luò)連接WiFi
2. 優(yōu)化OLED顯示驅(qū)動(dòng) 刷新率可到4fps 示例3:
**修改時(shí)間:2021-12-9**
**修改人:miwang186**
>
1. 增加獲取網(wǎng)絡(luò)時(shí)間并同步到本地
2. 修改串口 接收FIFO 為127字節(jié)
**修改時(shí)間:2021-12-11**
**修改人:miwang186**
>
1. 上傳溫濕度 光照 RGB燈 數(shù)據(jù)到涂鴉后臺(tái)
2. 編輯APP顯示頁(yè)面 遠(yuǎn)程控制RGB燈 查看 溫濕度
3. 5分鐘上傳一次 溫濕度 光照數(shù)據(jù)
/*示例1*/ rt_kprintf("tick:%d \n", rt_tick_get()); rt_hw_us_delay(1000 * 1000); rt_kprintf("tick:%d \n", rt_tick_get());
/* 示例2 * finsh控制臺(tái) 增加AB32IO PIN腳 Ardiono io * 到映射關(guān)系輸出 方便查看IO口 */ AB32VG1_V2.0 Board IO Info ******************************** AB32|IO| Ardiono |IO|AB32 -------------------------------- PA.3|03|RX A5|20|PE.7 PA.4|04|TX A4|19|PE.6 PF.1|22|D2 A3|18|PE.5 PB.0|08|D3 A2|04|PWKEY PA.5|05|D4 A1|09|PB.1 PE.1|14|D5 A0|10|PB.2 PE.0|13|D6 PF.0|21|D7 VIN|VIN GND|GND NC|D8 GND|GND PA.6|06|D9 GND|GND PE.4|17|D10 5V |5V PA.1|01|D11 3.3|3.5 PA.2|02|D12 RST|NC PA.0|00|D13 REF|REF GND|GND NC | NC|AREF PE.2|15|SDA PE.3|16|SCL ********************************
/*示例3 優(yōu)化SSD1306 刷新速度 提升 到4pfs 使用120M主頻 */ // Send data void ssd1306_WriteData(uint8_t* buffer, size_t buff_size) { #if PKG_USING_SSD1306_HW_I2C HAL_I2C_Mem_Write(&SSD1306_I2C_PORT, SSD1306_I2C_ADDR, 0x40, 1, buffer, buff_size, HAL_MAX_DELAY); #else uint8_t* buf =rt_malloc(buff_size + 4); if(buf == RT_NULL) { rt_kprintf("ssd1306_WriteData rt_malloc fail \n"); return; } buf[0] = SSD1306_CTRL_DATA; rt_memcpy(buf + 1, buffer, buff_size); buff_size++; rt_i2c_master_send(i2c_bus, SSD1306_I2C_ADDR, RT_I2C_WR, buf, buff_size); rt_free(buf); #endif }
1. 驅(qū)動(dòng)OLED測(cè)試FPS
2. 語(yǔ)音查詢天氣
3. 獲取實(shí)時(shí)時(shí)間
4. APP 查詢溫濕度 遠(yuǎn)程控制LED 燈顏色