HC12 работает только на передачу

Тема в разделе "Проводная и беспроводная связь", создана пользователем issaom, 12 фев 2017.

  1. issaom

    issaom Гуру

    Кто работал с этими модулями подскажите ?
    есть такая схема
    нс12 вопрос.JPG
    Если отправить с компа один байт он возвращается - т.е. все работает как нужно

    Если повесить на второй модуль (вместо перемычки) ардуино со скетчем

    Код (C++):

    byte B1_NEW = 0;      // получаемый байт
    void setup() {
    Serial.begin(9600);
    }

    void loop() {

    delay(1000);
    Serial.print('a');

    delay(1000);
    Serial.print('b');
    }
    То символы в мониторе порта также появляются

    а вот если в ардуино залить скетч

    Код (C++):
    void setup() {
    Serial.begin(9600);
    }

    void loop() {

    if (Serial.available() > 0) {
    B1_NEW = Serial.read();                      // читаем байт
    Serial.write(B1_NEW);                        // отдаем его обратно
    }
    }
    то отправка байта с ПК обратно его не возвращает
    p.s: менял на настроенную пару HC05-HC05 все работает как нужно - что это неисправные модули ?
     
    Последнее редактирование: 12 фев 2017
  2. ИгорьК

    ИгорьК Гуру

    Разбейте вопрос на две части:
    исправны ли модули , и
    работает ли этот скетч.

    На приёмнике оттормозите возвращение байта на некоторое время и посмотрите что будет.
     
  3. issaom

    issaom Гуру

    Так и не понял на какие две части перефразирую по другому
    Берем ардуино и заливаем скетч
    Код (C++):
    byte B1_NEW = 0;      // получаемый байт
    void setup()
    {
    Serial.begin(9600);
    }

    void loop() {

    if (Serial.available() > 0) {
    B1_NEW = Serial.read();                      // читаем байт
    delay(500);
    Serial.write(B1_NEW);                        // отдаем его обратно
    }
    }
    шаг1.JPG
    подключаем к пк через терминал посылаем байт и получаем его обратно

    собираем другую схему

    шаг2.JPG
    посылаем байт и получаем его обратно

    вместо перемычки на RX TXподключаем плату ардуино с залитым ранее скетчем

    шаг3.JPG

    и в ответ ничего не получаем
     
  4. rkit

    rkit Гуру

    Не много ли безобразий на одном питании?
     
  5. issaom

    issaom Гуру

    Подключал от отдельного источника питания - результат аналогичный
     
  6. issaom

    issaom Гуру

    похоже на брак - если эта штука декларируется как прозрачный UART то по идее все должно работать, а на практике не работает
    hc05-hc06 отправленный с ПК байт возвращается
    работает.JPG
    hc12-hc12 байт не возвращается :(
    не работает.JPG
    перепутать в такой схеме мне кажется что-то сложно....
     
  7. sslobodyan

    sslobodyan Гик

    Скорость порта на радиомодуле и у ардуинки совпадают? Брак не может быть - иначе байт бы не возвращался через перемычку. Не работает именно прием ардуинкой.
     
  8. issaom

    issaom Гуру

    проблема в том что если залить в ардуинку

    Код (C++):
    void setup() {
    Serial.begin(9600);
    }
    void loop() {
    delay(1000);
    Serial.print('a');
    delay(1000);
    Serial.print('b');
    }
    то в мониторе порта на компьютере эти символы печатаются - т.е. я не могу прочитать ардуино то что приходит в нее с компьютера. с ардуино на комп отправка идет
     
  9. sslobodyan

    sslobodyan Гик

    Упустил. Значит, дело не в скорости, а в приеме ардуинкой. Неконтакт по РХ?
     
  10. issaom

    issaom Гуру

    Короче какие-то чудеса
    В одной ардуине
    Код (C++):
    void setup() {
    Serial.begin(9600);
    }
    void loop() {
    delay(1000);
    Serial.print('a');
    delay(1000);
    Serial.print('b');
    }
    Во второй ардуине
    Код (C++):
    int incomingByte = 0;
    void setup() {
            pinMode(13, OUTPUT);
            Serial.begin(9600);                            
    }
    void loop() {
            if (Serial.available() > 0) {
            incomingByte = Serial.read();  
            if  (incomingByte == 'a') digitalWrite(13,1);
            if  (incomingByte == 'b') digitalWrite(13,0);
            }
    }
    Соединил проводами - работает
    Поставил модули HC05-HC06 - работает
    Поставил модули HC12 - не работает
    Но если выкинуть Arduino и подключить USB-UART переходник то
    babababababababa там отображаются
    т.е. переходник читает байты приходящие с модуля HC12, а плата ардуино нет
     
  11. issaom

    issaom Гуру

    Может кому потребуется - HC-12 оказался несовместим с платами robotdyn на чипе CH340G не заработала не МЕГА не НАНО - не работает именно прием!!! с передачей все в порядке. Короче говоря платы разных китайских умельцев с одним и тем же скетчем ведут себя по разному - т.е. если денег нет на дорогие фирменные оригинальные платы то вы держитесь и хорошего вам настроения...
    ответ.JPG
     
    ИгорьК нравится это.
  12. а модули вообще настроены?
     
  13. а, дочитал...
    ну они да... мне тоже както мозг вынесли, с их аппаратным UART и экономии на двух резисторах
    только то на UNO было, на NANO там вроде UART нормальный, они их все время допиливают, может с версией не повезло.
     
  14. ИгорьК

    ИгорьК Гуру

    Да уж. Такие задачки иногда ставят в тупик.
     
  15. sslobodyan

    sslobodyan Гик

    А не пробовали ТХ модуля подтянуть к питанию ардуины резистором килоом от 2 до 10?
     
  16. issaom

    issaom Гуру

    Есть и хорошая новость - на меге от роботдюна модуль без проблем заработал на 1-ом аппаратном сериале 18/19 ножки (байт пришел и ушел) теперь вот чешу репу..... на приемник я планировал НАНО поставить из-за размеров - теперь как-то стремно вдруг кривая плата попадется.... Интересно где нибудь можно купить оригинальную плату нано из Италии.... ?

    Код (C++):
    byte B1_NEW = 0;      // получаемый байт
    void setup()
    {
    Serial1.begin(9600);
    }

    void loop() {

    if (Serial1.available() > 0) {
    B1_NEW = Serial1.read();                      // читаем байт
    Serial1.write(B1_NEW);                        // отдаем его обратно
    }
    }
     

    Вложения:

  17. отковыряй CH340 и будет работат, прошиваться только будет как промини.

    оригинал можно взять в амперке, только какой в этом смысл неочень ясно, если нужен отдельный UART то лучше брать леонардо.
    или использовать программный.
     
  18. issaom

    issaom Гуру

    отдельный UART мне нужен только с одной стороны чтобы коммуницировать передатчик с пк в случае необходимости, а вот со стороны приемника чем проще (меньше) тем лучше да и кстати CH340 был и на синенькой плате нано (не от роботдюна которая) та работала без отковыриваний ))) наны в амперке нет давно но за идею спасибо - подумаю
     
  19. sslobodyan

    sslobodyan Гик

    Да, здесь прям мистика. Ну не бывает в электронике мистики, все имеет причину. Вы проверили на перемычке - работает. А на дуньке не работает. Значит не нравятся ему либо временные характеристики, либо напряжение. Временные характеристики вроде подходят, раз на приеме у дуньки сигнал распознается. Осталось одно - выход ТХ дуньки не совместим с входом модуля. Хорошо бы посмотреть осциллографом, а без него будем гадать. Здесь вариантов два - либо высокий уровень дуньки меньше порога модуля и 1 не ловится, либо высокий уровень дуньки превышает питание модуля и модуль "глючит".
    1. Вешаем подтяжку с входа РХ модуля на плюс его питания в несколько килоом.
    2. Выход ТХ подключаем к модулю через переменник "регулятор громкости" в килоом.
    Косвенно уровни можно сравнить передавая постоянно один символ и замерив напряжение стрелочным вольтметром на выходе ТХ модуля и на выходе ТХ дуньки. Стрелочник сильно усредняет, примерно такого же эффекта можно добиться с помощью RC цепочки и электронного вольтметра.
     
    ИгорьК нравится это.