Docs

Everything Mokxi does, written down

Start with Getting started, or search for what you need.

Getting started

Open the editor, find your way around it, and build something that runs.

The editor

Parts, wires, code, Run, and everything around them.

Placing parts
The docked part panel: search, categories, thumbnails, and three ways to get a part onto the canvas.
Wiring
Drag between pins and holes, recolour, bend, name a net, and hide a family in the layers panel.
Sticky notes
A square of paper on the board: what a corner of the circuit is for, in your own words.
Drawing on the canvas
Pen strokes, arrows and boxes over the circuit, on a layer of their own that the simulator never sees.
Tidying up
Lay the wires out again so none of them lies on another, and line the parts up on the breadboard grid.
Pinned comments
A numbered pin on the board with a conversation behind it: a question about one resistor, answered in place, without typing anything into the circuit.
Frames
A labeled box around a corner of the board. Drag its title bar and everything inside goes with it, so "the power supply" moves as one thing.
Reusable blocks
A bit of circuit you built once, kept by name and dropped in again whenever you need it: a voltage divider, a debounced button, the parts for your display.
Making chips
Build a circuit once, package it into a named chip, and place it as often as you like, inside other chips too.
The code editor and compiling
One project per board, a real clang running in the tab, and diagnostics you can click.
Run and the serial monitor
What Run actually does, what the readout means, and how to talk to a board.
The serial plotter
Graph the numbers your sketch prints, in the Plot tab beside Serial.
The operating point, sweeps and frequency response
Three readings one probe will not give you: every node's voltage at once, what a node does as you turn something, and what the circuit does at every frequency.
The debugger
Stop a board on a line of your own code, look at what it was doing, and step through it while the circuit stays exactly where the halt found it.
Ask: questions about your circuit
Ask a model about the circuit on the canvas and the code that runs it, in the Ask tab beside Serial, on your own API key from the AI provider you pick.
WiFi, simulated
The board can join a network, fetch a page and serve one. The radio is simulated: there is no 802.11, no real internet, and the WiFi runtime is ours.
Real internet
Pro lets a WiFi board's sketch reach the real internet: real web services over HTTP and HTTPS, and public MQTT brokers. It is off until you turn it on.
The properties panel
What you can change about a selected part or wire, and where the values go.
Undo, copy and paste
How far back undo goes, what copy takes, and what paste does with it.
Keyboard shortcuts
Every key the editor listens for, and the one rule about when it does not.
Saving and autosave
What the browser keeps, what the account keeps, and when each of them writes.
Sharing a project
The share sheet, who has access, what the link does, forking, and embedding a running circuit in a page.
Exporting PNG and SVG
A picture of the circuit, at what size, and which plans it is on.
Send a program to a real board
How to get a sketch from Mokxi onto your Arduino, ESP32 or Pico, on a computer, a Chromebook or an iPad.
VS Code and GitHub with Mokxi
Keep your projects in your own GitHub repository, edit the code in VS Code, and run it in Mokxi.
SPICE netlists
Run a SPICE deck and plot the results, export a circuit as a .cir file, or import a netlist as parts and wires.
Working on a phone
The stacked layout, the bottom sheet, and two fingers on the canvas.
Install it as an app
How to add Mokxi to your home screen or dock from your browser, and what it changes.

Boards

Every board and the bare ATtiny85 chip: what each one models and what it leaves out.

