|
> > |
META TOPICPARENT |
name="Slides" |
Lecture 2: LEDs and NeoPixel
CSC 321: Embedded Sysytem First Semeter 2020/2021 |
| |
|
> > | The ESP32-WROVER-B MCU
CPU Pinout
Please note: The pin numbers IOxx on the ESP32 correspond to the GPIO pin numbers
Datasheet: https:// www.espressif.com /sites/default/files/documentation/esp32-wrover-b_datasheet_en.pdf
Meaning of pins on ESP32
How to program the processor
|
Several development tools are available: - ESP_IDF: The official Espressif development tool.
Includes a gcc compiler for the ESP8266 and the ESP32 Please see: https://docs.espressif.com/projects/esp-idf/en/latest
- The Arduino IDE
Needs extensions for these processors and the different CPU boards see: https://docs.espressif.com/projects/esp-idf/en/latest see: https://micropython-docs-esp32.readthedocs.io/en/esp32_doc |
Flashing the code
esptool
- esptool is called from the Makefiles in ESP-IDF
- esptool is used when we upload code from the Arduino IDE to the processor flash
- esptool is used with Micropython IDE on uPyCraft/Thonny
installs Micropython onto the processor flash
In the above cases the use of esptool is hidden to us.
We can however also execute esptool directly.
How to write a Micropython program?
First we need a Micropython interpreter!
You find the sources here:
https://github.com/micropython/micropython/
In the repository you find ports for the ESP8266 and the ESP32.
In order to compile the code you need the ESP-IDF and its cross compilers
The code compiles into a binary file (firmware-combined.bin) which contains a boot loader and the interpreter.
This binary must be uploaded and flashed.
For documentation of the ESP32port of Micropython look at
http://docs.micropython.org/en/latest/esp32/tutorial/intro.html
How to communicate with the Micropython interpreter?
We use a serial connection passing through the micro USB connection.
As soon as we connect the processor card to the PC we see the serial port to connect for communication
What is REPL?
The communication tools: minicom
You see the command prompt and you can interact with Micropython.
But … how to upload scripts?
The command line tool ampy
IDE for Micropython: uPyCraft
Thonny
Thonny
Thonny is a complete Integrate Development Environment (IDE)
which lets you
- Access the REPL
- Create directories on the Micropython file system
- Upload scripts
- Syntax check scripts
- Run scripts
- Install Micropython on your processor board
Thonny
Thonny is an IDE for Python which has provisions for Micropython.
Under Tools → Options button you can select the type of
Python interpreter you intend to use.
Flashing Micropython
Compiling a new version of Micropython is substantially much easier with Thonny.
You still need to install esptool first. You just select your port and firmware then install.
IoT Hello World program
A “Hello World” program, just printing “Hello World” on the screen
does not look very exciting.
However, this is generally used to verify that the infrastructure
Compiler, linker, downloader, flash program
are working correctly
In embedded systems printing can be quite complex
and a blinking LED is used instead.
Switching on and off a LED
The ESP32-WROVER-B have a “user LED” connected to GPIO 19.
How do we control this LED?
- Define that the LED is connected to GPIO 19
- Program this pin as output
- Write a logic 1 to the pin to switch it on
- Write a logic 0 to the pin to switch it off
- The logic state may be inverted if the LED is active low
Micropython hardware functions
The machine.Pin class
Switch the LED on, version 1
Switch the LED on, version 2
The blinking LED
Now we put the code into a script and run it
Changing the light intensity
The LED is connected to a digital line which can only be set to 0 or Vcc.
How can we change the light intensity and dim the LED?
The light intensity depends on the average current flowing through the LED.
The answer is PWM: pulse width modulation.
PWM in Micropython
Our PWM implementation
A more complex LED:
- rgb LED used in LED chains.
- each ws18b12 contains the 3 colored LEDs and a controller.
- Can be cascaded and individually addressed, depending on its position in the chain
- Needs precise timing
- To use it we pass through the neopixel library built into micropython
WS2812B timing
For all the details on the ws2812b look at
https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf
24 bit of colour data puts 2e24 colours at your disposal
Coding of a single bit
The control word:
Cascading the WS2812B
Using the neopixel library
… and our code
We have a single neopixel connected to
GPIO pin 4 (ESP8266)
or
GPIO pin 21 (ESP32)
This code works on both CPUs!
%SLIDESHOWEND%
-- Isaac Armah-Mensah - 2021-02-28
Comments
|
|
META FILEATTACHMENT |
attachment="esp32board.png" attr="" comment="" date="1614475713" name="esp32board.png" path="esp32board.png" size="2146189" user="IsaacArmahMensah" version="1" |
META FILEATTACHMENT |
attachment="pinout.jpg" attr="h" comment="" date="1614475813" name="pinout.jpg" path="pinout.jpg" size="134789" user="IsaacArmahMensah" version="1" |
|
|
META FILEATTACHMENT |
attachment="connect.png" attr="h" comment="" date="1614644822" name="connect.png" path="connect.png" size="3213513" user="IsaacArmahMensah" version="1" |
META FILEATTACHMENT |
attachment="interpretor.png" attr="h" comment="" date="1614645577" name="interpretor.png" path="interpretor.png" size="94026" user="IsaacArmahMensah" version="1" |
META FILEATTACHMENT |
attachment="interpret.png" attr="" comment="" date="1614645765" name="interpret.png" path="interpret.png" size="107517" user="IsaacArmahMensah" version="1" |
|
|
> > |
META FILEATTACHMENT |
attachment="MPY1.png" attr="" comment="" date="1614673213" name="MPY1.png" path="MPY1.png" size="433176" user="IsaacArmahMensah" version="1" |
META FILEATTACHMENT |
attachment="flashing.png" attr="h" comment="" date="1614673424" name="flashing.png" path="flashing.png" size="919856" user="IsaacArmahMensah" version="1" |
|