Arduino

Gebruikersavatar
De Rooie Reus
Berichten: 906
Lid geworden op: 04 dec 2004, 14:22

Arduino

Bericht door De Rooie Reus »

Met vlagen ben ik actief met arduino. Zo heb ik een startonderbreker met afstandsbediening met ir (dus zonder massasleutel o.i.d.) en ben nu een gps aan het bouwen.
De delen die blootgesteld worden aan de elementen giet ik in polyesterhars.

Misschien pas ik de verhoudingen tussen hars en harder niet goed toe maar bij mij wordt het mengsel, terwijl het aan het uitharden is, bloedje heet.
De print daarbinnen in lijkt me ook op te warmen zodat ik me eerst zorgen maakte dat de volledige print compleet met onderdelen zou verbranden. Bij grote hoeveelheden hars probeer ik het dan ook te koelen.
Maar tot op heden doen alle componenten nog waarvoor ze samengebracht zijn.
Logisch?

Groet van,
Martin
Laatst gewijzigd door De Rooie Reus op 29 mei 2014, 01:02, 3 keer totaal gewijzigd.
In de toekomst zullen we nog vaak aan vroeger denken.
Yoni
Berichten: 636
Lid geworden op: 19 nov 2010, 18:44

Re: Polyesterhars

Bericht door Yoni »

Niets raars is een chemische reactie waar warmte bij vrij komt, bij de een wat meer dan de andere compound.
Wirelock wat we gebruiken om verbindingen aan staalkabels te gieten word zo heet dat je er een blaar van kan krijgen en in de zon bijna gaat roken.

Geen zorgen dus :)
Gebruikersavatar
Hanomaad
Berichten: 823
Lid geworden op: 08 mei 2011, 11:07
Locatie: Amsterdam

Re: Polyesterhars

Bericht door Hanomaad »

Leuk dat je bezig bent met Arduino. Doe ik ook veel mee. Ik heb o.a. LED staffen gemaakt met deze technologie maar dan met de Teensy 3.0 (en nu 3.1). Die is veel kleiner, sneller (48MHz) en heeft 256kB flash geheugen. Kost ook maar $19.

https://www.pjrc.com/teensy/teensy31.html#specs

Waarom trouwens in de hars en niet in een doosje wat je naderhand nog open kunt maken als je er wat aan moet meten oid?

Ik wil zelf een touch screen in de bus maken met een Arduino/Teensy aangesloten, voor diverse functies zoals een grafiek maken van mijn stroomverbruik en laadstroom, watertanks monitoren en omgevingsvariabelen zoals temperatuur en vochtigheid. Eventueel een alarm met IR sensor. Een startonderbreker had ik nog niet aan gedacht. Goed idee.
Gebruikersavatar
De Rooie Reus
Berichten: 906
Lid geworden op: 04 dec 2004, 14:22

Re: Polyesterhars

Bericht door De Rooie Reus »

Ik giet de printplaat tot en met de contacten in de hars als ik er verder niets meer aan hoef te doen. Op ebay heb ik nu een paar waterdichte doosjes gekocht voor $ 2,95/stuk all-in. Die gebruik ik voor binnen.

Hetgeen ik meet (zoals watertanks) gebruik ik zelf het liefst een analoge meter (ik vind dat mooier) maar voor spanning & stroom gebruik ik dan weer de chinese accu monitor.
Nu ik er een beetje bedreven in raak zou ik de volgende keer bijvoorbeeld geen lichtknopjes meer gebruiken maar afstandbediening.
Zelfs elektronische ontsteking is mogelijk.

Op het moment ben ik met gps aan het rommelen en op de plank ligt al een schakelunit klaar waarmee ik via internet vanuit ergens op de wereld in kan loggen en het huis kan monitoren, de kippen eten geven en de tuin sproeien.
Ik vind het vooral leuke spielerei.
In de toekomst zullen we nog vaak aan vroeger denken.
Gebruikersavatar
Hanomaad
Berichten: 823
Lid geworden op: 08 mei 2011, 11:07
Locatie: Amsterdam

Re: Polyesterhars

Bericht door Hanomaad »

Ik heb net een GPS+GSM shield besteld voor Arduino en ik heb met een PIR (beweging) sensor een prototype voor een alarmsysteem. De GSM module ga ik gebruiken om mezelf een SMS te sturen als er beweging in de bus gedetecteerd wordt, en ik wil ook een startonderbreker oid er aan koppelen, en een sirene. Ik heb er ook een afstandbediening bij gemaakt mbv een Teensy en een 433MHz zender en ontvanger van een paar euro.

Hoe heb jij je startonderbreker precies gemaakt? PB mag ook natuurlijk, als je dat liever niet hier bespreekt.