The Arduino Uno
An ATmega328P at 16 MHz, what is modeled, and the sketches that ship with it.
The Arduino Nano
The Uno's chip on a board 45 by 18 mm, so it pushes into the breadboard instead of standing beside it, and two analog inputs an Uno has no pad for.
The Arduino Mega 2560
The Arduino for a project that ran out of pins: fifty-four digital, sixteen analog, four serial ports, on an ATmega2560 at 16 MHz.
The Arduino Leonardo
The Arduino whose USB socket goes to the chip itself: an ATmega32U4 at 16 MHz, with Serial on the USB and Serial1 a port of its own on pins 0 and 1.
The ESP32-C3
A RISC-V core at 160 MHz on the real memory map, with no radio and a simulated network in place of one.
The ESP32-C6-DevKitC-1
A second RISC-V board: the same core as the ESP32-C3 at 160 MHz, with thirty-one GPIOs, half a megabyte of SRAM and an addressable RGB LED on GPIO 8.
The Raspberry Pi Pico
An RP2040 on our Cortex-M0+ core: one core, SIO GPIO, the TIMER, UART0, PWM and the ADC.
The Raspberry Pi Pico W
The Pico with a wireless chip on it. The chip is not modeled; the WiFi is simulated and says so, and the LED behind it works.
The Seeed XIAO SAMD21
A board the size of a thumbnail: eleven pads, all of them analog inputs, with Serial on the chip's own USB.
The STM32F411 Black Pill
A Cortex-M4 at 84 MHz with GPIO, four timers, USART1 and SysTick.
The BBC micro:bit V2
An nRF52833 on our Cortex-M4 core: GPIO, GPIOTE, three TIMERs, RTC0, UARTE0 and the 5x5 LED matrix.
The STM32 Blue Pill
An STM32F103C8T6 on our Cortex-M3 core at 72 MHz: GPIO through CRL and CRH, TIM1 to TIM4, USART1, a twelve-bit ADC and SysTick.
The Arduino Uno R4 Minima
The Uno everyone buys now: the same board, the same 5 V pins, an Arm Cortex-M4 underneath instead of an 8-bit AVR.
The ESP32 DevKit V1
The classic ESP32: an Xtensa LX6 at 240 MHz on the thirty-pin DOIT board, with the LEDC PWM controller, a twelve-bit ADC and the six pins that are input only.
The ESP32-S3-DevKitC-1
The ESP32-S3 on an Xtensa LX7 at 240 MHz: Espressif's own DevKitC-1, with its RGB LED on the RMT, two USB sockets, LEDC PWM and a twelve-bit ADC.
The ESP8266 NodeMCU
An ESP8266 board with simulated WiFi, an Xtensa LX106 at 80 MHz, D0 to D8 pins that differ from GPIO numbers, and software PWM.
The ATtiny85
A whole microcontroller in an eight-pin DIP: six I/O, two timers, a four-channel ADC, the USI, and a serial port the runtime bit-bangs for itself.
The Arduino Pro Mini
The Uno's chip on the smallest Arduino there is, with no USB on it, in the two builds it was always sold in: 5 V at 16 MHz, and 3.3 V at 8 MHz.
The Arduino Micro
The Leonardo's ATmega32U4, shrunk onto a board that pushes into a breadboard.
The SparkFun Pro Micro
The Leonardo's chip in a Pro Mini's footprint, with a USB socket on the end, and without the one thing people look for first: an LED on pin 13.
The Wemos D1 mini
The NodeMCU's ESP8266 on a board a third the size, with the same pin names and only the pins that do something.
The ESP-01S
An ESP8266 with its flash chip and an antenna on a module 24.8 by 14.3 mm, and eight pins.
The Seeed XIAO ESP32-C3
The ESP32-C3 on a thumbnail: 21 by 17.5 mm, fourteen pads, a USB-C socket and no LED of its own to blink.
The ESP32-C3 SuperMini
The smallest ESP32-C3 board in common use, and a blue LED wired the other way around from the DevKit's.
The Arduino Uno R4 WiFi
The Uno R4 with a 12 by 8 LED matrix on the board to draw on, and WiFi.
The Seeed XIAO ESP32-C6
The ESP32-C6 on a thumbnail: 21 by 17.5 mm, fourteen pads, USB-C, and a yellow LED that lights on LOW.
The ESP32-DevKitC V4
Espressif's own ESP32 board: a WROOM-32 module on thirty-eight pins named by GPIO, with no user LED.
The Wemos LOLIN32 Lite
A classic ESP32 on a narrow board with a LiPo socket, and a blue LED on GPIO 22 that lights when the pin is LOW.
The Seeed XIAO ESP32-S3
The ESP32-S3 on a thumbnail: 21 by 17.5 mm, fourteen pads, USB-C, and a yellow LED that lights on LOW.
The Arduino Nano ESP32
An ESP32-S3 on the classic Nano outline, with the Nano's pin names, an orange LED on D13 and an RGB LED.
The Arduino Nano RP2040 Connect
The Pico's RP2040 on the classic Nano outline, with the Nano's pin names and an LED on D13.
Boards that are not simulated yet
Some boards come in with a Wokwi project but do not run in Mokxi yet, so they are drawn with an amber ribbon.

Parts

What is in the bin, where each part is documented, and how faithfully it behaves.

