GSM 函式庫

GSM 函式庫從 86Duino Coding 103 開始支援。

如何連接 86Duino 和 Arduino GSM shield 可以參考這篇教學

86Duino 連接了 Arduino GSM shield 後,配合 GSM 函式庫可以實現手機大部分的功能,像是播打/接聽電話、收發簡訊、連上 GPRS 網路。

Arduino GSM shield 上有一個數據機把從 86Duino 接收到的資料傳送到 GSM 網路。Arduino GSM shield 的數據機上有串列埠(UART),要控制 Arduino GSM shield 時,必須傳送 AT 指令到這個串列埠。GSM 函式庫把 AT 指令包裝成簡單易懂的函式,像是播打電話如果用 AT 指令做,可能需要下好幾個 AT 指令並且做額外的判斷,使用 GSM 函式庫只要用一個函式就可以打電話。

函式庫結構

GSM 函式庫有許多功能,這些功能可以區分為以下七大類別:

  • GSM 類別完成初始化 Arduino GSM shield 並連接上 GSM 網路的功能,接著才能使用其他的功能(如:收發簡訊),因此要使用其他的 GSM/GPRS 功能之前必須先使用 GSM 類別完成基礎的設定。
  • GSMVoiceCall 類別提供播打/接聽電話相關的功能。
  • GSM_SMS 類別提供收發簡訊相關的功能。
  • GPRSClass 類別用來連接網路。
  • GSMClient 實作用戶端用來連線至伺服端,該函式庫與 EthernetWiFi 函式庫類似。
  • GSMServer 實作伺服端用來接收用戶端的請求,該函式庫與 EthernetWiFi 函式庫類似。(注:如果你發現有些操作在內部網路可以,可是在外部網路不行,檢視一下操作使用到的資料是否有限制)
  • 剩下還有幾個可以拿來當工具用的類別,一共有四個:GSMModemGSMScannerGSMPINGSMBand

Ethernet 函式庫相容

GSM 函式庫試著相容於 Ethernet 函式庫,如果要把原本使用 EthernetWiFi 函式庫寫成的程式移植成使用 GSM 函式庫應該可以簡單的完成。但有時沒辦法在完全不修改的情況下完成移植,做一些輕微的修改是必要的。

GSM 類別

該類別提供函式用來初始化 Arduino GSM shield

GSM
begin()
shutdown()

GSMVoiceCall 類別

該類別提供函式完成電話相關功能,使用電話功能時必須加上麥克風和喇叭

GSMVoiceCall
getVoiceCallStatus()
ready()
voiceCall()
answerCall()
hangCall()
retrieveCallingNumber()

GSM_SMS 類別

該類別提供函式完成簡訊(Short Message Service, SMS)相關功能

GSM_SMS
beginSMS()
ready()
endSMS()
available()
remoteNumber()
read()
write()
print()
peek()
flush()

GPRS 類別

該類別提供函式以 TCP 協定連接網路

GPRS
attachGPRS()

GSMClient 類別

該類別實作用戶端,藉以連接伺服端並與之溝通

GSMClient
ready()
connect()
beginWrite()
write()
endWrite()
connected()
read()
available()
peek()
flush()
stop()

GSMServer 類別

該類別實作伺服端,藉以處理用戶端的請求

GSMServer
ready()
beginWrite()
write()
endWrite()
read()
available()
stop()

GSMModem 類別

該類別提供函式診斷 Arduino GSM shield 的狀態

GSMModem
begin()
getIMEI()

GSMScanner 類別

該類別提供函式診斷電信網路的狀態

GSMScanner
begin()
getCurrentCarrier()
getSignalStrength()
readNetworks()

GSMPIN 類別

該類別提供函式處理與 SIM 卡溝通的功能

GSMPIN
begin()
isPIN()
checkPIN()
checkPUK()
changePIN()
switchPIN()
checkReg()
getPINUsed()
setPINUsed()

GSMBand 類別

該類別提供函式設定和取得 Arduino GSM shield 目前使用的頻段

GSMBand
begin()
getBand()
setBand()

範例

以下是 Arduino 使用 GSM 函式庫的範例,這些範例在 86Duino 上都可以正常運作:

Make Voice Call:播打電話到透過序列埠監控視窗輸入的電話號碼
Receive Voice Call:監控是否有來電,如果偵測到有來電就接聽
Send SMS:透過序列埠監控視窗輸入電話號碼和簡訊內容,接著傳送簡訊
Receive SMS:監控是否有收到簡訊,收到簡訊時把簡訊內容輸出到序列埠監控視窗


函式庫參考主頁面

The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.