• Stars
    star
    352
  • Rank 120,622 (Top 3 %)
  • Language
    C++
  • Created over 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Print wirelessly from Cura, PrusaSlicer or Slic3r to your 3D printer connected to an ESP8266 or ESP32 module

WirelessPrinting Build Status

Print wirelessly from Cura, PrusaControl, or Slic3r PE to your 3D printer connected to an ESP8266 module.

UNDER DEVELOPMENT. See Issues. Pull requests welcome!

Comparison with other printer hosts

Printer SD card slot OctoPrint WirelessPrint
Instant Booting can take minutes Booting takes seconds
Need to plug SD card into computer and then into printer for each print Ethernet and wireless Wireless
No cost (comes with many printers) High cost (Raspberry Pi, Power supply, SD card) Inexpensive
No clutter on desktop Clutter on desktop (Raspberry Pi, cable) No clutter (can be placed inside printer electronics box)
No set-up needed Set-up needed (full Linux operating system, hundreds of megabytes) Only quick wireless network setup needed
No maintenance needed (other than replacing broken SD card slots) High maintenance needed (OS updates) Low maintenance needed (Firmware updates for bugfixes and new features)
No extra power consumption 2.5 W power consumption Under 1 W power consumption
No webcam Webcam can be attached ESP32 module with built-in camera (may be supported in the future)
No notifications Notifications, e.g., "print ready" Notifications possible (send pull requests)
Cumbersome for print farms (sneakernet) Suitable for print farms (can be managed centrally) Suitable for print farms (can be managed centrally, OctoPrint compatible protocol subset)

Hardware

WEMOS D1 mini modules can be used. Also, ESP32 modules can be used (e.g., TTGO-T1 with built-in microSD card slot).

The WEMOS D1 mini module is connected with your 3D printer via the serial connection and to a SD card (acting as a cache during printing). You need to connect

  • TX, RX from your 3D printer to the WEMOS D1 mini module (AUX-1 header on RAMPS boards). Note: For ESP32, use GPIO32 = RX, GPIO33 = TX
  • Power and GND from your 3D printer to the WEMOS D1 mini module (attention, the AUX-1 header on RAMPS boards has 5V while the ESP8266 needs 3.3V but the WEMOS D1 mini has a voltage regulator)
  • Optional: SD card shield to the WEMOS D1 mini module (a capacitor across the power pins of the SD card; SD shields have this). Using a SanDisk 2 GB card formatted with mkfs.vfat on Linux seems to work for me. If no SD card is connected, then the internal SPIFFS memory (3 MB) is used. For TTGO-T1, the built-in microSD card slot is used if a card is inserted.
  • A matching case for a WEMOS D1 mini module and microSD shield can be found at http://www.thingiverse.com/thing:2287618

esp8266/Arduino sketch

The esp8266/Arduino sketch ESP8266WirelessPrintAsync.ino is uploaded to a ESP8266 module. See .travis.yml for how this is compiled on Travis CI.

Building

Pre-built binaries are available for download on GitHub Releases.

The following build procedure works on Linux:

# Get PlatformIO (the toolchain we use for compiling)
git clone https://github.com/probonopd/WirelessPrinting
cd WirelessPrinting
wget -c https://downloads.egenix.com/python/install-pyrun
bash install-pyrun --python=3.5 pyrun/
pyrun/bin/pip3 install -U platformio==4.2.1

# Build the firmware (it downloads the needed libraries)
pyrun/bin/platformio run
find . -name "*firmware.bin"

Flashing from Linux

Can be flashed via USB or (subsequently) over the air. You can use PlatformIO to upload to either OTA and flash via any known flash method. See e.g., https://docs.platformio.org/en/latest/platforms/espressif8266.html#over-the-air-ota-update, https://docs.platformio.org/en/latest/platforms/espressif32.html#packages.

If you are not using PlatformIO (e.g., because you are just interested in uploading our pre-built firmware as quickly as possible) you may use the following instructions.

ESP8266

# USB
sudo chmod a+rwx /dev/ttyUSB0 ; /tmp/.mount_*/usr/bin/hardware/esp8266/esp8266/tools/esptool/esptool -vv -cd nodemcu -cb 921600 -cp /dev/ttyUSB0 -ca 0x00000 -cf ESP8266WirelessPrint*.bin

