Связь Arduino с Sim 900
Я использую arduino uno и sim-карту 900, sim-карта настроена и работает, так как я могу сделать ей телефонный звонок, и она звонит.
Sim-карта 900 питается через разъем питания, а uno в настоящее время питается через USB.
Я пытаюсь распечатать входящие текстовые сообщения, однако при открытом последовательном мониторе я вижу только "Инициализация...".
#include <SoftwareSerial.h>
//Создание программного последовательного объекта для связи с SIM900
SoftwareSerial mySerial(7, 8); //SIM900 Tx & Rx is connected to Arduino #7 & #8
void setup()
{
//Начать последовательную связь с Arduino и Arduino IDE (последовательный монитор)
Serial.begin(9600);
//Начнать последовательную связь с Arduino и SIM900
mySerial.begin(9600);
Serial.println("Инициализация...");
delay(1000);
mySerial.println("AT"); //Рукопожатие с SIM900
updateSerial();
mySerial.println("AT+CMGF=1"); // Настройка ТЕКСТОВОГО режима
updateSerial();
mySerial.println("AT+CNMI=1,2,0,0,0"); // DРешает, как должны обрабатываться вновь поступившие SMS-сообщения
updateSerial();
}
void loop()
{
updateSerial();
}
void updateSerial()
{
delay(500);
while (Serial.available())
{
mySerial.write(Serial.read());//Переадресация полученных последовательных сообщений на Последовательный порт программного обеспечения
}
while(mySerial.available())
{
Serial.write(mySerial.read());//Переслать полученное программное обеспечение Serial в Последовательный порт
}
}
Я ни за что на свете не могу понять, почему он больше ничего не печатает? Кто-нибудь может дать мне какие-нибудь указания или что проверить?
@nathans, 👍0
Обсуждение1 ответ
"Инициализирующая" распечатка происходит потому, что она отправляется непосредственно на аппаратный последовательный порт UNO. Остальное не происходит, потому что оно направляется на SIM-карту с помощью программных выводов 7 и 8, а SIM-карта, по-видимому, не отвечает.
Решите проблему пополам: соедините контакты 7 и 8 вместе и снова запустите программу. Если вы получаете "AT" и все остальное, то вы знаете, что порт "mySerial" активен и работает правильно, а проблема в "половине" SIM-карты. Может быть, у вас неправильное проводное соединение, или, может быть, серийная скорость SIM-карты по умолчанию не 9600, или что-то в этом роде. YMMV ;-).
В качестве теста я запустил вашу программу на UNO с перемычкой между контактами 7 и 8. К сожалению, это не сработало, но теперь я знал, что проблема не имела ничего общего с SIM-щитом. Результат оказался не таким, как я ожидал, но теперь мне пришлось "сократить проблему вдвое".
Теперь, когда я определил, что SIM-карта не является фактором (во всяком случае, пока), я мог сосредоточиться на "UNO half". После некоторых веб-исследований я обнаружил, что "Программный последовательный" не поддерживает "обратную связь" (зацикливание линии передачи обратно в линию приема), поскольку он не может одновременно передавать и принимать. К счастью, библиотека AltSoftSerial Пола Стоффрегена поддерживает одновременную передачу и прием, а также будет поддерживать обратную связь.
Итак, я установил библиотеку на Arduino setup, скомпилировал и загрузил пример, показанный ниже.
#include <AltSoftSerial.h>
// AltSoftSerial всегда использует эти контакты:
//
// Плата Передача Получение ШИМ неиспользуется
// ----- -------- --------- ------------------
// Teensy 3.0 & 3.1 21 20 22
// Teensy 2.0 9 10 (none)
// Teensy++ 2.0 25 4 26, 27
// Arduino Uno 9 8 10
// Arduino Leonardo 5 13 (none)
// Arduino Mega 46 48 44, 45
// Wiring-S 5 6 4
// Sanguino 13 14 12
AltSoftSerial altSerial;
void setup() {
Serial.begin(9600);
//while (!Serial); // подождите, пока откроется последовательный монитор Arduino
Serial.println("Начинается тест AltSoftSerial");
altSerial.begin(9600);
altSerial.println("Hello World");
}
void loop() {
char c;
if (Serial.available()) {
c = Serial.read();
altSerial.print(c);
}
if (altSerial.available()) {
c = altSerial.read();
Serial.print(c);
}
}
После загрузки кода я "зациклил" пин 9 обратно на пин 8 и обнаружил, что, когда я отправлял символы в UNO через аппаратный USB-порт, они снова "отражались" на последовательном выходе после прохождения порта 8/9 AltSoftSerial.
Так что на данный момент я решил "половину" проблемы; остальное зависит от вас! ;-)
или, может быть, они подключили программное обеспечение к контактам 6 и 7 на экране, а не к RX и TX, @Juraj
Или тысячи других возможностей. Я не знаком с SIM-щитом, поэтому мне трудно сказать...., @user3765883
тогда зачем вы написали ответ?, @Juraj
Спасибо за ваш ответ, я действительно столкнулся с тем, что software serial не полностью поддерживается, однако новичок в ардуино. Я перешел к использованию другого щита для своего проекта, но я попробую еще раз, используя ваш очень полезный ответ., @nathans
Рад помочь, и я надеюсь, что вы продолжите наслаждаться своими приключениями в Arduino-land. Если у вас есть время, пожалуйста, отметьте мой ответ как "Принято", так как (я думаю) это улучшит мою оценку "репутация" и позволит мне помочь другим., @user3765883
- Проблема с получением 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
Проверьте это https://arduinoprosto.ru/q/13683/19409, @sa_leinad
Я думаю, что вижу на щите перемычки, чтобы использовать его над программным обеспечением, даже если он находится на Uno, @Juraj