Finding a part
The bench, a part page, and the search box in the editor panel.
The part families
The nine categories the parts bin is sorted into, and what lives in each of them.
The bench instruments
Eight bench instruments you can wire into a circuit, with Scope, Plot and Measurements panels to read their results.
How faithfully a part behaves
What "analog islands solved by nodal analysis, digital everywhere else" means when you are the one wiring it.
The parts games are made of
A screen, something to hold, and the four circuits in the gallery that put them together.
LED
A light emitting diode: a real diode with a forward drop, not a resistor that glows.
Filament lamp
A small incandescent bulb in a screw holder, like the flashlight bulbs in school circuit kits. Aliases: bulb, light bulb, incandescent lamp, MES bulb.
Resistor
A true two-terminal resistor: Ohm's law, with no idea which way around it is wired.
Pushbutton (12 mm tactile)
The 12 mm tactile pushbutton in every kit: four pins, and real contact bounce.
VCC (power supply)
A positive supply rail: pick a voltage, and everything wired to it sits there.
GND (ground)
The 0 V reference every other part on the canvas measures against.
Clock
A free-running square wave source: pick a frequency, and it drives high and low forever.
Capacitor
A real capacitor, solved by the matrix rather than approximated part by part.
Inductor
A real inductor, solved by the matrix: the one two-terminal passive whose state is a current rather than a voltage.
Op-amp
An op-amp with a gain-bandwidth product, a slew rate, an output that stops short of its rails, and a current limit. Pick a model, or set the numbers yourself.
Signal generator
A bench signal generator on the canvas: sine, square or triangle, at whatever frequency and amplitude you set.
Function generator
The bench box: sine, square, triangle or sawtooth, with the knobs on the front and a real 50 ohm output.
Oscilloscope
A two-channel oscilloscope: clip it to any two nodes and watch the voltages over time while the circuit runs.
Multimeter
Every range a real handheld has, on a dial you turn on the face: DC and AC volts, DC and AC amps, ohms, continuity, diode, capacitance, frequency and duty.
Bench power supply
Nought to thirty volts, a current limit, and the two lamps that are the whole point of the instrument.
Frequency counter
Clip it on any net and read the frequency, the period, the duty, how long each cycle spends high, and how many pulses have gone by.
Logic probe
The pen with a needle on the end. Touch it on a pin and it tells you one of four things, and the fourth is one no other instrument here can tell you.
Component tester
Three sockets. Push two or three legs of an unknown part into them in any order and it names the part, measures it, and tells you which leg is in which socket.
Logic gate (ideal)
One ideal two-input logic gate: a teaching part, not a chip, with no supply pins to wire up first.
Inverter (ideal)
One ideal inverter: the companion to the ideal gate, with no supply pins and no chip behind it.
Bit switches, lamps and number parts
Switches, lamps, number parts, a constant bit and a step clock: ideal logic parts for building circuits out of gates, with no supply pins.
The program ROM, the terminal and Kestrel assembly
A program ROM that holds Kestrel assembly and a text terminal that shows what it prints: the parts around the computer you build from gates.
Seven-segment display
A single-digit 0.56 inch seven-segment LED display: eight plain LEDs in one package, nothing more.
Slide switch (SPDT)
A three-pin SPDT slide switch: the pole in the middle moves between the two ends as you click it.
Buzzer (active)
A 5 V active piezo buzzer: apply DC the right way around and it makes its one note.
The 74HC logic family
74HC00, 74HC04, 74HC08, 74HC32, 74HC86, 74HC74 and 74HC595. These are real chips, not teaching gates, each with its own page below.
74HC02 quad NOR gate
Four two-input NOR gates in a 14-pin package: the output is high only when both inputs are low.
74HC14 Schmitt-trigger inverter
Six inverters, with the 74HC04's pinout, and one difference that is the whole point of the part: each input has two switching thresholds instead of one.
74HC138 3-to-8 decoder
Three address inputs choose one of eight outputs, and that output goes low while the other seven stay high.
74HC161 synchronous counter
A 4-bit binary counter in which every output changes on the same clock edge.
74HC165 parallel-in shift register
The 74HC595 turned around. The 595 gives you eight outputs from three pins; the 165 gives you eight inputs on three pins.
74HC193 up/down counter
A 4-bit binary counter that counts both ways, with a separate clock for each direction.
CD4017 decade counter
The LED chaser chip: ten outputs, exactly one of them high at a time, and every clock edge moves the high one along to the next.
CD4511 seven-segment driver
Four wires in, one lit digit out: a BCD to seven-segment decoder for a common-cathode display.
DIP switch (4 and 8 way)
A row of tiny slide switches in the body of a chip.
Resistor network (SIP)
Four or eight equal resistors in one single in-line package, every one of them between its own pin and a shared common pin.
NE555 timer
The bipolar 555 timer: the chip in every beginner's kit, modeled down to its own internal comparators and flip-flop.
MAX7219 LED matrix driver
The MAX7219, wired to 8x8 LED matrix modules the cheap boards use: three wires in, and a chainable output.
MAX7219 eight-digit display
Eight red seven-segment digits on a MAX7219 module, three wires in and a cascade out. Aliases: 8-digit MAX7219 module, LedControl display.
WS2812 addressable LEDs
Addressable RGB LEDs on one wire, with no clock: aliases WS2812B, NeoPixel. A strip, a ring, or a 16-wide matrix, all the same part.
SSD1306 OLED display
The 128x64 OLED module every hobby kit has, over I2C. Aliases: 0.96 inch OLED, I2C OLED display.
ILI9341 color TFT
The 2.4 inch 240x320 color TFT panel, over 4-wire SPI. DC says whether a byte is a command or data; everything else follows from that one line.
Thumb stick (joystick)
The two-axis thumb stick module, KY-023 style: two potentiometers and a push switch under one cap.
Rotary encoder (KY-040)
The KY-040 rotary encoder module, with its own push switch: a shaft that counts clicks either way around.
Piezo element (passive)
A passive piezo disc: the other half of the buzzer pair, with no oscillator built in. It sings whatever frequency you drive it at.
Potentiometer
The three-pin rotary potentiometer every kit has a handful of. A carbon track from pin 1 to pin 3, with a wiper on pin 2 that runs along it as the shaft turns.
Slide potentiometer
The 45 mm slide potentiometer off a mixing desk: the same carbon track as the rotary potentiometer, laid out straight with a knob you push along it.
LDR (light-dependent resistor)
A light-dependent resistor, the GL5528 style: a two-legged resistor whose value depends on how much light is falling on it. Aliases: photoresistor, photocell.
Phototransistor
A two-lead NPN phototransistor in a clear 5 mm package, the light sensor in the Arduino Starter Kit.
TMP36 temperature sensor
The TO-92 analog temperature sensor, TMP36 style: three legs, no protocol, and a voltage that is the temperature.
LM35 temperature sensor
The LM35 precision centigrade sensor in a TO-92 case: 10 mV a degree from 0 V at 0 °C. Aliases: LM35DZ, analog temperature sensor.
IR thermometer, MLX90614
The MLX90614 on its GY-906 breakout reads the temperature of whatever it points at, without touching it. Aliases: GY-906, non-contact thermometer.
Thermal camera, AMG8833
The AMG8833 Grid-EYE: an 8x8 thermal camera, sixty-four temperatures ten times a second over I2C. Aliases: Grid-EYE, AMG88xx, 8x8 thermal sensor.
HC-SR04 ultrasonic sensor
The four-pin ultrasonic ranger, HC-SR04 style: two transducer cans, a 5 V supply, and two logic pins. Aliases: ultrasonic sensor, ping sensor.
Servo (hobby, SG90 style)
The nine-gram hobby servo, SG90 style: three wires, and a horn that walks to the angle a pulse width tells it.
Servo, MG996R
The TowerPro MG996R: a standard-size servo with metal gears, for when an SG90 is not strong enough. Aliases: MG996R, metal gear servo, standard servo.
DC motor
A small brushed DC motor, the yellow gearbox kind: two terminals, and nothing driving it.
Gamepad (six-button pad)
A six-button console-style pad: a four-way D-pad plus A and B, each switch to ground on its own pin.
Arcade button (30 mm)
The 30 mm cabinet button with a microswitch under it: the switch you can hold for an hour with no fatigue.
LED arcade button
A 30 mm arcade button with an LED lamp inside: a microswitch on two tabs and a lamp with its resistor on the other two.
Arcade joystick lever
The lever in a fight stick or an arcade cabinet, Sanwa JLF style: a ball top on a shaft with four microswitches around its foot.
Tilt switch (SW-520D)
The rolling-ball tilt sensor, SW-520D and its twins: a little metal can with two legs and a conductive ball rolling between two contacts inside.
Diode
The small-signal and rectifier diode, 1N4148 and 1N400x style: current goes from anode to cathode and not the other way, and that is the whole part.
Zener diode
The 1 W 1N4728A to 1N4742A family. Reverse biased it blocks like any other diode until it reaches its own voltage, and then it holds it there.
Transistor
A small-signal bipolar transistor, NPN and PNP, 2N2222 and BC547 style: a little current into the base lets a much larger one through from collector to emitter.
Optocoupler (4N35)
An infrared LED and a phototransistor sealed in one black DIP-6, facing each other across a gap of clear plastic.
MOSFET
An enhancement-mode MOSFET, N and P channel, 2N7000 and IRF540N style: a voltage on the gate switches the channel between drain and source.
RGB LED
A common-cathode RGB LED in one 5 mm package: four legs, three separate LED dice under one lens.
Two-color LED (KY-011)
A red and a yellow-green LED under one 5 mm lens, sharing a leg. Aliases: bicolor LED, dual color LED, KY-011 (5 mm), KY-029 (3 mm).
Traffic light module
A red, a yellow and a green LED in a row on a small board, each with its own resistor, and four pins. Aliases: traffic light LED module.
Laser module, KY-008
A 650 nm red laser diode in a brass barrel on a three-pin board. Aliases: KY-008, laser transmitter module, laser pointer module.
Relay module (SRD-05VDC style)
The single-channel relay module every kit ships: a coil, a spring, and a metal arm with a contact on the end.
Relay boards: two and four channels
The green boards with a row of blue relays, one screw terminal per relay and a control header at the end.
DPDT relay
A bare 5 V double-pole double-throw signal relay, the small sealed kind: two changeover contacts on one arm, and a coil with nothing in front of it.
L298N motor driver module
The red board with the black heat sink that drives the two wheels of nearly every robot car.
DRV8833 motor driver
A small dual H-bridge breakout for two DC motors, from 2.7 V to 10.8 V, and the driver in many small robot kits.
2WD robot car chassis
The body of nearly every robot car kit: two TT gear motors on 65 mm wheels, a caster and encoder discs, driving across the canvas.
Self-balancing robot
A two-wheel robot that falls over unless your code balances it, with its own MPU6050, TB6612 driver and encoders.
Limit switch (lever microswitch)
A lever microswitch with COM, NO and NC tags: the limit switch on robots, printers, turntables and conveyors.
Robot arm (4 servos)
A four-servo desktop robot arm: base, shoulder, elbow and claw, each an SG90 on its own signal pin.
Claw machine cabinet
A claw machine cabinet with the mechanism inside: gantry, winch, servo claw, prizes and a prize chute. Wire up its motors and the claw moves.
Vending machine cabinet
A vending machine cabinet: four spiral slots on continuous servos, a snack in every coil, and an infrared beam across the bin.
Pinball table
A pinball table you wire up: servo flippers, pop bumpers on a kicker coil, standup targets, a drain beam, a plunger and one steel ball.
Parking barrier
A parking barrier: an MG996R arm, a traffic light and an HC-SR04 on one post, and cars that drive up the lane and wait at the line.
Candy color sorter
A candy color sorter: a feed disc carries each candy under a TCS34725, then drops it on a servo chute that sends it to one of six bins.
Touchless soap dispenser
A touchless soap dispenser: an FC-51 infrared sensor beside the spout and a gear pump under the bottle, with a hand you slide under it.
PCA9685 16-channel servo driver
A 16-channel, 12-bit PWM board that runs sixteen servos from two I2C wires, with the Adafruit PWM Servo Driver library built in.
TB6612FNG motor driver
The Toshiba TB6612FNG dual motor driver on its breakout board: two H bridges for two DC motors. Aliases: TB6612, SparkFun motor driver, dual H-bridge.
L9110S motor driver
The HG7881 dual motor driver module: two L9110S chips, one per motor, on a small blue board. Aliases: L9110, HG7881, L9110S fan driver.
Gear motor with encoder
A gearbox motor with a two-channel Hall encoder, the JGA25-370, N20 or TT kind. Aliases: encoder motor, quadrature encoder motor.
Battery
A 9 V battery, a pack of AA cells or one or two 18650 cells, as a power source. Aliases: 9V battery, AA pack, 18650, Li-ion, 2S pack.
Solar panel
A small solar panel, the 6 V 1 W epoxy kind in STEM kits and solar builds. Aliases: solar cell, photovoltaic panel, PV panel, 6V 1W solar panel.
TP4056 charger
The TP4056 lithium-ion charger module, the small board with a USB socket that charges one 18650 cell. Aliases: Li-ion charger, 18650 charger.
Voltage regulator
A linear voltage regulator: the 7805, the AMS1117-3.3 module or the MCP1700-3.3 low dropout part. Aliases: LM7805, LDO, 3.3 V regulator.
Breadboard power supply (MB102)
The little green board that comes in the Elegoo starter kits and sits on the end of an MB-102 breadboard.
A4988 and DRV8825 stepper drivers
The two small carrier boards that turn a bipolar stepper in every 3D printer and CNC kit.
NEMA 17 stepper motor
The square black motor on every 3D printer's axes: a bipolar hybrid stepper, 17HS4401 style, with two coils, four wires and 200 steps to a turn.
Vibration motor
A 10 mm coin vibration motor, the disc inside every phone and game pad.
Fan module, L9110
A small DC motor with a soft propeller on an L9110S driver board, run straight off two board pins. Aliases: L9110 fan module, mini fan module.
Mini water pump
A thumb-sized submersible pump with an outlet spout and two leads, the pump of every plant-watering build. Aliases: submersible pump, mini pump.
Solenoid
A push-pull solenoid: a coil around a steel plunger that pulls in when current flows and springs back out when it stops.
Speaker (8 ohm)
A small 8 ohm speaker, the 40 mm paper cone in every kit: a coil in a magnet's gap, glued to a cone.
Thermal receipt printer
The mini thermal printer (CSN-A2): 58 mm paper, a 384-dot head and a TTL serial port for text and commands. Aliases: receipt printer, CSN-A2.
4x4 membrane keypad
The 4x4 membrane keypad, the sticky-backed one on a ribbon: sixteen keys, eight pins, and no chip at all.
Keypads: 4x3 and 5x4
The membrane keypad in three sizes: a twelve-key telephone pad, a twenty-key calculator pad, and the 4x4 you already know.
PS/2 keyboard
A real PS/2 keyboard on the two wires it has, with eleven-bit frames and scan code set 2. Click it while the simulation runs and type on it for real.
Handheld console
A games cabinet in one body: a 128x64 OLED above a D-pad, A, B, Start and Select, with a twelve-pin header along the bottom.
16x2 character LCD (HD44780)
The 16 by 2 character LCD, HD44780 style: sixteen pins, and a green or blue window with two rows of sixteen characters behind it.
Capacitive soil moisture sensor
The black "Capacitive Soil Moisture Sensor v1.2" stake: three pins at the head, no bare metal in the soil. Aliases: soil sensor, moisture sensor, plant sensor.
Galvanic skin response sensor
The Grove GSR module: two finger straps on a lead and a small board that turns your skin's conductance into a voltage. Aliases: GSR, skin response, EDA sensor.
MQ-2 gas sensor
The MQ-2 on its FC-22 comparator board: a steel mesh can on six legs, two lamps, a trimmer and four pins. Aliases: gas sensor, smoke sensor, LPG sensor.
KY-038 sound sensor
An electret microphone on an LM393 comparator board with a blue trimmer, pins printed A0 G + D0. Aliases: sound sensor, microphone module, clap sensor.
Flame sensor
The flame sensor module, KY-026 style: a black infrared receiver standing off the end of an LM393 comparator board. Aliases: fire sensor, IR flame sensor.
Rain sensor
The rain sensor, FC-37 and YL-83 style: a plate of interleaved traces wired to an LM393 comparator board. Aliases: raindrop sensor, water sensor plate.
Water level sensor
The red water level sensor from starter kits: ten bare traces up a long board and three pins printed S + -. Aliases: water sensor, liquid level sensor.
Water flow sensor, YF-S201
A pipe section with a magnet on a pinwheel and a Hall sensor outside it, and three wires. Aliases: YF-S201, Hall flow meter, water flow meter.
TCRT5000 line sensor
The TCRT5000 reflective sensor on its LM393 board: a line follower's eye and a short-range object sensor. Aliases: line sensor, IR reflective sensor.
Line tracker, 5 channel
A five-channel line tracking board: five TCRT5000 sensors in a row, each with a comparator and lamp. Aliases: line follower sensor.
FC-51 obstacle sensor
The FC-51 infrared obstacle sensor: an IR LED and receiver on an LM393 board, one digital output. Aliases: KY-032, IR proximity sensor.
SW-420 vibration sensor
The SW-420 vibration sensor: a sealed vibration switch on an LM393 board, one digital output. Aliases: vibration switch, shake sensor.
49E linear Hall sensor
The 49E linear Hall sensor (Honeywell SS49E), a TO-92 whose output follows the magnetic field. Aliases: SS49E, KY-035, analog Hall sensor.
Force-sensing resistor
A force-sensing resistor, Interlink FSR 402 style: a round half-inch pad on a flat tail, with two legs at the end. Aliases: FSR, pressure sensor, force sensor.
Flex sensor
A flex sensor, the 2.2 inch Spectra Symbol strip: thin plastic with carbon ink along one side, two legs at one end. Aliases: bend sensor, flex strip.
HX711 and load cell
The HX711 load cell amplifier on its green board, wired to a bar load cell: the kitchen scale every kit builds. Aliases: load cell, scale, weight sensor.
A3144 Hall effect sensor
The Allegro A3144 Hall effect switch in a flat TO-92, and the magnet you hold up to it. Aliases: Hall sensor, KY-003, magnetic switch.
Slotted photo interrupter
A slotted optical switch on its small board (the KY-010), with an encoder wheel to spin through the slot.
TTP223 touch sensor
The TTP223 capacitive touch module: a small red board with a round pad printed on it. Aliases: touch button, capacitive touch sensor, touch pad.
Capacitive touch, MPR121
The NXP MPR121: twelve capacitive touch electrodes on one I2C chip, here wired to twelve foil keys. Aliases: MPR121, 12-key touch sensor.
Fingerprint sensor
The R30x and AS608 optical fingerprint sensor: templates in its own flash and a serial protocol. Aliases: R307, AS608, ZFM-20, fingerprint reader.
Touch foil
A piece of aluminum foil on a wire: the touch sensor of the CapacitiveSensor library and the Starter Kit's touchy-feely lamp.
Coin acceptor, CH-926
The programmable coin acceptor: a chrome face with a coin slot and a return lever, and a four-wire harness. Aliases: CH-926, multi coin acceptor, coin slot.
RCWL-0516 microwave motion sensor
The RCWL-0516 Doppler radar module: OUT goes high when something moves in range, even through plastic and thin walls.
20x4 character LCD
The big brother of the 16x2: four rows of twenty characters on the same HD44780 controller. Aliases: LCD2004, 2004A, 20x4 LCD.
SH1106 1.3 inch OLED
The 1.3 inch 128x64 OLED module. Aliases: 1.3 inch OLED, SH1106G.
SSD1306 128x32 OLED
The 0.91 inch OLED strip: 128 by 32 pixels on the same SSD1306 as the 128x64 module, on the same two wires at the same address, 0x3C.
ST7735 1.8 inch TFT
The 1.8 inch 128x160 color TFT on the red board with the SD card slot on the back. Aliases: 1.8 inch TFT, ST7735S, 128x160 TFT.
ST7789 IPS TFT
The small IPS color TFTs: the square 1.3 inch 240x240 board, the 2 inch 240x320, and the 1.14 inch 135x240 on the TTGO T-Display.
GC9A01 round display
A 1.28 inch round IPS color display, 240x240 pixels, on a GalaxyCore GC9A01 driven over SPI. Aliases: round TFT, 1.28 inch round LCD, GC9A01A, watch display.
SSD1680 e-paper display, 2.13 inch
A 2.13 inch 250x122 black and white e-paper panel on an SSD1680 over SPI. Aliases: 2.13 inch e-ink, WeAct e-paper, DEPG0213BN.
ILI9341 touch TFT
The red 2.8 inch 240x320 TFT with a resistive touch panel: an ILI9341 display and an XPT2046 touch controller on one board.
Nokia 5110 LCD
The 84x48 screen out of the Nokia 5110 and 3310 phones, on a small board with eight pins. Aliases: Nokia 5110, PCD8544, 84x48 LCD.
LED bar graph
Ten rectangular LEDs side by side in one 20-pin block. Aliases: 10 segment bar graph, DC-10, LED level meter.
Four-digit seven segment display
Four 0.56 inch digits with their decimal points in one block, and no chip behind them.
HT16K33 four-digit display backpack
Four red digits and a colon on an HT16K33 I2C backpack at 0x70 to 0x77. Aliases: Adafruit 7-segment backpack, I2C 4-digit display.
The 16x2 character LCD
Two rows of sixteen characters, on sixteen pins or on four. The HD44780 command set, the busy flag that catches everybody, and the I2C backpack.
Sensors that are a resistor or a switch
The LDR, the NTC thermistor, the reed switch, the tilt switch and the PIR: five cheap parts, four of which have no chip in them at all.
Driving a motor
A board pin cannot run a motor. One transistor will switch one; an L293D will turn one round. What each costs you, and why.
Two wires, several chips
The MPU6050, the DS3231 and the TM1637 all live on two wires. Two of them speak I2C and one of them does not.
DS18B20 1-Wire thermometer
The three-legged digital thermometer, also sold sealed in steel waterproof probes. Aliases: Dallas temperature sensor, 1-Wire probe, 18B20.
MAX6675 thermocouple converter
The MAX6675 board reads a K-type thermocouple up to 1023 degrees C and sends it over a read-only SPI line, a quarter degree a count.
MPU-9250 nine-axis IMU
The InvenSense MPU-9250 on the GY-9250 board: an accelerometer, a gyroscope and an AK8963 compass, all on one I2C bus.
TM1638 LED and key board
The TM1638 "LED&KEY" board: eight seven-segment digits, eight LEDs and eight buttons on three wires, STB, CLK and DIO.
BME280 and BMP280 pressure sensors
Bosch pressure sensors on a purple I2C breakout: the BMP280 reads pressure and temperature, and the BME280 adds humidity. Aliases: barometer, GY-BME280.
SHT31 temperature and humidity sensor
The Sensirion SHT31 on an I2C breakout: temperature and humidity at 0x44 or 0x45. Aliases: GY-SHT31-D, Adafruit SHT31-D, SHT30, SHT35.
LTR-390 UV and light sensor
The Lite-On LTR-390UV reads the UV index or the visible light over I2C at 0x53, one at a time, 13 to 20 bits at a gain of 1 to 18.
OPT3001 ambient light sensor
The TI OPT3001 measures light in lux the way the eye sees it, from 0.01 to 83865 lux, auto-ranging, over I2C at 0x44.
LSM303AGR accelerometer and compass
The ST LSM303AGR puts an accelerometer at 0x19 and a magnetometer at 0x1E in one package, the two halves of a tilt-compensated compass.
LIS3MDL magnetometer
The ST LIS3MDL reads the magnetic field on three axes over I2C at 0x1C, up to 6842 counts a gauss: the sensor of a digital compass.
LSM6DSOX accelerometer and gyroscope
The ST LSM6DSOX six-axis IMU reads acceleration and turn rate, sixteen bits each, over I2C at 0x6A, from 12.5 Hz to 6.66 kHz.
INA3221 three-channel current monitor
The TI INA3221 measures three shunts and three bus voltages at one I2C address, for a project with several supply rails.
INA228 power and energy monitor
The TI INA228 measures current, bus voltage and power to 20 bits through a 15 milliohm shunt, and adds up energy and charge as it goes.
INA226 current and power monitor
The TI INA226 measures current through a real 0.1 ohm shunt, the bus voltage and the power, to 2.5 microvolts, over I2C.
MAX31865 RTD converter
The MAX31865 reads a PT100 or PT1000 platinum RTD as a 15-bit resistance ratio over SPI, with fault thresholds and a data-ready pin.
MAX31855 thermocouple converter
The MAX31855K reads a K-type thermocouple from -270 to 1800 degrees C, with its own cold-junction temperature and fault bits, over read-only SPI.
DPS310 barometric pressure sensor
The Infineon DPS310 reads air pressure to a fraction of a pascal, and temperature, over I2C at 0x77 or 0x76.
BME680 gas and weather sensor
The Bosch BME680 reads temperature, humidity, pressure and the resistance of a heated gas plate, over I2C at 0x77 or 0x76.
VL53L1X laser distance sensor
The ST VL53L1X times a laser pulse to the target and back, and reports millimeters up to 4 m over I2C at 0x29.
SCD41 CO2 sensor
The Sensirion SCD41 measures real CO2 in ppm, with temperature and humidity, over I2C at 0x62, one reading every five seconds.
SHT40 temperature and humidity sensor
The Sensirion SHT40 on an I2C breakout: temperature and humidity at 0x44, the SHT31's smaller and faster successor.
SGP30 air quality sensor
The Sensirion SGP30 air quality sensor on I2C at 0x58: CO2 equivalent in ppm and TVOC in ppb. Aliases: Adafruit SGP30, eCO2 sensor.
TCS34725 color sensor
The TCS34725 color sensor on I2C at 0x29, with a white LED to light what it looks at. Aliases: Adafruit TCS34725, RGB color sensor, TCS3472.
AHT20 temperature and humidity sensor
The ASAIR AHT20 on its four-pin I2C breakout: temperature and relative humidity at address 0x38. Aliases: AHT20 module, AHT10 successor, DHT11 replacement.
BH1750 light sensor
The ROHM BH1750FVI on the GY-302 module: ambient light in lux over I2C, at address 0x23, or 0x5C with ADDR high. Aliases: GY-302, BH1750FVI, lux sensor.
DS1307 real-time clock
The clock chip that every Arduino book used before the DS3231 got cheap, on a small breakout with a coin cell. Aliases: Tiny RTC, RTC module, DS1307 clock.
Real-time clock, DS1302
The DS1302 clock module with a coin cell and a watch crystal, on a three-wire interface of its own. Aliases: DS1302, RTC module, three-wire clock.
INA219 current monitor
A current, voltage and power monitor on a purple breakout with a 0.1 Ω shunt resistor. Aliases: current sensor, power monitor, wattmeter module.
ADS1115 sixteen-bit ADC
Four analog inputs and a sixteen-bit converter on a blue I2C breakout. Aliases: 16-bit ADC, analog to digital converter, ADS1015.
PCF8591 ADC and DAC (YL-40)
The NXP PCF8591 on the YL-40 module: four 8-bit analog inputs and one analog output on I2C.
ADXL345 accelerometer
The Analog Devices ADXL345 three-axis accelerometer on the GY-291 breakout.
Accelerometer, ADXL335
The ADXL335 accelerometer on its GY-61 breakout: one analog voltage per axis, no bus and no library. Aliases: GY-61, analog accelerometer.
Photoresistor sensor module
A light-dependent resistor on the four-pin LM393 comparator board.
NTC temperature sensor module
A 10 k NTC thermistor and a 10 k resistor on a three-pin board. Aliases: KY-013, analog temperature module, thermistor module, Wokwi's NTC temperature sensor.
CD74HC4067 16-channel multiplexer
Sixteen analog switches with one common pin, on a breakout.
74HC4051 8-channel multiplexer
Eight analog switches with one common pin, in a 16-pin DIP: three address lines pick which channel reaches Z.
NLSF595 tri-color LED driver
ON Semiconductor's NLSF595: a 595 shift register whose eight outputs are open drain, made to sink the cathodes of RGB LEDs.
BMP180 pressure sensor
The Bosch BMP180 barometric pressure and temperature sensor on the GY-68 breakout. Aliases: GY-68, BMP085 (its predecessor, same interface), barometer.
VL53L0X time-of-flight sensor
ST's VL53L0X laser distance sensor on its breakout board (GY-VL53L0XV2, Pololu, Adafruit).
IR distance sensor, Sharp GP2Y0A21
The Sharp GP2Y0A21YK0F: two round lenses that measure 10 to 80 cm and give the distance as a voltage. Aliases: GP2Y0A21YK0F, Sharp IR sensor.
MAX30102 pulse oximeter
Maxim's MAX30102 heart-rate and blood-oxygen sensor on its breakout board.
Pulse sensor
The Pulse Sensor Amped: a green LED, a light sensor and an amplifier that put a fingertip's pulse on one analog wire. Aliases: PulseSensor, PPG sensor.
APDS-9960 gesture sensor
Broadcom's APDS-9960 on the GY-9960 breakout: ambient light, red, green and blue, proximity, and hand swipes, all from one chip.
DFPlayer Mini
The DFPlayer Mini MP3 module: a microSD card slot, a decoder and a small amplifier on a 16-pin board.
Rotary dial
A telephone's rotary dial, with its pulse and off-normal contacts brought out to three wires. Aliases: phone dial, rotary dialer, pulse dial.
Biaxial stepper
Two bipolar stepper motors on one axis, one shaft inside the other, so one body turns two hands like a clock.
E-paper display, 2.9 inch
A 2.9 inch black and white e-paper module on the Solomon Systech SSD1680, 296 by 128 pixels, over SPI: the Waveshare 2.9 inch V2 and the WeAct 2.9 inch boards.
Touch TFT, 2.8 inch with capacitive touch
A 2.8 inch 240 by 320 color TFT on an ILI9341, with an FT6206 capacitive touch controller on I2C.
OLED display, 1.12 inch SH1107
A square 1.12 inch 128 by 128 monochrome OLED on the Sino Wealth SH1107, over I2C.
24LC256 I2C EEPROM
32 KB of memory that keeps its contents with the power off, in an eight-pin DIP. Aliases: external EEPROM, AT24C256, 24C256, I2C memory.
PCF8574 I/O expander
Eight more pins over two wires, on a small blue board. Aliases: I2C expander, port expander, PCF8574A, IO expansion board.
MCP23017 I/O expander
Sixteen more pins over I2C, in a 28-pin DIP. Aliases: 16-bit expander, port expander, MCP23S17.
Signals you time, not read
The DHT sensor and the infrared remote share one thing, and it is the thing that matters: the information is in how long a pulse lasts.
A stepper is four coils and a table
The 28BYJ-48 and its ULN2003 board are the first motor most people meet that goes to a position rather than at a speed.
The HC-05, honestly
Mokxi does not model Bluetooth. What it models is the only half of an HC-05 a circuit can see, which is a UART.
The logic analyzer
Four probes, every edge with the time it happened, and a timing diagram on the face of the instrument.
MFRC522 RFID reader
The blue RC522 board with the antenna coil printed round its edge, and the cards that come in the bag with it. It reads 13.56 MHz cards and key fobs over SPI.
microSD card module
The small SPI breakout with a microSD socket, a 3.3 V regulator and a level shifter, and a 4 MB card in it. SD.h reads and writes files on it.
NEO-6M GPS module
The GY-NEO6MV2 breakout: a u-blox NEO-6M, a square ceramic patch antenna and a green LED that blinks once a second when it knows where it is.
nRF24L01+ radio
The little green 2.4 GHz transceiver with a zigzag antenna printed on the end. Aliases: nRF24, 2.4 GHz radio, RF module.

