Как только я взял в руки А6, то наткнулся на эту ссылку. Все подключил, информационные строки, как описано после 4 пункта у меня появлялись. Сейчас их нет. При вводе любых команд в строку монитора порта -- 0 реакции, команда просто пропадает.
Как только я взял в руки А6, то наткнулся на эту ссылку. Все подключил, информационные строки, как описано после 4 пункта у меня появлялись. Сейчас их нет. При вводе любых команд в строку монитора порта -- 0 реакции, команда просто пропадает.
Что делать?! Уже не знаю куда податься
ссылка не открылась....Что за информационные строки строки?
Очень похоже что модем тупо завис, соотвественно пеобходимо перевключить его и послать несколько AT команд для выравнивания скорости с Arduino?
Прогоните обычный скетч для тестирования - работает?
В Ардуино Уно единственный аппаратный последовательный порт.
Его можно использовать для связи с компьютером, а можно - для связи с каким-либо другим устройством.
Но использовать единственный порт для связи с двумя устройствами одновременно невозможно.
Это не совсем так. Ничто не помешает передавать с одного Tx на несколько Rx. Все приемники разумеется получат одинаковый сигнал и приймут одно и тоже. Таким образом команды от контроллера могут быть переданы на модем и одновременно продублированы на ПК. С подключением нескольких Tx (от ПК и от модема) к одному входу Rx сложней. Необходимо понимать что передавать они не должны одновременно. Иначе приемник получит мусор. Электрически подключение возможно т.к. на платах ардуино Tx преобразователя USB/UART подключен к Rx через килоомный резистор. Соответственно Tx модема к Rx контроллера можна подключить просто через диод. Я использую такое подключение. Вполне годное с учетом изложеных ограничений.
Это не совсем так. Ничто не помешает передавать с одного Tx на несколько Rx...
Logik, последовательный порт это как бы не только Тх.
И вообще, можно один и тот же кусок бумаги использовать сначала для заворачивания еды, а потом - в качестве туалетной бумаги. Но из этого совершенно не следует, один лист можно постоянно использовать в этих двух качествах. Впрочем, о вкусах не спорят.
Но в любом случае не следует путать явную экзотику с типовым применением.
Это не совсем так. Ничто не помешает передавать с одного Tx на несколько Rx...
Logik, последовательный порт это как бы не только Тх.
Если поднять глаза немного выше, то там и про Тх и про Rx и про ограничения и про все особенности и возможности. Не доперли как и почему несколько Rx на один Tx вешать - перечитывайте.
//Впрочем, о вкусах не спорят.
А мы здесь не о вкусах, а о возможностях. Спорить с Вами о вкусе туалетной бумаги не собираюсь, каждому свое. Признаю в этом вопросе Ваш авторитет.
Решения определяются задачей. Имея один аппаратный и один софтовый UART не логично использовать софтовый для обмена с модемом, а аппаратный для отладки. Потому как принципиально невозможно обеспечить стабильную работу софтового сириала и A6. От скорости это не зависит. Он может нормально работать только с сириалом, обеспечивающим прием данных от модема в любой момент времени , даже если в это время идет передача на модем. ring, sms и пр. поступает асинхронно, в любое время. А SoftSerial.h такое принципиально не может, он либо передает, либо принимает, но не то и то одновременно. Откройте его код - убедитесь. Там обе функции в обработчике прерывания и запрещают друг друга на время выполнения.
Потому на время отладки совмещаем на одном порту. После отладки - аппаратный только для модема станет. Сильно нужно 2 сириала - берем другой МК или если на втором сириале нетребовательная фигня, то софтовый можна. Но модем на SoftSerial.h стабильно не работает. Нестабильно - может )))
Помогите плиз разобраться начинающему/твердолобому с СМС - получаю звонки, индентифицирую - звоню обратно - всё Ок, а вот СМС только получаю - вижу их текст в мониторе последовательного, но отправить не как - возможно моя ошибка для вас очевидна...
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
int ch = 0;
String val = "";
void setup() {
delay(2000); //время на инициализацию модуля
Serial.begin(9600); //скорость порта
Serial.println("GSM tester v1.0");
mySerial.begin(9600);
mySerial.println("AT+CLIP=1"); //включаем АОН
delay(100);
mySerial.println("AT+CMGF=1"); //режим кодировки СМС
delay(100);
mySerial.println("AT+CSCS=GSM"); //режим кодировки текста
delay(100);
}
void loop() {
if (mySerial.available()) { //если GSM модуль что-то послал нам, то
while (mySerial.available()) { //сохраняем входную строку в переменную val
ch = mySerial.read();
val += char(ch);
delay(10);
}
if (val.indexOf("RING") > -1) { //если звонок обнаружен, то проверяем номер
//delay(10);
if (val.indexOf("7xxxxxxxxxx") > -1) { //если номер звонящего наш. Укажите свой номер без "+"
// delay(10);
Serial.println("--- MASTER RING DETECTED ---");
delay(10);
mySerial.println("ATH0"); //разрываем связь
delay(10);
//------------------------------------- это сам добавил - проверял исходящий звонок - работает
delay(30000);
mySerial.println("AT+CMGS=+7xxxxxxxxxx");
//----------------------------------------------------------------------------------
// delay(300);
}
} else
Serial.println(val); //печатаем в монитор порта пришедшую строку
val = "";
}
if (Serial.available()) { //если в мониторе порта ввели что-то
while (Serial.available()) { //сохраняем строку в переменную val
ch = Serial.read();
val += char(ch);
delay(10);
}
//mySerial.println(val); //передача всех команд, набранных в мониторе порта в GSM модуль
if (val.indexOf("sendsms") > -1) { //если увидели команду отправки СМС
sms(String("hello world"), String("7xxxxxxxxxx")); //отправляем СМС на номер +71234567890
}
val = ""; //очищаем
}
}
void sms(String text, String phone) //процедура отправки СМС
{
Serial.println("SMS send started");
mySerial.println("AT+CMGS="" + phone + """);
delay(500);
mySerial.print(text);
delay(500);
mySerial.print((char)26);
delay(500);
Serial.println("SMS send complete");
delay(2000);
}
А6 и UNO, код и метод подключения тут на прошлых страницах брал - перечитал тут всё многое в других местах - но что то последний штрих не как))
В идеале конечно было бы найти заведомо рабочий код (под А6 в сети не много инфы) и его разобрать по кирпичикам - так точно дошло бы до меня жирафа - но нет пока такого у меня - может быть поделитесь у кого есть
пожалуйста вам рабочий код на А6, но отправка в PDU формате, опять же момдем модему рознь,
на моем модеме код заработал, у заказчика на лдругом А6 нет, так что с вашими знаниями рекомендую перейти на модем sim800l - гораздо более предсказуемый модем.
#define GSM_RX 3 // пин RX на модуле подключаем к указаному пину на Ардуино TX
#define GSM_TX 2 // пин TX на модуле подключаем к указаному пину на Ардуино RX
#include <SoftwareSerial.h>
SoftwareSerial SIM800(GSM_TX, GSM_RX); // установка контактовGSM_TX->RX и GSM_RX->TX для программного порта
#define _a6_power_pin 12
#define _a6_reset_pin 11
void setup() {
pinMode(_a6_reset_pin, OUTPUT);
pinMode(_a6_power_pin, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(_a6_reset_pin, LOW);
digitalWrite(_a6_power_pin, HIGH); // power on
/*pinMode(10, OUTPUT);
pinMode(7, OUTPUT);
digitalWrite(10, HIGH);
digitalWrite(7, HIGH);
delay(1000);
digitalWrite(7, LOW);
delay(20);
digitalWrite(7, HIGH);
delay(3000);*/
Serial.begin(9600); // Скорость обмена данными с компьютером
Serial.println("Start!");
SIM800.begin(9600); // Скорость обмена данными с модемом
SIM800.println("AT"); SIM800.println("AT"); // Автонастройка скорости
SIM800.println("AT"); SIM800.println("AT"); // Автонастройка скорости
SIM800.println("AT"); SIM800.println("AT"); // Автонастройка скорости
SIM800.println("AT"); SIM800.println("AT"); // Автонастройка скорости
SIM800.println("AT"); SIM800.println("AT"); // Автонастройка скорости
SIM800.println("AT"); SIM800.println("AT"); // Автонастройка скорости
SIM800.println("AT");
delay(1000);SIM800.println("ATE0"); // echo off
delay(500);SIM800.println("ATV1");
delay(500);SIM800.println("AT+CMEE=2");
delay(500);SIM800.println("AT+CLIP=1");
delay(500);SIM800.println("ATS0=3");
delay(500);SIM800.println("AT+CREG?");
delay(500);SIM800.println("AT+CMGF=0"); // PDU mode SMS
delay(500);SIM800.println("AT+CMGD=1,4");
delay(500);SIM800.println("AT+COPS?");
delay(500);SIM800.println("AT+CSQ");
// read sms
delay(1000);SIM800.println("AT+CMGL=4");
// send sms
delay(1000);SIM800.println("AT+CMGS=47");
delay(500);SIM800.print("0001000B91 8779103254F6 000822042204350441044200200444043E0440043C04300442043000200050004400550021");
delay(500);SIM800.write(26);
}
void loop() {
if (SIM800.available()) // Ожидаем прихода данных (ответа) от модема...
while (SIM800.available()) {
byte bb = SIM800.read();
Serial.write(bb); // ...и выводим их в Serial
/*if ((bb < 0x20) || (bb >= 0x7F)) {
Serial.print("0x"); Serial.println(bb, HEX);
} else {
Serial.write(bb);
}*/
}
if (Serial.available()) // Ожидаем команды по Serial...
while (Serial.available())
SIM800.write(Serial.read()); // ...и отправляем полученную команду модему
}
у меня есть ещё - SIM900 Through neoway M590 - но я не знаю к каким пинам подключать ардуино - купил заодно, не посмотрел, а там не подписано вообще ((.
andycat - Спасибо!
Ели не получится в итоге - куплю конечно ещё один модуль
Но как то надежда теплится ещё - ведь принимает смс, ведь звонит, значит рабочий - скорее всего что то я не правильно делаю
#include <iarduino_GSM.h> // Подключаем библиотеку iarduino_GSM для работы с GSM/GPRS Shield.
iarduino_GSM gsm; // Создаём объект gsm для работы с функциями и методами библиотеки iarduino_GSM.
//
#include <softwareserial.h> // Подключаем библиотеку SoftwareSerial для программной реализации шины UART.
SoftwareSerial softSerial(7,8); // Создаём объект softSerial указывая выводы RX и TX платы Arduino.
//
void setup(){ //
Serial.begin(9600); // Инициируем передачу данных по аппаратной шине UART для вывода результата в монитор последовательного порта.
Serial.print( "Initialization, please wait ... " ); // Выводим текст.
//
gsm.begin(softSerial); // Инициируем работу GSM/GPRS Shield, указывая объект шины UART.
//
// Ждём готовность GSM/GPRS Shield к работе: //
while(gsm.status()!=GSM_OK){Serial.print("."); delay(1000);} Serial.println(" OK!"); // Ждём завершения регистрации модема в сети оператора связи.
//
// Установка кодировки для символов Кириллицы: //
gsm.TXTsendCodingDetect("п"); // Выполняем автоопределение кодировки скетча для отправки текста на Русском языке.
//
// Отправка SMS сообщения: //
if( gsm.SMSsend("Это короткое SMS сообщение", "70123456789") ) // Отправляем короткое SMS сообщение на номер +7(012)345-67-89
{ Serial.println("Sent!"); }else{ Serial.println( "Error!" ); } // Выводим результат отправки SMS сообщения
//
} //
//
void loop (){ //
}
andycat - сори, значит что то похожее)) я их уже неделю "пробую")) всё в голове перепуталось - раз так тоже вечером попробую - вдруг оно)) кстати - киньте плиз ссылкой в меня по поводу вашей 48 строки - обратная запись... не сталкивался
pasha413 - Спасибо! попробую и ваш труд применить
мне бы короткий код - который в setup отправлял бы смс с пустым loop - чтобы убедится что сам модуль и симка это могут - остальное уже докапал бы - я так со звонком разобрался - начал с малого и всё понятно - а вот по смс сложнее - нет такой команды как я понял - есть ряд действий которые на разных вариантах модуля по разному должны происходить... вроде 8).
Помогите плиз разобраться начинающему/твердолобому с СМС - получаю звонки, индентифицирую - звоню обратно - всё Ок, а вот СМС только получаю - вижу их текст в мониторе последовательного, но отправить не как - возможно моя ошибка для вас очевидна...
andycat - Благодарю Вас! - оказалось совсем не сложно)) отпишу к ночи ближе что у меня получилось
кстати - мой А6 вроде бы обычный/популярный Ai Thinker который
pasha413 - Ваш код тоже попробую - и тоже напишу тут о результате
пугает немного размер скетча - но мне бы только найти рабочий вариант - там разберусь уже
но всё же мне хотелось бы разобраться именно с кодом что я выше показал потому что чую я что он рабочий (ведь принимаються СМС и звонки работают) видимо какая то ошибка именно в событии после которого начинается отправка СМС
привыкайте самостоятельно проверять, ничего же не мешает запустить тестовый код и ручками проверить оба варианта, опять же есть документация, которую не помешало бы посмотреть и в которой написано:
“GSM” GSM 7 bit default alphabet (3GPP TS 23.038); this setting causes easily software flow control (XON/XOFF) problems. “UCS2” 16-bit universal multiple-octet coded character set ( ISO/IEC10646 [32]); UCS2 character strings are converted to hexadecimal numbers from 0000 to FFFF; e.g. “004100620063” equals three 16-bit characters with decimal values 65, 98 and 99. “HEX” "PCCP936" Hexadecimal mode. No character set used ; the user read or write directly hexadecimal values. PC Set.
Example
AT+CSCS=”UCS2” AT+CSCS? AT+CSCS=? OK +CSCS: “UCS2” OK +CSCS: ("GSM","HEX","PCCP936","UCS2")
)) нет у меня под рукой ничего кроме ноута сейчас)) - в остальном вы правы!
и в которой написано:
... дорасти мне до таких текстов ещё надо - не смог понять
sansanich - откройте консоль и вручную вбейте команды. Добейтесь, чтобы СМС стабильно уходило - потом просто перенесите эти команды в скетч...
вот это я и пытаюсь сделать - я писал выше, я так поступил со звонком - нашёл мини код который в setup сразу звонит и от него и "плясал" - теперь тоже самое хочу с смс проделать, но где найти его хз - облазил весь инет наверное
подозреваю что можно в последовательном порте в верхней его части писать команды - но пока не получилось - киньте ссылку плиз если я прав
на каждом углу есть тестовые скетчи для тестирования АТ команд :)
#define GSM_RX 3 // пин RX на модуле подключаем к указаному пину на Ардуино TX
#define GSM_TX 2 // пин TX на модуле подключаем к указаному пину на Ардуино RX
#include <SoftwareSerial.h>
SoftwareSerial SIM800(GSM_TX, GSM_RX); // установка контактовGSM_TX->RX и GSM_RX->TX для программного порта
#define _a6_power_pin 12
#define _a6_reset_pin 11
void setup() {
pinMode(_a6_reset_pin, OUTPUT);
pinMode(_a6_power_pin, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(_a6_reset_pin, LOW);
digitalWrite(_a6_power_pin, HIGH); // power on
Serial.begin(9600); // Скорость обмена данными с компьютером
Serial.println("Start!");
SIM800.begin(9600); // Скорость обмена данными с модемом
delay(500); SIM800.println("AT"); delay(500); SIM800.println("AT"); // Автонастройка скорости
delay(500); SIM800.println("AT"); delay(500); SIM800.println("AT"); // Автонастройка скорости
delay(500); SIM800.println("AT"); delay(500); SIM800.println("AT"); // Автонастройка скорости
}
void loop() {
if (SIM800.available()) // Ожидаем прихода данных (ответа) от модема...
while (SIM800.available()) {
Serial.write(SIM800.read()); // ...и выводим их в Serial
}
if (Serial.available()) // Ожидаем команды по Serial...
while (Serial.available())
SIM800.write(Serial.read()); // ...и отправляем полученную команду модему
}
Ну включите смекалку уже :)
Очевидно же что отправка в монитор кода 26 не получается (во всяком случае я например не знаю как).
Выберите какой либо символ, ~ например, и в loop впишите условие что при появлении этого символа слать в модем 26 код.
У меня без этого символа команды не воспринимаются модемом, но я работаю не с ардуино, а с чистым stm32
Все верно,
Serial
.println(
);
сама добавляет символы конца строки в т.ч. и\r
а еслиSerial
.print(
);
, то обязательно нужно явно прописать.http://www.2150692.ru/faq/119-gsm-gprs-modul-aithinker-a6-bystryj-zapusk
Как только я взял в руки А6, то наткнулся на эту ссылку. Все подключил, информационные строки, как описано после 4 пункта у меня появлялись. Сейчас их нет. При вводе любых команд в строку монитора порта -- 0 реакции, команда просто пропадает.
Что делать?! Уже не знаю куда податься
http://www.2150692.ru/faq/119-gsm-gprs-modul-aithinker-a6-bystryj-zapusk
Как только я взял в руки А6, то наткнулся на эту ссылку. Все подключил, информационные строки, как описано после 4 пункта у меня появлялись. Сейчас их нет. При вводе любых команд в строку монитора порта -- 0 реакции, команда просто пропадает.
Что делать?! Уже не знаю куда податься
ссылка не открылась....Что за информационные строки строки?
Очень похоже что модем тупо завис, соотвественно пеобходимо перевключить его и послать несколько AT команд для выравнивания скорости с Arduino?
Прогоните обычный скетч для тестирования - работает?
Что делать?! Уже не знаю куда податься
уточните, какая у вас ардуина и как подключен к ней модем(к каким пинам)? А то что-то из предыдущего обьяснения не понятно.
Arduino uno.
Подключаю:
Arduino A6
Gnd Gnd
5В vcc
TX rx
TX TX
То есть вы модем А6 подключаете к пинам 0 и 1 Ардуино Уно, а Уно через USB - к компьютеру?
Да, именно
В Ардуино Уно единственный аппаратный последовательный порт.
Его можно использовать для связи с компьютером, а можно - для связи с каким-либо другим устройством.
Но использовать единственный порт для связи с двумя устройствами одновременно невозможно.
Например, в сообщении №105 для общения с внешним устройством используется программный последовательный порт на пинах 8 и 9.
В Ардуино Уно единственный аппаратный последовательный порт.
Его можно использовать для связи с компьютером, а можно - для связи с каким-либо другим устройством.
Но использовать единственный порт для связи с двумя устройствами одновременно невозможно.
Это не совсем так. Ничто не помешает передавать с одного Tx на несколько Rx. Все приемники разумеется получат одинаковый сигнал и приймут одно и тоже. Таким образом команды от контроллера могут быть переданы на модем и одновременно продублированы на ПК. С подключением нескольких Tx (от ПК и от модема) к одному входу Rx сложней. Необходимо понимать что передавать они не должны одновременно. Иначе приемник получит мусор. Электрически подключение возможно т.к. на платах ардуино Tx преобразователя USB/UART подключен к Rx через килоомный резистор. Соответственно Tx модема к Rx контроллера можна подключить просто через диод. Я использую такое подключение. Вполне годное с учетом изложеных ограничений.
Это не совсем так. Ничто не помешает передавать с одного Tx на несколько Rx...
Logik, последовательный порт это как бы не только Тх.
И вообще, можно один и тот же кусок бумаги использовать сначала для заворачивания еды, а потом - в качестве туалетной бумаги. Но из этого совершенно не следует, один лист можно постоянно использовать в этих двух качествах. Впрочем, о вкусах не спорят.
Но в любом случае не следует путать явную экзотику с типовым применением.
Это не совсем так. Ничто не помешает передавать с одного Tx на несколько Rx...
Logik, последовательный порт это как бы не только Тх.
Если поднять глаза немного выше, то там и про Тх и про Rx и про ограничения и про все особенности и возможности. Не доперли как и почему несколько Rx на один Tx вешать - перечитывайте.
//Впрочем, о вкусах не спорят.
А мы здесь не о вкусах, а о возможностях. Спорить с Вами о вкусе туалетной бумаги не собираюсь, каждому свое. Признаю в этом вопросе Ваш авторитет.
Решения определяются задачей. Имея один аппаратный и один софтовый UART не логично использовать софтовый для обмена с модемом, а аппаратный для отладки. Потому как принципиально невозможно обеспечить стабильную работу софтового сириала и A6. От скорости это не зависит. Он может нормально работать только с сириалом, обеспечивающим прием данных от модема в любой момент времени , даже если в это время идет передача на модем. ring, sms и пр. поступает асинхронно, в любое время. А SoftSerial.h такое принципиально не может, он либо передает, либо принимает, но не то и то одновременно. Откройте его код - убедитесь. Там обе функции в обработчике прерывания и запрещают друг друга на время выполнения.
Потому на время отладки совмещаем на одном порту. После отладки - аппаратный только для модема станет. Сильно нужно 2 сириала - берем другой МК или если на втором сириале нетребовательная фигня, то софтовый можна. Но модем на SoftSerial.h стабильно не работает. Нестабильно - может )))
За всех не надо говорить, у меня уже полгода минимум работает стабильно.
Доброго времени!
Можно ли как-то отключить повторение RING при звонке???
Или это единственный выход?
AT+CLIP=1
AT+CRC=1
Начало звонка:
+CRING: <voice>
+CLIP: "7495xxxxxxxx",145,,,,1
Конец звонка:
+CIEV: "CALL",0
Заранее благодарю!
Добрый день друзья!
Помогите плиз разобраться начинающему/твердолобому с СМС - получаю звонки, индентифицирую - звоню обратно - всё Ок, а вот СМС только получаю - вижу их текст в мониторе последовательного, но отправить не как - возможно моя ошибка для вас очевидна...
А6 и UNO, код и метод подключения тут на прошлых страницах брал - перечитал тут всё многое в других местах - но что то последний штрих не как))
В идеале конечно было бы найти заведомо рабочий код (под А6 в сети не много инфы) и его разобрать по кирпичикам - так точно дошло бы до меня жирафа - но нет пока такого у меня - может быть поделитесь у кого есть
мне надо для работы с СМС
попалась такая тема - http://compcar.ru/forum/showthread.php?t=10940 но не уверен что со своим уровнем знаний правильно понял - меняя местами println и print в части отправки СМС
пожалуйста вам рабочий код на А6, но отправка в PDU формате, опять же момдем модему рознь,
на моем модеме код заработал, у заказчика на лдругом А6 нет, так что с вашими знаниями рекомендую перейти на модем sim800l - гораздо более предсказуемый модем.
в 48 строке между пробелами (потом пробелы убрать) вписать номер получателя в обратной записи (каждые пару цифр поменяны местами)
пожалуйста вам
Спасибо!
Правда этот код я уже пробовал, не пошло ((.
перейти на модем sim800l
у меня есть ещё - SIM900 Through neoway M590 - но я не знаю к каким пинам подключать ардуино - купил заодно, не посмотрел, а там не подписано вообще ((.
Правда этот код я уже пробовал, не пошло ((.
интересно где и как вы его могли пробовать если он нигде не публиковался :)
sansanich, Вот, посмотрите, найдете ответы на вопросы:
http://arduino.ru/forum/proekty/gsm-signalizatsiya-m590arduino?page=4#comment-302627
andycat - сори, значит что то похожее)) я их уже неделю "пробую")) всё в голове перепуталось - раз так тоже вечером попробую - вдруг оно)) кстати - киньте плиз ссылкой в меня по поводу вашей 48 строки - обратная запись... не сталкивался
pasha413 - Спасибо! попробую и ваш труд применить
мне бы короткий код - который в setup отправлял бы смс с пустым loop - чтобы убедится что сам модуль и симка это могут - остальное уже докапал бы - я так со звонком разобрался - начал с малого и всё понятно - а вот по смс сложнее - нет такой команды как я понял - есть ряд действий которые на разных вариантах модуля по разному должны происходить... вроде 8).
что-то нашел:
обратная запись... не сталкивался
ищется по словам PDU формат SMS
79201234567 -> 79 20 12 34 56 7F (добавляется F до четного количества) -> 97 02 21 43 65 F7
Добрый день друзья!
Помогите плиз разобраться начинающему/твердолобому с СМС - получаю звонки, индентифицирую - звоню обратно - всё Ок, а вот СМС только получаю - вижу их текст в мониторе последовательного, но отправить не как - возможно моя ошибка для вас очевидна...
Не вижу, делаете ли вы предварительно AT+CMGF=1.
И второе - возможно самое важное. Попробуйте строку 6 записать как
andycat - Благодарю Вас! - оказалось совсем не сложно)) отпишу к ночи ближе что у меня получилось
кстати - мой А6 вроде бы обычный/популярный Ai Thinker который
pasha413 - Ваш код тоже попробую - и тоже напишу тут о результате
пугает немного размер скетча - но мне бы только найти рабочий вариант - там разберусь уже
но всё же мне хотелось бы разобраться именно с кодом что я выше показал потому что чую я что он рабочий (ведь принимаються СМС и звонки работают) видимо какая то ошибка именно в событии после которого начинается отправка СМС
а пока амперку почитаю...
b707 - во! то что нужно! Спасибо! мне хочется довести до ума "свой"(взятый вот тут) код - там пишут что рабочий...
Не вижу, делаете ли вы предварительно AT+CMGF=1.
Есть такое
возможно самое важное. Попробуйте строку 6 записать как - спасибо! попробую вечером так сделать
1
mySerial.println(F(
"AT+CSCS=GSM"
));
а должно быть:
1
mySerial.println( F (
"AT+CSCS=\"GSM\""
));
судя по всему....
привыкайте самостоятельно проверять, ничего же не мешает запустить тестовый код и ручками проверить оба варианта, опять же есть документация, которую не помешало бы посмотреть и в которой написано:
“GSM” GSM 7 bit default alphabet (3GPP TS 23.038); this setting causes easily software flow control (XON/XOFF) problems. “UCS2” 16-bit universal multiple-octet coded character set ( ISO/IEC10646 [32]); UCS2 character strings are converted to hexadecimal numbers from 0000 to FFFF; e.g. “004100620063” equals three 16-bit characters with decimal values 65, 98 and 99. “HEX” "PCCP936" Hexadecimal mode. No character set used ; the user read or write directly hexadecimal values. PC Set.
Example
AT+CSCS=”UCS2” AT+CSCS? AT+CSCS=? OK +CSCS: “UCS2” OK +CSCS: ("GSM","HEX","PCCP936","UCS2")
привыкайте самостоятельно проверять, ничего же не мешает запустить тестовый код и ручками проверить
+100
sansanich - откройте консоль и вручную вбейте команды. Добейтесь, чтобы СМС стабильно уходило - потом просто перенесите эти команды в скетч...
ничего же не мешает запустить тестовый код
)) нет у меня под рукой ничего кроме ноута сейчас)) - в остальном вы правы!
и в которой написано:
... дорасти мне до таких текстов ещё надо - не смог понять
sansanich - откройте консоль и вручную вбейте команды. Добейтесь, чтобы СМС стабильно уходило - потом просто перенесите эти команды в скетч...
вот это я и пытаюсь сделать - я писал выше, я так поступил со звонком - нашёл мини код который в setup сразу звонит и от него и "плясал" - теперь тоже самое хочу с смс проделать, но где найти его хз - облазил весь инет наверное
подозреваю что можно в последовательном порте в верхней его части писать команды - но пока не получилось - киньте ссылку плиз если я прав
Спасибо ребят за помощь!
но где найти его хз - облазил весь инет наверное
на каждом углу есть тестовые скетчи для тестирования АТ команд :)
Спасибо! я вопрос не верно формулировал - потому и тут вас элементарщиной донимаю
Сори за детские вопросы - теперь понял куда копать
andycat - это как раз то что мне было нужно!
andycat загрузил код что вы дали выше и пошло! песня просто! удобно, быстро и наглядно
всё работает отлично, читаю смски, удаляю - звоню - получаю информиацию о устройстве - всё Ок
всё равно вопрос - какое последнее действие при отправке смс?
у меня так отправка и не происходит, как будто я не правильно что то делаю на последнем шаге (до него везде ответ Ок) причём смски приходят нормально
всё что пытаюсь написать что бы инициировать отправку (типа 0x1A) продолжает текст смс по моему
вот скрин - Ai Thinker A6 V03.05.20170090814H38
читал тут да и в других источниках - понял что нужно использовать 0x1A или (char)26 или ctrl+z - но видимо не понял как
заранее прошу не судить строго если опять детский вопрос задаю - спасибо
Sim800.write(26)
не как (.
ничего не происходит, потом через время появляется - COMMAND NO RESPONSE!
может быть у меня сам модуль бракованный? (брал на АЛИ) - бывает ли так не знаю
повторю - все команды и запросы выполняются, звонки звонятся и принимаются, смс принимается - НО не отправляются
Ну включите смекалку уже :)
Очевидно же что отправка в монитор кода 26 не получается (во всяком случае я например не знаю как).
Выберите какой либо символ, ~ например, и в loop впишите условие что при появлении этого символа слать в модем 26 код.
уже проявил - спасибо - наткнулся вот тут на это
и всё получилось!
сори друзья за мои вопросы - но без вас я бы ещё неделю копал не туда - Спасибо!
пляшу и танцую от радости - неделю после работы мучился - да здравствует форум arduino.ru - обязуюсь по мере сил и времени принимать участие!
Добрый день! Дисковый сотовый получилось сделать?
Подскажите.
Заказал шилд на модуле A9G.
все вроде работает но с смс проблема принимает только
текста смс нет, какую надо команду ему скормить чтобы видно было.
Только получил пару A6C, сейчас разбираюсь. И похоже один дохлый. Что мешает будить МК от COM порта.
Точняк)) Мешает разве что религия воспитанная спец ногой на М590)))
Подскажите, если можно, как будет это выглядеть в скетче пожалуйста? Заранее благодарен.