开发背景
随着显示器件的多样化,人机交互界面也在不断地进行着变更,如今在TFT显示屏上进行图标化的功能管理已成为一种趋势,为此以ART-Pi STM32H750开发板为硬件平台,来构建一个以图标界面进行功能管理的桌面式智能家居控制系统,该系统的主要功能如图1所示,整体构成如图2所示。
图1 功能结构图
图2 整体构成图
功能规划:
RTC: 利用MCU内部的RTC实现电子时钟的计时功能,可用于定时控制固态继电器来驱动家用电器的开关。
ADC: 利用MCU内部的A/D转换器对外部的模拟量进行采集,并可绘制出数据波形图。在连接土壤湿度传感器的情况下,可对家庭养植的绿色植物进行补水控制,当然这需要小型水泵的配合。
PWM调光:利用MCU内部的定时器通过占空比的设置来控制光源的明亮程度,也可利用亮度强弱变化的呼吸灯效果来辅助睡眠。
环境温湿度检测: 使用数字式温湿度传感器DHT22对家居的温湿度状态进行检测,若配置2个DHT22的情况下,还可将2个DHT22分别放置在居室内外,以检测冬季供暖与墙体的保温性能。
环境光照度检测: 使用数字式光照度传感器BH1750对居室的日照状态进行检测,从而对日照采光情况提供一个可靠的依据。
乐曲播放: 利用MCU内部的UART向MP3功能模块来发送指令,从而对播放的乐曲加以选择。受板载按键只有一个的制约,这里只采用单键控制,若对按键加以扩展,则可实现双向的选择处理及音量的调控。
开关控制: 利用MCU的GPIO口,在连接固态继电器的情况下,可通过按键来控制家居的小电器进行开关控制,也可与RTC计时器相配合来进行定时控制电器的开关。
图像显示: 该功能要依托W25Q16之类的FLASH存储器件或是TF卡来辅助存储图片数据,受时间的制约该功能只预备了一个功能调用的接口,具体的功能实现有待于辅助存储功能的实现。
2.硬件设计
该系统的整体硬件结构如图3所示,主要由显示模块、语音模块、继电控制模块及传感器模块等组成。
图3 原理构成图
1)显示部分
显示部分是通过SPI接口的TFT屏来实现的,这样比较节省GPIO资源,其连接关系如图4所示。
图4 TFT显示电路原理图
2)音频播放部分
音频播放是通过MP3播放模块来实现,这样有利于节省MCU资源并可形成并行的处理关系。MP3播放模块是采用通讯方式来控制MP3播放模块。除连接5V电源外,只需将MP3播放模块的RX引脚与PA9连接。
图5 MP3播放模块引脚图
3)控制部分
为了进行电器的控制,使用带光隔的继电器模块以防止继电器对MCU的干扰,对稍大功率的电器,则使用固态继电器来控制。
4)传感器部分
为了进行物理信号的检测,可选取不同类型的传感器,例如对绿植的管控是采用土壤湿度传感器,属模拟量的传感器,相应的接口电路如图6和图7所示。此外,对数字式的传感器的使用,则可省去数值标度的麻烦,DHT22和BH1750就属于这一类型。
图6 土壤湿度检测模块接口
图7 土壤湿度传感器
5)按键部分
按键是人机交互的主要器件,为便于控制所用的是开发板上用户USER,若增添更多的处理,则需要自行扩展更多的按键。
3. 软件设计
1)界面设计
操作界面是人机交互的窗口,系统的主界面如图8所示,主要以图标的形式来标识功能,并通过文字的反显来指示待选的功能,主菜单下的相关界面如图8~图10所示。
图8 主界面
图9 RTC计时
图10 MP3播放选择
2)功能实现
在功能管理方面,是采用模块化的设计方法并通过功能函数调用来实现。在功能设计中,既涉及到外部功能模块的使用,也涉及到MCU内部的RTC、A/D、UART、GPIO等。
界面生成程序:
void jm(void)
{
LCD_Clear(WHITE);
show_tbh(20,240,0);
showhanzi16h(80,280,3,1);
showhanzi16h(80,264,4,1);
show_tbh(20,180,1);
show_tbh(20,120,2);
show_tbh(20,60,3);
showhanzi16h(80,100,5,1);
showhanzi16h(80,84,6,1);
show_tbh(120,60,4);
show_tbh(120,120,5);
show_tbh(120,180,6);
show_tbh(120,240,7);
showhanzi16h(180,280,13,1);
showhanzi16h(180,264,14,1);
showhanzi16h(180,220,11,1);
showhanzi16h(180,204,12,1);
showhanzi16h(180,160,9,1);
showhanzi16h(180,144,10,1);
showhanzi