Использование 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 к модулю ) }
Этот метод не требует подключения вывода RESET к GND на плате Arduino и не требует установки программы терминал на компьютер.
Управление подключёнными устройствами осуществляется через монитор последовательного порта Arduino IDE (для передачи AT-команд не забудьте установить пункт - добавлять символы NL & CR в нижнем правом углу монитора последовательного порта).
Обсуждение