在这个DIY项目中,我们将使用Raspberry Pi构建一个 简单的手机,其中GSM模块用于拨打或接听电话以及发送或读取SMS , 并且该Raspberry Pi手机还具有麦克风和扬声器以对此进行讨论。电话。 该项目还将用作GSM模块与Raspberry Pi的正确 接口,以及操作任何电话基本功能所需的所有代码。以前我们使用Arduino构建了相同类型的简单手机,请在此处查看
所需组件:
- Raspberry Pi 3(任何型号)
- GSM模块
- 16x2 LCD
- 4x4键盘(用户可以使用薄膜键盘)
- 1万锅
- 面包板
- 连接跳线
- 电源供应
- 扬声器
- 麦克风
- SIM卡
- 扬声器
- 音频放大器电路(可选)
工作说明:
在这个 Raspberry Pi移动电话项目中,我们使用GSM模块和Raspberry Pi 3来控制整个系统的功能并连接该系统中的所有组件。甲 4x4的字母数字键盘 用于拍摄所有种像输入:输入手机号码,类型消息,拨打电话,接听电话,发送短信,读取短信等 GSM模块SIM900A 用于与网络进行通信用于呼叫和消息目的。我们还连接了一个 MIC和一个用于语音呼叫 和铃声的扬声器,一个 16x2 LCD 用于显示消息,说明和警报。
字母数字 是一种使用相同的键盘输入数字和字母的方法。在这种方法中,我们已经将4x4键盘与Raspberry Pi连接起来,并且还编写了接受字母的代码,请在 下面的代码部分中查看代码 。
这个项目的工作很容易。所有功能将通过使用字母数字键盘执行。查看下面的 完整代码和演示视频 以正确了解该过程。在这里,我们将解释以下项目的所有四个功能。
解释Raspberry Pi手机的四个功能:
1.拨打电话:
要使用基于Raspberry Pi的电话拨打电话,我们必须按“ C”,然后需要输入要拨打电话的手机号码。使用字母数字键盘输入数字。输入数字后,我们再次需要按“ C”。现在,Raspberry Pi将使用AT命令处理将呼叫连接到输入号码的过程:
ATDxxxxxxxxxx;
2.接听电话:
接听电话非常容易。当有人呼叫您的系统SIM卡号(位于GSM模块中)时,您的系统将在LCD上显示“ Incoming…”消息,显示呼叫者的来话号码。现在我们只需要按'A'即可参加此通话。当我们按“ A”时,Raspberry Pi将给定命令发送到GSM模块:
ATA
3.发送短信:
当我们想使用基于Raspberry Pi的Phone发送短信时,我们需要按'D'。现在,系统将询问收件人号码,即我们要向其发送SMS的“收件人”。输入数字后,我们需要再次按'D',现在LCD询问信息。现在,我们需要像使用普通手机一样输入信息,方法是使用键盘,然后在输入信息后再次按“ D”键发送短信。要发送短信,Raspberry Pi发送给定命令:
AT + CMGF = 1
并向GSM发送26发送短信。
4.接收和阅读短信:
此功能也很简单。在这种情况下,GSM将接收SMS并将其存储在SIM卡中。并且Raspberry Pi持续监视通过UART接收到的SMS指示。每当有新消息时,LCD上都会显示“新消息”文本,然后我们只需按“ B”键即可阅读SMS。SMS收到的指示是:
+ CMTI:“ SM”,6其中6是存储在SIM卡中的消息位置。
当Raspberry Pi收到此“接收到SMS”指示时,它将提取SMS存储位置,并向GSM发送 命令以读取接收到的SMS。并在液晶显示屏上显示“新消息”文本。
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链接, Raspberry Pi的13和6。MIC直接连接到GSM模块的mic +和mic-,扬声器借助此音频放大器电路连接到GSM模块的sp +和sp-引脚,以放大输出音频。该音频放大器电路是可选的,无需该音频放大器,您就可以直接将扬声器连接到GSM模块。
编程说明:
对于初学者来说,此Raspberry Pi移动电话的编程部分有些复杂。我们在 这里使用 Python语言编写程序。如果您是Raspberry Pi的初学者,则应查看我们以前的教程,以了解Raspberry Pi入门以及在Pi中安装和配置Raspbian Jessie OS。
在此代码中,我们创建了 def keyboard(): 函数,用于连接用于输入数字的简单键盘。为了输入字母,我们创建了 def alphaKeypad(): 这样,同样的键盘也可以用于输入字母。现在,我们使该键盘具有与Arduino键盘库相同的多功能性。通过使用此键盘,我们仅使用10个键就可以输入字符和整数。
就像我们按键2(abc2)一样,它将显示“ a”,如果再次按它,则它将替换“ a”为“ b”,如果再次按三下,它将在同一位置显示“ c”在LCD中。如果我们在按键后等待一段时间,光标将自动移至LCD的下一个位置。现在我们可以输入下一个字符或数字。其他键也使用相同的步骤。
def小键盘():用于范围(4)中的j:gpio.setup(COL,gpio.OUT)gpio.output(COL,0)ch = 0用于范围(4)中的i:如果gpio.input(ROW)= = 0:ch = MATRIX返回ch而(gpio.input(ROW)== 0):传递gpio.output(COL,1)
def alphaKeypad():lcdclear()setCursor(x,y)lcdcmd(0x0f)msg =“”,而1:key = 0计数= 0 key = keypad()如果key =='1':ind = 0 maxInd = 6 Key ='1'getChar(Key,ind,maxInd)……………..
首先,在此python脚本中,我们包含了一些必需的库并为LCD,键盘和其他组件定义了引脚:
导入RPi.GPIO作为gpio导入串行导入时间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(按钮,gpio.IN)gpio.output(led,0)gpio.output(buz,0)gpio.output(m11,0)gpio。输出(m12,0)
然后像下面这样初始化串行通信:
串行= serial.Serial(“ / dev / ttyS0”,波特率= 9600,超时= 2)
现在我们需要编写一些驱动LCD的功能。函数 def lcdcmd(ch): 用于向LCD发送命令,而 def lcdwrite(ch): 用于向LCD发送数据。与这些函数一起, def lcdclear(): 用于清除LCD, def setCursor(x,y): 用于在LCD上设置光标位置, def lcdprint(Str): 用于在LCD上打印字符串。
def lcdcmd(ch):如果ch&0x10 ==,则gpio.output(RS,0)gpio.output(D4,0)gpio.output(D5,0)gpio.output(D6,0)gpio.output(D7,0) 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)如果ch&0x10 == 0x10:如果ch&0x20 == 0x20:gpio.output(D5,1)…………….
def lcdclear():lcdcmd(0x01)def lcdprint(Str):l = 0; l = len(Str)表示范围(l)中的i:lcdwrite(ord(Str))def setCursor(x,y):如果y == 0:n = 128 + x elif y == 1:n = 192 + x液晶显示器
此后,我们需要编写一些用于发送SMS,接收SMS,拨打电话和参加电话的功能。
函数 def call(): 用于进行调用。而函数 def receiveCall(data): 用于在LCD上显示传入的消息和号码。最终 def AttenCall(): 用于参加呼叫。
函数 def sendSMS(): 用于在 alphaKeypad() 函数的帮助下编写和发送消息。和函数 def receiveSMS(data): 用于接收和检索SMS的位置。最后 def readSMS(index): 用于在LCD上显示消息。
您可以在下面的代码中找到上述所有功能。
因此,这就是您如何借助GSM模块将Raspberry Pi转换为手机。还要检查此Raspberry Pi触摸屏智能手机。