通信工程毕设 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32

这篇具有很好参考价值的文章主要介绍了通信工程毕设 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


0 前言

🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩 基于单片机的自动写字机器人设计与实现

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:5分

1 简介

基于RTthread的写字机控制系统,采用独立研发的运动控制系统,结合RTT的多线程,将运动控制分解,速度前馈、折线速度平滑优化。AB32VG1开发板作为UI交互和sd卡gc文件读取,采用串口将运动命令发送给STM32。STM32负责将串口接收到的G命令进行解析,运动计算、控制输出P合适的PWM频率和脉冲个数给4个电机。运动控制算法完全独立创作。 Halo项目是我9月初时候的一个自研3D打印机的固件,前期在工作中接触到Marlin(一款优秀的开源3D打印固件,提供了丰富的扩展功能,拥有完整成熟的生态),遂想自研一款基于国产芯片和操作系统的3D打印系统,能提供在咱国产的芯片中方便移植与运行,提供3D打印所需的所有功能,降低硬件成本和软件适配成本。

2 主要器件

  • STM32F4单片机
  • AB32VG1单片机
  • RT-Thread物联网操作系统
  • SD卡文件读取与发送
  • 速度前馈、折角优化、加速处理等算法

3 实现效果

通信工程毕设 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32,单片机
通信工程毕设 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32,单片机
通信工程毕设 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32,单片机

4 硬件设计

总体框架

AB32V负责GUI和SD卡文件,STM32负责运动控制

最初设想是采用两块AB32的板子,一个负责GUI人机交互和SD卡文件读取与发送,一块负责接收Gcode命令,完成速度前馈、折角优化、加速处理等算法,实现完整的运动控制算法。但实际在AB32上跑控制时,发现浮点运算会导致异常的问题,同时打印日志都经常遇到栈溢出导致系统崩溃,因此将运动控制算法移植到STM32F4的板子上运行,控制效果良好。

通信工程毕设 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32,单片机

AB32VG1主控MCU

简介

开发板采用中科蓝讯的32位RISC-V指令集的AB32VG1型号MCU,主频120M。MCU有8M的Flash,和192K SRAM。支持3.0V-5.0V供电。
与一般MCU不同的是,这款MCU具有MPU模块,就是电源管理模块,支持Charge电路、BUCK电路、LDO电路等等,手册第十页给出了MPU模块的详细参数。
通信工程毕设 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32,单片机
开发环境搭建

根据官方的指导,使用的是RT-thread官方stduio平台,先更新软件源代码至最新版,下载中科蓝讯软件包,下载RISC-V-GCC工具链,编译程序会用到。

通信工程毕设 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32,单片机

软件包配置

通信工程毕设 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32,单片机
接下来选择我们本次实验用到的软件包,wavplayer软件包、optparse软件包和multibutton软件包,实现通过板载按键控制声音的播放语音量的增减。
通信工程毕设 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32,单片机
然后对软件包进行简单配置,按键的示例代码可以勾选也可以不勾选,后面要对此进行修改,改为评测板上的用户按键,optparse软件包默认即可。
通信工程毕设 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32,单片机

5 软件说明

总体框架

通信工程毕设 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32,单片机
代码树

通信工程毕设 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32,单片机

6 部分核心代码

int main(void)
{
    rt_thread_mdelay(1000);
    serial_thread_init(NULL);
    while(1){
        //debug_error("Insufficient system memory");
        while(refresh_file_names("/") == 0){
            rt_thread_mdelay(1000);
        }
        uart_lcd_thread_init();
        rt_thread_mdelay(100);
        gui_into_print_list(NULL);
        while(1){
            rt_thread_mdelay(1000);;
        }
    }
    g_gcode_ringbuff = ringbuff_create(sizeof(uint8_t), 4096);
    if(g_gcode_ringbuff == NULL){
        debug_error("Insufficient system memory");
        while(1);
    }
    while(1){
        rt_thread_mdelay(1000);
        debug_info("rt - thread\r\n");
    }
    while (1)
    {
        list_cur_dir_files("/");

        if(dfs_file_open(&s_fd, get_cur_dif_file_name(0), O_RDONLY) < 0){
            debug_info("open file %s error", get_cur_dif_file_name(0));
            continue;
        }
        debug_info("open file %s ok", get_cur_dif_file_name(0));
        int read_bytes;
        uint8_t buff[512];
        int idx = 0;
        do{
            memset(buff, 0, sizeof(buff));
            read_bytes = dfs_file_read(&s_fd, buff, sizeof(buff));
            while(ringbuff_remin(g_gcode_ringbuff) < read_bytes){
                rt_thread_yield();
            }
            for(int i = 0; i < read_bytes; i++){
                ringbuff_push(g_gcode_ringbuff, &buff[i]);
            }
        }while(read_bytes > 0);
        dfs_file_close(&s_fd);
    }

    return RT_EOK;
}
/* 定时器超时回调函数 */
#if (defined SOC_AB32VG1)
RT_SECTION(".irq.timer")
#endif
static rt_err_t step_run_schdule(rt_device_t dev, rt_size_t size)
{
    extern motion_control_t *motion_control;
    if((motion_control->motion_step_z.ops->is_motion(&(motion_control->motion_step_z)) == true) ||
            (ringbuff_is_empty(motion_control->motion_step_z.step_drv->pulse_list) == false)){
        motion_control->motion_step_z.step_drv->ops-> \
                        timer_schdule(motion_control->motion_step_z.step_drv);

        return RT_EOK;
    }

    motion_control->motion_step_x.step_drv->ops-> \
            timer_schdule(motion_control->motion_step_x.step_drv);
    motion_control->motion_step_y.step_drv->ops-> \
            timer_schdule(motion_control->motion_step_y.step_drv);
    motion_control->motion_step_y_1.step_drv->ops-> \
                timer_schdule(motion_control->motion_step_y_1.step_drv);

    return RT_EOK;
}


