Show Posts
Pages: [1] 2
1  Topics / Home Automation and Networked Objects / Re: Arduino Controller android app on: September 16, 2013, 12:51:23 am
that would definetly work on my intranet. The problem is that my isp uses NAT I think.

Sorry - I'm clueless here. Someone else will have to chip in...
2  Topics / Home Automation and Networked Objects / Re: Arduino Controller android app on: September 14, 2013, 02:15:19 am
its static 177.20.177.232

Okay that's good!

Though when I open ipconfig, I get 192.168.2.100.

This is your computer IP. Its not important in this case. What you will need is your Arduino IP (the one you have entered in your android app which works).

Now - I can help you set it up 90% of the way, but can't guarantee it will work - but if you want to give it a shot here's what you need to do.

In your android app, change the server to : 177.20.177.232
In your android app, change the port to : 5566 (this can be any free port, usually higher than 1024 and lower than 65xx?)

On your internet connection modem, go to the port forwarding option.
Forward the incoming port 5566 to the IP : <your current ARDUINO ip> and Port: 80

In theory this should work. Though it gets more complicated depending on your modem/router setup.

Let me know if it works.

cya
R
3  Topics / Home Automation and Networked Objects / Re: Arduino Controller android app on: September 13, 2013, 03:04:20 am
When I look up my ip on the internet, I get the ip from my web service, not my home ip. Is there a way to do portfowarding without asking the company to open one of their ports?

I can't give you the full answer (its tricky) but i can get you started.

Q1) Do you have a static IP for your internet connection? ie. check your internet ip, restart your router, check ip again - is it the same?

If its the same (static IP), good. If its not the same IP (dynamic IP), you have a problem.

If its a dynamic IP, there is a solution though: Does your router support "Dynamic DNS" ? (hopefully yes)

Reply with these answers and then we'll take it from there.

cya
R
4  Topics / Home Automation and Networked Objects / Re: Arduino Controller android app on: July 30, 2013, 11:48:05 pm
Now there is a new version with three seekbars.

Awesome!

Question: will upgrading delete/overwrite all my existing profiles?

Thanks,
R
5  Topics / Home Automation and Networked Objects / Re: Arduino Controller android app on: July 01, 2013, 12:49:53 am
nice application, can you control more than one arduino node or is planned this for next releases?

I don't know about the lite versions - you'll have to check.

The Pro version allows you to control 8 different arduinos (8 different profiles, each one can take a different web address/IP and port #).

cya
R
6  Topics / Home Automation and Networked Objects / Re: My 1st Home Automation system on: June 30, 2013, 11:49:42 am
For those of you who need a similar Android App - check this out :
http://forum.arduino.cc/index.php?topic=127770.0

This is exactly what my boyfriend wants to get into! His birthday is coming up, can someone tell me / direct me to what I need to buy to get home started? Please:)


cya
R
7  Topics / Home Automation and Networked Objects / Re: Arduino Controller android app on: June 30, 2013, 11:43:28 am
I'm putting the system to 32 outputs and had trouble setting from 5 out, because sending cmd "9" to turning on and cmd "10" to turning off it only sends the first character "1" and so turning on output 1 instead of turning off the 5.

See Reply #17 on page 2 of this thread. It has the answer you're looking for. I've used that and it works perfectly.

cya
R
8  Using Arduino / Programming Questions / Re: Problems with irsend.sendRaw / Sending RAW IR Code on: June 08, 2013, 10:56:22 am
Ha! Ekman, i fixed my problem, and i think it might fix yours too.

Basically the device i was sending the IR code to was too far away. I moved a lot closer, and it worked.

Now I'm looking into some way to increase the LED output using a transistor, as johnwasser as hinted at above.

cya
R
9  Using Arduino / Programming Questions / Re: Problems with irsend.sendRaw / Sending RAW IR Code on: June 07, 2013, 12:38:18 pm
Let me first say that i am an absolute beginner, but i have a similar problem and hence stumbled upon this thread.

In the code snippit directly above, the array is "32", but there are only 23 values in it??

cya
R
10  Using Arduino / Programming Questions / Re: Problems with irsend.sendRaw / Sending RAW IR Code on: June 06, 2013, 01:45:21 pm
I have been trying something like this to no avail….
irsend.sendRaw([7350 200 4800 200 4800 250 4800 200 4800 200 4800 250 4800 200 4800 200], 16, 38)

Hey ekman,

Two things:
1) The array needs to have the values separated by commas
2) The array should be declared outside of that command.

Here's a program i got from THIS BLOG : http://dduino.blogspot.in/2011/11/use-sonar-to-control-tv.html

Code:
#include <IRremote.h>
 
IRsend irsend;
 
