This is an online hands-on course designed for developers, hobbyists, enthusiasts and students to equip them with the needed skills to design and develop their own IOT (Internet of Things) devices and systems. In this course, you will design and develop from scratch an IOT device/system that runs on your own cloud server. You will learn how to develop the needed firmware for the designed hardware using Arduino IDE. You will also learn how to install and use mosquitto MQTT broker. Additionally, you will also learn how to install and program a Django webserver for a human interface to activate the ports of the IOT device using a browser on your computer. You will then learn to connect your web server with Google Action Console/server so that you can operate the IOT device using Google Home Assistant on your smart phone. You will also learn how to develop the needed programs on your web server for account linking and action fulfillment so that the ports of the device can be activated by voice commands from Google Home assistant.
This course will not be depending on any of the IOT services such as Google IOT Core, or AWS IOT core or any such IOT cloud services. Instead, you will build a cloud server on your own to communicate with your IOT device. By doing so, you can acquire the maximum possible knowledge and skills in the development of an IOT system.
At the completion of this hands-on course, you will have the basic knowledge and skill required to develop an IOT system. Not only would you learn the basic hardware of an IOT device, but also would come out of this course with the required skeleton programs needed to run on the IOT device as well as your own cloud server, so that appliances connected to the IOT device can be operated using Google Home. At the complettion of this course you will have a working product that can be used in your home or office, and would also have gathered sufficient skills to improve upon your design when you acquire additional expertise in programming at your own pace in the future.
To participate in this course, you are expected to bring with you the following:
An ESP8266 Development Board with a relay and input ports and a micro USB programmer port. You can purchase this from any supplier. However, we recommend the one from wifisecureaccess, as their board has relays, analog input, and digital input/outputs brought on connectors. That board also has AC-to-DC converter onboard. This is an integrated PCB that can be used for connecting any sensors to it. Any 110/240VAC load also can be connected to it easily. It also comes with a plastic casing so that it can be used as a commercial product when you develop your software. Search for "wifisecureaccess IOT Development board" in ebay.com.au or click here to purchase it. In this course, we will design a schematic diagram of a board which is identical to that.
Motion sensor HC-SR501. Buy from ebay or Amazon or any other source. Search for 'HC-SR501 motion sensor' in ebay or Amazon.
DHT11 Temperature/Humidity Sensor (3.3V). This is also available in ebay or Amazon, or any other source. Search for 'DHT11 Temperature/Humidity Sensor 3.3V' in ebay or Amazon. Make sure it is a 3.3V powered and not 5V powered..
A floor standing light or a fan or any similar equipment for testing
Connecting cables and a screwdriver, data cables to connect sensors, micro-USB cable to connect PCB to USB port of your computer. Your computer (laptop) must have a USB port.
Some experience with python programming, Django webserver may help, but can be acquired later for further work
Some experience with python programming, Django webserver may help, but can be acquired later for further work
An introduction to IOT system. With a block diagram, the course will go through the various elements of an IOT system that includes a hardware (IOT device), a central server (usually cloud server) and a user interface (usually some apps such as Google Home or Alexa) on a smart phone. An introduction to the workflow of the lessons in the course as well as the components/equipment required to complete this course will be discussed
Design the hardware of a simple IOT device. The design will be based on an ESP8266 microcontroller. The participants will design the schematic of the hardware to connect external appliances such as electric lights, fans, solenoids and so on. The design will also have provisions to connect sensors. The participants can fabricate this design, if they want to. However, as a pre-fabricated board with this design is available from wifisecureaccess, the participants can buy that pre-fabricated board and use it in this course. This General purpose IOT development board is listed in the “requirements” section of this course. At the end of this section, the participants would acquire the skills and knowledge to modify or improve this design or to design a new board to incorporate any of their special needs. They can, then get the board fabricated by manufacturers.
Programming the designed IOT device using Arduino IDE. The participants will learn how to write programs (firmware) for this IOT device using Arduino IDE. Arduino IDE is a popular software package freely available to download. The participants will be taken through the process of installing the IDE, configuring it and compiling and loading a program to the IOT device. The participants will be given a simple program that they can compile and load to the IOT device. This program will help put on/off a port of the IOT device. During the session, the participants will be supplied with a modified program that can read sensors such as motion and temperature/humidity. The instructor will go through each line of this code to help you understand how data is read from sensors and how output ports such as relays and solid state switch are put ON/OFF
In this section, the participants will learn about building a cloud server. A cloud server is an essential component of an IOT system. The participants will be required to open an account with Google, or Amazon Web services, or Digital Ocean and create a cloud server. All these companies give free cloud server for one year (usually). So, it does not cost anything to use this in this course. In the lessons, the instructor will step through the process of getting a cloud server and installing a Linux Operating System. Python programming will also be introduced in the lessons.
In this section, the participants will learn about MQTT. They will learn installing an MQTT broker on their cloud server. They will learn the publish/subscriber model of MQTT. Then, they will develop sample programs for publish and subscribe and test them on their cloud server. Sample programs will be provided and the instructor will go through the details.
In this section, the participants will develop a publisih/subscribe program in python to run on their cloud server to communicate with their device. The arduino program developed in section 3 will be modified to communicate with the publish/subscribe program on the cloud server. Sample programs will be provided and the instructor will go through the details of the sample programs. A subscriber program will also be developed to send an email when motion is detected by motion sensor. At the end of this section, the participants will have the needed programs to communicate between the cloud server and the device.
In this section, the participants will learn to register a domain name and associate that domain name with their cloud server. They can register with godaddy.com or with any other company as they choose. For the purpose of this course, the domain name can be any name. The names such as my_course2021.xyz will cost only USD1.30 per year. If the participants are interested in getting a meaningful domain name for themselves, they can do so by paying a higher subscription fee. It can take 24 hours or so for your domain name to get propagated through domain servers. After registering, the arduino program that was developed in section 6 will be modified to use domain name instead of ip address.
In this section, the participants will install a Django web server on the cloud server. Django is a free web application package available to download. After installing Django on their cloud server, they will write simple programs in python to display a message on a browser. They will test and verify that a message is displayed on the browser when their domain name is given in the address bar of the browser.
The participants will then write simple programs in python for communication between web server and the MQTT broker. Sample programs will be provided. The instructor will go through the details of the sample programs. At the end of this section, the participant will be able to activate a port of their device by clicking a button on a web browser. They will also be able to read and display the values from the sensors connected to the device.
In this section, the participants will learn about the need for encryption of data transfer as well as the need for using https instead of http on their web server. The participants will install an SSL certificate from Let'sEncrypt so that https can be used instead of http. This SSL certificate is free from Let'sEncrypt. The instructor will take the participants through the steps involved in installing all the above. At the end of this section, the participants will have a secure webserver running on their cloud server ithat can be accessed from a browser using https
Once they have completed section 10 and have installed Let'sEncrypt certificate, The participants will learn using secure connection between MQTT broker and their device. The arduino program developed in earlier sectinss will be modified to use server's certificate for secure data transfer. At the completion of this section, they will have an IOT system that is secure. Data transfer between their device and MQTT broker will be encrypted and secure. The participants will test and confirm once again that they are able to activate a port on their device by pressing a button on a browser from any computer.
The students will next learn about interfacing the web server with Google action console/server so that this IOT device can be activated using Google Home. They will open an account with Google Actions and create a project on Google Action Console and set the endpoints for account linking and fullfillment. Then, they will write the needed programs on their web server for account linking, token exchanges. Sample programs will be provided. The instructir will go through the details of the program. They will, then test and confirm that the account linking between their web server and GoogleHome server works well.
In this section, the participants will develop programs to execute the fullfilment requests coming from GoogleHome server. They will develop simple programs for syncing device ports with GoogleHome server. They will also develop programs for QUERRY and EXECUTE requests from GoogleHome. Sample programs will be provided and the instructor will go through the details of the sample programs. Once the above steps are completed, the participants will be able to add their IOT device to the Google Home on their smartphone, and test and see if they are able to turn ON/OFF any port of their IOT device through voice command on their Google Home. At the completion of this section, the participants would have acquired sufficient knowledge and skills to improve upon these sample programs to suit their special needs and requirements.
Any student who has completed sections 1 through 13 successfully, by now should have a basic IOT system ready to go. They can now activate a port of the IOT device with voice command from the smart phone. Finally, in this section, the instructor will demonstrate a fully developed IOT system that can run on their smart device. The participants will be given a fully developed firmware from WiFisecureAccess that they can load on their IOT device. If they load this firmware, the IOT device gets connected to wifisecureaccess server with all the required modules and interfaces of an IOT system. This demonstration will help them understand the various features that they can add on to their IOT system to make it more versatile and marketable. They can use the firmware from wifisecureaccess on their IOT device, if they want to, or, improve the sample programs to make it meet their special needs and requirements. This is a choice the participants can make after the completion of the course. Either way, at the completion of this course, they would have acquired sufficient knowledge and skills to design and develop an IOT system on their own.