基于android手机的3G+GPS远程控制模型车工程-电路改装1-单片机选择

        如前所述,为了扩展手机的IO口,我们必须选择一款单片机来对车模上的运动器件进行控制并于手机进行通信。这里先简略的说一下我们系统的需求。

        首先,车模上有两个运动器件需要被控制,一个是控制转向的舵机,另一个是用电子调速器控制的电机。这两个运动器件都是需要用一个低频的PWM信号来控制(PWM信号就是一连串高低电平时间不同的方波,做模型的有时叫做长城波...囧..这里确实不方便大篇幅讲,不清楚的百度一下吧),也就是说要选择的单片机至少要提供两路不同的PWM信号输出(因为有一些单片机是只能把一路输出到多个口),这里并不提倡用单片机延时的方法来产生PWM信号,主要是下面要说的串口通信要占用大量的资源,没有PWM模块的话就很难搞了。

PWM信号通过占空比不同来控制舵机和模拟模拟信号

        其次,要与手机通信就必须有串行的数据通信模块。相对来说比较好用的是串口,这个是做单片机的最常用的,而且android的手机也支持。另外一种方法就是用wifi了,但是wifi单片机操作过于繁琐而且价格过分昂贵,不建议使用。那么使用串口的话我建议使用蓝牙来作为串口的数据链路通道。手机的话只有用蓝牙串口这种方式来连接串口了,有些人可能会表示怀疑,因为手机的USB口也是可以当做串口来使用的,而且不会像蓝牙那样出现恼人的连接不稳定情况。其实造成手机USB串口无法使用的原因是因为手机厂商一致把手机的usb口做成了从机模式(这是没办法的事情),而从机模式的USB口是无法驱动USB-RS232数据线的。所以我们也就只能忍痛割爱用那个倒霉的蓝牙来作为数据通道,这也直接导致了后面编程阶段出现的大量问题,令人十分苦恼。

我使用的蓝牙串口模块

        最后一点,是从编程的角度来考虑的,一定要选择一款自己编着顺手的单片机。最底层开发的都清楚,要熟悉一块单片需要花费很长很长很长的时间。但是如果你压根没有接触过单片机或者像我一样遇到有人会继续在这个片子上写程序的话我推荐使用arduino,这是一个国外搞的‘开源硬件’的平台(一听就知道是搞软件的弄得),它用类似于java的语言来进行开发,把很多硬件的特性都屏蔽掉了,学软件的很容易上手,而且它把很多常用的模块(比如串口和PWM)都封装成了函数,只要一两条代码就可以使用,这一点让我们这些每天穿梭在各种芯片和开发板中的苦逼孩子都鸡冻了。arduino的开发板在淘宝上卖的确实比其他开发板贵好多(毕竟物以稀为贵啊),但是比起那个电子调速器那个坑爹的价格来说还是能接受的。用arduino的话只要普通的就足够了,不用买MEGA版(我是因为普通板子被拿走不得已才架了个MEGA板……),尤其是做软件出身的筒子们,千万不要被那个少的可怜的‘内存’给迷糊住。另外呢,就是如果买arduino的话一定要买一个‘接口板’这东西对后面的电源改造特别有用而且插杜邦线也就方便了。

 arduino和arduino mega

        那么,总结一下,我们需要的单片机相关的东西就是一块arduino单片机,一块相应的接口板,一大堆母头的杜邦线和一个块蓝牙串口模块。关于这个蓝牙串口模块,淘宝上卖的就比较少了我们的这个工程只需要用到蓝牙的串口功能,所以只要蓝牙模块有串口的四根线就行了(5v GND RX TX)。市场上常见的蓝牙串口模块都是把一块通用的蓝牙模块在焊在另一块板子上的,蓝牙串口的使用有主模式和从模式之分,我们的单片机是作为下位机使用的,只要有从模式就可以了,不用花冤枉钱买可以转换的那种(好吧,其实我这个主从都有的模块是从别的地方弄来的 = =! )。蓝牙模块的连线需要特别注意,这点我会在后面的内容中详细说的。

        说到这里突然想起一个蓝牙模块的选择问题来,想想还是补充一些基础知识点比较好。那就是我们要买的蓝牙串口模块一定得是TTL电平接口的。话说什么是TTL电平,可能百度百科或维基百科上面的内容会把初学者整蒙掉,直白简单点说,就是高电平5v低电平0v的数字电平罢了,之所以一定要叫个名字出来并且在本文中强调是为了区别于CMOS电平和RS232串口的电平的。现在常见的高端通信芯片都是CMOS工艺制造的,为了降低功耗就把芯片的电压降得很低,比如我们蓝牙芯片实际上用的是3.3v的(arduino板子上的单片机其实也是3.3v的),但是信号在从芯片里面出来以后为了传输的方便又一定要把电平升高来减少传输过程中的干扰,所以在单片机和其他各种外围模块传输数据时(距离近的情况下)大多是用5v的TTL电平的(其他电压的TTL电平我们暂且无视吧)。所以在挑蓝牙串口模块的时候只要挑TTL电平的串口就可以了。如果你去查RS232串口的标准的话一定会大吃一惊,因为串口线的电平是+15v~-15v的而我们的单片机输出的电平只是0~5v,也就是说真正的有串口插口(很大很多空的接头)是经过一个232芯片转换得来的,这里经常会有新手烧掉芯片:单片机和单片机的串口可以直接用杜邦线来连,有232接口的单片机可以用串口线来连接其他同样的接口,但是在串口线上插两根电线直接接在单片机的引脚上就很有可能要烧片子了…………

你可能感兴趣的:(玩具改装,单片机)