Wat ik ook nog wil doen is een kraantje met een relais in de diesel leiding. Iemand zei tegen me dat dat niet aan te bevelen is omdat je dan je pomp stuk kunt maken.
Gebruikersavatar
De Rooie Reus
Berichten: 906
Lid geworden op: 04 dec 2004, 14:22

Re: Polyesterhars

Bericht door De Rooie Reus »

Wat je beschrijft heb ik ook aan zitten denken, misschien voor de komende winter.

Ik hou het simpel want dit is een openbaar forum. Het verschil tussen onze bussen is in ieder geval dat de onze op benzine loopt en die van jou op diesel.
Op www kun je nogal wat sketches vinden waardoor de arduino op ir gaat reageren. Ik heb een kleine afstandsbediening genomen en gekeken welke code die uitzend en die code heb ik in de sketch gezet. Als ik de contactsleutel erin steek licht een led korte tijd op, een teken dat de arduino geactiveerd is. De led gaat daarna weer uit. Dan is de bedoeling dat je met de afstandsbediening een ir-oog activeert waardoor een relais aantrekt. Dat oog kan overal zitten. Daarna kan ik starten. Omdat er meer poorten aan het boardje zitten kun je ook meer functies laten activeren.
De motorklep is niet te openen en de binnenkap kun je ook vergrendelen.
We moeten wel altijd een reserve knopcel bij ons hebben maar in nood kan ik het weer relatief simpel ongedaan maken.

Het idee is dat we diefstal niet onmogelijk kunnen maken maar wel moeilijker.

Succes,
Martin
In de toekomst zullen we nog vaak aan vroeger denken.
Grumble
Berichten: 154
Lid geworden op: 30 jan 2012, 21:35

Re: Polyesterhars

Bericht door Grumble »

Haa... Arduino...leuk!
Ik bestel de look-alikes in china, voor een fractie van de prijzen van de "echte" arduino's.
Laatst heb ik spullen besteld om een MPPT lader te maken.
Een Arduino NANO (ATmega328P).
Een spanning/stroom metertje om het laadproces visueel te volgen en een display-tje dat "vroegah" in de Nokia5110 gebruikt werd, en nu voor een paar euro te koop en ook heel eenvoudig aan te sturen met een arduino.
Een buck/boost converter die van 10-50 volt aan de ingang een met een potmeter instelbare uitgangsspanning maakt. Dit potmetertje wil ik dan door een digitaal aanstuurbaar type vervangen, zodat ik met de arduino de spanning over de accu kan instellen en zo de ideale laadstroom in te stellen.
Overigens gebruik ik (meestal) niet de IDE van Arduino maar Atmel Studio mat een AVRISP om te programmeren.
Gebruikersavatar
De Rooie Reus
Berichten: 906
Lid geworden op: 04 dec 2004, 14:22

Re: Polyesterhars

Bericht door De Rooie Reus »

