After much anxious waiting I finally received the last piece of hardware for Ivette, my DIY tablet build, and that part was the LCD Touchscreen. So, with all the parts on hand, I excitedly started building the case that weekend. I continued building whenever I had any spare time and only just finished it a few of weeks ago. And now that I have tried it out for a bit, it is now due time to document the build process. But before I that though, I would first like to go through and document the hardware in more detail and outline the general hardware design of Ivette version 1.
The number of parts in this build is rather low, mainly because I wanted to have a proof of concept device up and running as soon as possible, to show off and play around with. The main parts are as follows:
- Raspberry Pi 2
- 100,000 mAh (?) Mobile Battery
- Chalkboard Electronics – 10″ HDMI LCD with Capacitive Multi-Touch
Other parts include the cabling that came with the screen and battery and also a bunch or cardboard for the case, which I will cover in upcoming build logs. Also I have an assortment of dongles that I can plug in to the Raspberry Pi to give it further capabilities like WiFi etc.
I already covered some of the hardware in my previous build log, but now I would like to go into more detail on their specs and also why I chose to use them.
Raspberry PI 2
The Raspberry Pi line of SoC boards are great little computers with a million and one uses. And I have thoroughly enjoyed using them in many a fun project for a couple of years now. They are great because they are basically the PC of the embedded world. No locked down hardware (well mostly) that requires jail breaking (with potential bricking) to get the system you want. Just pop your favourite version of Linux on an SD card (Or other OS, but why you would do that tho, I do not know), plug it in, and start playing. And its super easy to extend it with additional hardware with a huge range of options to choose from, which is very different from pretty much all tablets out there.
The reason I went for the RPi2 was primarily because I had it on hand, and also because it has some pretty good specs, at least compared to the RPi1 and RPi0. I didn’t want to be too limited in what I could do with it, so better performance is always a good thing. But I also did not go for the newer and better RPi3, cause it is just too power hungry and the fact that I would possibly need to add a fan or other cooling to not have it overheat was a bit of a turn-off. That said, I might upgrade to it in the future, because built in WiFi and Bluetooth are some quite nice features.
Other features I like with the RPis is that they have built-in Ethernet ports, allowing me to gain faster and more reliable network connection when that is available, something most tablets of today have dropped in favour of thinner devices. Also the GPIO connector is really nice for when I eventually want to do some more in-depth hardware hacking.
One downside to the RPi2 is that it is fairly bulky due to it’s Ethernet and USB ports which increases the overall thickness of the device. This can be mitigated by de-soldering them off the board and running them to the edge of the case with wires, something I will most likely do in later versions. Also, the standard Audio jack on the board is not very good at all. It suffer from electrical interference from the board during operation where you get a staticy crackling noise when the CPU load goes up. This can be overcome, however, but just telling the RPi to direct the audio to the HDMI port instead.
For more info on the boards please see:
And here, have some specs (from Wikipedia):
|CPU||900 MHz 32-bit quad-core ARM Cortex-A7|
|GPU||Broadcom VideoCore IV @ 250 MHz
OpenGL ES 2.0 (24 GFLOPS)
MPEG-2 and VC-1 (with license), 1080p30 H.264/MPEG-4 AVC high-profile decoder and encoder
|Memory (SDRAM)||1 GB (shared with GPU)|
|USB 2.0 ports||4 (via the on-board 5-port USB hub)|
|Video outputs||HDMI (rev 1.3), composite video (3.5 mm TRRS jack)|
|Audio inputs||Via I²S|
|Audio outputs||Analog via 3.5 mm phone jack; digital via HDMI and I²S|
|On-board storage||MicroSDHC slot|
|On-board network||10/100 Mbit/s Ethernet (8P8C) USB adapter on the USB hub|
|Low-level peripherals||17× GPIO plus the same specific functions, and HAT ID bus|
|Power ratings||800 mA (4.0 W)|
|Power source||5 V via MicroUSB or GPIO header|
|Size||85.60 mm × 56.5 mm, not including protruding connectors|
I bought this mobile battery quite cheaply off eBay. It was advertised as “100000mAh For Mobile Phone Solar Power Bank 2 USB Portable Backup Battery Charger”, and with a price-tag of around $20, it sounded like a pretty good deal.
Now the main reason I chose this one was due to it’s capacity, however, since I bought it, a few friends have pointed out that it could not possibly have 100,000 mAh of charge in it. Primarily because of its rather small size and weight. But it was only a couple of dollars dearer than those with less capacity so I went for it. Another thing that drew me to it was the fact that it had a solar panel, which I thought could come in handy in case I needed to charge it somewhere where access to mains power would be limited. And since I enjoy sailing and am going travelling next year, who knows when this might come in handy. Of course, I do not imagine that the solar panel would charge the thing very quickly, but this remains to be tested.
Other features include a high intensity LED light which can be activated with the power button, and 4 LEDs which indicate the available charge. The high intensity LED won’t be very useful for this project but it is also not a downside. The power indicators however, are quite handy. Especially if I want a super easy way to hook into the charging board, to for instance make the current available charge available to software. In theory, all I’d need to do is de-solder the LEDs and then connect the solder points to something, most likely the GPIO on the RPi. My proficiency in electronics is not great and have yet to explore what is possible with the GPIO bus, but I remain ever hopeful.
The battery has 2 outputs, one 2A, and one 1A, which was another selling point for me. This meant I could use the 2A one for the RPi, which is the recommended input current, and then use the 1A for the screen, which is slightly lower than the screen’s recommended input current, but I figured I could just turn down the back-lighting to keep it from drawing too much.
Once I actually got the Battery, I put it through a bunch of tests and found it to be very reliable and that it does hold a fair bit of charge. Most likely not 100,000 mAh, but still a fair bit. As I said in my previous build log, I was able to run my RPi2 with WiFi and a wireless keyboard as well as an external hard-drive for a couple hours and still had enough charge left to charge my phone a couple of times. And since then I managed to run the system for quite a few hours while doing a bunch of work, and the charge only going down to about half. I now keep the battery with me at all times to ensure my phone never runs out of battery, and my partner likes it so much when we are out and about, that I am going to have to get her one now as well.
It does, however, have one major downside. It is not possible to have it charge something while it is getting charged itself. This includes it getting charged with the solar panel. So if I am charging my phone while outside I need to ensure its tucked away in a big pocket or in a bag or else sunlight will set off the solar panel and the phone will stop charging. This also means that I cannot have the solar panel exposed when the battery is connected to Ivette or a stray sunbeam will cause the system to power off, which for a RPi could mean a corrupted SD card (oh the horror).
But despite this I thoroughly like this battery. For later versions of this build I will most likely be taking it apart to see how it works and see if I can mitigate the issue somehow as well as see if I can give it an even smaller footprint.
And maybe I will finally find out how much it’s actual charge is. That, or break it forever. But hey, it was only $20.
Here’s some specs from the eBay description:
|Input Voltage||DC 5V / 1A Max|
|Output Voltage||Output 1: DC 5V / 2.1A; Output 2: DC 5V / 1.0A|
|Size||143 X 75 X 9mm|
10″ HDMI LCD Touch Screen
One of the most important parts, if not the most important part, the one that turns what is essentially just a portable Raspberry Pi into an actual tablet, is the LCD Touchscreen. And this, of course, was the part that cost the most and took the longest to deliver.
It finally arrived on a Friday before a weekend full of parties and celebrations, which in turn was before a big flight up to Queensland for a friend’s wedding. I had really hoped to receive it earlier so that I could have the case build finished before I headed up. But after weeks of intensive work, this proved to be a highly over-optimistic goal.
I ordered the screen of a company in Malaysia called Chalkboard Electronics. And that explains why it took longer than expected to ship here, what with all the customs and such. I got linked to the screen by one of my inspirations for this project, the PiPad by Michael K Castor. However, the PiPad used another screen model which is no longer available, but the differences are not that many. Mainly a different native resolution and different layout of holes for things like cameras and the ambient light sensor. Also the from photos it looks like the control board is quite different so I’m guessing that was an earlier version as well.
The controller board that comes with the screen takes the touch screen part and makes it available as an HID touch device through its mini USB port, which is single-touch by default, but can be turned into multi-touch by upgrading the boards firmware. The controller also has a mini-HDMI input which makes it very easy to connect to the RPi which has a very convenient HDMI out port.
Another benefit of the controller board is that it can take an audio signal sent over the HDMI cable and split it out to it’s 2.5mm jack, which means that there is no need to use the dodgy audio output from the RPi. No more crackling audio.
One downside with it is that it takes power from a rather narrow coaxial power connector. So just to be certain that I had the correct connector, I opted to also get the official power adaptor with the screen, only issue was that they only had EU/UK or US plugs and no Australian ones. But I had an old travel adaptor collecting dust somewhere, so at least I would be able to power the screen when I got it. Also I figured that I would be able to Frankenstein the connector end with an old USB cable to make it possible to power the screen from the battery.
The board does support powering the screen from the mini USB port, but that requires you to shift a surface mounted resistor, which is something I am definitely not capable of doing. And also that port was going to be connected to the RPi, which meant it would be drawing power from it as well, and sharing the RPi’s 2A instead of having it’s own 1A would not work at all.
With the screen I had also ordered a few cables, as well as the aforementioned power adaptor. Those where an ambient light sensor, an 2.5mm to 3.5mm audio adapter, and the required HDMI and USB cables. The ambient sensor allows the screen to adapt the back-lighting to the current surrounding lighting conditions, but since I was going to run the screen of less current than recommended, I ended up not using the sensor, for fear of it trying to draw too much. The audio adaptor came in very handy to lead the audio jack to the edge of the case making it easy to connect headphones to the tablet.
All in all this has been a great purchase. It did set me back over $200 (including cables and postage), but it was definitely worth it in the end.
Heres are the screen’s specifications taken from the official website:
|Display||10” full-color a-Si TFT with IPS technology|
|Integrated touch-panel||capacitive multi-touch with up to 10 fingers|
|Native resolution||1366×768 pixels|
|Display colors||16 millions (8-bits per color)|
|Panel dimensions||269mm (H) x 172mm (V)|
|Input voltage||5V DC|
|Low power consumption||2.5W (typ)|
|High brightness||450 cd/m2 (nits)|
|Viewing angle||89 deg (all directions)|
More information and options to buy your own can be found on the manufacturers website:
The hardware layout of the device (as seen in the right image) was chosen to be as quick and easy as possible to assemble using as much of the cabling I bought with the screen as I could. I also wanted to do a minimal amount of soldering or other electronics work since I did not trust my skill. Luckily all the cables I got with the screen where all that was required, except for one cable for powering the RPi which came with the battery. And I only had to modify and solder one cable, what I now refer to as the Frankencable, which supplies 1A of current to the Screen. And leaving the frankencabling till last meant I could build everything else and still be able to use the device by just having the screen’s power adaptor plugged into the wall.
One great benefit of this design using standard cables like USB and HDMI, is that any part can be easily replaced (except maybe the screen). If I want a different battery. Too easy, just replace it. Upgrade to a RPi3? No worries (just need to provide a bit more power, probably). Cable broken? Buy a new one for a couple of dollaridoos. Bluetooth support? Pop another Dongle in, she’ll be right.
Testing the Design
The Hardware layout design was worked out and everything looked rather nice and simple and should not cause too many issues. At least, that was the theory. I had yet to actually test the design. So once I had all the parts I decided to do just that. But the first time I hooked everything up I had a moment of terror. I connected everything with the screen pointing downward (the control board is on the back), I turned the power on, a little green LED on the Control Board turned on, I excitedly turned the screen around but on the other side there was nothing. No image or anything. I checked to see if the RPi was working by (blindly) logging in and then telling it to power off, which it did, so that wasn’t it.
I was really worried that the screen was broken somehow, but not giving up, I asked my housemate if I could borrow his windows laptop. I had a hunch that maybe I wasn’t getting an image because the back-lighting was turned all the way down, the screen seemed to be working otherwise. I needed a windows computer because the manufacturer has a program available on their site to control the back-lighting and the simplest one to get working, I thought, would be the pre-compiled windows version. I installed the program and hooked the screen up. Windows recognised the HDMI screen, as well as the HID device, and the touch sensor even worked. So clearly that part of the screen was working. I started the program, and suddenly I got an image on the screen, hurray! But as soon as it appeared it was gone. On it came again, and then gone again. The screen was blinking, and so was the control program. Something was not right.
I tried getting it to work for a while but could not get it to stop blinking. So I thought, maybe its just a Windows thing, or the program had not been tested for Windows 10. So I figured I’d give it another go on the RPi and maybe compile the controller program remotely, or something. So I hooked it up with the screen facing down again and turned the power on. Suddenly the backlight came on (it had not done that last time) and lit up the whole back of the screen, and most importantly, it stayed on. When I turned the screen over, I was greeted with the lovely Linux boot sequence and finally a login prompt. The screen worked! And better yet, the design worked!
Well, mostly anyway. The screen was still running of mains power and I still was not sure the screen could be run off 1A from the battery. And I would not know that until the end of the build when the frankencable was completed. I could have constructed it then to make sure absolutely everything worked, but I had a weekend full of events and a flight to catch the following Monday, so time was limited. And I really wanted to get started on that case.
And next post will cover that case build. It took a fair bit longer than I expected and there are a lot of photos so I will most likely spread it out over a few posts. And after that I will document some of the issues I had with this design and my ideas for fixes and improvements going forward to Ivette version 2.