I can write many pages about the selection of the central processor for my automation system. Windows is surely one of the best integrated platforms as far as software development is concerned. Ease of use, tool integration, plug and play, and I have licenses of Visual Studio and other development tools anyway. But there is a huge downside when it comes to small devices. I know C# and WPF and other tools on Windows quite well, but the overhead of the operating system makes Windows unsuitable for really small footprint solutions. Also cost is a factor for suitable boards and power consumption. Intel has a great little product with NUC and Asus and others jumped on the band waggon and created similar boards. Still they need quite a bit of power. The smaller boards usually only run Windows CE and here is where the problems starts. Libraries are not compatible, not all functions available and more. No wonder Microsoft has formulated the goal for Windows 10 to be capable of running on all platforms. We have to wait and see but surely I cannot wait for that. Either way, Windows has far too many overheads for a smaller embedded system and it was not really meant for that or was it ?
Android is another option. I have started to work with Android and done some graphic programming. The tank gauge gadget was done on Android Java. I plan to use a phone app as a remore control, or my Blackberry Playbook Tablet and have to deal with Android anyway, so I might as well use it for the server app. With the board selection I kept that option open, however latest test results have demostrated that Android has trouble dealing with both wired Ethernet and Wi-Fi at the same time. The architecture is not made for it. A bit short sighted, isn’t it.
My Linux knowledge is more than rusty, but that should not stop me to seriously look at using it as the main platform for my server app. Linux is the basis of so many embedded systems, like satellite receivers, DVRs, Smart Tvs and so on. It provide powerful Kernel functions as well as lots of utilities and communication. It has been around a long time and has a large developer community, which is an important aspect when one starts with a new project. Windows of course is hard to beat on that. Virtually any question one may have can be answered through a Google search and the dozens of websites dealing with all aspects of Windows and its tools.
I looked at various boards, and the Arduino or Raspberry level of boards looked ok for low level signal control but not really as a platform for a server or central control system. I also wanted the possibility of audio and video processing and wanted a little bit more CPU power without going overboard with DC power supply. I also wanted the option of an external ssd drive and a touch screen and not just a 7″ one.
All this and more I found in Udoo. This little board is made in Italy and Contains two processors sharing GPIO pins and allowing communication between them. The board runs Ubuntu (a Linux version) and also runs Android. The Arduino part can be programmed as any other Arduino Due, and the pins are compatible if one wants to use any Arduino shields.
The board has LVDS screen connection and Udoo offers a 15.6″ touch screen, which I ordered and use now. Unfortunately they do not have a case for the screen, so I will have to make a bezel for it. They also have a 7″ touch screen, but I prefer the larger one.
One can use a keyboard and a mouse if required, which is good for development, however with the final application I will only use the touch screen.
The board has also a Wi-Fi module which is lacking a bit of signal strenght, but if worse comes to worse I will use a wireless router to connect to the server from the Android phones, or I might use BLE. I have not reached that bridge yet.
The board is really small, the images to not really show that, however the heat sink radiates quite a bit of heat after a while. Will have to watch this when I mount it with the screen. The board has no local storage and the operating system is loaded onto a micro SD card, which is both boot device and external storage for the operating system. The sata connector allows a Sata drive to run as a boot device, which makes the hole system faster than running it from the SD card, although for my application the processor speed so far is ok. I have not done any video processing yet.