gsm shield

Arduino shields
Berichten: 7
Geregistreerd: 07 Mrt 2014, 08:32

gsm shield

Berichtdoor joachimbmw » 07 Mrt 2014, 10:06

ik ben een arduino beginner en ik heb wat problemen met de code van mijn gsm shield.

Dit is de bedoeling:
Ik zend een bericht 'Light on' of 'Light of' met mijn gsm naar de arduino.
De arduino zou dan mijn nummer moeten controleren eerst.. indien deze niet klopt wordt het bericht verwijderd...
Dan gaat hij de inhoud van het bericht controlen...
De inhoud kan zijn 'Light on' of 'Light of'
Afhankelijk hier van wil ik de led die op pin 13 zit in of uit schakelen...

Alleen heb ik problemen met de digitalwrite die niet wordt uitgevoerd, terwijl ik kan zien op mijn serial monitor dat de voorwaarde wel voldaan wordt...
want die komt wel vertellen 'Light on' wat alleen kan gebeuren indien er in karakter p light on stond...

dit is het stukje code waar ik problemen met heb:

p=strstr(message,"Light on");
if(p){
Serial.println("Light on");
digitalWrite(13,HIGH);
}

de volgende zaken die hier aan vooraf gegaan zijn, zijn misschien ook wel interessant om te vermelden:
-enkele libraries (zal ik als reactie hier onder posten om het duidelijk te houden)
-char *p;
-
number[0]='\0';
message[0]='\0';
sms.GetSMS((int)pos,number,message,180);
n=strstr(number,"0473363911");


Dus de digitalwrite wordt niet uitgevoerd , ik had ook al eens de lijn van serialprint weg gedaan,om zo 1uitkomst op de voorwaarde over te houden ,maar dat werkte ook niet...

Terwijl het stukje code dat mijn nummer controleerd wel werkt en op dezelfde manier is opgebouwd (maar ja deze moet natuurlijk geen digitalwrite doen)

code voor nummer te controleren:

char *n;
...

number[0]='\0';
message[0]='\0';
sms.GetSMS((int)pos,number,message,180);
n=strstr(number,"0473363911");


if(n){
Serial.println("number right");



En ik had ook nog een ander programmma (heb ik zelf niet gemaakt is door een vriend gemaakt ) maar dat programma kan alleen de led hoog maken en het is echt voor mij complex en niet duidelijk geprogrammeerd (nogal een wanorde), hij heeft er ook wat mee moeten (foefelen) want dat programma werkt 100% maar is toch niet echt zuiver als je het mij vraagt.
En het kan ook geen nummer of iets dergelijke controleren...

Ik heb hem dan ook eens naar dat programma hier laten kijken en hij snapte het ook niet waarom de led niet brandde...
Maar aan de hand daarvan weet ik wel dat het shield perfect werkt en het aan de code moet liggen...

Ik hoop echt dat iemand mij kan helpen , want ik sukkel er al een tijdje op

alvast bedankt

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: gsm shield

Berichtdoor nicoverduin » 07 Mrt 2014, 12:26

Paar vragen:
a) welke pinnen gebruikt de GSM shield? Want als die ook pin 13 gebruikt, dan zou het kunnen dat die tegenwerkt
b) heb je in de setup():
pinMode(13, OUTPUT);
staan?

Verder, als jij wel de "Lights on" text krijg op de serial dan is digitalWrite niet jouw probleem maar zit het elders.
Welke GSM shield gebruik je?

Tenslotte, hoewel de oplossing werkt, zou ik wat secuurder omgaan met de pointer p.
Zelf zou ik testen of (p != NULL). Nu gaat het toevallig goed.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 07 Mrt 2014, 08:32

Re: gsm shield

Berichtdoor joachimbmw » 07 Mrt 2014, 13:15

nicoverduin schreef:Paar vragen:
a) welke pinnen gebruikt de GSM shield? Want als die ook pin 13 gebruikt, dan zou het kunnen dat die tegenwerkt
b) heb je in de setup():
pinMode(13, OUTPUT);
staan?

Verder, als jij wel de "Lights on" text krijg op de serial dan is digitalWrite niet jouw probleem maar zit het elders.
Welke GSM shield gebruik je?

Tenslotte, hoewel de oplossing werkt, zou ik wat secuurder omgaan met de pointer p.
Zelf zou ik testen of (p != NULL). Nu gaat het toevallig goed.


Bedankt voor je reactie nico!
ik was al aan het vrezen dat niemand zou helpen zoals op het forum van arduino(egels) het geval was.


http://www.ebay.co.uk/itm/GSM-GPRS-Shie ... 35c35f0b8a
Ik gebruik dit shield...
en die klik ik vanboven op een arduino..
die de pinnen gewoon doorverbind

en voor de antwoorden op je vraen:
a) ik heb geen idee, daar zou ik eens voor moeten kijken hoe ik dit kan terug vinden...
(maar ik denk dat het hier niet aan kan liggen omdat een ander programma wel werkt , maar vandat programma snap ik zelf niet zoveel van is aan de hand van smsbuffer opgebouwd ..)

