18回答

0收藏

[原创] 树莓派手机~

 

Raspberry Pi Raspberry Pi 9402 人阅读 | 18 人回复 | 2014-10-17

嗯,用树莓派做手机其实也不是不可以~
之前老爸在铁路边捡到了一个模块,那时刚刚上高中不太了解通讯模块方面的东西。现在又捣鼓了一个学期,学到了不少单片机的知识,懂得了串口的通讯方式等等……然后九月买了树莓派来玩,然后前几天看到某实验室的博客贴出了个国外玩家用树莓派做了个手机,然后我就想到了那块模块……打算自己也动手试试。

这就是那个通讯模块……
之前因为在百度找不到这个模块的资料、所以一直无从下手……

这是GL868的通信模块,后来几天前我决定翻墙出去谷歌一下……
嗯,功夫不负有心人,找到了这模块的资料,并且根据模块的引脚倒找出了整块板子的大概电路连接。
这个板子上是没有引出麦克风和听筒的,所以我就自己用导线连接到了插针的空脚上。
然后我先和电脑连接通讯,通讯是成功了的。插卡上去试试打10086也成功了。
而后来几天再用的时候发现有点不太正常,经常找不到信号……
后来我无奈去淘宝找了一些卖通信模块的店家问了一下,他说如果模块的版本日期比卡的老那就会出现不稳定的情况……
后来我看了一下这个模块……

好吧2011年的。再看一下我的手机卡,是2012年的……
最后迫于无奈,抱着试一下的精神买了一个SIM900A的通信模块回来……【学生党没钱啊TAT】

介个就素那个通信模块……体积明显比捡到的那个小很多啊╮(╯▽╰)╭

而且采用的是推动式的卡座,上面还有两个“巨无霸”电容,店主说是为了稳定……
毕竟模块在开机的时候需要的瞬间电流是很大的,如果供电不给力就没办法启动……
而并联电容上去可以增加库仑量,在启动的一瞬间提供一个大电流给模块保证启动能成功【高二刚学到的电容知识就这样应用上了……】

不过呢……实际使用的时候发现,其实这两个电容还是不太给力……不知道是我树莓派的供电问题还是啥,反正如果我直接这样接,一插卡开机树莓派直接就重启了……供电不足…………
最后我还是把之前捡到的那个模块上的0.1F的电容拆下来,自己做了个转接口来专门给树莓派用。


可以看到,上面我接了二极管,电阻和那个0.1F的电容,因为根据模块资料说的驱动电压是3.5-4.8V,而树莓派只有2种电源,一个是3.3V,一个是5V,两个一个要么低了,要么高了,都不满足,所以就决定串联一个1N4007的二极管【因为这种二极管的电压降是0.7V,5V-0.7V=4.3V,满足3.5-4.8的范围】,那为什么我上面并了2个二极管呢?因为我发现……接了电容虽然可以正常的开机了,但是在打电话的时候持续供电的电流还是有点不足,所以刚接通喇叭一响,啪,然后模块就又重启了……所以并联了2个二极管保证电流能供应得了。至于那2个470Ω的电阻,是接在串口上的。因为模块的通讯电压是2.8V的【这是之前我在GL868的资料上看到的,后来在买这个模块的时候也问了店家说这个模块也是2.8V的,并且没有在引出的串口上面串联电阻,所以为了防止烧坏芯片,需要自己串联一个电阻。那么我就根据那个捡到的通信模块上的电路设计选了2个470Ω的电阻。】

为了方便说明,我就引用淘宝上的那个图好了……【版主大大不要打我233333】
至于电路嘛……

大概就是这样的了。
然后硬件上串口电源什么的和树莓派连接好,这里我用的是树莓派的GPIO的窗口。也就是/dev/ttyAMA0设备。

要用这个设备得需要设置一下,把系统的调试什么的输出都关掉这样才能用这个串口。