// just added my own array for the raw signal
unsigned int powerOn[148] = {4400,4250,550,1600,600,1550,600,1550,550,1600,550,500,550,550,550,1550,600,500,550,500,600,500,550,500,600,450,600,1550,600,1550,550,500,600,1550,550,550,550,500,600,500,550,500,550,500,600,500,550,1600,550,1550,600,1550,600,1550,600,1550,600,1550,550,1600,550,1550,600,500,550,500,600,500,550,500,550,550,550,500,600,450,600,500,550,500,550,1600,550,1600,550,500,600,500,550,1600,550,500,550,500,550,550,550,500,600,500,550,500,600,450,600,500,550,500,550,550,550,500,600,1550,600,450,600,500,550,500,550,550,550,500,600,450,600,500,550,500,600,1550,550,500,600,500,600,1550,550,500,600,500,550,500,550,500,600};
 
void setup()
{
  Serial.begin(9600);
}
 
void loop() {
 
      // altered the code just to send/test my raw code
        irsend.sendRaw(powerOn,148,38);
        delay(2000);
}

NOTE that you'll have to change "148" to "16" in TWO places in the code...
Also, i hope you removed the first received raw value from the array (more info)
11  Using Arduino / Programming Questions / Re: Mitsubishi IR AC remote decoding Problem on: March 13, 2013, 11:48:39 am
Hey,

I'm currently going through the same thing of trying to emulate an AC remote control.

I found these two blog posts which might help:

Reading the codes:
http://dduino.blogspot.in/2011/11/improved-ir-code-reciever.html

Sending the codes:
http://dduino.blogspot.in/2011/11/use-sonar-to-control-tv.html

I haven't completely tried these - so do let me know if they work!


As some very helpful posters have mentioned earlier, the buffer limit on line 112 of IRremote.h need to be increased too.

Thanks,
R
12  Topics / Home Automation and Networked Objects / Re: Arduino Controller android app on: January 30, 2013, 02:58:31 am
in thise piece of code you can set two variable with you android app.

Thanks for the explanation! The app works superbly!!! THANKS AGAIN smiley

I've set it to control a servo (which will be connected to a dimmer). I'm sharing the code below just in case anyone else wishes to control a servo with the app. The relays/switches part of the code below is still incomplete, but the servo part works perfectly. I've also applied the code change to allow 2-digit codes, so make sure they are all 01, 02, 03 in your android app settings.

Currently you have 2 buttons "dimmer down" (04) and "dimmer up" (14) that you can use to move the servo by a pre-defined angle. It also disconnects the servo after 1 second of no command, to avoid unnecessary current draw/vibrations, and also let it be freely moveable to allow manual control of the dimmer.

I've not changed anything in the checkClient() function.

Next, i'll be adding an IR control smiley

Code:
/************ Marque's Arduino Controller Example ************/
/***********  for questions: marque.l@gmail.com  ***********/
/*
http://arduino.cc/forum/index.php?topic=127770.0

In the android app settingsscreen you can set up you IP and port.
For this example you need to call prefix 1 "B" and prefix 2 "C".
*/
#include <Ethernet.h>
#include <HTTPClient.h>
#include <SPI.h>
#include <Servo.h> // servo library added

//MARQUESOFT's CODE
int RecievedString;
int valueB;
int valueC;
String readString = String(20);

byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x9A, 0x4D };
EthernetServer server(80);   // port to listen on
EthernetClient client;

char content_main_top[] = "<body bgcolor=black><font color=white><center>";
char S1[] = "Globe OFF" ;
char S2[] = "Couch Lights OFF" ;
char S3[] = "Loft Lights OFF";
char S4[] = "Dim Globe";
char S5[] = "05";
char S6[] = "06";
char S11[] = "Globe ON" ;
char S12[] = "Couch Lights ON" ;
char S13[] = "Loft Lights ON";
char S14[] = "Brighten Globe";
char S15[] = "15";
char S16[] = "16";
char S404[] = "Not Found";


//DIMMER SETUP
Servo dimmerServo;  // create a servo object
int servoPin = 9;
int dimmerMax = 170; // the furthest the servo+dimmer goes anti-clockwise
int dimmerMin = 0; // the furthest the servo+dimmer goes clockwise
int dimmerIncrement = 10; // the step size for each button press
int dimmerVal = 0;
int dimmerValueShowPhone = dimmerMax - dimmerVal;
boolean detachServo = false; // note if the servo needs to be detached
long detachServoRequestTime = 0; //the millis at which detach servo was last requested

//RELAY SETUP



