树莓派+SIM模块自制简易手机

现在手机满街都是,对于技术宅来说,买一个多没意思呀。自己做一个才算是完美是不是

首先准备材料

SIM900A 通讯模块 一个

树莓派一台

屏幕一个

SIM900A的通信模块最小版,已经把必要的IO都引出了,并集成了SIM卡槽,东西还是挺不错的,就是有个对于树莓派小缺点。模块在启动的时候需要800mA以上的电流。树莓派的供电是在捉急,需要改一下供电电路才能正常使用。否则树莓派重启,特别是打电话的时候。

树莓派+SIM模块自制简易手机

这个SIM模块的供电电压范围是3.6-4.5V,所以是不能直接用5V的电源来供电的,否则会烧坏模块。而3.3V又供不起。可以串联一个二极管来降压,注意使用的二极管必须是硅管,电压降必须是0.7V以上。否则有些二极管的电压降仅仅是0.3V的,降压的电压对模块还是很危险

树莓派+SIM模块自制简易手机

树莓派+SIM模块自制简易手机

然后把模块通过GPIO和树莓派接好,也就是/dev/ttyAMA0设备。不过需要设置一下,把系统的调试什么的输出都关掉这样才能用这个串口。

首先是/boot/cmdline.txt

要把console=ttyAMA0,115200 kgdboc=ttyAMA0,115200这一段删掉以禁用串口调试。

然后是/etc/inittab里的T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100用#注释掉

然后进行串口调试

microcom -p /dev/ttyAMA0

现在我们要打电话给10086,键入下列指令就可以啦

echo -e ‘ATD10086;r’ > /dev/ttyAMA0

老是用指令打电话,太麻烦了,虽然指令什么的逼格高。建立一个简单的GUI界面方便使用

树莓派+SIM模块自制简易手机

生产gui之后在代码后面加上

  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. def CALLA( self, event ):

  2. OUTAD=’ATD%s;r’ % (self.number.GetValue()) ##把拨号的命令放到变量,后面的那些是输入框里的数字

  3. print OUTAD

  4. ser.write(OUTAD) #写串口操作码

  5. def keyinnumber0( self, event ):

  6. self.number.WriteText(“0”) ##在文本框添加个数字0,前面1-9也是一样,用来输入号码

  7. def CALLH( self, event ):

  8. print ‘ATHr’

  9. ser.write(“ATHr”) #写串口操作码,挂断电话

最终实现的效果

树莓派+SIM模块自制简易手机