Source: https://mokxi.com/kits/companion/freenove-ultimate-starter-kit-esp32-wrover
Updated: 2026-11-07

Kits / Kit companions
Kit companion

# Freenove Ultimate Starter Kit for ESP32-WROVER: lesson by lesson, simulated

Every project of the kit’s Python tutorial, chapter by chapter, as a MicroPython program that runs on a simulated ESP32 in your browser, on the GPIO numbers the tutorial’s code uses: from a blinking LED to a keypad door lock and joining WiFi.

Open the first lesson Find your lesson What else it can build

Not affiliated with Freenove. Lesson titles are referenced so you can follow along.

Lesson by lesson

## Every lesson in the kit’s order

Lesson numbers and titles follow the Python tutorial of fnk0047-docs v1.0.0. Each circuit uses the kit’s parts on the pins the lesson uses.

44 of the 54 lessons with a circuit run here, 7 of them with a change we name, 10 coming soon.

1.1

### Blink

Runs here

GPIO 2 switches on and off once a second. On the kit’s board that is its own LED; here an LED on GPIO 2 blinks with the DevKitC’s blue one.

Open in the editor MicroPython blink on ESP32 GPIO 2

1.2

### Blink

Runs here

The same program, now blinking an LED and a 220 ohm resistor on the breadboard from GPIO 2.

Open in the editor MicroPython blink on ESP32 GPIO 2

2.1

### Button & LED

Runs here

A push button on GPIO 13 with a 10k pull-up: the LED on GPIO 2 is lit while the button is held.

Open in the editor MicroPython button on GPIO 13 lights an LED

2.2

### MINI table lamp

Runs here

Each press of the button flips the LED on or off, like a lamp switch, with the contact bounce filtered out.

Open in the editor MicroPython table lamp: a button toggles an LED

3.1

### Flowing Light

Runs here

A ten-segment LED bar on ten GPIOs, a 220 ohm on each segment: one segment runs up the bar and back.

Open in the editor MicroPython flowing light on a ten-segment LED bar

4.1

### Breathing LED

Runs here

PWM on GPIO 2 ramps the LED’s duty up and down, so it fades in and out.

Open in the editor MicroPython breathing LED with PWM on GPIO 2

4.2

### Meteor Flowing Light

Runs here

Eight bar segments on eight PWM channels: a bright head with a dimming tail sweeps up the bar and back.

Open in the editor MicroPython meteor light on eight PWM bar segments

5.1

### Random Color Light

Runs here

A common-anode RGB LED on GPIO 4, 2 and 15 jumps to a random color five times a second.

Open in the editor MicroPython random colors on a common-anode RGB LED

5.2

### Gradient Color Light

Runs here

The same RGB LED walks smoothly around the color wheel, red to green to blue.

Open in the editor MicroPython color wheel on a common-anode RGB LED

6.1

### NeoPixel

Runs here

Eight WS2812 LEDs on GPIO 2, filled one by one in red, green, blue and white with the neopixel module.

Open in the editor MicroPython NeoPixel: eight WS2812 LEDs on GPIO 2

6.2

### Rainbow Light

Runs here

A color wheel spread across the eight LEDs, turning a step at a time.

Open in the editor MicroPython rainbow on eight NeoPixels

7.1

### Doorbell

Runs here

Hold the button on GPIO 4 and an active buzzer, switched by an S8050 from GPIO 13, sounds.

Open in the editor MicroPython doorbell: a button sounds a buzzer

7.2

### Alertor

Runs here

A passive buzzer on the same transistor wails like a siren while the button is held, its pitch following a sine wave.

Open in the editor MicroPython alarm siren on a passive buzzer

8.1

### Serial Print

Runs here

print() sends a greeting and then the board’s running time to the Serial Monitor every second.

Open in the editor MicroPython serial print: the ESP32’s running time

8.2

### Serial Read and Write

Runs here

Type a line in the Serial Monitor: input() reads it and the board answers with what you typed.

Open in the editor MicroPython serial echo: input() on an ESP32

9.1

### Read the Voltage of Potentiometer

Coming soon

