基于RISC-V MCU为核心的电能监控排插,及有人云物联网平台监控数据
一、预想功能
基于32 位通用增强型 RISC-V MCU CH32V103开发板作为核心控制主板,通过接收和处理单相电能检测模块实时获取的单相数据,包括对电压、电流、有功功率、无功功率、电能、功率因数、二氧化碳含量、频率、芯片温度等相关数据进行计算和整理,同时驱动OLED 屏幕实时刷新显示单相电能数据,并将数据进行打包后通过串口向以太网模块发送数据包,以太网模块将数据包上传至云端,实现远距离在有人云平台对数据进行监控及上下发指令功能。
二、系统框架
三、硬件介绍
该智能电表硬件部分主要由RISC-V MCU CH32V103开发板、电能计模块、以太网模块、驱动模块、OLED 屏幕以及排插等器件组成。
RISC-V MCU CH32V103开发板:作为核心主板。负责对电能检测模块下发收集指令,以及对电能检测模块响应的数据进行处理,一方 面对接收的单相数据进行转换后驱动OLED 屏幕对相关数据进行显示,另一方面对单相数据进行重新打包并通过串口对以太网模块进行数据传输。
电能计模块:通过排插连接电器,并实时检测外接电器的单相数据。若接收主板发来的接收指令,则将检测到的数据上发到主板。
以太网模块:作为开发板与云端进行数据传输的媒介。当模块接收主板下发的数据包时,会将数据包通过路由器上传到云端,有人云平台通过对数据进行接收并显示到监控界面上,用户也可通过在有人云的监控界面对主板下发数据和指令。
驱动模块:按照主板指令驱动散热器开关以及转动的速度等。
OLED屏幕:显示相关数据。
排插:可外接电器,支持220V交流供电,接入排插的电器运行时的单相数据不断被电能检测模块进行收集。
四、软件介绍
1.主函数
int main(void)
{
uint8_t OLED_Show_Change = 0;
uint8_t OLED_Show_First_In = 0;
DisableGlobalIRQ();
board_init(); //务必保留,本函数用于初始化MPU 时钟 调试串口
gpio_init(B2, GPO, 0, GPIO_PIN_CONFIG); //GPIO初始化 PB2//外接LED2
gpio_init(C0, GPO, 1, GPIO_PIN_CONFIG); //GPIO初始化 PC0//外接KEY
gpio_init(C1, GPO, 1, GPIO_PIN_CONFIG); //GPIO初始化 PC1//外接LED1
gpio_init(C3, GPO, 0, GPIO_PIN_CONFIG);
gpio_init(C4, GPO, 0, GPIO_PIN_CONFIG);
uart_init(UART_1, 4800, UART1_TX_A9, UART1_RX_A10);
uart_init(UART_2, 115200, UART2_TX_A2, UART2_RX_A3);
uart_rx_irq(UART_1, ENABLE);
// uart_tx_irq(UART_1, ENABLE);
uart_rx_irq(UART_2, ENABLE);
// uart_tx_irq(UART_2, ENABLE);
U_OLED_Init(); //用户初始化OLED函数
U_OLED_Clear(); //清屏函数
timer_pit_interrupt_ms(TIMER_1, 10); //初始化定时TIM1 10毫秒中断一次
EnableGlobalIRQ(0);
while (1)
{
if (U_Tim_Count > 250)//计时
{
U_Tim_Count = 0;
OLED_Show_Change++;
if