Internet of things

Abstract
This workshop provides an overview of GPU programming history and architecture, comparing it with CPUs and discussing suitable applications. It introduces CUDA and its basics, emphasizing performance considerations and addressing common misconceptions. The abstract also covers implementing neural networks on GPUs, highlighting libraries like cuDNN and tools such as TensorRT for optimization. Additionally, it outlines an IoT course covering hardware aspects like ESP32 microcontroller usage and software components including MQTT setup and user interface design with JavaScript, CSS, and HTML.
Modules
Module 1: Introduction to IoT, ESP32, and Project Overview | 29 Bahman (Mahdi Bahreiny)Feb 18, 2024, 12:30 PM – 2:30 PM
Session 1 provides a comprehensive introduction to IoT, familiarizes participants with the ESP32 microcontroller, outlines the workshop project, and kicks off hands-on activities with the initial setup of ESP32 and sensor integration. The icebreaker activity fosters a collaborative learning environment, setting a positive tone for the remainder of the workshop.
Module 2: Examining the Architecture and Design Principles of NVIDIA CUDA GPUs | 1 Esfand (Armin Ahmadzadeh)Feb 20, 2024, 12:30 PM – 2:30 PM
In this session, we examine the architecture of NVIDIA (CUDA) GPUs and the design principles behind it. We then discuss why this approach is suitable for many scientific computations and AI applications. After this discussion, we introduce the CUDA programming model and write a few CUDA programs. We then discuss the performance considerations when writing an application for CUDA GPUs and the features that were introduced recently.
Module 3: ESP32 WiFi Connection and Actuator Control | 2 Esfand (Mahdi Bahreiny)Feb 21, 2024, 12:30 PM – 2:30 PM
In Session 2, the focus shifts to wireless communication capabilities as participants learn to connect the ESP32 to a Wi-Fi network. The session covers the essentials of Wi-Fi setup, enabling participants to establish a robust and reliable connection for their IoT projects. Additionally, participants delve into the creation of a basic web server, laying the groundwork for remote monitoring and control. This session enhances participants' skills in leveraging the ESP32's wireless capabilities, a crucial aspect in extending the functionality and reach of their IoT systems.
Module 4: Programming Nvidia GPUs with CUDA and performance considerations | 3 Esfand (Atiyeh Gheibi)Feb 22, 2024, 12:30 PM – 2:30 PM
In this session, we will discuss how to use CUDA GPUs in Python and how to build efficient AI models that run on these GPUs. To this end, we first discuss why GPUs are perfectly suitable for running AI models. We then discuss how one can build such models.
Module 5: Programming Nvidia GPUs in Python, implementing and optimizing ML models | 4 Esfand (Amir Mirzaei)Feb 23, 2024, 12:30 PM – 2:30 PM
We then end this session by demonstrating how to use GPUs for more general computations in Python such as data scientific operations and scientific computations.
Module 6: MQTT Setup and Integration | 5 Esfand (Mahdi Bahreiny)Feb 24, 2024, 11:30 AM – 2:30 PM
This session centers on the setup and integration of MQTT, a crucial aspect of IoT communication. Participants begin by installing and configuring Mosquitto as the MQTT broker. The focus then shifts to the ESP32, where participants explore the MQTT protocol and configure the microcontroller to publish and subscribe to MQTT topics. Simultaneously, participants learn to use the Paho MQTT library in the Django server, setting the foundation for bidirectional communication between the ESP32 and the server. Real-time communication challenges provide a hands-on experience in establishing seamless interactions, marking a pivotal point in the participants' ability to integrate MQTT into their ESP32-based IoT projects.
Module 7: HTML/CSS/Bootstrap, and Final Project | 7 Esfand (Soroush Sherafat)Feb 26, 2024, 12:30 PM – 2:30 PM
In the final session, participants embark on the web development aspect of their IoT projects using Django. The introduction to Django includes creating a project and app, defining models for data storage, and running migrations to establish the database structure. Further, participants dive into crafting views and templates, integrating CSS and Bootstrap for a responsive design. The session culminates in an exploration of MQTT integration within Django, configuring the server to obtain and handle data from the ESP32 through MQTT. Participants then refine their projects, focusing on troubleshooting and enhancements. The workshop concludes with project showcasing, allowing participants to present their finalized ESP32-based smart environment monitors, highlighting their newly acquired skills in IoT system development.
Presenters

Mahdi Bahreiny

Armin Ahmadzadeh

Atiyeh Gheibi

Amir Mirzaei

