Interface and Application Programming¶
In the context of this week’s assignment, our group (Julian, Kerstin, Lars) collaboratively explored and compared a range of tools and frameworks suitable for creating graphical user interfaces (GUIs) that can interact with microcontrollers or embedded systems. The goal was to identify flexible, well-documented, and accessible tools that can be used to build interfaces for applications in the Fab Lab context.
We focused our comparison on tools that offer a variety of features, such as graphical and classic interfaces, support for serial or wireless communication, and compatibility with different operating systems and devices. The comparison covered both desktop- and browser-based environments as well as mobile application frameworks.
In our opinion, the main factor for differentiation is the type of data transfer, as this is often dictated by the use case or hardware. Therefore, we first distinguish between applications for serial, Bluetooth, and Wi-Fi communication—although many applications support multiple options.
Interface | Comm. Type | Hardware | Communication Method | Application |
---|---|---|---|---|
Processing (Java) | Serial | PC + Microcontroller | Serial via USB | bidirectional: visualize data & send control commands |
Python + libraries | Serial, Bluetooth, WiFi | PC / mobile device + Microcontroller | Serial via USB | bidirectional: visualize data, send control commands, plus: data analysis, data processing |
MIT App Inventor (mobile) | Serial, Bluetooth, WiFi | primarily mobile device + Microcontroller, works also with PC | Serial via USB, HTTP over WiFi, Bluetooth Classic | bidirectional, focus on UI |
P5.js (Web GUI) | Serial, WiFi | PC / mobile device + Microcontroller | WebSocket or HTTP via WiFi, Serial via USB and Serial API | bidirectional, focus on UI |
Node-RED Dashboard | Serial, Bluetooth, WiFi | PC / mobile device + Microcontroller | Serial via USB, HTTP or MQTT over WiFi, Bluetooth Classic / BLE | bidirectional, Bluetooth support possible but requires local setup and is far more complex to configure |
Custom HTML/JS Webpage | WiFi, Serial | PC / mobile device + Microcontroller | HTTP over WiFi or Serial via USB | Micocontroller exchanges data with browser, visualization & actuator control |
Flutter | WiFi, Bluetooth | mobile device / PC + Microcontroller | HTTP over WiFi or Bluetooth via BLE | Smartphone-App / Web-App exchanges data with Microcontroller, visualization & actuator control, support for all operating systems (Android, iOS, Windows, macOS, Linux), even stable with f.e. Raspberry Pi |
React Native | WiFi, Blueetooth | mobile device + Microcontroller | HTTP or WebSocket over WiFi or Bluetooth via BLE | Smartphone exchanges data with Microcontroller, visualization & actuator control, support for many operating systems, especially mobile platforms |