Physical Computing and The Internet of Things
IoT Solutions
IoT solutions are Physical Computing circuits with the additional capability of connecting to servers or other circuits over the Internet, thus allowing for remote access and control. We will start with programming microcontroller development boards (like Arduino), then assembling micro-circuits with sensors, relays, and communication modules (such as Bluetooth), and finally getting the circuits to exchange data over the Internet using WiFi and MQTT.

The final solution you will have built at the end of these learning sessions is shown above. It will have a collection of sensors and controllers that you can monitor and control using the STEMVentor IoT App over the Internet using WiFi and via BLE.

Build a Smart Home
We will be using the Smart Home as an use case for an IoT solution with sensors that send data and alerts to the IoT app and appliances that you can control with the IoT app.

The STEMVentor IoT App
The IoT App is a mobile app for Android smartphones that can be used to read data from sensors and send control signals to devices. The app connects to MQTT servers over WiFi and to microcontroller boards over BLE. You can use this app to manage sensors and devices on any circuits you build, as long as they can publish and subscribe data to MQTT over WiFi or connect over BLE.

Design Thinking
Building good solutions requires more than just an understanding of technology. You need to understand business requirements and design the optimal solution that is user-friendly and performant. Good design skills are required to develop intuitive user interfaces, optimal business process, and well-structured data.
Agile Development
Agile development is a modern approach that is used when developing applications where requirements are evolving. You should be able to start by building a minimum viable product (MVP) that can be demonstrated to your users and then build upon it incrementally allowing users to stay enagaged and give feedback through the process.
Collaboration
Building solutions of the future will require individuals and teams with complementary skills working together. While each one may build a part of the solution, all parts need to integrate to provide the complete solution. This requires good collaboration skills from the design and architecture to implementation.