Skip to content

15. Interface and application programming

Group assignment

  • Compare as many tool options as possible.
  • Document your work on the group work page and reflect on your individual page what you learned.

Tool options

There are a multitude of possible interfaces and languages for programming. Work in the individual pages barely scratched the surface of what is possible. In that regard, it is nearly impossible to make a quick comprehensive view of the wide variety of options. Often, a programmer has a few preferred languages and tools, and most of their work is concentrated in their preferred subset of tools. This is in no way a limitation, as there often are many different ways to accomplish an interface and program with no one “right” way.

In his lecture, Neil quickly mention the variety of tool options, breaking the discusion with areas of languages, device interfaces, data interfaces, user interfaces, graphics, audio/vido, VR, math, performance, machine learning, deployment, and security. Achieving a program and interface usually requires synthesizing work from multiple of these areas. Even the “simple” web interfaces used in the individual work for the week includes programming in C++, web encoding in HTML, and styling with CSS.

For computer languages, there are many different possibilities. Over time different languages are constantly being developed. And there certainly are trends in popularity. For example C was developed in the 1970s, and is a good general purpose language. This was extended with Object-Oriented programming in the C++ language. While generally useful, these languages require careful memory management, as bugs leading to buffer overflow can be a security risk.

Java was developed as a general-purpose language with memory safe object oriented programming. One advantage is that programs are meant to run on all platforms that support the Java. First released in 1995, this has been an extremly popular language, particularly in the early development of apps on the internet.

More recently, with the ubiquitousness of the internet, many options of languages better suited to this environment have gained popularity. Notably Javascript is a language that can add interactivty and dynamic behaviour to web pages. It also can be used to power server-side applications and is a core technology of the contemporary internet.

In modern computing and analysis, there is a prevelance of data. Python is very popular for data analytics, particularly in the realm of machine learning and artificial intelligence. This language is well suited to data manipulation, and there many popular packages which supplemented Python. As a scripting language, things written in pure Python may have signficant overhead, but many of the packages which can be run are more efficient. This language is currently very popular first language to learn. It has a very readable syntax.

Beyond specific languages, there are a multitude of tools and protocols to interact with devices. For example USB, I2C, and serial interfaces are all tools that have featured heavily in this course.

Even after having a language, and a method to interface with a device, one typically needs a method to interface with a user. Again there are many possible options. Many can be written in a manner that allows them to be presented in a webpage. However, stand alone programs are often the chosen way. There are many tools here, often ones that allows programming interfaces for mobile devices as well as larger computers.

In no way can any one person be knowledgable about all the options, though one should also be ready to explore different possibilities. Mastery of a specific set of tools shouldn’t stop one from exploring other tools, particularly when one reaches the limits of specific tools

It is good to follow resources which can present and point to many options. Neil’s lecture and the notes for the week are certainly an excellent starting point to expand beyond what we have learned in the course.

Specific Investigations

While the range of options is wide, we did some investigations to better understand what is possible, and how to go about it. We specifically concentrated on some options for the user interface.

Blynk

Blynk is a popular platform for developing mobile and web interfaces to control and monitor IoT (Internet of Things) devices. It allows for building interfaces using widgets (buttons, sliders, graphs, etc.) without coding the UI. Developed apps can support multiple platforms, including iOS, Android and web interfaces. Blynk relies upon a proprietary cloud back-end for communication and data storage.

The advantages of Blynk include fast development, cross-platform development, and minimal code requirements. The Blynk cloud integration alleviates any need to set up cloud services. There is a large user community, and abundant documentation.

Certain cons of Blynk can be noted. The cloud dependency can be problematic, as loss of internet can impact functionality. There is limited ability to customize the UI. While there is a free layer, commercial use can become expensive. Once developed with Blynk, the system has lockin and migration away is complex.

Thingsboard

ThingsBoard is an open-source IoT platform designed for device management, data collection, processing, and visualization. It provides end-to-end infrastructure for building robust IoT applications, both in the cloud and on-premises. Key features include device management, strong security controls, and flexibility.

The advantages include scalability, flexibility, open source community edition, and an active development community. For disadvantages, there can be a steep learning curve due to a complex architecture. Additionally, there can be heavy resource requirements for large-scale deployments. There is limited mobile support, as available mobile-friendly dashboards are not optimized for app-like experience.

Firebase

Firebase is a Backend-as-a-Service (BaaS) platform developed by Google that helps developers build and scale web and mobile applications quickly. It offers a suite of cloud-based tools including databases, authentication, hosting, cloud functions, analytics, and more — tightly integrated and accessible through SDKs and APIs. Key features include a realtime NoSQL database, cloud storage, and secure Firebase web hosting.

Strengths include a comprehensive set of tools including most services that might be needed. Rapid prototyping and cross-platform development are also advantages, and also configurable strong security rules.

Weaknesses include strong vendor lock-in marking migration difficult. While there is a free tier, costs can rise sharply. Complex features can be tricky for beginners. The realtime database is difficult to query.

Node-RED

Node-RED is a low-code, flow-based development tool for wiring together hardware devices, APIs, and online services. Developed by IBM and built on Node.js, it’s especially popular for IoT, home automation, rapid prototyping, and workflow orchestration. Key features include a drag-and-drop programming interface and a range of deployment options (including Linux, Window, Raspberry Pi, and cloud).

