SIM800 не отвечает на АТ команды

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016
Всем доброго времени суток.
 Нужна помощ по модулю SIM800.
 Вообщем дело обстоит так.. подключаю его от блока питания компа 12 вольт через понижающий шилд, 
 подаю 4.10 вольта при поиске сети 4.09 вольт, тоесть отлично без просадок.
 После включения светодеод мигает быстро после чего медленнее (сеть нашел). 
 Сигнальные ТХ к RX а RX к ТХ ( пробовал и через делитель и на прямую) к пинам №18,19 на ардуино мега . ну и земли соединил.
 
залил скетч :
#include <SoftwareSerial.h>
SoftwareSerial mySerial(19, 18); // RX, TX
void setup() {
  Serial.begin(19200);  //Скорость порта для связи Arduino с компьютером
  Serial.println("Goodnight moon!");
  mySerial.begin(19200);  //Скорость порта для связи Arduino с GSM модулем
  mySerial.println("AT");
}
 
void loop() {
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}
 так вот при открытие монитора порт выставил скорость и новая строка, и мне приходит сообщение "Goodnight moon!" из скетча, и все...
 пишу в монитор порта AT, ничего никакой реакции, также пробовал ATI  тоже реакции 0.
 
что я не так сделал дайте идею кто знает?  и еще  один из контактов слота симкарты както странно припаян, припоя не видно на нем,
 а прозвонить незнаю как , и может ли не работать АТ команды из за этого контакта?
 
Кто знает отзовитесь пож... Заранее спасибо

 

Jatixo
Offline
Зарегистрирован: 13.01.2016

У меня тоже держатель сим на вид плохо припаян, но работает. Да и у Вас видимо тоже работает, раз сеть находит, да и без симки должны AT идти.

А в мониторе порта внизу рядом со скоростью стоит "Новая строка"?

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

да "Новая строка" выставлена, скетч правильный залит ?

Jatixo
Offline
Зарегистрирован: 13.01.2016

Да правильный, проверяйте подключение, может RX-TX перепутали, получается у Вас 19 пин должен идти на TX модуля, а 18 на RX. И как правильно заметили нужен хотя бы делитель напряжения (хотя в даташите рекомендуются транзисторы), так как у ардуины 5В, а там надо 2,8В, для RX ардуины вообще не хватает, так как там от 3В считается 1, но это примерно, на самом деле работает, я сделал делитель для TX ардуины, а для RX просто резистор небольшой на 39 Ом (такой нашел), хотя пишут ничего не надо, итак не хватает же, но на всякий случай, а делитель из резисторов 1кОм и ~1,2кОм (из двух последовательно, одного не нашел). Но пишут и напрямую работает, но не рекомендуется... Кстати похоже из-за того что через делитель, то короткие команды работают на больших скоростях, а длинные типа чтение смс, ошибки (смс поврежденный текст приходит, хотя это получается не через делитель, а через резистор один), не сразу разобрался в чем косяк, оказалась байты другие летят иногда... убавил скорость со 115200 ниже и заработало, на 19200 так-то должно стабильно работать.

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

БЕДА БЕДОЙ  не в какую не хочет отвечать, менял провода tx rx местами, с делителем и без него пробовал, ничего не отвечает

Jatixo
Offline
Зарегистрирован: 13.01.2016

Вот еще по SoftwareSerial:

На платах Arduino Mega и Mega2560 некоторые выводы не поддерживают прерывания, возникающие при изменении уровня сигнала. В силу этого, на данных платах в качестве вывода RX могут использоваться только следующие выводы: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).

Вот и ответ =)

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

в скетче прописал так SoftwareSerial mySerial(15, 14); // RX, TX

ну и подключил соответственно, и снова реакции 0

Jatixo
Offline
Зарегистрирован: 13.01.2016

Попробуйте 15 и 14 отключить от модуля и просто между собой замкнуть, должно то что пишите сразу появляться, так хоть ардуину проверите.

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

Jatixo спасибо огромно за подсказку по поиску проблемы, Вы как в воду глядели, и действительно проблема до модуля СИМ800 не дошла, а конкретннее по вашему совету замкнул рх и тх и как не странно ничего, подумал спалил контакты ... после проверки светодеодом (поморгал) оказалось что они рабочие. И вот я снова застрял, одно предположение только что библиотека SoftwareSerial не работает... возможно ли такое? или еще какие варианты могут быть ?