/* 初始化挤出机 */
void fdm_extruder_init(void)
{
    if(false == temperature_register(&s_temperature_ntc, temperature_type_ntc)){
        return;
    }

    /* 初始化传感器接口 */
    if(false == temperature_init(&s_temperature_ntc,            /* 描述符 */
                                 TEMPERATURE_NTC_ADC_DEV_NAME,  /* 驱动名称 */
                                 TEMPERATURE_NTC_ADC_DEV_CHANNEL, /* 通道号 */
                                 12,                            /* adc精度 */
                                 ntc_mode_zm_1460,              /* ntc传感器型号 */
                                 4700)){                        /* 上拉电阻阻值 */

    }
}

void fdm_printer_test(void)
{
    /* 初始化所有的温度传感器 */
    //fdm_extruder_init();

    rt_pin_mode(49, PIN_MODE_OUTPUT);
    rt_pin_write(49, PIN_HIGH);

#if 0
    heater_t *heater;
    heater = heater_create(pid_type_position);
    /* 设置pid的三个参数,输出最大、最小值 */
    heater->pid->ops->init(heater->pid, 0.5, 0.5, 1, 100, 0);
    /* 设置调节的目标值 */
    heater->pid->ops->target_set(heater->pid, 30);
    /* 绑定温度传感器,设置pid的计算周期 */
    heater->ops->init(heater, 1, true, 3000, &s_temperature_ntc);
    /* 开始软件定时器 */
    heater->ops->start(heater);
#endif
    hard_task_t *hard_task;
    /* 创建硬实时任务对象 */
    hard_task = hard_task_creater();

    hard_task->ops->init(hard_task, STEP_SCHDULE_HWTIMER_DEV_NAME,
                         STEP_SCHDULE_TIMER_FREQ);//
    hard_task->ops->set_run(hard_task, step_run_schdule);

    hard_task->ops->start(hard_task, STEP_SCHDULE_FREQ);
}

7 最后

🔥 项目分享与指导:https://gitee.com/sinonfin/sharing文章来源地址https://www.toymoban.com/news/detail-791655.html

到了这里,关于通信工程毕设 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通信工程毕设 基于Stm32的便携体测仪(心率 体温) - 单片机 嵌入式 物联网

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(23)
  • 通信工程毕设 Stm32 WIFI智能家居温湿度和烟雾检测系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月02日
    浏览(27)
  • [物联网工程]基于Protues仿真平台的C51/2单片机蓝牙串口通信控制继电器实验

    目录 实验目的 实验内容 仿真部分 实战部分 环境搭建 软件下载 仿真实验过程 模拟电路仿真 打开Proteus并创建新项目 绘制仿真电路图 程序实现 程序编写 程序导入 运行仿真 真实设备实战 硬件连接 程序实现 程序编写 程序导入 运行验证 总结拓展 掌握AT89C51蓝牙通信的工作原

    2024年03月20日
    浏览(24)
  • 【毕设选题技巧分享】单片机 嵌入式 物联网 电子工程毕设如何选题

    每年毕业季最苦的就是学生了,学校课程教不了什么有用的东西,毕设系统里林林总总的题目让人看得眼花,不同的选题可能决定你未来几个月轻轻松松还是呕心沥血地完成毕设,以及最后是否能拿到不错的分数顺利毕业,本期来分享一些选题技巧,希望能帮助到同学们!

    2024年01月22日
    浏览(23)
  • 通信工程毕设 stm32人脸识别快递柜系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(27)
  • 【单片机毕设选题】 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月02日
    浏览(36)
  • 通信工程毕设 stm32的人体健康状态检测系统(项目开源)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年03月14日
    浏览(23)
  • 通信工程毕设 stm32与深度学习口罩佩戴检测系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(24)
  • 通信工程毕设 stm32与GSM的远程无线智能报警系统(项目开源)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(27)
  • 通信工程毕设 stm32 wifi远程可视化与农业灌溉系统(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包