probonopd / WirelessPrinting

Print wirelessly from Cura, PrusaSlicer or Slic3r to your 3D printer connected to an ESP8266 or ESP32 module
352 stars 65 forks source link

Add camera support #94

Open probonopd opened 5 years ago

probonopd commented 5 years ago

There are now ESP32-CAM modules with camera and SD card. Can be had for around USD 10 from China. Ideal for our purpose.

@me-no-dev has added Arduino support for it : https://github.com/espressif/esp32-camera/issues/7#issuecomment-447675343

It seems to be working well:

Thank you so much, worked out of the box here as well. I tried it on an ESP32-CAM with a wide angle lense I got from a TTGO T-Journal order.

chepo92 commented 5 years ago

Wow, buying it !

probonopd commented 5 years ago

Internal pin connections:

Source: https://github.com/SeeedDocument/Outsourcing/raw/master/113990580%20ESP32-CAM/113990580%20ESP32-CAM%20Product%20Specification.pdf

probonopd commented 5 years ago

We need to find a way to not get the ESP32 boot messages onto the serial line since they will make it impossible to boot the printer firmware (I have tested it!).

We may not have free pins to use Serial1 on this board? GPIO16 seems to be the only pin that is on the board and not connected to cam or SD.

Pulling down GPIO15 to ground during boot should also silence the ESP32 boot messages. But GPIO15 is also attached to CMD of the SD card.

Reference: https://github.com/espressif/arduino-esp32/issues/642

chepo92 commented 5 years ago

We need to find a way to not get the ESP32 boot messages onto the serial line since they will make it impossible to boot the printer firmware (I have tested it!).

I'll test it too

We may not have free pins to use Serial1 on this board? GPIO16 seems to be the only pin that is on the board and not connected to cam or SD.

I haven't tested but I think Uarts can be mapped to any pin: https://quadmeup.com/arduino-esp32-and-3-hardware-serial-ports/

probonopd commented 5 years ago

Yes, but you need free pins that are not connected to the camera nor the SD card. And it looks like we are short of those...

probonopd commented 5 years ago

In addition to making a video stream of the printer, and taking timelapse images, we might do QR code recognition to e.g., recognize settings for different filaments based on QR codes (also see the Uniform Filament Identification system, UFID).

https://github.com/donny681/ESP32_CAMERA_QR/

GMagician commented 5 years ago

I read somewhere that boot log messages may be disabled on esp32 and not on esp8266, but I forget where I read it

fred2088 commented 5 years ago

buy one, will test it out ...

muenan commented 5 years ago

Yes, but you need free pins that are not connected to the camera nor the SD card. And it looks like we are short of those...

Maybe you can use the LED PIN (GPIO33) and with SoftSerial (RX, TX | GPIO16, GPIO33). At the LED PIN you can solder a wire to the + side for the TX. The user (v12345vtm : https://github.com/v12345vtm/timelapse-ESP32-CAM ) has developed a timelapse feature. If you could put the project and his together, it would be ideal.

probonopd commented 5 years ago

Let's try it out. Unfortunately I don't have this hardware.

fred2088 commented 5 years ago

we bought it and would like to try it out ...

probonopd commented 5 years ago

Looking forward to hearing from you how it goes @fred2088

probonopd commented 5 years ago

Have you made any progress @fred2088?

fred2088 commented 5 years ago

thinking to merge two project https://github.com/v12345vtm/timelapse-ESP32-CAM

ETE-Design commented 5 years ago

So we continue here... Can't help coding :-( My skills is not there yet... But have you looked at this project? Mabye it can help? https://randomnerdtutorials.com/esp32-cam-video-streaming-web-server-camera-home-assistant/

BTW, do you have some screenshots of your GUI?

ETE-Design commented 5 years ago

The pins is here? https://github.com/RuiSantosdotme/ESP32-CAM-Arduino-IDE/blob/master/ESP32-CAM-Video-Streaming/ESP32-CAM-Video-Streaming.ino

Was just asking for screenshots in general, just so more people than me can see what this is and compare to ESP3D without the need og flashing...

probonopd commented 5 years ago

The pins is here?

Yes, maybe. Just try it out until you have it working.

Was just asking for screenshots in general, just so more people than me can see what this is and compare to ESP3D without the need og flashing...

Check this video:

https://www.youtube.com/watch?v=4YOg0ReJtec

ETE-Design commented 5 years ago

So no Web GUI only direct integrated to Cura? Was hoping to have something like ESP 3D, not only direct control from Cura...

probonopd commented 5 years ago

There is also a Web interface to upload and print Gcode.

probonopd commented 5 years ago

We need to find a way to not get the ESP32 boot messages onto the serial line since they will make it impossible to boot the printer firmware (I have tested it!).

Actually, this is easy. Tested with ESP32-CAM firmware.

So it should be doable using this hardware.

ETE-Design commented 5 years ago

Well done, keep comming closer to get Cam Support :-) Still waiting for my ESP32-Cam to start testing...