Jatixo
Offline
Зарегистрирован: 13.01.2016

Вряд ли библиотека, попробуйте другие пины из списка, скорость 9600, также можно arduino новую версию скачать, но это вряд ли...

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

вообщем так расскажу. на форуме нашел тему и ссылку на библиотеку AltSoftSerial  ( http://www.pjrc.com/teensy/td_libs_AltSoftSerial.html )

Скачал, установил, там описаны контакты для этой библиотеки - являются константами, у меня на меге это 46,48. Но что то там написано про татаймер который занимает эта библиотека и возможны несовместимости с другими, какими и почему так и не понял.... мой английский очень хромает.

также опросил модуль на доступные сети, вывел мтс, билайн, мегафон а вот теле2 отсутствует, хотя на мобилке сеть полная. Не связано ли это с 3G а модуль поддерживает 2G?

И почему не работает библиотека SoftwareSerial ? есть ли у кого предположения?/

Valera19701
Valera19701 аватар
Онлайн
Зарегистрирован: 18.10.2015

https://www.arduino.cc/en/Reference/Serial

там выделены Serial1, Serial2 может так и писать надо, а не myserial  и там выводы другие:)

 

 

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

нет при инициализации портов в библиотеке SoftwareSerial используется команда SoftwareSerial mySerial(19, 18); // RX, TX

к сожалению Ваш ответ мне не помог! 

Еще есть у кого идеи по посту #10  ?

Jatixo
Offline
Зарегистрирован: 13.01.2016

Это аппаратные serial, им softwareserial не нужно, к ним нужно обращаться также как к Serial (который к компьютеру идет), но с цифрой на конце. Пробуйте так, а также получилось, что Вы как раз все разы пробовали как раз эти порты, да еще и цифры всегда наоборот, попробуйте цифры поменять местами(и провода соответственно), а также другие порты из Software Serial.

Jatixo
Offline
Зарегистрирован: 13.01.2016

В общем пробуйте так:



void setup() {
  Serial.begin(19200);  //Скорость порта для связи Arduino с компьютером
  Serial.println("Goodnight moon!");
  Serial1.begin(19200);  //Скорость порта для связи Arduino с GSM модулем
  Serial1.println("AT");
}
 
void loop() {
  if (Serial1.available())
    Serial.write(Serial1.read());
  if (Serial.available())
    Serial1.write(Serial.read());
}

Получится 19 (RX) и 18 (TX), соответственно 19 к TX GSM, 18 к RX GSM.

 

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

замкнул тх и рх использвал как обычный сериал все работает, подключал к 50 51 контактам через SoftwareSerial не пашет, и провода менял и так и так, не выходит, в общем пришел в кыводу что нужно заменить библиотеку SoftwareSerial , где скачать можно?

 

Jatixo
Offline
Зарегистрирован: 13.01.2016

Она вместе с Ардуино идет: https://www.arduino.cc/en/Main/Software

Попробуйте в новую папку поставить или обновить старую и оттуда Компилировать и Загрузить.

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Baks, у меня получилось.

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

Так и не могу запустить ардуинку мега с библиотекой SoftwareSerial, уже пробовал другую версия компилятора скачал arduino-1.7.8, до этого работал с arduino-nightly. Контакты перемыкаю, тоесть ХТ с РХ на адуино. В общем взял пример из библиотеки 

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup()
{
  // Open serial communications and wait for port to open:
  Serial.begin(19200);
  Serial.println("Goodnight moon!");

  mySerial.begin(19200);
  mySerial.println("Hello, world?");
}

void loop() // run over and over
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}

пробовал все пины для меги (соответственно в скетче тоже менял) и скорасть менял, не помогает.

Подскажите пожалуйсто как запустить эту библиатеку, что можно еще проверить ?

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Поменяйте местами пины 11 и 10.

SoftwareSerial mySerial(11, 10); // RX, TX

 

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

не помогло, выводит только Goodnight moon 

