自己动手用Cortex-M3与ADXL345做个重力感应遥控器

最新更新时间:2014-05-05来源: 互联网关键字:重力感应  ADXL345  Cortex-M3  单片机 手机看文章 扫描二维码
随时随地手机看文章

 已经是很久没有写文章了,因为没有时间,人家都说大四不考研,天天像过年,可我依旧没能有那份闲暇的时间。

现在几乎人人的手里都是一款安卓智能机这是我非常羡慕的,而我手里只有上学期用380元买的一台二手诺基亚N96,虽然也称得上智能机但是远远没有如今安卓智能的优秀,其中一个功能就是通过重力感应玩赛车游戏,我想这个大家都不陌生,只要把手机歪一歪斜一斜就可以控制赛车方向了,这个功能令桥哥好生羡慕嫉妒恨,可惜自己的手机不能玩,上周突来灵感何不自己做一个玩玩。正好上学期开始着手给侄子做的四轴飞行器的基板基本调试完成,核心的芯片就是一块M3微控器,一块三轴加速度传感器ADXL345,一块三轴数字陀螺仪。而要做一个简单的重力感应遥控器用M3结合ADXL345就可以实现了。实际上由于之前调试把芯片的控制函数都写好了,而且上位机的程序又有之前给学长做毕设的时候写的程序的基础,所以花的时间很少也就两个下午的时间。

要实现一个控制电脑游戏的重力感应遥控器原理也非常简单,无非就是判断此时遥控器倾斜角度,然后M3将指令迅速传给电脑,电脑根据指令给出跟敲击键盘方向键一样的指令就完事了。检测倾斜角度由ADXL345实现,三轴加速度传感器能够测出静态时xyz方向的加速度,如果平放的情况下,只在z轴有一个向下的重力加速度,如果倾斜,那么重力将可以分解到xy方向,这样产生了xy方向的加速度,从而可以测得遥控器向哪边倾斜了。

接下来,M3通过IIC总线方式读取ADXL345测得的X轴的加速度数据,只要通过判断X轴方向的数据就可以判断基板往哪个方向倾斜了。下面是M3的测量代码

M3判断出倾斜方向之后立即通过57600波特率的串口向电脑上位机发送指令,为了提高遥控器灵敏度和反映速度,我这里指令只用了一个字符,L代表左,R 代表右,并且不使用校验,也不需要上位机回应M3,M3只管往上位机不断发指令就可以了,可以大大提高效率,实际测试中,这种波特率情况下即保证了传输速率,误码率也是较低的。

接下来上位机接收到方向指令后就得通过代码来模拟我们平时敲击键盘的动作,程序也是非常简单。跟我以前做的无线鼠标的实现代码非常的类似。

通过这段代码可以发现,除了左键右键的指令外,还有一个名为’X’的空白指令,代表的是当遥控器水平放置的时候释放按键。

VC写的上位机界面如下所示

看起来比较的粗糙,外观上我就不做什么修饰了,毕竟做的是电子而不是软件开发,只要能够实现我需要的功能,软件难看一点就将就吧。中间的四个方向按键作用是为了满足有些游戏是需要一直按下某个按键玩的,比如极品飞车你就得一直按着方向键才能走吧呵呵,当然就目前来讲我只判断了ADXL345的X轴数据,如果联合Y轴数据来判断,就可以同时控制上下左右四个方向了,这点我就先不再做,因为最近还是忙。最右边的调试数窗口用来做开发的时候监测串口数据用的,也可以用于系统的后续开发的调试使用。

实测状况,因为这块小板原先的设计是微型四轴所以用的是电池供电,还是非常方便的,这块电池也是非常给力,就冲了一次电,我都拿它调试过很长的时间了,依旧有电。

遥控器通过串口跟电脑连接以后,打开软件然后打开串口,然后把软件最小化之后就可以使用了,已经过了一把重力感应玩赛车的隐。

我现在还用的是有线串口实现通信,如果是无线的遥控器那将会更加完美,实际上我的板子上设计有2.4G无线通信模块接口,但是向无线模块写入发送数据,然后另一方还得有接收然后再通过串口传给电脑,这中间就额外增加了一段时间,或许会给遥控器的灵敏度带来下降,当然我还没有实测过,这是后续开发的事,我已经没有太多的时间放在此处,接下来我的重心将放在四轴飞行器上边,或许最好的结果是在今年过年可以让小侄看到能够飞起来的四轴,当然很可能也是他什么都看不到,我只能尽力了况且还有好多任务做真心忙。

关键字:重力感应  ADXL345  Cortex-M3  单片机 编辑:探路者 引用地址:自己动手用Cortex-M3与ADXL345做个重力感应遥控器

上一篇:如何正确地把电池串联和并联起来
下一篇:一种迷你数控雕刻机系统的设计方案

推荐阅读最新更新时间:2023-10-12 22:39

单片机控制的简易单相逆变电源
    摘要: 文章介绍了用AT89C1051单片机控制的单相逆变器电源的设计文字,该方案通过消谐PWM控制可使逆变电源的输出谐波明显减少,并经小容量的高通滤波后即可得到高质量的正弦波电压输出。该电源通过单相电机的运行试验证明,效果良好,而且结构简单、成本低廉、性能稳定可靠,具有一定的实用价值。     关键词: 逆变电源 消谐控制 单片机 AT89C1051 1 概述 消除输出电压谐波是逆变电源PWM控制的主要目的之一。在此方面,单相逆变电源的结构较三相电源简单,PWM控制也更为方便,因而在单片机的控制下实现PWM的调节策略十分有效。然而,从控制系统的结构和硬件成本方面应考虑采用什么控制算法才能使逆变
