Как устранить проблему последовательной связи между Arduino UNO и sim900A
Я подключил arduino UNO к sim900a. Но после проверки последовательной связи между этими двумя я продолжаю получать эти выходные данные.
Вот соединения и код, которые я использовал
#include <SoftwareSerial.h>
SoftwareSerial SIM900A(2, 3);
// Connect the SIM900A TX to Arduino pin 2 RX.
// Connect the SIM900A RX to Arduino pin 3 TX.
char c = ' ';
void setup()
{
// start th serial communication with the host computer
Serial.begin(9600);
while (!Serial);
Serial.println("Arduino with SIM900A is ready");
// start communication with the SIM900A in 9600
SIM900A.begin(9600);
Serial.println("SIM900A started at 9600");
delay(1000);
Serial.println("Setup Complete! SIM900A is Ready!");
}
void loop()
{
// Keep reading from SIM900 and send to Arduino Serial Monitor
if (SIM900A.available())
{ c = SIM900A.read();
Serial.write(c);
}
// Keep reading from Arduino Serial Monitor and send to SIM900A
if (Serial.available())
{ c = Serial.read();
SIM900A.write(c);
}
}
Как я могу это исправить?
@Dietrich Dait, 👍1
Обсуждение1 ответ
Лучший ответ:
Вы используете неправильные контакты на SIM900A для связи с вашим Arduino.
Этот конкретный модуль имеет интерфейс MAX232 для преобразования TTL UART в RS232. Это несовместимо с Arduino, если вы не добавите еще один MAX232, чтобы отменить преобразование, которое выполняет тот, что на плате.
Вместо этого вам нужно использовать другой 3-контактный разъем на другом конце платы. Он должен (согласно этому сайту) быть подключен следующим образом:
Конечно, вы можете использовать на своем Arduino контакты, отличные от 0/1, при условии, что вы подключите их в нужном месте на модуле SIM900A, как показано на этой диаграмме.
Также обратите внимание, что я принимаю за пару перемычек, соединяющих контакты на коллекторе, к которому вы в данный момент подключаетесь (обведите их кольцом на схеме).
- Проблема с получением SMS - GSM-модуль Arduino Uno и SIM900A
- Мини-модем SIM900a, IMEI 0, помощь с контактами TX RX
- Как получить данные из базы данных моего сервера в переменную в моем Arduino?
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- SIM800L не регистрируется в сети
- Как отправлять сообщения на несколько номеров с помощью модуля Arduino uno и SIM800?
- Клиент MQTT на Arduino + SIM900
- Какие контакты Arduino UNO можно использовать в качестве контактов Tx и Rx для подключения к GSM GPRS SIM 900A
На какой скорости работает модуль SIM-карты? Я бы предположил, что у вас несоответствие бодрствования, @chrisl
SIM900 имеет автоматическое определение скорости передачи данных, что означает, что вам нужно отправить пару "AT" в модуль для синхронизации скорости передачи данных перед отправкой остальных. Если скорость передачи данных синхронизирована, он ответит "ОК". Кроме того, вы подключаете SIM900 к своему Uno? Uno не может обеспечить достаточный ток для питания модуля., @hcheung
Да, я подключил 5 В(arduino) к VCC(SIM900). Значит, проблема в отсутствии тока в модуле?, @Dietrich Dait
В спецификации SIM900A указано одно напряжение питания: 3,4 В – 4,5 В, а при передаче ток может достигать 2А. Ни одно из них не может быть предоставлено UNO., @Nino
@hcheung Я не вижу ссылки на автоматическую передачу данных для SIM900A. У вас есть рекомендации? Все, что я могу найти, это то, что скорость передачи данных по умолчанию составляет 9600 бод, и ее можно настроить с помощью команд AT в диапазоне от 9600 до 115200 бод., @Majenko
@Majenko См. раздел 3.7.1 [Проектирование оборудования SIM900](https://www.elecrow.com/wiki/images/8/82/Sim900_hd_v1.06.pdf) ссылка (или страница 34), на самом деле почти все модули SIMCOM поддерживают автоматическую скорость передачи данных в бодах., @hcheung