# Wireless
wget -c "https://raw.githubusercontent.com/esp8266/Arduino/master/tools/espota.py"
python espota.py -i 192.168.0.27 -p 8266 --auth= -f ESP8266WirelessPrint*.bin
ESP32
# USB
sudo apt install python-serial
sudo chmod a+rwx /dev/ttyUSB0 ; python $HOME/.arduino15/packages/esp32/tools/esptool_py/2.6.0/esptool.py --chip esp32 --port /dev/ttyUSB0 write_flash 0x10000 ESP8266WirelessPrintAsync_esp32_*.bin

# Wireless
python $HOME/.arduino15/packages/esp32/hardware/esp32/1.0.1/tools/espota.py -i 192.168.0.16 -p 3232 --auth= -f ESP8266WirelessPrintAsync_esp32_*.bin

After the initial flashing, you can upload new versions of this firmware from the web interface without any further tools.

Initial WiFi Configuration

Following the instructions in https://github.com/alanswx/ESPAsyncWiFiManager/ :

The first time the sketch is uploaded the ESP will enter in Access Point mode, so you have to open the wifi manager of your system and connect to wifi "AutoConnectAP", then open your browser and type http://192.168.4.1/, there you will see a menu, select "Configure WiFi", press scan and wait until the device scans available networks and select yours, enter the the password and click save. It will try to connect to your network, if it's successfull you will see a message on your 3D printer (or in a serial monitor if conected to your computer) with the new device IP, write down this IP if you wish to connect via browser.

Wireless printing with Cura

Cura 2.6 and later come with a bundled plugin which discovers OctoPrint instances using Zeroconf and enables printing directly to them. In newer versions of Cura, you need to install the Cura OctoPrint Plugin from the "Toolbox" menu. To use it,

  • In Cura, add a Printer matching the 3D printer you have connected to WirelessPrint
  • Select "Connect to OctoPrint" on the Manage Printers page
  • Select your OctoPrint instance from the list
  • Enter an API key (for now a random one is sufficient)
  • Click "Connect", then click "Close" From this point on, the print monitor should be functional and you should see a "Print with OctoPrint" button on the bottom of the sidebar. Use this button to print wirelessly.

Wireless printing with PrusaSlicer

Slic3r PE 1.36.0 discovers OctoPrint instances using Zeroconf and enables printing directly to them. No further software needs to be installed. To use it,

  • In Slic3r PE, add the corresponding profile for your printer
  • Select the "Printer Settings" tab
  • Under "OctoPrint upload", enter the IP address of your WirelessPrinting device (in the future, it may be discoverable by Bonjour)
  • Click "Test" From this point on, you should see a "Send to printer" button on the "Plater" tab. Use this button to print wirelessly.

Later PrusaSlicer versions may require you to enter the IP address manually (bug?).

Wireless printing using a browser or the command line

To print, just open http://the-ip-address/ and upload a G-Code file using the form:

Upload

Ycan also print from the command line using curl:

curl -F "file=@/path/to/some.gcode" -F "print=true" http://the-ip-address/print

More Repositories

1

linuxdeployqt

Makes Linux applications self-contained by copying in the libraries and plugins that the application uses, and optionally generates an AppImage. Can be used for Qt and other applications
C++
1,960
star
2

MiniDexed

Dexed FM synthesizer similar to DX7 running on a bare metal Raspberry Pi (without a Linux kernel or operating system)
C++
745
star
3

irdb

One of the largest crowd-sourced, manufacturer-independent databases of infrared remote control codes on the web, and aspiring to become the most comprehensive and most accurate one
Python
695
star
4

go-appimage

Go implementation of AppImage tools. Still experimental
Go
518
star
5

ESP8266HueEmulator

Emulate a Philips Hue bridge running on an ESP8266 using the Arduino IDE.
C++
409
star
6

SystemImageKit

Run (multiple) operating systems directly from image files. Add extensions, apps and configuration, which are one file each.
Shell
152
star
7

zsync-curl

Partial/differential file download client over HTTP(S)
C
100
star
8

uploadtool

Upload builds to GitHub Releases easily
Go
93
star
9

TimeLord

Arduino library with many time and date related functions... Daylight Savings, Moon Phase, Sidereal time, with the SunRise library rolled in.
C++
63
star
10

