Как устранить проблему последовательной связи между 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);
  }
 }

Как я могу это исправить?

, 👍1

Обсуждение

На какой скорости работает модуль 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


1 ответ


Лучший ответ:

0

Вы используете неправильные контакты на SIM900A для связи с вашим Arduino.

Этот конкретный модуль имеет интерфейс MAX232 для преобразования TTL UART в RS232. Это несовместимо с Arduino, если вы не добавите еще один MAX232, чтобы отменить преобразование, которое выполняет тот, что на плате.

Вместо этого вам нужно использовать другой 3-контактный разъем на другом конце платы. Он должен (согласно этому сайту) быть подключен следующим образом:

Конечно, вы можете использовать на своем Arduino контакты, отличные от 0/1, при условии, что вы подключите их в нужном месте на модуле SIM900A, как показано на этой диаграмме.

Также обратите внимание, что я принимаю за пару перемычек, соединяющих контакты на коллекторе, к которому вы в данный момент подключаетесь (обведите их кольцом на схеме).

,