Close

Arduino GSM shlield – problem zo softwarovim zapnutim modulu

Úvodní stránka Fórum Vaše projekty Arduino Arduino GSM shlield – problem zo softwarovim zapnutim modulu

  • Toto téma obsahuje celkem 1 odpověď. Do diskuze (2 diskutující) se naposledy zapojil uživatel marh a poslední změna proběhla před 6 roky a 10 měsíci.
Aktuálně jsou na stránce zobrazeny 2 příspěvky - 1. až 2. (celkem z 2)
  • Autor
    Příspěvky
  • #11601
    maros.bercell
    Účastník

    Dobrý deň všetkým,

    Mám problém s GPRS Shlieldom ktorý mam pripojení na čínsku verziu Arduina. Konkrétne mam problem s funkciou ktorá ma overiť či je GPRS Shlield zapnutý a v prípade že nie tak ho ma softwarovo zapnúť ale nefunguje to a nezapne ho.

    V prílohe pridávam aj zdrojový kód ak by sa niekto našiel kto by mi poradil poprípade upravil kód bol by som vdačny.

    zdrojový kód :

    #include <SPI.h> // knižnica pre seriovú komunikáciu
    #include <Ethernet.h> // knižnica pre ethernet shield
    #include <DHT.h> // knižnica pre senzor teploty a vlhkosti DHT 22
    #include <GPRS_Shield_Arduino.h>
    #include <SoftwareSerial.h>

    //definicia pinov
    #define DHT1 a // definicia pinu DTH senzora 1
    #define DHT2 b // definicia pinu DTH senzora 1
    #define bzuciak c // definicia pinu pre bzuciak
    //#define poziarny_senzor d // definicia pinu pre poziarny senzor

    // nastavení propojovacích pinů a rychlosti
    // komunikace se SIM modulem,
    // novější Shieldy používají pro
    // komunikaci TX a RX piny 7 a 8
    #define pinTX 62 // A8
    #define pinRX 63 // A9
    #define pinPower 9
    #define rychlostSim 9600
    // vytvoření proměnné s detekovaným číslem
    char mojeCislo[16] = „+421915766744“;
    // vytvoření proměnných pro práci s SMS
    #define delkaZpravy 160
    char smsZprava[delkaZpravy];
    int smsIndex = 0;
    char telCislo[16];
    char casDatum[24];

    int a=34; // zadavanie pinu pre DHT senzor1
    int b=35; // zadavanie pinu pre DHT senzor2
    int c=48; // zadanie pinu pre bzuciak
    //int d=2; // zadavanie pinu pre poziarny senzor

    const int plyn_dOut = 3; // zadavanie dig.pinu pre plynovy senzor
    const int plyn_aOut = A1; // zadavanie analog.pinu pre plynovy senzor
    const int zaplavovy= A0; //zadavanie pinu pre zaplavovy senzor

    //definicia typu senzora
    #define typDHT22_1 DHT22
    #define typDHT22_2 DHT22

    // pomocne premenne
    float hladina_vody;
    float cm = (hladina_vody*4.0)/600.0;
    float horlave_plyny = 0;

    DHT senzor1(DHT1,typDHT22_1);
    DHT senzor2(DHT2,typDHT22_2);

    byte mac[] = {0x90, 0xA2, 0xDA, 0x00, 0x9C, 0xB7}; //zadana MAC adresa pre Ethernet shield
    IPAddress ip(192,168,88,10); //manuálne pridelena IP adresa Ethernet Shlieldu z rozsahu AP
    char server[] = „ard.bjnet.sk“; //URL adresa serveru

    EthernetClient client; // inicializacia clienta

    // inicializace SIM900 modulu z knihovny
    GPRS sim900(pinTX, pinRX, rychlostSim);

    void setup() {
    pinMode(a,INPUT); // inicializacia DHT senzor1 pinu ako vstup
    pinMode(b,INPUT); // inicializacia DHT senzor2 pinu ako vstup
    pinMode(c,OUTPUT);
    pinMode(zaplavovy, INPUT); // inicializaciapinu zaplavoveho senzora ako vstup
    pinMode(plyn_dOut, INPUT); // inicializacia dig.vstupu senzora plynu ako vstupu
    pinMode(plyn_aOut, INPUT); // inicializacia analog.vstupu senzora plynu ako vstupu
    //pinMode(d, INPUT); // inicializacia pinu ako vstupu

    Serial.begin(9600); // komunikacia cez seriovu linku rychlostou 9600 baud
    Serial.println(„Startujem program“);

    Serial.println(„Zahajujem komunikaciu so senzorom DHT 1“);
    senzor1.begin(); // zahajenie komunikacie zo senzorom DHT
    Serial.println(„Zahajujem komunikaciu so senzorom DHT 2“);
    senzor2.begin(); // zahajenie komunikacie zo senzorom DHT
    //attachInterrupt(digitalPinToInterrupt(poziarny_senzor), prerus, FALLING); // nastavenie prerusenia na dig.pine pri klesajucej hrane (log1->log0) sa vykona funkcia prerus

    Serial.println(„Inicializujem sietovu kartu“);
    // podmienka pre overenie MAC a IP adresy Ethernet Shlieldu
    if (Ethernet.begin(mac) == 0) {
    Serial.println(„MAC adresa inicializovana“);
    for (;;)
    ;
    // Ethernet.begin(mac, ip);
    Serial.println(„IP adresa nastavena“);
    mojaIPadresa();
    } else {
    Serial.println(„Nepodarilo sa inicializovat sietovu kartu“);
    }
    mojaIPadresa();

    // kontrola napájení modulu SIM900,
    // v případě vypnutého modulu ho zapneme

    if(!sim900.checkPowerUp()) {
    Serial.println(„Zapinam SIM900 modul“);
    sim900.powerUpDown(pinPower);
    } else {
    Serial.println(„SIM900 modul je zapnuty“);
    }
    // vyčkávací smyčka, dokud není správně nainicializován
    // SIM modul
    while(!sim900.init()) {
    Serial.println(„Chyba inicializace!“);
    delay(1000);
    }
    Serial.println(„Inicializace uspesna!“);

    delay(1000); // pauza
    }

    void loop() {
    Serial.println(„Zacinam loop“);
    mojaIPadresa();
    float horlave_plyny = analogRead(plyn_aOut); //nacitanie hodnoty do premennej
    float hladina_vody = analogRead(A0); //nacitanie hodnoty do premennej
    float cm = (hladina_vody*4.0)/600.0; // konverzia analog.hodnoty na centimetre
    float teplota1 = senzor1.readTemperature(); // nacitanie hodnoty do premennej
    float teplota2 = senzor2.readTemperature(); // nacitanie hodnoty do premennej
    float vlhkost1 = senzor1.readHumidity(); // nacitanie hodnoty do premennej
    float vlhkost2 = senzor2.readHumidity(); // nacitanie hodnoty do premennej
    float mapovanie = map(horlave_plyny, 0, 1023, 0, 100); // konverzia analog.hodnoty na percenta

    // podmienka overenia zapojenia senzorov
    if (isnan(teplota1) || isnan(vlhkost1) || isnan(teplota2) || isnan(vlhkost2)|| isnan(cm)|| isnan(horlave_plyny)) {
    Serial.println(„Chyba pri nacitani zo senzorov !“); // vypis ak je nejaky senzor nezapojeni
    } else {
    // ak su vsetky senzory spravne zapojene vypise tento vypis
    Serial.println(„senzor 1:“);
    Serial.print(„Teplota: „);
    Serial.print(teplota1);
    Serial.println(“ stupnu Celsia „);
    Serial.print(„vlhkost: „);
    Serial.print(vlhkost1);
    Serial.println(“ %“);
    Serial.println(„“);
    Serial.println(„senzor 2:“);
    Serial.print(„Teplota: „);
    Serial.print(teplota2);
    Serial.println(“ stupnu Celsia „);
    Serial.print(„vlhkost: „);
    Serial.print(vlhkost2);
    Serial.println(“ %“);
    Serial.println(„“);
    Serial.print(„zaplavovy senzor: „);
    Serial.print(cm);
    Serial.println(„cm“);

    // podmienka overenia analog.hodnoty senzora plynu
    if ( horlave_plyny > 319) {
    // vypis pri splneni podmienky
    Serial.println(„nebezpecna hladina plynu“);
    Serial.print(„Analogova hodnota: „);
    Serial.println(horlave_plyny);
    Serial.print(mapovanie);
    Serial.println(„%“);
    } else {
    // vypis ak sa predosla podmienka if nesplni
    Serial.print(„Analogova hodnota: „);
    Serial.println(horlave_plyny);
    Serial.print(mapovanie);
    Serial.println(„%“);
    }

    Serial.println(„“); // vytvori priazny riadok
    Serial.println(„————————-„); // vypise oddelovaciu ciaru

    // podmienka varovnej signalizacie bzuciaka
    if (teplota1>60 || teplota2>60 || cm > 1 || horlave_plyny > 319 || vlhkost1 >90 || vlhkost2 >90) {
    for (int i=3; i <5; i++) {
    zahraj(100*i, 50); // definicia premennej zahraj
    }
    }

    Serial.print(„Pokusam sa pripojit – „); //

    // podmienka overenia pripojenia k serveru

    if(client.connect(server, 80) ) {
    Serial.println(„OK“); // vypis ze server je dosptupny
    Serial.println(); // vypise prazdny riadok
    client.print(„GET http://ard.bjnet.sk/zapis_udaje.php?teplota1=“+String(teplota1)+“&vlhkost1=“+String(vlhkost1)+“&teplota2=“+String(teplota2)+“&vlhkost2=“+String(vlhkost2)+“&cm=“+String(cm)+“&horlave_plyny=“+String(horlave_plyny));
    client.println(„Host: ard.bjnet.sk“); // hostavacia domena
    client.println(„Connection: close“); // vypise ukoncenie spojenia zo serverom
    client.println(); // prazdny riadok
    client.stop(); // ukoncenie spojenia
    } else {
    // ak predosla podmienka if nebola splnena
    Serial.println(„NOT OK“); // vypis ze sa nepodarilo pripojit k serveru
    Serial.println();
    }

    }
    Serial.println(„Nasleduje 2 sekundova pauza“);
    delay(2000); // pauza pro přehlednější výpis
    }

    // definicia funkcie zahraj pre vzuciak
    void zahraj(int frekvence, int doba) {
    tone(c, frekvence, doba); // definicia premennej tone
    delay(doba); // pauza
    digitalWrite(bzuciak, HIGH); // digitalny zapis
    }

    /*void prerus(){// funkcia ktora sa vykona pri detekcii zmeny z log 1 na log 0
    Serial.println(„Detekovaní ohen!“); // vypis detekcie ohna
    delay(500); // pauza 500 ms
    }*/

    void mojaIPadresa() {
    Serial.print(„Moja IP addresa: „);
    for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // print the value of each byte of the IP address:
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print(„.“);
    }
    Serial.println();
    }

    void posliSMS() {
    String odpoved = „Pozor – DETEKOVANY POZIAR“;
    // prevod textu na premennu kompatibilnu so SIM modulom
    odpoved.toCharArray(smsZprava, 160);
    // zaslanie SMS spravy na predvolene cislo
    sim900.sendSMS(telCislo, smsZprava);
    }

    #11739
    marh
    Účastník

    napíš aký typ gsm shiledu SIM800 SIM900 …
    a typ arduina

    na shielde SIM900 sa modul zapína pomocou tlačidla alebo arduina na PINE D7 alebo D9,,podľa verzie shieldu,,,
    buď je prerušená plôška na DPS alebo nie,,,podľa výrobcu shieldu

    hard/soft –použi prepínač=jumper
    o D0: Hardware serial RX of Arduino
    o D1: Hardware serial TX of Arduino
    o D2: Software serial RX of Arduino
    o D3: Software serial TX of Arduino
    o D7: Used as Software Power ON/OFF button for SIM900

    https://www.itead.cc/wiki/SIM900/SIM900A_GSM/GPRS_Minimum_System_Module
    pdf na nete:
    EFcom_v1.2.pdf
    GSM Shield pro Arduino se SIM900.pdf
    SIM800_ATCommand_.pdf
    sim800_series_at_command_manual_v1.01.pdf
    sim800_series_ema.pdf
    sim800_series_fm_application_note_v1.00.pdf
    sim800_series_ip_.pdf
    sim800_series_mms.pdf
    SIM800+Series_AT+Command+Manual_V1.09.pdf
    SIM800+Series_Serial+Port_Application+Note_V1.01.pdf
    sim800h_hardware_design_v1.00.pdf
    SIM900 Quad‐Band GPRS shield with Micro SD card slot.pdf
    SIM900_AT Command Manual_V1.03.pdf

Aktuálně jsou na stránce zobrazeny 2 příspěvky - 1. až 2. (celkem z 2)
  • Pro reakci na toto téma se musíte přihlásit.