如何与HM-19 BLE模块通信并使用超声波传感器进行扫描
How to communicate with HM-19 BLE Module and scan using ultrasonic sensor
我正在做学校的高级项目,我需要做的一部分是使用一个HM-19蓝牙5.0模块连接另一个蓝牙5.0模块并建立主从连接。
我可以很好地做到这一点,但是当我包含超声波传感器进行扫描所需的代码时,我对 HM-19 的命令没有 return 任何东西,我也无能为力的基本功能,如查找连接。我已经使用和不使用超声波传感器代码对其进行了测试,当我使用代码的传感器部分时出现问题。
明确地说,我想做的只是让我的蓝牙 5.0 芯片连接到另一个芯片并执行正常命令,同时在我把手放在前面时向我的串行监视器输入一段距离。这只是一个测试,一旦完成,我将转向我真正想做的事情。
它只是一个项目的起点。我在 void 循环中有一个函数调用我的传感器和我的蓝牙芯片,这就是那里的全部内容。
我只想知道如何解决这个问题。如何使用我的超声波传感器进行扫描并将命令发送到我的蓝牙模块?任何帮助将不胜感激。
[这是注释传感器时的结果][1] 和[这是导致无限循环的不成功结果,我无法到达 return 的代码部分这就是芯片所说的][2]。最后,虽然大多数链接包含 HM-10 的内容,但 HM-19 的命令基本相同。我要添加更多,因为堆栈溢出不会让我编辑这个 post 直到有更多的字符或其他东西。我希望你有一个好人 day/evening 阅读这篇文章。
这是我的代码:
// SerialIn_SerialOut_HM-10_01
//
// Uses hardware serial to talk to the host computer and AltSoftSerial for communication with the bluetooth module
//
// What ever is entered in the serial monitor is sent to the connected device
// Anything received from the connected device is copied to the serial monitor
// Does not send line endings to the HM-10
//
// Pins
// BT VCC to Arduino 5V out.
// BT GND to GND
// Arduino D8 (SS RX) - BT TX no need voltage divider
// Arduino D9 (SS TX) - BT RX through a voltage divider (5v to 3.3v)
//
#include <AltSoftSerial.h>
AltSoftSerial BTserial;
// https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html
char c=' ';
boolean NL = true;
const int trigPin = 9;
const int echoPin = 10;
float duration, distance;
boolean wait_your_turn = false; //My attempt to make sure the sensor and the Bluetooth module don't interfere with each other
//if I'm sending data from the serial monitor to the bluetooth module and vice versa it switches to true and the bluetooth module
//does its thing, so the sensor doesn't get in the way.
void setup()
{
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
Serial.print("Sketch: "); Serial.println(__FILE__);
Serial.print("Uploaded: "); Serial.println(__DATE__);
Serial.println(" ");
BTserial.begin(9600);
Serial.println("BTserial started at 9600");
}
void loop()
{
Bluetooth();
Sensor();
}
void Sensor(){
if((wait_your_turn == true))
{}
else
{
Serial.println("Scanning for stuff.");
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration*.0343)/2;
if(distance <= 20)
{
Serial.println(distance);
delay(500);
}
}
}
void Bluetooth()
{
if (Serial.available())
{
if(wait_your_turn == false)
Serial.println("Serial is available");
wait_your_turn = true;
while(Serial.available()>0)
c = Serial.read();
Serial.write(c);
if(c!=10&c!=13)
BTserial.print(c);
}
if (BTserial.available())
{
// Serial.print("We are at the bluetooth portion.");
while(BTserial.available())
c = BTserial.read();
Serial.print(c);
wait_your_turn = false;
}
}
[1]: https://i.stack.imgur.com/Dn4i0.png
[2]: https://i.stack.imgur.com/s9Ifv.png
对不起,我忘了这个问题。我想到了。我所做的是让 1 个 Arduino 控制超声波传感器,并在传感器范围内时向另一个 Arduino 发送一个字符。然后另一个 Arduino 将读取该字符,并根据发送的字符执行操作。感谢所有评论的人,祝你们生活愉快。
我正在做学校的高级项目,我需要做的一部分是使用一个HM-19蓝牙5.0模块连接另一个蓝牙5.0模块并建立主从连接。
我可以很好地做到这一点,但是当我包含超声波传感器进行扫描所需的代码时,我对 HM-19 的命令没有 return 任何东西,我也无能为力的基本功能,如查找连接。我已经使用和不使用超声波传感器代码对其进行了测试,当我使用代码的传感器部分时出现问题。
明确地说,我想做的只是让我的蓝牙 5.0 芯片连接到另一个芯片并执行正常命令,同时在我把手放在前面时向我的串行监视器输入一段距离。这只是一个测试,一旦完成,我将转向我真正想做的事情。
它只是一个项目的起点。我在 void 循环中有一个函数调用我的传感器和我的蓝牙芯片,这就是那里的全部内容。
我只想知道如何解决这个问题。如何使用我的超声波传感器进行扫描并将命令发送到我的蓝牙模块?任何帮助将不胜感激。
[这是注释传感器时的结果][1] 和[这是导致无限循环的不成功结果,我无法到达 return 的代码部分这就是芯片所说的][2]。最后,虽然大多数链接包含 HM-10 的内容,但 HM-19 的命令基本相同。我要添加更多,因为堆栈溢出不会让我编辑这个 post 直到有更多的字符或其他东西。我希望你有一个好人 day/evening 阅读这篇文章。
这是我的代码:
// SerialIn_SerialOut_HM-10_01
//
// Uses hardware serial to talk to the host computer and AltSoftSerial for communication with the bluetooth module
//
// What ever is entered in the serial monitor is sent to the connected device
// Anything received from the connected device is copied to the serial monitor
// Does not send line endings to the HM-10
//
// Pins
// BT VCC to Arduino 5V out.
// BT GND to GND
// Arduino D8 (SS RX) - BT TX no need voltage divider
// Arduino D9 (SS TX) - BT RX through a voltage divider (5v to 3.3v)
//
#include <AltSoftSerial.h>
AltSoftSerial BTserial;
// https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html
char c=' ';
boolean NL = true;
const int trigPin = 9;
const int echoPin = 10;
float duration, distance;
boolean wait_your_turn = false; //My attempt to make sure the sensor and the Bluetooth module don't interfere with each other
//if I'm sending data from the serial monitor to the bluetooth module and vice versa it switches to true and the bluetooth module
//does its thing, so the sensor doesn't get in the way.
void setup()
{
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
Serial.print("Sketch: "); Serial.println(__FILE__);
Serial.print("Uploaded: "); Serial.println(__DATE__);
Serial.println(" ");
BTserial.begin(9600);
Serial.println("BTserial started at 9600");
}
void loop()
{
Bluetooth();
Sensor();
}
void Sensor(){
if((wait_your_turn == true))
{}
else
{
Serial.println("Scanning for stuff.");
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration*.0343)/2;
if(distance <= 20)
{
Serial.println(distance);
delay(500);
}
}
}
void Bluetooth()
{
if (Serial.available())
{
if(wait_your_turn == false)
Serial.println("Serial is available");
wait_your_turn = true;
while(Serial.available()>0)
c = Serial.read();
Serial.write(c);
if(c!=10&c!=13)
BTserial.print(c);
}
if (BTserial.available())
{
// Serial.print("We are at the bluetooth portion.");
while(BTserial.available())
c = BTserial.read();
Serial.print(c);
wait_your_turn = false;
}
}
[1]: https://i.stack.imgur.com/Dn4i0.png
[2]: https://i.stack.imgur.com/s9Ifv.png
对不起,我忘了这个问题。我想到了。我所做的是让 1 个 Arduino 控制超声波传感器,并在传感器范围内时向另一个 Arduino 发送一个字符。然后另一个 Arduino 将读取该字符,并根据发送的字符执行操作。感谢所有评论的人,祝你们生活愉快。