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

2015-07-08 18:44:24 +08:00
 GPU
用过RPi.GPIO 与 Writing Pi 但是他们都只能设置GPIO的高低电平啊

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

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

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

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

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


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

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

但是用i2c 的话 是不是我就要换蓝牙模块了
zhengnanlee
2015-07-09 23:38:20 +08:00
@GPU 不需要。无线收发字符在ZigBee里不需要用gpio。协议栈写好了主函数正常收发即可。主函数的无限循环可以是这个逻辑:模拟i2c从树莓派读取数据,判断处理,无线发送。从机一直查询蓝牙即可。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/204277

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX