Как связаться с модулем BLE HM-19 и сканировать с помощью датчика ультразвука c - PullRequest
0 голосов
/ 26 января 2020

Я работаю над своим старшим проектом для школы, и часть того, что мне нужно сделать, - это использовать модуль Bluetooth 5.0 HM-19 для подключения к другому модулю Bluetooth 5.0 и установить sh соединение master-slave.

Я могу сделать это очень хорошо, но когда я включаю код, необходимый для моего ультразвукового c датчика, чтобы выполнить сканирование, мои команды на мой HM-19 ничего не возвращают, и я не могу выполнить ни одного из основных c функции, такие как поиск соединений. Я проверил его с использованием и без кода датчика ultrasoni c, и проблема возникает, когда я использую сенсорную часть кода.

ЧТОБЫ БЫТЬ ЧИСТЫМ, все, что я пытаюсь сделать, это просто иметь свой Bluetooth 5.0 Чип подключается к другому и выполняет обычные команды, а также вводит в мой последовательный монитор расстояние, когда я кладу руку впереди. ЭТО ПРОСТО ТЕСТ, как только я это сделаю, я перейду к тому, что я действительно хочу сделать.

ЭТО ПРОСТО НАЧАЛО ТОЧКИ В ПРОЕКТЕ. У меня есть вызов функции для моего датчика и моего чипа Bluetooth в пустоте l oop, это все, что есть.

Я просто хочу знать, как решить эту проблему. Как я могу сканировать ультразвуковым датчиком c и отправлять команды на мой модуль Bluetooth? Любая помощь будет принята с благодарностью.

[Вот результаты, когда датчик комментируется] [1] и [вот неудачные результаты, которые приводят к бесконечному l oop, где я не могу добраться до той части кода, которая возвращает что говорит чип] [2]. И, наконец, хотя большинство ссылок включают в себя материал для HM-10, команды в основном одинаковы для HM-19. Я добавляю больше, потому что переполнение стека не позволит мне редактировать этот пост, пока не будет больше символов или чего-то еще. Я надеюсь, что у вас есть хороший день / вечер, читающий это.

Вот мой код:

    //  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
...