V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
GPU
V2EX  ›  Raspberry Pi

树莓派怎么样用 Python 控制 GPIO 来发送串口指令?

  •  
  •   GPU · 2015-07-08 18:44:24 +08:00 · 10751 次点击
    这是一个创建于 3429 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用过RPi.GPIO 与 Writing Pi 但是他们都只能设置GPIO的高低电平啊

    我需要用GPIO发送一些指令给蓝牙模块让蓝牙控制远端的从模块

    看了几篇貌似都是把系统的ttyAMA0 (pin 14、15)用来做串口的输入输出

    有没有方法用其他IO口也可以实现呢?
    27 条回复    2015-07-11 00:38:31 +08:00
    imydou
        1
    imydou  
       2015-07-08 19:52:35 +08:00
    貌似没有,所有类库都是通过操作文件系统实现高低电平
    GPU
        2
    GPU  
    OP
       2015-07-08 19:54:45 +08:00
    @imydou RPi.GPIO 是直接可以指定某个IO口 然后设置高低电平 ,但是这个只能是设置高低电平,不能发送英文命令
    wy315700
        3
    wy315700  
       2015-07-08 19:56:40 +08:00
    @GPU 做一个编码,
    choury
        4
    choury  
       2015-07-08 19:57:16 +08:00
    有硬件的串口干嘛要软件实现呢,用GPIO实现的话你自己设置高低电平然后根据波特率计算延时啊
    hardware
        5
    hardware  
       2015-07-08 20:00:43 +08:00
    感觉不如FT232转一下咯
    GPU
        6
    GPU  
    OP
       2015-07-08 20:42:11 +08:00
    @choury 你意思是说直接用树莓派的串口(14、15pin) ? 我只是想如果可以就不占用本身的串口

    @wy315700 是不是那个把指令编码成高低电平的程序? 我不清楚怎么去写。
    pathletboy
        7
    pathletboy  
       2015-07-08 20:50:11 +08:00
    要用到系统中断的,软串口得另外搞驱动。
    pathletboy
        8
    pathletboy  
       2015-07-08 20:51:55 +08:00
    gamexg
        9
    gamexg  
       2015-07-08 20:56:20 +08:00
    建议串口连接 Arduino ,底层的全部由 Arduino 来做。

    高级语言很难满足底层的时序要求。来个进程切换时序就完蛋了。
    GPU
        10
    GPU  
    OP
       2015-07-08 23:54:53 +08:00
    @gamexg Arduino 我还没有用过 ,不知道应该怎么弄


    @pathletboy 嗯 。我看看
    zhengnanlee
        11
    zhengnanlee  
       2015-07-09 00:10:55 +08:00 via Android
    你的蓝牙模块可不可以i2c呢?
    weyou
        12
    weyou  
       2015-07-09 01:12:44 +08:00
    看你的蓝牙模块的接口, 是不是支持i2c或者spi, 这两种总线接口RPi都支持, 并且有现成的python库可以用。

    如果这两种总线你的蓝牙模块都不支持,才需要考虑用GPIO来进行软模拟(bit banging)。试验过GPIO最高的切换频率只能到达30kHz左右,所以你的蓝牙通信的波特率也不能超过这个频率,你可以查看下你的蓝牙模块对通信频率的要求。
    GPU
        13
    GPU  
    OP
       2015-07-09 13:50:09 +08:00
    @zhengnanlee
    @weyou
    我的是 CC2540的主模块 CC2541 的从模块
    但是貌似我的主模块只有透传模式啊
    GPU
        14
    GPU  
    OP
       2015-07-09 14:46:38 +08:00
    我的主模块是一个 串口透传模块
    zhengnanlee
        15
    zhengnanlee  
       2015-07-09 19:03:01 +08:00 via Android
    @GPU 啊哈ZigBee。可以拿ZigBee模拟i2c,51代码直接用。rPi端用wiringPi或smbus都可以实现i2c。
    zhengnanlee
        16
    zhengnanlee  
       2015-07-09 19:04:21 +08:00 via Android
    GPU
        17
    GPU  
    OP
       2015-07-09 21:04:52 +08:00
    @zhengnanlee 我那个蓝牙貌似没有引出 i2c 的io口
    zhengnanlee
        18
    zhengnanlee  
       2015-07-09 21:27:06 +08:00 via Android
    任选二gpio,百度“51 i2c”,谷歌“51 i2c”
    GPU
        19
    GPU  
    OP
       2015-07-09 21:59:42 +08:00
    @zhengnanlee 我现在的两个蓝牙模块连接之后是透传模式 ,我是需要在主模块的串口上面发送字符串到从模块 ,然后从模块的单片机识别到字符串之后 再输出低电平 然后启动开关

    但是用i2c 的话 是不是我就要换蓝牙模块了
    zhengnanlee
        20
    zhengnanlee  
       2015-07-09 23:38:20 +08:00 via Android
    @GPU 不需要。无线收发字符在ZigBee里不需要用gpio。协议栈写好了主函数正常收发即可。主函数的无限循环可以是这个逻辑:模拟i2c从树莓派读取数据,判断处理,无线发送。从机一直查询蓝牙即可。
    GPU
        21
    GPU  
    OP
       2015-07-10 02:17:43 +08:00 via iPhone
    @zhengnanlee 我没有蓝牙编程的工具呢,现在的蓝牙模块只有串口透传功能
    zhengnanlee
        22
    zhengnanlee  
       2015-07-10 07:52:21 +08:00 via Android
    @GPU 并不明白你在说什么
    GPU
        23
    GPU  
    OP
       2015-07-10 12:07:56 +08:00
    @zhengnanlee 我现在买的 蓝牙模块 它主从模块连接之后 ,只有串口透传的功能 。而没有把i2c的引脚弄出来
    zhengnanlee
        24
    zhengnanlee  
       2015-07-10 12:32:09 +08:00 via Android
    @GPU 不是CC2540吗?
    zhengnanlee
        25
    zhengnanlee  
       2015-07-10 12:34:06 +08:00 via Android
    @GPU 如果你的CC2540没有引出别的io,单纯是数据传输的话,我建议换一个。
    GPU
        26
    GPU  
    OP
       2015-07-10 21:23:16 +08:00
    @zhengnanlee 是 CC2540 的 ,但是那个 信驰达的没有引出对应脚
    zhengnanlee
        27
    zhengnanlee  
       2015-07-11 00:38:31 +08:00 via Android
    @GPU 那就换一个设备吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1264 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:20 · PVG 02:20 · LAX 10:20 · JFK 13:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.