previous

NeXT hardware emulator for a NeXT Cube and NeXT Station. Mirrored from SourceForge
C
58
star
11

Zoom.AppImage

An AppImage for the Zoom desktop application (until Zoom provides an official one)
48
star
12

Emacs.AppImage

This repository builds GNU Emacs from git on Travis CI and packages it as an AppImage.
Shell
41
star
13

packstation-barcode

Erstellung von Barcodes fΓΌr DHL Goldcard
Python
40
star
14

MakeHex

MakeHex by John Fine. Makes clean IR sequences from IR protocol files.
C++
30
star
15

lirc-remotes

The lirc remotes database
HTML
29
star
16

OpenPhone

Open source desk telephone implemented in Python and pjsua
Python
21
star
17

decodeir

Convert raw or Pronto Hex infrared codes into protocol, device, subdevice, command
C++
20
star
18

ProntoHex

Arduino library to convert Pronto Hex infrared remote control codes to raw timings that can be sent with usual IR sending libraries
Arduino
20
star
19

ESP8266iTachEmulator

Send infrared remote control signals via WLAN using an ESP8266
C++
18
star
20

static-tools

Building static binaries of some tools using an Alpine chroot with musl
C
18
star
21

dfilemanager

File manager written in Qt/C++ for a Mac-like experience
C++
17
star
22

Lifestyle

Controlling 27.145 MHz BOSE Lifestyle with ESP8266 and Raspberry Pi
C
17
star
23

video2smarttv

Send mp4 video URLs or YouTube videos to Samsung Smart TV. This is a no-frills implementation intended to be as lightweight and portable as possible.
Python
16
star
24

libhookexecv

Make fully relocateable Wine bundles by overriding the execv syscall to use a custom ld.so
Shell
15
star
25

announce

Announce services on the network with Zeroconf/Bonjour with minimal overhead.
C
14
star
26

PoorMakers_IR_Receiver

Poor Maker's Infrared receiver
Arduino
13
star
27

poor-mans-yun

Arduino Yun functionality using a $20 WR703N router and a $3 Arduino Pro Mini.
Shell
10
star
28

eos-movrec

EOS Camera Movie Record
9
star
29

vcontrold-for-openwrt

Control Viessmann heating systems such as the Vitotronic 200 KW 2 from OpenWrt
HTML
8
star
30

font-newg8

8
star
31

hub-ctrl-for-openwrt

Switch off power on USB ports on hubs supporting software controlled power switching
Makefile
8
star
32

qemu-ppc

Lets you run PowerPC operating systems on 64-bit Intel Linux hosts
7
star
33

marlin-for-ender-2

Marlin firmware for Creality Ender-2
G-code
7
star
34

RF100-Firmware

Conrad Electronic Renkforce RF100 Firmware
C
7
star
35

sketches

Some Arduino sketches
Arduino
6
star
36

eaglemode

Shell
6
star
37

QtQuickApp

Demo Qt Quick application for use with linuxdeployqt
QML
6
star
38

font-leutkirch

Python
5
star
39

plugin.video.invidious

Watch videos on https://invidious.snopyta.org
Python
5
star
40

Filer

A clean rewrite of the Filer for helloSystem
C++
5
star
41

simple-http-server

A simple HTTP server that advertises itself to the network with Zeroconf
Go
5
star
42

plugin.video.externalmedia

Play media on KODI from external drives without the need for library updates nor databases
Python
5
star
43

lirc-audio_alsa-for-openwrt

Use a soundcard input to receive infrared remote control signals.
Makefile
5
star
44

MultiDexed

MultiDexed
C++
5
star
45

arduino-esp8266

Linux AppImage with an Arduino IDE that allows running Arduino sketches on ESP8266
Shell
4
star
46

CircleNetboot

Shell
4
star
47

esp32-i2s-webradio

A webradio player using based on esp32 and i2s DAC
C++
4
star
48

Synth_Dexed

Mirrored from https://codeberg.org/dcoredump/Synth_Dexed
C++
4
star
49

parole-opus-for-openwrt

Run parole on OpenWRT. parole is a simple voip program that lets you make a voice call from the terminal using the Opus codec.
4
star
50

appwrapper

Execute a binary on Linux and show a desktop notification in case of errors
Go
4
star
51