есть еще идеи? идеи иссякли у меня :(

gena
Offline
Зарегистрирован: 04.11.2012
dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Baks, у Вас MEGA2560?

Если так, то необходимо вместо Serial указывать Serial1 или Serial2 или Serial3.

The Arduino Mega has three additional serial ports: Serial1 on pins 19 (RX) and 18 (TX), Serial2 on pins 17 (RX) and 16 (TX), Serial3 on pins 15 (RX) and 14 (TX). To use these pins to communicate with your personal computer, you will need an additional USB-to-serial adaptor, as they are not connected to the Mega's USB-to-serial adaptor. To use them to communicate with an external TTL serial device, connect the TX pin to your device's RX pin, the RX to your device's TX pin, and the ground of your Mega to your device's ground. (Don't connect these pins directly to an RS232 serial port; they operate at +/- 12V and can damage your Arduino board.)

Т.е. если я правильно понял, на 10 и 11 порту по сериалу не будет рабоать. Попробуйте Serial1 и порты 19 и 18.

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

dr.lmg с сериалом все отлично работает, на всех трех, весь вопрос в том что библиотека SoftwareSerial не в какую не хочет заработать на моей ардуинке 

"Baks, у Вас MEGA2560?" и да вы правы. пока использую не обычный сериал а библиотеку AltSoftSerial . она работает нормально. а вот с SoftwareSerial не на каких пинах не запускается. может чтото с таймером?

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Ну с другими если работает, то и фиг с ней, с этот библиотекой. Что в ней такого, что нужно обязательно использовать ее?

У меня библиотека relay8 конфликтовала с одной из других библиотек. Но ошибок не было, протсо не работала и все.

Я ее переместил в самый верх, над остальными, и все заработало. Попробуйте подключать SoftSerial самым первым. И самым последним.

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

хотел использовать библиотеку SIM800 а она использует SoftwareSerial вот в чем вся загвостка переписывать очень страшно, и думаю очень долго будет, а проверяю я какраз тестовым скетчем там только одна она и используется #18

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016
Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

так он тоже эту библиотеку использут значит и работать не будет

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Так попробуйте, прежде чем утверждать :)

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Baks, проблему я так понял решили? Расскажите в чем она была?

Dron
Offline
Зарегистрирован: 17.06.2016

Всем доброго времени суток.

Кое-что по работе с SIM800L есть здесь:

http://arduino.ru/forum/proekty/gsm-sistema-kontrolya-za-avtomaticheskim...

Все работает как часы.

Votmax
Offline
Зарегистрирован: 18.06.2016

У меня аналогичная проблема была. Не стал использовать SoftwareSerial, все повесил на аппоратный RX TX. Плюс ко всему скорость работы  SIM800 была по умолчанию настроена на 115200, а я пробовал и 9600 и 4800 и т.д.  И в результате, все работает как часы)))

Marsohod
Offline
Зарегистрирован: 21.12.2016

Я походу знаю в чем дело!!!! Но не знаю как исправить (((

У меня поначалу модуль бодро отвечал на все команды, но не отправлял СМС (скетч использовал из шапки).

Потом я нашел вот такой код для сетапа:

 

 

  mySerial.println("AT+CLIP=1");  //включаем АОН

  delay(100);

  mySerial.println("AT+CMGF=1");  //режим кодировки СМС - обычный (для англ.)

  delay(100);

  mySerial.println("AT+CSCS=\"GSM\"");  //режим кодировки текста

  delay(100);

 

СМСки стали улетать но модуль перестал отвечать на команды (хотя продолжает их выполнять).

Как вернуть все обратно не пойму.

Marsohod
Offline
Зарегистрирован: 21.12.2016

РАЗОБРАЛСЯ!!!!

Нужно "-" источника питания повесить ещё и на GND платы ардуино. Все стало работать норм!!!!

Pashy777
Offline
Зарегистрирован: 20.05.2017

Подскажите как Вы реализовали? Схема подключения. Скетч с примером.

Marsohod
Offline
Зарегистрирован: 21.12.2016

Все забыл уже. К концу дня соберу, вспомню, пришлю.

Marsohod
Offline
Зарегистрирован: 21.12.2016


Я подключал вот так. Преобразователя небыло, использовал батарейку.

 

Скетч:

 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
int ch = 0;
int led = 13;
String val = "";

void setup() {и
  delay(2000);  //время на инициализацию модуля
  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);
  Serial.begin(19200);  //скорость порта
  Serial.println("GSM tester v1.0");
  mySerial.begin(19200);
  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) {  //если звонок обнаружен, то проверяем номер
      if (val.indexOf("7123456789") > -1) {  //если номер звонящего наш. Укажите свой номер без "+"
        Serial.println("--- MASTER RING DETECTED ---");
        mySerial.println("ATH0");  //разрываем связь
        digitalWrite(led, HIGH);  //включаем светодиод на 3 сек
        delay(3000);
        digitalWrite(led, LOW);  //выключаем реле
        sms(String("Privet, Irishka!!!"), String("+7123456789"));  //отправляем СМС на номер
      }
    } 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("+7123456789"));  //отправляем СМС на номер +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);
}