A potentiometer on the ADC, its reading written to the DAC on GPIO 25 so an LED follows the knob.

The simulated ESP32 has no DAC yet, so machine.DAC cannot drive the LED. The knob and the ADC alone run in 11.1.

10.1

### Read Touch Sensor

Coming soon

A bare jumper on a touch pin, and its capacitive reading printed as you touch it.

The simulated ESP32 has no touch sensor yet, so machine.TouchPad has nothing to read.

10.2

### Touch Lamp

Coming soon

A touch on the jumper wire turns the LED on or off.

It needs the touch sensor, which the simulated ESP32 does not have yet.

11.1

### Soft Light

Runs here

A potentiometer on GPIO 36 sets the PWM brightness of the LED on GPIO 25.

The tutorial’s drawing puts the knob on GPIO 4; its Python code reads GPIO 36, which is what is wired here.

Open in the editor MicroPython dimmer: a knob on GPIO 36, an LED on 25

11.2

### Soft Colorful Light

Runs here

Three knobs on GPIO 36, 39 and 34 mix the red, green and blue of an RGB LED on GPIO 15, 2 and 5.

Wired to the pins the Python code uses; the drawing shows the C chapter’s pins.

Open in the editor MicroPython color mixer: three knobs, one RGB LED

11.3

### Soft Rainbow Light

Runs here

A knob on GPIO 36 turns a rainbow on the eight NeoPixels on GPIO 2.

Open in the editor MicroPython knob turns a NeoPixel rainbow

12.1

### NightLamp

Runs here

A photoresistor and a 10k on GPIO 36: the darker it gets, the brighter the LED on GPIO 25.

Wired to the pins the Python code uses (GPIO 36 and 25); the drawing shows GPIO 4 and 12.

Open in the editor MicroPython night lamp: a photoresistor dims an LED

13.1

### Thermometer

Runs here

A thermistor and a 10k on GPIO 36, turned into degrees Celsius with the beta equation.

Wired to GPIO 36, which the Python code reads; the drawing shows GPIO 4. The ADC is set to its straight 6 dB range, so the reading is not bent by the 11 dB curve.

Open in the editor MicroPython thermometer: a thermistor on GPIO 36

14.1

### Joystick

Runs here

A joystick with X on GPIO 36, Y on 39 and its switch on 14, printed once a second.

Wired to the pins the Python code uses; the drawing shows the C chapter’s GPIO 13 and 12.

Open in the editor MicroPython joystick on GPIO 36, 39 and 14

15.1

### Flowing Water Light

Runs here

A 74HC595 on GPIO 14, 12 and 13 walks one lit segment along eight bars of the LED bar graph.

OE is tied to ground, as in the tutorial’s drawing, so the outputs are always on; the tutorial’s code also names GPIO 5 for OE, which is left unwired here.

Open in the editor MicroPython 74HC595 flowing light on an LED bar

16.1

### 7-Segment Display.

Runs here

A 74HC595 on GPIO 15, 2 and 4 drives a common-anode digit, counting 0 to F.

Open in the editor MicroPython 7-segment digit through a 74HC595

16.2

### 4-Digit 7-Segment Display

Runs here

The 74HC595 sets the segments, GPIO 25, 26, 27 and 14 pick the digit, and 0123 is multiplexed.

Open in the editor MicroPython four-digit display, multiplexed

16.3

### LED Matrix

Coming soon

Two 74HC595s scan a bare 8x8 LED matrix to draw a smiley and scroll characters.

The kit’s bare 8x8 LED matrix is not simulated yet. The MAX7219 matrix module is, if you want to try a matrix now.

17.1

### Relay & Motor

Runs here

Each press of the button on GPIO 15 flips a relay through an S8050 on GPIO 13, and the relay runs a motor.

The motor runs from the board’s 5 V here; the lesson powers it from a 9 V battery on the extension board.

Open in the editor MicroPython relay switches a motor: button on 15

17.2

### Control Motor with Potentiometer

Runs here

A knob on GPIO 36 drives a motor both ways on an L293D: enable on 13, inputs on 12 and 14.

The motor supply comes from the board’s 5 V rather than the 9 V battery.

