迪文科技论坛

 找回密码
 立即注册
搜索
查看: 1114|回复: 1

【开源】基于T5L的物联开发套件

[复制链接]

4

主题

6

回帖

511

积分

高级会员

Rank: 4

积分
511
发表于 2024-4-24 15:10:03 | 显示全部楼层 |阅读模式
     本项目是基于T5L1芯片设计的一款多功能物联领域的学习,测试,开发综合套件

板子上扩展了如下接口:
1.USB串口,用的ch340g芯片,接在T5L的串口1,用于在线烧录程序或者扩展esp wifi模块等
2.4.3寸的触摸液晶电容屏
3.SD卡接口,用于批量下载程序
4.音频喇叭接口
5.PWM信号接口
6.RGB彩灯接口
7.环境感知接口
8.时钟芯片接口
9.人体感应接口
10.wifi模块接口(也可以外带OV系列的摄像头)
11.ADC采样接口
12.温湿度传感器接口
13.独立按键接口
14.LED跑马灯
15.IR红外收发接口
16.继电器接口
17.蜂鸣器接口
18.直流电机接口
大概示意图如下所示:

板子的背面实物图如下:



其中外扩的wifi模块为esp32,可以支持外带一个OV系列摄像头的(比如OV2640等),原理图如下所示:


下面来看程序上的设计

用到了100多张图标素材,如下所示:


用到了50张图片素材,截取一部分如下所示:


仪器开机之后,是一段开机动画


接下来是部件自检流程


自检完后,进入到密码验证界面


密码验证成功后,就会进入到主界面,主界面是显示一些仪器的状态,比如wifi状态,以及还有菜单和外设俩大功能入口


我们先来看菜单界面,主要有6个菜单项,分别为wifi配网, 时钟设置, 密码修改, 版本信息, 恢复出厂, 通用设置



wifi配网界面如下:
主要是输入wifi名称,wifi密码,设备码等


然后是时钟设置界面,可以箭头设置也可以滚轮设置:


然后是密码修改界面:


然后是版本信息:


然后是恢复出厂设置功能:


最后一个菜单项是基本设置:


再接着进入外设应用功能看看,里面分为了"开关型", "数值型", "环境型", "媒体型"等四个tab选项卡页面

开关型如下,主要是操控蜂鸣器,LED灯,直流电机等开关型外设


数值型如下,主要是RGB彩灯,PWM调速, IR红外灯预留


环境型如下,主要是ADC电压, 光照, 温湿度曲线等预留


最后是媒体型,就是OV摄像头的预留


最后是一个空闲界面:


然后C51程序上的难点就是和wifi模块的交互了,以及获取jpg图片如何显示在迪文屏上
下面就是jpg图片显示的核心代码

void sys_draw_jpg(u16 vp,u8 *jpg_data,u32 data_len)
{
        u32 i;
        
        for(i=0;i<data_len;i++)
        {
                if((jpg_data==0xFF)&&(jpg_data[i+1]==0xD8))
                        break;
        }
        if(i==data_len)
                return;
        
        data_len = (data_len-i)/2+1;
        sys_write_vp(vp+2,jpg_data+i,data_len);
        data_len |= 0x5AA50000;
        sys_write_vp(vp,(u8*)&data_len,2);
}


以及动态或者外设的模板接口

