单片机项目分享 单片机自动写字机器人设计与实现 - 物联网 嵌入式 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,单片机文章来源地址https://www.toymoban.com/news/detail-832603.html

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 最后

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

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

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

相关文章

  • 物联网项目分享 单片机 图像分类 智能识别机器人 - 物联网 深度学习 AI

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

    2024年02月21日
    浏览(20)
  • stm32毕设分享 单片机 图像分类 智能识别机器人 - 物联网 深度学习 AI

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

    2024年01月16日
    浏览(34)
  • 汪老师分享 - 51单片机具有避障控制及路径规划功能的清洁机器人设计

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

    2024年02月03日
    浏览(17)
  • 单片机项目分享 单片机(stm32)远程智能宠物喂养系统 - 物联网 esp8266

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

    2024年02月19日
    浏览(35)
  • 单片机项目分享 stm32机器视觉的人脸识别系统 - 单片机 物联网 嵌入式

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

    2024年01月22日
    浏览(36)
  • 单片机项目分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

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

    2024年02月19日
    浏览(44)
  • 单片机项目分享 基于Stm32的家庭智能监控系统 - 单片机 图像识别 人体检测 AI

    hr style=\\\" border:solid; width:100px; height:1px;\\\" color=#000000 size=1\\\" 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最

    2024年01月16日
    浏览(29)
  • 单片机项目分享 stm32机器视觉的口罩佩戴检测系统 - 单片机 物联网 嵌入式

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

    2024年02月22日
    浏览(29)
  • 【毕业设计】23-基于单片机的自动避障机器人设计(原理图+源代码+仿真+论文+答辩PPT)

    主要内容: 理解并掌握单片机的基本知识;设计一款能够自动避障的机器人。 基本要求: 1、掌握单片机的发展情况以及它的工作原理和基本构造。 2、要求所设计的机器人能够自动避障。 3、对系统的精度和可靠性等进行了测试。 1.原理图工程文件 2.源代码工程文件 3.仿真

    2024年02月04日
    浏览(27)
  • 单片机项目分享 单片机家用燃气的可视化实时监控报警仪 - 物联网 嵌入式 stm32

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

    2024年02月22日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包