b)nee dat heb ik niet gedaan , maar dat zal ik nu aanpassen en als ik vanavond thuis ben direct proberen.

en wat je juist bedoeld met de pointer begrijp ik niet goed(ligt niet aan jou , maar ik ben nog nietzolang met arduino bezig)
nu laat ik gewoon 0 verschijnen zolang de "message" in mijn bericht niet ingevuld
(ik zal ondertussen eens onderzoeken wat de functie hiervan is want ik begrijp alleen dat ik de p gebruik om te kijken wat er in die message zit en als die voldaan is zal de cyclus van "if(p){" beginnen... (denk ik ?)


want met
(p != NULL) zet je toch terug 0 in de pointer of ben ik verkeerd?

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: gsm shield

Berichtdoor nicoverduin » 07 Mrt 2014, 13:26

b) is waarschijnlijk de oplossing.

Over die pointer:
Een pointer is niets meer dan een aanwijzer naar een geheugenlocatie. Je gaat dus klakkeloos door het RAM geheugen indirect waardes ophalen en aanpassen. Het is een zeer krachtig instrument maar ook riskant. Omdat je in feite variabelen kan verknallen. de test if(p) kijk je of deze niet 0 is ipv. NULL. Hier gaat het goed. Bij andere compilers kan het fout gaan

De test die ik aangaf is if p NOT = NULL
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 07 Mrt 2014, 08:32

Re: gsm shield

Berichtdoor joachimbmw » 07 Mrt 2014, 14:20

nicoverduin schreef:b) is waarschijnlijk de oplossing.

Over die pointer:
Een pointer is niets meer dan een aanwijzer naar een geheugenlocatie. Je gaat dus klakkeloos door het RAM geheugen indirect waardes ophalen en aanpassen. Het is een zeer krachtig instrument maar ook riskant. Omdat je in feite variabelen kan verknallen. de test if(p) kijk je of deze niet 0 is ipv. NULL. Hier gaat het goed. Bij andere compilers kan het fout gaan

De test die ik aangaf is if p NOT = NULL



INDERDAAD!(over die vraag b)
ik heb net een kijkje genomen in het programma dat wel werkt, en daar staat deze in!

Ik probeer het vanavond direct uit...
Ik zal dan ook iets laten weten

erg bedankt nico!

ik heb mij wel gebaseerd op het volgende voorbeeld (aangezien ik ook SIM900 heb in mijn gsm shield , net zoals ze bij deze shields hebben...)
Ik heb ook dezelfde bibliotheek geimporteed (en die werkt perfect)

http://www.open-electronics.org/how-to- ... ps-shield/ (example2)

Maar ik zie dat deze persoon ook een digitalwrite op pin 13 heeft.. alhoewel hij ook niet PINMODE(13,output) heeft gedefinieerd in de setup loop...

Maar ik ben er wel van overtuigd dat je gelijk gaat hebben aangezien mijn programma wel werkte maar de digitalwrite niet ..

Berichten: 7
Geregistreerd: 07 Mrt 2014, 08:32

Re: gsm shield

Berichtdoor joachimbmw » 07 Mrt 2014, 15:35

ik denk dat ik het snap door jouw uitleg

dus als ik het goed snap gebeurt het volgende:
string message wordt vergeleken met string2 "Light on" en kijkt of deze overeen komen...

en (p zal dus dan naar deze locatie in het geheugen verwijzen? , waardoor de waarde van p niet meer 0 is ?)
klopt dat?

Dus zou mijn stukje code er als volgend moeten uitzien?:

p=strstr(message,"Light on");

if(p!= NULL){
Serial.println("Light on");
digitalWrite(13,HIGH);
}



bedankt voor de uitleg alvast, het is wel nuttig dat ik het begrijp omdat ik er nog allerlei functies wil bijzetten... alleen vrees ik voor het geheugen van de arduino uno door de libraries...

want de p waarde gebruik ik terug opnieuw nadat het licht aan is om het licht uit te sturen , als volgt:(of het werkt weet ik niet dat moet ik nog testen)

p=strstr(message,"Light on");
if(p){
Serial.println("Light on");
digitalWrite(13,HIGH);
}

p=strstr(message,"Light off");

if(p){
Serial.println("Light off");
digitalWrite(13,LOW);
}



