本帖最后由 beyond_笑谈 于 2024-1-7 15:28 编辑
一、作品简介
设计名称: 触摸控制的智能化家居控制系统设计
作品介绍:通过触摸屏和外部开关控制家居设备的开启和关闭,并且对应的显示出当前家居设备工作状态。利用PIC32-MAXI-WEB demo(MCU: PIC32MX795F512L,PIC单片机由于高可靠性和抗干扰性能优越,经常用在工业控制领域和家电设备中)作为主控板, 外部的扩展开关和LED板来代替家居控制系统中的开关和电灯。
作品如下图所示:
二、系统框图
系统应用简图如下:
如系统应用简图所示,利用demo和外部扩展模块来实现整个设计方案。
三、各部分功能说明
如下图圈出区域所示,利用拨码开关代替家中常用的翘班开关,采用外部的3V电池供电。IN1为开关检测信号,MCU通过电平检测功能即可采集开关状态。
如下图圈中区域所示,利用LED代替照明灯。当控制器输出控制信号,导通隔离继电器S1的开关侧后,LED点亮。开关、控制板和LED都是采用了不同的电源和电压信号,模拟实际家居控制系统中的各负载隔离供电。
四、作品源码
测试主要源码如下,在测试程序中读取信号状态和输出控制信号。其余源码请见下载链接
void vTaskTest( void * pvParameters )
{
xSemaphoreTake(xSemaphorePrint, portMAX_DELAY);
while(1); {
xSemaphoreTake(xSemaphorePrint, portMAX_DELAY);
switch(ProdTestType) {
case PROD_TEST_NONE:
break;
case PROD_TEST_EXTCON:
vTaskSuspend(pxTaskIO);
ExtConTestAll();
UserPeriphInit();
vTaskResume(pxTaskIO);
break;
case PROD_TEST_USBOTG:
break;
case PROD_TEST_CAN:
StatLEDSet(1, FALSE);
StatLEDSet(2, FALSE);
StatLEDSet(3, FALSE);
{
int counter = 4000;
char ch;
CANtesting(1);
while(counter--) {
CANtesting(0);
if( UartCommRead(&ch, 1) ) {
UartCommWrite(&ch, 1);
ch = '*';
UartCommWrite(&ch, 1);
}
vTaskDelay(5);
}
}
StatLEDSet(1, FALSE);
StatLEDSet(2, FALSE);
StatLEDSet(3, TRUE);
break;
}
ProdTestType = PROD_TEST_NONE;
}
}
源码链接:https://download.eeworld.com.cn/detail/beyond_%E7%AC%91%E8%B0%88/630634
五、作品功能演示视频
演示视频中主要是模拟家居控制中的使用情况,进行了实际操作演示。
视频链接:https://training.eeworld.com.cn/video/38917
六、项目总结
项目总结:通过在触摸屏上和机械开关的方式来实现家居控制系统的开关控制,并且用触摸屏上的图标和LED来显示被控制的家电状态,从而实现智能家居控制系统的概念设计。
Word 文档如下:
digikey_iot_contest_2023_ ...
|