首先是/boot/cmdline.txt
里面的内容,要把console=ttyAMA0,115200 kgdboc=ttyAMA0,115200这一段删掉以禁用串口调试。
然后是/etc/inittab里的T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100用#注释掉或者直接删掉这行。
然后就可以用树莓派的GPIO引脚的串口了。

因为默认的波特率已经是115200了,所以不用过多的设置它。
如果要调试我们可以用命令
  1. microcom -p /dev/ttyAMA0
复制代码
来进行串口调试。话说我发现串口貌似不会被独占,也就是说,你可以开一个进程来监听串口的内容,然后同时还能进行数据的发送,ttyAMA0设备不会提示说设备被占用无法打开,这点挺好的~也许就是串口的双向通讯吧。
因为模块用的是AT指令,而这个指令也是有点略坑的,就是发送完命令必须要以<CR>标识符结尾,所以……bash上发送命令结尾都要加\r来发送<CR>这个标识符。比如
  1. echo -e 'AT\r' > /dev/ttyAMA0
复制代码
发送了个AT指令后如果通讯正常,那么模块将会返回一个OK。

既然搞懂了通讯的方式,我就想要做个UI界面来进行交互式操作了,不然树莓派如果没有键盘是很蛋疼的……
但是怎么办呢?我又不会QT,也不会python,只会bash……但bash不能做图形界面。而且QT还需要搭建一个编译环境,比较麻烦。最后我还是决定采用python了。因为python可以像bash那样直接运行而不需要编译。
虽然我不会,但是我可以找方法嘛……最后百度到了一个支持python的界面设计软件wxFormBuilder,用这个就可以很方便的制作图形界面了。
设计效果如下……

而需要注意的是这个工具生成的图形界面代码和QT的图形设计工具比较类似,设计完后都需要一个main来运行这个窗口。
所以在完成窗口的绘制后需要在生成的代码后面加上
  1. class App(wx.App):
  2.    def OnInit(self):
  3.       frame = MyFrame1(None)        ##这里为我们生成GUI的Frame类名
  4.       frame.Show()
  5.       return True
  6. app = App()
  7. app.MainLoop()
复制代码
这样就可以把代码保存到树莓派上运行看到效果了。

自己给加了个桌面图标,看上去还不错吧~
来张屏幕上运行的效果图




评分

参与人数 1声望 +3 与非币 +10 收起 理由
shepherd + 3 + 10 牛X的应用,可以DIY手机了!!

查看全部评分

分享到:
回复

使用道具 举报

回答|共 18 个

倒序浏览

沙发

shepherd

发表于 2014-10-17 21:26:52 | 只看该作者

果然很牛啊,赞一个
板凳

shaoziyang

发表于 2014-10-17 21:34:00 | 只看该作者

期待后续的实验。
地板

PokeBox

发表于 2014-10-17 21:43:33 | 只看该作者

要不我把图里那个GPS的应用也发出来
5#

PokeBox

发表于 2014-10-17 21:46:36 | 只看该作者

好蛋疼~每次做玩一个大工程后发帖然后树莓派的存储卡就出错挂掉了~果然如果启动的时候不检查一下存储卡的问题这样问题越来越多总有一天会出错崩掉啊……不知道大家有没有遇到这个问题……
6#

jwdxu2009

发表于 2014-10-17 22:24:52 | 只看该作者

设计的好,学习和参考了,好产品,有机会试用一下
7#

outstanding1573

发表于 2014-10-18 00:15:50 | 只看该作者

手机  这么牛x的啊
[原创] 班门弄斧——个人原创基地
https://www.cirmall.com/bbs/thread-41384-1-1.html
8#

wcm_e

发表于 2014-10-18 00:34:29 | 只看该作者

两个字:佩服
9#

PokeBox

发表于 2014-10-18 01:21:15 | 只看该作者

其实现在都是模块化的东西了,要组装出一样东西来已经非常的简单……创意无限
10#

Cain丶ST

发表于 2014-10-18 13:24:29 | 只看该作者

乔布斯当年就是发明了蓝盒子,然后开始了创业之路
嘿嘿嘿
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条