本帖最后由 流行科技 于 2022-10-22 13:20 编辑
作品名称
可视化家庭环境分析仪
作者:流行科技
本次大赛我申请了STM32F7508-DK开发板用于此次的开发,其外围提供的东西都非常完善了。设备底层的驱动都是完全的,我基于此,使用了一些外围的拓展板进行二次开发,主要是传感器等设备。家庭环境监测我还另外制作了一款传感器,ADI的烟雾传感器,但目前由于疫情原因无法发货,缺少了一个重要的元器件。
二、系统框图(图文结合)
目前我自己添加了Arduino接口中的IIC和串口,还有一个GPIO控制点灯,其余使用ST提供的TouchGFX进行开发,里面包含了屏幕触摸等驱动。
其中涂鸦模块是使用串口进行通信的,本次很遗憾没有使用其本身的网口。
三、各部分功能说明
主屏幕目前主要就是显示数据,可以操作一些硬件底层。
背面主要是在基础上添加了Arduino接口的涂鸦模块,在模块上我接了SHT20温湿度传感器和LED灯。
涂鸦云,我们是创建了自己的项目产品。
之后我们在涂鸦APP中就能添加上我们设备,看到设备参数,同时可以控制板子点灯。
void StartDefaultTask(void *argument)
{
/* USER CODE BEGIN 5 */
/* Infinite loop */
for(;;)
{
SHT20_GetValue();
// printf("temp:%f,humi:%f\r\n",sht20_info.tempreture,sht20_info.humidity);
if (init_flag == 0)
{
time_cnt++;
if (time_cnt % 1 == 0)
{
time_cnt = 0;
cnt ++;
}
wifi_stat_led(&cnt); // Wi-Fi状态处理
}
wifi_uart_service();
key_scan(); // 重置配网按键检测
osDelay(1000);
}
/* USER CODE END 5 */
}
这里是一个任务主要是读取SHT20温湿度传感器和WiFi上传任务,里面还添加了模块配网功能。
整体在其中我们添加的东西,涂鸦有SDK,我们需要添加对应的功能。
uint8_t RxBuffer[500];
uint8_t rx_len=0;//接收到的数据长度
void uart_receiveTask(void *argument)
{
BaseType_t xResult;
uint8_t res;//每次接收到的数据
__HAL_UART_ENABLE_IT(&huart6, UART_IT_IDLE);
HAL_UART_Receive_DMA(&huart6,(uint8_t*)RxBuffer,500);
for(;;)
{
xResult = xSemaphoreTake(xSemaphore, (TickType_t)pdMS_TO_TICKS(200));//获取信号量
if(xResult == pdTRUE)
{
// HAL_UART_Receive_IT(&huart6,&res,1);
// HAL_UART_Transmit(&huart6,RxBuffer,rx_len,0xFFFF);
HAL_UART_Receive_DMA(&huart6,(uint8_t*)RxBuffer,500);
uart_receive_buff_input(RxBuffer,rx_len);
printf("rx_len:%d\r\n",rx_len);
}
osDelay(100);
}
}
对于串口来说我也是单独的一个任务,通过任务间通信进行串口的DMA的通信方式。
void Screen1View::handleTickEvent()
{
touchgfx::Unicode::snprintfFloat(textArea_temp_valueBuffer, TEXTAREA_TEMP_VALUE_SIZE, "%.2f",sht20_info.tempreture);
textArea_temp_value.setWildcard(textArea_temp_valueBuffer);
textArea_temp_value.invalidate();
textArea_temp_value.resizeToCurrentText();
textArea_temp_value.invalidate();
touchgfx::Unicode::snprintfFloat(textArea_humi_valueBuffer, TEXTAREA_HUMI_VALUE_SIZE, "%.2f",sht20_info.humidity);
textArea_humi_value.setWildcard(textArea_humi_valueBuffer);
textArea_humi_value.invalidate();
textArea_humi_value.resizeToCurrentText();
textArea_humi_value.invalidate();
if(!led_state)
{
textArea_led_value.setTypedText(touchgfx::TypedText(T_RESOURCEID1));
textArea_led_value.invalidate();
textArea_led_value.resizeToCurrentText();
textArea_led_value.invalidate();
}
else
{
textArea_led_value.setTypedText(touchgfx::TypedText(T_RESOURCEID2));
textArea_led_value.invalidate();
textArea_led_value.resizeToCurrentText();
textArea_led_value.invalidate();
}
}
主页面就是我们的显示数据,我们数据是可以直接通过一个转换显示出来的。
五、作品功能演示视频
六、项目总结
本次大赛感谢得捷电子提供的开发板,本次项目还有点缺陷,没能把烟雾传感器也给接上,后续等元件到了我再分享这块吧。同时ST提供的TouchGFX简化了界面的操作,同时对于例程ST也提供了,无疑M7内核在学习上还是有一定难度的。后续我也将继续学习M7内核。
【可视化家庭环境分析仪】使用ST MEMS传感器套件读取环境数据 https://bbs.eeworld.com.cn/thread-1221793-1-1.html
七、其他
|