Я пытаюсь отправить расстояние чтения датчика HC-SR04 в приложение Android с помощью Bluetooth. Мне удалось передать значения из многих других датчиков в приложение, но когда дело доходит до отправки HC-SR04, то происходит странное поведение. Чтобы отправить чтение по BT, я использую простую команду Serial.printl(value)
, которая также отображает показания на последовательном мониторе ПК. Странная вещь: если модуль bluetooth отключен, показания верны, но как только я подключаю модуль Bluetooth на макет (JY-MCU), начало чтения становится явно случайным, даже я смотрю на их на мониторе ПК, а не из приложения. Я до сих пор не понял, связана ли эта проблема с оборудованием или программным обеспечением.Arduino Bluetooth и ультразвуковой датчик расстояния (HC-SR04): значения печати по BT дают ошибку
Я также попытался отключить все остальные датчики и компоненты от схемы, используя общий базовый эскиз, но результат тот же: как только я вставляю модуль Bluetooth (даже если данные не отправляются на Android), я начинаю получать случайные значения расстояния. Вот эскиз:
int trig = 10;
int echo = 7;
void setup(){
Serial.begin(9600);
}
void loop(){
long distance = getUltrasonicAltitude();
Serial.println(distance);
}
long getUltrasonicAltitude(){
long duration, cm;
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duration = pulseIn(echo,HIGH);
cm = duration/29/2;
return cm;
}
Я попытался с помощью newPing
библиотеки, и даже при использовании прерываний вместо функции pulseIn
, чтобы получить время между импульсами, но результат был всегда одинаков: все было в порядке, но только без модуля bluetooth ...
Знаете ли вы способ или имеете предложение исправить эту неприятную проблему, которая прослушивала меня в течение двух дней? Это может быть проблема с оборудованием или программным обеспечением, поэтому я действительно открыт для прослушивания любых возможных решений.
Эти источники питания для совместного использования? Вы подключали питание напрямую к модулю и обходили их, или вы обманывали и пытались подключить их к контактам GPIO, как неразумно предлагают некоторые уроки? Если вы замените постоянное значение для чтения в вашей программе, но оставьте все подключенным, будет ли постоянное значение проходить через чистоту? Если у вас есть доступ к области видимости, устойчив ли эхо-импульс? Если не время эха достаточно медленное, возможно, вы можете использовать звуковую карту ПК для подделки области ... –
Да, обе модели (HC-SR04 и JY-MCU) используют один и тот же источник питания, который является контактами 5v и GNS Arduino. Они взаимно связаны друг с другом. Как вы предположили, я попытался воспроизвести чтение с постоянным значением, и это прекрасно. К сожалению, у меня нет доступа к осциллографу ... Как вы думаете, проблема связана с временем, требуемым модулем bluetooth для последовательной печати значения, которое влияет на функцию pulseIn? –