trouwens de uiteindelijke bedoeling van dit alles is : dat ik het uiteindelijk in de chalet van mijn schoonouders installeer in de ardennen(belgie).
Aangezien daar geen internet is dit wel de oplossing (gsm shield) denk ik.
Het is vooral nodig om de verwarming daar aan te sturen in de winter omdat het 1u30 rijden is , en eer het dan warm is..( ik ben ook inmiddels aan een analoge JUMO temperatuursensor geraakt door mijn stagebedrijf,daar moet ik eerst nog wat met experimenteren)
Dus ik hoop dat arduino samen met het shield ook wat bedrijfszeker is ... zeker tegen kortsluiting en dergelijk.. (zeker omdat er dan niemand aanwezig is indien er iets verkeerd loopt)
Want het is zowat mijn 1ste kleine projectje dat ik er met doe... (dus ik weet niet of ik op specifieke zaken moet letten(vb bij korte onderbreking van stroom of iets degelijks)

maar nadat ik dit programma een week heb getest , zou het misschien wel de bedoeling zijn om de verlichting hier ook op aan te sluiten.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: gsm shield

Berichtdoor nicoverduin » 07 Mrt 2014, 19:11

strstr() is een functie die string2 zoekt in string1 en geeft een pointer terug (of NULL) die wijst naar het begin van die string.

Vwb. jouw oplossing. Ik heb ooit gewerkt vie aan vergelijkbare oplossing voor een huisje in Zweden. Zelfde verhaal..... Ijskoud... Eerst uur in de auto vanaf vliegveld.... en dan nog ff wachten tot het warm is. De oplossing zou in dit geval gaan via Satelliet internet.
Uiteindelijk hebben we ervoor gekozen om het niet te doen. Reden(en):
- Apparaten op afstand aanzetten is een eitje... ook met appje erbij. Gewoon een servertje ergens bij een goedkope provider die de communicatie regelt. App raat met server, Arduino praat met server en je hebt een hele flexibele communicatie vorm.
- Kachels zijn gevaarlijke dingen in die zin "wat doe je als er brand uitbreekt?". Je kan sensoren toevoegen en die info ook terugkrijgen.. Leuk vooruitzicht als je onderweg bent en je krijgt op je App te zien dat je huisje in de fik staat.... In Zweden is alles hout... dat fikt wel.

Dus toch maar ff een uurtje wachten tot het warm is.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 07 Mrt 2014, 08:32

Re: gsm shield

Berichtdoor joachimbmw » 07 Mrt 2014, 19:30

dat is waar...
en die chalet is eigenlijk het zelfde verhaal...
is het dan zo risico vol?

want ik weet dat je dit pakket ook zo kan kopen , endat gebruiken er een paar in de ardennen .
Maar dan moet je er niet veel van kennen het enige dat je moet kunnen is de parameters ingeven in een voorgeprogrammeerde omgeving die erbij zit.
en voor de rest werkt het met een bimetaal ofzo iets.


Maar bij jou project in zweden ; stuurde je dan een elektrische verwarming aan?

of een verwarming met aardgas of ....

Berichten: 7
Geregistreerd: 07 Mrt 2014, 08:32

Re: gsm shield

Berichtdoor joachimbmw » 07 Mrt 2014, 19:31

Trouwens net getest en het werkt !

echt al bedankt voor alle hulp!

ik dacht dat ik er nooit zou uitgeraken ....

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: gsm shield

Berichtdoor nicoverduin » 07 Mrt 2014, 21:52

joachimbmw schreef:dat is waar...
en die chalet is eigenlijk het zelfde verhaal...
is het dan zo risico vol?

want ik weet dat je dit pakket ook zo kan kopen , endat gebruiken er een paar in de ardennen .
Maar dan moet je er niet veel van kennen het enige dat je moet kunnen is de parameters ingeven in een voorgeprogrammeerde omgeving die erbij zit.
en voor de rest werkt het met een bimetaal ofzo iets.


Maar bij jou project in zweden ; stuurde je dan een elektrische verwarming aan?

of een verwarming met aardgas of ....

Elektrische kachel. De opdracht was voor mijn zuster. Maar wij zijn sowieso van het slag dat we geen elektrische apparaten aan hebben bij afwezigheid tenzij het niet anders kan. Zij heeft er 4 kachels staan en het kan stuk. En dan kan je wel heel gemakkelijk redeneren dat ze veilig zijn. Het is nog maar de vraag of dat verzekeringstechnisch ook allemaal wel gedekt is. Ik denk dat er sowieso nog wel eea in de verzekeringsvoorwaarden geregeld moet worden op de komst van domotica etc. Moet de apparatuur gekeurd zijn bijvoorbeeld. Mensen willen nog wel eens gevaarlijke oplossingen bedenken. Gewoon omdat het kan.... maar verder niet nadenken over veiligheid en dubbele beveiligingen etc.

En ik weet hoe moeilijk verzekeringen kunnen zijn als het om iets nieuws gaat wat niet expliciet in de voorwaarden is gedekt. Eerst "Nee" en dan maar eens zien wanneer het een "Ja" wordt.
En daar jij iets zelf bouwt heb je nog geen CE keuring wat in feite wel verplicht is voor spanningen onder de 1KV en boven de 50V. Anders kun je aansprakelijk gesteld worden. Je schakelt wel netspanning en dan kan je het nog zo veilig gebouwd hebben. Verzekeringen zijn er voor als het onverwacht fout gaat. Maar als ze er onderuit kunnen komen zullen ze dat niet nalaten. Die pakketten zullen ongetwijfeld de juiste veiligheids keuringen hebben. als je er een paar (duizend/miljoen) maakt is die 5000-10000 euro CE keuringskosten te verwaarlozen.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Volgende

Terug naar Shields

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 6 gasten