Het kost inderdaad allemaal geen drol (ik hoop dat het laatste woord aan de forumregels voldoet.
Het lukte me niet om Atmel Studio op de Windows 8.1 aan de praat te krijgen.
Daarom gebruik ik maar MariaMole, niet zo uitgebreid maar ook handig.

Ik zal de titel van deze draad maar aanpassen als we het over microprocessor gaan hebben.

Groet van,
Martin
In de toekomst zullen we nog vaak aan vroeger denken.
Gebruikersavatar
Anton
Berichten: 2756
Lid geworden op: 17 okt 2005, 12:27
Locatie: Hengelo ov

Re: Arduino e.a. en Polyesterhars

Bericht door Anton »

Hoi,

Voor het ingieten van bv elektronica bestaat er giethars, is u dat bekend?
Er word hier schijnbaar over gewone hars gesproken.

Groet Anton
Kwestie van gas geven......


Afbeelding
Grumble
Berichten: 154
Lid geworden op: 30 jan 2012, 21:35

Re: Arduino e.a. en Polyesterhars

Bericht door Grumble »

Nee, hier gaat het over twee componenten hars (vandaar ook de vraag over warmte ontwikkeling.)
Gebruikersavatar
Anton
Berichten: 2756
Lid geworden op: 17 okt 2005, 12:27
Locatie: Hengelo ov

Re: Arduino e.a. en Polyesterhars

Bericht door Anton »

Hoi,

Ook giethars bestaat uit 2 componenten,ff googelen en je vind diverse aanbieders.

Groet Anton
Kwestie van gas geven......


Afbeelding
Gebruikersavatar
De Rooie Reus
Berichten: 906
Lid geworden op: 04 dec 2004, 14:22

Re: Arduino e.a. en Polyesterhars

Bericht door De Rooie Reus »

Ik had nog een blik polyesterhars in de schuur staan en dat heb ik maar gebruikt. We hebben er het eten op gekookt en toen het uit gehard was ben ik verder gegaan met de uno. Het verbaasde me nogal dat alles nog werkte.
Ik zag dat de uithardingstijd van giethars nogal wat langer is. Misschien een volgende keer.
In de toekomst zullen we nog vaak aan vroeger denken.
Gebruikersavatar
De Rooie Reus
Berichten: 906
Lid geworden op: 04 dec 2004, 14:22

Re: Arduino

Bericht door De Rooie Reus »

Vanmiddag ga ik proberen de arduino een sms te laten versturen via een Nokia 3310. Een telefoon die niet kapot is te krijgen en waar ik aan de F-bus draden heb gesoldeerd voor rx, tx en gnd. De sketch zit al in de microcontroller.
Het lijkt me namelijk aardig dat als iemand onbevoegd de bus binnenstapt, een pir dat signaleert, en ik een sms-je krijg.
Ik maak het ding mobiel zodat ik het ook in huis kan gebruiken.

Ik moet er nog wel over nadenken hoe ik een Nokia aan een hoger voltage kan koppelen. De batterij heeft natuurlijk wel een + en een -/- maar het toestel meet ook het formaat en de temperatuur van de batterij voordat het in actie komt.

Nu eerst nog wat huishoudelijke taken.

Groet van,
Martin
In de toekomst zullen we nog vaak aan vroeger denken.
Grumble
Berichten: 154
Lid geworden op: 30 jan 2012, 21:35

Re: Arduino

Bericht door Grumble »

En? :OO:
Gebruikersavatar
De Rooie Reus
Berichten: 906
Lid geworden op: 04 dec 2004, 14:22

Re: Arduino

Bericht door De Rooie Reus »

Er is communicatie tussen de microcontroller en de nokia. De telefoon reageert op sommige verzoeken van de arduino maar het lukt me nog niet om 'm in de sms stand te krijgen. Nokia heeft een afwijkend protocol dat ik nog niet helemaal in de vingers heb.
Ik ben overigens al weer stappen verder. Softwarematig kun je straks de bus sms'en en dan geeft het ding de coördinaten terug.
Ik maak me geen illusie dat het diefstal oplost want jammen is ook mogelijk.
En daarnaast is dit een openbaar forum. :wave:

Maar het blijft leuke spielerij.

Groet van,
Martin
In de toekomst zullen we nog vaak aan vroeger denken.
Gebruikersavatar
Hanomaad
Berichten: 823
Lid geworden op: 08 mei 2011, 11:07
Locatie: Amsterdam

Re: Arduino

Bericht door Hanomaad »

Ik heb ipv een telefoon dit bordje gekocht:

http://www.robotshop.com/eu/en/gps-gprs ... hield.html

Zit GSM en GPS in, en je kunt het in z'n geheel op een Arduino Uno prikken.

Ik heb er al enigzins suc6 mee geboekt. Ik kan er mee SMS-en en ik kan de GPS coordinaten uitlezen. Een PIR sensor heb ik ook al, en een rudimentaire afstandsbediening via RF om het alarm aan/uit te zetten. Moet alleen alles nog degelijk aan elkaar verbinden en de code gaan kloppen.
Gebruikersavatar
De Rooie Reus
Berichten: 906
Lid geworden op: 04 dec 2004, 14:22

Re: Arduino

Bericht door De Rooie Reus »

Mooi boardje. Ik was er inmiddels ook achter dat een gsm module toch iets makkelijker is.
Omdat ik al een gps Skylab skm53 module had heb ik dit boardje besteld:
http://www.ebay.com/itm/DTMF-Enabled-SI ... 19e4b31d68

Ik kan er de sensoren zoals onder meer temperatuur en de gasdetector mee verbinden omdat de aansluitpinnen doorlopen.

Voorlopig komt er nog geen einde aan. :up:

Groet van,
Martin
In de toekomst zullen we nog vaak aan vroeger denken.
Gebruikersavatar
Hanomaad
Berichten: 823
Lid geworden op: 08 mei 2011, 11:07
Locatie: Amsterdam

Re: Arduino

Bericht door Hanomaad »

Zo te zien zit daar dezelfde chip in (SIM900) als mijn bordje. Ik kom er inmiddels achter dat GPS + GSM op 1 module ook niet zo handig. De module wil ik eigenlijk op een plek stoppen waar geen GPS bereik mogelijk is. Dan zou ik de antenne eigenlijk moeten verlengen, maar die zit met een heel miniscuul connectortje vast, beetje lastig dat draadje te verlengen.

Ik raad dus ook aan deze modules apart te hebben.

Wel heb ik nu het GSM gedeelte aan de pruttel genoeg voor een werkend "stil alarm". Het werkt via een PIR bewegingsdetector en ik krijg nu keurig een SMSje als er beweging gedetecteerd wordt in de bus. Veel efficienter dan alle schakelaars die de vorige eigenaar van mij bus op alle deuren had gezet, met draadjes uiteraard. De PIR sensor dekt alles, want kan de hele bus door "kijken".

Code wil ik wel delen, maar niet in het openbaar.
Gebruikersavatar
De Rooie Reus
Berichten: 906
Lid geworden op: 04 dec 2004, 14:22

Re: Arduino

Bericht door De Rooie Reus »

Het voordeel van een pir is dat infrarood niet buiten de bus kan komen. Een passant kan er dan ook niet voor zorgen dat er een stroom sms'jes op gang komt. Ik weet niet of je lid van dubbellucht bent want misschien zijn er wel leden met belangstelling voor je oplossing op zo'n weekend.

Ik wacht nog op mijn gsm-shield dat inmiddels de wereld aan het rondvliegen is.

Groet van,
Martin
In de toekomst zullen we nog vaak aan vroeger denken.
Gebruikersavatar
Hanomaad
Berichten: 823
Lid geworden op: 08 mei 2011, 11:07
Locatie: Amsterdam

Re: Arduino

Bericht door Hanomaad »

Op die weekenden kom ik eigenlijk nooit, maar misschien in de toekomst.

Wat betreft jouw GSM bordje, ik ben wel benieuwd of dat ook rond de 100mA trekt zonder het GPS gedeelte. Dat doet de mijne wel en ik vind het op zich niet zo heel veel, maar als ik het omlaag kan krijgen des te beter natuurlijk. Ik heb nu de voeding van de HH accu's afgeleid, en dat is prima (staan op zonnepanelen dus raken zowieso niet leeg). Ik had nog gedacht om een backup voeding te maken zodat een HH-accu stroomcircuit sabotage geen effect op de Arduino zou hebben, maar om ergens bij te kunnen zullen ze toch eerst binnen moeten komen, langs de PIR, en dan is het al te laat. Seconden later krijg ik een SMS.

Zit ook nog te denken om er een oud auto-alarm aan te koppelen, maar dat is voor fase 2.
Gebruikersavatar
De Rooie Reus
Berichten: 906
Lid geworden op: 04 dec 2004, 14:22

Re: Arduino

Bericht door De Rooie Reus »

Ik ben er ook nog nooit geweest voor een weekend dan, wel op bezoek.

Op zich vind ik 100 mA best veel (ik heb geen zonnepanelen) en ik zat erover te denken het een eigen stroomvoorziening te geven. Ik heb nog een kleine accu van onze zitmaaier over die heeft 18 ampère en kan natuurlijk in een circuit mee worden opladen.
Maar meestal verander ik halverwege van idee dus ik hou alles open, figuurlijk dan.

Met die pir/sms heb je een goede combinatie, ik kan me voorstellen dat daar wel belangstelling voor is. De kosten van de componenten is een fractie van het bedrag van een bus. Als je losse componenten neemt is het minder dan een tank diesel.
In de toekomst zullen we nog vaak aan vroeger denken.
Gebruikersavatar
De Rooie Reus
Berichten: 906
Lid geworden op: 04 dec 2004, 14:22

Re: Arduino

Bericht door De Rooie Reus »

Voor wie de sketch van een gps tracker eens wil proberen, plaats ik die hieronder.
Ik kreeg 'm hiermee aan de praat. Er zijn meerdere soorten gsm-shields voor een arduino en meerdere gps-shields.
Ik gebruikte de onderstaande gecombineerd met een UNO (ongeveer $7).
Er zullen ongetwijfeld betere sketches zijn want ik vermoed dat ik links en rechts wel een variabele o.i.d. onbenut heb en dus overbodig is.
Dat beperkt de werking overigens niet.
GSM-shield: http://www.ebay.com/itm/SIM900-Quad-ban ... 337f205e38
GPS-shield: http://www.ebay.com/itm/Skylab-GPS-Modu ... 4610912fe1
Van het GSM-shield zijn ook versies die niet werken met DTMF en die kosten ongeveer $31.
In totaal waren mijn kosten ongeveer € 45 en de afmetingen zijn excl. gsmantenne en gpsantenne 7x5 x3.
Het is allemaal open source dus ik vermeld hier dat de oorspronkelijke auteur boraciner is, actief op o.a. GitHub.com. Bij mij werkte zijn sketch niet dus die heb ik aangepast. Voorts gebruikte hij voor functies en variabelen Turkse woorden en daardoor kon ik alleen met Google Translate begrijpen wat hij bedoelde.
Er zijn drie telefoonnummers (ik heb 06 nummers gebruikt maar vaste zijn ook mogelijk als je maar met nummerherkenning belt) geauthoriseerd die je eventueel uit kunt breiden. Met het nummer van een thuisblijver bijvoorbeeld die in noodgevallen kan zien waar je bent.
Belt er dus iemand met een ander nummer dan gaat de telefoon wel over maar er wordt niets verstuurd.
Als één van de drie nummers belt dan stuurt de arduino alléén naar dat nummer de coördinaten en de snelheid.
De telefoon hoeft maar één keer over te gaan om de arduino te activeren. Laat je 'm met een geauthoriseerd nummer twee keer overgaan dan krijg je 2 sms'n. Daar moet ik tzt nog eens iets aan doen.
Het GSM shield verbruikt nogal wat bij actieve dienst, er is daarom een voeding nodig die 2 ampère kan leveren.

De compiler van arduino kun je hier gratis downloaden: http://arduino.cc/en/Main/Software#toc2

Als je verbeteringen ontdekt o.i.d., ik hou me altijd aanbevolen.
Ik hoop niet dat dit alles teveel capaciteit vraagt van het forum, anders kan het misschien op een andere manier.

Voor je van alles aan gaat schaffen: hou regel 10 van het forum in gedachten!

Onderstaande sketch kun je kopiëren en in de arduino compiler plakken. Niet overtypen dus!

#include <TimerOne.h> // deze # includes kun je downloaden op internet: googlen.
#include <TinyGPS.h>
#include <SoftwareSerial.h>
TinyGPS gps;
SoftwareSerial gsmSerial(2, 3);
SoftwareSerial ss(4,5);
String inData = "";
boolean inputAvailable = false;
String Opvraag_Telefoon_Nummer_1 = "+31612345678"; // het aantal nummers is onbeperkt uit te breiden.
String Opvraag_Telefoon_Nummer_2 = "+31687654321"; // maar pas dan de funktie aan: int Authorisatie()
String Opvraag_Telefoon_Nummer_3 = "+31622334455";
String oproepNummer = "";
String totaalNummer = "";
int callback_counter=0;
int indexofMsgStr = 0;
float flat, flon, fkmph;
unsigned long age;
char leesKarakters = '*';
float flat_store = 0.0;
float flon_store = 0.0;

void setup() {delay(5000);
Serial.begin(115200);
SIMpower();
ss.begin(9600);
gsmSerial.begin(9600);
Timer1.initialize(8388480);
Timer1.attachInterrupt(callback);
delay(2000);
gsmSerial.listen();
Serial.println("opstarten");
gsmSerial.println("AT+CLIP=1");
delay(1000);
gsmSerial.println("ATE=0");
delay(1000);
gsmSerial.listen();}

void loop() {while(gsmSerial.available())
{inputAvailable = true;
leesKarakters = (char) gsmSerial.read();
inData += leesKarakters;
if(leesKarakters == ',')
{break;}}
if(inputAvailable)
{inputAvailable=false;
processData();
inData="";}}

void GPSData() {Serial.println("GPSData");
gps.f_get_position(&flat, &flon, &age);
if( flat > 0.0 )
flat_store = flat;
if( flon > 0.0 )
flon_store = flon;
fkmph = gps.f_speed_kmph();}

void GPSBepalen(){Serial.println("---->GPSBepalen");
boolean gps_valid = false;
ss.listen();
delay(1000);
for(int i =0 ; i < 200 ; i++)
{if(!gps_valid)
{while (ss.available())
{char c = ss.read();
if (gps.encode(c))
{GPSData();
gps_valid = true;
break;}}
delay(5);}}
gsmSerial.listen();
delay(1000);
Serial.println("<----GPSBepalen");}

void processData(){Serial.println("processData");
Serial.println(inData);
if(OproepToon())
{indexofMsgStr = inData.indexOf("+31");
oproepNummer = inData.substring(indexofMsgStr , indexofMsgStr+12);
Serial.println(oproepNummer);
if(Authorisatie())
{GPSBepalen();
smsDePlaats();}}}

void smsDePlaats(){Serial.println("sms De Plaats");
gsmSerial.println("AT+CMGF=1");
delay(2000);
totaalNummer = "AT+CMGS=\"";
totaalNummer+=oproepNummer;
totaalNummer+= "\"";
gsmSerial.println(totaalNummer);
delay(1000);
gsmSerial.println(flat_store,7);
gsmSerial.println(flon_store,7);
gsmSerial.print(fkmph);
gsmSerial.println(" km/hr");
gsmSerial.write(26);}

int OproepToon() {Serial.println("OproepToon?");
if (inData.indexOf("CLIP:") >= 0 )
{return 1;}
else
{return 0;}}

int Authorisatie(){Serial.println("Geauthoriseerd?");
if(Opvraag_Telefoon_Nummer_1 == oproepNummer)
{return 1;}
else if(Opvraag_Telefoon_Nummer_2 == oproepNummer)
{return 1;}
else if(Opvraag_Telefoon_Nummer_3 == oproepNummer)
{return 1;}
return 0;}

void callback() {callback_counter++;
if(callback_counter >= 80)
{callback_counter = 0;
GPSBepalen();}}

void SIMpower() {digitalWrite(8, HIGH); // start het gsm-shield op
delay(1000);
digitalWrite(8, LOW);
delay(2000);}



Aanvulling: niets belet je om in de sketch een digitalWrite op te nemen waarmee een relais geactiveerd wordt. Als dat gebeurt zou je een brandstofafsluiter zijn werk kunnen laten doen. Een belletje geeft dan de positie waar hij ongeveer tot stilstand is gekomen.
Laatst gewijzigd door De Rooie Reus op 13 nov 2014, 07:08, 2 keer totaal gewijzigd.
In de toekomst zullen we nog vaak aan vroeger denken.
Gebruikersavatar
De Rooie Reus
Berichten: 906
Lid geworden op: 04 dec 2004, 14:22

Re: Arduino

Bericht door De Rooie Reus »

Het volgende project heeft zich inmiddels aangediend tussen mijn oren.
Ik had eerst het idee om mijn bus in het woongedeelte schakelaarloos te maken en daarvoor een afstandbediening met 433 Mhz frequentie te gebruiken. Nu lijkt het me wel aardig om mijn stem te gebruiken om acties te genereren.
De applicatie BitVoicer geeft die mogelijkheid waarbij je de keus hebt in talen van Catalaans tot bijvoorbeeld Russisch, en gelukkig ook Nederlands. Dat alles weer op een boardje van inmiddels grofweg $5,-.
BitVoicer is bijna gratis ($ 4,50) en Arduino compatible.

Lijkt me geweldig om in het Koreaans een lamp aan te laten gaan thuis. :lol:


Groet van,
Martin
In de toekomst zullen we nog vaak aan vroeger denken.
Gebruikersavatar
De Rooie Reus
Berichten: 906
Lid geworden op: 04 dec 2004, 14:22

Re: Arduino

Bericht door De Rooie Reus »

Ik wilde mijn kachel op afstand kunnen activeren zodat de bus al enigszins warm is als je instapt. Je komt van alles tegen op het wereldwijde web en, gemakzuchtig als ik ben, plak en snij ik liever in bestaande sketches dan dat ik weer het wiel uitvind. Soms ziet het er niet helemaal gelikt uit maar als het werkt vind ik het al prima. Ik heb de bestaande sketch enigszins uitgebreid zodat je meer functies aan/uit kunt schakelen.
Omdat het ding smsjes stuurt (als je dat tenminste wilt) gebruik ik een pre-paid simcard die op een bepaalde nivo automatisch weer bijgevuld wordt.
Voor dit soort dingen kun je een app gebruiken waarin je de commando's definieert. Commando's kun je natuurlijk naar believe aanpassen en doe dat dan ook in de Void-omschrijvingen

// Met deze sketch kun je vier functies op afstand bedienen door een sms te sturen naar het telefoonnummer
// dat bij de simkaart van het gsm shield hoort.
// Bijvoorbeeld de kachel inschakelen, het alarm inschakelen/uitschakelen op afstand, de deuren van binnen vergrendelen/ontgrendelen brandstoftoevoer afsluiten en noem maar op.
// Ik heb het beperkt tot alarm aan en uit en deuren ver- en ontgrendelen. Rest en Goed kun je zelf invullen. Er zit ook een temperatuurmodule aan maar ook die hoef je niet te gebruiken. Doe je dat wel dan moet dat aan pin 2.
// Daarnaast kun je vragen ("waar") om de positie van de bus door te geven door de GPS coördinaten door te laten sturen.
// Je kunt meer commando's inbouwen maar dan moet je ook pinnen en acties definiëren
// Er wordt maar op één telefoonnummer gereageerd.
// Sluit je de gps niet aan dan kun je de sketch intact laten maar moet je voor de negende regel (SoftwareSerial ss(4,5);) twee schuine streepjes zetten.
// Als je een 12 volts relais wilt activeren heb je een transistor zoals bijvoorbeeld de BC547 en een 12 volts voeding nodig omdat je de poortjes van een arduino niet te zwaar kunt belasten.
// Als je een goed idee hebt dan hoor ik dat graag.

#include <LowPower.h>
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <TimerOne.h>
#include <TinyGPS.h>
TinyGPS gps;
SoftwareSerial SIM900(2,3); // gsm gebruikt de digitale pinnen 2 en 3 en 8
SoftwareSerial ss(4,5); // gps gebruikt de digitale pinnen 4 en 5
String totaalNummer = "";
float flat, flon, fkmph;
unsigned long age;
char leesKarakters = '*';
float flat_store = 0.0;
float flon_store = 0.0;
boolean respond = false; // als je hiervan true maakt stuurt het apparaat altijd een sms terug. Dan hoef je "rspon" dus niet te gebruiken.
int LockPin = 6;
int AlarmPin = 7;
int RestPin = 11;
int GoedPin = 12;
String myPhoneNum = "+31601239876"; //hier je telefoonnummer
int tempPin = 10;
OneWire oneWire(tempPin);
DallasTemperature sensors(&oneWire);

void setup(){ SIM900poweron();
pinMode(13, OUTPUT);
pinMode(LockPin, OUTPUT);
pinMode(AlarmPin, OUTPUT);
pinMode(RestPin, OUTPUT);
pinMode(GoedPin, OUTPUT);
Serial.begin(9600);
Serial.println("Starting.");
SIM900.begin(9600);
sendCommand("AT", "OK", 1000);
//if(sendCommand("AT", "OK", 1000) == 1)
//{Serial.println("Module started");}
//if(sendCommand("AT+CNMI=0,0,0,0,0", "OK", 1000) == 1)
//{Serial.println("Notifications disabled");}
//{if(sendCommand("AT+CMGF=1", "OK", 1000) == 1)
//{Serial.println("Text mode enabled");}
//if(sendCommand("AT+CSCLK=2", "OK", 1000) == 1)
//{Serial.println("Sleeping enabled");
sendSms("Module gestart");//}
sensors.begin();}//}

void loop(){ sendCommand("AT", "OK", 1000);
sendCommand("AT", "OK", 2000);
if(sendCommand("AT+CREG?","+CREG: 0,1",1000))
{Serial.println("Verbonden met het netwerk");
if(sendCommand("AT+CMGR=1", "+CMGR: ", 1000) == 1)
{String serialContent = "";
char serialCharacter;
while(SIM900.available())
{serialCharacter = SIM900.read();
serialContent.concat(serialCharacter);
delay(10);}
String smsNumber = serialContent.substring(14,26);
String smsMessage = serialContent.substring(53,serialContent.length()-8);
smsMessage.trim();
smsMessage.toLowerCase();
Serial.println("Nieuw smsje");
Serial.println(smsNumber);
Serial.println(smsMessage);
// Delete all SMS messages in memory
sendCommand("AT+CMGD=1,4", "OK", 1000);

if(smsNumber == myPhoneNum)

{if(smsMessage == "alarm1")
{Alarm1();
if(respond){ sendSms("Alarm inschakelen");}} // = PIN 7

else if(smsMessage == "alarm0")
{Alarm0();
if(respond){ sendSms("Alarm uitschakelen");}} // = PIN 7

else if(smsMessage == "lock")
{carLock();
if(respond){ sendSms("Deuren vergrendelen");}} // = pin 6

else if(smsMessage == "unlock")
{carUnlock();
if(respond){ sendSms("Deuren ontgrendelen");}} // = pin 6

else if(smsMessage == "rest")
{Rest1();
if(respond){ sendSms("Rest vergrendelen");}} // = pin 11

else if(smsMessage == "rest0")
{Rest0();
if(respond){ sendSms("Rest ontgrendelen");}} // = pin 11

else if(smsMessage == "goed")
{Goed1();
if(respond){ sendSms("Goed vergrendelen");}} // = pin 12

else if(smsMessage == "goed0")
{Goed0();
if(respond){ sendSms("Goed ontgrendelen");}} // = pin 12

else if(smsMessage == "waar")
{Waar();
if(respond)
{sendSms("We gaan zoeken!");}}

else if(smsMessage == "rspon")
{respond = true;
sendSms("Respond to commands: On");}

else if(smsMessage == "rspoff")
{respond = false;
sendSms("Respond to commands: Off");}

else if(smsMessage == "temp")
{sensors.requestTemperatures();
float temperature = sensors.getTempCByIndex(0);
char buffer[10];
String temperatureString = dtostrf(temperature, 5, 1, buffer);
String tempMsg = "Temperatuur: " + temperatureString;
Serial.println(tempMsg);
sendSms(tempMsg);}
else if (smsMessage == "ping")
{sendSms("Pong!");}
else
{if(respond){ sendSms("Ongeldig commando");}
Serial.println("Invalid command");}}}
else
{Serial.println("geen smsje binnen gekomen");}}
else
{Serial.println("Geen verbinding met het netwerk");}
delay(500);
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);}

