Before starting any of the posts regarding the development process, some research needs to be done in order to see if the product is really needed by anyone. Spoiler: this will be quite a long post.
Market analysis is an insight tool
Most projects here focus just on the implementation of the idea they're based upon. Even so, the target audience can have important leverage on what your product should behave. Without a client for your product, you're left with an object in which you invested precious development time. It's important to gather feedback from similar products so we can know what to improve.
As for this module, I want it to be connected to a fast moving robot, but other people may need it for totally different reasons. It's easy to be selfish and optimize the hardware for your own usage, but it will reduce the number of potential customers.
Problem solving while finding your audience
Let's say you have one of the popular WiFly module on hand, and with the help of an Arduino you want it to transmit data with as less delay as possible to a screen. Making an event based, simple HTTP request seems to be hard because of the examples provided and the number of lines of code you have to write. Let's list the major drawbacks and see where the AirCore module needs to improve:
- Confusing hardware interface and setup
- Programming is complex and time consuming
- Overhead: microcontroller manages most of the protocol connection
- Compatibility depends on the protocol you use
Similar implementation using Bluetooth. Image courtesy of Adafruit
Confusing hardware interface and setup
Anyone who's got an Arduino knows what an UART or serial connection and has probably used an FTDI or CP210x module before. This has the advantage of being mainstream and straightforward because its used to program the Arduino Pro Mini's. There are only six pins on this interface, so it makes it a perfect candidate as the AirCore connector. Also, shiny breadboard friendly.
Programming is complex and time consuming
To program the Arduino and WiFly to fit your needs, you need to have a knowledge base about microcontrollers, WiFi, HTTP and TCP. This is pretty much overwhelming just for sending some data, and I don't know a lot of people which can do it. So, the module needs to manage that overwhelming part in order to win some points. Familiarity is the key here: the module should be configured like a WiFi router.
Image courtesy of O'Reilly
Overhead is the most frustrating thing you encounter when using a WiFi module. You have to handle the protocol connection on your microcontroller, and it's often hard to do and not easily portable to another platform. Let's say I wrote my code and it works great on an Arduino, but if I wanted it on an ARM or Edison board, I need to rewrite. That's no a simple solution.
Removing this overhead is the main purpose of the AirCore module. What if we can handle all the protocol details on the WiFi module and leave the microcontroller in peace because it has other things to do. This way, the only thing you need to worry about on your Arduino is spitting and receiving data from the serial pins solving the portability problem.
Compatibility depends on the protocol you use
Whenever you have incoming data over the internet, it needs to decode and process that information. TCP or UDP are raw connections, and if you didn't care about them when connecting AirCore module to your microcontroller, you certainly don't want to hear about them now.
To be as Plug And Play as possible, the AirCore will use WebSockets. They're great and they have tremendous support. Every browser supports them, and you have a browser on your phone, computer and tablet.