Fillmore

  • 2019-07-17
  • 发表了主题帖: DIY智能车——“RoboMaster“,软件框架已开源

    本帖最后由 Fillmore 于 2019-7-17 10:56 编辑 hey,小伙伴们,夏天又到了~   在这炎热的夏天   你是否也有着自己无法停止的躁动与梦想?   比如,做一个...   会爆锤自己人的沙雕机器人   能吊射敌人的陆地无敌坦   堪称空中水龙的超能四轴飞行器   等等~~ 此内容由EEWORLD论坛网友Fillmore原创,如需转载或用于商业用途需征得作者同意并注明出处   那么...你的机会来啦~   RT-Thread·花样战车DIY活动 正式上线   除此之外,优胜者还有千元奖励!   想必大家已经迫不及待想看看参与细则,下面我们就进入正题吧。   关于战车   活动作品概况:基于机器视觉进行自动瞄准射击的智能战车   基本功能:遥控智能车 (必须完成)   本功能需要您完成底盘运动控制系统,进而通过底盘的电机控制战车能够前进、后退、左转、右转、旋转、加速、减速!并实现通过编码器反馈速度,通过PID算法控制速度。战车可以支持不同类型的底盘,如:麦克纳姆轮、后轮差速驱动、前轮舵机转向,后轮动力驱动等等。也支持通过PWM或者CAN进行控制的电机! 除此之外,还需要实现遥控系统,以达成使用遥控器对战车进行遥控指挥!我们可以支持大多数遥控器,比如:PS2遥控、航模遥控器、手机或PC通过Wi-Fi遥控!   高级功能:云台和射击功能 、自动识别目标   完成这一部分,参与者也许会遇到一些挑战,但只有遇到过挑战才能体会“会当凌绝顶”的快意不是吗?我们需要完成射击系统,通过二轴云台控制射击装置的运动,实现射击装置可上下、左右转动,以瞄准射击目标。支持红外射击(通过红外激光进行发射)、水弹射击(通过拨弹轮和摩擦轮控制射击,对机械要求高),以上射击方式可自选。我们将使用LED灯管或者LCD屏标识血量,被射中的战车可以显示失血。并实现战车在射击和被击中都会发出声音! 为了避免沙雕战车敌我不分的情况,我们还需要完成目标识别系统。这里需要通过摄像头进行图像采集,使用机器视觉对采集的图像进行目标识别,然后控制射击系统对目标进行射击!   扩展功能:平衡车、履带车、避障、路径规划、竞速、图像视觉、语音等 硬件准备:控制板(推荐STM32)、车模、底盘、电机、传感器(入群后,官方会给予参与者一定选购参考) 活动时间:7月8号——9月5号(从提供技术支持到完成小车制作) *RT-Thread官方将同步开发智能车软件框架、设计文档、实现代码完全开放。全程提供指导和技术支持,帮助大家完成DIY作品!   开源项目:https://github.com/yqiu2018/chariot_notice/blob/master/README.md  大家可以跟着一起做!   最近在用 RT-Thread 做智能车,发现有很多组件其实都是可以抽象出来的,实现只要写一次就好了,这样可以避免大家实现重复的功能。 项目地址:https://github.com/yqiu2018/chariot_notice/blob/master/README.md 虽然小车有很多: 1. 四轮驱动 2.神奇的麦克纳姆轮 3.小巧的两轮自平衡 4.两轮差速搭配一个万向轮 5.画风独特的自平衡自行车 但是其实都是不同电机搭配不同编码器,实现闭环电机控制,然后结合小车动力学模型和传感器信息,实现小车运动的闭环控制。 于是想想可以抽象一个框架出来,包含电机、编码器、动力学模型、PID算法、滤波算法等等,这样通过组合就能做出自己的小车了,大家也不用重复造轮子了,组装轮子就好了。 现在包含的模块有: 电机:直流电机 编码器:单相编码器 PID:增量式 PID 动力学模型:两轮差分、四轮差分、麦克纳姆轮、Ackerman 遥控器:PS2 手柄 现在可以用 PS2 手柄闭环控制小车运动了,之后有机会放个视频。  但是现在还不是很完善,欢迎喜欢做智能车的小伙伴提 PR 一起完善这个框架,之后说不定还可以用到机械臂上面,毕竟都是电机控制。  项目地址: https://github.com/RT-Thread-packages/rt-robot   交流请联系:

  • 发表了日志: DIY智能车——“RoboMaster“,软件框架已开源

  • 2019-07-12
  • 回复了主题帖: 记录——基于RTT在STM32上实现 USB 虚拟串口

    MamoYU 发表于 2019-7-11 13:43 没有图,不太理解~
    谢谢提醒 没注意到图坏了

  • 回复了主题帖: 我的电赛分享——塞翁失马焉知非福

    顶一下

  • 2019-07-09
  • 加入了学习《新版RTOS教程:15天入门RT-Thread内核》,观看 初识RT-Thread

  • 加入了学习《3天入门Persimmon UI,2天稿定产品界面开发》,观看 Persimmon教程2

  • 加入了学习《3天入门Persimmon UI,2天稿定产品界面开发》,观看 Persimmon教程1

  • 加入了学习《嵌入式操作系统》,观看 Introduction、Embedded Systems、Development of Embedded Systems、Embedded OS

  • 评论了课程: EEWORLD大学堂----RTOS培训最新版——15天入门RT-Thread内核

    6vision 发表于 2019-4-12 09:59 视频中的文件资源和源码哪里下载呀
    RT-Thread官网文档中心:https://www.rt-thread.org/document/site/ 下载中心:https://www.rt-thread.org/page/download.html 还有GitHub都可以

  • 2019-07-08
  • 加入了学习《3天入门Persimmon UI,2天稿定产品界面开发》,观看 Persimmon教程4

  • 加入了学习《3天入门Persimmon UI,2天稿定产品界面开发》,观看 Persimmon教程3

  • 2019-07-05
  • 发表了主题帖: 【智能战车DIY活动】带你完成“RoboMaster“

    本帖最后由 Fillmore 于 2019-7-5 17:29 编辑         hey,小伙伴们,夏天又到了~   在这炎热的夏天   你是否也有着自己无法停止的躁动与梦想?   比如,做一个...   会爆锤自己人的沙雕机器人   能吊射敌人的陆地无敌坦   堪称空中水龙的超能无人机   等等~~     那么...你的机会来啦~   RT-Thread·花样战车DIY活动 正式上线   除此之外,优胜者还有千元奖励! 想必大家已经迫不及待想看看参与细则,下面我们就进入正题吧。   关于战车   活动作品概况:基于机器视觉进行自动瞄准射击的智能战车   基本功能:遥控智能车 (必须完成)   本功能需要您完成底盘运动控制系统,进而通过底盘的电机控制战车能够前进、后退、左转、右转、旋转、加速、减速!并实现通过编码器反馈速度,通过PID算法控制速度。战车可以支持不同类型的底盘,如:麦克纳姆轮、后轮差速驱动、前轮舵机转向,后轮动力驱动等等。也支持通过PWM或者CAN进行控制的电机! 除此之外,还需要实现遥控系统,以达成使用遥控器对战车进行遥控指挥!我们可以支持大多数遥控器,比如:PS2遥控、航模遥控器、手机或PC通过Wi-Fi遥控!   高级功能:云台和射击功能 、自动识别目标   完成这一部分,参与者也许会遇到一些挑战,但只有遇到过挑战才能体会“会当凌绝顶”的快意不是吗?我们需要完成射击系统,通过二轴云台控制射击装置的运动,实现射击装置可上下、左右转动,以瞄准射击目标。支持红外射击(通过红外激光进行发射)、水弹射击(通过拨弹轮和摩擦轮控制射击,对机械要求高),以上射击方式可自选。我们将使用LED灯管或者LCD屏标识血量,被射中的战车可以显示失血。并实现战车在射击和被击中都会发出声音! 为了避免沙雕战车敌我不分的情况,我们还需要完成目标识别系统。这里需要通过摄像头进行图像采集,使用机器视觉对采集的图像进行目标识别,然后控制射击系统对目标进行射击!   扩展功能:平衡车、履带车、避障、路径规划、竞速、图像视觉、语音等 硬件准备:控制板(推荐STM32)、车模、底盘、电机、传感器(入群后,官方会给予参与者一定选购参考) 活动时间:7月8号——9月5号(从提供技术支持到完成小车制作) *RT-Thread官方将同步开发智能车软件框架、设计文档、实现代码完全开放。全程提供指导和技术支持,帮助大家完成DIY作品!     关于报名     报名时间:2019年7月4日——2019年7月15日 参与者要求: 1、具备一定的嵌入式开发经验 2、需2-3人组队参加 技术支持:RT-Thread官方将全程提供技术支持与指导 保证金缴纳:为了督促大家认真完成各自的DIY作品,被选中参与者,需缴纳100/人的保证金,完成基本功能——遥控智能车后退还! 报名方式:活动人数有限,我们在收到您的报名后会尽快进行审核,审核通过后我们的工作人员会在一周内与您取得联系! 报名链接:https://www.wenjuan.com/s/rUv6Jrt/     关于奖品 1、我们将给予前3名奖队伍 1000元 现金奖励!并颁发相关徽章。 2、凡入选队伍,均可获得一份参与奖!    

  • 发布了课程: 3天入门Persimmon UI,2天稿定产品界面开发

  • 2019-07-01
  • 发表了日志: 智能屏柿饼Pie使用体验(1)

  • 发表了主题帖: 智能屏柿饼Pie使用体验(1)

    由于之前只有C,C#开发经验,一开始对js不太熟悉,不过还好js和C的语法相似,研究起来也没有太大难度。 几天使用下来,对柿饼派的开发模式也算是熟悉了。Persimmon UI软件的帮助菜单可以下载官方的样例程序,跟着样例配合说明文档学习各个控件也很容易。 和VS开发C#神似,都是所见即所得,虽然每个控件还不像C#中那样配置灵活,功能强大,但相比同等量级的emwin、littleVGL等系统来说,使用起来实在太方便了。 图片类控件可以直接选择PC机本地资源,选择后自动添加到项目目录。 控件回调函数直接把函数名填在“调用属性”位置,然后在当前ui对应的js文件中添加同名函数即可。现在的控件调用功能相对单一,只有一个功能。以后如果加上按下,弹起,按住可执行不同的回调函数用起来就灵活多了。 总体来看,柿饼采用所见即所得开发方式,制作UI及其方便。比起市面上的成品串口屏用法还要简单,可以媲美组态屏的UI部分,启动速度比组态屏要快的多,这可能是rt-thread的功劳,市面上的组态屏底层大多是linux或者wince。 之前用DWIN串口屏开发UI系统,脚本用汇编很是痛苦。柿饼脚本用js,最起码可读性强多了,语法又接近常用的C语言,编写复杂逻辑要简单的多。 吐槽下,柿饼的下载速度略微慢了点,毕竟板载存储用的16MB nor flash,扇区擦写比较耗时,容量也有点小,可添加的资源有限。还有开机界面的rt-thread商标在真正的产品上很多客户可能无法接受,我们做的大多产品基本开机都要显示客户商标的,现在学习阶段可以不用管,希望以后这个页面是可自定义的。 柿饼通信方面稍微弱了点,对外只开放了两个串口和SPI的基本传输,协议要自己实现。之前做各种算法都是C实现的,js无法使用指针,基本不能直接用了,我们的下游设备基本都是用的modbus通信,这两天正在移植,希望通信速度可以跟的上,这个就看软件定时器的精度和响应速度了。   一些相关的资料我都是在这个公众号找来的

  • 2019-06-21
  • 发表了日志: 记录——基于RTT在STM32上实现 USB 虚拟串口

  • 发表了主题帖: 记录——基于RTT在STM32上实现 USB 虚拟串口

    记录一下我在正点原子 F429 阿波罗开发板上实现 USB 虚拟串口的过程,希望可以帮助到其他想要学习 USB 的人。 首先,我更新了一下 RT-Thread 的源代码(因为 RT-Thread 的代码更新很快,短时间内就有可能有很多的代码更新)。 然后我进入 rt-thread\bsp\stm32目录下,找到了正点原子 F429 阿波罗开发板对应的BSP stm32f429-atk-apollo。   然后我先看了一下这个 BSP 当前支持不支持 USB。我在目录下打开 Env 工具,输入 menuconfig 命令,查看了一下,发现在硬件配置的片上外设的配置菜单中没有配置 USB 的选项,看来这个 BSP 还不支持 USB 设备。   然后我想到,新的 STM32 BSP 所有的 BSP 都是用的同一份驱动,我去看一下有没有做好的 USB 驱动吧。然后我就打开了 rt-thread\bsp\stm32\libraries\HAL_Drivers 目录,如下所示,发现里面果然有 usb 的驱动文件,叫做 drv_usbd_fs.c。这就很好办了。   打开同一目录下的 Sconscript 脚本文件,查看一下这个驱动依赖什么配置,发现依赖于 BSP_USING_USBD_FS 这个配置。   既然有驱动,就一定有 BSP 已经支持了这个功能,我搜索了 stm32 目录下所有的 BSP ,看哪个 bsp 下有这个配置项。顺便看一下依赖关系。发现 F469 的 bsp 有这个配置项,看起来打开这个配置的同时,利用 select 命令也打开了 RT_USING_USB_DEVICE 这个配置。有了这段示例就好说了,只要在正点原子阿波罗的 bsp 下也添加这段配置就好了。   修改正点原子 F429 阿波罗 bsp 下 Kconfig 文件,添加这一段配置项。     然后就可以利用 Env 工具配置工程了。在 目录下输入 menuconfig 配置 usb,开启刚添加的 usb 驱动的配置项。   然后,配置 usb 的设备框架。开启虚拟串口。   然后保存并重新生成工程。 发现编译报错。看起来是硬件没有配置。需要打开 stm32CubMX 配置 usb 的硬件引脚。   打开 stm32f429-atk-apollo\board\CubeMX_Config 目录下 stm32CubMX 的工程,配置 usb.     发现开启 usb 功能之后,时钟配置报警告,我们再重新配置一下时钟。配置好之后,重新生成了一下代码。   由于更新了时钟树,所以还要把stm32f429-atk-apollo\board\CubeMX_Config\Src目录下main.c中的时钟配置函数SystemClock_Config更新到stm32f429-atk-apollo\board目录下的 board.c 文件中。   然后重新打开工程,编译,还是报错,cannot open source input file "stm32f4xx_hal_exti.h": No such file or directory ,我注释掉这个头文件重新尝试编译。再次编译,发现就没有问题了。   下载运行,然后输入 list_device 命令可以看到注册到系统中的两个 usb 相关的设备。   然后我在 main函数里添加了一段测试代码,编译下载运行。 #include <rtthread.h> #include <rtdevice.h>   int main(void) {     rt_device_t dev = RT_NULL;     char buf[] = "hello rt-thread!\r\n";       dev = rt_device_find("vcom");          if (dev)         rt_device_open(dev, RT_DEVICE_FLAG_RDWR);     else         return -RT_ERROR;          while (1)     {         rt_device_write(dev, 0, buf, rt_strlen(buf));         rt_thread_mdelay(500);     }       return RT_EOK; }   复制代码 连接开发板上的 USB_SLAVE 接口到电脑上,打开设备管理器,发现多了一个 USB 串行设备,用串口工具打开,就接收到 main 函数里发送过来的消息了 这样就在正点原子 F429 阿波罗开发板上实现了 USB 虚拟串口了。

  • 回复了主题帖: 【RT-Thread读书笔记】7-10章读书笔记

    支持楼主,支持RT-Thread

  • 2019-05-24
  • 发表了主题帖: 【分享】Flash 管理工具: FAL (Flash 抽象层)库

    之前做了一些关于 Flash 的开源组件,比如:EasyFlash,SFUD, EasyLogger(内部的 Flash 插件),经常会有些网友问我一些关于 Flash 的问题,比如:在 Flash 的使用过程相信大家会经常遇到 OTA 升级时如何对 Flash 进行分区,多个 Flash 如何集中管理,片外的 fatfs 文件系统能否跑在片内等。 今天跟大家分享一个运行在MCU上的 Flash 管理工具,名为 FAL(Flash 抽象层),它是 RT-Thread 开源的一个通用软件包,能够运行在裸机平台,也能无缝兼容 RT-Thread 系统。一起来看下它的特色。 介绍FAL (Flash Abstraction Layer) Flash 抽象层是对 Flash 及基于 Flash 的分区进行管理、操作的抽象层,对上层统一了 Flash 及 分区操作的 API ,并具有以下特性:支持静态可配置的分区表,并可关联多个 Flash 设备;分区表支持 自动装载 。避免在多固件项目,分区表被多次定义的问题;代码精简,对操作系统 无依赖 ,可运行于裸机平台,比如对资源有一定要求的 Bootloader;统一的操作接口。保证了文件系统、OTA、NVM(例如:EasyFlash) 等对 Flash 有一定依赖的组件,底层 Flash 驱动的可重用性;自带基于 Finsh/MSH 的测试命令,可以通过 Shell 按字节寻址的方式操作(读写擦) Flash 或分区,方便开发者进行调试、测试; FAL 框架图如下:http://bbs.21ic.com/data/attachment/forum/201905/21/154054weujalv8a35lah7v.jpg 使用 fal使用 fal 前需要对项目的 Flash 进行移植工作,移植的文档位于: /samples/porting/README.md 。移植完成后,调用 fal_init() 初始化该库。 常见应用基于 FAL 分区的 fatfs 文件系统例程基于 FAL 分区的 littlefs 文件系统应用笔记基于 FAL 分区的 EasyFlash 移植说明 Finsh/MSH 测试命令fal 提供了丰富的测试命令,项目只要在 RT-Thread 上开启 Finsh/MSH 功能即可。在做一些基于 Flash 的应用开发、调试时,这些命令会非常实用。它可以准确的写入或者读取指定位置的原始 Flash 数据,快速的验证 Flash 驱动的完整性,甚至可以对 Flash 进行性能测试。具体功能如下:输入 fal 可以看到完整的命令列表msh />fal Usage: fal probe [dev_name|part_name]   - probe flash device or partition by given name fal read addr size               - read 'size' bytes starting at 'addr' fal write addr data1 ... dataN   - write some bytes 'data' starting at 'addr' fal erase addr size              - erase 'size' bytes starting at 'addr' fal bench              - benchmark test with per block size msh />复制代码 指定待操作的 Flash 设备或 Flash 分区当第一次使用 fal 命令时,直接输入 fal probe 将会显示分区表信息。可以指定待操作的对象为分区表里的某个分区,或者某个 Flash 设备。分区或者 Flash 被成功选中后,还将会显示它的一些属性情况。大致效果如下:msh />fal probe    No flash device or partition was probed. Usage: fal probe [dev_name|part_name]   - probe flash device or partition by given name. [I/FAL] ==================== FAL partition table ==================== [I/FAL] | name      | flash_dev    |   offset   |    length  | [I/FAL] ------------------------------------------------------------- [I/FAL] | bl        | stm32_onchip | 0x00000000 | 0x00010000 | [I/FAL] | app       | stm32_onchip | 0x00010000 | 0x000b0000 | [I/FAL] | ef        | norflash0    | 0x00000000 | 0x00100000 | [I/FAL] | download  | norflash0    | 0x00100000 | 0x00100000 | [I/FAL] ============================================================= msh /> msh />fal probe download Probed a flash partition | download | flash_dev: norflash0 | offset: 1048576 | len: 1048576 |. msh />复制代码 擦除数据 先输入 fal erase ,后面跟着待擦除数据的起始地址以及长度。以下命令为:从 0 地址(相对 Flash 或分区)开始擦除 4096 字节数据
    注意:根据 Flash 特性,擦除动作将按扇区对齐进行处理。所以,如果擦除操作地址或长度未按照 Flash 的扇区对齐,将会擦除掉与其关联的整个扇区数据。msh />fal erase 0 4096 Erase data success. Start from 0x00000000, size is 4096. msh />复制代码
    写入数据 先输入 fal write ,后面跟着 N 个待写入的数据,并以空格隔开。以下命令为:从地址 8 的位置依次开始写入 1、2、3、4 、 5 这 5 个字节数据msh />fal erase 0 4096 Erase data success. Start from 0x00000000, size is 4096. msh />复制代码 读取数据 先输入 fal read ,后面跟着待读取数据的起始地址以及长度。以下命令为:从 0 地址开始读取 64 字节数据msh />fal read 0 64 Read data success. Start from 0x00000000, size is 64. The data is: Offset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F [00000000] FF FF FF FF FF FF FF FF 01 02 03 04 05 FF FF FF [00000010] FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF [00000020] FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF [00000030] FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF msh />复制代码 性能测试 性能测试将会测试 Flash 的擦除、写入及读取速度,同时将会测试写入及读取数据的准确性,保证整个 Flash 或整个分区的 写入与读取 数据的一致性。先输入 fal bench ,后面跟着待测试 Flash 的扇区大小(请查看对应的 Flash 手册,SPI Nor Flash 一般为 4096)。由于性能测试将会让整个 Flash 或者整个分区的数据丢失,所以命令最后必须跟 yes 。msh />fal bench 4096 yes Erasing 1048576 bytes data, waiting... Erase benchmark success, total time: 2.674S. Writing 1048576 bytes data, waiting... Write benchmark success, total time: 7.107S. Reading 1048576 bytes data, waiting... Read benchmark success, total time: 2.716S. msh />复制代码 更多 API 及最新代码详见 GitHub:https://github.com/RT-Thread-packages/fal 本坛下载:

  • 回复了主题帖: 【RT-Thread读书笔记】+ 痛并快乐着

    深表同感

最近访客

< 1/2 >

统计信息

已有17人来访过

  • 芯币:86
  • 好友:--
  • 主题:16
  • 回复:18
  • 课时:--
  • 资源:1

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言