void sendSms(String message){
char smsCommand[23];
String commandStr = "AT+CMGS=\"" + myPhoneNum + "\"";
commandStr.toCharArray(smsCommand,23);
if(sendCommand(smsCommand, ">", 1000))
{SIM900.println(message);
SIM900.println((char)26);
SIM900.println();
delay(2000);}}

void carLock(){ digitalWrite(LockPin, LOW); // pin = 6
delay(1000);
digitalWrite(LockPin, HIGH);
Serial.println("Deuren zijn vergrendeld");}

void carUnlock(){ digitalWrite(LockPin, HIGH); // pin = 6
delay(1000);
digitalWrite(LockPin, LOW);
Serial.println("Deuren zijn ontgrendeld");}

void Alarm1(){ digitalWrite(AlarmPin, LOW); // = PIN 7
delay(1000);
digitalWrite(AlarmPin, HIGH);
Serial.println("Alarm geactiveerd");}

void Alarm0(){ digitalWrite( AlarmPin, HIGH); // = PIN 7
delay(2000);
digitalWrite( AlarmPin, LOW);
Serial.println("Alarm uitgeschakeld");}

void Rest1(){ digitalWrite(RestPin, LOW); // = PIN 11
delay(1000);
digitalWrite(RestPin, HIGH);
Serial.println("Rest geactiveerd");}