Open in the editor MicroPython knob drives a motor both ways, L293D

18.1

### Servo Sweep

Runs here

A servo on GPIO 15 sweeps from 0 to 180 degrees and back with 50 Hz PWM.

Open in the editor MicroPython servo sweep on GPIO 15

18.2

### Servo Knop

Runs here

A potentiometer on GPIO 34 points the servo on GPIO 15.

Open in the editor MicroPython knob points a servo: GPIO 34 and 15

19.1

### Stepper Motor

Runs here

A 28BYJ-48 on its ULN2003 board, IN1 to IN4 on GPIO 14, 27, 26 and 25: one turn each way.

Open in the editor MicroPython stepper motor on a ULN2003 board

20.1

### LCD1602

Runs here

An I2C LCD1602 with SDA on GPIO 13 and SCL on 14 says hello and counts.

The display is driven by a small lcd1602.py of Mokxi’s own in place of the tutorial’s two driver files.

Open in the editor MicroPython I2C LCD1602: hello and a counter

21.1

### Ultrasonic Ranging

Runs, with a change

An HC-SR04 with TRIG on GPIO 13 and ECHO on 14, its echo timed by hand with ticks_us().

A 1k and a 2k on ECHO bring its 5 V signal down to the 3.3 V the pin takes; the tutorial wires ECHO straight to the pin.

Open in the editor MicroPython HC-SR04 distance, timed by hand

21.2

### Ultrasonic Ranging

Runs, with a change

The same sensor read through a small driver file, which does the timing.

A 1k and a 2k on ECHO bring its 5 V signal down to the 3.3 V the pin takes; the tutorial wires ECHO straight to the pin.

Open in the editor MicroPython HC-SR04 distance with a driver file

22.1

### Matrix Keypad

Runs here

A 4x4 keypad with rows on GPIO 14, 27, 26, 25 and columns on 13, 21, 22, 23: each key printed as it is pressed.

Open in the editor MicroPython 4x4 keypad on an ESP32

22.2

### Keypad Door

Runs here

Type 1234 and the servo on GPIO 19 opens the door; each key beeps a buzzer on GPIO 18, a wrong code beeps long.

Open in the editor MicroPython keypad door lock with a servo

23.1

### Infrared Remote Control

Runs here

An IR receiver on GPIO 15 with a 10k pull-up: each remote button’s code is printed.

Open in the editor MicroPython infrared remote codes on GPIO 15

23.2

### Control LED through Infrared Remote

Runs here

Remote keys 0 to 3 set the brightness of the LED on GPIO 14, with a beep from the buzzer on GPIO 13.

Open in the editor MicroPython remote sets an LED’s brightness

24.1

### Hygrothermograph

Runs, with a change

A temperature and humidity sensor on GPIO 13 with a 10k pull-up, read every two seconds with the dht module.

The kit’s DHT11 is played by a DHT22, read with dht.DHT22: the simulated DHT11 does not answer MicroPython on the ESP32 yet. The wiring is the same.

Open in the editor MicroPython DHT sensor: temperature and humidity

24.2

### Hygrothermograph

Runs, with a change

The sensor on GPIO 18, its temperature and humidity shown on the I2C LCD1602.

The kit’s DHT11 is played by a DHT22, read with dht.DHT22: the simulated DHT11 does not answer MicroPython on the ESP32 yet. The wiring is the same.

Open in the editor MicroPython DHT readings on an I2C LCD

25.1

### Infrared Motion Detector with LED Indicator

Runs here

An HC-SR501 motion sensor on GPIO 14 lights the LED on GPIO 13 while it sees movement.

Open in the editor MicroPython motion sensor lights an LED

26.1

### Read a MPU6050 Sensor Module

Runs here

An MPU6050 on I2C (SCL 14, SDA 13): acceleration and rotation, raw and in g and degrees per second.

The registers are read with machine.I2C directly, in place of the tutorial’s mpu6050.py driver.

Open in the editor MicroPython MPU6050 accelerometer and gyroscope

27.1

### Bluetooth Low Energy Data Passthrough

Coming soon

A Bluetooth LE serial link between the board and a phone app.

