Internet Of Things

Building DIY electronic projects is a lot of fun, you no longer need to be a rocket scientest nor a millionaire to build some really cool IoT style of projects. Here we will build some cool projects, but unlike some of the other cools websites and youtube channels we will focus on the software side of IoT development, taking our projects sophistication to a whole new level by introducint communications and cloud to make our project truely global. Continue reading below to find out more.

Overview

The purpose of the project is two fold, first to build something cool that involves some a physical product aka IoT project. The second is to demostrate solid Software Engineering Principals and the practice of employing a professional Software Development Life Cycle (SDLC).

Why IoT? Aside from the fact that I really enjoy IoT and have an IoT background. IoT employs a lot of interesting and diverse elements of software development.

IoT software projects are a combination of Full Stack and Embedded software development.

Diversity of Technology

We will look at some embedded software development by writting code that runs on tiny realtime systems (esp32, raspberry Pi pico) using C++ and python, we will look at hubs and integration with a Raspberry Pi and the Go programming language. Web interfaces and Mobile Apps with JavaScript and React.

Building Extensible Systems with APIs

We will also be building public REST API’s and PubSub messaging systems out a cloud based backend system giving us access to our project from anywhere in the world that can access the Internet.

From a techinical perspetive all of these items are part of IoT and quite interesting in that they use a wide array of techical elements, require these disparate elements to be successfully integrated together and maintained like any complex software system.

Also, they require a significant co-ordinated effort among various players: users, developers, stake-holders, etc. During this process I’ll try to lean on and explain sound software development practices as the project unfolds.

Project Overview

The basic Idea of this project will be to develop software to observe and control a physical device from a remote UI, that is we will build a little weather station that collects temperature and humidity from a simple device and display it on a web interface viewable from anywhere, even a phone.

After that we will add a relay (switch) capable of turning lights on and off from our user interface. This basic project will lay the foundation for quite a few other IoT projects that can be built by extending our base framework.

The Architecture

We will do this in a very open and inter-changeable manner. For example, though we may choose say a Raspberry Pi to collect temperature and humidity, also to control the relay we will build this project such that it is very easy to integrate a totaly different device using the same user interface and backend.

That is we’ll create API’s and use messaging to create a loosely coupled infrastructure so that somebody that wanted to add to this system say an Arduino or ESP32 could do so just by developing toward the same API’s and messaging system.

The IoT Hub is the center piece of the IoT project as gathers data, runs application logic. Provides an HTTP Server to serve up a Web App, REST API and Web sockets. This project is a Micro service written in Go, and is perfect for systems hackers, backend devs and full-stackers.

January 13, 2022
The Collection Stations are small battery powered wireless devices outfitted with environmental sensors. They collect and publish the data to the Hub for processing. This project is built with the esp32 micro-controller, C++ and embedded realtime operating system.

January 13, 2022
This article describes an automated irrigation system for home gardens and small farms. It uses soil moisture levels and other telemetry data to drive watering schedules vs traditional time based scheduals. This project is Open Source and easy to program.

May 25, 2022
This is the second milestone of the Organic Gardner IoT project. The first milestones we implemented MQTT subscriptions to gather sensor data. This milestone we are going to add HTTP RESTful API to provide access to that data. The same HTTP library will later serve up our IoT dashboard.

March 30, 2022
The primary function of an IoT Gateway is moving data from one input source (often sensor data) to another output destination (like a control algorithm) with some data conversion and storage in between. Our first milestone building the IoT Gateway is reading data from MQTT then holding it in RAM for the upcoming REST API we will build for Milestone 2.

March 29, 2022