Мотосигнализация

Тема в разделе "Посоветуйте детальки", создана пользователем Vladis_a, 17 дек 2015.

  1. AVGN

    AVGN Нуб

    Поставил 1.8.5 ошибки те же. Компилируете под какую плату ардуино?
    Можете сюда сбросить файл sketch который компилируется у Вас?
     
    Последнее редактирование: 18 фев 2019
  2. ZAZ-965

    ZAZ-965 Гуру

    @AVGN, в функции void Cmd_Read_Act(void) { // Функция чтения СМС - пропущена фигурная скобка
     
  3. AVGN

    AVGN Нуб

    Спасибо за отзывчивость!
    К сожалению не помогло.
    После правки появились новые ошибки:

    D:\AVGN\Arduino\GPSmoto_alarm_pravka_1_8_5\GPSmoto_alarm_pravka_1_8_5.ino: In function 'void loop()':
    GPSmoto_alarm_pravka_1_8_5:49: error: 'Cmd_Read_Act' was not declared in this scope
    GPSmoto_alarm_pravka_1_8_5:50: error: 'clearBufferArray' was not declared in this scope
    GPSmoto_alarm_pravka_1_8_5:59: error: a function-definition is not allowed here before '{' token
    GPSmoto_alarm_pravka_1_8_5:197: error: expected '}' at end of input
    exit status 1
    'Sim900_Inti' was not declared in this scope
     
  4. ZAZ-965

    ZAZ-965 Гуру

    Код (C++):
    #include <SoftwareSerial.h> // Подключаем библиотеку SoftwareSerial
    #include <string.h>
    #include <TinyGPS.h> // Подключаем библиотеку для GPS

    SoftwareSerial GSM(2,3); // Модуль GSM с именем GSM на пинах 2 - RX, 3 - TX Ардуино

    byte buffer[128]; // Размер буфера для данных. Обратите внимание на размер! Необходимо править библиотеку SoftwareSerial.h
    int count=0; // Счетчик для буфера данных

    SoftwareSerial GPS(4,5); // Модуль GPS с именем GPS на пинах 4 - RX, 5 - TX Ардуино
    TinyGPS gps;

    unsigned long fix_age;
    long lat, lon;
    float LAT, LON; // Какие данные GPS будем вычислять
    void gpsdump(TinyGPS &gps);
    bool feedgps();
    void getGPS();

    /*void SIM900power() // Функция программного включения GSM модуля
    {
    digitalWrite(9, HIGH); // На 9 пине программное включение GSM
    delay(1000);
    Sim900_Inti();
    }*/


    void clearBufferArray() // функция очистки буфера
    {

    for (int i=0; i<count;i++)
    { buffer[i]=NULL;}

    }

    void Sim900_Inti(void)
    {
    GSM.println("AT+CLIP=1");  // Включаем АОН
    Serial.println("AT+CLIP=1");
    delay(500);
    GSM.println("AT+CMGF=1"); // Устанавливаем модуль GSM в режим СМС
    Serial.println("AT+CMGF=1");
    delay(500);
    GSM.println("AT+CNMI=2,2");
    Serial.println("AT CMGF=1");
    delay(500);
    GSM.println("AT+CSCS=\"GSM\"");  // Режим кодировки текста
    Serial.println("AT+CSCS=\"GSM\"");
    delay(500);
    }

    void Cmd_Read_Act(void) // Функция чтения СМС
    {
    char buffer2[64];
    for (int i=0; i<count;i++)
    { buffer2[i]=char(buffer[i]);}
    if (strstr(buffer2,"1234")) // Сравниваем пароль в программе с паролем в СМС, вместо 1234 можете вбить свой
    {

    Serial.println("Password Authenticated.");
    Serial.println("Sending reply SMS. ");
    SendTextMessage();

    }

    }

    void SendTextMessage()
    {
    GSM.print("AT+CMGF=1\r"); // Устанавливаем модуль GSM в режим СМС
    delay(100);
    GSM.println("AT+CMGS=\"+7ХХХХХХХХХХ\"");// Разрешенный номер
    delay(100);
    GSM.println("Calculates position!");// Содержание первой СМС
    delay(100);
    GSM.println((char)26);
    delay(100);
    GSM.println();
    delay(5000);
    int counter=0;
    GPS.listen();
    for (;;)

    {
    long lat, lon;
    unsigned long fix_age, time, date, speed, course;
    unsigned long chars;
    unsigned short sentences, failed_checksum;
    long Latitude, Longitude;
    // retrieves /- lat/long in 100000ths of a degree
    gps.get_position(&lat, &lon, &fix_age);

    getGPS();
    Serial.print("Latitude : ");
    Serial.print(LAT/1000000,7);
    Serial.print(" :: Longitude : ");
    Serial.println(LON/1000000,7);

    /*if (LAT == 0 && LON == 0)

    {
    continue;
    }
    counter ;
    if (counter<30)
    {
    continue;
    }
    */


    GSM.print("AT+CMGF=1\r"); // Устанавливаем модуль GSM в режим СМС
    delay(100);
    GSM.println("AT+CMGS=\"+7ХХХХХХХХХХ\"");// Разрешенный номер
    delay(100);
    GSM.print("maps.google.com/maps?q="); // Ссылка на карты Google
    //GSM.print("Latitude : ");
    GSM.print(LAT/1000000,7);
    GSM.print("+");
    //GSM.print(" :: Longitude : ");
    GSM.println(LON/1000000,7);//the content of the message
    delay(100);
    GSM.println((char)26);//the ASCII code of the ctrl z is 26
    delay(5000);
    GSM.println();
    counter=0;
    break;
    }

    }

    void getGPS()
    {
    bool newdata = false;
    unsigned long start = millis();
    while (millis() - start < 1000)
    {
    if (feedgps ())
    {
    newdata = true;
    }
    }
    if (newdata)
    {
    gpsdump(gps);
    }

    }

    bool feedgps()
    {
    while (GPS.available())
    {
    if (gps.encode(GPS.read()))
    return true;
    }return 0;

    }

    void gpsdump(TinyGPS &gps)
    {
    gps.get_position(&lat, &lon);
    LAT = lat;
    LON = lon;
    {
    feedgps();
    }

    }

    void setup()
    {
    GSM.begin(19200); // Скорость работы модуля GSM
    GPS.begin(9600); // Скорость работы модуля GPS
    Serial.begin(19200); // Скорость работы последовательного порта
    delay(500);
    Sim900_Inti();
    }

    void loop()
    {
    GSM.listen();
    if (GSM.available())
    {
    while(GSM.available())
    {
    buffer[count++]=GSM.read();
    if(count == 64)break;
    }

    Serial.write(buffer,count);
    Cmd_Read_Act(); // вызываем функцию проверки пароля
    clearBufferArray(); // вызываем функцию очистки буфера
    count = 0;
    }

    if (Serial.available())
    GSM.println(Serial.read());

    }

     
     
    AVGN нравится это.
  5. AVGN

    AVGN Нуб

    Спасибо!
    Компилируется в ID 1.8.5 для Arduino Nano.
    *в железе не проверил*

    Может кому пригодится .
    Для этого скетча так же необходимо править библиотеку SoftwareSerial.h.
    Библиотека лежит arduino-1.8.5\hardware\arduino\avr\libraries\SoftwareSerial\src
    SoftwareSerial.h открываем в nitepad++ .
    В открывшемся тексте находим:
    #define _SS_MAX_RX_BUFF 64 // RX buffer size
    И 64 меняем на 128, получится вот так :
    #define _SS_MAX_RX_BUFF 128 // RX buffer size я заменил на 128 для GPS трекера
     
  6. Одна беда: постоял байк долждливую недельку в гараже - акк сдох.
     
  7. ImrDuke

    ImrDuke Гик

    Этим и заводские сигналки грешат.
     
  8. AVGN

    AVGN Нуб

    какой скетч использовали?
    В этой теме только один скетч рабочий от
    ZAZ-965
    все остальные скетчи с ошибками.
     
  9. Это опыт не с этими скетчами, а с автономной электроникой на мото в общем.