Lecture notes

Summary:

Introduction

During the exercise sessions, we will first develop a program that lights the user programmable LED on the CPU card. This displays a binary signal, which can only be high or low. The exercise therefore demonstrates how to output a signal and how to control a single digital signal line.

esp32V1.png

On the bottom right of the photo, you see 2 LEDs. The lower one marked ON (upside down) shows if power is supplied to the board, the upper one is user programmable.

As a second exercise we will read a digital actuator, namely a simple push button switch, and we will display its current value (pushed or released) on the PC screen. This exercise therefore demonstrates how to acquire the state of a digital signal. After that, we may switch the LED on, when the button is pressed, and switch it off, when the button is released, thus combining the acquisition of a digital sensor with the display of its state.

pushbutton.png

A slightly more complex program will allow us to read the signal level generated by an analogue sensor (our potentiometer) and display the signal level on the 7 LED rgb (red, green, blue) display. For this to work, we must first understand how to connect and read the analogue signal using the Analogue to Digital Converter (ADC). Then we must find out how an LED on the LED ring can be lit and how to select its color. Finally, we can again combine the two functions into a single program. This will read the signal level from the potentiometer and light one of the LEDs on the LED ring. For lowest signal levels, the top LED is lit in blue (which often represents a cold or low value). If the value is a bit higher, then the second LED is activated in cyan, After that we go clockwise using the colors (blue, cyan, green, yellow, magenta, red, white) where white will be displayed for the highest signal level on the center LED.

slider.png leds.png

Unfortunately the LoLin RGB LED shield is not available any longer and our kits cannot be stocked up with this module. It is however possible to create a similar module using an LED ring together with a WeMos D1 mini prototype board. This is quite a bit of work and the LED addressing is different. The LoLin board addresses its LEDs in a clock-wise manner while the LED ring does this counter-clock-wise. With a mapping table, this problem can easily be resolved and the two versions will react the same way.

led_ring_front_small.png led_ring_back_small.png
front view of LED ring back side of the prototype board

In the 2024 ASP edition, the IoT workshop has been extended to 2 1/2 days and we have a few new devices. First of all, we now have real sensors which measure air temperature, relative humidity and the barometric pressure. This will allow us to create a simplistic weather station.

sht30-1.png bmp180shield.png
SHT30 temperature and humidity sensor BMP180 barometric pressure sensor
Often it is desirable to have a local display to show results without having to transfer data to a remote machine. A cheap monochrome OLED (Organic LED) display is available for the WeMos D1 mini bus but its resolution of 64x46 pixels is a bit too limited.

oled_64x48.png

It is however easily possible to put an OLED with 128x64 pixels onto a prototype board, which I did for this workshop.

oled_front.png oled_proto_front.png oled_proto_back.png
128x64 pixel monochrome OLED display display prototype board (front) display prototype board (back)

Also the actuators have been extended with a small stepping motor and its driver board and there are exercises to make the motor move forward and backwards in different modes and speeds.

stepping.png
Stepping motor and driver board
Now that we know what we have to do, let's go for it! Communicating with the ESP32

- - Uli Raich - 2022-10-14

Comments

Topic attachments
I Attachment HistorySorted ascending Action Size Date Who Comment
PNGpng bmp180shield.png r1 manage 74.8 K 2024-03-26 - 10:43 UliRaich  
PNGpng esp32V1.png r1 manage 240.5 K 2022-10-14 - 15:12 UliRaich  
PNGpng led_ring_back_small.png r1 manage 178.6 K 2024-03-26 - 10:36 UliRaich  
PNGpng led_ring_front_small.png r1 manage 155.7 K 2024-03-26 - 10:36 UliRaich  
PNGpng leds.png r1 manage 292.6 K 2022-10-14 - 15:39 UliRaich  
PNGpng oled_64x48.png r1 manage 75.1 K 2024-03-28 - 09:35 UliRaich  
PNGpng pushbutton.png r1 manage 154.5 K 2022-10-14 - 15:12 UliRaich  
PNGpng sht30-1.png r1 manage 168.2 K 2024-03-26 - 10:43 UliRaich  
PNGpng slider.png r1 manage 152.9 K 2022-10-14 - 15:39 UliRaich  
PNGpng stepping.png r1 manage 152.3 K 2024-03-26 - 10:47 UliRaich  
PNGpng oled_front.png r2 r1 manage 267.3 K 2024-03-28 - 09:37 UliRaich  
PNGpng oled_proto_back.png r2 r1 manage 283.9 K 2024-03-28 - 09:37 UliRaich  
PNGpng oled_proto_front.png r2 r1 manage 332.9 K 2024-03-28 - 09:37 UliRaich  
Edit | Attach | Watch | Print version | History: r10 < r9 < r8 < r7 < r6 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r9 - 2024-03-28 - UliRaich
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback