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