返回目录:金融新闻
现在手机满街都是,对于技术宅来说,买一个多没意思呀。自己做一个才算是完美是不是
首先准备材料
SIM900A 通讯模块 一个
树莓派一台
屏幕一个
SIM900A的通信模块最小版,已经把必要的IO都引出了,并集成了SIM卡槽,东西还是挺不错的,就是有个对于树莓派小缺点。模块在启动的时候需要800mA以上的电流。树莓派的供电是在捉急,需要改一下供电电路才能正常使用。否则树莓派重启,特别是打电话的时候。
这个SIM模块的供电电压范围是3.6-4.5V,所以是不能直接用5V的电源来供电的,否则会烧坏模块。而3.3V又供不起。可以串联一个二极管来降压,注意使用的二极管必须是硅管,电压降必须是0.7V以上。否则有些二极管的电压降仅仅是0.3V的,降压的电压对模块还是很危险
然后把模块通过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界面方便使用
生产gui之后在代码后面加上
class App(wx.App):
def OnInit(self):
frame = MyFrame1(None) ##这里为我们生成GUI的Frame类名
frame.Show()
return True
app = App()
app.MainLoop()
拨号和挂断键的代码
def CALLA( self, event ):
OUTAD='ATD%s;\\r' % (self.number.GetValue()) ##把拨号的命令放到变量,后面的那些是输入框里的数字
print OUTAD
ser.write(OUTAD) #写串口操作码
def keyinnumber0( self, event ):
self.number.WriteText("0") ##在文本框添加个数字0,前面1-9也是一样,用来输入号码
def CALLH( self, event ):
print 'ATH\\r'
ser.write("ATH\\r") #写串口操作码,挂断电话
最终实现的效果