Возможно нужно будет поэксперементировать с паузами. Можно для начала поставить поболше и опытным путем уменьшать. Мой модуль работает с приведенными здесь.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

Marsohod пишет:



Я подключал вот так. Преобразователя небыло, использовал батарейку.

спалите модуль к чертовой матери.... на рх тх  можно подавать не более 2,8В !!!

делаейте сами, но не тащите сюда-  другие сожгут свой модуль и скажут вам спасибо.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

потом еще ноют - вот чтото у меня скетч не работает....   мозги не работают ни грамма..

начнете ныть что можно не по правилам и все работает  - так ходите лучше на красный свет через дорогу, но не тащите сюда такие вот "схемы".

Logik
Онлайн
Зарегистрирован: 05.08.2014

Short Circuit пишет:

Marsohod пишет:



Я подключал вот так. Преобразователя небыло, использовал батарейку.

спалите модуль к чертовой матери.... на рх тх  можно подавать не более 2,8В !!!

Да. Резистор в килоом-другой между Tx ардуиніы и Rx модема нужен. И запаяйте его максимально быстро, т.к. ща набегут доброжелатели и вы поставите один из вариантов:

1. Резестивный делитель.

2. транзисторный каскад.

3. спец микросхему преобразования уровней

4. оптрон

5. сельсин.

Поторопитесь!

Marsohod
Offline
Зарегистрирован: 21.12.2016

Спасибо за коментарий, но вот непонятно.

Питание GSM модуля от 3.7 в до 4.2 в. Это как раз батарейка сотового. Я же на RX/TX питание не подаю. Модуль сам формирует сигнал.

Или вы имеете в виду, что на выходах RX/TX GSM модуля уровень сигнала равен напряжению питания модуля? Или есть какая-то зависимость близкая к единице?

Информация достоверная? Очень обяжете если поясните. А то очень не хочется опять к метрологам за осциллографом с блоком переменного напряжения переться – жадные они. Но если надо схожу, графики выложу. 

Okmor
Okmor аватар
Offline
Зарегистрирован: 16.10.2015

У меня так работает: Serial.begin(2400);

 

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

Marsohod пишет:

Спасибо за коментарий, но вот непонятно..............

проблема шаманства. Шаманы не читают даташиты и рекомендации в даташитах. И потом начинают шаманить,  жечь гсм модули, утверждать что  там полно загадок, они глючат, требуют пояснений и т.д.. Это все проблема шаманства.

Marsohod
Offline
Зарегистрирован: 21.12.2016

Вот спасибо за четкий ответ на вопрос. И за поучения дельные спасибо. Вот прям теперь у меня как будто глаза открылись. Всего вам хорошего, внукам вашим здоровья.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

1) есть даташиты.

2) есть куча инфы здесь с срисунками как нужно подключать - через резисторы с диодами..

Лень искать или поиском не умеете пользоваться?

 А шаманить и претензии высказывать - уже умеете?

Pashy777
Offline
Зарегистрирован: 20.05.2017

Подскажите почему при нажатии кнопки в блинк не всегда срабатывает пин ардуино вот скетч

*******************/
#include

#define BLYNK_PRINT Serial // Comment this out to disable prints and save space

#include
#include
#define ONE_WIRE_BUS 4

OneWire oneWire (ONE_WIRE_BUS);
DallasTemperature sensor (&oneWire);
// Default heartbeat interval for GSM is 60
// If you want override this value, uncomment and set this option:
//#define BLYNK_HEARTBEAT 30

// Select your modem:
#define TINY_GSM_MODEM_SIM800
//#define TINY_GSM_MODEM_SIM900
//#define TINY_GSM_MODEM_M590

#include
#include
const int ledPin = 11;
#define BAT_Pin A0 // на батарею, через делитель напряжения 39кОм / 11 кОм
float m = 66.91; // делитель для перевода АЦП в вольты
float Vbat; // переменная хранящая напряжение бортовой сети

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
const char auth[] = "хххххххххххх ";

// Your GPRS credentials
// Leave empty, if missing user or pass
const char apn[] = "internet";
const char user[] = "mts";
const char pass[] = "mts";

// Hardware Serial on Mega, Leonardo, Micro
#define SerialAT Serial1

