无线飞鼠(一)
时间过得好快,大三已经过了一半了,这段时间忙的没有更新过博客,回顾下自己这段时间中的收获,感觉蛮多的。下边就一一分享下。
一个月前,接到一个朋友的求助,帮忙做一份毕设,其实本来自己也没有时间做的,一直在忙这做学校的创新项目,面对朋友的求助,我只好答应了,谁叫我这么爱帮助别人呢!说也很奇怪,自己经常帮助别人回答一些力所能及的问题,每天都有人加我,问一些基础的问题,我也干到很欣慰,帮助别人的过程中自己收获的也挺大的。
盆友的毕设叫做“无线飞鼠”。也就是个鼠标而已,和普通的鼠标相比优势在于能够在空中进行控制,这个东西出来好多年了,也是比较流行的,自己也想试一试,就开始着手做了。
一、选材(硬件选择)
首先说说硬件东西,毕竟这都是基于硬件上的。
由于朋友所有硬件都已经买好了,它的目的很简单,只要功能实现了就好了,不用管其他外观、大小等等,都是买的现成的开发板。主控芯片(发射端)STM32F103C8T6,数据采集(MPU6050,该模块集加速度和陀螺仪于一身,是最好的选择了,我个人认为的,嘿嘿),数据传输(NRF24L01,2.4G无线传输),接收端芯片(STM32F103C8),都是现成的模块,这样一来,可以节省了自己设计板子,焊板子的时间了,不过我觉得还是自己设计一款板子比较好,根据需求可以将板子设计的小巧些,去掉好多不用的外设,跟方便、美观。
硬件就是这些东西了,最后在解决电源问题,一个完美的空中鼠标就这样了!想象都很激动……嘿嘿。
说到电源问题,我不得不说,一般单片机需要的电源是3.3V,要是外接电源就得考虑电源转换电路了,以及稳压问题。电源搞不好会烧坏板子的,自己曾经有过教训,在电源问题上吃了亏。记得那时在大二参加一次省的电子设计大赛中,当初做的是灭火小车,由于电源问题烧坏了好几块芯片,都是刚开始没有问题,小车跑着跑着就把芯片烧坏了……教训,血的教训啊!
二、模块的学习
由于这些模块自己都不是很熟悉,必须从数据手册上一一解读,可是花了好长时间。就拿MPU6050来说,就是比较复杂,可欣的是网上有了好多前辈们的研究成果,自己搞懂后有些可以拿过来直接用,真是感谢你们了!
由于各个模块涉及到的知识比较多,我会一一分开来谈谈我的看法,当然了具体的东西,还是看数据手册比较好了,如果我哪里说的不对,可以提出建议,大家一起交流,共同学习。如果觉得我说的都是废话,那我只能说浪费你的时间了,抱歉……
模块一. USB协议分析
当然这不能叫做模块了,但是这是在是一个重要而且难搞的东西,广USB协议这 块我看的时间最多,当然也只能懂个大概,USB水实在太深了,得在下功夫。
关键字:STM32 无线飞鼠 硬件
引用地址:
基于STM32的无线飞鼠(一)
推荐阅读最新更新时间:2024-11-08 00:57
stm32使用LWIP实现DHCP客户端
LWIP是一款开源的嵌入式网络协议栈,支持的功能很多,而且能在多任务环境下和单任务裸机环境下跑,今天说说他的移植过程,芯片为STM32,网卡为ENC28J60,无操作系统 首先下载LWIP的源代码,我下载的是1.4.1的源码,下载后解压,文件结构如图 将这四个目录中的文件全部拷贝到工程中,API是一些socket通讯的接口,需要在多任务的环境下实现,core里面存放的内核源码,我们主要使用IPV4,include目录下是需要包含的目录,lwip只要求我们包含include目录,里面的内层目录会自动找到,最后建立的工程目录如下 好了,此时源码已经做好,还有需要做的,在include目录下新建一个文件夹,必须
[单片机]
stm32的I2C主从模式
1,stm32的I2C总线既可以作为主模式也可以作为从模式 作为主模式和作为从模式在CUBE中的配置是一样的,只是i2c设备的地址不一样 Timing是时序,是在配置的时候生成的,不需要修改 当总线的频率设置为100KHZ的时候,rise time 和fall time 要设置为100ns ownAddress就是指的i2c总线的设备地址,该地址可以选择7bit 或者10bit 2,测试的时候使用两块开发板,一块作为master另一块作为slave,主机向从机发送 I2C ,当从机收到之后然后发给主机,主机收到之后才能向下运行,然后循环打印收到的内容。 主机代码如下: /** ********
[单片机]
基于STM32神舟系列开发板的串口通信源码
#include stm32f10x.h #include stm32f10x_usart.h void RCC_Config(void); void GPIO_Config(void); void USART_Config(void); void Put_String(u8 *p); int main() { RCC_Config();//配置时钟 GPIO_Config();//配置输入输出 USART_Config();//配置发送接收 //GPIO.Pin选择待设置的 GPIO 管脚,使用操作符 | 可以一次选中多个管脚。 Put_String( 请发送数据_ ); while(1
[单片机]
STM32之I2C例程(24C02)
#include stm32f10x.h #include #define SCL_H (GPIOB- BSRR = GPIO_Pin_6) #define SCL_L (GPIOB- BRR = GPIO_Pin_6) #define SDA_H (GPIOB- BSRR = GPIO_Pin_7) #define SDA_L (GPIOB- BRR = GPIO_Pin_7) #define SCL_READ (GPIOB- IDR & GPIO_Pin_6) #define SDA_READ (GPIOB- IDR & GPIO_Pin_7) #define I2C_DELAY (I2C_de
[单片机]
深度解析链表在STM32中的应用
1、为何引入链表 在程序中经常面临一个问题,我们需要保存一定数量的对象,但是对象数目是不确定的,或者说是随时增加或减少的。这时候最简单的方法是创建一个足够大的数组,用来存储这些对象。我最近开发一个项目就遇到类似的问题,下面我把问题简化一下。 需求:通过PC下发一些矩形的坐标和宽高信息,每个区域有个ID编号,并在这些矩形内填充一定的数据。 通常情况下,最简单易懂的做法是,限制最多5个区域,每个区域存储1K数据。因此设置了这样的一个结构体(类似于面向对象语言里说的成员属性)。 typedef struct Area_Inf{ uint8_t ID; uint8_t X; uint8_t Y; uint8_t Width; uint
[单片机]
基于Verilog硬件描述语言的AES密码算法实现
0 引言 密码模块是 安全保密 系统的重要组成部分,其核心任务就是加/解密数据。目前,分组密码算法AES以其高效率、低开销、实现简单等特点被广泛应用于密码模块的研制。随着计算机信息技术和超大规模集成电路技术的成熟与发展,通过硬件来实现密钥模块的内部运作,可保证在外界无密钥的明文流动,能够实现真正意义上的保密。此外,硬件实现还具有高速、高可靠性等特点。目前许多AES算法的硬件实现采用基于RAM查找表方式来实现算法中最关键的SubBytes部分。本文采用复合域来实现SubBytes部分的求逆运算,以便于采用组合逻辑减小面积。同时采用加/解密运算中列变换的部分电路进行复用,从而进一步节省实现面积。这样可以使 AES
[单片机]
智能机生态系统平台商与硬件商博弈在所难免
编者按:腾讯科技锐评栏目∑Ping本周推出《科技擂台》第四期:智能手机硬件厂商能否逆袭系统平台商?本期邀请到的是通信产业观察家毕朝晖与科技专栏作者阑夕,众多网友参与踢馆。如今,智能手机制造商再也不会以“傍大款”的心态对待系统平台商了,随着智能手机这块“蛋糕”的不断做大,扩展到有无限想象空间的移动互联网领域,以三星为代表的手机制造商们各生异端,软件平台商与硬件厂商博弈在所难免,谁都想成为“大赢家”,然而系统平台商更具备先天优势。 网友麦辰:三星崛起 改变智能手机生态系统格局 世界两大手机公司苹果和三星之间实质是硬件产品与硬件平台产品结合之争,三星作为硬件公司不是一般的强大,自己强大硬件系统与使用越来越广泛的安卓平台结合起来,苹
[手机便携]
深度:探究智能硬件的现状/机遇/挑战
说到 智能硬件 ,大家往往想到更多的都是智能手机、可穿戴设备、智能家居、智能医疗、车联网等等这样消费领域的产品。其实, 智能硬件 的应用范畴不仅仅局限于此,笔者认为在 智能硬件 如荼似火的今天,当人们的目光都瞄准于一些已经拼的你死我活的红海时,恰恰忽略了许多有待深挖和开垦的蓝海。今天,我们就智能硬件这个话题,聊一聊当前的现状、机遇及挑战,以及智能硬件在智能制造、工业4.0等领域的创新应用。下面就随嵌入式小编一起来了解一下相关内容吧。 现状 在2014年国内智能硬件元年开启之后,近年来,国内智能硬件行业销量呈现爆发式增长。根据前瞻产业研究院数据统计,2014年国内智能硬件市场规模达到108亿元,2015年销量达到4
[嵌入式]