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
實作用戶端用來連線至伺服端,該函式庫與Ethernet
和WiFi
函式庫類似。 -
GSMServer
實作伺服端用來接收用戶端的請求,該函式庫與Ethernet
和WiFi
函式庫類似。(注:如果你發現有些操作在內部網路可以,可是在外部網路不行,檢視一下操作使用到的資料是否有限制) -
剩下還有幾個可以拿來當工具用的類別,一共有四個:
GSMModem
、GSMScanner
、GSMPIN
、GSMBand
。
Ethernet 函式庫相容
GSM
函式庫試著相容於 Ethernet
函式庫,如果要把原本使用 Ethernet
或 WiFi
函式庫寫成的程式移植成使用 GSM
函式庫應該可以簡單的完成。但有時沒辦法在完全不修改的情況下完成移植,做一些輕微的修改是必要的。
GSM 類別
該類別提供函式用來初始化 Arduino GSM shield
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.