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 7 roky a 6 měsíci.
-
AutorPříspěvky
-
30.5.2017 v 11:24 #11601maros.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 senzorconst 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 serveruEthernetClient 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 vstupuSerial.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 prerusSerial.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 zapnemeif(!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);
}11.6.2017 v 22:30 #11739marhÚčastníknapíš aký typ gsm shiledu SIM800 SIM900 …
a typ arduinana 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 shielduhard/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 SIM900https://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 -
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.