At present, most of the wifi solutions of 3D printers are implemented based on the serial port sending Gcode commands one by one.
There will be many problems in this way, such as the baud rate communication rate is not high, the continuous printing cannot be performed after power failure, and the printing quality will deteriorate after the printing speed is increased.
To solve this problem, we set some goals as follows:

- The hardware is easy to develop, and the software ecology is stronger
- To include USB Host, you can directly communicate with the USB port of the 3D printer without disassembling the 3D printer
- Cheap enough, try not to use linux
- with an OLED display
- Able to share an SD card with 3D printer, software can assign the ownership of SD card

Finally, we choose ESP32, which is based on various open source libraries of Arduino for expansion, and realizes the current module.

1. Hardware

We have open sourced the fixing parts STL for various printers, so that everyone can install them on their own printers more easily:

2. Software

The software mainly includes the following parts:

1.  Node's Firmware

2. Node's webpage

3. A PC client  software

4. JS script for searching device by browser

Let's take a look at what they contain one by one.

2.1 Node's firmware

The firmware implements a basic web server and provides more than 20 restful APIs, which can facilitate the development of various clients.

All code is here: https://github.com/fiberpunk1/Beam-ESP32

Here is the compile doc: https://docs.google.com/document/d/1nrXws8Kn6kyR-FUqMdOn-QdA-vBN1T6YTApFDrN4fQs/edit?usp=sharing

Here is the web api description: https://github.com/fiberpunk1/Beam-ESP32/blob/main/NodeWebAPI.md

2.2 Node's webpage

The webpage files of Node are all stored in the flash of ESP32, which implements a SPIFS. But this storage space is very small, only about 1.2MB.

This web project, currently all files add up to only 500KB in size, it implements the following functions:
- Printer XYZ movement control, heating control
- File upload, delete
- Start printing, pause, cancel
- Print status monitoring, print log display
- User defined buttons (run different Gcode files)

All code is here: https://github.com/fiberpunk1/NodeWebPage

2.3 Nexus PC Client

The web page is very flexible for single printer management, but when there are multiple 3D printers, the web page is not suitable for batch management. Therefore, we have developed our own PC software, which can easily manage multiple 3D printers. At the same time, the software has functions such as sending emails and previewing print files.

2.4 Find Fiberpunk Javascript

Find-fiberpunk.js is a Javascript script based on Tampermonkey that allows users to automatically scan Node devices in the LAN from their browser. This is a demo video

All code is here: https://github.com/fiberpunk1/FindFiberpunk

3. Other features

In order to better adapt to the usage habits of different printer users, Node supports Cura and PrusaSlicer to upload Gcode files directly. These two videos explain how to configure the slicing software to communicate directly with Node.