// or Software Serial on Uno, Nano
#include
SoftwareSerial SerialAT(2, 3); // RX, TX
TinyGsm modem(SerialAT);

void setup()
{
// Set console baud rate
Serial.begin(57600);
modem.restart();
delay(10);

// Set GSM module baud rate
SerialAT.begin(38400);
delay(10000);

//Restart takes quite some time
// To skip it, call init() instead of restart()
Serial.println("START SIM800");

// Unlock your SIM card with a PIN
//modem.simUnlock("1234");

Blynk.begin(auth, modem, apn, user, pass);
sensor.begin();
delay(300);
}

void detection(){ // условия проверяемые каждые 10 сек
sensor.requestTemperatures(); // читаем температуру с трех датчиков
float temp = sensor.getTempCByIndex(0);
float temp1 = sensor.getTempCByIndex(1);
float temp2 = sensor.getTempCByIndex(2);
Serial.println(temp);
Serial.println(temp1);
Serial.println(temp2);
Blynk.virtualWrite(V1, temp);
Blynk.virtualWrite(V2, temp1);
Blynk.virtualWrite(V3, temp2);
Vbat = analogRead(BAT_Pin); // замеряем напряжение на батарее
Vbat = Vbat / m ; // переводим попугаи в вольты
delay(1000);
// read the input on analog pin 0:
/// int sensorValue = analogRead(A0);
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
/// float voltage = sensorValue * (15.0/ 1023.0);
Blynk.virtualWrite(V6, Vbat);
delay(1000);
}

void loop()
{
Blynk.run();
detection();

}

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

Ваш скетч в таком виде никто смотреть не будет, приведите его в нормальную форму.

Pashy777
Offline
Зарегистрирован: 20.05.2017

Как залить на сайт не пойму.

Pashy777
Offline
Зарегистрирован: 20.05.2017
#include <SimpleTimer.h>

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 4

OneWire oneWire (ONE_WIRE_BUS);
DallasTemperature sensor (&oneWire);
// Default heartbeat interval for GSM is 60
// If you want override this value, uncomment and set this option:
//#define BLYNK_HEARTBEAT 30

// Select your modem:
#define TINY_GSM_MODEM_SIM800
//#define TINY_GSM_MODEM_SIM900
//#define TINY_GSM_MODEM_M590

#include <TinyGsmClient.h>
#include <BlynkSimpleSIM800.h>
const int ledPin =  11;
#define BAT_Pin A0      // на батарею, через делитель напряжения 39кОм / 11 кОм
float m = 66.91;         // делитель для перевода АЦП в вольты
float Vbat;              // переменная хранящая напряжение бортовой сети


// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
const char auth[] = "66666666666";

// Your GPRS credentials
// Leave empty, if missing user or pass
const char apn[]  = "internet";
const char user[] = "mts";
const char pass[] = "mts";

// Hardware Serial on Mega, Leonardo, Micro
#define SerialAT Serial1

// or Software Serial on Uno, Nano
#include <SoftwareSerial.h>
SoftwareSerial SerialAT(2, 3); // RX, TX
TinyGsm modem(SerialAT);

void setup()
{
  // Set console baud rate
  Serial.begin(57600);
    modem.restart();
  delay(10);

  // Set GSM module baud rate
  SerialAT.begin(38400);
  delay(10000);


  //Restart takes quite some time
  // To skip it, call init() instead of restart()
  Serial.println("START SIM800");

  // Unlock your SIM card with a PIN
  //modem.simUnlock("1234");

  Blynk.begin(auth, modem, apn, user, pass);
   sensor.begin();
   delay(300);
}


void detection(){ // условия проверяемые каждые 10 сек   
   sensor.requestTemperatures();   // читаем температуру с трех датчиков
    float temp = sensor.getTempCByIndex(0);  
    float temp1 = sensor.getTempCByIndex(1);
    float temp2 = sensor.getTempCByIndex(2);
    Serial.println(temp);
 Serial.println(temp1);
     Serial.println(temp2);
   Blynk.virtualWrite(V1, temp);
   Blynk.virtualWrite(V2, temp1);
   Blynk.virtualWrite(V3, temp2);
       Vbat = analogRead(BAT_Pin);  // замеряем напряжение на батарее
    Vbat = Vbat / m ; // переводим попугаи в вольты
    delay(1000);
       // read the input on analog pin 0:
 /// int sensorValue = analogRead(A0);
  // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
 /// float voltage = sensorValue * (15.0/ 1023.0);
  Blynk.virtualWrite(V6, Vbat);
   delay(1000);  
}

