python arduino 蓝牙_Raspberry Pi通过蓝牙与Arduino连接

本文介绍了如何使用Raspberry Pi通过蓝牙与Arduino Pro Mini建立连接,并提供了设备配置、蓝牙工具安装、设备配对与连接的步骤,以及双方的编程示例,实现了简单通信功能。
摘要由CSDN通过智能技术生成

** 刚刚开始接触如有错误请留言指正,多谢 **

设备

Raspberry Pi第三代B+版本

Arduino Pro Mini(5V,16MHz)w/ ATmega328 + 写入设备(或使用其他Arduino版本)

蓝牙HC-06

发光二极管1个

10千欧电阻1个

杜邦线若干

安装过程中所需要的包和工具

在 Python 环境下,使用“import bluetooth”如果报出错误信息“ImportError: No module named bluetooth”则说明没有安装相应的包,执行一下命令安装。

$ sudo apt-get update

$ sudo apt-get install bluetooth bluez python-bluez

连接蓝牙设备(Arduino)

使用下面的命令查看蓝牙的配置信息

$ hciconfig

使用下面的命令扫描可配对的设备

$ hcitool scan

进入$ bluetoothctl

[NEW] Controller B8:27:EB:D3:61:B0 raspberrypi [default]

[bluetooth]# agent on

Agent registered

[bluetooth]# default-agent

Default agent request successful

//扫描可配对的设备

[bluetooth]# scan on

Discovery started

[CHG] Controller B8:27:EB:D3:61:B0 Discovering: yes

[NEW] Device 00:14:01:10:10:32 HC-06

//连接设备

[bluetooth]# pair 00:14:01:10:10:32

Attempting to pair with 00:14:01:10:10:32

[CHG] Device 00:14:01:10:10:32 Connected: yes

Request PIN code

[agent] Enter PIN code: 1234

[CHG] Device 00:14:01:10:10:32 UUIDs:

00001101-0000-1000-8000-00805f9b34fb

[CHG] Device 00:14:01:10:10:32 Paired: yes

Pairing successful

//查看已连接的设备

[bluetooth]# paired-devices

Device 00:14:01:10:10:32 HC-06

//删除已经配对的设备

[bluetooth]# remove 00:14:01:10:10:32

[DEL] Device 00:14:01:10:10:32 HC-06

Device has been removed

测试是否能够ping通

$ sudo l2ping 00:14:01:10:10:32

连接Arduino的蓝牙设备

$ sudo rfcomm connect 0 00:14:01:10:10:32

Press CTRL-C for hangup

连接蓝牙设备后,会在树莓派的【/dev】目录中创建一个蓝牙设备的虚拟文件 /dev/rfcomm0 ,同时Arduino的蓝牙指示灯为常亮状态,表示“已连接”。

绑定Arduino的蓝牙设备

$ sudo rfcomm bind 0 00:14:01:10:10:32

绑定蓝牙设备后,也会在树莓派的【/dev】目录中创建 /dev/rfcomm0 文件,而此时Arduino的蓝牙指示灯为闪烁状态,表示“未连接”;当树莓派向蓝牙设备发送消息时才去做连接操作。

对已经绑定Arduino的蓝牙设备解除绑定

$ sudo rfcomm bind 0 00:14:01:10:10:32

解除绑定蓝牙设备后,文件 /dev/rfcomm0 消失了。

编程程序

Arduino:

void setup()

{

pinMode(11, OUTPUT);

digitalWrite(11, HIGH);

delay(500);

digitalWrite(11, LOW);

Serial.begin(9600);

}

void loop() {

while (Serial.available())

{

char c = Serial.read();

digitalWrite(11, HIGH);

delay(500);

digitalWrite(11, LOW); //收到消息指示灯(LED)闪一下

if (c == 'A')

{

Serial.println("B"); //收到A就返回B

} else {

Serial.println("Please input [A]"); //都是其他字符返回

}

}

}

python代码:

#coding=utf-8

#send to arduino

import serial

import sys

port = "/dev/rfcomm0"

serial = serial.Serial(port,9600)

if len(sys.argv) > 1:

sendStr = sys.argv[1]

else:

sendStr = "A"

serial.write(sendStr)

serial.flushInput()

if serial.isOpen() == False:

serial.open()

line = serial.readline()

print line

运行测试

如何测试就不发了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值