Модуль hc-06 не реагирует на действия

Тема в разделе "Arduino & Shields", создана пользователем Illia_V, 17 фев 2020.

  1. Illia_V

    Illia_V Нуб

    Здравствуйте, купил на днях модуль HC-06 и столкнулся с проблемой. Модуль видит телефон, подсоединяется, отвечает на AT команды, но при всем этом никак не работает с ардуино. Подключение к ардуино уже раз сто проверял. На любую отправленную команду через ВТ терминал не реагирует и в СОМ порте они так же не отображаются.

    То бишь есть модуль отвечающий на АТ команды и видимый для подключения через ВТ но сигналы с него на ардуино никак не видны (индикаторы RX/TX при отправке сигнала загораются) подскажите пожалуйста как решить эту проблему.

    Для проверки использую простой скетч:
    Код (C++):
    int val;
    int LED = 13;
    void setup()
    {
      Serial.begin(9600);
      pinMode(LED, OUTPUT);
      digitalWrite(LED, HIGH);
    }
    void loop()
    {
      if (Serial.available())
      {
        val = Serial.read();
        // При символе "1" включаем светодиод
        if (val == '1')
        {
          digitalWrite(LED, HIGH);
        }
        // При символе "0" выключаем светодиод
        if ( val == '0')
        {
          digitalWrite(LED, LOW);
        }
      }
    }
    Питать пробовал от 3.3В 5В и 9В. И автономно и от компьютера.
     
  2. alp69

    alp69 Форумчанин

    Покажите в скетче строку, которой вы в Serial что-либо отправляете.
     
  3. Illia_V

    Illia_V Нуб

    В Serial я отправляю через терминал по ВТ. Просто единицу либо ноль. Так делают на любых видео по подключению данного модуля и если я что-то неверно делаю объясните пожалуйста.
     
  4. a1000

    a1000 Гуру

    Что-то у вас всё смешано в кучу. Что куда вы подключаете?
    Это терминал установленный на телефоне?
    Что за СОМ порт? Монитор порта на компьютере? Тогда как вы к нему подцепились? Ведь аппаратный Serial ардуины вы заняли HC-06.
    Эти индикаторы где?
    Попробуйте сделать так как в этой статье.
    https://lesson.iarduino.ru/page/blu...k-arduino-upravlenie-ustroystvami-s-telefona/
     
  5. Illia_V

    Illia_V Нуб

    Да терминал установленный на телефоне.
    Индикаторы на плате ардуино соответствующие TX и RX.
    Этот урок я видел и сделал один к одному как в нем в том то и дело что светодиод не гаснет. Так же и при использовании других скетчей с других уроков.
     
  6. Illia_V

    Illia_V Нуб

    Я так понимаю если я подключил ВТ к ардуино а ардуино компьютеру то адекватной работу СОМ порта можно не ожидать так как канал занят одним из устройств. Можете уточнить так ли я понял?
     
  7. Illia_V

    Illia_V Нуб

    В общей картине следуя по тому уроку, что вы кинули я: заливаю скетч, отключаю ардуино от компутера, подключаю ВТ, подключаю питание (аккумулятор 9В), конектюсь с ВТ через телефон, отправляю 0 через терминал в ожидании, что светодиод погаснет. Ничего не происходит. Всё то же и с другими схожими уроками и скетчами. Надеюсь вы подскажете решение, спасибо.
     
  8. a1000

    a1000 Гуру

    Тогда попробуйте следующее. Залейте этот скетч
    Код (C++):
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(8, 7); // RX, TX
    void setup()
    {
      delay(1000); // ждём пока загрузится
      Serial.begin(9600);  //Скорость порта для связи Arduino с компьютером
      Serial.println("Goodnight moon!");
      mySerial.begin(9600);  //Скорость порта для связи Arduino с GSM модулем
      mySerial.println("AT");
    }

    void loop()
    {
      if (mySerial.available())
        Serial.write(mySerial.read());
      if (Serial.available())
        mySerial.write(Serial.read());
    }
    TX модуля к пину 8
    RX модуля к пину 7
    Ардуино к компьютеру, открываете монитор порта и начинаете с телефона отправлять команды. В мониторе порта вы должны их увидеть.
     
  9. akl

    akl Гуру

    там вроде для hc-06 надо ат-команды отправлять без конца строки иначе не поймет.

    может у модуля скорость не 9600 поставлена?

    а еще входная нога этого модуля рассчитана на 3 вольта и если с ардуины приходит 5, оно может не работать

    то есть подключать его надо как-то так
    [​IMG]
     
    Последнее редактирование: 18 фев 2020
  10. a1000

    a1000 Гуру

    Ну можно эту строку закоментировать или убрать
    Код (C++):
    //mySerial.println("AT");
    Я его в руках не держал, но пишут, что сигнал в 5 вольт переваривает. Что-бы быть окончательно спокойным RX модуля можно вообще не подключать. В данном случае мы его будем только слушать. Надо убедиться, что модуль что-то передаёт по UART.
     
  11. Illia_V

    Illia_V Нуб

    Да, теперь отправленые сигналы на ВТ пишутся в СОМ порте, что уже обнадеживает. Подскажите как эти сигналы использовать потому как конвертируя скетч из урока по ссылке (заставляя 13 диод выключаться и включаться) ничего все равно не происходит. То бишь в СОМ порте все так же пишутся 0 и 1 но 13 ЛЕД не включаеться и не выключается (если его заранее включить)
     
  12. akl

    akl Гуру

    а модуль то сейчас к каким ногам ардуины поключен? и как выглядит скетч который не работает?

    попробуй вот так (ардуина в комп, а блютус к ногам 7 и 8)
    Код (C++):
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(8, 7); // RX, TX
    void setup()
    {
      delay(1000); // ждём пока загрузится
      Serial.begin(9600);  //Скорость порта для связи Arduino с компьютером
      Serial.println("Goodnight moon!");
      mySerial.begin(9600);  //Скорость порта для связи Arduino с модулем
      mySerial.print("AT");
    }

    void loop()
    {
      if (mySerial.available()){
        char val;
        val=mySerial.read();
        Serial.write(val);
        if(val=='1'){
          digitalWrite(LED_BUILTIN, HIGH);
        }
        if(val=='0'){
          digitalWrite(LED_BUILTIN, LOW);
        }
      }
      if (Serial.available()){
        mySerial.write(Serial.read());
      }
    }
    и покажи что пишет монитор ком-порта
     
  13. a1000

    a1000 Гуру

    А вы случайно при подключении не попутали пины аппаратного UART.
    TX модуля к пину 0
    RX модуля к пину 1
    Другого объяснения нет. Модуль информацию в UART отправляет, скетч их первого поста рабочий (на всякий случай загрузил и посылал через монитор порта 1 и 0, всё включается и тухнет). Так-что подключайте модуль как указано выше, заливайте скетч из первого поста. Обязательно!!!!!! Отключите ардуино от USB!!!!!!! Подайте питание через Vin или через 5,5 мм. Должно всё работать. Тут просто деваться не куда.
     
  14. Illia_V

    Illia_V Нуб

    Я решил проверить и нет, тот скетч с моей ардуино и с моим ВТ не работает. в итоге я всеже использовал ваше предложение и использовавс следующий скетч пин благополучно тухнет и загорается.
    Код (C++):
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(8, 7); // RX, TX

    int val;
    int LED = 13;

    void setup()
    {
      delay(1000); // ждём пока загрузится
      Serial.begin(9600);  //Скорость порта для связи Arduino с компьютером
      Serial.println("Goodnight moon!");
      mySerial.begin(9600);  //Скорость порта для связи Arduino с GSM модулем
      //mySerial.println("AT");


      pinMode(LED, OUTPUT);
      digitalWrite(LED, HIGH);


    }

    void loop()
    {
      if (mySerial.available())
      {
        val = mySerial.read();
        // При символе "1" включаем светодиод
        if (val == '1')
        {
          digitalWrite(LED, HIGH);
        }
        // При символе "0" выключаем светодиод
        if ( val == '0')
        {
          digitalWrite(LED, LOW);
        }
      }

    }
    За что огромное вам спасибо!!
     
    Последнее редактирование: 19 фев 2020
  15. Illia_V

    Illia_V Нуб

    Я подключал RXD к ТХ а ТXD к RX. все точно как сказано в любом уроке, примере, обучающем виде и во всех гайдах на всех стречаемых мной форумах. Может ли такое быть что дело в плате? E меня WAVGAT Arduino uno R3.
    https://aliexpress.ru/item/32959902...1.0&pvid=320f62f9-f0e6-4e19-809e-59df97d23ec2
     
  16. Illia_V

    Illia_V Нуб

    Да, спасибо, я похожий скетч делал и у меня возникал в енм баг когда какието из единиц или ноликов из которых я отправял на ВТ через телефон пропадали, подключив ВТ к компутеру и посмотрев в СОМ порт стало понятно что если символ делал манипуляцыю со светодиодом то он не писался в СОМ а если писался то наоборот никак не влиял на светодиод. Но с вашим скетчем все работает отлично! Для меня пока что это магия.
     
  17. Illia_V

    Illia_V Нуб

    Тут назревает еще один вопрос - почему используя ваш скетч светодиод горит менее ярко?
     
  18. akl

    akl Гуру

    потому что я там забыл прописать pinmode
     
  19. akl

    akl Гуру

    возможно ты использовал что-то вроде
    Код (C++):
    mySerial.write(Serial.read());
    val = Serial.read();
    if (val == '1')
    ....
    то есть два раза подряд делал Serial.read()
    а функция Serial.read() вынимая из входящего буфера значение, при этом удаляет его из этого буфера, таким образом следующий вызов этой же функции вернет следующий символ там лежащий (или -1 если там пусто). чтобы посмотреть текущий символ не удаляя его можно использовать Serial.peek() например. или один раз считывать в переменную, а потом уже везде использовать эту переменную

    там юсб-адаптер CH340, может в этом дело. Но с чего бы. Может из-за чего-то немножко проседает напряжение на ноге RX ардуины, и тогда 3 вольт приходящих с блютус-модуля не хватает для логической единицы. А может тупо контакт в который провод тыкается расхлябался.
     
  20. parovoZZ

    parovoZZ Гуру