聚豐項(xiàng)目 > 基于AB32VG1的用于演示的智能家居盒子
【產(chǎn)品功能】 1. 用戶可以通過(guò)"盒子"的按鍵選擇控制三色燈的開(kāi)關(guān)和電機(jī)的開(kāi)關(guān) 2. 通過(guò)"盒子"本地按鍵操作的燈和電機(jī)的狀態(tài)可以同步到手機(jī)APP 3. oled屏同步顯示控制內(nèi)容和控制后的狀態(tài)
小默叔叔MC
分享小默叔叔MC
團(tuán)隊(duì)成員
小默叔叔 自由開(kāi)發(fā)者
【硬件說(shuō)明】
1.因?yàn)锳B32VG1的開(kāi)發(fā)板接口是arduino的,所以外設(shè)是用到了以前工作的一個(gè)arduino接口的轉(zhuǎn)接板,用到了硬件外設(shè)有:OLED(SPI接口@@)、RGB_LED(IIC接口,,,就是這么怪)、直流電機(jī)(GPIO)、DHT11(GPIO)、按鍵(GPIO)
- OLED(SPI接口) -- 軟件模擬SPI:SCL:PA.0 SDA:PA.1 DC:PA.2 CS:PE.4
- RGB_LED(IIC接口) -- 軟件模擬IIC:SDA:PE.2 SCL:PE.3
- 直流電機(jī)(GPIO) -- 使用IO:GPIO:PA.6
- DHT11(GPIO) -- 使用IO:GPIO:PF.0
- 按鍵(GPIO) -- 使用IO:電機(jī)控制按鍵:PE.1 燈控制按鍵:PA.5
- 串口(UART) -- 使用串口1 波特率:115200
a. oled原理圖【SPI】:
b. RGB_LED 燈 【IIC】:
c.直流電機(jī)【GPIO】:
d.DHT11【GPIO】:
e.按鍵【GPIO】:
f.外接接口:
2.當(dāng)前進(jìn)度用到的硬件有:oled 12864 屏1個(gè)、按鍵2個(gè)、RGB燈1個(gè)、WiFi模組1個(gè)、手機(jī)1個(gè)、coder 1個(gè)
3.原理圖先不放了,硬件外設(shè)與開(kāi)發(fā)板的接口【晚點(diǎn)】時(shí)候補(bǔ)充
4.開(kāi)發(fā)板介紹
ab32vg1-prougen 是 中科藍(lán)訊(Bluetrum) 推出的一款基于 RISC-V 內(nèi)核的開(kāi)發(fā)板,最高主頻為 120Mhz,該開(kāi)發(fā)板芯片為 AB32VG1。
該開(kāi)發(fā)板常用板載資源如下:
- MCU:AB32VG1,主頻 120MHz,可超頻至 192MHz,8Mbit FLASH ,192KB RAM。
- 常用外設(shè)
- LED: RGB燈
- 按鍵: 3 個(gè), USER(s2,s3) and RESET(s1)
- 常用接口:USB 轉(zhuǎn)串口、SD 卡接口
【軟件設(shè)計(jì)】
1. 軟件初始化會(huì)創(chuàng)建幾個(gè)線程"uart_thread"、"button_thread"、"event_manager_thread"、"dht11_thread"、"oled_thread"
2. 串口線程"uart_thread":負(fù)責(zé)與WiFi模組通訊,接受云端的控制指令和上報(bào)本地操作后的設(shè)備狀態(tài)
3. 按鍵線程"button_thread":處理按鍵的不同觸發(fā)狀態(tài),用來(lái)區(qū)分用戶的按鍵方式來(lái)控制三色燈和電機(jī)的開(kāi)關(guān)狀態(tài)
4. 時(shí)間管理線程"event_manager_thread":用于對(duì)控制事件的接受和處理相對(duì)于的函數(shù)邏輯
5. 溫濕度檢測(cè)傳遞線程"dht11_thread":用于接收溫濕度數(shù)據(jù)并傳遞給OLED顯示對(duì)應(yīng)狀態(tài)
6. oled顯示線程"oled_thread":屏幕用于顯示同步用戶本地操作和操作結(jié)果
7. 使用了消息隊(duì)列和事件傳遞同于線程間通訊
8. SD card本想用sqlite3存儲(chǔ)溫濕度數(shù)值和一些音頻內(nèi)容,通過(guò)音頻部分播出,所以,,還沒(méi)做,,,
9. 光敏傳感器本想做夜晚休眠,白天開(kāi)始工作,但比較普通,先鴿掉。。
10. 本想做一個(gè)IoT網(wǎng)關(guān),可以采集設(shè)備端數(shù)據(jù)的裝置,但因?yàn)楦鞣N原因,做了個(gè)設(shè)備端
【RT-Thread使用說(shuō)明】
1. 內(nèi)核部分:使用線程、信號(hào)量、消息隊(duì)列、事件處理
2. 組件部分:FinSH、ulog(只在串口線程用到)
3. 軟件包:dht11、ssd1306、multibutton
4. 設(shè)備驅(qū)動(dòng):GPIO、SPI、IIC、UART
【gitee代碼倉(cāng)庫(kù)地址】
項(xiàng)目介紹詳細(xì)可以看代碼 readme.md