This blog post describes the details about the hardware, more specifically the PCB that I have developed for the display component of the new Printrbot Simple 2016. As we believe in Open Source we have published everything under the MIT license. Have a look at the code respository, too.
To give you some context why we have chosen these components please first read my Behind the Scenes report that describes the process of selecting the right components for our purpose.
Let’s have a look at the Block Diagram of the Simple 2016 and how various components are connected. First we have a very clever power management that delivers enough current for all the motors and PCBs but also does that secure and with great efficiency. Next there is the Printrhub, which is the display component of the printer. The hub also controls the Printrboard and the ESP module to communicate with the Printrbot cloud that holds all the projects, materials and settings of the user. Last but not least there is the printer itself, powered by the g2 Printrboard with advanced motor handling features and advanced algorithms for great prints.
Let’s dive into the details of the schematics. It’s structured and separated by each component so you should quickly get an idea of how everything works together. If you ever worked with the Teensy you should see a lot of similarities between our design and the Teensy 3.2 design. However you may notice that the Teensy bootloader chip is missing. Instead these signals are routed to the ESP. As Teensy does not support over the air updates at the moment. We had to write our own bootloader for the MCU which is built in our ESP firmware. In our design, ESP flashes the Teensy MCU with firmware downloaded from the Printrbot cloud!
Our first revision of the Printrboard had the bootloader chip from PJRC installed, along with a USB connector. This allowed us to upload new code the same way as you do with your Teensy developer board. If you are interested in building your own device we suggest you have a look at Rev 0.1.
The printer is connected with a 14 pin ribbon cable. In fact. The “Printer Connection” goes to the power board that routes the signals to the printer board. This way we can enhance functionality in the future or even support different Printrboards.
The board size has been constrained by the dimensions and the position in the printer. The display and other components had to be placed carefully so they fit into the printer enclosing and match up nicely. We have added large heat sinks to keep temperature low and added various expansion ports and test points we used during development. Test points are used during production to flash the initial firmware and to make sure everything works as expected. The blue area is a cut out of the PCB. We route the flex cable of the display through from the bottom side of the display to the connectors.
Important: If you want to flash your own ESP firmware you will need to pull RESET_B (labled RES_B) LOW. Solder some wire to the test point and connect that to GND before you start flashing ESP and remove it when the process has finished. Holding RESET_B to LOW shuts off MK20 which listens to the same Serial port as ESP is programmed. MK20 constantly interferes by sending reports and CommStack responses or requests while ESP is flashed and confuses the upload. You will receive strange errors and the upload will not succeed if you don’t shut off MK20. You will also need to keep GPIO0 button pressed, press and release the RESET button and then release GPIO0 to initate DFU mode of the ESP. The LED besides R6 will dim lightly if ESP is in this mode and accepts new firmware written.
Some 3D views of the layout
As you might know I am developing a Mac software named Copper that helps in creating and finalizing PCBs and is also a great tool during software development as you can quickly look up pin numbers and connections. But it also permits to create nice 3D views of your design.
In total we had four hardware revisions. Release 0.3 had a dump mistake and didn’t work at all. We did not publish it as the only difference to Rev 0.4 has been a wrongly placed connector to the touch screen flex cable and we didn’t want to anyone produce PCBs of a design that does not work.
The first hardware revision had the PJRC Teensy bootloader chip and had a different size as the final dimensions haven’t been specified. Hacking software is very easy with it as you can just connect the display via USB and upload sketches using the Teensy loader. You can make the firmware compatible with Rev 0.1 by setting the correct define in the HAL.h file in both firmware repositories (esp and mk20 folder). There are some slight changes but overall this is a great revision to use the display as basis for your own design.
In the image the Teensy bootloader chip has been desoldered to test firmware updates in software using the ESP. There are also some “green” wires that were soldered on the board to fix some hardware issues.
In Rev 0.2 I removed the bootloading chip for MK20 (Teensy bootloader), USB port and other circuits necessary for the bootloader. Instead I connected SWD signals of MK20 to ESP to allow ESP do the software update to MK20. I also added some test points. I did not expose SWD signals and we had to solder some wires to the SWD signals to connect them to our debug probe that allowed us the program the firmware of MK20 and debug it.
This should have been the final revision before release. But I failed! I had to move a lot of components around as the final device specification have been released. But I forgot to move the touch screen controller connector and it just did not fit (cable too short). So, Printrbot had to dump those PCBs :-(. I invested months in programming a software to prevent just that: Dump errors costing a lot of money and time. But even Copper didn’t help! But we all learned something and the next version of Copper will allow to set constraints to various parts and will check these constraints while you develop your design to prevent these kind of dump errors!
This is the same es Rev 0.3 but the touch screen controller has been moved to the correct position. I added a few signals to the expansion header and made some slight changes. This design worked great and is currently shipping with all Simple 2016 (without the resistor though).
As you can see there is a small PTH-resistor soldered on the board. We do not rest on our successes, in fact we are working hard to further improve the software and hardware. This resistor has just been a test, but I wanted to show you that there is always a way to hack a board before ordering a new one or to try out new things.
Having the right tools is essential
This is an image of my lab. It shows the display connected to the printer (visible in the background) and a mess of wires. These wires connect the display to various components and devices that allowed me to quickly check signals with the Logic Analyzer (Do I need one, too?) and the Segger J-LINK debug probe. While Mick loved to build Perfboards with fixed connections I went with the spaghetti solution, but taped small labels on them. This special setup made it easy to play with the display without ripping off wires all the time while moving it around. In total I have about 20 wires and two FTDI breakout boards connected.
Besides the dump error in Rev 0.3 hardware development had been straight forward. As the design is based on Teensy 3.1 that I have been very familiar with I did not have much headache to built that. It’s also heavily influenced by my LittleHelper PCB that also featured display connection and various other components. You can find the EAGLE files in Printrbots Github repository.
Please let us know (@printrbot) if you are working with our design or hacking your Simple 2016. We are also interested to learn what you create!