Модуль SIM800L просто повторяет данные, отправленные через последовательный порт.
У меня есть Teensy 2.0 с простым AltSoftSerial, как показано на изображении:
Как видите, когда я отправляю команду (или любой другой ввод через последовательный порт), модуль SIM800L отправляет мне тот же ввод. Пробовал поменять местами провода TX и RX на модуле (на случай, если я их неправильно подключил), но тогда ничего не возвращает. Когда я подключаю провода TX и RX напрямую друг к другу, я получаю тот же результат, как если бы они были подключены к модулю.
Подключается все таким образом - компьютер подключается через USB к Teensy, SIM800L и Teensy подключаются через программный последовательный порт (RX к TX и TX к RX), модуль SIM800L питается от внешнего аккумулятора (он требуется определенное напряжение между 3v4 и 4v4).
Модуль неисправен или проводка неправильная? Почему модуль не обменивается данными, а просто возвращает то, что я ему отправил?
РЕДАКТИРОВАТЬ 1:
Я не особо ищу ошибки в коде, код скорее всего правильный. Я думаю, что проблема, вероятно, где-то в модуле SIM800L.
Модуль не должен просто повторять то, что получил, он должен воспроизвести что-то вроде «ОК» или другие ответы.
@Patrik Šimunič, 👍0
Обсуждение2 ответа
Вы просите его повторить отправленные вами данные. Он работает ТАК, КАК вы хотели, чтобы он работал в вашей программе.
Вы попросили его посмотреть, отправлено ли что-нибудь, и если отправлено, то распечатать. Вот что он делает.
Я так не думаю.. Это было бы так, только если бы провода TX и RX были физически соединены. Когда вы используете .write() на одном последовательном конце, вы можете получить его с помощью .read() только на другом конце провода, а не на том же самом. Или я что-то упускаю?, @Patrik Šimunič
Ну, я вижу, что ваш код делает то, что он должен делать. Что вы вообще хотите, чтобы он делал? Опишите его подробно., @Dat Ha
Ну, мне нужно, чтобы teensy просто получал команду от компьютера и пересылал ее на sim800l, а когда sim800l посылает ответ, teensy должен пересылать его на компьютер. Вот и все, просто пересылка данных с одного последовательного порта на другой и наоборот., @Patrik Šimunič
Последовательное USB-подключение такое же, как контакты TX и RX на Arduino. Вам нужно подключить sim800 к другому последовательному порту с помощью SoftwareSerialport, см. примеры здесь: https://www.arduino.cc/en/Tutorial/SoftwareSerialExample
Это справедливо для обычного Arduino на базе ATmega328p, например, Uno, **но этот вопрос явно о Teensy 2.0**. Как и Arduino Leonardo, Teensy 2.0 использует ATmega32u4, где USB напрямую подключается к главному процессору, а аппаратный UART не участвует в потоке программы/отладки и поэтому остается доступным для других целей. Большинство более поздних плат на базе ARM, включая семейство Teensy, также обладают этим свойством. Кроме того, даже если бы вопрос был об Uno, скетч *уже* использует программное последовательное решение (хотя и излишне, учитывая предыдущее)., @Chris Stratton
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- SIM800L не отвечает на AT-команды
- GSM SIM900A Содержимое SMS не отображается
- Как связаться с GPS SIM900a без serial monitor
- Ответ GSM-модуля sim800l не завершен
- Взаимодействие A9G с Arduino для тестирования AT-команд
- AT-команда не отвечает на последовательный монитор
- Как остановить SoftwareSerial от получения данных и повторно включить его в какой-то другой момент?
Кажется, он делает то, что вы ему сказали, @James Waldby - jwpat7
Вероятно, вы могли бы многому научиться, просмотрев существующий код этого или подобных модулей — например, тестовый эскиз Adafruit FONA. Также имейте в виду умеренно экстремальные требования к мощности., @Chris Stratton
Отправьте команду ATE0, чтобы отключить эхо., @Flanker
Было ли когда-нибудь решение этой проблемы? У нас тут точно такая же проблема. Мы пытались это сделать с несколькими платами, измеряли напряжения на оскопе и т. д. Мы удалили процессор и отправляем команды прямо из последовательного редактора Docklight. Команда получена, и ответ такой же, как и отправленный. Мы отправляем такие команды, как AT+E<CR>, как предписывает руководство по командам AT. Мы прочитали несколько статей других авторов и это единственный форум, который нам удалось найти, где проблема точно обозначена. Спасибо за любую помощь, которую каждый может прописать. Серийный, @Steigz