查看: 9944|回复: 0

树莓派+SIM通信模块制作手机

[复制链接]
  • TA的每日心情
    开心
    2019-6-25 09:54
  • 签到天数: 216 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2014-11-30 17:01:11 | 显示全部楼层 |阅读模式
    分享到:
    title:树莓派+SIM模块制作手机
    器材准备:
    SIM900A 通讯模块  一个
    树莓派一台
    屏幕一个
    首先,在这里我使用的是SIM900A的通信模块最小版,已经把必要的IO都引出了,并集成了SIM卡槽,东西还是挺不错的。

    值得一提的是,SIM模块在启动的时候需要800mA以上的电流,虽然板子上也贴了两个很大的电容,但那还是完全不够用的,至少还得加上一个0.1F的电容才能保证上电的时候树莓派还能正常工作。当然,树莓派的供电也是非常重要的。特别是在拨打电话的时候,如果树莓派的供电电流达不到2A的话很有可能就会导致一打电话就重启……

    这是我自己焊上的一个0.1F的电解电容,比较难看~~
    以及需要注意的是,这个SIM模块的供电电压范围是3.6-4.5V,所以是不能直接用5V的电源来供电的,否则会烧坏模块。而3.3V又供不起~也是比较纠结。不过我们可以串联一个二极管来降压,注意使用的二极管必须是硅管,电压降必须是0.7V以上。否则有些二极管的电压降仅仅是0.3V的,降压的电压对模块还是很危险。
    这里我用的是1N4007的二极管,用了2个,目的就是增大电流……

    整个电路是这样的。
    还有麦克风没找到元件图所以就没画在上面,麦克风连接的是图里的第六根线,第七根是复位按钮。
    然后硬件上串口电源什么的和树莓派连接好,这里我用的是树莓派的GPIO的窗口。也就是/dev/ttyAMA0设备。
    要用这个设备得需要设置一下,把系统的调试什么的输出都关掉这样才能用这个串口。
    首先是/boot/cmdline.txt
    里面的内容,要把console=ttyAMA0,115200 kgdboc=ttyAMA0,115200这一段删掉以禁用串口调试。
    然后是/etc/inittab里的T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100用#注释掉或者直接删掉这行。
    然后就可以用树莓派的GPIO引脚的串口了。
    因为默认的波特率已经是115200了,所以不用过多的设置它。
    如果要调试我们可以用命令来进行串口调试:
    microcom -p /dev/ttyAMA0话说我发现串口貌似不会被独占,也就是说,你可以开一个进程来监听串口的内容,然后同时还能进行数据的发送,ttyAMA0设备不会提示说设备被占用无法打开,这点挺好的~也许就是串口的双向通讯吧。
    因为模块用的是AT指令,而这个指令也是有点略坑的,就是发送完命令必须要以<CR>标识符结尾,所以……bash上发送命令结尾都要加\r来发送<CR>这个标识符。比如下面的命令发送了个AT指令后如果通讯正常,那么模块将会返回一个OK。
    echo -e 'AT\r' > /dev/ttyAMA0至于操作命令,我们可以参考AT命令指令。这里我们打电话只需要2个命令就可以了,一个是拨打号码,一个是接听和挂断~
    当前就先介绍下打电话的指令吧。
    打电话的指令是ATD+号码;,比如要拨打10086,就使用下面的命令:
    echo -e 'ATD10086;\r' > /dev/ttyAMA0这里需要注意的是,号码后面一定要记得加分号,不然可能会打不出去哦~
    如果需要挂断,那就使用ATH命令即可。
    既然搞懂了通讯的方式,我就想要做个UI界面来进行交互式操作了,不然树莓派如果没有键盘是很蛋疼的……
    但是怎么办呢?我又不会QT,也不会python,只会bash……但bash不能做图形界面。而且QT还需要搭建一个编译环境,比较麻烦。最后我还是决定采用python了。因为python可以像bash那样直接运行而不需要编译。
    虽然我不会,但是我可以找方法嘛……最后百度到了一个支持python的界面设计软件wxFormBuilder,用这个就可以很方便的制作图形界面了。
    设计效果如下……

    而需要注意的是这个工具生成的图形界面代码和QT的图形设计工具比较类似,设计完后都需要一个main来运行这个窗口。
    所以在完成窗口的绘制后需要在生成的代码后面加上
    class App(wx.App):   def OnInit(self):      frame = MyFrame1(None)        ##这里为我们生成GUI的Frame类名      frame.Show()      return Trueapp = App()app.MainLoop()这样就可以把代码保存到树莓派上运行看到效果了。
    顺便分享一下我的拨号和挂断键的python代码,供大家参考。
            def CALLA( self, event ):                OUTAD='ATD%s;\r' % (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\r'                ser.write("ATH\r")      #写串口操作码,挂断电话
    自己给加了个桌面图标,看上去还不错吧~
    之前发过使用STM32F429开发板做树莓派的屏幕,那么就来张在STM32F429开发板上的屏幕运行的效果图~
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-12-19 02:08 , Processed in 0.116278 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.