项目硬件:
1.大联大世平基于NXP传感器
2.USBHID通信芯片
3.低通滤波器输出信号调制器
4.DHT11传感器
5.大气压传感器
6.六轴陀螺仪
项目软件:
1.x86 QT上位机
项目功能:
1.通过DHT11温湿度传感器采集环境温度与湿度
2.通过AD模数采集器采集模拟信号
3.通过大气压传感器采集大气压值
4.通过定时器PWM外设调制输出不同频率与占空比的周期波形
5.通过六轴陀螺仪采集三轴加速度和三轴角度值
项目框图:
流程图:
QT程序主界面1,温湿度/大气压强:
左图曲线为15个时间点的温湿度变化曲线,右图为实时计数仪表盘,红色指针为温度,蓝色指针为湿度,黄色指针为大气压强
QT程序主界面2,简易示波器:
因为时间仓促,没有对横纵坐标值进行优化,大概框架为横坐标1000个点表示999个AD模拟信号采集个数,纵坐标400个点表示采集值,此界面为时分信号采集界面,按原计划本来想做频分采集界面,因为时间紧迫而没有完成。时分采集界面支持两种模式,单个数值采集添加模式和帧采集模式:
-
单个数值采集添加模式表示波形图界面每次增加一个数值,增加后所有坐标值往左平移一格,最左边坐标值舍弃,一个时间单位刷新1个数据,以此类推;
-帧采集模式表示波形图每次添加1000个数值,此1000个数值为同一帧,添加到波形图上,一个时间单位刷新一帧1000个数据,以此类推;
QT程序主界面3,控制PWM波形输出:
可以控制PWM波形的输出间隔和占空比,非常简单的一个功能,其中输出间隔分为粗调和微调,粗调为100倍分频,微调为1倍分频,直接带过,通过示波器查看PWM输出效果,先将频率设高一点,调整占空比:
然后将频率降低,同样调整占空比:
QT程序主界面4,六轴陀螺仪输出:
十字坐标表示三轴角度,进度条表示加速度,使用的器件为I2C接口的MPU6050六轴陀螺仪。
QT上位机程序:
2021-9-28 11:43 上传
点击文件名下载附件
2021-9-28 11:42 上传
点击文件名下载附件
2021-9-28 11:42 上传
点击文件名下载附件
2021-9-28 11:42 上传
点击文件名下载附件
DHT11驱动代码:
- void DHT11_Rst(void)
- {
- DHT11_IO_OUT();
- DHT11_DQ_OUT(0);
- Delay_ms(20);
- DHT11_DQ_OUT(1);
- Delay_us(30);
- }
- unsigned char DHT11_Check()
- {
- unsigned char retry=0;
- DHT11_IO_IN();
- while (DHT11_DQ_IN&&retry<100)
- {
- retry++;
- Delay_us(1);
- };
- if(retry>=100)return 1;
- else retry=0;
- while (!DHT11_DQ_IN&&retry<100)
- {
- retry++;
- Delay_us(1);
- };
- if(retry>=100)return 1;
- return 0;
- }
- unsigned char DHT11_Read_Bit(void)
- {
- unsigned char retry=0;
- while(DHT11_DQ_IN&&retry<100)
- {
- retry++;
- Delay_us(1);
- }
- retry=0;
- while(!DHT11_DQ_IN&&retry<100)
- {
- retry++;
- Delay_us(1);
- }
- Delay_us(40);
- if(DHT11_DQ_IN)return 1;
- else return 0;
- }
- unsigned char DHT11_Read_Byte(void)
- {
- unsigned char i,dat;
- dat=0;
- for (i=0;i<8;i++)
- {
- dat<<=1;
- dat|=DHT11_Read_Bit();
- }
- return dat;
- }
- unsigned char DHT11_Read_Data(unsigned char *temp,unsigned char *humi)
- {
- unsigned char buf[5];
- unsigned char i;
- DHT11_Rst();
- if(DHT11_Check()==0)
- {
- for(i=0;i<5;i++)
- {
- buf[i]=DHT11_Read_Byte();
- }
- if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
- {
- *humi=buf[0];
- *temp=buf[2];
- }
- }else return 1;
- return 0;
- }
- void I2C_Start(void)
- {
- SDA_OUT();
- I2C_SDA(1);
- I2C_SCL(1);
- Delay_us(4);
- I2C_SDA(0);
- Delay_us(4);
- I2C_SCL(0);
- }
- void I2C_Stop(void)
- {
- SDA_OUT();
- I2C_SCL(0);
- I2C_SDA(0);
- Delay_us(4);
- I2C_SCL(1);
- I2C_SDA(1);
- Delay_us(4);
- }
- unsigned char I2C_Wait_Ack(void)
- {
- unsigned char ucErrTime=0;
- SDA_IN();
- I2C_SDA(1);
- Delay_us(1);
- I2C_SCL(1);
- Delay_us(1);
- while(READ_SDA)
- {
- ucErrTime++;
- if(ucErrTime>250)
- {
- I2C_Stop();
- return 1;
- }
- }
- I2C_SCL(0);
- return 0;
- }
- //²úÉúACKÓ¦´ð
- void I2C_Ack(void)
- {
- I2C_SCL(0);
- SDA_OUT();
- I2C_SDA(0);
- Delay_us(2);
- I2C_SCL(1);
- Delay_us(2);
- I2C_SCL(0);
- }
- void I2C_NAck(void)
- {
- I2C_SCL(0);
- SDA_OUT();
- I2C_SDA(1);
- Delay_us(2);
- I2C_SCL(1);
- Delay_us(2);
- I2C_SCL(0);
- }
- void I2C_Send_Byte(unsigned char txd)
- {
- unsigned char t;
- SDA_OUT();
- I2C_SCL(0);
- for(t=0;t<8;t++)
- {
- I2C_SDA((txd&0x80)>>7);
- txd<<=1;
- Delay_us(2);
- I2C_SCL(1);
- Delay_us(2);
- I2C_SCL(0);
- Delay_us(2);
- }
- }
- unsigned char I2C_Read_Byte(unsigned char ack)
- {
- unsigned char i,receive=0;
- SDA_IN();
- for(i=0;i<8;i++ )
- {
- I2C_SCL(0);
- Delay_us(2);
- I2C_SCL(1);
- receive<<=1;
- if(READ_SDA)receive++;
- Delay_us(1);
- }
- if (!ack)
- I2C_NAck();//·¢ËÍnACK
- else
- I2C_Ack(); //·¢ËÍACK
- return receive;
- }
- uint8_t I2C_ReadAddr(uint8_t hardware_addr , uint8_t read_addr)
- {
- uint8_t temp=0;
- I2C_Start();
- I2C_Send_Byte(hardware_addr);
- I2C_Wait_Ack();
- I2C_Send_Byte(read_addr);
- I2C_Wait_Ack();
- I2C_Start();
- I2C_Send_Byte(hardware_addr + 1);
- I2C_Wait_Ack();
- temp = I2C_Read_Byte(0);
- I2C_Stop();
- return temp;
- }
- uint8_t I2C_WriteAddr(uint8_t hardware_addr , uint8_t write_addr, uint8_t write_data)
- {
- I2C_Start();
- I2C_Send_Byte(hardware_addr);
- I2C_Send_Byte(write_addr);
- I2C_Send_Byte(write_data);
- I2C_Stop();
- return 0;
- }
USBHID传输层报文(USBHID芯片代码,非K32W代码):
- #include "usbd_custom_hid_if.h"
- __ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END =
- {
- 0x06, 0x00, 0xff, // USAGE_PAGE (Vendor Defined Page 1) ???????????????
- 0x09, 0x01, // USAGE (Vendor Usage 1) ??????ID??
- 0xa1, 0x01, // COLLECTION (Application) ??????,???????0xc0???
- 0x09, 0x01, // USAGE (Vendor Usage 1)????????
- 0x15, 0x00, // LOGICAL_MINIMUM (0) ???????????0
- 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255) ???????????????255
- 0x95, 0x40, // REPORT_COUNT (64) ?????????,???64?
- 0x75, 0x08, // REPORT_SIZE (8) ??REPORT_SIZE
- 0x81, 0x02, // INPUT (Data,Var,Abs) ??USB??????PC???
- 0x09, 0x01, // USAGE (Vendor Usage 1) ??????????
- 0x15, 0x00, // LOGICAL_MINIMUM (0) ???????????0
- 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255) ???????????????255
- 0x95, 0x40, // REPORT_COUNT (64) ?????????,???64?
- 0x75, 0x08, // REPORT_SIZE (8) ????????8bit,????????????0~ffff ffff
- 0x91, 0x02, // OUTPUT (Data,Var,Abs) ??USB?????PC??????
- 0xc0 // END_COLLECTION ????
- };
- extern USBD_HandleTypeDef hUsbDeviceFS;
- static int8_t CUSTOM_HID_Init_FS(void);
- static int8_t CUSTOM_HID_DeInit_FS(void);
- static int8_t CUSTOM_HID_OutEvent_FS(uint8_t event_idx, uint8_t state);
- USBD_CUSTOM_HID_ItfTypeDef USBD_CustomHID_fops_FS =
- {
- CUSTOM_HID_ReportDesc_FS,
- CUSTOM_HID_Init_FS,
- CUSTOM_HID_DeInit_FS,
- CUSTOM_HID_OutEvent_FS
- };
- static int8_t CUSTOM_HID_Init_FS(void)
- {
- return (USBD_OK);
- }
- static int8_t CUSTOM_HID_DeInit_FS(void)
- {
- return (USBD_OK);
- }
- static int8_t CUSTOM_HID_OutEvent_FS(uint8_t event_idx, uint8_t state)
- {
- UNUSED(event_idx);
- UNUSED(state);
- USBD_CUSTOM_HID_ReceivePacket(&hUsbDeviceFS);
- return (USBD_OK);
- }
热门资料
热门活动
全部回复 0
暂无评论,快来抢沙发吧
针对电子行业逐渐呈现碎片化、客制化的趋势,大联大推出汇聚内外工程师,搭建互相帮助乐于分享,解决问题的首选技术平台----研发心中的翰林院【大大通】。 其中包含了大联大代理的上百条产品线、数百个方案,以及最新的产品信息和原厂新闻。 【大大通】的方案涵盖智能家居、智慧城市、穿戴装置、智慧医疗、车联网、电源等应用领域;除了大联大内部的方案,还有原厂的最新方案,以及行业优质 合作方案商(IDH)的方案,打通客户、原厂、IDH 以及大联大的FAE 之间的壁垒,搭建整个技术的生态圈。 除了大联大七百余位专业FAE在线上进行高效、专 业的技术支持,【大大通】更希望汇聚所有工程师一起分享和成长。客户可以更直接快速的了解方案、解答疑问、获取技术文档,从而缩短客户方案量产时间。
- 帖子 136
- 回复 47
评测文章
热帖
大家都在看的技术资料
举报
内容系网友发布,其中涉及到安全隐患的内容系网友个人行为,不代表面包板社区观点
关闭
站长推荐 /2
- 返回顶部
工具栏