Фон
Я работаю над проектом робототехники, который требует использования платы на базе 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), поэтому я мог бы сделать некоторые большие упущения.
Я понимаю, что это довольно обширная проблема, и я обычно не публикую здесь что-то столь открытое, но я не смог сузить ее, и я ограничен графиком проекта, поэтому вся помощь будет признательна.