прибор посылающий измерения атмосферного давления по GSM.

yanstepan
Offline
Зарегистрирован: 20.04.2016

Нужна помощь по программированию устройства, т.е для микроконтроллера atmega328p-pu нужно записать код ,чтобы он умел получать данные с датчика давления MPX4115A, и отправлять полученные измерения смской на телефон с помощью GSM модуля SIM900, преобразователь имеется max232,  на ардуино уно,  

вместо датчика можно пока использовать потенциометр, нужна большая помощь по программе!!, Примеры,похожие работы,может кто нибудь делал такое.  

Сам научился только смску отправлять на номер с помощью GSM, с помощью AT команд используя компорт вместо микроконтроллера, теперь хотелось бы чтобы микроконтроллер посылал команды а я типа с GSM модуля с компорта отвечал якобы GSM модуль сам,

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

void setup() {
  // initialize serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
 
 
  
}
 
void loop() {
 
  Serial.println("AT");//отправляем команду АТ через UART
  char buf[20];  //создаем буфер состоящий из 20 ячеек памяти. каждая ячейка 1 байт 
  readSerial(buf);
  char input[] = {"OK\r"};
  if (compareMassive(input, buf)>0)  Serial.println(buf);
  else Serial.println("Error");
 
  Serial.println("ATE0");
  readSerial(buf);
  char vxod[] = {"OK\r"};
  if (compareMassive(vxod, buf)>0)  Serial.println(buf);
  else Serial.println("Error");
   
  Serial.println("AT+CMGS="+79627374868"");
  readSerial(buf);
  char otpravkasms[] = {"OK\r"};
  if (compareMassive(otpravkasms, buf)>0)  Serial.println(buf);
  else Serial.println("Error");
}
 
 
 
/*
  Read input serial
 */
 
int compareMassive(char constant[], char variable[]){
    int i =0;
    int p;
    while(1){
      p=constant[i];
      if (p == '\r') return i;
      if(constant[i] == variable[i]){
        i++;  
      }else{
      return 0;  
      }
 
      
    }
  } 
int readSerial(char result[]) {
  int i = 0;
  while (1) {
    while (Serial.available() > 0) {
      char inChar = Serial.read();
      if (inChar == '\n') {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }
      if (inChar != '\r') {
        result[i] = inChar;
        i++;
      }
    }
  }
}
pcb
Offline
Зарегистрирован: 02.04.2015

40 т.р.

PCBADM на мэйл.ру

Onkel
Offline
Зарегистрирован: 22.02.2016

yanstepan пишет:

у меня есть готовый прибор на sim900dz simcom, цена  20 тыр, только симку вставить, и все. ydom собакa mail.ru

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

yanstepan, не совсем понятно, что именно вам нужно.

готовых примеров по отправке смс в сети полно, в чем у вас сложности?

StudioGippopotam@gmail.com

yanstepan
Offline
Зарегистрирован: 20.04.2016

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

Датчик аналоговый, атмосферного давления MPX4115a, 

#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(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) {  //если звонок обнаружен, то проверяем номер
      if (val.indexOf("71234567890") > -1) {  //если номер звонящего наш. Укажите свой номер без "+"
        Serial.println("--- MASTER RING DETECTED ---");
        mySerial.println("ATH0");  //разрываем связь
        digitalWrite(led, HIGH);  //включаем светодиод на 3 сек
        delay(3000);
        digitalWrite(led, LOW);  //выключаем реле
      }
    } 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("+71234567890"));  //отправляем СМС на номер +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);
}
m_t
Offline
Зарегистрирован: 29.03.2012
Можем обсудить.
пишите на почту 
m_t01@mail.ru
В сообщении  указывайте ссылку на тему.
Какой бюджет и сроки?