MARS STM32遥控器v1.0
MARS STM32遥控器v1.0.................. 1
1.遥控器简介........................... 1
2.硬件详解............................. 8
2.1MCU主控部分..................... 8
2.2电源部分........................ 9
2.3摇杆、段位、拨轮通道部分....... 10
2.4五项按键....................... 11
2.5蜂鸣器和LED................... 11
2.6板载重力传感器MPU6050......... 12
2.7无线接口....................... 12
2.8外部FLASH..................... 13
2.10屏幕.......................... 13
3.电气特性............................ 13
4.功能描述............................ 14
4.1按键描述....................... 14
4.2主界面......................... 14
4.3定时器......................... 14
4.4调整摇杆....................... 14
4.5菜单........................... 14
4.5.1舵量显示子菜单.............. 15
4.5.2系统设置子菜单.............. 15
4.5.3无线参数子菜单.............. 15
4.5.4无线对频子菜单.............. 15
4.5.5版本信息子菜单.............. 15
4.5.6恢复出厂子菜单.............. 16
4.5.7固件升级子菜单.............. 16
5.关于二次开发........................ 16
6.联系我们............................ 18
火星科技基于ARM Cotex-M3内核72M主频的STM32F103C8T6自主设计的一款10通道遥控器,其外形参考XBOX游戏手柄外观结构设计,小巧精致。外围硬件主要有白色OLED、高频头接口(可以适应对应接口的多种无线模块)、五项按键(抛去传统的轻触按键)、蜂鸣器、MPU6050陀螺仪重力传感器、RGB全彩LED指示灯、档位开关、拨轮、USB、W25QXX外部Flash芯片、RTC实时时钟、摇杆、两路串口预留、电源管理等等。
图1-1正面实物图
图1-2背面实物图
图1-3系统框图
图1-4原理图
图1-5 PCB尺寸及元件位置图正面
图1-6 PCB尺寸及元件位置图背面
MARS-STM32遥控器元件清单 |
|||||||||
Comment |
Description |
_Value |
_Degree |
Designator |
Footprint |
Pins |
Quantity |
LibRef |
Message |
CAPN |
瓷片电容 |
0.1uF |
>10V |
C2, C4, C6, C7, C8, C10, C12, C13, C14, C15, C16, C17, C19, C20, C21 |
FY-0603_C |
2 |
15 |
CAPN |
|
CAPN |
瓷片电容 |
12pF |
>10V |
C9, C11 |
FY-0603_C |
2 |
2 |
CAPN |
|
CAPN |
瓷片电容 |
2.2nF |
>10V |
C5 |
FY-0603_C |
2 |
1 |
CAPN |
|
Inductor |
电感 |
10uH |
|
L1 |
FY-0603_L |
2 |
1 |
Inductor |
电感可以用0-10R电阻替代 |
LED_R |
LED_R |
|
|
D2 |
FY-0603_LED_R |
2 |
1 |
LED_R |
|
RES |
电阻 |
1.5K |
5% |
R8, R9 |
FY-0603_R |
2 |
2 |
RES |
|
RES |
电阻 |
100K |
1% |
R24, R25 |
FY-0603_R |
2 |
2 |
RES |
|
RES |
电阻 |
100R |
5% |
R3 |
FY-0603_R |
2 |
1 |
RES |
|
RES |
电阻 |
10K |
1% |
R4, R5, R10, R11, R12, R13 |
FY-0603_R |
2 |
6 |
RES |
|
RES |
电阻 |
10K |
5% |
R6, R15, R18, R19, R21 |
FY-0603_R |
2 |
5 |
RES |
|
RES |
电阻 |
10R |
1% |
R32, R33 |
FY-0603_R |
2 |
2 |
RES |
|
RES |
电阻 |
1K |
5% |
R7 |
FY-0603_R |
2 |
1 |
RES |
|
RES |
电阻 |
1M |
5% |
R20 |
FY-0603_R |
2 |
1 |
RES |
|
RES |
电阻 |
22K |
1% |
R22, R23 |
FY-0603_R |
2 |
2 |
RES |
|
RES |
电阻 |
22R |
5% |
R14, R16 |
FY-0603_R |
2 |
2 |
RES |
|
RES |
电阻 |
24K |
1% |
R28, R29 |
FY-0603_R |
2 |
2 |
RES |
|
RES |
电阻 |
4.7K |
5% |
R1, R2, R17 |
FY-0603_R |
2 |
3 |
RES |
|
RES |
电阻 |
51K |
1% |
R26, R27 |
FY-0603_R |
2 |
2 |
RES |
|
RES |
电阻 |
9.1K |
1% |
R30, R31 |
FY-0603_R |
2 |
2 |
RES |
|
CAPN |
瓷片电容 |
10uF |
>10V |
C18 |
FY-0805_C |
2 |
1 |
CAPN |
|
CAPN |
瓷片电容 |
47uF |
>10V |
C1, C3 |
FY-1206_C |
2 |
2 |
CAPN |
使用10UF 0805电容可以替代 |
BELL |
蜂鸣器 |
3V |
9mm |
LS1 |
FY-BELL_9MM |
2 |
1 |
BELL |
|
CR1220 |
电子座 |
3V |
CR1220 |
BT1 |
FY-CR1220 |
2 |
1 |
CR1220 |
|
1N4148 |
二极管 |
|
|
D4, D5 |
FY-D_MELF_1206 |
2 |
2 |
DIODE |
|
H4X1 |
H4X1 |
|
|
P4 |
FY-H1.25-1X4A |
4 |
1 |
H4X1 |
|
H4X1 |
H4X1 |
|
|
P3, P5 |
FY-H1.25-1X4W |
4 |
2 |
H4X1 |
|
JOYSTICK |
摇杆 |
|
|
R34, R35 |
FY-JOYSTICK |
6 |
2 |
JOYSTICK |
|
KEY6-5-10*10 |
KEY6-5-10*10 |
|
|
KEY1, KEY2 |
FY-KEY5-SMD-10*10*9 |
6 |
2 |
KEY6-5-10*10 |
|
LED_RGB[5050]-4 |
LED |
|
|
D3 |
FY-LED_RGB[5050]-4 |
4 |
1 |
LED_RGB[5050]-4 |
|
STM32F103C8T6 |
单片机 |
|
|
U5 |
FY-LQFP-48 |
48 |
1 |
STM32F103C8T6 |
|
NRF24L01_MODULE |
射频模块 |
|
|
U7 |
FY-NRF24L01_MODULE1 |
8 |
1 |
NRF24L01_MODULE |
|
OLED_MODULE |
OLED_IIC模块 |
|
|
P2 |
FY-OLED_IIC |
4 |
1 |
OLED_IIC |
|
PH2X1 |
PH2X1 |
|
|
PH1 |
FY-PH2.0_2AW |
2 |
1 |
PH2X1 |
|
POT |
电位器 |
10K |
20% |
RP1, RP2 |
FY-POT-BKP2 |
3 |
2 |
POT |
|
MPU6050 |
陀螺仪芯片 |
|
|
U3 |
FY-QFN24 4*4 |
24 |
1 |
MPU6050 |
|
SS14 |
二极管 |
|
|
D1 |
FY-SMA |
2 |
1 |
DIODE |
使用0-10R电阻可以替代 |
W25X16 |
存储芯片 |
|
|
U6 |
FY-SO-8W_5*5 |
8 |
1 |
W25Q16BV |
|
HT7133 |
电源芯片 |
|
|
U1 |
FY-SOT89M |
3 |
1 |
HT7133 |
电源芯片二选一,优先选择662K |
ME6206A33M3G |
电源芯片 |
|
|
U2 |
FY-SOT-23-3 |
3 |
1 |
ME6206A33M3G |
|
SS8050 |
三极管 |
1.5A |
|
Q1 |
FY-SOT-23-3 |
3 |
1 |
SS8050 |
|
LTC4054 |
充电芯片 |
|
|
U4 |
FY-SOT-23-5 |
5 |
1 |
LTC4054 |
|
SW_2 |
SW_2 |
|
|
S1, S3 |
FY-SW-SMD6 |
6 |
2 |
SW_2 |
|
SW3-8 |
SW3-8 |
|
|
S2 |
FY-SW-SMD8 |
8 |
1 |
SW3-8 |
|
USB_MICRO |
USB_MICRO |
|
|
P1 |
FY-USB_MIC_V2 |
5 |
1 |
USB_MICRO |
|
XTAL |
晶振体 |
8M |
20ppm |
Y1 |
FY-XTAL_CT3P |
2 |
1 |
XTAL |
|
XTAL |
晶振体 |
32.768K |
|
Y2 |
FY-XTAL_YZ2*6 |
2 |
1 |
XTAL |
|
图1-7 主界面
图1-8 主菜单
图1-9 舵量显示
图1-10设置界面1
图1-11 设置界面2
图1-12 版本信息和无线参数
图1-13 恢复出厂和无线配对
图2-1 STM32F103C8T6最小系统
主控使用的是性价比非常高的32位的STM32F103C8T6,具有 20KB SRAM、64KB FLASH、7 个定时器、7 通道 DMA 控制器、2 个 SPI、2 个 IIC、3 个串口、1 个 USB 全速接口、1 个 CAN 接口、2 个 12 位 ADC、以及 35 个通用 IO 口等。该芯片外设丰富、功能强大,也是最常见的芯片之一。在这么多外设里面遥控器主要用到了有Flash编程、DMA、SPI、IIC、串口、USB、ADC、通用IO、定时器等。其中ADC主要用来采集摇杆、段位、拨轮的通道数据和电池电压;串口用到了串口3和串口1,分别预留出来了端子可以扩展应用;IIC是用软件模拟IIC,主要用来驱动OLED和MPU6050,SPI是用来驱动无线模块和外部Flash芯片。
主晶振采用的是小体积的8MHz的村田3脚贴片晶振,内部自带有20pF电容,通过单片机倍频到72MHz作为主时钟。RTC晶振使用的是圆柱2脚32.768KHz的直插晶振。
图2-1 STM32F103C8T6最小系统
主控使用的是性价比非常高的32位的STM32F103C8T6,具有 20KB SRAM、64KB FLASH、7 个定时器、7 通道 DMA 控制器、2 个 SPI、2 个 IIC、3 个串口、1 个 USB 全速接口、1 个 CAN 接口、2 个 12 位 ADC、以及 35 个通用 IO 口等。该芯片外设丰富、功能强大,也是最常见的芯片之一。在这么多外设里面遥控器主要用到了有Flash编程、DMA、SPI、IIC、串口、USB、ADC、通用IO、定时器等。其中ADC主要用来采集摇杆、段位、拨轮的通道数据和电池电压;串口用到了串口3和串口1,分别预留出来了端子可以扩展应用;IIC是用软件模拟IIC,主要用来驱动OLED和MPU6050,SPI是用来驱动无线模块和外部Flash芯片。
主晶振采用的是小体积的8MHz的村田3脚贴片晶振,内部自带有20pF电容,通过单片机倍频到72MHz作为主时钟。RTC晶振使用的是圆柱2脚32.768KHz的直插晶振。
图2-2 充电和稳压
电源部分主要就是充电和稳压,充电采用了一颗锂电池充电管理芯片通过Micro USB接口进行充电,这样充电可以更好的保护电池,D2可以显示电池充电状态,充电中D2亮,充满D2熄灭。稳压部分可以选用两种IC进行稳压,第一种是ME6206A33M3G,这个可以提供200mA的电流,但是承受电压范围比较小在6.5V以下;HT7133可以提供100mA以上的电流,但是支持更高的电压承受范围;在使用时因为电池使用的是1S的锂电池,所以建议用前者。USB和单片机连接,可以支持USB的VCP、HID、U盘等各种功能,目前程序v1.0是作为虚拟串口(VCP)使用。
图2-3-1 摇杆
图2-3-2 段位开关和拨轮
摇杆采用的是左手油门,也就是常说的美国手。左边摇杆上下不自动回中,适合做油门使用,右边摇杆前后左右自动回中。段位开关是两段+三段的形式,其中两段采用的是读取IO电平实现的,三段采用的是读取ADC值后量化整定实现的。拨轮有左右两个,分别接在了MCU的ADC口。
图2-4 AD按键
按键使用的是五项按键,可以左右前后拨动和下按,首先这个按键相当于5个独立的轻触按键,一个五向按键代替传统的5个轻触按键,优点当然有很多啦,体积小,操作更方便等,最主要的还是PCB的布局。两个五项按键都是用的ADC的方式,每个按键对应一路ADC,所以10个按键只需要两个IO就可以了,大大节省了MCU的IO资源。
图2-5-1LED 图2-5-2 蜂鸣器
蜂鸣器使用的是9mm的小封装有源蜂鸣器,主要作用是来报警提示和操作提示。LED使用的是内置IC的RGB全彩单总线灯珠,一方面可以操作的信息更多,一方面接口简单。
图2-7 MPU6050传感器
为了增加更多的扩展功能,遥控器上贴有一颗MPU6050六轴传感器,这也是一颗非常常见的传感器,在遥控器v1.0版本还没有用到,此功能还有待后期加入,当然也可以进行二次开发。
图2-8无线接口
无线接口采用4*2的母座,对应NRF24L01无线模块。程序v1.0版本的无线驱动也是对应的这个模块,后期可以加入更多的无线模块以适应不同的应用和场合。
图2-9 外部FLASH
遥控器板载了一颗W25Q64的8M Byte FLASH存储器,其SPI通信与无线接口共用,主要功能也是为后期扩展用,可以用来做USB IAP和存储字库等。程序v1.0暂时还没有用到。
图2-10 OLED接口
屏幕采用的是OLED白色128*64的IIC接口点阵屏幕,其大小、分辨率对于遥控器来说也相对合适。主要用来显示遥控器的信息和提供人机界面辅助按键进行操控。
五项按键有顾名思义有五个键值,分别是上、下、左、右和按下。我们将其简洁命名为U、D、L、R、P。左、右按键分别简洁命名为K1和K2。那么左、右边的上、下、左、右、按下分别对应K1-U、K1-D、K1-L、K1-R、K1-P和K2-U、K2-D、K2-L、K2-R、K2-P。下文将所有的按键操作以此为准。
主界面主要是主要信息的显示,分别有信号强度、所使用的无线模组、遥控器电量、接收机电压、设备电压、进入菜单图标、定时器1(左)、定时器2(右)、调整摇杆零偏锁定图标、10通道数据。界面目前支持简体中文、英文两种显示模式。10通道数据支持模拟+数字、数字和模拟量三种显示模式。主界面默认没有指向哪一个选项,通过K1-U、K1-D、K1-L、K1-R或K2-U、K2-D、K2-L、K2-R可以切换到菜单图标、定时器1图标、定时器2图标和摇杆零偏调整锁定/上锁图标。
主界面有两路定时器,作用是用来计时,其中第一组定时器默认是停止状态,即开机不会自动运行,可以通过手动来启动、暂停、清零;第二组定时器操作上和第一组一样,唯一的区别是上电会自动运行。启动、暂停的操作是界面图标切换到对应的定时器,短按K1-P或K2-P;清理操作界面图标切换到对应的定时器,长按K1-P或K2-P。
主界面可以直观的看到摇杆的四通道数据,因其摇杆的出厂精度等各种因素,需要手动矫正,此时可以解锁调整摇杆偏移后通过左右的按键将摇杆数据矫正。其中解锁是在屏幕移动到“锁定”图标上按K1-P或K2-P,解锁后图标“锁定”变为图标“开锁”;上锁是在调节零偏状态(此时锁图标为开锁状态)按K1-P或K2-P,上锁后图标“开锁”变为图标“锁定”;在调节过程,K1-L、K1-R调节的是YAW,K1-U、K1-D调节的是THR,K2-L、K2-R调节的是ROL、K2-U、K2-D调节的是PIT。
进入菜单的方式有两种,在默认没有指向菜单选项或者指向菜单图标选项情况下,按下K1-P或者K2-P即可进入到菜单内部。主菜单共有8项选择可以根据选择进入,切换子菜单选项的方式为按下K1-U、K1-D、K1-L、K1-R或K2-U、K2-D、K2-L、K2-R,进入到子菜单的的方式为按下K1-P或K2-P。子菜单有分别对应舵量显示、系统设置、无线参数、无线对频、版本信息、恢复出厂、固件升级、返回主页。在默认情况下2.5s没有按键操作会自动返回到主界面。
舵量显示主要用来测试10通道遥控数据,分别是摇杆4通道、段位2通道和拨轮2通道。在此界面有两个选项分别对应显示模式(左)和返回(右),在显示模式图标下可以按K1-P或K2-P来切换不同的三种显示模式,注意这里的显示模式更改后并不会保存,也就是主界面的显示模式并不会更改,如需更改主界面的显示模式,需要在设置子菜单里面进行修改(详细操作请看系统设置子菜单)。在返回图标下按下K1-P或K2-P可以返回到主菜单。
进入到系统子菜单后,会有多项设置项,目前支持的有语言、显示、日期、时间、报警、信号强度、遥控电压、接收机电压、设备电压、返回。此界面因为设置项多和屏幕小的问题共分成了三页进行显示,可以按下K1-U、K1-D、K1-L、K1-R或K2-U、K2-D、K2-L、K2-R来切换不同的设置项。需要对某一项设置更改只需要切换到对应的图片按下K1-P或K2-P键即可进入,在进入设置之后同样可以按下K1-U、K1-D、K1-L、K1-R或K2-U、K2-D、K2-L、K2-R来对应设置,设置完毕后按下K1-P或K2-P即可保存设置。其中报警设置项为报警的总开关,即报警开关打开的情况下才会根据报警内容进行报警,报警是通过蜂鸣器和RGB-LED进行提示。如果在2.5s内没有按键操作并且没有进入任何一设置项,系统设置子菜单会自动返回到主菜单界面。
进入到无线参数子菜单后,用户可以直观的看到当前使用的模组类型、通信地址、通信频率、信号强度。其中信号强度有tx_rssi和rx_rssi,tx_rssi是发送到下属接收机的信号强度,rx_rssi是接收到接收机数据的信号强度。在此菜单如需返回上一层只需按下K1-P或K2-P键即可。
进入到无线对频子菜单后,可以根据用户的选择执行对频和取消操作。
进入到该界面后,用户可以观察到系统的程序版本、CPU使用率和作者信息。在此菜单如需返回上一层只需按下K1-P或K2-P键即可。
进入到该界面后,可以根据用户的选择执行恢复出厂和取消操作。恢复出厂会清除所有的零偏矫正数据、设置项数据、无线模组数据等。
进入到该界面后,可以根据用户的选择执行固件升级和取消操作。目前固件升级的功能还没有开发完善,只是预留做后期扩展。
图5-1工程目录
遥控器程序使用的是ST官方3.5的标准库,工程建立使用的是Keil5。源码主要包含有STM32的标准库函数、自行编写的底层硬件二次封装函数、UCOSII、USB等等,并没有用到UI,只是简单做了一个界面。USB目前作为虚拟串口使用,可以根据需求修改描述符作为不同的设备。遥控器所有动作和工作都是基于操作系统的任务形式执行,UCOSII用到了一些系统的资源,如信号量、消息队列、软件定时器等等。移植、修改、二次开发都相对简单。
至于无线模组、目前调试好的有市面上最常见的NRF24L01模块,可以选择PCB天线、PA大功率版本的,根据具体需求自行选择。无线部分有做上层处理,也就是支持不同类型的无线模组、具体的实现方式是通过函数指针自动选择、开发者只需要把无线模组底层调试好,移植到工程目录,通过上层的硬件选择代码添加上就可以了。
图5-2 部分源码1
图5-3 部分源码2
技术支持:13027717881(手机微信同号)
技术交流群:733945348(完整源码工程文件在群里可以下载)
By Urien 2019年8月11日 15:56:12