Accounts and plans

Signing in, what each plan unlocks, billing, the student price, invites and API tokens.

Live collaboration

Rooms, watch and edit links, who may start one and how it ends.

Classrooms

Running a class, handing work out, marking it automatically, taking it back in, and joining as a student.

Lessons and the learning game

The paths, XP, levels, streaks, badges, the daily challenge and the leaderboard.

Hobby builds

Home Assistant devices, model railroad electronics and 3D printer basics: what each template models and what it leaves out.

Troubleshooting

Eight things that go wrong, and what is actually causing each one.

Reference

The engine’s own contract documents, rendered from the markdown the code is built against.

What Mokxi simulates
The digital kernel, the analog islands and the SPICE deck runner, and what each one does not model.
The ESP32-C3 model
The peripherals, the memory map and the timing of the DevKitM-1.
The Arduino Uno model
The ATmega328P, with its timers, USART, ADC, interrupts, sleep and EEPROM.
The Arduino Nano model
The Uno's chip on a board that fits a breadboard, with two analog-only pins.
The Arduino Mega 2560 model
The ATmega2560: eleven ports, six timers, four USARTs and a sixteen-channel ADC.
The Arduino Leonardo model
The ATmega32U4, whose USB goes to the chip: Serial is a CDC endpoint and Serial1 is the UART.
The ESP32-C6 model
The DevKitC-1: thirty-one GPIOs, one SRAM window, and a plain account of what is not modeled.
The ESP32 DevKit model
The classic ESP32 on an Xtensa LX6: the GPIO matrix, LEDC, ADC1, and one core where the chip has two.
The ESP32-S3 model
The S3 on an Xtensa LX7: one SRAM seen through two buses, the GPIO matrix, the USB serial port, LEDC, the RMT behind the RGB LED, and one core where the chip has two.
The ESP8266 NodeMCU model
The LX106 in the call0 ABI, GPIO16 that is not a GPIO, software PWM, and the one block whose registers are invented.
The Raspberry Pi Pico W model
The Pico with a CYW43439 on it: the chip is not modeled, the WiFi is simulated, and the LED behind it works.
The XIAO SAMD21 model
The ATSAMD21G18A: two PORT groups, SERCOMs as USARTs, TCC and TC PWM, the ADC on every pad, and the USB as a byte pipe.
The Raspberry Pi Pico model
The RP2040 on our Cortex-M0+ core, with SIO GPIO, the TIMER, UART0 and PWM.
The STM32F411 model
The Black Pill on our Cortex-M4 core, with GPIO, TIM2 to TIM5, USART1 and SysTick.
The BBC micro:bit V2 model
The nRF52833 on our Cortex-M4 core, with GPIO, GPIOTE, the TIMERs, RTC0, UARTE0 and the LED matrix.
The STM32 Blue Pill model
The F103 on our Cortex-M3 core, with CRL and CRH GPIO, TIM1 to TIM4, USART1 and a twelve-bit ADC.
The Arduino Uno R4 Minima model
The RA4M1 on our Cortex-M4 core: the PFS port block, GPT PWM, SCI2 as Serial1 and a fourteen-bit ADC.
The ATtiny85 model
A whole microcontroller in eight pins: the tinyAVR core, two timers, the ADC, the USI and a serial port it bit-bangs.
Compiling in the browser
How a sketch becomes firmware with no build server anywhere.
Simulated WiFi
The network a sketch joins: what is faithful, what is Mokxi’s own, and what is not there at all.

Try it on a breadboard

Everything in these pages runs in the editor. Open it and wire something up.