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.

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.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.

  2. 1.2

    Blink

    Runs here

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

  3. 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.

  4. 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.

  5. 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.

  6. 4.1

    Breathing LED

    Runs here

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

  7. 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.

  8. 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.

  9. 5.2

    Gradient Color Light

    Runs here

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

  10. 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.

  11. 6.2

    Rainbow Light

    Runs here

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

  12. 7.1

    Doorbell

    Runs here

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

  13. 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.

  14. 8.1

    Serial Print

    Runs here

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

  15. 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.

  16. 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.

  17. 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.

  18. 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.

  19. 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.

  20. 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.

  21. 11.3

    Soft Rainbow Light

    Runs here

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

  22. 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.

  23. 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.

  24. 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.

  25. 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.

  26. 16.1

    7-Segment Display.

    Runs here

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

  27. 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.

  28. 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.

  29. 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.

  30. 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.

  31. 18.1

    Servo Sweep

    Runs here

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

  32. 18.2

    Servo Knop

    Runs here

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

  33. 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.

  34. 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.

  35. 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.

  36. 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.

  37. 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.

  38. 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.

  39. 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.

  40. 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.

  41. 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.

  42. 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.

  43. 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.

  44. 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.

  45. 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.

  46. 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.

  47. 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.

  48. 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.

  49. 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.

  50. 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.

  51. 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.

  52. 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.

  53. 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.

  54. 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.

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)
  1. MicroPython serial echo: input() on an ESP32
  2. MicroPython serial print: the ESP32’s running time
  3. MicroPython WiFi access point mode on an ESP32
  4. MicroPython WiFi station mode on an ESP32
  5. MicroPython joystick on GPIO 36, 39 and 14
  6. MicroPython NeoPixel: eight WS2812 LEDs on GPIO 2
  7. MicroPython rainbow on eight NeoPixels
  8. MicroPython servo sweep on GPIO 15
  9. DevKitC blink
  10. MicroPython blink on ESP32 GPIO 2
  11. MicroPython breathing LED with PWM on GPIO 2
  12. MicroPython DHT sensor: temperature and humidity
  13. MicroPython flowing light on a ten-segment LED bar
  14. MicroPython color wheel on a common-anode RGB LED
  15. MicroPython random colors on a common-anode RGB LED
  16. MicroPython knob points a servo: GPIO 34 and 15
  17. MicroPython button on GPIO 13 lights an LED
  18. MicroPython dimmer: a knob on GPIO 36, an LED on 25
  19. MicroPython night lamp: a photoresistor dims an LED
  20. MicroPython motion sensor lights an LED
  21. MicroPython table lamp: a button toggles an LED
  22. Motion light
  23. MicroPython doorbell: a button sounds a buzzer
Intermediate (18)
  1. MicroPython WiFi AP and station at once on an ESP32
  2. MicroPython 4x4 keypad on an ESP32
  3. MicroPython I2C LCD1602: hello and a counter
  4. MicroPython MPU6050 accelerometer and gyroscope
  5. MicroPython stepper motor on a ULN2003 board
  6. MicroPython HC-SR04 distance, timed by hand
  7. MicroPython HC-SR04 distance with a driver file
  8. MicroPython knob turns a NeoPixel rainbow
  9. MicroPython meteor light on eight PWM bar segments
  10. MicroPython thermometer: a thermistor on GPIO 36
  11. MicroPython 74HC595 flowing light on an LED bar
  12. MicroPython 7-segment digit through a 74HC595
  13. MicroPython DHT readings on an I2C LCD
  14. MicroPython infrared remote codes on GPIO 15
  15. MicroPython color mixer: three knobs, one RGB LED
  16. MicroPython alarm siren on a passive buzzer
  17. MicroPython remote sets an LED’s brightness
  18. MicroPython relay switches a motor: button on 15
Advanced (3)
  1. MicroPython four-digit display, multiplexed
  2. MicroPython knob drives a motor both ways, L293D
  3. 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.

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.

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.

QR code for mokxi.com/k/freenove-esp32

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.

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.