Raspberry Pi 400 and ESP32 Setup Guide
This introductory module is designed as “Class 0.” It ensures that before a single line of code is written, every student has a functional workstation and a confirmed “handshake” between their Raspberry Pi 400 and the ESP32 board.
Part 1: The RPi 400 Hardware Handshake

The Raspberry Pi 400 is unique because the computer is inside the keyboard. All the “action” happens on the back edge.

GPIO — General Purpose Input Output
HDMI — High Definition Media Interface
USB — Universal Serial Bus
SD Card — Storage
- Connect the Mouse: Plug the USB mouse into any of the three USB ports (the blue or black rectangular slots) on the back of the keyboard.
- Connect the Monitor: Plug the Micro-HDMI cable into the port labeled HDMI 0 (it’s the one closest to the microSD card slot). Connect the other end to your monitor.

-
- Your monitor may have a Mini-HDMI interface and require an adapter.
![]() |
![]() |
- Power On: Plug the USB-C power supply into the leftmost port. The RPi 400 doesn’t have a traditional “On” switch; it will boot as soon as it has power.
- Tip: If it doesn’t wake up, hold Fn + F10 (the power key) for two seconds.

Part 2: Entering the Digital Workspace

Once the “Raspberry” logo appears and the desktop loads:
- User Credentials: If prompted for a login, use the credentials provided by your instructor
- The system may be configured to boot directly to a user account and Home Screen..
- WiFi Connection: Look at the Top Right Corner of the screen.
- Click the Blue/Grey Icon (two wedges).
- Select your classroom network and enter the password.
- The icon will turn blue once connected.

- Launch the IDE: The software tool you will use for your projects is an Integrated Development Environment (IDE) that manages the files for your project, translates (I.e., compiles) your programs into instructions the ESP32 chips can execute, and uploads the instruction file to the chip. Find the Arduino IDE icon (the teal infinity circle) on the Desktop or in the Main Menu (the Raspberry icon in the top left) under Programming.


Part 3: Meeting the ESP32 Board
Now we connect the “brain” (the ESP32) to the “hub” (the RPi 400).
- Physical Connection: Use the USB cable to connect the ESP32-WROOM-32D to one of the remaining USB ports on the RPi 400. You should see a small red or blue LED light up on the ESP32 board to indicate it has power. Your USB cable will have a USB-A type connector on the end plugged into the Rpi400; the end plugged into the ESP32 Board will depend on the board and typically will be either a micro-USB connector or a USB-C connector.
USB-A to micro-USB |
USB-A to USB-C |
- Identify the Serial Port: In the Arduino IDE, go to Tools > Port.
- You are looking for something named /dev/ttyUSB0 or /dev/ttyACM0.
- If you migrate to a PC or MacOS platform, the serial ports will have different names. These names for the Linux-based refer to the serial-port driver software located in the /dev (I.e. device) directory in the Linux file system on the Rpi400.
- Action: Click it to select it. If you see multiple, unplug the board and see which one disappears, then plug it back in.
- You are looking for something named /dev/ttyUSB0 or /dev/ttyACM0.
Part 4: Configuring the Software
The Arduino IDE needs to know it’s talking to an ESP32, not a standard Arduino Uno.
- Select Board Type: This step tests whether ESP32 Board support has been installed on your system. Go to Tools > Board.
- Navigate the sub-menus to find ESP32 Arduino and search for and select DOIT ESP32 DEVKIT V1 (this is the standard profile for the ESP32-WROOM-32D).
- There are many options available. If you have a different board, try to find an exact match.

- Install Missing Board Support: If you see no ESP32 Boards listed you will need to install them through the Preference window and the Board Manager.
- In the Arduino IDE 1.8.x on Rpi400 the Preferences window is under File > Preferences.
- The Preference window allows you to specify the location of the software repository containing board core software. To install the missing ESP32 board definitions, Copy this URL:
- https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
- Open the Preferences window of the Arduino IDE, and paste the URL you just copied in the “Additional Board Manager URLs” field, as you can see in the figure below, and then click OK to dismiss the window.

-
- Next, open the Board Manager utility by clicking Tools, Board, Boards Manager in the IDE menu.

-
- Search in the Boards Manager for ESP32, confirm the URL copied into the Preferences window finds appropriate board definitions for ESP32 by Expressif Systems, and update/install them.

-
- After installation, return to Step 1 above, confirm that ESP32 boards are available, and make your selection.
- Confirm Status: Look at the Bottom Right Corner of the Arduino IDE window. It should now give the name of the board you have selected and the serial port used for communication between the RPi400 and the board, e.g., DOIT ESP32 DEVKIT V1 on /dev/ttyUSB0
Part 5: Debugging & Serial Connection
Before we write code, we must ensure the “pipeline” is open. This is where most students run into trouble.
- Open the Serial Monitor: Click the Magnifying Glass icon in the top right corner of the IDE.
- Set the Speed (The “Secret” Step): ESP32 boards talk very fast. At the bottom right of the Serial Monitor window, change the baud rate dropdown to 115200 baud.
- If this is wrong, the board will send “gibberish” or nothing at all.
- Test the Link: * Hold the ESP32 board and find the tiny button labeled EN (or RST).
- Press it while watching the Serial Monitor.
- If you see text (even if it’s technical startup data), congratulations! Your computer and your board are officially talking to each other.
Troubleshooting for Students:
- “The Port menu is greyed out!” -> Check your USB cable. Some cables are “power only” (for charging phones) and don’t carry data. Swap for a known data cable.
- “I see weird symbols in the monitor!” -> Double-check that your baud rate is set to 115200.
- “I can’t find the ESP32 in the Board menu!” -> This means the “Board Manager” needs to be refreshed (Instructor check required).

