迪文科技论坛

 找回密码
 立即注册
搜索
查看: 112|回复: 0

【2022.3.22获奖项目】基于迪文屏的智能桌面信息牌方案

[复制链接]

567

主题

167

回帖

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11960
发表于 2024-1-10 14:41:49 | 显示全部楼层 |阅读模式
【开源】基于迪文屏的智能桌面信息牌方案

本文主要介绍了一款基于迪文温控器设计的智能桌面助理,该产品不仅具备信息显示功能,还拓展了智能电源、温湿度监测、语音遥控和家庭电器开关无线遥控功能。设计采用显示与充电插座采用分体设计,通过连接线连接在一起,方便DIY使用。



演示视频:

链接:https://pan.baidu.com/s/1HhFhNusOIcMaFSmDAVXRjQ?pwd=txo7

提取码:txo7


优势:

1.价格优势:液晶屏可以直接在迪文的温控器的基础上进行开发。

2.功能优势:

2.1 设计的产品很适合在书桌使用,相比传统的显示牌,用迪文屏的UI功能,界面的显示效果非常好,同时自带的OS系统,也允许我们拓展丰富的外设,即具有了智能家居的特点,配合设计的86盒开关,可以轻易地实现家庭电器开关的的无线控制与语音遥控。

2.2 设计有2串18650锂电池作为备用电源,当停电时采用电池供电,正常时220V交流电也会为电池充电。


一、智能桌面信息牌功能设计-人机界面

1.云端、多信息显示、备忘录功能

利用迪文屏的强大的UI功能以及迪文云,对时间、日期、天气预报、温湿度、插座定时通断、语音信号的处理等(实际上,论坛里有朋友分享的电子相册、日历等功能都可以应用到,这里不再赘述

2.智能电源插座、

通过迪文屏的I/O口,依据用户设定的时间数据,智能地对220V的电源插座实现远程、定时控制

3.温湿度监测

采用性能优越的SHT31温湿度模块,该模块采用IIC通信,传感器最大工作范围-40-125℃,0-100%RH,精度为2%RH和0.3℃。

4.无线遥控+语音遥控、

SU03T除了串口可以向T5L发送数据,也可以直接通过自带的I/O口输出电平信号。

鉴于拓展外设的目的,这里采用了SU-03T离线语音模块作为无线模块的控制器,即语音模块在收到用户的语音指令时,除了向液晶屏发送数据,也会直接控制灵T3A模块控制家庭电器开关,以减少液晶屏的压力。

5.86型无线开关

在这里采用蜂鸟无线的灵R1模块,可以对应输出灵T3A的控制指令,采用单火线取零方式,直接驱动继电器控制电气。


二、电路原理图

(一)两串锂电池5V充电电路(支持Type-C充电)


(二)系统电源电路

(三)传感器电路

在这里,我只使用了四路无线开关,但是通过组合开关的方式,可以得到最多15路无线开关


为了降低个人的开发成本,在这里直接使用迪文的温控器方案,只需要将接近传感器替换成温湿度传感器,将PIO4-PIO7四个端口直接引入继电器


三、主要程序(迪文温控器已经给出的程序不再做罗列)

1.使用IIC指令加载温湿度传感器

在这里,使用IIC通过如下程序段即可读取温湿度。

  1. unsigned char a=0;
  2.        IIC_Start();
  3.       delay_ms(5);
  4.        IIC_Send_Byte(SHT3X_ADRESS_B<<1|write);
  5.        while(IIC_Wait_Ack());
  6.        BUF_Th=IIC_Read_Byte(1);
  7. BUF_Tl=IIC_Read_Byte(1);
  8. a=IIC_Read_Byte(1); //
  9. BUF_Rh=IIC_Read_Byte(1);
  10. BUF_Rl=IIC_Read_Byte(1);
  11. IIC_Stop();  
  12. delay_ms(5);}

  13. BUF_Th、BUF_Tl、BUF_Rh、BUF_Rl分别为温度与湿度数据的高低八位数据,做一次数据转换即可得到我们能用的参数

  14.        T=((unsigned long)175*(BUF_Th*256+BUF_Tl))/65535-45; //摄氏度
  15.        RH=((unsigned long)100*(BUF_Rh*256+BUF_Rl))/65535;
复制代码

2.串口2

迪文的温控器已经引出了串口2和PIO4-PIO7,我们这里使用串口2作为语音数据的收发端口。SU-03T允许个人用户对串口数据格式进行设置,同时可以特定条件下出发I/O口(关于语音模块详细的资料,可以邮箱私聊我获取)。为了与迪文保持一致,语音模块的指令数据也配置成5A A5 82/83 XXXX....的格式。

