当前位置:首页 > 单片机 > 单片机
[导读]历时7天,跨度两个多星期,才将微型四轴的遥控器调试好,中间除了备考两科考试,其余时间全在宿舍蹭网消磨青春,不得不说状态不好,实际上内心也极度的空虚。之前将微型四轴的机体做好,迫不及待的进行了一下测试,天

历时7天,跨度两个多星期,才将微型四轴的遥控器调试好,中间除了备考两科考试,其余时间全在宿舍蹭网消磨青春,不得不说状态不好,实际上内心也极度的空虚。

之前将微型四轴的机体做好,迫不及待的进行了一下测试,天真的以为,飞机不用遥控器也可以,实际上我设想的是直接用手头的开发板对其进行简单的增减速,为此我还特意为它写了一个触摸控制界面,只有三个触控点,一个加速,一个减速,一个停止,非常无聊。



后来发现,没有一个遥控器真的非常不方便,周六便去二手市场仅用5元便淘得一飞机遥控器,里面电池都还没用完,质量算上乘。这遥控器是红外遥控的,用手机看了下红外管,能够正常发光实际上,我当然最希望直接对现有电路进行一下线路修改就实现最方便了,事情往往没有那么顺利。



仔细端详了这块板子,一大堆的元件,右上角唯一的一块芯片却也被磨去型号,对于我这种电路经验较少的青年自然无从下手,遂决定重新开发一块。但是为了能够跟原先机壳匹配,电路的摸样和尺寸,完全根据原板用尺子测量而规划。



遥控器板子采用低功耗MSP430G2553主控,NRF24L01发射遥控信号。对于操纵杆,说白了就是一个双方向和一个四方向的电位器,通过430内部AD采样便可得到操纵命令,电路十分简洁。实际上,遥控器的程序也相当的简单,就我目前需要实现的功能来看。只需要根据AD门限值判断出上下左右的方向,然后直接发送给接收机即可。电源稳压用ASM1117-3.3V实测它的压降有1V,所以至也得4.3V供电,事实上买回来这破东西的时候里面就残存有6节干电池,测了一下电压还有6V,足够我调试挥霍。实现代码如下:



在遥控板子左上角的排针是我预留的程序调试和烧写端口,同样的为了方便,我并不需要再做下载器了,直接采用TI推出的大学计划的LaunchPad可以完美的实现程序调试和烧写,这块LaunchPad最值钱的地方就在于它的仿真器,官方才卖8美元,而一个430仿真器市面价格是200,上学期学校给了一块比赛用,电子工程师之家网站又送了我一块,那块G2553就是我从上面抠下来的。



当然,最为重点的地方便在于接收端了,怎么实现接收到的数据能够操控电脑游戏?这点由于之前我做了有线重力感应的游戏遥控器,我试图仍然采用此方法,就是通过STM32把命令接收下来,然后通过串口传到我的VC上位机,用上位机的程序实现键盘敲击的命令。



VC上位机上,我同样用的是keybd_event事件来实现按键的按下和弹起。



那天晚上我测试了电脑上的所有程序窗口以及几个小游戏,发现都没有问题,可以实现操控,第二天我想正式在极品飞车上测试的时候,终于暴露除了问题,根本没有效果!是的,VC的这段代码在游戏里面无法实现操控,为什么其它的程序可以,而就是这大型的游戏不行,后来百度查了一下,终于看出点端倪,好像是说这种游戏的操作用的那种操控方式是直接读取电脑键盘的那个端口来接收命令的,我用VC写的那段代码实际上只是模拟出了系统按键而已。网上也没有给出解决方法,后来我问了下一个以前通过影子系统认识的一位程序开发工程师,他告诉我用Winio来向键盘端口写入命令达到驱动级的命令试试。



后来发现,效果是一样的,并且由于我对VC++编程经验不丰富,直接操作了端口导致给电脑带来了不好的后果,导致了我笔记本的键盘按键出现了紊乱,当然对于我的电脑这一切都不是问题,由于Powershadow的保护,很多问题重启之后便得到了解决。

