The big Maker Faire in San Mateo, California, is always a fascinating event and an excellent place to find out more about the current and next generation of devices on the market. One company I chatted to there, DFRobot, was unveiling its newest device, a Windows 10 Arduino-compatible single board computer.
If you've played with a Raspberry Pi, a Pine 64, or an Intel Edison, then you'll find the LattePanda a familiar form factor. It's a USB-powered board (be warned, you'll need a 2W USB PSU to drive the LattePanda) with Ethernet, USB 2.0 and 3.0 ports, HDMI video, and a set of GPIO ports that are driven by the built-in Arduino. Fire it up, and you're presented with a full-Windows experience, not the single app model of Windows 10 IoT Core.
That's because the LattePanda isn't using an ARM or an Edison processor: it's a full quad core Cherry Trail Atom processor, with 2GB or 4GB of memory, and a ATMega32u4 co-processor that handles the Arduino-compatible features, along with 20 GPIO connections for your sensors and actuators.
As it comes with a Windows image already installed on its SSD, you're ready to go once you've set up Windows. You'll need a USB keyboard and mouse; I ended up using a spare wireless keyboard/mouse combo, which dwarfed the computer, plugging the wireless adapter into one of the USB ports. Screen resolution is limited, so don't expect to use the LattePanda as a media PC; you're limited to 1024x600 resolution (which is a little on the small side for the Windows 10 UI).
While I used a HDMI monitor, there's also the option of buying a low cost 7-inch display with a touch overlay that connects directly onto the board. That makes the LattePanda a more interesting option, as it allows you to build it into a low-cost touch-enabled kiosk. Perhaps you could add a USB camera, and make it a digital doorbell with two-way sound, with the screen in the door and the device hidden away in the wall.
The key to LattePanda is the built-in Arduino-compatible co-processor. This is how it handles working with GPIO hardware. A connector block handles most of the IP connections, though there are also 6 3-pin blocks for use with DFRobot's Gravity sensor kits (similar to the pluggable Grove sensors from Seeed or Arrow's LinkSprite). Picking up a starter set of Gravity sensors makes a lot of sense, as it gives you a quick route to working with common sensors.
You'll find Arduino's development tools bundled with the LattePanda, including sample code you can quickly compile and run. There's also the option to use Microsoft's Arduino support (including its remote debugging tools) to work with the LattePanda in Visual Studio.
I'm not entirely sure whether Visual Studio is a practical tool for direct development on LattePanda; the screen resolution you get is too low, and the processing power of an Atom isn't quite what Visual Studio is written for. That said, there are plenty of other development options you can use, as well as using Visual Studio's remote debugging over the LattePanda's Ethernet or wireless connections.
Code needs to be pushed to the Arduino side of the board using a serial connection. That's a familiar approach for anyone using Arduino over USB, and at least here there's no need to configure serial ports -- you can push code as fast as you like. Visual Studio development can take advantage of remote wiring support, so you can embed Arduino code in your projects and build code that can take advantage of both sides of the LattePanda -- a Windows UI and an Arduino sensor and actuator code.
It's not a perfect solution, as you're limited to a serial connection between the two halves of the board. There are two Atom GPIO ports, but most of what you want to do will need to be handled by writing code on the Windows-side of the LattePanda, and then using the deployment tools in either Visual Studio or the Arduino IDE to push code to the Arduino and then run it separately from the Windows platform.
Keeping Windows and Arduino separate does have its benefits. While you're not getting the direct access to GPIO that you'd get with, say Windows 10 IoT Core and a Raspberry Pi, you are getting a combined development platform and IoT device. That's a big win, as you can write code on the LattePanda, push it to the Arduino, debug using Windows serial debugging tools, and then make and push changes on the fly.
Using LattePanda as an IoT development platform makes a lot of sense. While Atom might not have the power to handle a full Visual Studio install, you could pick and choose the elements you want to take advantage of its Arduino development and debugging features. Alternatively, as you're running a full Windows install, you could use Arduino's own IDE (which is bundled as part of the LattePanda's install image), and your choice of programmers' editor.
The result is a useful addition to the world of Windows maker boards. It's a more flexible device than the Raspberry Pi, and has the advantage of being directly Arduino compatible. It's also surprisingly low cost (especially if you use opt for the 2GB/32GB version which has a bundled Windows 10 license). If you're a Windows developer and you want to take a first step into the world of IoT, then this could well be the board for you.