如下,为串口2的收发函数

  1. void UART2_SendStr(u8 *pstr,u8 strlen)%通过液晶屏手动控制电气开关的通断
  2. {
  3.     if((NULL == pstr)||(0 == strlen))
  4.     {
  5.         return;
  6.     }
  7.     while(strlen--)
  8.     {
  9.         UART2_Sendbyte(*pstr);
  10.         pstr++;
  11.     }  
  12. }

  13. void UART2_ISR_PC(void)    interrupt 4 %使用语音控制时,将语音数据发送给液晶屏,电气开关的通断由语音模块的I/O口直接实现。
  14. {
  15.     u8 res=0;
  16.     EA=0;
  17.     if(RI0==1)
  18.     {
  19.         res=SBUF0;
  20.         Uart2_Rx[uart2_rx_count]=res;
  21.         uart2_rx_count++;
  22.         RI0=0;      
  23.         Uart2RxCt = 5;
  24.         Uart2_TTL_Status = 12;
  25.     }
  26.     if(TI0==1)
  27.     {
  28.         TI0=0;
  29.         uart2_busy=0;
  30.     }
  31.     EA=1;
  32. }
复制代码

3.I/O口,用于驱动继电器,控制指令来源于液晶屏触控与定时通断

  1. sbit LED1 = P1^1;
  2. sbit LED2 = P1^3;
  3. sbit LED3 = P1^2;
  4. sbit LED4 = P1^4;

  5. void io_init()
  6. {
  7.    P1MDOUT |= 0x1E;        //初始化P1.1 P1.2 P1.3 P1.4为输出
  8. }

  9. void I_O_scan(void)
  10. {
  11.   read_dgus_vp(AC_power1_ADDR,(u8*)&AC_power1,1);  
  12.    if ( (AC_power1==1)
  13.         LED1 =1;
  14.    else
  15.         {
  16.           LED1 =0;
  17.           LED1_STOP =1;
  18.           }

  19.   read_dgus_vp(AC_power2_ADDR,(u8*)&AC_power2,1);  
  20.    if ( (AC_power2==1)
  21.         LED2 =1;
  22.    else
  23.         {
  24.           LED2 =0;
  25.           LED2_STOP =1;
  26.           }

  27.   read_dgus_vp(AC_power3_ADDR,(u8*)&AC_power3,1);  
  28.    if ( (AC_power3==1)
  29.         LED3 =1;
  30.    else
  31.         {
  32.           LED3=0;
  33.           LED3_STOP =1;
  34.           }
复制代码

4.DGUS显示温湿度数据,数据可以通过软件模拟IIC获得

  1. void Display_DATA(void)
  2. {
  3.   // read_dgus_vp(TEMP_DISPLAY,(u8*)&Temperature_old,1);
  4.    if (Temperature_SHT3X!=Temperature_Old)
  5.    {
  6.      Temper_Display_Val=Temperature_SHT3X/10;
  7.      Temper_Display_Val_Dec=Temperature_SHT3X%10;
  8.      write_dgus_vp(TEMP_DISPLAY_ADDR,(u8*)&Temper_Display_Val,1);
  9.       write_dgus_vp(TEMP_DISPLAY_DEC_ADDR,(u8*)&Temper_Display_Val_Dec,1);
  10.      Temperature_Old=Temperature_SHT3X;
  11.     }
  12.   //read_dgus_vp(RE_DISPLAY_ADDR,(u8*)&RE_old,1);
  13.    if ( RE_SHT3X!=RE_old)
  14.    {
  15.      RE_Display_Val=RE_SHT3X/10;
  16.      RE_Display_Val_Dec=RE_SHT3X%10;
  17.      write_dgus_vp(RE_DISPLAY_ADDR,(u8*)&RE_Display_Val,1);
  18.      write_dgus_vp(RE_DISPLAY_DEC_ADDR,(u8*)&RE_Display_Val_Dec,1);
  19.       RE_old=RE_SHT3X;
  20.      }
  21. }
复制代码

四、SU-03T的配置以及利用迪文标准品进行语音测试

第一步:登录网址http://www.smartpi.cn/,然后开始创建产品;

第二步:选择SU-03T的对应引脚分别串口模式和输出模式;

第三步:设定语音指令并选择指令动作,设定好串口指令,注意同一动作可以设定多条指令;

第四步:设定完成后,点击生成SDK,生成后,将SU-03T通过串口转TTL模块接到电脑上,利用下载工具下载到模块中。

语音指令发送效果:如下图,语音指令设定为“打开厨房灯光”,模块将向液晶屏发送指令5AA505826B69746368656E4F4E55AA,同时模块的I/O口也会按照指令高低电平切换。



五、外壳处理

做个参考(液晶屏被我掉到地上,摔坏了触摸,所以显示有点问题哈)

1.用3D打印机打的,前壳厚度1mm,偏薄,可以考虑比2mm再厚点

2.前罩的倾斜度可以再大点,我用的差不多是8°





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-22 08:48 , Processed in 0.071726 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表