您的位置: 主页>机器人编程>ROBOLAB编程>Fen9Pi-05.树莓派 UNO蓝牙通信
加盟酷吧机器人 培养孩子核心能力

Fen9Pi-05.树莓派 UNO蓝牙通信

前言

    这是一篇偏向教程的文章,若是实践的话,需要一些电路知识,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

Fen9Pi-05.树莓派 UNO蓝牙通信

2.3 arduino UNO 接线图之 HC-06

VCCVCCGND GNDTXD D10RXD D11

2.4 arduino 代码实现

#includeSoftwareSerial BT(10, 11);int sensor=A0; //analog in mq-136intsensorValue = 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 moduleRX to D11// connect BT Vcc to 5V, GND to GNDvoid setup(){// setdigital pin to control as an outputpinMode(13, OUTPUT);// set thedata rate for the SoftwareSerial portBT.begin(9600);// Send testmessage to other deviceBT.println("Hello from Arduino");}char a; // stores incoming character from other devicevoidloop(){if (BT.available()) // if text arrived in from BTserial...{a=(BT.read());if (a=='1') // raspberry send "1" ,then UNOreply datas{//digitalWrite(13, HIGH);//BT.println("LEDon");sensorValue=analogRead(sensor); //read input fromMQ-136pirValue = digitalRead(pirPin); //get value fromHC-SR501delay(1000); // slow down serialport{BT.print("MQ135:");BT.println(sensorValue,DEC); //print MQ-135sensorValue BT.print("HC-SR501:");BT.println(pirValue); // printthe HC-SR501}}}}

2.5 树莓派蓝牙配置

树莓派打开桌面,点击 LX终端,输入下面的命令

bluetoothctl

    进入蓝牙控制命令,依次输入下面的操作

powerondiscoverable onagent ondefault-agent

查询 HC-06 的命令

scan on

 执行上述命令后,会得到 HC-06 的地址,记录后备用

 关闭扫描命令

scan off

将下面 xx:xx:xx:xx:xx:xx 替换为刚刚查到的 地址

pairxx:xx:xx:xx:xx:xx

此处需要输入密码进行配对,配对码 1234

Device xx:xx:xx:xx:xx:xx Connected: yesRequestPIN code[agent]Enter PIN code: 1234 ENTER

密码配对完成后,退出

exit

退出蓝牙控制命令后,输入命令,其中 xx:xx:xx:xx:xx:xx 为 HC-06 的地址

sudorfcomm --raw connect 0 xx:xx:xx:xx:xx:xx 1

执行成功结果,如下:

Connected /dev/rfcomm0 to xx:xx:xx:xx:xx:xx on channel1Press CTRL-C for hangup

2.6 树莓派代码实现 python

具体代码如下:

importserialfrom time import sleepbluetoothSerial = serial.Serial( "/dev/rfcomm0", baudrate=9600)sleep(1)while True:print "OK"bluetoothSerial.write("1")print "recvfrom arduino : %s " %(bluetoothSerial.readline())sleep(2)

新打开一个 LX终端 ,执行命令

sudonano recv.py

    将上述代码复制粘贴到文件中,退出保存

运行树莓派接收端指令

sudopython recv.py

后记,小编朋友研发了一个游戏化的少儿编程在线课程(5-12岁),游戏化教学结合scratch(一款在线少儿编程工具,类似乐高的积木拼搭),我家娃娃学了几次课,非常喜欢(超预期),16次课才200多块钱,对锻炼孩子的思维能力和动手动力很有帮助。

欧美思机器人教育加盟 赚钱好项目
上一篇:C#制作简单上位机监控arduino
下一篇:全国开启高考改革!机器人编程教育由“非刚需
您可能喜欢
回到顶部