Не могу соединить ардуино с nodeMCU через последовательный порт

Тема в разделе "ESP8266, ESP32", создана пользователем msd, 1 авг 2018.

  1. msd

    msd Нерд

    Есть ардуино, которая в последовательный порт пишет данные (ov7670+nano+известные коды с отправкой данных со скоростью 1000000 бод). Другое устройство - nodeMCU, читает порт, преобразует полученные данные и отправляет по wifi.
    Для отладки, я подключил и то и другое через usb к компьютеру, а там написал программу, которая читает из ардуино, рисует полученную картинку (для контроля, что все работает), и транслирует данные на nodeMCU через посл. порт.
    При таком подключении, когда компьютер является передаточным звеном, все работает как надо.
    Далее я подключил tx-rx, rx-tx, через преобразователь уровня от ардуины к nodeMCU, а в обратную сторону напрямую. И ожидал, что все это заработает. Но не хочет. Пробовал по разному подключать питание, через usb, напрямую 5В. Снижал скорость передачи (при этом проверял, что при передаче данных через компьютер, все работает как надо). Ничего не помогает. Что может быть? Куда смотреть?
     
  2. ИгорьК

    ИгорьК Гуру

    Если Вы не забыли соединить земли, то смотреть надо схему платы NodeMCU, которые сейчас кто только не выпускает, и пытаться понять что к чему.
    Не исключено что и ардуино у вас не совсем ардуино - там тоже может быть засада.

    Обычно, соединение "голых", ног через преобразователь уровней работает всегда без проблем. Если эти же ноги участвуют и в работе с компьютером - нужен анализ схем.

    Чтобы проверить /упростить задачу, попробуйте воспользоваться софтверным сериалом на ардуино и задействовать другие ноги у NodeMCU, если ваша среда это допускает. Другой вариант - после отладки заменить NodeMCU на что-то попроще: ESP-8266 esp-201, например.

    upload_2018-8-1_9-55-35.png
     
    Последнее редактирование: 1 авг 2018
  3. Daniil

    Daniil Гуру

    лучше дополнить схемами и кодом
     
  4. msd

    msd Нерд

    Скетч для ov7670+arduino взят отсюда:


    (Youtube, Arduino Uno и камера ov7670 — передача изображений на компьютер
    Евгений Морковин).
    NodeMCU программируется через Arduino IDE.
    Коды и схемы в прикрепленных файлах. im.jpg

    scheme.jpg

    BasicWin.txt - программа на компьютере для передачи данных от ардуино на nodeMCU в первом, работающем варианте
     

    Вложения:

    • ov7670arduino.ino
      Размер файла:
      23 КБ
      Просмотров:
      389
    • esp8266.ino
      Размер файла:
      1,3 КБ
      Просмотров:
      398
    • basicWin.txt
      Размер файла:
      659 байт
      Просмотров:
      395
  5. ИгорьК

    ИгорьК Гуру

    upload_2018-8-1_11-58-8.png

    Как обычно, все гораздо проще, чем сразу приходит на ум.
     
    Последнее редактирование: 1 авг 2018
  6. msd

    msd Нерд

    Это скорость, об этом написано в первом сообщении. И это не является причиной.
     
  7. ИгорьК

    ИгорьК Гуру

    А какая скорость установлена на Ардуино?

    upload_2018-8-1_15-13-41.png
     
  8. ИгорьК

    ИгорьК Гуру

    Это либо электрическая проблема, либо программная, так?
    Убедитесь лично, что скорости портов выставлены одинаково.

    То что там написано для ESP-8266 - вещь сомнительная, хотя до конца не подписываюсь. Скорость какая-то нестандартная. ESP-8266 (так думаю) не воспринимает эту команду и работает по-умолчанию.

    То что написано для ардуино - установка скорости порта через запись в регистры. Проверяйте сами что это значит, ковыряете даташиты.
    Как, собственно, и ESP-8266 - может она с такой скоростью работать по даташиту или нет.
     
  9. ZAZ-965

    ZAZ-965 Гуру

    @msd, на форуме попадалась информация, что в китайских клонах бывают не установлены "развязывающие" резисторы 1кОм между Atmega328 и USB-TTL. Если есть Pro Mini, у которой нет USB-TTL цепей, проверьте скетч на ней.
    RxTx.png
     
  10. msd

    msd Нерд

    Тоже 1Мб.
    9600 это часть комментария, в котором приводятся разные значения для разных скоростей.
    И потом я же писал, что при передаче через посредника (компьютер с программой перетрансляции, в приложении basicWin.txt), все замечательно работает.
     
  11. msd

    msd Нерд

    Да, возможно придется на про мини проверить, но сразу перепаивать не хотелось.
    Но на этот счет я проверял по другому, каждое из устройств, ардуино и nodeMCU подключал к компьютеру через tx, rx с помощью дополнительного переходника usb-ttl, чтобы убедиться, что встроенные usb-ttl не мешают. И никаких проблем в этом случае не наблюдалось. Хотя это, возможно и не показатель.
     
  12. msd

    msd Нерд

    Меня тоже удивила такая скорость, но скетч на ардуино написан не мной, и что есть, то есть. По любому все компоненты по отдельности работают, так что причина не здесь. К тому же, чтобы убедиться, что резисторный преобразователь на такой скорости не вносит искажений, я уменьшал скорости до 115200, но это не повлияло на результат
     
  13. ИгорьК

    ИгорьК Гуру

    ESP-8266 может подстраиваться под стандартную скорость. С компьютером, с его буферами, это работает, с МК - вряд ли.

    Причина или та что сказал ZAZ-965 или несовпадение скоростей. Других просто быть в этом случае не может.

    Не стоит уповать на автора скетчей - при публикации (по себе знаю) часто файлы улетают ошибочные.
     
  14. msd

    msd Нерд

    Там в 4 местах установлена одна и та же скорость, и нет там никакой другой стандартной скорости.
    Есть там один момент, который непонятен, может в нем дело? Если с компьютера отправлять поток данных, а nodemcu его ловит, то если в этот момент нажать кнопку сброса на nodemcu, он после этого перестает принимать данные. Надо, сначала остановить передачу, потом можно сброс жать, и только потом снова начинать передачу. Т.е. в момент сброса, данные не должны передаваться. Может что то подобное в моем случае?
     
  15. ИгорьК

    ИгорьК Гуру

    В программную часть ESP-8266 на Ардуино не готов лезть - опыта нет.
     
  16. msd

    msd Нерд

    Ура! Все получилось! Вместо nodeMCU поставил esp8266-01 (вчера, как раз приехали), и все ок. Получается, что схема встроенного переходника usb-ttl мешала как-то.
    Остается вопрос, это из-за кривого экземпляра, или закономерность, которую можно обойти правильным решением?