我不相信用VC不可以实现,但是这已经涉及到计算机的端口这些跟底层相关的东西,专研下去对我来讲太困难,毕竟缺少专业的知识和经验。经过考虑我终于还是决定采用比较简单的方案,直接通过单片机模拟出键盘的PS/2协议,让电脑就认为它是一个键盘,这样子,所有的操作对于电脑的任何程序必定都是有效的。PS/2的协议相对来讲,也是比较简单,跟串口有点类似,一个时钟脉冲发送一位数据,只要知道键盘的编码,给电脑发过去就OK了。



对于该时序的实现代码如下




而键盘的扫描码可以查表获得,分为通码和断码,对于键盘来讲,按键按下的时候就是向电脑发送了通码,释放的时候,就是给电脑发送了断码,这个我用示波器也看过键盘的波形,为此发波学弟还特意给我抱来一台数字示波器,真心非常的感谢。



键盘的协议有些比较有趣的地方,比如,你先按下‘上’不放,然后按下‘左’,那么就只有‘左’是有效的了,并且此时你放开‘左’,‘上’虽然依旧按下,但是它已经无效了。那为什么在游戏里面我可以同时按下上和右,并且它们都是有效的呢,因为游戏里面只要收到按键的通码之后没有收到到按键的断码,那么它都是在执行命令的。而这段协议可以通过以下代码实现。





整个接收电路我直接用开发板兼万用板搭了个简单的3.3V转5V电路实现,显得有些凌乱,但不缺美丽。为了能够在我I5处理器的acer上实现当然还得PS/2转USB接口



最后,进行《极品飞车》实战测试



实际上,我很少玩游戏,但是也略懂,在《极品飞车》里除了控制方向键之外,还有按ALT键液氮加速的,当然我也考虑到了这点,事实上,我在遥控器的板子上预留了两个按键专用的端口,可以实现。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在微控制器领域,MSP430与STM32无疑是两颗璀璨的明星。它们各自凭借其独特的技术特点和广泛的应用领域,在市场上占据了重要的位置。本文将深入解析MSP430与STM32之间的区别,探讨它们在不同应用场景下的优势和局限...

关键字: MSP430 STM32 单片机

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

STM32与51单片机之间有什么差异呢?两者可以说是一场科技与性能的较量了。在科技飞速发展的今天,微控制器(MCU)已广泛应用于各类电子设备和系统中,发挥着举足轻重的作用。其中,STM32和51单片机作为两种常见的微控制...

关键字: STM32 51单片机 MCU

电磁铁是一种利用电流产生磁场的装置,具有快速响应、易于控制等特点,在工业自动化、电子设备、科学实验等领域有着广泛的应用。STM32是一款功能强大的微控制器,具有高性能、低功耗、易于编程等优点,是控制电磁铁的理想选择。本文...

关键字: 电磁铁 微控制器 STM32

边缘人工智能的实现涉及到三个基本 要素:安全性,连接性、自主性,而其中自主性是AI能力的体现,也是边缘AI有别于其他传统的物联网的关键。而通过ST Edge AI套件,就可以帮助各种不同类型的开发者实现覆盖全硬件平台的全...

关键字: 边缘人工智能 AI STM32

今天,小编将在这篇文章中为大家带来STM32单片机最小系统的有关报道,通过阅读这篇文章,大家可以对它具备清晰的认识,主要内容如下。

关键字: 单片机 单片机最小系统 STM32

STM32是一款由STMicroelectronics生产的微控制器系列,具有高性能、低功耗和丰富的外设资源。其中,串口通信是一种常用的通信方式,可以实现与其他设备之间的数据传输。

关键字: STM32 串口通信 微控制器

STM32是一种广泛使用的微控制器,具有丰富的通信接口。其中,串口通信是STM32与其他设备或系统进行数据交换的重要方式之一。本文将详细介绍STM32串口通信的原理、应用及常见故障。

关键字: STM32 串口通信

由于目前缺乏相应的监测技术,地下电缆线路出现异常运行状态无法被及时发现,久而久之易演变成大故障,最终只能通过更换地下电缆进行修复,耗费大量的人力、物力。鉴于此,开发了一种基于STM32的地下电缆异常状态检测系统,利用热传...

关键字: STM32 地下电缆

交通灯控制器是用于控制交通信号灯运行的设备,它可以根据交通流量、行人需求以及其他因素,动态地调整信号灯的变化时间和绿灯时长,以保证交通的流畅和安全。

关键字: 交通信号灯 STM32
关闭
关闭