#define PERIPHERAL_TEMPLATE "[\
{\"icon\":\"led\",\"name\":\"LED1\",\"pid\":500},\
{\"icon\":\"relay\",\"name\":\"RELAY1\",\"pid\":501},\
{\"icon\":\"motor\",\"name\":\"MOTOR1\",\"pid\":502}]"

char * user_handler(u16 cmd,u8 * val)
{
        char * respond = 0;
        
        val = val;
        if(cmd==USER_CMD_GET_TEMPLATE)
                respond = PERIPHERAL_TEMPLATE;

        
        
        return respond;
}

外设驱动上就以RGB彩灯为例:

void rgbled_send_zero()
{
         u8 i;
        
         RGBLED_SDA = 0;
         for(i=0;i<32;i++)
         {
            RGBLED_SCL = 0;
                        sys_delay_about_us(200);
                        RGBLED_SCL = 1;
                        sys_delay_about_us(200);               
         }
}


u8 rgbled_reverse_data(u8 dat)
{

        dat = ((~dat) & 0xC0) >> 6;
        return dat;
}


void rgbled_send_data(u32 dat)
{
        u8 i;
         
        for(i=0;i<32;i++)
        {
                if(dat&0x80000000)
                        RGBLED_SDA = 1;
                else
                        RGBLED_SDA = 0;
               
                dat <<= 1;
                RGBLED_SCL = 0;
                sys_delay_about_us(200);
                RGBLED_SCL = 1;
                sys_delay_about_us(200);
        }        
}

//数据处理
void rgbled_process(u8 r,u8 g,u8 b)
{
        u32 dat = 0;
        
        dat |= (u32)0x03 << 30;  
        dat |= (u32)rgbled_reverse_data(b) << 28;
        dat |= (u32)rgbled_reverse_data(g) << 26;
        dat |= (u32)rgbled_reverse_data(r) << 24;
        dat |= (u32)b << 16;
        dat |= (u32)g << 8;
        dat |= r;
        
        rgbled_send_data(dat);
}

void rgbled_show(u8 r,u8 g,u8 b)
{
        P2MDOUT |= 0x0C;   
        rgbled_send_zero();
        rgbled_process(r, g, b);
  rgbled_process(r, g, b);
}

void rgbled_init(void)
{
        rgbled_show(0,0,0);
}

然后用到的iic协议驱动代码如下


#include "iic.h"


sbit IIC_SDA_PIN = P2^2;
sbit IIC_SCL_PIN = P2^3;


#define SDA_IN()  P2MDOUT&=0xFB
#define SDA_OUT() P2MDOUT|=0x04

#define IIC_SCL   IIC_SCL_PIN
#define IIC_SDA   IIC_SDA_PIN
#define READ_SDA  IIC_SDA_PIN


#define delay_us                sys_delay_about_us



void IIC_Init(void)
{
        P2MDOUT |= 0x0C;
        IIC_SDA = 1;
        IIC_SCL = 1;  
}


void IIC_Start(void)
{
        SDA_OUT();   
        IIC_SDA=1;                    
        IIC_SCL=1;
        delay_us(4);
         IIC_SDA=0;
        delay_us(4);
        IIC_SCL=0;
}         

void IIC_Stop(void)
{
        SDA_OUT();
        IIC_SCL=0;
        IIC_SDA=0;
         delay_us(4);
        IIC_SCL=1;
        delay_us(4);                        
        IIC_SDA=1;                           
}

u8 IIC_Wait_Ack(void)
{
        u8 ucErrTime=0;
        SDA_IN();
        IIC_SDA=1;delay_us(1);           
        IIC_SCL=1;delay_us(1);         
        while(READ_SDA)
        {
                ucErrTime++;
                if(ucErrTime>250)
                {
                        IIC_Stop();
                        return 1;
                }
        }
        IIC_SCL=0;           
        return 0;  
}


void IIC_Ack(void)
{
        IIC_SCL=0;
        SDA_OUT();
        IIC_SDA=0;
        delay_us(2);
        IIC_SCL=1;
        delay_us(2);
        IIC_SCL=0;
}

            
void IIC_NAck(void)
{
        IIC_SCL=0;
        SDA_OUT();
        IIC_SDA=1;
        delay_us(2);
        IIC_SCL=1;
        delay_us(2);
        IIC_SCL=0;
}               

                  
void IIC_Send_Byte(u8 txd)
{                        
        u8 t;   
        SDA_OUT();            
        IIC_SCL=0;
        for(t=0;t<8;t++)
        {              
                IIC_SDA=(txd&0x80)>>7;
                txd<<=1;           
                delay_us(2);  
                IIC_SCL=1;
                delay_us(2);
                IIC_SCL=0;        
                delay_us(2);
        }         
}

u8 IIC_Read_Byte(u8 ack)
{
        u8 i,receive=0;
        SDA_IN();
        for(i=0;i<8;i++ )
        {
                IIC_SCL=0;
                delay_us(2);
                IIC_SCL=1;
                receive<<=1;
                if(READ_SDA)receive++;   
                delay_us(1);
        }                                         
        if (!ack)
                        IIC_NAck();
        else
                        IIC_Ack();
        return receive;
}


视频演示地址: https://b23.tv/BXJYVgW

gui参考代码:
51参考代码:



本帖子中包含更多资源

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

x
回复

使用道具 举报

3

主题

2

回帖

196

积分

注册会员

Rank: 2

积分
196
发表于 2024-4-25 08:29:56 来自手机 | 显示全部楼层
厉害,之前也想过这么玩,用esp32挂载更多外设,然后中转到迪文屏上
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 05:08 , Processed in 0.092389 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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