Good news! I have moved towards my project of wearable Raspberry Pi. First of all, my Raspberry Pi is working. I’ve desoldered all the connectors that were bulky, even though I haven’t desoldered the SMSC ship yet. I’ve desoldered the linear regulator… And replaced it with exactly the same 1117 regulator =) It’s just a temporary proof that external regulator really does work as intended. The Pi boots up nicely even after this drastic modification and is equipped with 8GB card. It also has a case and the prototype shield is being made.
What I’ll be pairing with Pi?
- DS18B20 sensors
- Infrared receiver and diode
- LED strip piece
- I2C RTC based on DS1307Z with logical level shifter
- I2C GPIO expander used as key matrix controller
- DC-DC 5V-3,3V converter
- 2 Li-ion 18650 cells
- DC-DC 7,2V-5V converter
- Usb hub
- USB BT dongle
- 3x Nokia 3310 screens with custom CS signal multiplexer
- Geiger counter
How? Just see this diagram on the left. It gives you some clues about what exactly I’m going to make. Diagram on the right shows you what I currently have =)
That’s how things should look like.
I’m probably going to loot some free sample-offering IC companies =) I’m certainly going to need an acelerometer and gyroscope after that. I have an idea to get them from some mobile phone motherboards scattered around my room, but I just don’t have equipment suitable for desoldering BGA chips – otherwise I’d have had those parts already.
How exactly I’m going to do that?
I’ll need some kind of a board with ATMega – solely for expanding GPIOs, as well as getting normal PWM outputs and analog inputs. These, unfortunately, aren’t available on Pi but I’ll sure need them. I have an Arduino Nano – it’s just that it has broken FTDI chip, all pins desoldered and some traces damaged, but most of them are still fine =) This is necessary for the pulseoximeter to work, for example, as it does require analog input. See, I’m kind of tight on money now =) This explains why I have to suffice from what I currently have and not what I could have ordered from Adafruit/Farnell/DealExtreme/whatever. But I really want to finish this project, and my skills are good enough to get some things out of worthless electronic waste. Moreover, I have some projects that turned out not really good after all – but I can get some parts out of them. So – project will go on. After all, this is something I’ve dreamed about for, like, 1 or 2 years.
I’ll then have to strap this case onto my wrist using some kind of flexible textile band. As you can see, the case is kind of big. But I still like the idea of wearing it on my wrist. Why? I know, it’s bulky and such – but I plan on giving this project benefits that no smartphone currently has and really using this wearable PC, and I think any continuation of this project is not possible if I don’t use it in my daily life. That, of course, means wearing it on my wrist, no matter if it seems oversized. Later, when I get some money, I might make this smaller, but now I just have no possibility – remember, I’ll have to use what I got now 😉 But for now I’ll have to wear this bulky thing when it’s ready. After all, I could eventually come up with a solution to make a device even this size more prettier =)
As I’ll be using this outdoors, I also want this case to be waterproof. This sure will mean some testing of the closed case under the shower (imitating the rain that sometimes happens =) ) Probably I’ll also test it fully underwater – you know, things happen 😉 And I’ll definitely include some kind of device that’ll monitor if water got inside and notify me immediately, at least with LED on the case. A small circuit using, like, one transistor and an external battery has to be enough.
I’m not including WiFi, Geiger counter or NFC in the project yet, but I think I’ll need them sometimes. So – there has to be some kind of expansion possibility, while keeping everything inside the case waterproof. Way to go, pogopins and isolated contact groups from the broken HDDs! I have already got one contact group from HDD that seems promising, all that’s left is to cut a hole in the plastic and wire all the contacts.
Even though case is big – I probably won’t really be able to stuff just everything in it. 18650 cells will have to be somewhere else. I could put them into some kind of cell-shaped cases (probably an 18650 holder modified just a little bit and also made waterproof) and then attach them to the same band that will hold the case on my wrist. But both DC-DC converters will definitely be inside, along with all the other electronics, except those that will be added from time to time.
I’ll need options for debugging. For example, I’m going to take some magnet-controlled switches and glue them inside the case close to the side. One’d control RPi reset pins, and second would enable UART-Bluetooth converter which’d help to access serial console if everything gets broken. This will be some kind of a last chance tool so I don’t need it enabled all the time – the only drawback is in that there has to be a magnet with me all the time =)
The device will certainly act as a RGB flashlight. I’ve got two pieces of LED ribbon, both around 6 centimeters long – one is RGB and other’s just white. Will probably add a possibility to swap them or just use them together. I’d also like to mount a low-power laser, maybe on my index finger – I’ve already tried it and it felt awesome =)
Seems like I’ll be using SPI actively for various things, and each device on SPI interface needs its own CS line. So – there’s a need in SPI CS signal multiplexer. This can be done easily by using some IC like 74hc138, and adds many more chip select lines for connecting more devices to Pi =) But I’ll need to make a Python wrapper library for spidev library so that we can actually use those CS lines, and it’ll occupy 2 or 3 GPIO lines.
I2C will be fine – it won’t need any multiplexing. However, there’s another problem – DS1307Z RTC I’m using is 5V-only, and this is not going to make Raspberry Pi happy. So I need a logic level shifter – and I’m going to get it from TI, as the IC they have is the best for this purpose but is hard to get in Latvia for reasonable price.
I also plan on making an I2C keyboard that will consist of keys placed on fingers of my left arm, the same arm I’ll be carrying my PC on. I want to experiment with this way of controlling the PC, that is – key matrix on the fingers. But I’ll surely need a GPIO expander for this, and I2C seems to be a way to go.
I might buy a camera board if I happen to get enough money, even though it’s not my top priority for now. I already have the plans on how to extend the wiring up to 1M without noticeable losses in signal – using USB cable for power, ground and I2C signals and a shielded Ethernet cable for 4 differential data pairs =) The camera will probably be shoulder-mounted for better field of view with some kind of servo turning it around.
If it lasts, I’ll try to add a GSM modem – at first it’ll be just capable of sending message through some simple software, but then code might be added to enable voice calls. I just don’t feel like being ready to code voice call support, but I haven’t looked that much at it yet =)
I also will need some ICs to help my project. Those include some that I just can’t get in Latvia for any kind of reasonable price. Thus, I’ll need money to obtain them =) For example, I need following ICs from Texas Instruments:
- TUSB2077APT USB hub – I’ll temporarily replace it with a GL805-based board and, probably, will make a breakout for GL805.
- TPD4E001DCKR USB hub ESD protector
- TCA9555 I2C GPIO expander
- PCA9306 logical level shifter for I2C – but I’ll look out for a possibility to replace this with something.
They’ve refused to send them as samples as it’s not any kind of university or company project. So – gotta get this on my own =) Or, maybe, search for similar things at other companies.
As the PC probably need to be silent sometimes, I’ll equip it with a vibromotor, similar to those used in mobile phones, just a little bit bigger. It could be also helpful in waking me up =) Also I’m not sure whether I’ll need loudspeakers integrated. I think I’ll mostly use either wired headphones or BT headset with this. And if I’d need to use loudspeakers with my wearable PC, I have battery-powered Nokia speakers. Also, integrated loudspeakers are hard to make waterproof – sad but true.
Not to mention that Pi has shitty PWM-driven audio output =) I’ll certainly be using my PC as a MP3 player, so I’ll need to add an audio card to it. Either USB or I2S, I don’t know which will be more affordable for me.
The last thing – all this will sure need its own RPi SD card image, maybe even recompiled kernel =) This image will for sure be public and I’ll probably even make instructions on how to embed those things into Raspbian.
All in all, each of these chapters will get an article on its own. I’ll be soon putting an article about DS1307Z PCB that is already made and show you a RTC module for this project – I just don’t have a normal board etched yet to show you. Other things will then follow as soon as I make them.
So, what are the requirements for me to make it?
- Soldering iron, enough solder and flux, along with some more essentials – check.
- Soldering heat gun – I have a possibility to use friend’s one so no worry about this, check
- Hot glue gun – check
- Dremel – check
- Everything to make my own PCBs – check
- Power supplies for substituting batteries while they’re not working yet – check
- Some Wiring language experience I got as a result of tinkering with Arduino before. Thus, it won’t be a problem to make firmware for Arduino as a GPIO expander.
- Python – my language of choice, and it fits in the project as it has all the capabilities needed. I’ve already got some experience in writing more or less complex programs and it won’t be a problem to make usable and useful software for a wearable PC =)
- Case – check
- Raspberry Pi – check
- Some pre-etched breadboards for prototyping – check
- USB BT module – check
- USB-UART module – check
- BT-UART module – check
- Magnetic switches – check
- I2C RTC – PCB is not etched yet, but the layout is ready and I have all the parts
- LED strips – check. Will need to remake them to work on 5V instead of 12V, though, or get a 5V-12V DC-DC.
- USB hub with ESD protection – to buy from Texas Instruments
- I2C GPIO expander – from TI, too
- I2C level shifter – same
- DS18B20 – check. Got like 3 of them already.
- IR receiver/diode – check
- ATTiny 2313 for multiplexer – check
- Arduino – I don’t know whether mine is working now. If it isn’t, this part will be delayed.
- 18650 cells with holder – not available yet. I know how to get decent cells here, though, so it’s a matter of money. I also know a person who’d buy the holders for me abroad, as they’re difficult to spot here.
- DC-DC converters – not available for me yet, too. But I’ll soon make one using a LM2576 – just got one fixed for 5V and they seem easy to design a PCB for.
- Nokia 3310 screens – I know a place where to search for those phones broken, and I’ll just get the screens by disassembling them.
Note – I could get some 18650 cells from laptop batteries. The thing is that I don’t feel good about fiddling with lithium batteries as this easily gets dangerous – and I don’t want my arm to be torn off by an explosion, so I won’t be trying to get those cells for cheap.
I also have an idea for a temporary setup, not needing money. I happened to have 3 batteries of Asus EEE PC, a laptop I’m currently using. That means – 2 spare batteries, and they have just the same 18650 cells inside. So – I could find a way to wire EEE PC battery socket to the DC-DC regulators so that I could power the PC with the said batteries and charge them using my laptop, until I buy proper cells, holder and charger. After that, when I’ll need more custom solution, I’ll go for making something else =)
See, I want to build this PC as soon as it’ll be possible to but also make it functional enough to work, not to be just an additional weight for my arm. Therefore, I’m gonna make a prototype PC fast and then, as I get money, make it better step by step.
What are the positive and negative sides of this project I can think of?
- It’s completely open-source, excluding RPi GPU code, of course.
- It’s the first project like that – no one has ever put anything like this in public.
- There’ll be data about every step on my blog, or a substitute from other blog describing exactly the same part of my work.
- Parts will be cheap – I just don’t have any other choice other than to pick cheap parts =)
- It’s free from Google surveillance and things like that. With this PC, you control your privacy.
- It’ll be really easy to modify it to suit your needs – to throw out something unnecessary or to add something that’s vital for you.
- Almost everyone will be able to build one by spending some time working or, at least, to buy one instead =)
- It does take some time and soldering skills to build a PC like that.
- It’s big and bulky. At least, I haven’t found a good way to shrink it yet.
- Everything that is planned will need to be coded, this will take time.
- It’s not really suited for running a desktop environment on. You can have another Pi for development, though =) I’m using a laptop, so it’s fine for me. It won’t be any faster or slower than a Pi is, that’s it. I’ll certainly think about making a custom DE or modifying something already existent and lightweight.
- It’s not developed by some kind of a company with resources. This is both good and bad thing. What’s bad is that if I fry some of the vital parts I have now (such as RPi), development will likely be delayed as I simply don’t have that much money.
I’ll be developing this anyway, as all the positive sides are just what I search for and all the negative sides don’t bother me that much. So – count on the project as a started, and I doubt there’d be any obstacles that’d divide me and this project… If only I don’t lose my prototype or it doesn’t fry itself due to being badly planned or MB due to my occasional clumsiness. Hope that won’t happen =)