K3IHI:
In a nut shell that is my overall goal. A complete stand alone module that can control lights. Next would be the I/o for pumps probes ect. I need to first figure out what I need to learn programming wise before I get in over my head too fast. So c++ and then I need to convert HTML a text language into c++ where next?
No - It's a little more complex than that.
First off - what do you mean by "communicate wirelessly with the Arduino"? Do you mean over wifi, xbee, some kind of RF module - something else? The choice there will determine how you communicate with it.
For example, using a wifi module would mean communicating via network message passing, whereas the latter two might mean using a serial port of some kind.
Know this may influence what language(s) you can use on the PC end of things (it may even determine what OS platform you can use; for instance, it is very difficult to perform 2-way serial comms under Windows - not impossible, but they don't make it easy for some reason, either - especially if using PHP); most languages have the necessary interfaces and libraries for both serial and network messaging, but you should plan this carefully.
Also note that once you even know that, you may also need to know how to set up and use a communication protocol to communicate with the Arduino. Fortunately, there are some good libraries out there for both ends (because you need to do this both on the PC side and the Arduino side) of the chain.
As far as programming is concerned, on the Arduino side, it's essentially C/C++; play around with the demos, read some tutorials, etc - but I wouldn't go "whole-hog" into in-depth C/C++ programming tutorials meant for the PC. C/C++ on a microcontroller (especially one like the Arduino where a lot of stuff has been abstracted away for you) is a vastly different beast from doing the same on the PC (mainly due to memory and other resource limitations compared to a PC). So - learning C/C++ programming for the PC may actually hinder your understanding of doing it on a microcontroller (and vice-versa, unfortunately). Keep the differences in mind, though, and you might find that even PC tutorials may be helpful for some things.
On the PC side of things, for a web application, your choices are much broader. I would -not- recommend attempting to do web development using C/C++; while it is possible, for the tasks you are facing it is very much overkill. I would actually say for your application, using PHP or Python (or even a combination) would be the best solutions. Another solution might be Processing (note that Processing is essentially C/C++, which may seem like I am contradicting myself - I only mention it, though, because it is an abstracted form of C/C++ much in the same way the Arduino platform is, which is why the Arduino platform was based on it; thus, it may be easier to learn both the Arduino and Processing in parallel - just something to keep in mind).
If you are windows-centric, there's also the possibilities of using Windows technologies (just be aware that you may limit yourself, and any future users of your system, by doing this). These would include ASP, ASP.NET, C#.NET, VB.NET - plus for DB stuff things like IIS/MSSQL or Access (you may also find connectors and ways to use open-source DBs like MySQL and Python).
At any rate, on the PC side (also note when I say "PC", I generally mean Windows, Linux, or Mac - but each has it own strengths), you'll need to learn a language for the coding of the web application that will communicate with the Arduino (in some manner - it may or may not -directly- communicate with the Arduino, or it may communicate with a service on the PC, which you would have to write, which would run in the background communicating with the Arduino; the advantage of this service method is that, if the service or your web app should fail, the whole thing wouldn't necessarily "freeze up" or otherwise totally fail - however, it is more difficult and complicated to implement). This web application would output (to the browser) an HTML page, which would display your information, and maybe have a form or two that you could submit data back to your web application, which would then act on it to send a message to the Arduino. It may also need to write this information out to a file, or to a database. So there are a couple more things to learn.
In short - here is a list of technologies you would need to learn:
C/C++ (for Arduino)
One or more of:
Processing (PC)
PHP (PC)
Python (PC)
ASP/ASP.NET/C#.NET/VB.NET (Windows PC)
For the web stuff:
A minimum of how HTML and CGI works
As well as (possibly) DHTML, Javascript, AJAX, POST/GET, etc.
...and a database (as well as how to write SQL), such as:
MySQL (PC)
PostgreSQL (PC)
IIS/MSSQL or Access (Windows PC)
...and/or:
General file handling (reading and writing files with the language on the PC you use), and serial or network communications and message passing.
Not too mention all the hardware interfacing and electronics. Also - I am sure I forgot something along the line here; everything written above is a very simplified list - there's much more to learn than just the languages and the syntax of them. You'll also have to understand synchronous vs asynchronous communications, event driven vs polling design, stateful processes (as well as how and why web applications don't hold state between requests, what that means, and how you work around it)...
As you can see - this is hardly a beginner's project. But, if you take it one bit at a time (while taking your time, asking questions, and gaining understanding), you can come up with a working system in the end. Just don't let the "grand scope" overwhelm you. Instead, start with the basics (the Arduino, and simple serial communications via the virtual USB serial port) to get a feel for the hardware end of things, and simple messaging via serial (and the terminal). Then you can move on to the PC side of things, and work your way around over there.
Good luck with your project!