probonopd commented 5 years ago

Someone just needs to do it.

Colin66 commented 5 years ago

Hi, there's a project interfacing esp32-cam to 3d printer which appears relevant here :

https://github.com/eben80/ESP32-CAM-Print-Monitor

probonopd commented 5 years ago

Hi @Colin66 very good, so it looks like @eben80 has figured out how to access the camera while also talking to the printer via the serial line. Hence it should be a breeze to combine it with WirelessPrinting. @Colin66 @eben80 would you be interested to give it a try?

Colin66 commented 5 years ago

Hi @probonopd I'm interested in the output but unfortunately I don't have the coding skills.

eben80 commented 5 years ago

Hi @Colin66 very good, so it looks like @eben80 has figured out how to access the camera while also talking to the printer via the serial line. Hence it should be a breeze to combine it with WirelessPrinting. @Colin66 @eben80 would you be interested to give it a try?

Hi guys, I'm also working with very limited skills. My solution for communicating with the Serial port is extremely inefficient, probably the right way to do it would be what @luc-github uses in ESP3D. My solution I currently have so it just about functions... my standards are very low :D

Some pointers: I'm using SoftwareSerial for coms with the printer, the rxbuffer needs to be increased for lengthy responses like file listings.... on the hardware side I'm using voltage limiting zener diodes and a common ground connection to do the level shifting on both RX and TX.

probonopd commented 5 years ago

Hi @eben80, may I be curious why you are using SoftwareSerial?

eben80 commented 5 years ago

Hi @eben80, may I be curious why you are using SoftwareSerial?

@luc-github just asked me the same thing today :D In my mind, I needed it because I wanted to keep UART0 for serial debugging... I just realized that pin14 & 15 that I am using is connected to the SD Card. Since I haven't been using the SD Card, I haven't had any issues.

probonopd commented 5 years ago

Well, in this project we need the SD card of course. But I think hardware serial is fine too, as I have tested here: https://github.com/probonopd/WirelessPrinting/issues/94#issuecomment-538400339

romandoss commented 4 years ago

I run yesterday, but I had to solder wire for uart to 16 and 17 gpio directly to esp32. And strange things, I have two esp32-cam, on one which branded AI Thinker after uploading sketch I get infinite bootloop, on other no name module worked fine. And I also got worked sd card slot only after that modification "hasSD = SD.begin(13, SPI, fastSD ? 50000000 : 4000000);" I'm not sure correctly this or not. And one more thing, if I reset 3d printer by button, serial gone to forever "#TIMEOUT#"

probonopd commented 4 years ago

When you reset the 3d printer you also need to reset the ESP at the same time. Connect the reset lines of the printer and of the ESP together.

I don't know the answer to the other questions.

smartin015 commented 1 year ago

Not to muddy the waters too much, but there's now an ESP32S3 module with builtin camera: https://www.seeedstudio.com/XIAO-ESP32S3-Sense-p-5639.html

This board also appears to support USB host mode (crossover with #123). I splurged on a couple, should be arriving in a week or two. When I find the time to poke at them I can report back here with observations.

probonopd commented 1 year ago

..."supporting SD card slot for external 32GB FAT memory" sounds good. Don't forget to order that, too. We need to store the GCODE somewhere...

smartin015 commented 1 year ago

..."supporting SD card slot for external 32GB FAT memory" sounds good. Don't forget to order that, too. We need to store the GCODE somewhere...

It's actually built into the module :D

probonopd commented 1 year ago

I was mislead by the "external".

smartin015 commented 1 year ago

Small update - received the XIAO modules yesterday and took one for a test drive today with the default code. I could connect to wifi and stream video from the camera with zero issue. Pretty slick. I can also confirm it indeed comes with an SD card slot, although I haven't yet tried using it.

That's about as far as I'm going to test for now, until I'm finished with #123 on the S2 mini.