Druid provides a custom graphical interface for embedded devices (Arduino, nRF, Raspberry Pi and more).
The developer decide which commands/inputs/graphs are present, using the online builder,
and completes the project by filling in the generated source code as required, using their regular tools and IDE. Druid handles display (on desktop and mobile) and communications (through USB serial or wireless.)
Brewing up the “Device Druid Experience” means getting a bunch of different parts talking to each other smoothly and happens in six steps, some of which involve the developer while others are automated behind the scenes.
A developer uses Druid Builder to visually construct the user interface, organizing commands, input controls and menu structure. Then she may use the Code tab in Builder to customize the experience, adding in application specific functionality.
When everything’s setup and ready to test, the project is exported to the Druid code generation wizard with the click of a button. The generator ensures everything is in order and lets Builder know that the project has been queued.
3. Brewing Code
The generator hands off the job of transforming the project specification into working code to one of its worker wizards, a process running on a different server.
The worker is responsible for creating a program that will compile, that includes all the custom code in the project as well as all the configuration and setup of the SerialUI back-end. When it’s done, it will test the result to see if it can figure out whether anything is wrong with the program and produces a report for the generator.
After a bit, the project is ready and delivered back to the developer. The report is presented, along with the opportunity to get a zip file containing the project code.
After optionally doing more customization, the code is combined with the SerialUI library to produce firmware and installed on the target device.
6. Device Druid
With the program running on an embedded device, say an Arduino Uno as depicted above, someone connects using Device Druid. The dev’s interface is presented and all the functionality is available through the GUI.
The Druid ecosystem is comprised of a number of core technologies and many supporting components.
The core functions of the generator and its wizards are mostly based on Python but leverage a whole lot of functionality from web servers, message queues, databases etc.