Week 14. Interface and application programming

  1. 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.
  2. Individual Assignment
    • Write an application for the embedded board that you made. that interfaces a user with an input and/or output device(s)

Group Assignment – Interface and Application Programming

Objective

This week's group assignment focused on comparing three different tools used to create user interfaces for interacting with embedded systems. The aim was to evaluate each tool’s strengths, weaknesses, and applicability in educational or prototyping contexts.

Tools Compared

Tool Type Strengths Limitations Device Used
MIT App Inventor Visual (Mobile) Easy to learn, ideal for beginners, fast prototyping Limited design flexibility and professional polish ESP32
Blynk IoT Dashboard Widget-based, fast connection, supports sensors & GPIO Requires internet (for cloud), limitations in free tier ESP32
Flutter Cross-platform App Beautiful, customizable UI, full control Higher complexity, requires Dart and setup ESP32

Key Findings

  • MIT App Inventor is perfect for quick prototyping, especially for educational use. It allowed us to build a Bluetooth interface quickly and with minimal coding.
  • Blynk is highly effective for IoT applications. It has ready-made widgets for buttons, sliders, and sensor displays, making it easy to create functional interfaces without writing much code.
  • Flutter offers the highest degree of control and design quality, suitable for creating professional-grade apps. However, it has a steep learning curve and requires prior programming experience.

Conclusion

Each tool serves a specific purpose. App Inventor is best for rapid, low-complexity projects. Blynk is optimal for connected IoT dashboards. Flutter is powerful for developers who require fully customized, scalable apps. As a group, we understood that choosing the right interface tool depends on the user’s experience level, the project’s scope, and the desired user experience.

Individual Assignment – Interface and Application Programming

Objective

The goal of this project was to develop a mobile application that communicates with an ESP32 board via Bluetooth. This interface allows the user to control a servo motor, acting as a mechanical actuator that could perform movements like opening a gate or controlling an animatronic element.

Mobile Application – App Inventor

The mobile interface was created using MIT App Inventor. It includes:

  • A connection status indicator (connected/disconnected)
  • A button to send the activation signal
  • The FABLAB Indoamérica logo
  • User info and reference to Fab Academy 2025
App interface screenshot
Figure 1. App interface with connection status, activation button, and institutional branding.

Programming with App Inventor

The app logic was implemented using visual blocks that:

  • List paired Bluetooth devices
  • Connect to the selected device
  • Update the label to show "CONNECTED" with a green color
  • Send the character '1' when the user presses the button
MIT App Inventor blocks
Figure 2. Logic blocks for Bluetooth connection and command transmission.

ESP32 Code

The ESP32 board runs Arduino code that:

  • Initializes the servo motor on pin 4
  • Starts Bluetooth communication
  • Listens for incoming characters from the app
  • Moves the servo to 180° and returns to 0° with timed delays
ESP32 Arduino code
Figure 3. ESP32 code using BluetoothSerial and ESP32Servo libraries to control the motor.

Workflow Summary

  1. The user opens the app and connects via Bluetooth
  2. Pressing the button sends '1' to the ESP32
  3. The ESP32 receives the signal and activates the servo motor
  4. The movement is repeated with delays and can be triggered again

Conclusion

This assignment demonstrated how to connect user interfaces with embedded systems through Bluetooth. By using App Inventor, the mobile UI was easy to build and test, while the ESP32's behavior showed how simple commands can activate precise physical movements. This project builds a foundation for more interactive systems in the future.

Week 14: Conclusion

Week 14 provided a practical understanding of how to build user interfaces that interact with embedded systems. Through the group comparison and the individual project, we explored key tools like App Inventor, Blynk, and Flutter. This experience reinforced the importance of selecting the right platform based on complexity, usability, and project needs. It was a key step in connecting programming, design, and physical computing.

Resource Download

Click the button below to access and download all available materials.

Download Resources