Mobile apps are an obvious choice for controlling IoT devices. Coupling intuitive interfaces with in-your-pocket convenience, apps are one of the easiest ways to manage connected equipment.
Writing a mobile app is not so easy. App design involves unique programming languages, user experience (UX) expertise, and other specialized proficiencies. Embedded engineering teams simply may not have requisite skill set.
While a team can always add mobile design to its skill set, doing so can be expensive and time-consuming. The payoff can also be underwhelming if the app is not executed properly.
Alternatively, such projects can be outsourced. But according to app development firm Savvy Apps, app development costs typically start around $50,000 USD, with pricing going up to $500,000+ USD. This overhead is a non-starter for many connected-device manufacturers.
Making Mobile Apps: The Basics
To understand the challenge, let's start by looking a typical workflow:
- Developing a mobile app for an IoT solution starts with identifying high-level use cases and requirements.
- From there, a design team creates a UX flow, outlining how end customers will interact with the connected product.
- After the design is ready, requirements and documentation are passed to developers who go about implementing them as a mobile app.
Adding complexity, iOS and Android are totally different in terms of development, and they require different skills. iOS apps are written with Objective C and Swift languages, whereas Android apps are written with Java.
This presents one of the first challenges in developing a mobile app for IoT devices, as OEMs must decide to support one or both platforms based on their target user base. This decision cannot be taken lightly, as once a platform is selected it must be supported for the lifetime of the connected-device deployment.
Additional Requirements: App Infrastructure
A mobile app also consists of two additional pieces of infrastructure: the firmware (in this context, the program that runs on the IoT edge device itself) and the cloud.
For a mobile app to be effective, firmware running on the target IoT device must connect with a cloud back-end and mobile app to deliver status updates and enable remote management. This is typically done through a suite of APIs and libraries, which vary based on the processor and other hardware involved.
Depending on app requirements – such as amount and frequency of data generated, security, or privacy concerns – the cloud aspect of a mobile-app deployment can be run in a publicly hosted cloud or in an on-premises server. Of course, this decision comes with trade-offs in terms of cost and engineering resources.
Connectivity is also a consideration when developing a mobile app. Engineers must account for how users will connect with IoT devices, for what purpose, and how frequently.
For instance, Wi-Fi is a standard method of connecting to the Internet and on to the cloud to interact remotely with devices from a server. But certain use cases in which users operate in close proximity to a device and have lower bandwidth requirements could make do with a connectivity technology like Bluetooth.
Drag-and-Drop Apps Increase IoT UX in a Flash
For OEMs looking to quickly add a functional mobile app to their IoT device capabilities, these elements can overwhelm available resources. Fortunately, there is another approach: template-based app tools. These IoT-specific tools provide a drag-and-drop approach that saves time and cuts costs.
The Blynk software platform from Blynk Inc. is a good example (Figure 1). This native mobile-app builder for iOS and Android allows developers to create branded apps and publish them to the App Store or Google Play in just a few clicks.
Blynk allows developers to "snap" together mobile UIs using a collection of widgets that serve different functions (Figure 2). For example, a widget can be a button that turns a light on or off, a chart that visualizes sensor data, a push notification triggered by certain events, and so on. This can all be developed directly from a smartphone.
On the firmware side, Blynk offers libraries and APIs to connect any MCU or single-board computer to the Blynk Cloud. These libraries and APIs are responsible for establishing a connection, sending, and receiving data. They are packaged as small pieces of code, leaving plenty of memory for other critical device functions.
Currently, Blynk supports more than 400 types of hardware and connectivity modules. These include numerous single-board computers (SBCs) based on Intel® technology, such as the ADI Engineering, Inc. MinnowBoard Turbot and the UDOO X86 from SECO (Figure 3).
On the back end, the open-source Blynk Cloud provides a secure, lightweight server that is free for all users of the Blynk platform. The public Blynk Cloud currently processes more than 33 billion messages per month. An instance of the Blynk Cloud can also be run privately depending on app requirements.
Importantly, an HTTP API allows data from other IoT clouds to be incorporated into Blynk apps. In this way, IoT OEMs can build comprehensive mobile apps that integrate information from other business systems and partners to enhance usability and UX.
The Blynk development platform is currently used by thousands of IoT products in markets, including smart home, agriculture, robotics, medical, and precision equipment monitoring.
To get a head start on the insight, UX, and ROI that mobile apps can provide, check out the tutorials and demo apps on the Blynk website.