# Part 1: Firmware Update & Running Code (Heltec Boards) ###### tags: `TA Stuff ESP32` `Heltec` `ESP32` In this tutorial, we walk you through the hardware configuration, so you are up and running for your journey in IoT. If you own a **Heltec Development Board** you should follow this tutorial. You will: * Download and Install the board driver on your computer * Download and update the board firmware * Try a small code to confirm if everything is set properly We'll continuously update this walkthrough. **Is there anything missing or unclear, or have you experienced some issue? Please add a comment.** You do this by highlighting the text and then you can write a comment on the highlighted part. You need to log in/create an account on HackMD first. ## 0. Prerequisites <!---You have watched this brief walkthrough, at least to the firmware update part: <span style="color:red">[**Session 2 Setup Atom Pymakr**](Link To YouTube Tutorial for Heltec basic installation if we have one.) and:</span> --> * You should be finished with the IDE installation tutorial before continuing this :) * Have your Heltec board * USB Cable (**Make sure** the USB cable is capable of data transferring. If you get the bundle with cable it will support) :::info **Depending on your operating system follow one of the following sections:** ::: ### [Windows](#Windows-OS) ### [Mac](#Mac-OS) ### [Linux](#Linux-OS-(Ubuntu-22.04)) ## Windows OS Follow these steps: + **Step 1:** Connect your Heltec board to your computer with a USB cable. + **Step 2:** Download the hardware driver from [**this**](https://www.silabs.com/documents/public/software/CP210x_Windows_Drivers.zip) link. You will get a **zip** file extract the file and depending on your Windows version either execute the file end with **_x64** or with **_x86**. (Almost all new computers are x64) :::info Your Windows **Device Manager** should look like these; before and after driver installation: #### **Before** ![](https://i.imgur.com/MCi89FM.png) #### **After (Port number for CP210x may be different in your Windows)** ![](https://i.imgur.com/2S3gbNH.png) ::: + **Step 3:** Download [**this file**](https://github.com/H-Ryan/Heltec/blob/main/PyCom%20MicroPython/Heltec%20PyCom%20MicroPython.zip?raw=true) and extract them on your computer. + **Step 4:** Open [**this website**](https://nabucasa.github.io/esp-web-flasher/) and do: :::info The page must be opened in the latest version of **Google Chrome** or **Microsoft Edge**. ::: + - 1. Follow the numbered steps to connect to your development board (Choose CP210x and COM port number shoul be the same as your device manager): ![](https://i.imgur.com/V5pdmqC.png) <br> :::danger During the next two steps, you should not interrupt any execution, meaning you should keep your browser open and not remove the USB cable from your board or computer. ::: + - 2. Press on **Erase** then **Ok** to delete files from your board: ![](https://i.imgur.com/3aBIyBc.png) <br><br> ![](https://i.imgur.com/QinuPaP.png) <br> + - 3. Enter **Offset** `00`, and in **Choose a File** select your download `heltec.bin`, then press program to write firmware to your board. (It takes a while and during this time don’t disconnect your board from the USB cable) ![](https://i.imgur.com/80k71ZP.png) :::success **You are now ready for the next step to run code on your development IDE. Follow the steps below:** ::: + **Step 1:** Open your Atom IDE and at the bottom, you see the Pymakr plugin. You need to find the COM port number of your device, which is visible in Device Manager [**(here)**](#After). Then open `Settings` on Pymakr and choose `Global settings`. ![](https://i.imgur.com/xTCseEy.png) + **Step 2:** Enter the device com port into the `Device address (list)` field and remove the check box selection from `Safe-boot before upload`. ![](https://i.imgur.com/kaIYdhO.png) :::info It would be good to disconnect your device and restart your Windows before starting REPL in Atom. ::: + **Step 3:** Open Atom, click on `Connect device` in Pymakr and choose your COM port. ![](https://i.imgur.com/7vDoAgP.png) + **Step 4:** Confirm the success by entering `print("Hello from Heltec")` and the board shows it in REPL. ![](https://i.imgur.com/iFzqwWf.png) :::warning If you press the “RST” button your board goes into the following state, and it is because this firmware is a PyCom MicroPython and the reset button is not defined. You should: 1. Close REPL tab on Atom. 2. Disconnect the board from USB and connect it again 3. Open REPL again like “Step 7” above. ![](https://i.imgur.com/TlHSmce.png) ::: + **Step 5:** We are ready to make our first project now. Create a folder on your computer like; ( `First Project` ). + **Step 6:** In Atom click on `Add Folder` from the left panel then open created folder. + **Step 7:** Right-click on your project folder from the left panel and choose `New File` to create a new file, in the opened box enter `main.py` and press enter. :::info All projects must have `main.py` which is the start point for code execution. ::: + **Step 8:** Copy the following lines in `main.py` and save it. ```python= from machine import Pin # Used for LED pin addressing import time # Used for the delay between blinking led = Pin('P22', mode=Pin.OUT) # Used LED pin as output # Loop for blinking while True: led.value(1) time.sleep(1) led.value(0) time.sleep(1) ``` + **Step 8:** Now upload the file to your board from the upload project button: ![](https://i.imgur.com/G731zJU.png) <br> + **Step 9:** The LED on your board starts to blink and the REPL is not accessible anymore because of your loop. To stop blinking press Ctrl+c in the REPL section. :::success You are now successfully finished Part 1 of four parts tutorial, It is a good idea to read more about MicroPython **Tutorials and Examples** from [**Pycom (here)**](https://docs.pycom.io/tutorials/) and try different code to learn more. Good Luck! ::: <br><br> ## Mac OS Follow these steps: + **Step 1:** Connect your Heltec board to your Mac with a USB cable. + **Step 2:** The driver has already integrated into the macOS. Check if your Mac have detected your Heltec Board by clicking `Apple icons >> About This Mac >> Overview >> System Report... >> Hardware >> USB`. :::info Your **USB Device Tree** should look like this; and you can find the **CP2102 USB to UART Bridge Controller** in the USB Device Tree. ![](https://i.imgur.com/Y22CxqN.png) ![](https://i.imgur.com/Y8R0yf7.png) ::: + **Step 3:** Download [**this file**](https://github.com/H-Ryan/Heltec/blob/main/PyCom%20MicroPython/Heltec%20PyCom%20MicroPython.zip?raw=true) and extract them on your Mac. + **Step 4:** Open [**this website**](https://nabucasa.github.io/esp-web-flasher/) and do: + - 1. Follow the numbered steps to connect to your development board: ![](https://i.imgur.com/XJMJpk1.png) + - 2. Press on **Erase** then **Ok** to delete files from your board: ![](https://i.imgur.com/hsRkIHU.png) ![](https://i.imgur.com/deCzddi.png) ![](https://i.imgur.com/JlqQuRy.png) + - 3. Choose **Offset**, **Downloaded Files**, and then press program to write firmware to your board. (It takes a while and during this time don’t disconnect your board from the USB cable) ![](https://i.imgur.com/V93LNZp.png) ![](https://i.imgur.com/M1URM6z.png) :::success **You are now ready for the next step to run code on your development IDE. Follow the steps below:** ::: + **Step 1:** Open your Atom IDE and at the bottom, you see the Pymakr plugin. Then open `Settings` on Pymakr and choose `Global settings`. Remove the check box selection from `Auto connect` and `Safe-boot before upload`. ![](https://i.imgur.com/iMEA3P2.png) + **Step 2:** Enter the device port into the `Device address (list)` field. The device addree can be found using the following command in the Terminal. ```shell= ls /dev/ ``` ![](https://i.imgur.com/bFdk5DZ.png) ![](https://i.imgur.com/OzdbLPG.png) :::info It would be good to restart Atom. ::: + **Step 3:** Open Atom, click on `Connect device` in Pymakr and choose your device port. ![](https://i.imgur.com/fgjSNtN.png) ![](https://i.imgur.com/wo1Q4Eo.png) + **Step 4:** Confirm the success by entering `print("Hello from Heltec")` and the board shows it in REPL. ![](https://i.imgur.com/2OQESad.png) ![](https://i.imgur.com/oUNR8PH.png) :::warning If you press the “RST” button your board goes into the following state, and it is because this firmware is a PyCom MicroPython and the reset button is not defined. You should: 1. Close REPL tab on Atom. 2. Disconnect the board from USB and connect it again 3. Open REPL again like “Step 7” above. ![](https://i.imgur.com/t9aoZST.png) ::: + **Step 5:** We are ready to make our first project now. Create a folder on your computer like; ( `First Project` ). + **Step 6:** In Atom click on `Add Folder` from the left panel then open created folder. + **Step 7:** Right-click on your project folder from the left panel and choose `New File` to create a new file, in the opened box enter `main.py` and press enter. :::info All projects must have `main.py` which is the start point for code execution. ::: + **Step 8:** Copy the following lines in `main.py` and save it. ```python= from machine import Pin # Used for LED pin addressing import time # Used for the delay between blinking led = Pin('P22', mode=Pin.OUT) # Used LED pin as output # Loop for blinking while True: led.value(1) time.sleep(1) led.value(0) time.sleep(1) ``` + **Step 9:** Now upload the file to your board from the upload project button: ![](https://i.imgur.com/OVfmdBL.png) + **Step 10:** The LED on your board starts to blink and the REPL is not accessible anymore because of your loop. To stop blinking press Ctrl+c in the REPL section. :::success You are now successfully finished Part 1 of four parts tutorial, It is a good idea to read more about MicroPython **Tutorials and Examples** from [**Pycom (here)**](https://docs.pycom.io/tutorials/) and try different code to learn more. Good Luck! ::: <br><br> ## Linux OS (Ubuntu 22.04) Follow these steps: + **Step 1:** Run the following commands to remove access conflict in your Ubuntu: ```shell= sudo systemctl stop brltty-udev.service sudo systemctl mask brltty-udev.service sudo systemctl stop brltty.service sudo systemctl disable brltty.service ``` + **Step 2:** Connect your Heltec board to your computer with a USB cable. + **Step 3:** The driver has already integrated into the Linux kernel. Open the Terminal, and type following command to check the connecting information (**_usb 1-1.1: cp210x converter now attached to ttyUSB0_**). ```shell= sudo dmesg | grep ttyUSB0 ``` ![](https://i.imgur.com/eDtA0Gs.png) + **Step 4:** Download [**this file**](https://github.com/H-Ryan/Heltec/blob/main/PyCom%20MicroPython/Heltec%20PyCom%20MicroPython.zip?raw=true) and extract them on your computer. + **Step 5:** Modify the port permission using the following 3 commands one by one in the Terminal, and the port permission will change from **_crw-rw----_** to **_crw-rw-rw-_**. (You may need enter your password when you use **_sudo_** command, and **you need to repeat these commands when you reconnect your Heltec board or connect from ESP Web Flasher to IDE**). **Remember your device addree** (**/dev/ttyUSB0**).1 ```shell= ls -l /dev/ttyUSB0 sudo usermod -a -G dialout [Your username] sudo chmod a+rw /dev/ttyUSB0 ls -l /dev/ttyUSB0 ``` ![](https://i.imgur.com/yTCyS7y.png) + **Step 6:** Open [**this website**](https://nabucasa.github.io/esp-web-flasher/) and do: + - 1. Connect your device. ![](https://i.imgur.com/w4MIl80.png) + - 2. Press on **Erase** then **Ok** to delete files from your board: ![](https://i.imgur.com/5mnu2ib.png) ![](https://i.imgur.com/LVTisTs.png) ![](https://i.imgur.com/VCSjiX7.png) + - 3. Choose **Offset**, upload **Downloaded Files**, and then press program to write firmware to your board. (It takes a while and during this time don’t disconnect your board from the USB cable) ![](https://i.imgur.com/ZUnwtRK.png) ![](https://i.imgur.com/tgNj2I6.png) :::success **You are now ready for the next step to run code on your development IDE. Follow the steps below:** ::: + **Step 1:** Open your Atom IDE and at the bottom, you see the Pymakr plugin. Then open `Settings` on Pymakr and choose `Global settings`. Remove the check box selection from `Safe-boot before upload`. ![](https://i.imgur.com/xTCseEy.png) + **Step 2:** Enter the device com port into the `Device address (list)` field. ![](https://i.imgur.com/4ol2E5P.png) :::info It would be good to disconnect your device and restart Atom. Remeber to enter commands in your Terminal again. ```shell= ls -l /dev/ttyUSB0 sudo usermod -a -G dialout [Your username] sudo chmod a+rw /dev/ttyUSB0 ls -l /dev/ttyUSB0 ``` ::: + **Step 3:** Open Atom, click on `Connect device` in Pymakr and choose your Device Address (**/dev/ttyUSB0**). ![](https://i.imgur.com/ifY23PU.png) + **Step 4:** Confirm the success by entering `print("Hello from Heltec")` and the board shows it in REPL. ![](https://i.imgur.com/P2GQPVM.png) :::warning If you press the “RST” button your board goes into the following state, and it is because this firmware is a PyCom MicroPython and the reset button is not defined. You should: 1. Close REPL tab on Atom. 2. Disconnect the board from USB and connect it again 3. Open REPL again like “Step 7” above. ![](https://i.imgur.com/Y3fnHib.png) ::: + **Step 5:** We are ready to make our first project now. Create a folder on your computer like; ( `First Project` ). + **Step 6:** In Atom click on `Add Folder` from the left panel then open created folder. + **Step 7:** Right-click on your project folder from the left panel and choose `New File` to create a new file, in the opened box enter `main.py` and press enter. :::info All projects must have `main.py` which is the start point for code execution. ::: + **Step 8:** Copy the following lines in `main.py` and save it. ```python= from machine import Pin # Used for LED pin addressing import time # Used for the delay between blinking led = Pin('P22', mode=Pin.OUT) # Used LED pin as output # Loop for blinking while True: led.value(1) time.sleep(1) led.value(0) time.sleep(1) ``` + **Step 9:** Now upload the file to your board from the upload project button: ![](https://i.imgur.com/b29YodT.png) + **Step 10:** The LED on your board starts to blink and the REPL is not accessible anymore because of your loop. To stop blinking press Ctrl+c in the REPL section. :::info Everytime you disconnect/connect your Heltec board in Ubuntu you must give access to it by following commands: ```shell= sudo usermod -a -G dialout [Your username] sudo chmod a+rw /dev/ttyUSB0 ``` ::: :::success You are now successfully finished Part 1 of four parts tutorial, It is a good idea to read more about MicroPython **Tutorials and Examples** from [**Pycom (here)**](https://docs.pycom.io/tutorials/) and try different code to learn more. Good Luck! ::: *[REPL]: Read-Evaluate-Print Loop <style> .markdown-body code{ font-size: 1em !important; } .markdown-body .a{ font-size: 5em !important; } .markdown-body pre { background-color: #333; border: 1px solid #333 !important; color: #dfdfdf; font-weight: 600; } .token.operator, .token.entity, .token.url, .language-css .token.string, .style .token.string { background: #000; } .markdown-body table { display: table; padding: 1em; width: 100%; } .markdown-body table th, .markdown-body table td, .markdown-body table tr { border: none !important; } .markdown-body table tr { background-color: transparent !important; border-bottom: 1px solid rgba(0, 0, 0, 0.2) !important; } </style>