MicroPython’s bluetooth module needs the ESP32’s radio, which is not simulated for MicroPython yet.

27.2

### Bluetooth Control LED

Coming soon

A phone sends "led_on" or "led_off" over Bluetooth LE to switch an LED.

It needs MicroPython’s bluetooth module, which is not simulated yet.

28.1

### Station mode

Runs, with a change

The board joins a WiFi network as a client and prints the address it is given.

It joins Mokxi’s simulated access point (named in the board’s WiFi properties), not your router.

Open in the editor MicroPython WiFi station mode on an ESP32

28.2

### AP mode

Runs, with a change

The board starts its own hotspot and prints its settings.

The hotspot starts, but nothing can join it in the simulator, and its IP settings are left at the defaults.

Open in the editor MicroPython WiFi access point mode on an ESP32

28.3

### AP+Station mode

Runs, with a change

A hotspot of its own and a client connection to a router, both at once.

The client joins Mokxi’s simulated access point, and nothing can join the hotspot.

Open in the editor MicroPython WiFi AP and station at once on an ESP32

29.1

### As Client

Coming soon

The board opens a TCP connection to a program on your computer and echoes what it sends.

There is no computer on the simulated network to connect to, so a raw TCP client has nowhere to go.

29.2

### As Server

Coming soon

The board listens on a TCP port for a program on your computer and echoes what it receives.

Nothing on the simulated network can open a raw TCP connection to the board on that port yet.

30.1

### Camera Web Server

Coming soon

The board’s camera streams video to a web page it serves over WiFi.

It needs a separate camera firmware and the camera module, neither of which is simulated.

31.1

### Soldering a Buzzer

Coming soon

A doorbell soldered on perfboard: a button sounds a buzzer and lights an LED, with no board and no code.

Mokxi does not model soldering on perfboard. The same doorbell idea runs in 7.1.

31.2

### Soldering a Flowing Water Light

Runs here

The 74HC595 running light, soldered: the same program and pins as 15.1.

Built on a breadboard here, with the LED bar graph in place of eight separate LEDs.

Open in the editor MicroPython 74HC595 flowing light on an LED bar

Lesson list and pins read from Freenove’s online tutorial. The explanations on this page are our own.

Learning path

## Everything the Freenove Ultimate Starter Kit for ESP32-WROVER can build

44 projects use only the parts in this box, ordered from a first blink to the hardest.

Beginner (23)

- MicroPython serial echo: input() on an ESP32
- MicroPython serial print: the ESP32’s running time
- MicroPython WiFi access point mode on an ESP32
- MicroPython WiFi station mode on an ESP32
- MicroPython joystick on GPIO 36, 39 and 14
- MicroPython NeoPixel: eight WS2812 LEDs on GPIO 2
- MicroPython rainbow on eight NeoPixels
- MicroPython servo sweep on GPIO 15
- DevKitC blink
- MicroPython blink on ESP32 GPIO 2
- MicroPython breathing LED with PWM on GPIO 2
- MicroPython DHT sensor: temperature and humidity
- MicroPython flowing light on a ten-segment LED bar
- MicroPython color wheel on a common-anode RGB LED
- MicroPython random colors on a common-anode RGB LED
- MicroPython knob points a servo: GPIO 34 and 15
- MicroPython button on GPIO 13 lights an LED
- MicroPython dimmer: a knob on GPIO 36, an LED on 25
- MicroPython night lamp: a photoresistor dims an LED
- MicroPython motion sensor lights an LED
- MicroPython table lamp: a button toggles an LED
- Motion light
- MicroPython doorbell: a button sounds a buzzer

Intermediate (18)