/************************** Setup **********************/
void setup()
{
  Serial.begin(9600);
  Serial.println("Getting IP......");
  Ethernet.begin(mac);
  Serial.print("My IP address: ");
  Ethernet.localIP().printTo(Serial);
  Serial.println();
  Serial.print("Gateway IP address is ");
  Ethernet.gatewayIP().printTo(Serial);
  Serial.println();
  Serial.print("DNS IP address is ");
  Ethernet.dnsServerIP().printTo(Serial);
  Serial.println();
}
void loop()
{
  checkclient();

  if (detachServo == true) { detachServoAfterDelay(); }
}

void checkclient()
{
  EthernetClient client = server.available();
  if (client)  
  {
    boolean sentHeader = false;
    while (client.connected())
    {
      if (client.available())
      {
        if(!sentHeader){
        client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          sentHeader = true;
        }
         char c = client.read();
         if (readString.length() < 20)
         Serial.print(c); //For debuggin in Serial Monitor window
         {readString.concat(c);}
         if (c == 'H')
         {
           Serial.println();
           int Is = readString.indexOf("/");
           int Iq = readString.indexOf("?");
           int Ib = readString.indexOf("b");
           int Ic = readString.indexOf("c");
           if(readString.indexOf("?") > 1)
           {
             if (Ib == (Iq+1))
             {
               char carray[5];
               readString.toCharArray( carray,5,(Ib+1));
               Serial.println(carray);
                valueB = atof(carray);
               Serial.print("B is now: ");
               Serial.println(valueB);
               client.print (content_main_top);
               client.print("B is now: ");
               client.print(valueB);
             }
            else if (Ic == (Iq+1))
             {
               char carray[5];
               readString.toCharArray( carray,5,(Ic+1));
               Serial.println(carray);
                valueC = atof(carray);
               Serial.print("C is now: ");
               Serial.println(valueC);
               client.print (content_main_top);
               client.print("C is now: ");
               client.print(valueC);
             }
             else
             {
               char carray[2];
               readString.toCharArray( carray,3,(Iq+1));
               RecievedString = atoi(carray);
               switch (RecievedString) {
               case 1: action(1, client);break;
               case 2: action(2, client);break;
               case 3: action(3, client);break;
               case 4: action(4, client);break;
               case 5: action(5, client);break;
               case 6: action(6, client);break;
               case 11: action(11, client);break;
               case 12: action(12, client);break;
               case 13: action(13, client);break;
               case 14: action(14, client);break;
               case 15: action(15, client);break;
               case 16: action(16, client);break;              
               default: action(404, client);
               }
             }
          delay(1);
             client.stop();
             readString="";
             client.read(); client.read();
           }
         if (Iq < 0)
         {
         action(404, client);
         delay(1);
         client.stop();
         readString="";
         client.read(); client.read();
         }
          delay(1);
         client.stop();
         readString="";
         client.read(); client.read();
       }
     }
   }
 }
}

void action(int x, EthernetClient client)
{  
  if (x == 1)
  {client.print (content_main_top);
   client.println(S1);
   Serial.println(S1);
  }
if (x == 2)
  {client.print (content_main_top);
   client.println(S2);
   Serial.println(S2);
  }
if (x == 3)
  {client.print (content_main_top);
   client.println(S3);
   Serial.println(S3);
  }
if (x == 4) // Dimmer Globe Down
  {client.print (content_main_top);
   client.println(S4);
   Serial.println(S4);
   dimmerDown();
   client.println(dimmerValueShowPhone);
  }
if (x == 5)
  {client.print (content_main_top);
   client.println(S5);
   Serial.println(S5);
  }
if (x == 6)
  {client.print (content_main_top);
   client.println(S6);
   Serial.println(S6);
  }
if (x == 11)
  {client.print (content_main_top);
   client.println(S11);
   Serial.println(S11);
  }
if (x == 12)
  {client.print (content_main_top);
   client.println(S12);
   Serial.println(S12);
  }
if (x == 13)
  {client.print (content_main_top);
   client.println(S13);
   Serial.println(S13);
  }
if (x == 14)
  {client.print (content_main_top);
   client.println(S14);
   Serial.println(S14);
   dimmerUp();
   client.println(dimmerValueShowPhone);  
  }
if (x == 15)
  {client.print (content_main_top);
   client.println(S15);
   Serial.println(S15);
  }
if (x == 16)
  {client.print (content_main_top);
   client.println(S16);
   Serial.println(S16);
  }
if (x == 404)
  {client.print (content_main_top);
   client.println(S404);
   Serial.println(S404);
  }
  
x=0;
}


