このDIYのプロジェクトでは、構築しようとしている ラズベリーパイを使ってシンプルな携帯電話GSMモジュールを作るか、呼び出しに応答して送信したり、SMSを読み取るために使用されているが、、 そしてまたこのラズベリーパイの携帯電話は、この上の話にマイクとスピーカーを持っています電話。 このプロジェクトは、GSMモジュールとRaspberry Piの適切なインターフェースとしても機能し、 電話の基本機能を操作するために必要なすべてのコードを備えています。以前、Arduinoを使用して同じ種類のシンプルな携帯電話を構築しました。こちらを確認してください
必要なコンポーネント:
- Raspberry Pi 3(任意のモデル)
- GSMモジュール
- 16x2 LCD
- 4x4キーパッド(ユーザーはメンブレンキーパッドを使用できます)
- 10kポット
- ブレッドボード
- ジャンパー線の接続
- 電源
- スピーカー
- MIC
- SIMカード
- スピーカー
- オーディオアンプ回路(オプション)
作業説明:
この RaspberryPi携帯電話プロジェクトでは、GSMモジュールとRaspberry Pi 3を使用して、システム全体の機能を制御し、このシステムのすべてのコンポーネントをインターフェースしました。 英数字キーパッドは、4×4 のような入力のすべての種類を取るために使用されている:携帯電話番号、タイプのメッセージを入力しますが、呼び出し、送信SMSを受信、電話をかける、などSMS読み GSMモジュールSIM900Aを 呼び出すとメッセージングのためのネットワークと通信するために使用されます目的。また 、音声通話 と呼び出し音用のMICとスピーカーを接続し、 16x2 LCD を使用してメッセージ、指示、アラートを表示します。
英数字 は、同じキーパッドを使用して数字とアルファベットの両方を入力する方法です。この方法では、4x4キーパッドをRaspberry Piとインターフェースし、アルファベットも受け入れるためのコードを記述しました 。以下のコードセクションのコードを確認してください 。
このプロジェクトの作業は簡単です。すべての機能は、英数字キーパッドを使用して実行されます。 プロセスを正しく理解するには、以下の完全なコードとデモビデオを確認してください 。ここでは、以下のプロジェクトの4つの機能すべてについて説明します。
Raspberry Pi携帯電話の4つの機能の説明:
1.電話をかける:
Raspberry Piベースの電話を使用して電話をかけるには、「C」を押してから、電話をかける携帯電話番号を入力する必要があります。数字は英数字キーパッドを使用して入力されます。番号を入力した後、もう一度「C」を押す必要があります。これで、Raspberry Piは、ATコマンドを使用して、入力された番号に通話を接続するための処理を行います。
ATDxxxxxxxxxx;
2.電話を受ける:
電話を受けるのはとても簡単です。誰かがGSMモジュールにあるシステムSIM番号に電話をかけていると、システムはLCDに「着信…」メッセージと発信者の着信番号を表示します。この通話に参加するには、「A」を押す必要があります。「A」を押すと、RaspberryPiは指定されたコマンドをGSMモジュールに送信します。
ATA
3. SMSを送信します:
Raspberry Piベースの電話を使用してSMSを送信する場合は、「D」を押す必要があります。これで、システムは受信者番号を要求します。これは、SMSを送信する「相手」を意味します。番号を入力した後、もう一度「D」を押す必要があり、LCDがメッセージを要求します。次に、通常のモバイルで入力するように、キーパッドを使用してメッセージを入力する必要があります。メッセージを入力した後、SMSを送信するにはもう一度「D」を押す必要があります。SMSを送信するにはRaspberryPiは指定されたコマンドを送信します。
AT + CMGF = 1
そして、SMSを送信するためにGSMに26を送信します。
4. SMSの受信と読み取り:
この機能も簡単です。この場合、GSMはSMSを受信し、SIMカードに保存します。また、Raspberry Piは、UARTを介して受信したSMS表示を継続的に監視します。新しいメッセージがあるときはいつでも、LCDは「新しいメッセージ」テキストを表示し、SMSを読むために「B」を押す必要があります。SMS受信の表示は次のとおりです。
+ CMTI:“ SM”、6ここで、6はSIMカードに保存されたメッセージの場所です。
Raspberry Piがこの「SMS受信」表示を取得すると、SMSの保存場所を抽出し、受信したSMSを読み取るコマンドをGSMに送信します 。そして、LCD上に「新しいメッセージ」のテキストを表示します。
AT + CMGR =
これで、GSMは保存されたメッセージをRaspberry Piに送信し、次にRaspberry PiがメインSMSを抽出して、LCDに表示します。
注:MICとスピーカーのコーディングはありません。
プロセスを正しく理解するには、以下の完全なコードとデモビデオを確認してください 。
回路図と説明:
16x2 LCDピンRS、EN、D4、D5、D6、およびD7は、それぞれRaspberry PiのGPIOピン番号18、23、24、25、8、および7に接続されています。GSMモジュールのRxピンとTxピンは、それぞれRaspberry PiのピンTxとRxに直接接続されています(Raspberry PiのグラウンドとGSMは相互に接続する必要があります)。4x4キーパッド行ピンR1、R2、R3、R4はRaspberry PiのGPIOピン番号12、16、20、21に直接リンクされ、キーパッドC1、C2、C3、C4の列ピンはGPIOピン番号26、19、ラズベリーパイの13と6。MICはGSMモジュールのmic +とmic-に直接接続され、スピーカーはこのオーディオアンプ回路の助けを借りてGSMモジュールのsp +とsp-ピンに接続されて出力オーディオを増幅します。このオーディオアンプ回路はオプションであり、このオーディオアンプなしでスピーカーをGSMモジュールに直接接続できます。
プログラミングの説明:
このRaspberryPi携帯電話のプログラミング部分は、初心者にとっては少し複雑です。 ここでは、プログラムにPython言語を使用 しています。Raspberry Piの初心者の場合は、RaspberryPiの使用開始およびPiでのRaspbianJessieOSのインストールと構成に関する以前のチュートリアルを確認する必要があります。
このコードでは、数値を入力するための単純なキーパッドとインターフェイスするための def keypad(): 関数を作成しました。また、アルファベットを入力するために、 def alphaKeypad() を作成しました 。 これにより、同じキーパッドを使用してアルファベットを入力することもできます。これで、このキーパッドをArduinoキーパッドライブラリと同じように多機能にすることができました。このキーパッドを使用すると、10個のキーだけを使用して文字と整数を入力できます。
キー2(abc2)を押すと、「a」が表示され、もう一度押すと「a」が「b」に置き換えられ、もう一度3回押すと、同じ場所に「c」が表示されます。 LCDで。キーを押してからしばらく待つと、カーソルが自動的にLCDの次の位置に移動します。これで、次の文字または数字を入力できます。同じ手順が他のキーにも適用されます。
def keypad():for j in range(4):gpio.setup(COL、gpio.OUT)gpio.output(COL、0)ch = 0 for i in range(4):if gpio.input(ROW)= = 0:ch = MATRIX return ch while(gpio.input(ROW)== 0):pass gpio.output(COL、1)
def alphaKeypad():lcdclear()setCursor(x、y)lcdcmd(0x0f)msg = "" while 1:key = 0 count = 0 key = keypad()if key == '1':ind = 0 maxInd = 6 Key = '1' getChar(Key、ind、maxInd)…………………。
まず、このpythonスクリプトには、LCD、キーパッド、およびその他のコンポーネントに必要なライブラリと定義済みのピンがいくつか含まれています。
import RPi.GPIO as gpio import serial import time msg = "" alpha = "1!@。、:?ABC2DEF3GHI4JKL5MNO6PQRS7TUV8WXYZ90 *#" x = 0 y = 0 MATRIX = 、、、] ROW = COL =……………..。
次に、ピンに指示を与えます。
gpio.setwarnings(False)gpio.setmode(gpio.BCM)gpio.setup(RS、gpio.OUT)gpio.setup(EN、gpio.OUT)gpio.setup(D4、gpio.OUT)gpio.setup(D5、 gpio.OUT)gpio.setup(D6、gpio.OUT)gpio.setup(D7、gpio.OUT)gpio.setup(led、gpio.OUT)gpio.setup(buz、gpio.OUT)gpio.setup(m11、 gpio.OUT)gpio.setup(m12、gpio.OUT)gpio.setup(button、gpio.IN)gpio.output(led、0)gpio.output(buz、0)gpio.output(m11、0)gpio。 output(m12、0)
次に、以下のようにシリアル通信を初期化します。
Serial = serial.Serial( "/ dev / ttyS0"、baudrate = 9600、timeout = 2)
次に、LCDを駆動するための関数を作成する必要があります。関数 deflcdcmd(ch): LCDにコマンドを送信するために使用され、 def lcdwrite(ch): 関数はLCDにデータを送信するために使用されます。これらの関数とともに、 def lcdclear(): はLCDをクリアするために使用され、 def setCursor(x、y): はLCDでカーソル位置を設定するために使用され、 def lcdprint(Str): はLCDに文字列を印刷するために使用されます。
def lcdcmd(ch):gpio.output(RS、0)gpio.output(D4、0)gpio.output(D5、0)gpio.output(D6、0)gpio.output(D7、0)if ch&0x10 == 0x10:gpio.output(D4、1)……………..。
def lcdwrite(ch):gpio.output(RS、1)gpio.output(D4、0)gpio.output(D5、0)gpio.output(D6、0)gpio.output(D7、0)if ch&0x10 == 0x10:gpio.output(D4、1)if ch&0x20 == 0x20:gpio.output(D5、1)……………..。
def lcdclear():lcdcmd(0x01)def lcdprint(Str):l = 0; l = len(Str)for i in range(l):lcdwrite(ord(Str))def setCursor(x、y):if y == 0:n = 128 + x elif y == 1:n = 192 + x lcdcmd(n)
この後、SMSの送信、SMSの受信、電話の発信、および電話への参加のためのいくつかの関数を作成する必要があります。
関数 defcall():呼び出し を行うために使用されます。また、関数 def receiveCall(data): は、LCDに着信メッセージと番号を表示するために使用されます。最後に、 def 出席コール (): 呼び出しに参加するために使用されます。
機能 sendSMS DEFは(): の助けを借りて、メッセージを書いて、送信するために使用され alphaKeypad() 関数。また、関数 def receiveSMS(data): SMSの場所の受信と取得に使用されます。最後に、 def readSMS(index): は、LCDにメッセージを表示するために使用されます。
上記のすべての関数は、以下のコードにあります。
これが、GSMモジュールを使用してRaspberryPiを携帯電話に変換する方法です。このラズベリーパイタッチスクリーンスマートフォンもチェックしてください。