It all started 4 years before, when I just got to know about the Raspberry Pi. It was still in the prototyping stage, a HDMI stick-like device back then, just like numerous Linux-capable HDMI dongles we can see now. It occured to me that it's wonderful just how little a computer can be, and how much power it can pack. I had many thoughts about it, but not so much real project ideas - being just an inexperienced guy repairing computers for pocket money. I didn't even know it was just a start of all the failures that'd occur.
3 years before, I asked my parents to gift me money. See, Raspberry Pi just appeared and i wanted to try it out, since I've always wanted to build a robot or something, or maybe a portable computer. I hardly had any money back then, and it hardly changed since. I got the money, put it into a nice envelope, but went on a trip where my phone got broken and I had to fix it, and had no possibility to get more money after this. Envelope went empty, but I still did something. I made a case out of an old CD-ROM drive enclosure. The case would house Raspberry Pi, break out all the connectors, add an USB hub or two and house some peripherals, such as WiFi, BT and other modules, oh, and be insertable where the CD drive at the PC. I did manage to make the basics, specifically, the case and breakout connectors, as well as the power supply part. It was super ghetto and as much as I could have made, being broke 99% of the time. I knew I needed an interface, so planned to include 3 Nokia 3310 screens on the front, have menus on them and control them using an IR remote. I also did some programming - you know, writing lines of code is free =)
2 and a half years before today, I've got a laptop. An i3 laptop with a nice graphics card. My parents paid for it, thankfully. Almost as soon as I got it, I decided to make some projects using a new programming language - and chose Python. It was awesome. Compared to the other languages I have tried, it enabled me to do awesome things exactly the way I wanted to do them - mind you, even on Windows ;-) I wrote a program that'd parse local public transportation provider schedules and make a menu where I could input transport number and get its arrival times for a certain bus stops. It even worked offline, and had a nice CLI interface for selection - as nice as it could be, given that cmd.exe doesn't seem to support certain Unicode characters, which were all over the place in bus stop names =) Still, it was lacking in terms on interface. The very next month, I had chosen to write an interface for it for my mobile phone. Mobile phone and Python, you ask? Well, Symbian is almost dead, but it sure left some nice things behind, including a Python SDK for developing apps. Even though debugging by ["compiling", ""uploading a package on a SD card", "installing it on the phone", "reading print statements", "trying to understand thrown exceptions"] was a pain, I still got it working and even managed to submit it as my high school programming project and get a nice mark. Though mainly I was exploring the Capital and the Mojave Wastelands - you didn't miss the part about "nice graphics card", right?
In half a year, I got myself an EEE Pc 701 with a broken screen - for, like, 10 bucks. It immediately became my Linux hacking machine, running webservers, Python applications and all kinds of stuff I'll never ever use. Mainly though, it was my portable hotspot - it accepted a 3G modem or an Ethernet cable link and worked as a WiFi gateway. It also hosted various Left4Dead contests we had with my soon-to-be wife =) The problem was controlling various aspects of it. I've had SSH clients installed on every machine I'd use with that thing, and even this wouldn't help when the network lagged - requiring WiFi or DHCP service restart, which is 'kinda' hard to do over local network when those services are providing the said local network. A reboot by button was a fix, but not always. Besides that, I wanted to make a config interface because I was tired of SSH-ing every time there was a problem. I've decided on a web interface, and used web.py as a base. It's a truly beautiful framework, but I feel like I've put too much on it. I've managed to make a few apps, but then I started making a module system (it needed to be modular, see).e end, it became complicated enough to justify logging in through SSH - which I did anyway while I was developing the framework.
Another half a year forward - earned the money somewhere. I put it in the case I had made a year before - and it worked. I hacked things till I broke most of the peripherals I had embedded, but it was great while it lasted. My other failure was desoldering all the connectors. See, after all the Wastelands a Pip-boy-like device has become a necessity for me, so I desoldered all the big bulky connectors, put it all into a small and what could be roughly-described as wrist-wearable case and... Accidentally the whole customised SD card image. I was stuck with a stock Raspbian image, no Ethernet jack and a WiFi card which needed custom drivers that needed to be compiled against the kernel headers - which I were unable to install on my Pi, as well as any other package. Oh, and It was a mess of wires and headers with pinouts that I've myself had created but forgot to describe so had to reverse-engineer a couple of times. I have learned to etch Internet-downloaded PCBs but weren't yet able to do it properly. Oh, and one day I've got tea with sugar spilled over my laptop. It died immediately, and so did my programming advancements.
The winter that year was exhausting, but it wasn't about weather. I've been betrayed by a person who I've considered to be my best friend for about 8 years, and the betrayal was about a large sum of money - which I still owe to one organisation he convinced me to sign papers for. Unfortunately, while dealing with all that mess I had developed clinical depression and have spent a year trying to battle it. My projects and ideas had halted for more than a year, and I still didn't have money - which didn't help, basically, nothing did. It was only after a year that I started to recover, getting some hope that in the end it would all become. And it did.
I've got to know about Sci Fi Your Pi competition. Basically, it's one of the contests Element14 organises. You have an idea fitting their contest topic, you submit it, they send you some parts and you get on working, submitting your project logs. A PipBoy idea did fit the sci-fi topic, I mean, at least, a little bit? Regardless, from 2 years of thinking I had plenty to write in the application form, as well as was ready to be working even if I didn't get accepted... But I did. It was the first time I've seen a Raspberry Pi 2, not to say touch. It soon has proved itself a reliable desktop replacement, fitted with lightweight Raspbian install - it still is. Much more powerful than 1st generation but still consuming as much as a smartphone... Why can't it be a smartphone? And a wearable computer? And a workstation you could take with you? I'm pretty sure it can.
I've failed the Element14 competition. See... Depression comes back once in a while and it can be quite difficult to obtain motivation compared to what it was before. I also need social interaction, or else it becomes worse. My laptop I had for writing had developed a HDD failure, so I got cut out of being able to write posts in my spare time - which is mainly not at home. Regardless, I started hacking on a Raspberry Pi once in a while. I already knew what kind of interface I would need, having some 16x2 displays and USB numpads at hand. It was just a matter of time before first versions came to be, but it was a long road before it has become what it is.
My goals for this project:
- Finish the system. Make it usable and, possibly, useable by many people - I'm an avid Hackaday blog reader and I see an application for this system here and there, as well as have already received feedback from people that had gotten ideas about how they could use it. It can't be perfect, but it'll be close.
- Then, proceed on making my PipBoy. Basically, finish what I've started with that Element14 contest application - and what I feel like I owe them. It's no use anyway - until I make the control system there's no sense in building the custom hardware - you can't even test it the way it's intended to be used!
- Get rid of depression. Like, finally. It ain't gonna disappear completely, I know, but I also don't get depressed while coding an interesting thing and for some days afterwards, and this system is full of interesting things which are still to be written.
That's all for this post. - Now - onto describing the system!