void dimmerUp() {
  if (detachServo == false) { dimmerServo.attach(servoPin); } // only re-attach if its already been detached
  dimmerVal = dimmerVal - dimmerIncrement;
  if (dimmerVal < dimmerMin) { dimmerVal = dimmerMin; } // making sure it doesnt cross the minimum
  dimmerServo.write(dimmerVal);
  delay(10);   // wait for the servo to get there
  detachServo = true; // flags it to be detached after a few seconds
  detachServoRequestTime = millis();  
  dimmerValueShowPhone = dimmerMax - dimmerVal;  
}

void dimmerDown() {
  if (detachServo == false) { dimmerServo.attach(servoPin); } // only re-attach if its already been detached
  dimmerVal = dimmerVal + dimmerIncrement;
  if (dimmerVal > dimmerMax) { dimmerVal = dimmerMax; }  // making sure it doesnt cross the maximum
  dimmerServo.write(dimmerVal);
  delay(10);   // wait for the servo to get there
  detachServo = true; // flags it to be detached after a few seconds
  detachServoRequestTime = millis();
  dimmerValueShowPhone = dimmerMax - dimmerVal;
}

void detachServoAfterDelay() {   // timed detach for servo after dimmer up or dimmer down to prevent heat / fatigue / vibrations for the servo
  unsigned long currentMillis = millis();  
  if ( (currentMillis - detachServoRequestTime) > 1000 ) //time has passed
  {
    dimmerServo.detach();
    detachServo = false;
  }
}
13  Topics / Home Automation and Networked Objects / Re: Arduino Controller android app on: January 26, 2013, 08:52:50 am
SUPERB!!

Thank you Marque!!!

This is just what I needed. I just started on my room-automation project today, so I'm sure I'll come up with some suggestions soon enough smiley

I tried rating the app, but unfortunately i don't have a Google+ account as yet -- will get around to that soon!

Thanks,
R

PS - Though I've made some changes and its working great, i have no clue what the following code does. Could you please explain it to me in just a brief overview sentence or two? Thanks!
Code:
{readString.concat(c);}
         if (c == 'H')
         {
           Serial.println();
           int Is = readString.indexOf("/");
           int Iq = readString.indexOf("?");
           int Ib = readString.indexOf("b");
           int Ic = readString.indexOf("c");
           if(readString.indexOf("?") > 1)
           {
             if (Ib == (Iq+1))
             {
               char carray[5];
               readString.toCharArray( carray,5,(Ib+1));
               Serial.println(carray);
                valueB = atof(carray);
               Serial.print("B is now: ");
               Serial.println(valueB);
               client.print (content_main_top);
               client.print("B is now: ");
               client.print(valueB);
             }
            else if (Ic == (Iq+1))
             {
               char carray[5];
               readString.toCharArray( carray,5,(Ic+1));
               Serial.println(carray);
                valueC = atof(carray);
               Serial.print("C is now: ");
               Serial.println(valueC);
               client.print (content_main_top);
               client.print("C is now: ");
               client.print(valueC);
             }
14  Forum 2005-2010 (read only) / Troubleshooting / Re: 168 Programmer not responding on: January 28, 2007, 01:59:56 pm
Quote
Ya, I have the same problem. I tried burning the bootloader to a 168 with the microcontroller option set to 8 and it just returned a bunch of errors (no surprise). Do I need a new hex file or something?

Amsmnptarks,

I am an absolute newbie, and havent successfully flashed a microcontroller yet (which i am desperately tryng to! (atmel168))

But heres the little i know with regards to your question -
    Yes, you DO need a different .hex file.
    Secondly, i dont think you can just use the arduino IDE to flash a 168 on the 8 setting because of "fuses". (Fuses are the little settings on the chip "the closest thing a microcontroller has to a config file") eg. They enable you to select whether the chip uses an external oscillator or the internal oscillator. And my clueless guess is that they are at different memory addresses on different chips (atmega8 vs 168).
   Hence..you cannot fool the IDE to put a bootloader onto the 168 instead of the 8 just by replacing the .hex file.

Heres a really useful site which has helped me understand this a lot better - http://wolfpaulus.com/journal/embedded/arduino2.html - it also has a link to the .hex file for the 168.

cya
R
15  Forum 2005-2010 (read only) / Troubleshooting / Re: 168 Programmer not responding on: January 27, 2007, 07:55:52 pm
Quote
thanks for the fast reply! Most of the AVR-ISP's I found looked much more expensive than buidling the parallelprogrammer so I think I'll take that route. My (first of many) question is will the ICSP pins on the USB board still work with the 168? If not, can I just put it on a bread board and wire it up to the correct pins myself? Hopefully that's it. Thanks again!

Oh, but wait!

I tried doing this day before, but as soon as i switched the setting in the IDE from atmega8 to atmega168, the options for bootloading the chip (via programmer or Parallel port interface) both got greyed out!!

What am i missing?

Thanks,
R
Pages: [1] 2