
Discover how to wire together devices, APIs, and online services using Node-RED and the Raspberry Pi Pico W, with Docker installation, MQTT, dashboards, and Pico MicroPython.
Access the GitHub course code repository for Micropython scripts and Node-RED flows. Import Json flow files, navigate by unique names, manage libraries, rely on version-controlled modules and schematics via Fritzing.
Get to know the sun founder kepler kit for the Raspberry Pi Pico W and its hardware essentials, from sensors and motors to displays and security modules, for course experiments.
Get an overview of the software for Node-RED and Raspberry Pi Pico W, including Micropython, editors, Node-RED dashboards, and the mosquito mQTT broker.
Discover installing and testing Node-RED with Docker on Ubuntu, configuring Docker Compose and data persistence, securing the instance, and building dashboards for Raspberry Pi Pico W with mQTT and Mosquitto.
Learn how Node-RED, an open source, node-based tool, uses drag-and-drop flows to wire devices, sensors, and services for IoT tasks like lighting and alerts, and deploy with a single click.
Explore the four built-in Node-RED communication methods—http/https, mqtt, WebSockets, and tcp/udp—and learn their use with APIs and IoT devices like Raspberry Pi Pico W.
Explore four Node-RED installation options, with a focus on Docker for Node-RED on Windows, macOS, or Linux; learn about portability, isolation, and scalability.
Learn how Docker containers compare to virtual machines and how Docker frames a Node-RED deployment with images, containers, Dockerfile, Dockerhub, and Docker Compose for portable, isolated, scalable applications.
Explore Docker hardware options, including running Docker directly on Windows, macOS, or Linux, or on dedicated hardware like Raspberry Pi, with virtual machines offering isolation and portability.
Create an Ubuntu server virtual machine in VirtualBox, install Docker and a Node-RED container, and enable SSH access from your host computer for Raspberry Pi Pico W integration.
Log in to the Ubuntu virtual machine in VirtualBox and update packages with apt. Install docker.io, verify with systemctl, and test with docker run hello world.
Install Node-RED using docker on Ubuntu 20.04 and pull the image from Docker Hub. Start and manage the container with port mappings and a descriptive name.
Test your new Node-RED server by deploying a simple inject and debug flow on an Ubuntu 20.04 Docker container and view the timestamp payloads in logs.
Set up Docker Compose to automatically start the Node-RED container when the Ubuntu server boots, using a simple yaml file, and verify with docker compose ps and reboot tests.
Establish data persistence for Docker-based Node-RED by mapping a host directory to the container's data with volumes, using Docker Compose for automatic startup, and safeguarding flows and configurations.
Back up and restore Node-RED flows using file copies or the web UI, ensuring persistence across containers. Update Docker and the Node-RED container with docker-compose to keep up to date.
Secure your Node-RED setup by enabling https with a self-signed certificate, generating a private key and certificate, configuring settings, and redirecting http to https for encrypted communications.
Enable username and password authentication in Node-RED running in Docker, create a user hash with Node-RED admin, update settings, and restart the container to log in.
Learn to configure Node-RED authentication with read-only users and a default user, separating admin and non-admin access. Manage user hashes and permissions via settings.js and docker commands, then verify logins.
Explore the Node-RED editor and core concepts, focusing on Json messages, function nodes, asynchronous flows, debugging, and securing your Node-RED instance while building and deploying practical flows.
Explore the Node-RED editor basics: the palette, drag-and-drop and wiring of built-in and third-party nodes, use dashboard and debug nodes, deploy changes, and import/export flows across instances.
Define what a node is in Node-RED and how inputs and outputs work, with examples like function and catch nodes, plus installing third-party nodes via the palette.
Explore Node-RED flows and dataflow programming, learn how to start, stop, deploy, and manage flows with enable, disable, hide, and lock features.
Learn best practices for Node-RED to boost efficiency, reliability, maintainability, and security, including simple flows, comments, subflows, error handling, backups, and version control.
Learn how to use the debug node in Node-RED to display messages, inspect payloads and complete message objects, and route outputs to the debug sidebar or system console.
Learn to use the function node in Node-RED to write JavaScript that manipulates msg.payload. See a Celsius to Fahrenheit conversion with an inject and debug node workflow.
Explore the complete Node-RED node and how it monitors the completion of a single node or an entire flow, with a practical inject and function example.
Learn how the delay node in node-red controls message throughput, throttling API calls, staggering flow paths, and simulating latency with fixed, random, or dynamic delays via msg.delay.
Explore the trigger node in Node-RED, which sends a predefined message immediately and a second later, with reset and payload options, for timeouts, pulse generation, and polling.
Explore the Node-RED settings.js file, including flows.json references, host name customization, editor theme options (dark and Dracula), context storage choices, and enabling https for secure browser communication.
Explore official Node-RED documentation for installation, configuration, and flows, and access the GitHub repo, wiki, Discourse forum, cookbook, and blog for updates and guidance.
Explore how the Node-RED dashboard creates interactive interfaces with live graphs, charts, gauges and widgets, and learn to install the dashboard widgets, and organize them into groups and tabs.
Learn to build a Node-RED dashboard with text input and output nodes, use mustache templating for displaying payloads, and customize layout with groups, tabs, and widget sizing.
Learn to build a Node-RED dashboard flow using the slider as input and the gauge as output, with 0–100 range, 10-step values, group and tab organization, and live deployment.
Learn how the switch widget in Node-RED dashboard controls a binary state, outputs booleans, and uses a function node to display the light status for a Raspberry Pi Pico W.
Create a color selector dropdown in the Node-RED dashboard, configure red, blue, and green options, connect to a function, and deploy to display results in a text box.
Explore the form widget in Node-RED to build a multi-field user info form with text and color inputs, capture data in the payload, and access values via a function node.
Learn to use the UI template node in Node-RED to create custom dashboard components with HTML and CSS, generate JSON payloads, and embed forms, external libraries, and websites.
Install the mosquitto mqtt broker on an Ubuntu server, which is lightweight and supports secure connections, enabling Node-RED to work with mqtt, then verify the service and test publish/subscribe.
Test the MQTT service on the command line by using mosquitto_sub and mosquitto_pub to publish and subscribe to topics like test/topic, validating topic hierarchy, case sensitivity, and wildcard filters.
Configure authentication for the mosquito mQTT broker by creating a password file, disabling anonymous access, updating mosquito.conf, and testing with authenticated pub and sub.
Test MQTT in Node-RED with the MQTT in and MQTT out nodes to publish and subscribe to a test topic via a Mosquitto broker; open port 1883 when using Docker.
Set up the Raspberry Pi Pico with MicroPython by downloading the uf2 firmware, copying it to the Pico drive, and restarting to run MicroPython, then configure Thonny for programming.
Discover how to use micropython mQTT simple to send and receive messages between a Raspberry Pi Pico W and Node-RED, including installation in Thonny and basic wifi setup.
Publish simulated temperature and humidity data to two mqtt topics from micropython on the Raspberry Pi Pico W, showing publisher-subscriber workflow with a broker.
Watch the Raspberry Pi Pico W subscribe to an MQTT topic, receive messages via on_message, and print decoded payload to the console while handling the servo angle topic.
Integrate Node-RED with Raspberry Pi Pico W by publishing and subscribing to MQTT topics for temperature, humidity, and servo angle, validating flows with debug nodes and a local broker.
Explore building Node-RED flows that communicate with a Raspberry Pi Pico W via MQTT over Wi-Fi, using patterns, and create button and LED interactions before expanding to displays and sensors.
Install micropython on the Pico W with Thonny, set the interpreter to Raspberry Pi Pico Micropython, update firmware to version 1.21 via Thonny, and let Thonny auto-detect the port.
Connect a Raspberry Pi Pico W to a Node-RED instance via WiFi and the mQTT broker, explore Node-RED patterns, and use the debug node and dashboard for data inspection.
Connect the Raspberry Pi Pico W to a local wifi network using micropython's network module, by configuring ssid, password, and the station interface, then verify the IP address.
Learn to publish and subscribe with the micropython mQTT simple module on a Raspberry Pi Pico W, including broker, client id, topic, credentials, and a one-second publish loop.
Explore Node-RED dashboards with widgets such as gauge, slider, and dropdown, and implement raw input/output and processed input/output patterns using mqtt, json, and function nodes.
Read a 10k potentiometer with the Raspberry Pi Pico W via adc on gpio 26 to produce 16-bit values, then map 670-65535 to 0-100 for gauge using a range node.
Wire Raspberry Pi Pico W with button on GPIO 14, using 3.3 V rail and 10 kΩ pull-down. Publish state to Node-RED MQTT; compare polling with delay and interrupt sampling.
Control a led from a Node-RED dashboard via mqtt to a Raspberry Pi Pico W; two buttons publish on and off to the led state topic for gp15 control.
Replace the sleep-based polling with a wait message function to efficiently control an LED from a Node-RED dashboard on a Raspberry Pi, using mqtt topics and a button-led setup.
Learn to build a two-way system with a Raspberry Pi Pico W, LED and button, using Node-RED and MQTT to exchange messages between the MicroPython script and the dashboard.
Explore slide switch and joystick, RFID projects, and infrared receiver and transmitter, while building a Raspberry Pi Pico circuit, a Node-RED flow, and a micro Python script.
Wire a slide switch to the Raspberry Pi Pico W, add a pull-down resistor and capacitor to reduce noise, and script MicroPython to monitor state and feed a Node-RED dashboard.
Build a Node-RED flow that reads the Raspberry Pi Pico W slide switch, publishes its state to MQTT, and displays it on a dashboard switch.
Learn joystick basics with raspberry pi pico w: read x and y analog axes and a button, wire to adc pins, and format readings as json for Node-RED.
Learn how to send joystick x, y, and button values from a MicroPython program to Node-RED using a single JSON payload over MQTT, and visualize them on a Node-RED dashboard.
Control a five-volt relay to switch a higher power load using a Raspberry Pi Pico W, transistor switch, and flyback diode; isolate power sources and integrate with Node-RED.
Set up a Node-RED flow with a switch to control a relay on the Raspberry Pi Pico W via MQTT, using on/off strings to energize the coil.
Wire the RFID RC522 reader to a Raspberry Pi Pico W, run a MicroPython module to read tags, and connect to Node-RED for dashboard indicators.
Integrate an RFID reader with a Raspberry Pi Pico W using MicroPython and MQTT, then visualize access status in Node-RED with a green or red circle.
Learn infrared communication basics with a three-pin IR receiver and transmitter on a Raspberry Pi Pico. Decode remote button presses in MicroPython and send commands to a Node-RED flow.
Explore how to integrate infrared remote control with a raspberry pi pico w using micropython and node-red. Build a dashboard that highlights pressed keypad buttons via an mqtt flow.
Connect and drive I2C LCDs and LED arrays on the Raspberry Pi Pico using Node-RED and MicroPython, with multiplexing via 74HC595 and a WS2812 RGB strip.
Master i2c lcd basics with a 16x2 display and i2c backpack, wiring to a Raspberry Pi Pico, and printing hello world plus a live counter.
Learn to build a Node-RED flow that fetches date and time every second, publishes it via MQTT to a Raspberry Pi Pico W, and displays it on an I2C LCD.
Create a Node-RED flow with a slider dashboard to control LEDs via a 595 shift register, sending pattern indices over MQTT to a MicroPython program on the Pico W.
Explore how WS2812 neopixels integrate RGB LEDs with a built-in control chip in a 5050 package, addressable and powered at five volts, controlled via MicroPython on the Raspberry Pi Pico.
Learn to drive a five-volt servo with micropython on the Raspberry Pi Pico using 50 Hz PWM and 16-bit duty, wiring three wires and avoiding pins 16 and 17.
Design a Node-RED flow to control a servo on a Raspberry Pi Pico W with a 0–180 degree slider and gauge. Send angles via MQTT for Micropython duty-cycle control.
Drive a DC motor with a Raspberry Pi Pico and TR 6586 driver using PWM for speed and two inputs for direction, wiring power and ground on a breadboard.
Configure a Node-RED flow to control a DC motor on the Raspberry Pi Pico W with direction and speed widgets, using global variables to create a comma-delimited MQTT payload.
Update August 2025
I uploaded the Node-RED flow JSON files for the lectures of section 13 to the course Github repository.
---
I've created this course to help you learn Node-RED and the Raspberry Pi Pico W. Whether you're an engineering educator, a student, an industrial automation professional, a research scientist, or an electronics hobbyist, these two technologies are essential.
Node-RED is an incredible open-source software development tool that allows you to create programs visually instead of writing them line by line.
The Raspberry Pi Pico W is a remarkable Wi-Fi microcontroller board for embedded projects. It offers high performance at a low cost.
This course teaches you how to set up a system that contains Node-RED and the Raspberry Pi Pico W .
You'll gain a solid understanding of Node-RED nodes, flows, and even MicroPython, enabling you to program the Pico W to interact with various peripherals. Additionally, this course covers essential topics such as MQTT, Ubuntu Linux virtual machines, Docker, and MySQL.
Designed specifically for beginners with a basic knowledge of electronics, this course will guide you step-by-step through everything you need to know.
Part 1: Node-RED for the absolute beginner
Part 1 is dedicated to Node-RED for the absolute beginner. In Part 1, you will learn about Node-RED and event-driven systems, how to install an instance using Docker, the basics of nodes and flows, the dashboard and MQTT.
Part 2: Add Raspberry Pi Pico W
In the lectures of Part 2, you will learn how to use the Pico W as a Node-RED peripheral. You will learn to use MQTT to enable communications between the Pico and the Node-RED instance. You will also learn how to connect different hardware components to the Pico to implement simple circuits and use Node-RED (and its Dashboard) to control these components or view the data they produce. In Part 2, you will encounter motion, distance and water level sensors, motors, displays, relays, and joysticks, to mention a few.
Part 3: additional Node-RED resources
These resources include lectures on essential Nodes, control structures, and ways to integrate your Node-RED flows with external services and APIs. You will create flows that allow Node-RED to communicate with services like OpenWeatherMap and Google Sheet to get, store, and retrieve data. You will also learn how to set up a local instance of the MySQL database for use by Node-RED for data storage and retrieval.
I highly recommend taking a few minutes to watch the "About this course" lecture for more detailed information.
I can't wait to have you join us on this exciting journey!