Advantages include low (or no) code, which make it good for non-developers. It is open-source and free and also has rapid prototyping. It is easily extended with Javascript.

A disadvantage is that Node-RED is not suited for complex apps, and security is not turnkey. There is limited mobile UI.

Comparison

Comparing these specific options, the follow summary can be made.

Platform Type Open Source Best Use Case UI Capabilities Scalability Ease of Use Offline Support
Firebase Backend-as-a-Service No Mobile/web backend, real-time sync, auth Limited (no-code dashboard tools) High Medium Yes (Firestore)
ThingsBoard IoT Platform Yes Industrial IoT device/data management Custom dashboards, but limited mobile UX High Low Partial (Edge support)
Node-RED Flow-based Programming Tool Yes Automating device workflows, data routing Web dashboards only (basic UI) Medium High Yes (local deploy)
Blynk IoT App Interface Builder Partially Mobile IoT control panels, DIY apps Drag-and-drop mobile UI builder Medium High Limited

This overview has focused on UI options, and there still are many more to choose from in this area. The summary of these options was made with the help of ChatGPT. AI chatbots are well suited to making summaries, as well as asking about alternatives. (Though one always needs to be sure the AI is not hallucinating.)

Comparison of Arduino IoT Cloud, Adafruit IO, and ESPHome

📝 Summary

These three platforms are popular for managing and visualizing data from IoT devices like ESP32 and Arduino boards, but they serve slightly different purposes:

  • Arduino IoT Cloud is an online platform developed by Arduino for building and managing Internet of Things (IoT) projects. It allows users to easily connect Arduino-compatible devices (like Arduino boards, ESP32, and ESP8266) to the internet and control them remotely via dashboards, mobile apps, or third-party integrations. And is designed to work seamlessly with Arduino boards and offers device management, dashboards, and code auto-generation.
  • pros
    • Beginner friendly interface
    • Native support for Arduino and ESP devices
    • intergrated developer envirnment
    • Quick set up with examples
  • cons
    • Limited features on the free plan (2 devices, limited storage)
    • Mostly cloud-dependent (not ideal for offline or local-only use)
  • Adafruit IO is a cloud-based Internet of Things (IoT) platform created by Adafruit Industries. It allows users to connect hardware devices to the internet, store and visualize data, and control devices remotely. It’s designed with ease-of-use and flexibility in mind, making it ideal for prototyping and educational purposes. And is a general-purpose IoT platform ideal for rapid prototyping, supporting many hardware types with a strong focus on visual dashboards and MQTT.
  • pros
    • Simple and user-friendly for beginners
    • Very flexible with hardware and protocols
    • Strong visualization tools
    • Reliable MQTT support
  • cons
    • Free plan has limitations (30 data points/min, 30 days storage, 10 feeds)
    • Requires manual coding and setup for complex projects
    • Cloud-only (no native offline/local mode)
  • ESPHome is an open-source system for controlling ESP8266 and ESP32 microcontrollers using simple YAML configuration files. It’s designed to integrate seamlessly with Home Assistant, making it a top choice for DIY smart home automation. Unlike other IoT platforms, ESPHome focuses on local control and does not rely on cloud services. And is tailored for home automation, integrates directly with Home Assistant, and is excellent for people looking to automate their homes without writing much code.
  • pros
    • No cloud needed – works locally (great for privacy and speed)
    • Seamless Home Assistant integration
    • Easy to use, even without programming skills
    • Stable and lightweight firmware for ESP devices
  • Cons
    • Designed specifically for smart home use — not general-purpose IoT
    • Requires a bit of setup to flash devices the first time
    • Limited without Home Assistant

📊 Comparison Table

This comparison table is made with help from chatgpt

Feature Arduino IoT Cloud Adafruit IO ESPHome
🧠 Ease of Use Beginner-friendly Very easy Extremely easy with Home Assistant
🔧 Hardware Support Arduino, ESP32, ESP8266 ESP32, ESP8266, Raspberry Pi, etc ESP8266, ESP32
💻 Programming Needed Yes (Arduino Sketch) Minimal (Arduino, Python, MQTT) Very little (YAML-based config)
📡 Communication MQTT, REST API MQTT, REST API Native API + MQTT
📱 Dashboard Customizable, clean UI Highly customizable Integrated with Home Assistant
🧩 Integration Alexa, Google, Webhooks IFTTT, Zapier, Webhooks Full Home Assistant integration
🔒 Security TLS, Auth Tokens API Keys, OAuth2 Local network, secure with HTTPS
💸 Free Plan Limitations Limited devices and storage Limited data rate and feeds Free and unlimited (local use)
☁️ Hosting Cloud-based (Arduino servers) Cloud-based (Adafruit servers) Local (your own Home Assistant)
🧑‍🔬 Best For Arduino beginners & hobbyists IoT dashboards, prototyping Smart home automation

🏁 Conclusion

  • Use Arduino IoT Cloud if you’re using official Arduino hardware and want a polished, beginner-friendly IoT experience.
  • Choose Adafruit IO if you want flexible dashboards and quick prototyping with multiple device types.
  • Go with ESPHome if you’re building a smart home with Home Assistant and want minimal code setup.