codelite-appimage

https://github.com/eranif/codelite/issues/1455#issuecomment-584699413
3
star
52

mtk-gps-debugging

The missing MTK driver GPS debugging information
3
star
53

altairsim.AppImage

3
star
54

nativefier-appimage

Using nativefier to make an AppImage from a web app using Electron
3
star
55

nativefier-test

Shell
3
star
56

LBRY.AppImage

Inofficial LBRY AppImage until there is an official one
2
star
57

Viper.app

2
star
58

attrutil

Command line tool to set extended attributes
C
2
star
59

freebsd-logo-tools

Allows to edit the FreeBSD boot logo by converting it from and to a bitmap image that can be edited with any image editor
C
2
star
60

sigrok-util

Lua
2
star
61

build-with-poudriere

Shell
2
star
62

arduino-audiobook-player

Arduino-based audiobook player with a focus on simplicity
C++
2
star
63

ESP8266GitHubNotificator

ESP8266 GitHub notifications
C++
2
star
64

rpi-noobs-builder

Build Raspberry Pi NOOBS images using travis-ci
Shell
2
star
65

rt5350f-uboot

Backup of wertwert4pda/rt5350f-uboot
2
star
66

XChat

XChat is an IRC chat program for both Linux and Windows
C
2
star
67

live-build-travis

Build Live system on Travis CI using Debian live-build tools
Shell
2
star
68

temp-installer-gui

Python
2
star
69

customberry

2
star
70

ELEC-Remixer

Remix AlexELEC, OpenELEC, LibreELEC, CoreELEC,...
2
star
71

klik

Mirror of https://code.google.com/archive/p/klikclient mainly for historic reasons.
Shell
2
star
72

Siedle_SG_650-0

SIEDLE SG 650-0 Smart Gateway open source components
C
2
star
73

xdgurl-1

C++
1
star
74

marble

C++
1
star
75

casper-language-autodetection

Casper Language Autodetection
Shell
1
star
76

website-annoyances

Annoyances in website usability and privacy
1
star
77

SyncTERM.AppImage

BBS terminal program
1
star
78

esp32s2-seq

C++
1
star
79

covid19

Go
1
star
80

minivmac-3.0.0

minivmac-3.0.0 mirror
1
star
81

omegadict

Construct files in QuickDic format based on OmegaWiki data
Python
1
star
82

Lamp

Control Lead Energy Flexible White LED panel
Python
1
star
83

okc_auto_visitor

Visits all OkCupid matches above 85% so you appear in their recent visitors list.
JavaScript
1
star
84

alljoyn-for-openwrt

https://git.allseenalliance.org/cgit/core/openwrt_feed.git
1
star
85

esp32s3-linux

Based on https://gist.github.com/jcmvbkbc/316e6da728021c8ff670a24e674a35e6
1
star
86

QtUpdateBridges

Master repo to compile all update bridges for updatedeployqt using different qt versions. This will be injected into the Qt Application using QtPluginInjector.
C++
1
star
87

azpainter

Full color painting software for Linux for illustration drawing. This is un-official little fixed repositary of AzPainter (based on "mlib" toolkit). Official repositary hosted on OSDN - https://osdn.net/projects/azpainter/
C
1
star
88

assembly-service

Assembly Service for Flatpak, builds Flatpak into AppImage
1
star
89

travis2github

Upload travis builds to GitHub Releases
Python
1
star
90

XCept

This is XCept V 2.1 BETA
C
1
star
91

mediathek

Python
1
star
92

custom-tasmota

Builds https://github.com/arendst/Tasmota but with different compile-time configuration
Shell
1
star
93

aarch64-squashfs-builder

Trying to build squashfs images for aarch64 that can be booted on Amlogic devices
1
star
94

avahi-indicator

Indicator that shows services advertised on the network with Zeroconf/Bonjour/Avahi, written in Python
Python
1
star
95

sturdy

πŸ““ Note-taking app with markdown support
C++
1
star
96

marlin-builds

1
star
97

manpager

C++
1
star
98

GoTranslate

This project contains two minimal examples for combining Go code with Qt GUIs
Go
1
star
99

openwrt-for-orangepi-zero

OpenWrt for OrangePi Zero
Shell
1
star
100

wine-alsa

Makefile
1
star