Update (9 Aug 2019): Swapped "Pause" and "Play" button symbols (they were originally backwards). Thanks to @greglwood for pointing it out! I still have photos of the assembly process posted with the wrong button symbols, but once I finish my own reprint, I'll post new photos. Please keep the comments coming!
Update (4 Aug 2019): USB and GPIO relief is now bigger to accommodate more GPIO jumpers and elongated the screen mounting holes to provide for irregularities during production. Also tweaked the internal gussets for printing. Redesigned the button mount bracket to incorporate 4 mounting posts and eliminate the need for dedicated standoffs. Finally, I redesigned the "symbols"/button legend/logos and created a MMU version to print the Inventables logo and button legend in a separate color. If you use this design, open the MMU version in your slicer, then "add part" and open the logos. Everything should align. I updated the parts list and assembly instructions to account for the changes.
This is a Raspberry Pi Touchscreen mount for the X-Carve X-Controller. This print effectively replaces the front end of your X-Controller and provides better interaction and integration with your X-Carve. Things that you will need before beginning;
4 ea M3x8mm nylon standoffs (with 6mm threaded post)
1 ea Drok 5.2V buck converter ($9 on Amazon) (https://www.amazon.com/gp/product/B07C8LC93L/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1)
1 ea Reversible right angle micro USB power cable capable of at least 2.1 amps (https://www.amazon.com/gp/product/B07BS1NZ5W/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1)
2 ea USB A panel mounts (https://www.amazon.com/gp/product/B07C87FYLY/ref=ppx_yo_dt_b_asin_title_o08_s01?ie=UTF8&psc=1)
16 ea M3x6mm button head cap screws
4 ea M4x6mm socket head cap screws
2 ea round button tactile micro switches (colors of your choice) (https://www.amazon.com/gp/slredirect/picassoRedirect.html/ref=sspa_dk_detail_1?ie=UTF8&adId=A00270332VAT10MM35CJ6&qualifier=1560060328&id=8689149770269965&widgetName=sp_detail&url=%2Fdp%2FB01E38OS7K%2Fref%3Dsspa_dk_detail_1%3Fpsc%3D1%26pd_rd_i%3DB01E38OS7K&pd_rd_w=6xlhj&pf_rd_p=8a8f3917-7900-4ce8-ad90-adf0d53c0985&pd_rd_wg=7mGen&pf_rd_r=VRWSVEPKEAJC43ED4VK7&pd_rd_r=66b0a077-8a7c-11e9-a113-f357d9700175)
About 12" of 16 AWG wire for buck converter
Short USB A to USB Mini B cable (I used a 12" cable with a right angle adapter cable)
Jumper wires for R Pi
Raspberry Pi 3 B or B+
Raspberry Pi 7" Touchscreen
I have been using Octoprint with my Prusa 3D printer for quite a while and love the flexibility of being able to design on my laptop then send the design to my printer that is in another room. I wanted that same ability for my CNC, so I created a CNCjs kiosk using a Raspberry Pi and Raspberry Pi touchscreen. Together they give me nearly the same flexibility. This mount provides near seamless integration with the X-Carve. This mount will replace the front end of the X-Controller.
Start by removing the 4 screws at the front of your X-Controller and remove the front plate. Detach the control switches and board by removing the 4 screws holding them to the front. From there, you should be able to reach into the GRBL controller and remove other end of the USB B cable (the opposite end of the square USB cable). Once the control switch panel is removed, disconnect the ribbon cable and remove the 4 standoffs on it replacing them with the 4 each M3x6mm standoff mentioned above. Now the control switches can be mounted to the printed case, just make sure the LED is aligned with its hole. Secure the switches with 4 each M3x6mm button head cap screws.
This design includes 2 additional tactile micro switches for Shutdown (Power) and Reset. The switches were soldered to jumper leads then hot glued into the included power/reset switch holder. The switch holder will need no clean up if printed flat side down. Please see picture for correct mounting of switches. The "prongs" of the switches exit the narrow side of the mount. It should be evident once you've soldered the leads on. I included a glue well in the mount so you can add a dab of hot glue to the well before placing the switch on the mount. The mount is a snug fit and you should feel a bit of a snap as the switches click into the seat. Once seated, hot glue the sides as well to both secure the switch and protect the leads. Snap a round top on (color of your choosing), then mount to the case with 4 each M3x6mm button head cap screws. Keep track of which leads are which so they are pinned correctly. The switch on the far left has a corresponding power symbol and should be pinned to pins 37 and 39. The other switch will go to “RUN” and pin 34.
Next, secure the USB panel mounts to the case. These will have a top and bottom and the holes were printed with that in mind. holding the case upright and looking at the cutouts on the outside, the white part of the USB plug should be on the left (reference picture). Secure these with 4 each M3x6mm button head cap screws.
Now, build your Raspberry Pi. for the sake of time and words, I'll skip that part. But you'll need to follow Raspberry Pi directions for screen mount (and LCD rotate) and then Google CNCjs and it will walk you through how to do the setup on the Pi. In an effort to clean up the power, I turned off my HDMI and audio ports. I also installed script so that it boots straight into CNCjs Kiosk mode. You'll also need to solder a 2 pin header to the R Pi on the "RUN" and "PEN" headers (this was formerly known as the reset or P6 header). We will only use "RUN" and a ground from pin 34. Add the script for shutdown (just google "safe shutdown for R Pi GPIO 26"...GPIO 26 is pin 37 and this is necessary because pin 5 [GPIO 3] is occupied by the touchscreen leads). Here’s the link:
It's one line in the config.txt file, but you'll want to change the pin to GPIO 26 as mentioned (this is actually pin 37 and pin 39 is a ground so it's easier to work with). The jumpers from the two tactile switches will go to these 4 pins. (Note: use the power port on the Pi, not the touchscreen. The jumper wires will power the screen from the Pi). Once the Pi is all setup and tested, plug in your two USB panel mount cables, your USB Mini B cable and I used a wireless keyboard dongle. This is also a good time to plug your micro USB power cable into the Pi because it will be more difficult once fully assembled. Now move on to the jumper wires making sure that they land on the right pins. Once they're set you can mount the screen (be careful with the jumper wires from the screen to the Pi as they have a tendency to get caught between the screen and case). The easiest way to mount it is by placing the screen face down. There are two internal mounting screws and two external. The bottom screw inside the case is a pain, so set the screw in the mounting hole then use the hole in the bottom of the case to feed the allen key down to the screw head before putting the case on the screen. Tighten this screw first then the other 3. There is a relief on the bottom of the case for the USB ports and GPIO.
In the X-Controller, you may need to open the back of the case to get access to the power. I ran 16 AWG wire from one of the 24v leads to my buck converter with terminal crimp connectors on one end (PSU end) and ferrules on the other end (buck converter). The buck converter outputs 5.2v at 5 amps (with 24v input), so it's more than enough and you have your choice of screw terminal or USB. I used the USB for ease of use (the picture shows wires in the screw terminals, because I added a 5v lead on the back of my case). The buck converter was secured to the top of the PSU using two layers of 3M foam adhesive tape. The first layer protected the soldering, the second layer mounted it. Once the buck converter is mounted, run the USB A portion of your micro USB cable under the GRBL board to the buck converter. This is more easily facilitated by unplugging the stepper motor leads at the back of the X-Controller and removing the two stop screws on the side of the X-Controller. Now reassemble the x-controller with the exception of the front panel. Lastly, plug in the USB Mini B cable to the port on GRBL board and secure the Touchscreen case to your X-Controller with 4 each 4mmx6mm socket head cap screws starting with the bottom two screws, then the top two using your fingers to start them then use the "L" of the allen key to secure them.
If operating properly, the left button on top is the safe shutdown button that will trigger a shutdown. It takes about 5 seconds from button push but the screen will go blank immediately. The button on the right is the hard reset button that will reset the Pi if you have issues or freezes. My normal sequence is shutdown switch, wait 5 seconds, then kill the power to the X-Controller.
Lots of time, thought, and energy went into this so, enjoy!