聚丰项目 > 基于AB32VG1的用于演示的智能家居盒子
【产品功能】 1. 用户可以通过"盒子"的按键选择控制三色灯的开关和电机的开关 2. 通过"盒子"本地按键操作的灯和电机的状态可以同步到手机APP 3. oled屏同步显示控制内容和控制后的状态
小默叔叔MC
分享小默叔叔MC
团队成员
小默叔叔 自由开发者
【硬件说明】
1.因为AB32VG1的开发板接口是arduino的,所以外设是用到了以前工作的一个arduino接口的转接板,用到了硬件外设有: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.原理图先不放了,硬件外设与开发板的接口【晚点】时候补充
4.开发板介绍
ab32vg1-prougen 是 中科蓝讯(Bluetrum) 推出的一款基于 RISC-V 内核的开发板,最高主频为 120Mhz,该开发板芯片为 AB32VG1。
该开发板常用板载资源如下:
- MCU:AB32VG1,主频 120MHz,可超频至 192MHz,8Mbit FLASH ,192KB RAM。
- 常用外设
- LED: RGB灯
- 按键: 3 个, USER(s2,s3) and RESET(s1)
- 常用接口:USB 转串口、SD 卡接口
【软件设计】
1. 软件初始化会创建几个线程"uart_thread"、"button_thread"、"event_manager_thread"、"dht11_thread"、"oled_thread"
2. 串口线程"uart_thread":负责与WiFi模组通讯,接受云端的控制指令和上报本地操作后的设备状态
3. 按键线程"button_thread":处理按键的不同触发状态,用来区分用户的按键方式来控制三色灯和电机的开关状态
4. 时间管理线程"event_manager_thread":用于对控制事件的接受和处理相对于的函数逻辑
5. 温湿度检测传递线程"dht11_thread":用于接收温湿度数据并传递给OLED显示对应状态
6. oled显示线程"oled_thread":屏幕用于显示同步用户本地操作和操作结果
7. 使用了消息队列和事件传递同于线程间通讯
8. SD card本想用sqlite3存储温湿度数值和一些音频内容,通过音频部分播出,所以,,还没做,,,
9. 光敏传感器本想做夜晚休眠,白天开始工作,但比较普通,先鸽掉。。
10. 本想做一个IoT网关,可以采集设备端数据的装置,但因为各种原因,做了个设备端
【RT-Thread使用说明】
1. 内核部分:使用线程、信号量、消息队列、事件处理
2. 组件部分:FinSH、ulog(只在串口线程用到)
3. 软件包:dht11、ssd1306、multibutton
4. 设备驱动:GPIO、SPI、IIC、UART
【gitee代码仓库地址】
项目介绍详细可以看代码 readme.md