Save

Save

Save

Save

  Smart.IO forum is now live. Click here to enter the forum. Smart.IO is great for prototyping, as well as product realization.

Download the Smart.IO slide show presentation here.

Smart.IO: the Modern GUI for Your Embedded Tech

Create an App UI in a few lines of embedded code

Embedded prototyping - or even embedded products, and "elegant and useful UI", are usually not mentioned in the same sentence. Embedded technology has typically been hampered by “old school”-looking hardware UI with limited functionality (a tiny LCD screen, limited commands, and a few buttons which invoke different commands depending on the sequence in which they are pressed). This "primitive" hardware UI has required accommodation in the physical appearance of each device.

Smart.IO was successfully funded as a KickStarter project. It is inexpensive and even less costly when purchased in bulk. Smart.IO is now shipping. READY TO BUY? Click here

It is clear, however, that App UI is the wave of the future. With the rise in popularity of smartphones, providing an App for your embedded products will soon be a necessity, not just a "checkbox on your wish list".

Figure 1: An app-based UI for even a simple "smart wall plug” is more accessible and easier to use than multi-function buttons and small LCD


Traditional app design methods have involved choosing and designing custom wireless technology on a per-individual-product basis, and have required hardware and software designers who are experienced in both wireless and app design. These, of course, have added to the development time and cost. Moreover, if you are just doing prototyping or creating hobbyist projects, it is impossible to justify the costs involved in creating an app UI.

Smart.IO is a game-changer for creating app UIs. Its key features are:

  1. A firmware-created UI which runs on both iOS and Android devices with no app coding.
  2. A complete single module BLE module with SPI interface. No BLE coding necessary.
  3. An easy-to-use software API.  You only need to port the Host Interface Layer to your MCU compiler system. (Standard C source code provided for easy porting)
  4. Simple-to-create device-independent UI which looks good regardless of the target screen resolution.
  5. Access to native OS features such as touch controls, a virtual keyboard, etc.

Figure 2: The Smart.IO hardware module, measuring 15mmx25mm (Version 1)


In a nutshell, the embedded firmware calls the Smart.IO API functions, which are then interpreted by the app to create the UI as instructed by the API calls.

Smart.IO is great for prototyping and for small-volume products, as well as mass production. Once the hardware is designed into a prototype and the embedded firmware is modified to work with the Smart.IO API, then you only need to install a free Smart.IO app to control the device.

Smart.IO API includes advanced features such as automatic enabling/disabling a UI control based on the state of another UI control. In this example, while it may be hard to see on the screen caps, the slider control is a lighter shade on the first image and is disabled (i.e. it cannot be changed) since no item is selected in the expandable list. In the second image, the user selects an item and the slider can be adjusted. This coupling is done once by the host MCU firmware and does not require any other host MCU processing.

       


For volume production, we offer volume pricing. In highly pricing-sensitive applications, you can incorporate the Smart.IO components directly onto your PCB and license our IP, both reducing component costs and saving space in the design.

Software-wise, the app can be modified to display your custom logo and company brand (e.g. end users would install an “Acme gadget controller” rather than the generic Smart.IO app). For even more complete customization, we can modify the app and use only your custom logos and graphics, effectively giving you a full custom app for significantly less cost than the time and money that would otherwise be spent developing an app solution from scratch, while getting your products out to market much faster.

For more information, please see this documentation page https://imagecraft.com/documentation/smart-io-documentation or email us at This email address is being protected from spambots. You need JavaScript enabled to view it.

Smart.IO is inexpensive and even less costly when purchased in bulk. Smart.IO is now shipping. READY TO BUY? Click here

Free iOS and Android apps:  the free Smart.IO apps, available on Apple App Store and Google Playstore, can be used with any Smart.IO-enabled devices. An app user may enable caching for faster UI startup time for $4.99 (in-app purchase). We can provide customized app for a vendor-specific device. Email is This email address is being protected from spambots. You need JavaScript enabled to view it.for details.

Here's a quick basic demo:

Finally, the UI in figure 1 is done using the following code fragment, no other code is needed other than the callback functions to handle user input.

 SmartIO_AppTitle("Smart Wall Plug");
tHandle p1 = SmartIO_MakePage();
tHandle h1 = SmartIO_MakeOnOffButton(0, 0, 1, Button1);
SmartIO_AddText(h1, "Power");
SmartIO_SetSliceIcon(h1, SMARTIO_ICON_POWER);
tHandle h3 = SmartIO_MakeSlider(1, 0, 30, Slider1);

SmartIO_MakeSpacerSlice(2);
tHandle tl0 = SmartIO_MakeLabel(0, 1, "Auto On/Off Schedule");
tHandle tl1 = SmartIO_MakeLabel(0, 0, " Weekdays");
tHandle th1 = SmartIO_MakeTimeSelector(0, 1, "17:00", ts1);
SmartIO_AddText(th1, "ON at");
SmartIO_SetSliceIcon(th1, SMARTIO_ICON_QUERY);
tHandle th2 = SmartIO_MakeTimeSelector(0, 1, "12:00", ts2);
SmartIO_AddText(th2, "OFF at");
SmartIO_SetSliceIcon(th2, SMARTIO_ICON_QUERY);
SmartIO_GroupObjects(0, tl1, th1, th2, 0);
SmartIO_MakeSpacerSlice(1);

tHandle tl2 = SmartIO_MakeLabel(0, 0, " Weekend");
tHandle th3 = SmartIO_MakeTimeSelector(0, 1, "18:00", 0);
SmartIO_AddText(th3, "ON at");
SmartIO_SetSliceIcon(th3, SMARTIO_ICON_QUERY);
tHandle th4 = SmartIO_MakeTimeSelector(0, 1, "1:00", 0);
SmartIO_AddText(th4, "OFF at");
SmartIO_SetSliceIcon(th4, SMARTIO_ICON_QUERY);
SmartIO_GroupObjects(0, tl2, th3, th4, 0);
SmartIO_MakeSpacerSlice(3);
SmartIO_AutoBalance(p1);