树莓派怎么样用 Python 控制 GPIO 来发送串口指令? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
GPU

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

  •  
  •   GPU 2015 年 7 月 8 日 11287 次点击
    这是一个创建于 3944 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用过RPi.GPIO 与 Writing Pi 但是他们都只能设置GPIO的高低电平啊

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

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

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

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

    高级语言很难满足底层的时序要求。来个进程切换时序就完蛋了。
    GPU
        10
    GPU  
    OP
       2015 年 7 月 8 日
    @gamexg Arduino 我还没有用过 ,不知道应该怎么弄


    @pathletboy 嗯 。我看看
    zhengnanlee
        11
    zhengnanlee  
       2015 年 7 月 9 日 via Android
    你的蓝牙模块可不可以i2c呢?
    weyou
        12
    weyou  
       2015 年 7 月 9 日
    看你的蓝牙模块的接口, 是不是支持i2c或者spi, 这两种总线接口RPi都支持, 并且有现成的python库可以用。

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

    但是用i2c 的话 是不是我就要换蓝牙模块了
    zhengnanlee
        20
    zhengnanlee  
       2015 年 7 月 9 日 via Android
    @GPU 不需要。无线收发字符在ZigBee里不需要用gpio。协议栈写好了主函数正常收发即可。主函数的无限循环可以是这个逻辑:模拟i2c从树莓派读取数据,判断处理,无线发送。从机一直查询蓝牙即可。
    GPU
        21
    GPU  
    OP
       2015 年 7 月 10 日 via iPhone
    @zhengnanlee 我没有蓝牙编程的工具呢,现在的蓝牙模块只有串口透传功能
    zhengnanlee
        22
    zhengnanlee  
       2015 年 7 月 10 日 via Android
    @GPU 并不明白你在说什么
    GPU
        23
    GPU  
    OP
       2015 年 7 月 10 日
    @zhengnanlee 我现在买的 蓝牙模块 它主从模块连接之后 ,只有串口透传的功能 。而没有把i2c的引脚弄出来
    zhengnanlee
        24
    zhengnanlee  
       2015 年 7 月 10 日 via Android
    @GPU 不是CC2540吗?
    zhengnanlee
        25
    zhengnanlee  
       2015 年 7 月 10 日 via Android
    @GPU 如果你的CC2540没有引出别的io,单纯是数据传输的话,我建议换一个。
    GPU
        26
    GPU  
    OP
       2015 年 7 月 10 日
    @zhengnanlee 是 CC2540 的 ,但是那个 信驰达的没有引出对应脚
    zhengnanlee
        27
    zhengnanlee  
       2015 年 7 月 11 日 via Android
    @GPU 那就换一个设备吧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     934 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 19:13 PVG 03:13 LAX 12:13 JFK 15:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86