void Rest0(){ digitalWrite( RestPin, HIGH); // = PIN 11
delay(2000);
digitalWrite( RestPin, LOW);
Serial.println("Rest uitgeschakeld");}

void Goed1(){ digitalWrite(GoedPin, LOW); // = PIN 12
delay(1000);
digitalWrite(GoedPin, HIGH);
Serial.println("Goed geactiveerd");}

void Goed0(){ digitalWrite( GoedPin, HIGH); // = PIN 12
delay(2000);
digitalWrite( GoedPin, LOW);
Serial.println("Goed uitgeschakeld");}

void Waar(){ GPSBepalen();
GPSData();
smsDePlaats();}

void SIM900poweron(){
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(8, LOW);
delay(2000);}

void GPSBepalen(){Serial.println("---->GPSBepalen");
boolean gps_valid = false;
ss.listen();
delay(1000);
for(int i =0 ; i < 200 ; i++)
{if(!gps_valid)
{while (ss.available())
{char c = ss.read();
if (gps.encode(c))
{GPSData();
// SIM900.println("AT+CMGD");
gps_valid = true;
break;}}
delay(5);}}
SIM900.listen();
delay(1000);
Serial.println("<----GPSBepalen");}

void GPSData() {Serial.println("GPSData");
gps.f_get_position(&flat, &flon, &age);
if( flat > 0.0 )
flat_store = flat;
if( flon > 0.0 )
flon_store = flon;
fkmph = gps.f_speed_kmph();}

