Arduino

49 views
Skip to first unread message

Bo Herrmannsen

unread,
Jan 31, 2012, 3:56:03 PM1/31/12
to ellert-...@googlegroups.com
Hejsa

Nu da vinteren hamre på døren så har jeg kig på den her til at fjernstyre mit fyr i bilen:

http://store.open-electronics.org/Remote-control/GSM/TiDiGino

mit problem er bare at jeg ikke er så skarp til Arduino… der følger godt nok nogen eksempler med men kan bare ikke lige hitte ud af hvordan og hvorledes….

det jeg godt vil bruge den til er:

1. Pr. sms at tænde og slukke for de 2 relæer. Evt pr sms at kunne angive en drift tid hvor der så slukkes automatisk

2. at få en sms tilbage når de 2 indgange skifter status… meget praktisk med lidt feedback på at nu er der rent faktisk også gang i systemet…. jeg har her tænkt mig at føle på flammesensoren. den anden indgang har jeg tænkt mig at føle på om kabineblæseren er aktiveret….

3. Få sendt en sms når temperatur er over 0, 10, 20 grader… jeg har med sådan et trådløs termometer oplevet gode frost grader så derfor jeg godt vil starte med 0 og så tage spring i 5 eller 10 grader… Disse sms'er skal selvfølgelig kun sendes mens fyret er i drift.

for ikke at få mailen til at fylde for meget har jeg ikke vedhæftet dem men de kan ses her:

http://code.google.com/p/tidigino/downloads/detail?name=GSM_TDGINO.zip&can=2&q=

det som tabte mig i eks. er at der ingen steder rigtig synes at være et punkt hvor der sendes eller modtages sms 

nogen der kan hjælpe mig lidt igang?


mvh bo

Bo Herrmannsen

unread,
Jan 31, 2012, 3:57:25 PM1/31/12
to ellert-...@googlegroups.com
fandt nogen bedre eksempler her…: http://www.open-electronics.org/tidigino-contest/

kan se der er nogen biblioteker som skal hentes men hvordan stykker man så lige flere programmer sammen såfremt jeg mener at eksemplerne kan bruges som de der?

mvh bo

Bo Herrmannsen

unread,
Feb 1, 2012, 3:41:57 PM2/1/12
to ellert-...@googlegroups.com
Hej igen

jeg er da kommet lidt vidre men er stødt lidt mod et problem.. jeg skal have sendt en sms når en indgang skifter status, det med at sende sms'en er på plads men mangler at trigge afsendelsen.. min sketch ser pt sådan her ud (kun void loop delen):

void loop()

{
int response=0;
char phone_num[20]; // array for the phone number string
char string[160];
int tono=0;
int Oldtemp; //temp since last flag
int Newtemp=tempC; //current temp
int Tempflag; //trigger variable
int Flameflag=2;
int Flame;

// if we get a valid byte, read analog ins:

{
if(digitalRead(in3) == 0 && Flame == 0)
{
Flameflag = 1;
}

if(digitalRead(in3) == 1 && Flame == 1)
{
Flameflag = 0;
}

if(digitalRead(in3) == 0)
{
Flame = 1;
}


if(digitalRead(in3) == 1)
{
Flame = 0;
}


if(Newtemp - Oldtemp > 5);
{
Tempflag = 1;
}

if(digitalRead(in1) == 0 && Tempflag == 1)

{
Tempflag = 0; // reset flag first thing
Oldtemp = tempC;
int tempCdec=tempC;
int tempCuni=(tempC*100)-(tempCdec*100);
sprintf(string,"Temperatura rilevata %d.%d gradi",tempCdec,tempCuni);
Serial.println(string);
response=gsm.SendSMS("+**********",string); //+********** insert your telephone number
Serial.print("response ");
Serial.println(response);
}

if(digitalRead(in3) == 0 && Flame == 1 && Flameflag == 1)
{
sprintf(string,"Flame On");
Serial.println(string);
response=gsm.SendSMS("+**********",string); //+********** insert your telephone number
Serial.print("response ");
Serial.println(response);
Flameflag=2;
}

if(digitalRead(in3) == 1 && Flame == 0 && Flameflag == 0)
{
sprintf(string,"Flame OFF");
Serial.println(string);
response=gsm.SendSMS("+**********",string); //+********** insert your telephone number
Serial.print("response ");
Serial.println(response);
}

}
}

Nogen der har bud på om de 2 sidste sektioner gør som jeg vil? der skal jo ikke en sms ud for hver gennemløb men kun når der er et skifte på in3

mvh bo

Johan Rauchfuss

unread,
Feb 1, 2012, 4:16:07 PM2/1/12
to ellert-...@googlegroups.com

Jeg tænker en debounce funktion.
Altså når den hopper ind i den IF hvor den sender en SMS så sætter du et flag og det bliver først fjernet når der bliver ændret state.

Bo Herrmannsen

unread,
Feb 1, 2012, 4:22:14 PM2/1/12
to ellert-...@googlegroups.com
hehe

