python arduino 蓝牙_树莓和Arduino之间的蓝牙通讯
前言
原来是打算用nrf24来做树莓派和arduino的通讯,因为nrf24传的数据量有点小,现在改为用蓝牙来通讯
硬件准备(我的)
HC-05蓝牙
树莓派3b+
Arduino UNO
Arduino连接蓝牙
image.png
注意:
1.蓝牙的TX连接arduino的RX,RX连接TX
树莓派蓝牙准备
1.升级安装一下蓝牙的库
$sudo apt-get update
$sudo apt-get install bluetooth bluez python-bluez
2.打开蓝牙控制
$ bluetoothctl
[bluetooth]# agent on
Agent registered
[bluetooth]# default-agent
Default agent request successful
image.png
3.扫描蓝牙设备,找到HC-05的蓝牙id
[bluetooth]# scan on
Discovery started
image.png
复制红色方格中的id
4.配对蓝牙
[bluetooth]# pair xx:xx:xx:xx
image.png
输入PIN码(默认是1234)
最后会显示配对成功
5.连接蓝牙
我尝试用connect命令去连接蓝牙,但是会报错
$sudo rfcomm connect 0 00:14:01:10:10:32
image.png
image.png
这个地方蓝牙的连接是暂时不要着急的,可以先不连接,等到树莓派要向蓝牙发送信息或者蓝牙发信息过来给树莓派的时候系统就会自动连上
6.生成rfcomm0文件
//首先我们退出蓝牙控制
exit
//生成rfcomm0文件
sudo rfcomm bind 0 xx:xx:xx:xx(你的蓝牙ip)
然后你会发现在/dev目录下生成了一个新的文件
image.png
注意,这一步每次重启都要输入一次命令,因为重启之后那份文件自动被删除了
以上我们在硬件方面的准备就完成了,下面是代码
树莓派向Arduino发送数据
树莓派要使用python文件,我们可以打开编程,然后编写一段python代码好,然后编译什么的自己可以去查(也可以直接打开这份文件)
image.png
树莓派代码
#coding=utf-8
import serial
from time import sleep
port='/dev/rfcomm0'
ser=serial.Serial(port,9600)
while(1):
ser.write(bytes("A",'utf-8')) #serial只能传bytes了而不是string
sleep(.8) #防止串口阻塞
Arduino代码
void setup() {
Serial.begin(9600);
}
void loop() {
char a;
if(Serial.available()){
a=Serial.read();
Serial.println(a);
}
delay(800);
}
效果
image.png
树莓派接受Arduino数据
树莓派代码
#coding=utf-8
import serial
from time import sleep
port='/dev/rfcomm0'
ser=serial.Serial(port,9600)
ser.flushInput() #初始清空一下串口
while(1):
n = ser.inWaiting() #自己去查查
if(n):
a=ser.read(n)
print(a)
sleep(.8)
Arduino代码
char a[200];
char b[200];
char c[200];
void setup() {
Serial.begin(9600);
for(int i=0;i<200;i++)
{
a[i]='1';
b[i]='2';
c[i]='3';
}
}
void loop() {
for(int i=0;i<10;i++){
Serial.write(a[i]);
}
for(int i=0;i<10;i++){
Serial.write(b[i]);
}
for(int i=0;i<10;i++){
Serial.write(c[i]);
}
delay(800);
}
效果
image.png
小技巧:
HC-05连接之后闪烁变慢,未连接时候闪烁的很快
python arduino 蓝牙_树莓和Arduino之间的蓝牙通讯相关推荐
- arduino服务器_如何使用Arduino检查Web服务器的响应状态
arduino服务器 by Harshita Arora 通过Harshita Arora 如何使用Arduino检查Web服务器的响应状态 (How to use Arduino to check ...
- arduino nano 蓝牙_贸泽开售结合蓝牙5.2与USB 2.0的 Nordic Semiconductor nRF52820多协议SoC...
专注于引入新品并提供海量库存的电子元器件分销商贸泽电子 (Mouser Electronics) 即日起开售Nordic Semiconductor的nRF52820多协议片上系统 (SoC).此款S ...
- arduino绘图_如何使用Arduino构建绘图仪
arduino绘图 回到学校后,在科学系的一个壁橱里藏着一台HP绘图仪. 我玩了一段时间,一直想拥有自己的一个. 快进很多年. 步进电机很容易买到,我又开始使用电子设备和微控制器做事,最近我看到有人用 ...
- arduino液位传感器_如何使用Arduino + VL53L0X来制作液位感应设备
在本篇文章中,您将学习到如何使用Arduino开发板.OLED显示屏和VL53L0X传感器模块制作非接触式液位感应设备.该感应器设备能够检测任何种类的容器中的液位! 液位测量的不同方法 大多数时候,工 ...
- arduino 电压表_如何使用Arduino制作数字电压表
arduino 电压表 by Harshita Arora 通过Harshita Arora 如何使用Arduino制作数字电压表 (How to make a digital voltmeter u ...
- visual 对话框之间调用_两套S71200之间实现S7通讯的方法
S7-1200 的 PROFINET 通信口可以做 S7 通信的服务器端或客户端(CPU V2.0及以上版本).S7-1200 仅支持 S7 单边通信,仅需在客户端单边组态连接和编程,而服务器端只准备 ...
- mtu蓝牙_一分钟读懂低功耗蓝牙(BLE)MTU交换数据包
一分钟读懂低功耗蓝牙连接数据 包 " ) 做个对比就可以知道 BLE MTU 比较小(不过新的 BLE 标准 MTU 已经大幅提升,详见 即将发表在 VIEWTOOL BBS 上的后续文章) ...
- 树莓和Arduino之间的蓝牙通讯
前言 原来是打算用nrf24来做树莓派和arduino的通讯,因为nrf24传的数据量有点小,现在改为用蓝牙来通讯 硬件准备(我的) HC-05蓝牙 树莓派3b+ Arduino UNO Arduin ...
- arduino蓝牙通讯代码_在两块Arduino开发板之间实现蓝牙通信
HC-05蓝牙模块是任何Arduino项目必不可少的蓝牙模块!很容易进行连接以及在Arduino IDE中编写代码.在大多数项目中,我们通常将HC05连接至Arduino,并使用它与其他智能设备(如手 ...
- arduino nano 蓝牙_用Arduino玩转掌控板(ESP32):ESP32概述与Arduino软件准备
前言 近年来,掌控板(英文名:mPython)在创客教育中应用越来越广泛.掌控板集成了 ESP32 高性能双核芯片,具备 WiFi 和蓝牙连接功能,同时在板子上又配置了丰富的传感器,最重要的是它是专门 ...
最新文章
- 《JavaScript面向对象精要》读书笔记
- CV:基于Keras利用CNN主流架构之mini_XCEPTION训练性别分类模型hdf5并保存到指定文件夹下
- java的数据类型如下所示
- java8 迭代set集合_JavaSE(八)集合之Set
- 单片机中存储器扩展位地址线怎么算_51单片机CPU结构各部件的原理详细分析
- 用于存储过程的ASP.NET Core Blazor和EF Core原始SQL查询
- 大数据 (016)Hadoop-MR编程 -- 【使用hadoop计算微博用户可能喜欢的关键词----编程】
- Juniper Junos与思科IOS对比配置逻辑合理性
- 初学者用什么数位板好,手绘板选择注意什么?
- python画球matplotlib_python – matplotlib中的球面坐标图
- 为什么文本框里的字只显示一半_word字体显示不全及显示一半怎么回事?
- Python3.7在 Geany下编译出现SyntaxError: Non-UTF-8 code starting with '\xb3'错误及实例化方法时提示没有实参的解决方法。
- 数学与泛型编程(6)编程的基本概念
- [跨境工具通]SHOPIFY有哪些好用的流量推广工具?10款免费工具了解一下~
- win8安装sql server2005方法
- (301,302,304,404,500)等HTTP状态码含义
- Unity3D - 【Terrain】树木与草地
- 示例:WPF开发的步骤进度控件
- Opportunity
- Navbar:导航栏的位置