- MicroPython WiFi AP and station at once on an ESP32
- MicroPython 4x4 keypad on an ESP32
- MicroPython I2C LCD1602: hello and a counter
- MicroPython MPU6050 accelerometer and gyroscope
- MicroPython stepper motor on a ULN2003 board
- MicroPython HC-SR04 distance, timed by hand
- MicroPython HC-SR04 distance with a driver file
- MicroPython knob turns a NeoPixel rainbow
- MicroPython meteor light on eight PWM bar segments
- MicroPython thermometer: a thermistor on GPIO 36
- MicroPython 74HC595 flowing light on an LED bar
- MicroPython 7-segment digit through a 74HC595
- MicroPython DHT readings on an I2C LCD
- MicroPython infrared remote codes on GPIO 15
- MicroPython color mixer: three knobs, one RGB LED
- MicroPython alarm siren on a passive buzzer
- MicroPython remote sets an LED’s brightness
- MicroPython relay switches a motor: button on 15

Advanced (3)

- MicroPython four-digit display, multiplexed
- MicroPython knob drives a motor both ways, L293D
- MicroPython keypad door lock with a servo

Level up

## Add a few parts, unlock more projects

The smallest shopping lists that open the most new projects for the Freenove Ultimate Starter Kit for ESP32-WROVER.

### Add Slide switch

Unlocks 3 more projects:

- Hello, breadboard
- Three-way switch
- NPN transistor switch

### Add Multimeter and Slide switch

Unlocks 5 more projects:

- A divider, measured
- Hello, breadboard
- Three-way switch
- NPN transistor switch
- LED I-V curve

### Add Capacitor, Multimeter and Slide switch

Unlocks 7 more projects:

- A divider, measured
- Operating point and sweep
- Hello, breadboard
- Three-way switch
- The rest of the dial
- NPN transistor switch
- and 1 more

Two kits

## Projects that combine two kits

Own another kit as well? These need parts from both boxes, and neither can build them alone.

### With the SunFounder Universal Maker Sensor Kit

180 projects:

- Active buzzer
- Active buzzer module on pin 3
- Keypad on pins 11 to 4
- Membrane keypad on pins 9 to 2
- Morse code on an active buzzer (pin 9)
- and 175 more

### With the ELEGOO UNO R3 Basic Starter Kit

133 projects:

- DHT11 temperature and humidity
- DHT11 module on pin 4
- DHT11 temperature and humidity on pin 10
- I2C LCD1602: find its address, then say hello
- Joystick on A0, A1 and pin 2
- and 128 more

### With the Arduino Starter Kit

128 projects:

- Active buzzer
- Active buzzer module on pin 3
- DHT11 temperature and humidity
- DHT11 module on pin 4
- DHT11 temperature and humidity on pin 10
- and 123 more

### With the Vilros Arduino Uno 3 Ultimate Starter Kit

113 projects:

- Active buzzer
- Active buzzer module on pin 3
- DHT11 temperature and humidity
- DHT11 module on pin 4
- DHT11 temperature and humidity on pin 10
- and 108 more

In the box

## The kit’s parts, and what plays them here

The parts in the Freenove Ultimate Starter Kit for ESP32-WROVER, by the names its maker gives them. Each one is in the editor’s parts panel.

- ESP32-WROVER board ESP32-DevKitC V4 Plays the kit’s board: the same ESP32 chip and the same GPIO numbers.
- GPIO Extension Board and breadboard The parts are wired straight to the board’s pins here, so the extension board is not drawn.
- LEDs LED
- LED bar graph LED bar graph, 10 segments
- RGB LED RGB LED Set to common anode, as the kit’s is.
- Freenove 8 RGB LED Module Addressable RGB LEDs Eight WS2812 LEDs in a strip.
- 220 ohm, 1k and 10k resistors Resistor
- Push buttons Pushbutton
- Rotary potentiometers Potentiometer
- Photoresistor Light sensor
- Thermistor Thermistor, 10k NTC
- NPN transistors (8050) Transistor (NPN or PNP) Set to S8050.
- Rectifier diode Diode
- Active buzzer Buzzer
- Passive buzzer Piezo speaker
- Relay DPDT relay
- DC motor DC motor
- L293D Motor driver, L293D
- Servo Hobby servo
- Stepper motor and ULN2003 driver Stepper motor, 28BYJ-48 with ULN2003
- Joystick Thumb stick
- MPU6050 module Accelerometer and gyroscope, MPU6050
- 74HC595 74HC595 shift register
- I2C LCD1602 module Character LCD with I2C backpack
- 1-digit 7-segment display Seven segment display
- 4-digit 7-segment display Four-digit seven segment, multiplexed
- 4x4 keypad Keypad, 4x4
- Infrared receiver Infrared receiver, VS1838B
- Infrared remote Infrared remote, 21 buttons
- DHT11 Temperature and humidity, DHT22 Played by a DHT22 here, wired the same way.
- Infrared motion sensor (HC-SR501) Motion sensor
- Ultrasonic ranging module (HC-SR04) Ultrasonic ranger
- LED matrix (8x8) Not simulated yet; the MAX7219 matrix module is.
- Camera Not simulated: the camera lesson needs its own firmware and the camera module.
- Perfboard and pin headers The soldering projects are built on a breadboard here.
- USB cable and jumper wires The editor connects the board for you, and wires are drawn between pins.