det fandt jeg også ud af lige efter jeg skrev til dig og er ved at få den til at compile uden fejl

så det ligner da noget…

hvordan går det med vores print til ellerten? synes det har været meget stille omkring det

/bo

Bo Herrmannsen

unread,
Feb 1, 2012, 5:05:37 PM2/1/12
to ellert-...@googlegroups.com
hej igen… tror jeg har den nu, skal lige have læst igennem et par gange selv, men kan du se noget helt forkert?

/* TDGino example
Sketch to send a SMS with temperature and to check the DTMF section

created 2011
by Boris Landoni

This example code is in the public domain.

http://www.open-electronics.org

http://www.futurashop.it

*/


#include <GSM.h>
#include <OneWire.h>
#include <DallasTemperature.h>
//for enable disable debug rem or not the string #define DEBUG_PRINT
// definition of instance of GSM class
GSM gsm;


// Set pin numbers:
const int powergsm = 77;
const int ctsgsm = 39;
const int rtsgsm = 29;
const int dcdgsm = 27;
const int dtrgsm = 28;
const int reset = 35;
const int ring = 34;
const int ld1 = 25;
const int ld2 = 26;
const int stato = 76;
const int rele1 = 36;
const int rele2 = 37;
const int sda = 20;
const int scl = 21;
const int in1 = 84;
const int in2 = 83;
const int in3 = 82;
const int puls = 62;
const int sonda = 63;


// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS sonda


// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);


// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);


// arrays to hold device address
DeviceAddress insideThermometer;


float tempC=0;

int Flame;
int FlameState;


int Oldtemp; //temp since last flag

int Tempflag; //trigger variable


char phone_num[20]; // array for the phone number string
char string[160];

void setup() {


// set the digital pin as output:
pinMode(powergsm, OUTPUT);
pinMode(rtsgsm, OUTPUT);
pinMode(dtrgsm, OUTPUT);
pinMode(reset, OUTPUT);
pinMode(ld1, OUTPUT);
pinMode(ld2, OUTPUT);
pinMode(rele1, OUTPUT);
pinMode(rele2, OUTPUT);
pinMode(sda, OUTPUT);
pinMode(scl, OUTPUT);

// set the digital pin as input:
pinMode(ctsgsm, INPUT);
pinMode(dcdgsm, INPUT);
pinMode(ring, INPUT);
pinMode(stato, INPUT);
pinMode(in1, INPUT); //heater on/off
pinMode(in2, INPUT); //cabinfan on/off
pinMode(in3, INPUT); //Flamne on/off
pinMode(puls, INPUT);
pinMode(sonda, INPUT);




// start serial port at 9600 bps:
Serial.begin(9600);
//Serial1.begin(115200);

Serial.println("system startup");


//gsm.InitSerLine(); //initialize serial 1


gsm.TurnOn(115200); //module power on
gsm.InitParam(PARAM_SET_1);//configure the module
gsm.Echo(1); //enable AT echo

Serial.print("Locating DS18B20 devices...");
sensors.begin();
Serial.print("Found ");
Serial.print(sensors.getDeviceCount(), DEC);
Serial.println(" devices.");

// report parasite power requirements
Serial.print("Parasite power is: ");
if (sensors.isParasitePowerMode()) Serial.println("ON");
else Serial.println("OFF");

if (!sensors.getAddress(insideThermometer, 0)) Serial.println("Unable to find address for Device 0");
// set the resolution to 9 bit (Each Dallas/Maxim device is capable of several different resolutions)
sensors.setResolution(insideThermometer, 9);

Serial.print("Device 0 Resolution: ");
Serial.print(sensors.getResolution(insideThermometer), DEC);
Serial.println();
FlameState = digitalRead(in3); // read the initial state

}


void loop()

{
int response=0;
int Newtemp=tempC; //current temp
Flame = digitalRead(in3); // read input value and store it



// if we get a valid byte, read analog ins:

{


if(Newtemp - Oldtemp > 5);
{
Tempflag = 1;
}

if(digitalRead(in1) == 0 && Tempflag == 1)

{
Tempflag = 0; // reset flag first thing
Oldtemp = tempC;
int tempCdec=tempC;
int tempCuni=(tempC*100)-(tempCdec*100);
sprintf(string,"Temperatura rilevata %d.%d gradi",tempCdec,tempCuni);
Serial.println(string);
response=gsm.SendSMS("+**********",string); //+********** insert your telephone number
Serial.print("response ");
Serial.println(response);
}

if (Flame != FlameState ) // the state has changed!
{

if (Flame == LOW)

{
sprintf(string,"Flame On");
Serial.println(string);
response=gsm.SendSMS("+**********",string); //+********** insert your telephone number
Serial.print("response ");
Serial.println(response);

}

if (Flame == HIGH)

{
sprintf(string,"Flame OFF");
Serial.println(string);
response=gsm.SendSMS("+**********",string); //+********** insert your telephone number
Serial.print("response ");
Serial.println(response);
}

FlameState = Flame; // save the new state in our variable
}
}
}

Reply all
Reply to author
Forward
0 new messages