Introduction: Spark: the DIY Modular Tablet
I started this project because I noticed that almost every year as new tablets come out only small changes can be found that separate the newest tablet from the previous model. Even though there are very little changes with every new addition, the starting price for each of these tablets remains constantly high. As a result I decided to build my own tablet, where every single part (hardware and software) can be replaced easily. By doing this, a substantial amount of money can be saved. For example, even if I decide to upgrade my tablet every year in order for it to remain competitive with the latest and greatest on the market I would likely only need to change the development board. The overall cost of doing this is a fraction of what it would be if I simply bought a new tablet every year. Another great advantage of building your own tablet is that you get to control what it’s made of. In other words you decide what is important to your design as far as software and hardware is concerned. For this project I will be showing you the steps I took in creating my tablet. There’s a good chance that what you’re looking for in a tablet is different from what I’ve built, so think of this instructable as a set of guidelines that will hopefully help you with your project.
Step 1: Gathering Materials
- Development board – Micro-PC of your choice
(for this projec I used the Odroid X2 , Odroid XU3 and Raspberry Pi B+)
(Note: The Odroid X2 has been discontinued, but since this tablet design is modular it can easily be replaced with several different boards. However if you really wanted to use this board, the company that made this board makes several similar boards.)
- The main reason that I decided to use the Odroid X2 is because it allows me to boot multiple operating systems from the one board (Android and Ubuntu). Another alternative that allows dual booting, and you may want to look into is the Radxa Rock Pro available here: http://store.radxa.com/products/radxa-rock-pro
- SD/eMMC card – These are the memory units where the operating systems will be stored.
- You may find it difficult to write a .img file to the eMMC card using certain SD card readers. This is because eMMC cards require a much higher power consumption. Many usb multi card slot readers should work.
- Battery pack – Anker Astro Pro2 20000mAh Multi-Voltage External Battery Charger http://www.amazon.com/20000mAh-Multi-Voltage-Exte...
- I chose to use this battery because it has a 5V 2A output for the development board, as well as a 12V 4A output that is used to power the controller board for the LCD screen. Its large power capacity also allows for roughly six hours of use from one charge. As an added bonus this battery comes with its own charging cable, which we will use to charge the tablet.
- LCD screen - 15.6” LP156WH4(TL)(A1) LED Panel 40 Pin 1366x768+HDMI+DVI+VGA Controller Board http://www.ebay.com/itm/15-6-LP156WH4-TL-A1-LED-Pa...
- Not every controller board will work with a particular lcd screen. This lcd screen comes bundled together with the correct controller board. This controller board also comes with an hdmi input which works perfectly for several different Micro-PCs.
- Touchscreen overlay panel - 15.6 Inch 4 Wire Resistive Touch Screen Panel USB 15.6”Laptop 16:9 Film to Film http://www.ebay.com/itm/371104792501_trksid=p2060778.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
- This touchscreen panel comes from the same distributor as the LCD screen, so it fits perfectly flush on the screen.
- 3D printer
- If you do not already own a 3D printer, there are several 3D printing companies such as Shapeways (https://www.shapeways.com/)and Ponoko(http://www.ponoko.com/3d-printing)that you can order your parts from.
Other assorted parts
-  LEDs (1 green, 1 red)
- http://www.adafruit.com/products/1756 (Green)
-  three pole double throw switch
-  six pin double pole double throw slide switch
-  1’x 3’ breadboard
-  spring (one from a large mechanical pencil should work)
-  jumper switch/cable
-  9V battery
-  9V battery connector
-  bluetooth adapter
-  usb charging cable 2.5x0.7mm DC Tip Plug Connector
-  wifi adapter
-  usb fan
-  8 mini packs of sugru 8x5g (1 pack black, 1 multicolor pack)
-  hdmi male-male cable (1 foot)
-  micro hdmi-hdmi male cable (1 foot)
-  female-female hdmi adapter
-  Standard SAE machine screws (6-32 x 1/2)
- Available at any hardware store
-  Hex nuts (6-32)
- Available at any hardware store
-  Flat washers (#8)
- Available at any hardware store
-  Heat Shrink Tubing(size 1/16”)
(Note: Since this will only be used to seal off any wire splicing you may need to do, electrical tape is an acceptable replacement.)
-  Electronic Grade Silicone sealant/Adhesive
-  Coax Barrel Plug 2.1mm x 5.5mm (male)
-  Coax Barrel Plug 2.1mm x 5.5mm (female)
- 3D modeling environment of your choice
(Note: Also available through Ubuntu Software Center)
-  Soldering iron
-  Heat Gun
-  Wire stripper
-  Multimeter
-  Computer
Step 2: Adding Color to the Case
Unfortunately, due to the size of one of the tablet parts, the company I chose to 3D print my case was unable to print the case in any color other than white. As a result I decided to paint the entire case black. To paint the case I used a black generic spray paint.
Painting the case
- I did not want to paint any of the inside of the case, so I started by taping off any openings. I also cut a piece of cardboard and fit it through the slot for the LCD screen.
- Begin applying layers of paint. To make sure the coats of paint are even apply light layers of paint, and make sure you let the first layer of paint dry before applying another. This process can take a long time, but if you apply too much paint at once, the color may look splotchy.
Coloring the logo
- Open one pack of red sugru, and one pack of yellow sugru.
- Mix in quantities of approximately 30% red and 70% yellow.
- Once thoroughly mixed, apply the sugru evenly to the logo cut-out on the back of the case.
- Remove any excess sugru with a flat surface, such as a credit card.
Step 3: Wiring and Power (Overview)
When wiring your tablet, it is important to remember to use materials that are rated for the power output. If you don’t, one of your components may quickly become damaged and need to be replaced. I have provided a schematic to help me explain how each part works. My micro-pc requires a 5V2A input (this power requirement is common among several different Micro-PCs), and the LCD controller board requires a 12V4A input. I am powering both of these devices from the same battery pack. To power the LED’s I used a 9V battery. I wanted to be able to turn on/off all of these devices at once, which is why I needed the 3PDT switch. The 3PDT (three pole double throw) switch has a total of nine pins divided into three groups of three (2 groups are non-common and 1 group is common). Each of the cables needed for this project have a positive and negative. The outer metal on the plug is normally the negative, and the inner metal on the plug is normally the positive.
Step 4: Wiring and Power (Preparing Wires)
The 2.5x0.7mm usb charging cable which is used to power the micro-pc from the 5V2A output on the battery needs to have its outer protective jacket removed, so that the positive and negative wires are exposed. The same will need to be done to the 2.1x5.5mm coax cable (male-male & male-female) as well as the 9V Battery Button Connector Cable.
Step 5: Wiring and Power (Multimeter Settings)
In order to determine which wire is positive and which wire is negative, the continuity must be checked. In order to do so, you must first set your multimeter to ‘continuity’ mode as indicated by the green arrow. To make sure the multimeter is on the correct setting, touch the two probes together. If you hear a beeping noise, your multimeter is in the correct setting.
Step 6: Wiring and Power (Continuity Check)
Now cut one of the wires and touch one of the probes to the exposed wire. Touch the other probe to the inner part of the coax plug. If you hear a beeping noise, then you have found the positive wire. If you don’t hear a beeping noise you probably have the negative wire, but it never hurts to be sure and check by touching the probe to the outer part of the coax plug. Perform this continuity check for all three cables.
Step 7: Wiring and Power (Soldering 3PDT Switch)
We only need to cut the positive wires, all of the negative wires should be left connected. The positive wire connected to the plug attached to the batteries should be connected to one of the normally closed pins .The other end of that same positive wire should be connected to the common pin that is on the same row as the normally closed pin connected to that wires counterpart. By having this wiring setup, we will have one column of pins that will not be connected. If the tablet is ‘on’, the three common pins will be connected to the three normally closed pins with wires attached. If the tablet is ‘off’, the three common pins will be connected to the normally open pins with no wires attached. In order to attache this switch to the interchangeable faceplate I used black sugru so that the switch would match the color of the tablet. (Note: The common pin of the 3PDT switch with power supplied by the 9V battery through the normally closed pin, is connected to the common terminal of the 2PDT switch.)
Step 8: Wiring and Power (Soldering 2PDT Switch)
As stated in the previous step, power to the 2PDT switch is supplied through the common pin. The normally closed and normally open pins on the same row as the common pin that has power, will supply power to the two LED’s that indicate which operating system is currently being used. The negative end of each of the LED’s needs to be connected directly to the negative wire of the 9V Battery terminal Cable. As for the other three pins on the 2PDT the one parallel to the orange LED (Ubuntu OS) should be left with nothing attached. The common pin as well as the pin parallel to the green LED (Android OS) should have the leads of the jumper cable attached. The jumper cable will be attached to the odroid’s eMMC/SD jumper. By this setup I can control which operating system as well as which corresponding LED will be used through one switch. As with the 3PDT switch, I used black sugru to attache the 2PDT switch to the faceplate. (Note: The Odroid X2 development board is the only one I am aware of that has a jumper on the circuit board and is now discontinued. However, the Odroid XU3 has a dip switch mounted to the board that can be modified to be used with a jumper cable.)
Step 9: Wiring and Power (LEDs)
Now that you have finished setting up the 2PDT switch you should be able to switch power output between the two leads that you soldered to the Non-common pins, when the tablet is "on". In order to complete the circuit, and power your LEDs you will need to connect the negative end of each LED to the 9V battery connector. The two negative leads from the LEDs can be joined so that they form a "Y" configuration with the 9V battery connector. Also in the event that i needed to change an LED I soldered the female ends of breadboard jumper wires to both the positive and negative wires that will connect to the LEDs. I then soldered the respective male ends of the breadboard jumper wire to the LEDs. In order to to get an interesting texture when one of the LEDs is "on" I used two 20mm X 20mm cut pieces of textured plastic commonly used as fluorescent light fixture cover. I attached these plastic pieces to the inside of the case using a silicon adhesive.
Step 10: Wiring and Power (HDMI Cable Setup)
Instead of connecting my micro-pc directly to the LCD controller board, I decided to use a female-female hdmi adapter to connect the micro hdmi-hdmi cable from the micro-pc to the hdmi male-male cable which plugs into the controller board. By using this setup I can switch between displaying an image on the tablet monitor, and using an external monitor such as a TV. How I was able to make this setup work will be discussed in more detail later in the tablet design and assembly section. Also, so that all the hdmi plugs would fit more properly I decided to remove all the protective jackets from the hdmi plugs.
Step 11: Wiring and Power (battery Charger Setup)
In order for the batteries charging cable to fit easily, I soldered together the male and female coaxial cables. Then I fit the female portion of the newly soldered coaxial cable through the pre-made hole in the tablet case, so it fit flush with the exterior of the case. In order to make sure the female portion of the cable doesn't slip I filled the gaps that were set for tolerance with sugru.
Step 12: Setting Up the Operating Systems (introduction)
Now that we have the electrical systems up and running, it’s about time we get something to show up on the screen. If you take a good look at the Odroid, you’ll notice an SD/micro SD card slot as well as an eMMC card slot. If you’re not sure what an eMMC card is, it is similar to a micro SD card except that it has much faster read/write speeds. Also, if you have smartphone there is a good chance that the internal memory is stored on an eMMC. We will use each of these devices to store an operating system. All of the supported operating systems are available for both devices, so whichever operating system you choose to put on each device is up to you.
- You can find all of the official odroid OS images here:
- You can find all of the official Raspberry Pi OS images here:
Step 13: Setting Up the Operating Systems (Extracting the Image Files)
Once you’ve downloaded the “.zip” OS images of your choice you need to extract the file, so you can burn the .img file to the micro SD or eMMC cards.
- Right click on the zipped file, pass over where it says “7-Zip” and click on “Extract Files.”
Step 14: Setting Up the Operating Systems (Preparing the Micro SD and EMMC Cards)
Now that the .img file has been “unzipped” you will need to burn them to one of your storage devices. (Note: If you have decided to use the eMMC card as one of your storage devices, you will probably need an external usb card reader.)
- First use SDFormatter to clear all the partitions on your storage device as indicated by the blue arrow. Make sure you select the correct device from the drop down menu shown by the red arrow, or else you accidentally erase all the files on another storage device. I accidentally formatted an usb drive once, and it was a real pain to recover those files.
- Now open “Win32 Disk Imager” and set the directory to where you have extracted the .img file as indicated by the orange arrow. Again make sure you have the correct device selected from the drop down menu. Then simply click “Write” shown by the purple arrow, and wait for the progress bar to reach 100%. Once that is finished plug it in to the correct slot on the board, and test it to make sure it was installed properly.
Step 15: Setting Up the Operating Systems (Maximizing the Amount of Available Internal Storage)
Once you have installed the operating systems on your micoSD or eMMC card and set up a WiFi connection, you may try to download some apps from the Google Play Store, or the Ubuntu Software Center. If so, you will probably notice that you don't have a very large amount of space (~ 4GB) to store your apps to. This amount of space will be the same regardless of how large the size of the storage device you use. This happened because of the initial partition (division of memory for different processes) setup of each operating system. In order to change this, we will have to use a partition editor program called GParted.
- Once you have opened GParted, be careful to select the proper storage device from drop-down box in the top right corner of the graphic user interface (GUI).
- Once you have selected the correct storage device, you will notice a File System labeled "fat32". This is where all your apps, pictures, videos, music, etc. are stored. You may also notice a File System labeled "unallocated". This memory is pretty much just sitting there and is not being used by anything, so we are going to move it to the "fat32" partition.
- Double click on the "fat32" partition, so that a new window appears.
- In this new window you will see a green bar (fat32) and a grey bar (unallocated). Drag the arrow for the fat32 partition, so that it is re-sized to whatever new partition size you may wish. Then click Resize/Move.
- Finally, once you have finished resizing your "fat32" partition click on the check-mark near the center of the screen to apply all changes.
Step 16: Touchscreen Setup (applying the Touchscreen Overlay)
- Align the touchscreen overlay with the edges of the LCD screen.
- Cover the edges with black electrical tape (To match the color of the case), and wrap the edges of the electrical tape around the back of the LCD screen so the touchscreen overlay is secured.
Step 17: Touchscreen Setup (preparing the OS for Touchscreen Input)
As of right now there is only one operating systems that I have been able to enable touch input for (Ubuntu, although I have heard Pidora for the Raspberry Pi should work as well). This is because the touchscreen controller (Egalax 0eef:0001) that I am using is not recognized as an HID (Human Interface Device) by Android. I have heard of some people that have been able to modify the Android kernel to support this controller board. Unfortunately I do not have the sufficient experience with the Linux command line needed to be able to successfully modify the Android kernel (I have however managed to waste several hours trying though). The rest of this step will be spent explaining how to enable touchscreen input for the Ubuntu OS.
- When you first plug in your touchscreen you should notice that the mouse cursor moves when you touch the touchscreen overlay. However the mouse cursor may not match where you touch the screen, so we are going to need to calibrate it.
- Begin by downloading Xinput Calibrator from the Ubuntu Software Center.
- Open the Ubuntu terminal, type "xinput_calibrator" and click enter. (This will open a new window with an "X" in each of the four corners.)
- Click on each of the X's that appear. This will re-calibrate the touchscreen, but will not make the effect permanent so the next time you reboot the tablet it wont be calibrated correctly again.
- Once you have calibrated the touchscreen, a section will appear with new calibration values. This section needs to be copied.
- Next type "nano etc/X11/xorg.conf.d/99-calibration.conf" and click enter.
- Paste the section you copied here. There are also a few more setting you can adjust such as "SwapAxes"(swaps X and Y axis), "InvertX"(Inverts X values), and "InvertY"(Inverts Y values). Entering "1" for any of these options will perform the action for that option. Entering "0" for any of these options will keep that option from performing its action, and it will be omitted.
- Type "cntrl o" to save the changes.
- Type "cntrl x" to exit.
Step 18: Tablet Design and Assembly (Overview)
In the sections that follow I will explain how each part works, as well as why it was included in the design. I assume that you may be changing the design of some the parts I have uploaded so that they fit your design needs. The faceplate in particular will probably need to be altered, to fit any of the wide variety of micro-pc's that are currently on the market (ex: raspberry pi series, mk808, Amazon Fire TV Stick, etc.)
However, before I continue to explain how everything works I would like to take a moment to give any new inventors a piece of advice when designing any parts. Tolerance (Amount of allowable deviation from the design dimensions) is a very important aspect of the design process. In theory every part of a project may fit perfectly, but in the real world parts are rarely built to exact design specifications. If you don't account for the proper tolerance, your parts may not fit properly and you may have to spend a lot of time and materials to fix the problem. Even the best 3D printers and laser cutters will have a small amount of tolerance that needs to be taken into account in your design.
- Please find attached the .stl file for this step.
Step 19: Tablet Design and Assembly (Latch)
The entire purpose of the latch is to hold the case's moving arm support in place, and to keep it from moving freely.The latch is based off of two main parts. The first part is what holds the case's moving arm in place when not in use, and can be slid back with your finger to allow the cases arm to slide back and exposes the faceplate's connection port panel. The second part is what fits into the rectangular hole in the case. The job of the second part is to hold a spring in place. The spring is what exerts pressure on the first part of the latch and enables it to hold the case's moving arm in place.
- There is a hole in the first part of the latch where a peg will fit. Coat the lining of the hole with sugru. Slide the first part of the latch into place in the top right corner of the case, as indicated by the video. Fit the peg into the first parts hole, through the cut-out at the top of the case. Then allow the sugru to cure.
- The second part of the latch fits into the rectangular cut-out at the back of the case. The rectangular cut-out should be coated in sugru before the second part of the latch is put in place. As with the peg in step 1, the sugru should be allowed to cure.
- Once the sugru has been allowed to cure, the pencil spring should be aligned with the cylindrical extrusion on the first part of the latch and the cylindrical hole on the second part of the latch.
- Please find attached the .stl files for this step.
Step 20: Tablet Design and Assembly (faceplate)
The faceplate serves as a cover for all the ports of your micro-pc. Believe it or not, this is the part of the tablet that took the longest to design, because I wanted to be able to easily switch faceplates in order to change between several different micro-pcs'. I finally settled on this design.
The faceplate can be assembled by simply sliding it into place and then fastening it using 2 Standard SAE machine screws (size: 6-32 x 1/2), 4 Flat washers (size: #8), and 2 Hex nuts (size: 6-32).
- Two washers should be placed in-between the extensions of the faceplate, as well as each of the extensions on the tablet case.
- A machine screw should be placed through each of the circular extrusions on the case and faceplate, as well as the 2 sets of circular washers.
- Finally to secure each of the two bolts, use one hex nut on each.
(Optional: You can use fastening washers to better secure the faceplate.)
- Please find attached the .stl file for this step.
- (Note: I have also attached a .stl file for a faceplate template, so you can design one for your own specific micro-pc. All you have to do is import it to a 3D modeling environment.)
Step 21: Tablet Design and Assembly (case Arm Supports)
The purpose of both the arm supports is to provide a handle for the case so that you don't need to hold the case by the screen. Each of these supports also has a layer of sugru. I decided to coat them in sugru in order to give them a different texture when holding them. The stationary arm support has a hole bored through the center so that a 5.5 x 2.1 mm barrel jack can be fit in order to charge your battery. The moving arm support also serves two more purposes. The first is to serve as a cover for when you are not using any of the ports on your micro-pc. The second purpose is to provide housing for a touchscreen stylus.
The Stylus I used can be found here:
The moving arm support slides on two rail extensions from the case, when the latch is pulled back. To keep the moving arm support from sliding too far back when the faceplate is exposed, I added two pins towards the bottom of the case. The matching cuts for each of these extrusions as well as for the extension of the latch can be found on the moving arm support.
- Pull the latch back, and simply slide the arm into place.
- Apply sugru as evenly as you can with your hands across the arm supports (each arm support will use 2 packs of sugru).
- Use a flat surface such as a credit card to smooth out the flat surfaces.
- Use the molding tool to smooth out the curved surfaces.
- Allow adequate time for the sugru to cure.
- Please find attached the .stl files for this step.
Step 22: Tablet Design and Assembly (hdmi Latch)
The entire purpose of the hdmi latch is to hold hold one of the hdmi cables as well as thefemale-female hdmi adapter. The latch allows the use of an external monitor through an hdmi cable. Initially I was going to connect the micro hdmi to male hdmi cable to an hdmi splitter. Then from there connect one male-male hdmi cable to the controller board, and another male-female hdmi cable to the edge of the case for hdmi output. In an effort to save space as well as some money, I decided to use the latch instead. Also initially the hdmi latch was divided into two parts that were to be attached through an adhesive. However this led to some stability issues, and was ultimately found to be unnecessary. As a result the part I decided to upload was only one entire piece as opposed to two separate pieces.
- The larger male end of the micro hdmi-hdmi cable, as well as the female-female hdmi adapter were attached to the hdmi latch with sugru.
- One end of the hdmi male-male cable (which is connected to the LCD controller board) was attached with sugru to the case directly across from the female-female hdmi adapter, so that it can fit flush with the female-female hdmi adapter plug.
- Please find attached the .stl file for this step.
Step 23: Tablet Design and Assembly (Bottom Cover)
The bottom cover of the case is what holds the LCD screen in place. I designed the tablet in a manner that allowed me to slide the LCD screen into place. I did not apply an adhesive to hold the LCD screen in place. Instead, I added extrusions to the edges of the tablet that allow the screen to rest on the edges of the tablet. If you look at one of the edges of the bottom cover, you will notice that the extrusions run across from one side to another.
- There are two cut-outs at the bottom of the case where you need put two hex nuts.
- slide the LCD screen into place.
- Align the bottom cover, and then insert a Standard SAE machine screw into each of the circular holes of the bottom cover.
- In order to hide the holes in the bottom cover, I decided to make some sugru covers. In order to do so, I first coated the hole with a releasing agent (soapy water).
- Next I filled the hole with sugru.
- Finally in order to make these covers flush with the bottom cover,I used a flat surface such as a credit card to scrape away all the excess.
- Please find attached the .stl file for this step.
Step 24: Changing the Boot Animation (Android)
As the title says, this section was added so that you can easily change your android boot animation. In order to do this we will need to download an app from the google playstore called "Boot Animations". I have created a boot animation that matches the size of the 15.6" LCD screen. I have uploaded this animation so you can use it for your tablet build if you like it. I decided not to make a boot animation for Ubuntu because it boots up quickly. I also did not create a boot animation for Raspbmc because I like the current boot animation.
- Open the Boot Animations app, and click on the tab labeled "Local" as indicated by the red arrow.
- Click on the animation you want to use for your boot animation as indicated by the green arrow.
- A new window will open, and then click "install" as indicated by the yellow arrow.
- Reboot your tablet to make sure you have installed the correct boot animation.
- If you like the boot animation I made for this project, I uploaded the file so you can use it for your tablet. However, the one I uploaded was created for a 15.6 inch screen. If you are using a different sized screen, you may want to the resolution (first two numbers in the desc text document) which is currently set to 1920 x 1080.
Step 25: Final Thoughts
I hope you have enjoyed reading this instructable. If anything in this instructable is unclear, let me know and I will try to help as soon as I get the chance. If you did in fact enjoy this instructable, stay tuned because I have a lot of new ideas that I plan to post.