diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..2cf05ac --- /dev/null +++ b/Readme.md @@ -0,0 +1,118 @@ +# Testing the ESP32 and Arduino IDE +## Introduction +This repository shows the basic usage of the Arduino IDE with the ESP32 development board by implementing a blinking LED and serial communication. + +# Programming the ESP32 Board +For this example course, we are going to use the ESP32-S WROOM, **please check what board you are using**. +![](./esp32swroom.jpg) + +then, we need to install the Arduino IDE to program the ESP32. + +## Installing the Arduino IDE + +The Arduino IDE can be installed on *Windows, MacOS, or GNU Linux*, the Windows and MacOS installation is commonly using the installer. In the case of the *GNU Linux* it is highly recommended to use the distribution's package manger. In my case, the ArchLinux manager is *pacman*, thus use: + +``` +sudo pacman -Sy arduino +[sudo] password for gmarx: +:: Synchronizing package databases... + core 157.9 KiB 235 KiB/s 00:01 [####################################] 100% + extra 1710.6 KiB 3.66 MiB/s 00:00 [####################################] 100% + community 6.7 MiB 7.49 MiB/s 00:01 [####################################] 100% +warning: arduino-1:1.8.19-1 is up to date -- reinstalling +resolving dependencies... +looking for conflicting packages... + +Packages (1) arduino-1:1.8.19-1 + +Total Installed Size: 59.36 MiB +Net Upgrade Size: 0.00 MiB + +:: Proceed with installation? [Y/n] +``` + +**Note: The Arduino IDE requires Java jdk8 and jre8 installed on the OS.** + +**Note: You can install a Dark theme by [following these instructions]()** + +## Adding the ESP32 Boards +The addition of the ESP32 boards requires to include a URL to download a *Board Manager* by clicking on `File -> Preferences` and pasting the URL `https://dl.espressif.com/dl/package_esp32_index.json` in the field *Additional Boards Manager URLs*: + +``` +https://dl.espressif.com/dl/package_esp32_index.json +``` +![](./board.png) + +Next, we can install the ESP32 board on Arduino IDE by `Tools -> Board -> Boards Manager ...`, and writte `ESP32` to install the tools required to work with: + +![](./install-board.png) + +# Sample code to test ESP32 +Before start programming the ESP32 board we have to select the proper board in the `Board` tool. Thus, again open and select the `Tools -> Bord -> DOIT ESP32 DEVKIT V1`. Then, paste the next code segtion to test the ESP32 board; the code is also the `blinking-serial.ino`file: + +``` + /* + * + * Example code for ESP32-S: + * The code blinks the onboard LED (at D2 in GPIO 02) every 0.500 seconds. + * The code also prints by serial communcation the word "Hello" during the + * ON stage of the LED, and then prints "World" during the OFF. + * Gerardo Marx 19/Jul/2022 + */ + +// this variable is defined in pins_arduino.h for DOIT ESP32 DEVKIT V1 +// int LED_BUILTIN = 02; +int LED_ONBOARD = 02; + +void setup() { + // put your setup code here, to run once: + pinMode(LED_BUILTIN, OUTPUT); + //serial monitor setup + Serial.begin(115200); + } + +void loop() { + // put your main code here, to run repeatedly: + Serial.print("ON"); + digitalWrite(LED_BUILTIN, HIGH); + delay(500); + // after delay + Serial.print(" - OFF\n"); + digitalWrite(LED_BUILTIN, LOW); + delay(500); + +``` +next, press `Crt-u` to compile and upload the code generated into the board. + +## The error `no module named serial` +If you get an error like this: +``` +ModuleNotFoundError: No module named 'serial' +exit status 1 +Error compiling for board DOIT ESP32 DEVKIT V1. +``` + +then, it is necessary to install in python: +``` +pip3 install pyserial +``` +and must probably you will requiere pip3 python package manager: +``` +sudo pacman -Sy python-pip +``` +## `Permission denied: '/dev/ttyUSB0'` + +``` +ls -l /dev/ttyUSB0 +crw-rw---- 1 root uucp 188, 0 Aug 7 14:50 /dev/ttyUSB0 +``` + +``` +sudo usermod -a -G uucp $USER +groups +libvirt uucp gmarx +``` + +**Note: you need to relogin into you session.** + + diff --git a/blinking-serial.ino b/blinking-serial.ino index d7d9eac..fd7ee2b 100644 --- a/blinking-serial.ino +++ b/blinking-serial.ino @@ -1,4 +1,4 @@ -/* + /* * * Example code for ESP32-S: * The code blinks the onboard LED (at D2 in GPIO 02) every 0.500 seconds. @@ -9,14 +9,13 @@ // this variable is defined in pins_arduino.h for DOIT ESP32 DEVKIT V1 // int LED_BUILTIN = 02; -int LED_ONBOARD = 02; void setup() { // put your setup code here, to run once: pinMode(LED_BUILTIN, OUTPUT); //serial monitor setup Serial.begin(115200); -} + } void loop() { // put your main code here, to run repeatedly: diff --git a/board.png b/board.png new file mode 100644 index 0000000..33236ec Binary files /dev/null and b/board.png differ diff --git a/esp32swroom.jpg b/esp32swroom.jpg new file mode 100644 index 0000000..16de929 Binary files /dev/null and b/esp32swroom.jpg differ diff --git a/install-board.png b/install-board.png new file mode 100644 index 0000000..093a171 Binary files /dev/null and b/install-board.png differ