Доступ к Micropython REPL через UART (0), а не через USB

Фон

Я работаю над проектом робототехники, который требует использования платы на базе ESP8266 (Lolin D1 mini pro v2) в качестве микроконтроллера. У меня есть Micropython на этой плате вместе с набором функций, которые я должен иметь возможность вызывать из Nvidia Jetson Nano через UART.

Настройка

У меня контакт Jetson UART1_TXD подключен к контакту RX D1, а контакт TX D1 - к контакту Jetson UART1_RXD. (https://developer.nvidia.com/embedded/learn/jetson-nano-2gb-devkit-user-guide#id-.JetsonNano2GBDeveloperKitUserGuidevbatuu_v1.0-40-PinHeader(J6))

На Jetson это интерфейс / dev / ttyTHS1.

Использование machine.UART на D1 и pyserial на Jetson.

Версия Micropython: esp8266-20210202-v1.14

Процесс на данный момент

Первоначально я попытался установить простое соединение между этими двумя устройствами в baud=9600 с настройками по умолчанию (которые я проверяю и считаю, что они тренируются одинаково). Я запустил цикл while True на Jetson, чтобы запустить print(ser.readline()), ser - это серийный объект, который я настроил.

В то же время я запустил цикл while true, содержащий uart.write(b'hello world\n') на D1. uart является объектом machine.UART, инициализированным с указанными выше параметрами.

Это привело к тому, что Jetson постоянно печатал пустые строки. Я переключил цикл Джетсона на запуск print(ser.read()) для чтения байта за раз, чтобы увидеть, проходят ли данные вообще, это дало мне ту же ситуацию, что и раньше.

Микропайтон REPL

Поскольку это не сработало, я сейчас пытаюсь использовать известный интерфейс с одной стороны, необработанный Micropython REPL. На самом деле это для меня предпочтительнее, так как если я могу напрямую отправлять команды REPL для выполнения, я могу импортировать свою библиотеку на микроконтроллер и запускать произвольный метод.

Документация немного туманна относительно того, можете ли вы получить доступ к REPL непосредственно через UART (в отличие от последовательного преобразователя USB), однако я считаю, что это возможно из того, что я прочитал (если это не так, тогда эта проблема возвращается чтобы получить исходное простое соединение UART).

При указанной выше физической настройке я удалил программу с D1, которая пыталась использовать UART0, чтобы REPL оставался на этом порте по умолчанию при загрузке. И с помощью имитатора терминала на Jetson попытался подключиться к нему на /dev/ttyTHS1 -b 115200.

picocom -b 115200 /dev/ttyTHS1 показывает параметры соединения, но тогда приглашение пустое, в отличие от >>>, и не принимает никаких вводимых данных.

rshell --port /dev/ttyTHS1 --baud 115200 вечно ждет подключения.

screen /dev/ttyTHS1 115200 выдает черный экран, без подсказки.

Я также попытался установить соединение с / dev / ttyTHS1 и baud 115200 с помощью pyserial и прослушать какой-то ответ, но это ничего не дало.

Мой вопрос

Итак, мой вопрос: если это возможно, как я могу подключиться к необработанному реплику Micropython непосредственно через UART и отправлять команды на D1, а в противном случае как я могу установить собственное соединение на каждой стороне для отправки строк между двумя устройствами?

Это первый раз, когда я пытаюсь использовать UART таким образом, и я не слишком хорошо знаком с микропитоном (я редко рискую использовать свою IDE в мире проектов IoT), поэтому я мог бы сделать некоторые большие упущения.

Я понимаю, что это довольно обширная проблема, и я обычно не публикую здесь что-то столь открытое, но я не смог сузить ее, и я ограничен графиком проекта, поэтому вся помощь будет признательна.


person Jack Walton    schedule 18.04.2021    source источник
comment
Найдите неисправность D1 с помощью осциллографа (или чего-нибудь еще, что может указывать на то, что он что-то делает ... даже с помощью светодиода). Как только вы узнаете, что D1 что-то делает, попробуйте REPL еще раз. Если ничего, устраните неисправность Jetson. Я был на твоем месте несколько раз. У вас 2 доски и хотя бы одна проблема. Сначала выясните, на какой плате возникла проблема. Если у вас есть осциллограф, воспользуйтесь им. Возможность видеть форму волны, которую выводят эти контакты, бесценна. С помощью всего лишь светодиода или мультиметра вы знаете, что что-то происходит, но это может быть просто шум.   -  person Michael Guidry    schedule 18.04.2021
comment
Есть бесплатные программы для осциллографов. Обычно они работают через гнездо для микрофона. Одно из них лучше, чем вообще ничего. Вам придется уничтожить пару наушников, и вам могут пригодиться зажимы из крокодиловой кожи.   -  person Michael Guidry    schedule 18.04.2021
comment
Привет, Майкл, как бы мне ни хотелось заполучить осциллограф, студенческий бюджет не позволяет этого (и, к сожалению, Unis все еще закрыты). Я обязательно посмотрю на программное обеспечение осциллографа, похоже, оно может быть очень полезным здесь и в будущем. Ваше здоровье!   -  person Jack Walton    schedule 19.04.2021
comment
Одна вещь, которую вы, возможно, захотите рассмотреть, - это найти бесплатное программное обеспечение для осциллографа, которое работает через USB. Причина в том, что провод наушников обычно бывает тканевым. USB-кабель больше похож на обычный провод. Все это сделано в предположении, что у вас нет деталей, из которых вы можете просто сделать совместимый провод. Если предположение верно, я бы снял USB-кабель, прежде чем пытаться вытащить подключаемые волосы из некоторых наушников. Возможно, вам понадобится USB-кабель с выводами для передачи данных. Дешевые кабели для АЗС, вероятно, не помогут.   -  person Michael Guidry    schedule 19.04.2021
comment
Единственное, что мне не хватает проводов, это разъем USB / jack. К счастью, по этой причине у меня есть запас USB-кабелей для передачи данных, который я собирал со временем, поэтому я с радостью разрежу один из них и прикреплю несколько проводов gpio с каплей припоя.   -  person Jack Walton    schedule 20.04.2021


Ответы (1)


Итак, мой вопрос: если это возможно, как я могу подключиться к необработанному реплику Micropython напрямую через UART и отправлять команды на D1, а в противном случае как я могу установить собственное соединение на каждой стороне для отправки строк между двумя устройствами?

У меня MicroPython (v1.14) работает на Wemos D1 mini. В настоящее время я использую this для подключения к REPL через UART. Мне не пришлось вносить какие-либо изменения в конфигурацию самого D1; весь процесс был:

  1. Подключите провод TX от последовательного адаптера к контакту RX на D1.
  2. Подключите провод RX от последовательного адаптера к контакту TX на D1.
  3. Запустите picocom -b 115200 /dev/ttyUSB0

Мне также удалось заставить его работать, подключившись напрямую к контактам TX / RX на Raspberry Pi (Pi TX - ›D1 RX и т. Д.), Также используя picocom (хотя в этом случае последовательный порт на Пи было /dev/ttyAMA0).


В дополнение к шагам диагностики, предложенным Майклом Гидри, если у вас есть какие-либо другие устройства, доступные локально (другой Jetson? Raspberry Pi? Что-то еще?), Которые вы можете использовать для установки известной рабочей конфигурации (то есть конфигурации, в которой вы могут успешно обмениваться данными с помощью последовательных контактов Jetson), что дает вам хорошую отправную точку.

person larsks    schedule 18.04.2021
comment
Что касается последовательного адаптера, к сожалению, у меня довольно ограниченный доступ к USB-портам на Jetson (он должен поместиться в миниатюрный марсоход для национальных студенческих соревнований, шасси которого уже спроектировано и изготовлено). У меня под рукой есть RPi, и полезно знать, что вы могли использовать picocom для прямого доступа к REPL. Тестирование Pi для Jetson и Pi для D1, безусловно, является моим следующим шагом, однако может занять много времени (как и все в этом проекте, pi и программное обеспечение, которое я использовал для программирования D1, тоже работают без промедления). - person Jack Walton; 19.04.2021
comment
Спасибо за ваше время, я вернусь с дополнительной информацией, как только у меня будет время опробовать эти вещи (тогда я приму ответ) - person Jack Walton; 19.04.2021