2

I'm new to Arduino so please bear with me if my question is too simple or broad (I did try and research it) or guide me if it belongs elsewhere (networking forum?)

I would like to be able to control my Arduino remotely. By remotely, I mean I would like to be able to access it over the internet. I've done some research and know about the Arduino Ethernet Sheild (see: How can I connect to an Arduino using WiFi?)

But I'm a newbie and it's not clear to me how I'm going to make my device "discoverable" from outside my local network. I gather it involves "opening a port on my router" Can someone expand on this or provide an example/tutorial? If I can do this, it would also be nice if there was some security so that not just anyone could control my robotic killer dog or whatever :). I would think these are both common desires, and there is probably tons of material (maybe even tutorials) but perhaps because I'm new to Arduino, I'm having a hard time finding material.

I thought a nice first step would be to have my Arduino Uno board connected to a single LED. If I could then have a simple webservice on it, I could connect via my phone from work with a http post request. Of course, I'd need someone at home to verify the led went on/off (or set up a camera for remote access).

Let me know if I can provide more detail or clarifications. And Thank you!

Dave

  • The same way you would access a server on your PC. You need to forward a port on your router and if you have a dynamic IP, you would want to make use of a DDNS service. – gre_gor Sep 27 '16 at 23:42
  • But this isn't really an Arduino problem. You should probably look into some standalone ESP8266 modules (Wemos d1 mini, NodeMCU) and use them without an Arduino. You can program them the same way as an Arduino. They are faster, but have some differences (no analogue input, 3.3v) – gre_gor Sep 27 '16 at 23:55
  • @gre_gor an ESP8266 does indeed have some advantages, but they are not relevant to this problem. Switch to an ESP8266 and this problem - which is not an Arduino problem - remains. Realistically putting holes in the firewall and dynamic DNS are dubious solutions; much better to use an external server as an intermediary. – Chris Stratton Sep 28 '16 at 2:04
  • Pagekite might be a solution for you. – Gerben Sep 28 '16 at 8:13
  • 1
    Yes you can forward a port and do DDNS, but personally I think its opening up a whole world of grief. How long is it going to take some one to hack your Arduino, the security isn't exactly top notch is it? So what about creating a web service on a web server and then getting you Arduino to poll that webservice at intervals – Code Gorilla Sep 28 '16 at 13:16
0

The easiest way to do this is to use Blynk, an Internet Of Things (IoT) web service that includes an Arduino library, apps for iOS and Android, and a central server that the smartphone app and the Arduino both connect to. Since both connections are outgoing (and matched up by the Blynk server), each one works just fine from behind NAT routers without any ports needing forwarding. See Blynk's demo video for how to create a basic working app in 5 minutes (including your described LED controller and much more). Ok, I'll admit that starting from cold, it takes most of us a little longer than 5 minutes to get it going, especially if you like to read about and understand what you're doing as you do it. But it will still be minutes, not hours. This is the quickest, most painless way to get an IoT device up and running.

That basic app (which can read & write to ports, PWM, and A/D) is then extensible to work with your own code & hardware. The functions available lend themselves to just what you are looking to do, with the possible exception of uploading the images it takes. And the Arduino itself isn't really well suited to that task, given its memory constraints.

Update: I use the ESP8266 like the one you linked to. They're cheap and easy to use but with a gotcha: they are 3.3v only on both power & signal lines, which can be a challenge when working with a 5v MCU board. Here's how to wire one up for a 5v Arduino. Note the dedicated 3.3v regulator; the Arduino's on-board 3.3v supply isn't sufficient for an ESP8266:

enter image description here

For quick & dirty, you can wire this up on a breadboard. Ultimately you'll want something more stable (mechanically) than breadboard wiring. I made up a few 5v ESPs on strip-board (aka Vector board or Vero board), but that's another project:

enter image description here

--

** (Disclaimer: I have no connection to the organization other than as a happy user/experimenter.)

  • Thanks JRobert for the idea. I'm actively pursing it. As this is a hobby for me, it might take some time :) May I ask, do you use an Arduino Wi-Fi shield or something else? I notice the shield is quite expensive for a student. I did come across this (which is mentioned in comments above) WiFi Module - ESP8266 (sparkfun.com/products/13678). I'm not sure how easy it is to use with Arduino though... – Dave Oct 4 '16 at 22:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.