前言
这是一篇偏向教程的文章,若是实践的话,需要一些电路知识,arduino的基础知识,raspbain
Desktop 的基本使用基础。若有问题欢迎公众号后台留言。
1. 目标
arduino UNO 将 HC-SR501 MQ136 传感器采集的数据
通过蓝牙模块 HC-06 发送,树莓派调用python,使用 蓝牙获取数据并显示。
2. 实现方法
2.1 arduino UNO 接线图之 MQ-136
Ardunio A0 pin Sensor A0Arduino 5V pin Sensor VccArduino GND pin Sensor GND
2.2 arduino UNO 接线图之 HC-SR501
2.3 arduino UNO 接线图之 HC-06
VCC
VCCGND GNDTXD D10RXD D11
2.4 arduino 代码实现
#include
SoftwareSerial BT(10, 11);int sensor=A0; //analog in mq-136int
sensorValue = 0; // intial sensor valueint pirPin = 7; //
HC-SR501int pirValue; //inital sensor value// creates a "virtual"
serial port/UART// connect BT module TX to D10// connect BT module
RX to D11// connect BT Vcc to 5V, GND to GNDvoid setup(){// set
digital pin to control as an outputpinMode(13, OUTPUT);// set the
data rate for the SoftwareSerial portBT.begin(9600);// Send test
message to other deviceBT.println("Hello from Arduino");}
char a; // stores incoming character from other devicevoid
loop(){if (BT.available()) // if text arrived in from BT
serial...{a=(BT.read());if (a=='1') // raspberry send "1" ,then UNO
reply datas{//digitalWrite(13, HIGH);//BT.println("LED
on");sensorValue=analogRead(sensor); //read input from
MQ-136pirValue = digitalRead(pirPin); //get value from
HC-SR501delay(1000); // slow down serial
port{BT.print("MQ135:");BT.println(sensorValue,DEC); //print MQ-135
sensorValue BT.print("HC-SR501:");BT.println(pirValue); // print
the HC-SR501}}}}
2.5 树莓派蓝牙配置
树莓派打开桌面,点击 LX终端,输入下面的命令bluetoothctl
进入蓝牙控制命令,依次输入下面的操作
power
ondiscoverable onagent ondefault-agent
查询 HC-06 的命令
scan on
执行上述命令后,会得到 HC-06 的地址,记录后备用
关闭扫描命令
scan off
将下面 xx:xx:xx:xx:xx:xx 替换为刚刚查到的 地址
pair
xx:xx:xx:xx:xx:xx
此处需要输入密码进行配对,配对码 1234
Device xx:xx:xx:xx:xx:xx Connected: yesRequest
PIN code
[agent]
Enter PIN code: 1234 ENTER
密码配对完成后,退出
exit
退出蓝牙控制命令后,输入命令,其中 xx:xx:xx:xx:xx:xx 为 HC-06 的地址sudo
rfcomm --raw connect 0 xx:xx:xx:xx:xx:xx 1
执行成功结果,如下:
Connected /dev/rfcomm0 to xx:xx:xx:xx:xx:xx on channel
1Press CTRL-C for hangup
2.6 树莓派代码实现 python
具体代码如下:import
serialfrom time import sleep
bluetoothSerial = serial.Serial( "/dev/rfcomm0", baudrate=9600
)
sleep(1)while True:print "OK"bluetoothSerial.write("1")print "recv
from arduino : %s " %(bluetoothSerial.readline())sleep(2)
新打开一个 LX终端 ,执行命令sudo
nano recv.py
将上述代码复制粘贴到文件中,退出保存
运行树莓派接收端指令sudo
python recv.py
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com