華文網

樹莓派+SIM模組自製簡易手機

現在手機滿街都是,對於技術宅來說,買一個多沒意思呀。自己做一個才算是完美是不是

首先準備材料

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") #寫串口操作碼,掛斷電話

最終實現的效果