void smsDePlaats(){Serial.println("sms De Plaats");
SIM900.println("AT+CMGF=1");
delay(2000);
totaalNummer = "AT+CMGS=\"";
totaalNummer+=myPhoneNum;
totaalNummer+= "\"";
SIM900.println(totaalNummer);
delay(1000);
SIM900.println(flat_store,7);
SIM900.println(flon_store,7);
SIM900.print(fkmph);
SIM900.println(" km/hr");
SIM900.write(26);}

int sendCommand(char* ATcommand, char* expected_answer, unsigned int timeout){
int answer=0;
int responsePos=0;
char response[100];
unsigned long previous;
memset(response, '\0', 100); // Clears array
delay(100);
while( SIM900.available() > 0) SIM900.read();
SIM900.println(ATcommand);
responsePos = 0;
previous = millis();
do
{if(SIM900.available() != 0)
{response[responsePos] = SIM900.read();
responsePos++;
if (strstr(response, expected_answer) != NULL)
{answer = 1;}}}
while((answer == 0) && ((millis() - previous) < timeout));
return answer;}
Laatst gewijzigd door De Rooie Reus op 23 dec 2015, 14:20, 1 keer totaal gewijzigd.
In de toekomst zullen we nog vaak aan vroeger denken.
Gebruikersavatar
Arno Z
Berichten: 523
Lid geworden op: 11 mei 2011, 15:01
Locatie: Ouderkerk a/d Amstel
Contacteer:

Re: Arduino

Bericht door Arno Z »

Overweeg eens een MOSFET ipv een relais?

MOSFET Button IRF520 MOSFET Driver Module for Arduino
http://s.aliexpress.com/U3e6Z3yM
Plaats reactie

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 8 gasten