For the manual

## A link and a QR code for this page

Print either one beside a lesson, or tape it inside the box lid. Both open this page.

mokxi.com/k/freenove-esp32

The code is black on white with a quiet border, so it prints and scans at any size from 2 cm up.
Download the QR code (SVG)
Make kits? See what we offer kit makers.

FAQ

## Questions about this page

Is this made by Freenove?

No. Mokxi is independent and is not affiliated with Freenove. The page follows the kit’s lessons so you can use the two side by side; the circuits, sketches and explanations are Mokxi’s own.

Do I need the kit?

No. Every lesson that runs here runs in the browser, so you can try them before you buy a kit, or keep going while a part is missing or broken.

Is the code the same as in my manual?

The pins and the parts are the same, and the programs are MicroPython running on the real MicroPython firmware, with the same built-in modules. The code itself is written for this page, with comments that explain each step, and a few small drivers of our own stand in for the kit’s driver files, so it will not match the manual line for line.

What do "with a change" and "coming soon" mean?

A lesson marked "with a change" runs, but something differs from the kit, and the note under it says exactly what. "Coming soon" means we cannot simulate that lesson yet, and the note says why. We do not mark a lesson as running unless it does.

Is it free?

Yes. Every lesson on this page opens with no account. A free account saves your own copies of the circuits.

Keep going

## Other kits

Companion pages for more starter kits.

ELEGOO UNO R3 Super Starter Kit

25 lessons, 24 run in the browser

ELEGOO UNO R3 Most Complete Starter Kit

48 lessons, 44 run in the browser

Arduino Starter Kit

15 lessons, 15 run in the browser

Freenove Ultimate Starter Kit

42 lessons, 42 run in the browser

ELEGOO UNO R3 Basic Starter Kit

11 lessons, 10 run in the browser

SunFounder Starter Kit for Arduino Uno R3

23 lessons, 23 run in the browser

SunFounder Inventor Lab Kit

34 lessons, 33 run in the browser

Keyestudio 37 in 1 Sensor Kit

37 lessons, 37 run in the browser

REXQualis UNO R3 Super Starter Kit

22 lessons, 21 run in the browser

LAFVIN Super Starter Kit

28 lessons, 27 run in the browser

SunFounder Kepler Kit for Raspberry Pi Pico W

63 lessons, 48 run in the browser

Freenove Ultimate Starter Kit for Raspberry Pi Pico

56 lessons, 50 run in the browser

keyestudio Super Starter Kit

Projects you can build with its parts

Vilros Arduino Uno 3 Ultimate Starter Kit

Projects you can build with its parts

SunFounder Universal Maker Sensor Kit

Projects you can build with its parts

SunFounder ESP32 Ultimate Starter Kit

Projects you can build with its parts

Adafruit MetroX Classic Kit

Projects you can build with its parts

MonkMakes Electronics Kit 1 for Raspberry Pi Pico

Projects you can build with its parts

Kitronik Discovery Kit for Raspberry Pi Pico

Projects you can build with its parts

Kitronik Inventor’s Kit for the Raspberry Pi Pico

Projects you can build with its parts

Keyestudio ESP32 Learning Kit Ultimate Edition

Projects you can build with its parts

## Start at lesson one

Every project opens in the editor with no account and nothing to install. Run it, change a number, run it again.

See the lessons
