为了参加比赛做了一个空中鼠标,主要处理芯片采用合泰的HT32F1656芯片,这款芯片是基于ARM M3内核,与STM32F1系列相似,只有部分寄存器,与库函数不一样,ST的程序改一改就可以运行了。
鼠标还使用了一些模块,如下,蓝牙HID如果做键盘鼠标还是用淘宝店
重庆翔码电子的吧,当然你可以自己配置HID。按键原本是要用应变片来做的,但是被我另一个队员全部焊坏了,所以采用了电容触摸按键。我是采用双面板的思想自作的板子,由于条件限制,采用双层板来代替双面板。把单片机放一面,其他模块放在另外一面。
程序框图
硬件框图
这是做出的实物了,很丑,原本不想放出的
下面是制作的一些小经验:
MPU可以直接用pcb板与单片机固定,这样会少很多抖动,更好调试。
鼠标HID的按键是一个“1”和一个“0”算是一次完整的点击,鼠标指针最高位0为正1为负。
对于数据,在后面加个0xff,这样会少些莫名的错误,可能与陀螺仪读取的数据位数有关。
对于滤波采用平均滤波加限幅滤波就足够了,这样抖动就可以接受了,更多需要调试的还是鼠标的灵敏度,在使用过程中一换一个环境,感觉灵敏度感觉有些不太适合,不知道是不是自己没使用习惯的原因,调节灵敏度是在调整陀螺仪数据。另外不知什么原因,导致本次制作的必须要在程序执行后加入一段较长的延时,否则鼠标使用会出现一个延时。具体看附件的程序。
MPU9250的线加速度模式,当产生倾斜角度也会有数据,可以采用角加速度的数据取反进行抵消(具体没尝试)
程序的工程为keilV4文件,偷懒直接用官方的模板
。文件链接\HT32f1xx\project_template\IP\Template\MDK_ARM
演示视频与程序在均附件中
本文来自论坛,点击查看完整帖子内容。