# pick_framwork **Repository Path**: jl_-team/pick_framwork ## Basic Information - **Project Name**: pick_framwork - **Description**: 工件采摘系统框架 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-07-16 - **Last Updated**: 2025-09-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Pick_Framework ## 引言 - 此套程序框架可适用于所有中小型嵌入式系统软件,大型嵌入式系统软件建议使用MVP框架+RTOS - 如未经作者本人授权禁止商用,违者必究 ## 框架总览 本套框架使用分层分离理念设计,由Driver层统一管理底层并向上提供标准的处理接口,使得应用层与底层分离,无论底层如何变化都是万变不离其宗,这种方式设计架构最适合硬件频繁变更的项目,当然,也会耗费更多精力,如若后续增加新的硬件方案,请参照运动单元框架或显示框架写出新的硬件方案框架,防止发生变更。 ## 运动单元框架 请参照Doc/Motion.md ## 显示框架 请参照Doc/Display.md、Doc/Pmg.md ## 硬件资源分配 - TIM1:直流减速电机电机XY轴使用 - TIM2:直流无刷电机、步进电机使用 - TIM3:电机(X)Y坐标输入捕获使用 主优先级0 抢占优先级0 - TIM4:电机Z轴使用 - TIM5:软件定时器使用 主优先级1 抢占优先级1 - TIM6:机械爪(舵机)使用 主优先级2 抢占优先级0 - TIM7:使用数码管作为显示器时的刷新定时器 主优先级1 抢占优先级2 ## 更新记录 ### 2022-07-16 - 修复Z轴舵机无法使用问题 - 更改软件定时器时间基准为TIM5 - 修复rocker驱动的touch事件异常 - 修改了一些注释 - 删除了location.c和location.h(本来就没有写任何东西) - 初步写出了电机驱动初始化模型(待完善) ### 2022-07-17 #### 10:00 - Display驱动新增Display函数,耦合三款显示器 - Hard层增加软件i2c,即添加soft_iic.h与soft_iic.c - 将typedefs.h中的指针函数定义移动到了对应的h文件中,如motor_enable_f移动到了motor.h - Hard层添加key.c key.h,抽象出来操作函数供input.c调用 - 将Input放到了Driver层 - 新增文件Doc/Motion.md #### 15:40 - 将Input重新移动到Hard层 - 修改lcd12864显示红色绿色工件函数,统一用LCD_Draw_Object函数显示,方便拓展,用type宏定义 - typedefs.h新增object_type_t枚举,object_pos_t结构体 - 修改了一些注释 - Display增加了统一接口控制函数Display_Control,但保留了原来的接口函数,为了适配以前的界面,什么时候有空适配以前的界面了,就把这些接口取消掉 - 修改systick.c 增加Delay_Init函数 - 修改iic.c 修改iic.h - 增加TOF250驱动 ### 2022-07-18 #### 17:44 - 修改camera_com摄像头通讯组件,添加注释,修改整合,添加了检查摄像头是否存在函数 - 增加了page_check.c界面,支持自检外设,目前支持自检:机械爪,电机,编码器,激光测距,压力传感器,摇杆,摄像头 - 增加了capboard驱动且适配到了motor - 添加gp2y驱动,并适配到motor,有点小精度问题 - 添加tof250驱动,并适配到motor,已验证无误 #### 18:39 - 更新Digitron_Show函数,并发现数码管显示问题,暂时无法解决,原因是主函数耗时过久,可以考虑将数码管放到定时器去做 ### 2022-07-19 - 修改page_check.c,更改等待电机处理i的值,否则在非capture时会出现等很久 - 修改Display中关于数码管的调用 - 更新Z轴抽风BUG,其实是软件定时器忘记清零 - 实验Capture获取位置无误 ->手动采摘 - 实验Capboard获取位置无误 ->手动采摘 - 实验TOF250获取位置无误 ->手动采摘 - 修改daemon文件,使其支持等待周期 - Digitron_Show函数取消整数位数参数,在函数内部实现计算 - 数码管问题仍未解决,后期可以考虑增加小型rtos解决这个问题 - 初步写出GP2Y的算法,待完善... - page_check界面增加Z轴电机测试 ### 2022-07-20 & 2022-07-21 - 完善GP2Y算法 - 初步测试GP2Y以及TOF250算法精度,略微有偏差,后期修改,大概都是偏差**-10pos**左右 - 修改GP2Y驱动,增加电压值获取 - 修改自检界面,增加GP2Y电压值显示,更新distance单位为mm - 尝试增加SPI-DMA功能,暂时没实验成功,后期看情况要不要完善 - 将电机初始化部分抽象出来一层,由pwm层向motor提供初始化函数 - typedefs增加检测函数指针是否为空并运行宏 - 将Motor驱动中的定位电机部分单独抽象出来一个location驱动 - GP2Y,CAPBOARD,TOF250统一由location管理,并顺应location驱动框架 - 增加hardware->pwm_z - 增加hardware->capture - 增加hardware->pwm_gear - 增加hardware->pwm_brushless(测试成功) - 将output中的关于电机引脚初始化函数移动到对应的pwm抽象层 - 将input中的输入捕获移动到capture文件中 - capture文件中增加无刷电机的输入捕获部分(测试失败,原厂例程也进不去中断,初步判断硬件问题) - 增加了一些函数与文件注释 ### 2022-07-22 - capture取消对减速和无刷电机不同的支持,合并为一个支持,因为硬件便是如此 - pwm_z函数后缀加上old表明老款板子驱动,暂未支持新板子驱动 - 增加步进电机硬件->pwm_stepper - DOC文件夹更新,添加一些说明 ### 2022-07-26 - 摄像头通讯组件增加颜色形状识别数据支持 - 运动单元增加REGION_UP_POS宏定义,可以修改区域扫描每次上升高度 ### 2022-07-27 - 增加对新板子的Z轴支持,放入了pwm直流减速电机硬件层 - motion运动单元支持Z轴设置方向 - motor抽象层增加Z轴设置方向函数 - pwm_z硬件支持层更名为pwm_z_old - 支持了无刷电机的输入捕获 - Display驱动添加对12864清除某行的命令 ### 2022-07-28 - 修订pwm_z_old,使其兼容新版Z轴驱动 - rocker驱动修正了可能获取不到release的情况 - 修订了region_config应用的部分定义 - motion增加patrol功能,目前z暂不支持圆形 - motion组件修复了Z轴可能会抽风的bug - damon应用增加了没有PUT版本的Z轴伸缩功能 ### 2022-07-29 - daemon应用去除了根据界面类型操作的判定 - motion应用的patrol功能支持了圆形 - 修改了region_config应用以使motion功能支持圆形 - 修复了motion应用中的patrol功能中的圆形不能二次运行的问题 ### 2022-07-30 - digitron硬件层完善,支持了小数点显示,支持了字母显示 - digitron增加刷新函数,在定时器中进行 - 界面管理器支持全局事件 - 界面管理器取消设置全局事件接口 ### 2022-07-31 - 更新了中断优先级 - 更新了按钮定义 - 界面增加开始运行和停止运行标志位,更好兼容数码管应用 - 按钮驱动支持数字事件触发,更加灵活 ### 2022-08-02 - 电机取消XY不能一起使能的机制 - motion运动单元取消了patrol模式 - 电机增加设置速度接口 ### 2022-08-06 - 修复区域设定bug - 数码管显示未知符号时用‘-’代替 ### 2022-08-08 - 修复新版Z轴无法动的bug - 增加XY轴是否允许同步的校验 - 优化了运动模块处理函数中对不同运动模式的处理方式 - 对一些可能需要同步电机运行的模式,根据是否允许同步,选择不同的处理函数 ### 2022-08-09 - 修复运动单元同步复位函数无法复位 ### 2022-08-11 - 运动单元模块增加快速操作函数,使能、方向、位置获取等函数接口不变,如果使用快速操作,则调用Motion_LoadFast,如果退出快速操作,则调用Motion_ExitFast - 修复电机多次起停坐标获取误差的bug - 修改区域边缘点计算函数名并修改调用位置 - 软件定时器增加自由定时器,即做什么都行 - 修改三角区域边缘点计算函数 - 删除hard/pwm文件夹 - 修改了servo的默认最大值默认最小值 - 增加了一些注释 ### 2022-08-12 - 修复XY允许同步时区域扫描x轴抽风的bug - 增加Z轴开机自动复位 - 增加ADS7950驱动 - 修改电容极板对应坐标方式为电压对应,而不是adc原始数据,更好的适配不同分辨率的adc ### 2022-08-13 - 运动单元使能机制更新 - 修复Z轴开机无法自动复位 ### 2022-08-17 - typedefs文件添加取中位数宏,具体用法见注释 - 修改ads1118和ads7950读取函数 - 修改capboard读取函数 - 修改gp2y读取函数 - 修改location中的capboard获取坐标函数 - 修复旧板子Z轴开机前伸一段时间bug - 电机操作模式为none时不获取位置信息 ### 2022-08-18 - 修复motion运动单元未复位时,复位后设置为none,y轴坐标为0的bug - 重构数码管显示算法 - 修改数码管定时器时间基数 - 修复motion运动单元倒三角区域扫描bug `很高兴能陪你到这里,期待你的大展身手---Pick-Framework` ### TODO - [ ] lcd1602硬件层(赛题没有出 暂时不做 - [ ] Display-lcd1602显示适配(赛题没有出 暂时不做 # 联系方式 Email:aiyy0331@126.com Phone:15350568110