現在手機滿街都是,
對於技術宅來說,
買一個多沒意思呀。
自己做一個才算是完美是不是
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;' > /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;' % (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'
ser.write("ATH") #寫串口操作碼, 掛斷電話
最終實現的效果