PIR + SIM800L volání
Úvodní stránka › Fórum › Vaše projekty › Arduino › PIR + SIM800L volání
- Toto téma obsahuje celkem 3 odpovědi. Do diskuze (2 diskutující) se naposledy zapojil uživatel Soci a poslední změna proběhla před 8 roky a 10 měsíci.
-
AutorPříspěvky
-
26.1.2016 v 15:29 #5853SociÚčastník
Dobrý den, snažím se o to aby mi GSM volalo na mobil po tom co PIR zachytí pohyb.
Ukázka: https://www.youtube.com/watch?v=lr42TVAacKQMám:
-GSM GPRS modul http://arduino-shop.cz/arduino-site-wifi-bt-rj45/1105-gsm-gprs-modul-pro-arduino.html
– PIR pohybové čidlo
– Arduino Mega2560Autor videa zveřejnil sketch i zapojení na facebooku: https://www.facebook.com/permalink.php?story_fbid=1619863934960692&id=1442967352650352
Tady je moje současné zapojení Arduina Mega2560:
Mega2560 GSM
5V VCC /tady jsem zmírnil proud pomocí jedné Led diody
PWM 10 RX
PWM 11 TX
GND GNDMega2560 PIR
5V VCC
A0 OUT
GND GNDKód:
#include „SIM900.h“
#include <SoftwareSerial.h>
//We don’t need the http functions. So we can disable the next line.
//#include „inetGSM.h“
#include „sms.h“
#include „call.h“
//To change pins for Software Serial, use the two lines in GSM.cpp.
//GSM Shield for Arduino
//www.open-electronics.org
//this code is based on the example of Arduino Labs.
//Simple sketch to check if an incoming call is from an authorized
//number and in this case, send to this number an SMS with the value
//of a digital input.
//We have to create the classes for SMSs and calls.
CallGSM call;
SMSGSM sms;
char number[20];
byte stat=0;
int value=0;
int pin=9;
char value_str[5];
int sensorVal;
char testnumber[]=“0961915030″;
void setup()
{
pinMode(pin,INPUT);
//Serial connection.
Serial.begin(9600);
Serial.println(„GSM Shield testing.“);
//Start configuration of shield with baudrate.
//For http uses is raccomanded to use 4800 or slower.
if (gsm.begin(2400))
Serial.println(„\nstatus=READY“);
else Serial.println(„\nstatus=IDLE“);
};
void loop()
{
do
{
sensorVal = analogRead(1);
}while(sensorVal==0);
call.Call(testnumber);
//Chekcs status of call
//stat=call.CallStatusWithAuth(number,1,3);
//If the incoming call is from an authorized number
//saved on SIM in the positions range from 1 to 3.
/* if(stat==CALL_INCOM_VOICE_AUTH) {
//Hang up the call.
call.HangUp();
delay(2000);
//Check the value of the input.
value=digitalRead(1);
//Convert the int to a string.
itoa(value,value_str,10);
//Send an SMS to the previous number with
//the value read previously.
sms.SendSMS(number,value_str);
}*/
delay(15000);
call.HangUp();
delay(5000);
};Jediná část kterou jsem změnil byla char testnumber[]=“0604103598″; kde jsem vložil své číslo za nulu char testnumber[]=“0xxxxxxxxx“;.
Reakce Arduina:
Po spuštění se mi na sériový monitor vypíše postupně toto:
GSM Shield testing.
DB:NO RESP
DB:NO RESP
DB:NO RESP
Trying to force the baud-rate to 96001200
2400
4800
9600
19200
38400
57600
115200
ERROR: SIM900 doesn’t answer. Check power and serial pins in GSM.cppstatus=IDLE
Co se ještě týče GSM po zapojení přes Led diodu nebliká ledka na GSM, po přímém připojení na 5V občas 2x rychle po sobě blikne, netuším co to znamená, prosím o pomoc.
26.1.2016 v 15:57 #5854SociÚčastníkPo vložení se mi vymazali mezery, tak ještě pro přehlednost:
Mega2560 → GSM
5V → VCC /tady jsem zmírnil proud pomocí jedné Led diody
PWM 10 → RX
PWM 11 → TX
GND → GNDMega2560 → PIR
5V → VCC
A0 → OUT
GND → GND27.1.2016 v 16:14 #5869AlešÚčastníkNajdi knihovnu GSM.cpp
V ní najdi řádky:
#define _GSM_TXPIN_ 2
#define _GSM_RXPIN_ 3
změň je na:
#define _GSM_TXPIN_ 11
#define _GSM_RXPIN_ 10Ještě upřesním: signál RX na modulu GSM bude zapojen na pin11, signál TX na pin10. Sériový port se zapojuje RX na TX a TX na RX.
Když to bude chodit, tak bych to celé upravil a předělal na HW sériový port RX1 a TX1.
Místo LED bych tam dal 2 diody. Není to kvůli proudu, ale kvůli snížení napětí. Přes LED neprojde potřebný proud!
28.1.2016 v 17:56 #5870SociÚčastníkPo úpravě byla reakce stále stejná, tak jsem začal zkoušet přehazovat drátky a místo ledky jsem použil nějaký rezistor co jsem tu měl a konečně se pak objevila nějaká odezva:
GSM Shield testing.
ATT: OK
RIC:
ATT: OK
RIC:
ATT: OK
RIC:
ATT: OK
RIC:
ATT: OK
RIC:Pak jsem zkoušel v čem byl problém. Nefungovalo to když jsem místo rezistoru vrátil ledku, ani když jsem přehodil zpátky RX na TX a TX na RX jak by to mělo být (v současnosti mám tedy TX → TX) a dokonce ani při vrácení #define _GSM_TXPIN_ 2 #define _GSM_RXPIN_ 3. Všechny tyto věci se tedy musely změnit aby nastala tato reakce. Stále to nevolá, ale rozhodně jsem o něco dál. Děkuji.
-
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.