Project#

In this capstone project, you will work in teams of 3 to research, design, prototype, and deliver an end-to-end IoT product.

The IoT solution will use the following tech stack:

  • 3x reTerminal for the IoT computing devices.

  • Python/Bash for the on-device programming logic.

  • Microsoft Azure for the cloud infrastructure and IoT gateway.

  • TypeScript and Expo for the multi-platform control center application.

../_images/infrastructure.png

Cloud infrastructure that will be used for the final project. Pretend that it says “Typscript App” instead of MAUI App!#

With some constraints, the goals and objectives of the IoT system will be up to your team.

Your final product will be a codebase that is inheritable by future students and teachers in this program!

Milestones#

The course project will consist of 5 milestones.

NOTE: the Worth percentage is a percentage of the project portion of your grade.

  • In connected objects: the project grade is 35% of your overall grade.

  • In app dev III: the project grade is 50% of your overall grade.

Hardware#

The following list contains most of the available parts.

Other parts may be purchased or used on request. Ask me if you have any cool ideas or questions!

Component & Documentation Refer to these for hardware specifications and circuit/pin/bus reference. Software may not be relevant.

Interface Type

Relevant Libraries Refer to these for suggested python libraries to use to interface with the device

Examples Refer to these for similar examples to us in class (python on Raspberry Pi). This is a better starting point than other online sources, since the sensors/actuators we use are used on a wide variety of hardware.

Water Level Sensor *

Analog

ADC library for Grove Base Hat (Github)

See use of ADC in Lab 3

Soil Moisture Sensor *

Analog

ADC library for Grove Base Hat (Github)

See use of ADC in Lab 3

RGB Led Stick

PWM

grove_ws2813_rgb_led_strip.py module from Grove.py package.

See module source code. Alternatively, see NeoPixels on Raspberry Pi for using NeoPixel CircuitPython library with the Blinka compatibility layer.

Cooling Fan

Digital

Controlled via relay module

See fan and relay in Lab 4

AHT20 Temp & Humidity Sensor *

I2C

Grove_temperature_humidity_aht20.py from Grove

See use of AHT20 Lab 4

GPS (Air530)

Serial

pyserial to read serial data. pynmea2 to parse gps messages

Location tracking by Microsoft This is a general summary of how long/lat measurement works, the important/relevant example is in a sublink called “Single-board computer - Raspberry Pi

USB Power Bank

N/A

N/A

N/A

reTerminal’s built-in accelerometer

I2C

acceleration.py in Seeed_Python_ReTerminal

Accelerometer Test and Accelerometer and Buttons Test (async)

reTerminal’s built-in buzzer

I2C (I/O expander)

core.py in Seeed_Python_ReTerminal

Buzzer Test

PIR Motion Sensor *

Digital

None needed. grove_mini_pir_motion_sensor.py can be used.

Play With Arduino from wiki.

Magnetic door sensor reed switch

Digital

None needed, behaves like a button. Button class from gpiozero.

Blog post by electroniclinic.com

MG90S 180° Micro Servo

PWM

Servo class from gpiozero

Example + video by garyexplains

Sound Sensor/ Noise Detector

Analog

ADC library for Grove Base Hat (Github)

See use of ADC in Lab 3

(Optional) Alternative device

There are other sensors/actuators available to us in the lab. Instructions/examples will be available in a future Connected Objects milestone.

Example Projects#

  • Winter 2025 projects: orgs/420-6A6-6P3-W25

    • Here, each team came up with their own subsystem and device capabilities.

    • This will be a good reference for seeing what different ideas are possible.

  • Winter 2024 projects: orgs/JAC-Final-Project-W24-6A6-6P3

    • In this semester, ALL teams had the same subsystems (Plant, Geo, and Security).

    • Here, you can see polished ideas for subsystems.

    • I can particularly recommend the CropCare project – very high quality.

Note

The first time you click the GitHub links above, you will be prompted to accept an organization invitation. Accepting this gives you permission to view the repositories within.

../_images/org-invite-reminder.png

Click “View invitation” to accept the invitation.#