[应用]
意法半导体基于Cortex-M3的STM32L微控制器开始供货
意法半导体今天宣布开始向主要客户提供STM32L系列 微控制器 样片,STM32L系列产品是业界首款来自全球十大半导体供应商之一的超低功耗ARM Cortex-M3 微控制器。STM32L系列产品采用意法半导体独有的两大节能技术:130nm专用低泄漏电流制造工艺和优化的节能架构,提供业界领先的节能性能。 全新STM32L系列产品属于意法半导体的EnergyLite超低功耗产品平台,设计人员能够优化终端产品的性能、功能和电池使用寿命,达到相关的能效标准,如环保型设计目标。 意法半导体微控制器产品部总经理Michel Buffa表示:“在全球半导体公司提供的产品中,STM32L系列产品实现最佳的功耗性能比。STM
[工业控制]
单片机控制点阵LED一秒刷新显示I心形U
本程序所用的原理图下载: 点这里 ,单片机芯片使用的stc89c52;找到点阵部分的原理图即可.这是一整个单片机开发板的电路图其他的忽略 下面是程序源码: /******点阵LED刷新显示I LVOE U**************/ /** *功能:点阵LED一秒刷新显示I 心形 U(I LOVE YOU) *作者:徐冉 *日期:2013-06-14-22:44 *备注:程序已调试成功 **/ /*************AT89C52-RC MCU*******************/ /**************51hei开发板********************/ #inc
[单片机]
基于51单片机漩涡流水点阵的设计
#include typedefunsignedcharuchar; typedefunsignedintuint; typedefunsignedlongulong; sbitADDR0=P1^0; sbitADDR1=P1^1; sbitADDR2=P1^2; sbitADDR3=P1^3; sbi tE NLED=P1^4; ucharimage ={ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; ucharT0RH,T0RL; uintrate; voidLEDScan(); voidresetImage(); voidconfigTmr0(uintms1,ucharms2);
[单片机]
基于51<font color='red'>单片机</font>漩涡流水点阵的设计
PIC单片机定时器0的使用方法
#include pic.h #define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31); void init(); uint intnum; void main() { init(); while(1) { if(intnum==5) { intnum=0; RD0=!RD0; } } } void init() { TRISD=0; PORTD=0; OPTION=0x07; INTCON=0xa0; TMR0=61;
[单片机]
基于ARM Cortex-M3的过采样技术
文中在通过对过采样技术的分析,将此技术应用在TI公司 LM3S8962 片内ADC上,在不使用昂贵片外ADC的情况下同样获得较高的分辨率。既节约了成本,又节省电路板空间,同时也提高了系统整体可靠性。 1 过采样技术分析 1.1 过采样原理 过采样是对待测数据进行多次采样,获取样本数据,累计求和这些样本数据,并对它们均值滤波,减小噪声后最终获得采样结果。过采样在一定条件下能够提高信噪比(SNR),同时使噪声减弱,从而提升测量分辨率。过采样技术将采样频率提高到被采样频率的4倍,能过滤掉高于3fb的分量,用数字滤波器过滤fb~3fb的分量,最终有用分量被完全保存下来。若采取足够多次采样,则能重现原始信号。式(1)是过采样的频率要求
[单片机]
基于ARM <font color='red'>Cortex-M3</font>的过采样技术
CPLD实现DDS正弦信号发生器设计
  本文实现了DDS 正弦信号 的发生,限于CPLD的128宏单元不够用也不知道怎么优化,后来就干脆把按键、频率显示、频率控制字交给单片机控制产生,再由单片机讲频率控制字传送给CPLD,这样就实现了频率的控制。最终产生的正弦信号频率范围为1HZ~30KHZ,频率可步进1HZ也可通过单片机预置,也可以自动扫频信号。起先出来的频最大误差达到2HZ多,觉得不对劲出来的频率应该很精确不会有这么大的误差,后来发现原来是晶振不准有点误差,后来经程序修改使输出最大频率误差在0.1HZ以内,经过这几天的努力总算感到了一点的欣慰。   这是VHDL顶层模块:   这是当k=001111111111111时的仿真波形:
[单片机]
CPLD实现DDS正弦信号发生器设计
一种基于单片机的正弦波输出逆变电源的设计
摘 要:介绍了一种正弦波输出的逆变电源的设计。设计中采用了DC/DC和DC/AC两级变换,高频变压器隔离,单片机控制。实验结果表明性能可靠。 关键词:逆变电源;单片机;正弦脉宽调制 O 引言 低压小功率逆变电源已经被广泛应用于工业和民用领域。特别是新能源的开发利用,例如太阳能电池的普遍使用,需要一个逆变系统将太阳能电池输出的直流电压变换为220V、50Hz交流电压,以便于使用。本文给出了一种用单片机控制的正弦波输出逆变电源的设计,它以12V直流电源作为输入,输出220V、50Hz、0"150W的正弦波交流电,以满足大部分常规小电器的供电需求。该电源采用推挽升压和全桥逆变两级变换,前后级之间完全隔离。在控制电路上,前级推挽升压电
[应用]
小广播
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
随便看看
    502 Bad Gateway

    502 Bad Gateway


    openresty
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
502 Bad Gateway

502 Bad Gateway


openresty