0

Я пытаюсь отправить расстояние чтения датчика 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 ...

Знаете ли вы способ или имеете предложение исправить эту неприятную проблему, которая прослушивала меня в течение двух дней? Это может быть проблема с оборудованием или программным обеспечением, поэтому я действительно открыт для прослушивания любых возможных решений.

+0

Эти источники питания для совместного использования? Вы подключали питание напрямую к модулю и обходили их, или вы обманывали и пытались подключить их к контактам GPIO, как неразумно предлагают некоторые уроки? Если вы замените постоянное значение для чтения в вашей программе, но оставьте все подключенным, будет ли постоянное значение проходить через чистоту? Если у вас есть доступ к области видимости, устойчив ли эхо-импульс? Если не время эха достаточно медленное, возможно, вы можете использовать звуковую карту ПК для подделки области ... –

+0

Да, обе модели (HC-SR04 и JY-MCU) используют один и тот же источник питания, который является контактами 5v и GNS Arduino. Они взаимно связаны друг с другом. Как вы предположили, я попытался воспроизвести чтение с постоянным значением, и это прекрасно. К сожалению, у меня нет доступа к осциллографу ... Как вы думаете, проблема связана с временем, требуемым модулем bluetooth для последовательной печати значения, которое влияет на функцию pulseIn? –

ответ

1

Я, наконец, нашел причину проблемы! Используя вольтметр, я обнаружил, что проблема в основном состоит в том, что модуль bluetooth поглощает слишком много тока каждый раз при вызове функции Serial.println, и это вызывает колебание напряжения вверх и вниз между 3,8 и 4,3 вольта. Кажется, что ультразвуковой датчик диапазона не нравится. Есть ли способ исправить эту проблему без использования другого внешнего источника питания? Может быть, конденсатор может сгладить падение напряжения?

+0

Это вопрос для electronics.stackexchange.com – Artium