Ciao a tutti , sto cercando di creare un telecomando via web dove sia possibile creare una pagina che possa accendere e spegnere la mia tv da remoto con arduino.
Ho visto sketch e varie soluzioni in rete ma non riesco ad affiancarlo al mio sketch , praticamente vorrei creare solo un pulsante web che invii il segnale ir così che mi permetta di accendere e spegnere la tv o condizionatore...
Qualcuno potrebbe aiutarmi?
grazie
Fabrizio
ti basta un arduino ethernet o un arduino con ethernet shield ,un led infrarossi la libreria di Ken o kevin qualcosa poi crei il webserver forse puoi sfruttare quel software che c'è qui sul forum in ajax,tu dove ti sei bloccato?
Ciao, ho provato la libreria di ken avendo già un webserver che comando dei rele' ma quando lo carico con l'ide 022 funziona e riesco ad accendere la tv ma dopo qualche clic va in crash l'arduino mentre con l'ide 1.0.1 genera l'errore avendo installato già le librerie correttamente e credo sia quindi la più attendibile come compilazione.
Come fare?
Ciao,
innanzitutto ken aveva fatto proprio quello che cerchi di fare tu:
con l'ide 1.0.1 genera l'errore
che errore?
Si l'avevo visto ma necessita un pc e arduino collegato perché utilizza la seriale.
Giusto?
Io non vorrei tener acceso il pc perché se no perdo i vantaggi del microcomtrollore!
ciao
Si l'avevo visto ma necessita un pc e arduino collegato perché utilizza la seriale.
Giusto?
sì, scusa.
Me lo ricordavo per il discorso del telecomando via web, ho recuperato il link e postato, senza leggere bene.. mea culpa!
Che errore ti da l'ide 1.0.1?
fondamentalmente , vorrei aggiungere questo sketch
#include <IRremote.h>
IRsend irsend;
unsigned int Samsung[70] ={260,700,240,2560,260,700,240,2720,240,1240,260,1240,240,840,240,2040,260,12700,260,700,240,840,240,700,260,700,240,700,260,2700,260,700,240,700,260,15424,260,700,240,2560,260,700,240,2720,240,1240,260,1240,240,840,240,2040,260,12700,260,700,
240,1920,240,1760,260,700,240,700,260,2700,260,700,240,700};
void setup()
{
}
void loop() {
for (int i = 0; i < 3; i++) {
irsend.sendRaw(Samsung,70,38);
delay(100);
}
}
con questo
#include <String.h>
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // mac address
byte ip[] = { 192, 168, 1, 9 }; // ip arduino internet in
byte gateway[] = { 192, 168, 1, 9 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port
int sensorPin = 0;
int led10 = 10;
int led6 = 6;
int led7 = 7;
int led8 = 8;
int led9 = 9; // pin attuatore
boolean LEDON = false; // flag status attuatore
boolean LEDONn = false; // flag status attuatore
boolean LEDN = false; // flag status attuatore
String readString; //string
void setup(){
Ethernet.begin(mac, ip, gateway, subnet);
pinMode(led9, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led6, OUTPUT);
Serial.begin(9600);
delay(1000);
Serial.println("connecting...");
}
void loop(){
int reading = analogRead(sensorPin);
int voltage = reading * 6.5;
voltage /= 1024.0;
{
int temperatureC = (voltage - 0.5) * 10 ; //converting from 10 mv per degree wit 500 mV offset
/*inizio client*/
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
readString.concat(c); //store characters to string
if (c == '\n' && currentLineIsBlank) {
if(readString.indexOf("L=1") > 0) { //apre il cancello
digitalWrite(led10, HIGH);
delay(1000);
digitalWrite(led10, LOW);
digitalWrite(led9, HIGH);
delay(1000);
digitalWrite(led9, LOW);
}
if(readString.indexOf("L=2") > 0) { // accende rele
digitalWrite(led8, HIGH);
LEDON = true;
//accende il led
}
if(readString.indexOf("L=3") > 0) { //spegne il rele
digitalWrite(led8, LOW);
LEDON = false;
}
if(readString.indexOf("L=4") > 0) { //accendere il rele
digitalWrite(led7, HIGH);
LEDONn = true;
}
if(readString.indexOf("L=5") > 0) {// spegne il rele
digitalWrite(led7, LOW);
LEDONn = false;
}
if(readString.indexOf("L=6") > 0) {/accende il rele
digitalWrite(led6, HIGH);
LEDN = true;
}
if(readString.indexOf("L=7") > 0) { //spegne il rele
digitalWrite(led6, LOW);
LEDN = false;
}
if(readString.indexOf("L=8") > 0) { //spegne tutti i rele
digitalWrite(led6, LOW);
delay(250);
digitalWrite(led7, LOW);
delay(250);
digitalWrite(led8, LOW);
LEDN = false;
LEDONn = false;
LEDON = false;
}
// inizializzo pagina (da togliere se uso ajax)
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println( "<html>");
client.print("<head><title>FabryTerry Server Domotica</title> ");
client.println(" <meta name='viewport' content='width=device-width, user-scrollbar=no'>");
client.println("<script>");
client.println(" var d=new Date();");
client.println("document.write(d);");
client.println(" function myFunction()");
client.println("{");
client.println("onclick=location.href='/?L=1',alert('OK per aprire');");
client.println("}");
client.println("</script>");
client.print("</head>");
client.println(" <body bgcolor='#0099FF'>"); //inizio pagina
client.println("<button><p>Temperatura e' di ");
client.print(temperatureC);
client.println(" Gradi</button>
</p>");
client.println("<hr >");
client.println("<h3>Apertura</h3>"); //apricancello
client.println("<input type='button' onclick='myFunction()' value='Apri'>");
client.println("<hr >");
client.println("<h3>Rele' n. 1<h3><button type=button><a href='/?L=2'>Accendi</button><button type=button><a href='/?L=3'>Spegni</a></button>");
if (LEDON) {
client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
}
else
{
client.println("<span style='color:grey; font-weight:bold;'>OFF</span></font>");
}
client.println("<hr >");
client.println("<h3>Rele' n. 2<h3><button type=button><a href='/?L=4'>Accendi</button><button type=button><a href='/?L=5'>Spegni</a></button>");
if (LEDONn) {
client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
}
else
{
client.println("<span style='color:grey; font-weight:bold;'>OFF</span></font>");
}
client.println("<hr >");
client.println("<h3>Rele' n. 3<h3><button type=button><a href='/?L=6'>Accendi</button><button type=button><a href='/?L=7 '>Spegni</a></button>");
if (LEDN) {
client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
}
else
{
client.println("<span style='color:grey; font-weight:bold;'>OFF</span></font>");
}
client.println("<hr >");
client.println("<a href='/?L=10'>Accendi + cancello</a> "); // apricancello piu televisione e ampli
client.println("<h3><a href='/?L=9'>Accendi</a><h3> ");//solo accendi tv
client.println("<h3><a href='/?L=8'>Spegni Tutto</a> "); //spegni tutti i rele
client.println("</html>");
readString="";
//fermo il client
client.stop();
}}}}}}
In pratica il mio obiettivo è creare un pulsante html dove io possa comandare l'accensione della televisione ma evidentemente sbaglio qualcosa perchè aggiungendolo arduino non funziona più
sketch con pulsanti ir:
#include <String.h>
#include <SPI.h>
#include <Ethernet.h>
#include <IRremote.h>
IRsend irsend;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // mac address
byte ip[] = { 192, 168, 1, 9 }; // ip arduino internet in
byte gateway[] = { 192, 168, 1, 9 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port
int sensorPin = 0;
unsigned int Samsung[68] ={4550,4450,600,1600,650,1650,600,1600,650,500,600,500,650,500,600,500,650,500,600,1650,600,1600,650,1600,650,500,600,500,650,500,600,500,650,500,600,500,650,1600,600,500,650,500,600,500,650,500,600,500,650,500,600,1600,650,500,600,1650,600,1650,600,1650,600,1650,600,1650,600,1650,600};
unsigned int dream[70] ={260,700,240,2560,260,700,240,2720,240,1240,260,1240,240,840,240,2040,260,12700,260,700,240,840,240,700,260,700,240,700,260,2700,260,700,240,700,260,15424,260,700,240,2560,260,700,240,2720,240,1240,260,1240,240,840,240,2040,260,12700,260,700,
240,1920,240,1760,260,700,240,700,260,2700,260,700,240,700};
unsigned int box[72] ={260,15424,260,700,240,2560,240,720,240,2720,240,1240,240,1260,240,840,240,2040,260,12700,240,720,240,1900,260,1760,240,720,240,700,240,2720,240,720,240,700,240,11960,260,700,240,2560,260,700,240,2720,240,1240,260,1240,240,840,2040,260,12700,240,720,240,1760,260,1900,240,720,240,700,240,2720,260,700,240,700,260};
int led10 = 10;
int led6 = 6;
int led7 = 7;
int led8 = 8;
int led9 = 9; // pin attuatore
boolean LEDON = false; // flag status attuatore
boolean LEDONn = false; // flag status attuatore
boolean LEDN = false; // flag status attuatore
String readString; //string
void setup(){
Ethernet.begin(mac, ip, gateway, subnet);
pinMode(led9, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led6, OUTPUT);
Serial.begin(9600);
delay(1000);
Serial.println("connecting...");
}
void loop(){
int reading = analogRead(sensorPin);
int voltage = reading * 6.5;
voltage /= 1024.0;
{
int temperatureC = (voltage - 0.5) * 10 ; //converting from 10 mv per degree wit 500 mV offset
/*inizio client*/
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
readString.concat(c); //store characters to string
if (c == '\n' && currentLineIsBlank) {
if(readString.indexOf("L=1") > 0) {
digitalWrite(led10, HIGH);
delay(1000);
digitalWrite(led10, LOW);
digitalWrite(led9, HIGH);
delay(1000);
digitalWrite(led9, LOW);
}
if(readString.indexOf("L=2") > 0) {
digitalWrite(led8, HIGH);
LEDON = true;
Serial.println("Led 2 acceso");
//accende il led
}
if(readString.indexOf("L=3") > 0) {
digitalWrite(led8, LOW);
LEDON = false;
Serial.println("Led spento");
}
if(readString.indexOf("L=4") > 0) {
digitalWrite(led7, HIGH);
LEDONn = true;
}
if(readString.indexOf("L=5") > 0) {
digitalWrite(led7, LOW);
LEDONn = false;
}
if(readString.indexOf("L=6") > 0) {
digitalWrite(led6, HIGH);
LEDN = true;
}
if(readString.indexOf("L=7") > 0) {
digitalWrite(led6, LOW);
LEDN = false;
}
if(readString.indexOf("L=8") > 0) {
digitalWrite(led6, LOW);
delay(250);
digitalWrite(led7, LOW);
delay(250);
digitalWrite(led8, LOW);
LEDN = false;
LEDONn = false;
LEDON = false;
}
if(readString.indexOf("L=9") > 0) {
irsend.sendRaw(Samsung,70,38);
irsend.sendRaw(dream,70,38);
irsend.sendRaw(box,72,38);
delay(1000);
irsend.sendNEC(0xA55A38C7,32);
irsend.sendNEC(0xA55A38C7,32);
delay(100);
}
// inizializzo pagina (da togliere se uso ajax)
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println( "<html>");
client.print("<head><title>FabryTerry Server Domotica</title> ");
client.println(" <meta name='viewport' content='width=device-width, user-scrollbar=no'>");
client.println("<script>");
client.println(" var d=new Date();");
client.println("document.write(d);");
client.println(" function myFunction()");
client.println("{");
client.println("onclick=location.href='/?L=1',alert('OK per aprire');");
client.println("}");
client.println("</script>");
client.print("</head>");
client.println(" <body bgcolor='#0099FF'>"); //inizio pagina
client.println("<button><p>Temperatura e' di ");
client.print(temperatureC);
client.println(" Gradi</button>
</p>");
client.println("<hr >");
client.println("<h3>Apertura</h3>"); //apricancello
client.println("<input type='button' onclick='myFunction()' value='Apri'>");
client.println("<hr >");
client.println("<h3>Rele' n. 1<h3><button type=button><a href='/?L=2'>Accendi</button><button type=button><a href='/?L=3'>Spegni</a></button>");
if (LEDON) {
client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
}
else
{
client.println("<span style='color:grey; font-weight:bold;'>OFF</span></font>");
}
client.println("<hr >");
client.println("<h3>Rele' n. 2<h3><button type=button><a href='/?L=4'>Accendi</button><button type=button><a href='/?L=5'>Spegni</a></button>");
if (LEDONn) {
client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
}
else
{
client.println("<span style='color:grey; font-weight:bold;'>OFF</span></font>");
}
client.println("<hr >");
client.println("<h3>Rele' n. 3<h3><button type=button><a href='/?L=6'>Accendi</button><button type=button><a href='/?L=7 '>Spegni</a></button>");
if (LEDN) {
client.println("<span style='color:green; font-weight:bold;'>ON</span></font>");
}
else
{
client.println("<span style='color:grey; font-weight:bold;'>OFF</span></font>");
}
client.println("<hr >");
client.println("<a href='/?L=10'>Accendi + cancello</a> "); // apricancello piu televisione e ampli
client.println("<h3><a href='/?L=9'>Accendi</a><h3> ");//solo accendi tv
client.println("<h3><a href='/?L=8'>Spegni Tutto</a> "); //spegni tutti i rele
client.println("</html>");
readString="";
//fermo il client
client.stop();
}}}}}}
=(