void loop()
{
  Blynk.run();
   

}

 

Pashy777
Offline
Зарегистрирован: 20.05.2017

Пардон не тот скетч вот тот.

define BLYNK_PRINT Serial    // Comment this out to disable prints and save space

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 4

OneWire oneWire (ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
unsigned long Time1 = 0;
unsigned long Time2 = 0;

#include <SimpleTimer.h>
SimpleTimer timer;




// Default heartbeat interval for GSM is 60
// If you want override this value, uncomment and set this option:
//#define BLYNK_HEARTBEAT 30

// Select your modem:
#define TINY_GSM_MODEM_SIM800
//#define TINY_GSM_MODEM_SIM900
//#define TINY_GSM_MODEM_M590

#include <TinyGsmClient.h>
#include <BlynkSimpleSIM800.h>


// Select your pin with physical button




// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
const char auth[] = "66";

// Your GPRS credentials
// Leave empty, if missing user or pass
const char apn[]  = "internet";
const char user[] = "mts";
const char pass[] = "mts";

// Hardware Serial on Mega, Leonardo, Micro
#define SerialAT Serial1

// or Software Serial on Uno, Nano
#include <SoftwareSerial.h>
SoftwareSerial SerialAT(2, 3); // RX, TX
TinyGsm modem(SerialAT);

#define RELE 11
bool rele;


const int btnPin = 12;
WidgetLED led3(V5);
boolean btnState = false;



void setup()
{
  // Set console baud rate
  Serial.begin(57600);
    modem.restart();
  delay(10);

  // Set GSM module baud rate
  SerialAT.begin(19200);
  delay(100);


  //Restart takes quite some time
  // To skip it, call init() instead of restart()
  Serial.println("START SIM800");

  // Unlock your SIM card with a PIN
  //modem.simUnlock("1234");

  Blynk.begin(auth, modem, apn, user, pass);

   sensors.begin();
   delay(300);
  // initialize the LED pin as an output:   

 pinMode(btnPin, INPUT_PULLUP);

pinMode(RELE, OUTPUT);
while (Blynk.connect() == false) {
    // Wait until connected}
    
}

timer.setInterval(500L, buttonLedWidget);
  
}
void detection(){ // условия проверяемые каждые 10 сек 
   sensors.requestTemperatures();   // читаем температуру с трех датчиков
    float temp = sensors.getTempCByIndex(0);  
    float temp1 = sensors.getTempCByIndex(1);
    float temp2 = sensors.getTempCByIndex(2);
    Serial.println(temp);
   Blynk.virtualWrite(V1, temp);
   Blynk.virtualWrite(V2, temp1);
   Blynk.virtualWrite(V3, temp2);
   // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
  float voltage = sensorValue * (15.0/ 1023.0);
  Blynk.virtualWrite(V6, voltage);
    int sensorValue1 = analogRead(A1);
  // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
  float voltage1 = sensorValue * (100/ 1023.0);
  Blynk.virtualWrite(V7, voltage1);


}
BLYNK_CONNECTED()
{
 Blynk.syncVirtual(V0);
 
}
BLYNK_WRITE (V0)

{
 
  int rele = param.asInt();
digitalWrite (RELE, rele);
}

void buttonLedWidget()
{
  // Read button
  boolean isPressed = (digitalRead(btnPin) == LOW);

  // If state has changed...
  if (isPressed != btnState) {
    if (isPressed) {
      led3.off();
    } else {
      led3.on();
    }
    btnState = isPressed;
  }
}




void loop()
{
  Blynk.run();  
if (millis()> Time1 + 3000) detection(), Time1 = millis(); // выполняем функцию detection () каждые 10 сек
if (millis()> Time2 + 2000) buttonLedWidget(), Time2 = millis(); // выполняем функцию detection () каждые 10 сек
  timer.run();
 
}

 

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

отвечаю

Подскажите почему при нажатии кнопки в блинк не всегда срабатывает пин ардуино вот скетч

 

ваш код из лупа

if (millis()> Time1 + 3000) detection(), Time1 = millis(); // выполняем функцию detection () каждые 10 сек

даю подсказку 3000 милисекунд это надо перевести в секунды

и подумать как часто вызывается эта функция.....

по моему както все через одно место собрано