esp/arduino и nextion/uart

Тема в разделе "ESP8266, ESP32", создана пользователем Listian, 15 сен 2019.

Метки:
  1. Listian

    Listian Нуб

    Всем привет!

    Попробовал через конвертер UART-TTL подключить экранчик NX8048K070. Все заливает/соединяется.

    И достаточно быстро на 912.600, п.э. не вижу смысла возиться с неудобными флешками.

    Также все работает при помощи программы Terminal v1.9b. все отсылает и принимает.

    Но решил вместо внешнего конвертера использовать ардуиновский.

    Подключаю экранчик ко входам tx/rx. объединяю землю.

    В скетче только Serial.begin(9600).

    При помощи той же Terminal v1.9b подключаюсь к COM1.

    Отправляю в ней команду t0.txt="1212"$ff$ff$ff.

    В итоге лампочка tx мигает, но текст не меняется. Поменял местами провода rx/tx и заработало!!!

    Но недолго радовался.

    Вбиваю print t0.txt$ff$ff$ff и нифига, данные с кнопок также не принимаются...

    Как решить проблему приема данных?
     
  2. parovoZZ

    parovoZZ Гуру

    А почему? Ведь выше было
     
  3. Listian

    Listian Нуб

    как я понял Nextion только на 9600 пашет в режиме команд. ставил другие скорости, но лился мусор в порт.
    сама прога Nextion Editor при заливке прошивки на 912.600 соединяется, но при обычной работе на 9600.

    всегда думал, что встроенный в мк usb-uart напрямую связан с tx/rx, пока не столкнулся с конкретной задачей.

    да через serial.available/serial.read команды принимаются, но мне нужна прямая связь без посредников
     
  4. Listian

    Listian Нуб

    заработало!!! соединил землю и ресет.

    команды отправляет/принимает и заливает прошивку в Nextion на 912.600.

    другой вопрос, чтобы залит прошивку в мк нужно отключать ресет и устройство от rx/tx.

    нужно думать...

    ---------
    Использование Arduino как USB-UART преобразователь:
    На платах Arduino c USB портом (у некоторых плат нет USB порта) уже есть USB-UART преобразователь на базе чипа CH340 или FTDI, или ATmega, или др. Шина USB этих чипов подключена к порту USB, а шина UART к аппаратным выводам TX и RX контроллера платы Arduino.

    Всё что нужно сделать для работы платы Arduino в качестве USB-UART преобразователя, это отключить её контроллер от шины UART или заставить его не реагировать на сигналы проходящие по этой шине. Сделать это можно соединив вывод RESET с выводом GND платы Arduino.

    Теперь плату Arduino можно подключить к USB порту компьютера, а внешние устройства к выводам TX и RX платы Arduino (обычно это выводы 0 и 1). Обратите внимание на то, что выводы устройств подключаются к плате, не TX к RX, RX к TX, а TX к TX, RX к RX (так как вывод TX чипа преобразователя на плате Arduino подключён к выводу RX самой платы, а вывод RX чипа подключён к выводу TX платы).

    Для управления подключённым устройством нужно установить на компьютер программу терминал. Одним из таких терминалов является свободно распространяемая программа Termite с поддержкой Русского языка.

    Альтернативный метод:
    В качестве альтернативного метода можно воспользоваться двумя шинами UART Arduino: аппаратной и программной. Аппаратная шина используется для подключения Arduino к USB порту компьютера, а программная шина UART используется для подключения модулей к плате Arduino.

    Вы просто загружаете скетч, подключаете Arduino к USB порту компьютера, а устройство к выводам указанным в скетче (в примере: вывод D2 это RX - подключается к выводу TX устройства, вывод D3 это TX - подключается к выводу RX устройства).

    #include<SoftwareSerial.h>// Подключаем библиотеку SoftwareSerial для общения с модулем по программной шине UART
    SoftwareSerial softSerial(2,3);// Создаём объект softSerial указывая выводы RX, TX (можно указывать любые выводы Arduino UNO)
    // В данном случае вывод TX модуля подключается к выводу 2 Arduino, а вывод RX модуля к выводу 3 Arduino.
    // Инициируем работу шин UART с указанием скоростей обеих шин: //
    void setup(){//
    softSerial.begin(38400);// Инициируем передачу данных по программной шине UART на скорости 38400 (между модулем и Arduino)
    Serial.begin(9600);// Инициируем передачу данных по аппаратной шине UART на скорости 9600 (между Arduino и компьютером)
    }//
    //
    // Выполняем ретрансляцию: // Всё что пришло с модуля - отправляем компьютеру, а всё что пришло с компьютера - отправляем модулю
    void loop(){//
    if(softSerial.available()){Serial.write(softSerial.read());}// Передаём данные из программной шины UART в аппаратную (от модуля через Arduino к компьютеру)
    if(Serial.available()){softSerial.write(Serial.read());}// Передаём данные из аппаратной шины UART в программную (от компьютера через Arduino к модулю )
    }

    --------------