I thought I’d write something here for a change. I have a pretty short attention span when it comes to my free time projects, but all the projects progress at some pace nevertheless. A lot of ideas marinate in my head all the time and when the right time comes, they start materializing. Anyway, enough babbling, here is my list of on-going projects in no particular order.
An Android device running on 450-megahertz ARM9
The processor I’ve chosen is probably the only hobbyist-friendly CPU capable of running real Linux. It’s Freescale’s i.MX233 which can be obtained in a TQFP package. The i.MX233 runs at 454 MHz but sadly doesn’t have any graphics acceleration. There are some videos on YouTube that show Android (mainly old 1.6 Donut) running so it’s definitely possible. 64 megabytes of DDR will be complementing the CPU. I haven’t decided on the display yet, but most probably I will go for a 320×240 LCD with a resistive touch screen. i.MX233 conveniently allows you to boot directly from an SD card so it’s impossible to brick this thing. If something goes wrong, just rewrite the filesystem on the card and pop it back into the i.MX233 system.
So far I’ve done some schematic capture on this project (CPU, DDR and SD portions drawn, PSU and display still needs to be done). After the schematics are complete, I need to verify them and proceed to PCB layouting. This thing definitely needs a 4-layer PCB which will be a first for me. I hope I can get this thing up and running with minimal troubleshooting because my 50 MHz Rigol scope or even the Openbench Logic Sniffer aren’t fast enough to debug DDR memory lines. I wish I had the bucks to buy a fast scope!
A GPS logger
See a pattern here? Yes, the best way to learn is to re-invent the wheel.
I’m aiming for a polished, end-user friendly project. This will be simple by specifications, but still takes quite an effort to get finished. A generic GPS receiver will provide location and altitude data to a microcontroller. I haven’t yet decided on an MCU but I’m probably going for a Microchip PIC simply because I want to learn about them. In the past I’ve always used Atmel AVR so this is a perfect opportunity to try out something new.
User interace works via a few buttons and a small LCD. The device will save the location and other data to an SPI Flash memory. Power is provided from an onboard single cell lithium polymer battery. When plugged into a computer the device will charge its battery and provide a method for offloading the collected GPS data to the user. The MCU is probably configured as a virtual COM-port and a small program on the computer side will query the data and output suitable files (for Google Earth perhaps).
The most trouble for me at the moment is proper handling of the battery. You can’t overcharge it nor overdischarge it. This is practically always handled by the battery, but I don’t want to risk it. I have decided on the battery charger chip (MAX1811) and the system power regulator (MAX710). Overcharging protection is handled by the MAX1811 but I’m not so sure about overdischarging. MAX710 has a low-battery comparator and a shutdown input so theoretically I could set the low-battery comparator to, say, 3.2 volts and then run the comparator output straight into the shutdown input. That might start to oscillate as I have no idea if the low-battery comparator operates after shutdown is active. The datasheet is a bit ambiguous about this.
So far done: nothing else but component selection. I might just have to order the Maxim chips and see if my theory about the low-battery comparator works or not.
HDMI Philips Ambilight clone
This might be a world-first. An Ambilight clone that works stand-alone from an HDMI video stream. There are a gazillion different Ambilight clones in the internet, but every single one of them relies on a computer to do all the heavy lifting. The actual hardware usually consists of a slow microcontroller that does nothing else but receive light intensities over a serial port and modulate RGB LEDs. This is a very effective method on one condition — that the source is a PC.
A few projects have aimed for stand-alone, such as Chameleon, but they work off of relatively slow signal like composite video. Chameleon showed promise but it’s development has ground to a halt over four years ago.
My idea is to pair a FAST microcontroller (the STM32F4, ARM Cortex-M4 running at 168 MHz) to an HDMI receiver (Analog Devices ADV7611). The trick is not to capture the whole image but only portions of interest. That way the processor is able to pull this off on its own.
Another idea that I came up with is to have a daisy-chained RGB LED boards instead of having the main controller modulate all the individual RGB LEDs. I have actually already designed this board (schematic and PCB layout). They consist of a very small ATtiny microcontroller and three MOSFETs to drive the RGB LED. Three leads come in to the board and three leads go out. These are power, ground and data. Data format is not yet decided upon, but it is going to be something simple. One candidate is to have four-byte packets that contain one address byte and three bytes for intensities for each RGB component. The main controller needs to know where the daisy-chained boards are and how many of them there are to calculate suitable values from the image data and pass them on. Data link from main controller to RGB boards is unidirectional.
In addition to the RGB board I’ve started work on the HDMI receiver. The schematic is ready to go. PCB layout is doable in two layers. The first prototype will only contain the ADV7611 and its power supply. Pixel data is broken out to a pin header that can be wired into an STM32F4DISCOVERY development board for post-processing. HDMI is also receive-only, so an active HDMI splitter is required. In the final revision there should also be an HDMI transmitter on the board to allow simple pass-thru operation.
What about HDCP I hear you ask? The ADV7611 has built-in HDCP decryption and keys. I don’t know how this works in practice but again it should be doable.
Touch-screen GSM phone
This one’s pretty old, the idea dates back to summer 2011. A simple 320×240 LCD with touch screen is paired with an STM32F4 and a SIM900 GSM modem. I’ve done the schematic and PCB layout. Both need verifying and revisioning before placing an order on the PCB though. 80% of this project is ARM software, which I’m not very keen on.
Laptop DJ’ing device
The idea is to combine two PCM2706 (as used in my USBDAC), a USB-capable microcontroller and a USB hub to a single device. The microcontroller would mimic a MIDI device that would send control messages to the PC. This would then be used as a companion to Traktor or Serato and a separate DJ mixer. Traktor outputs the two decks’ audio into a DJ mixer’s A and B channels. User can then apply effects using potentiometers that are translated into MIDI control messages that Traktor interpret. Pre-fader listening and mixing is done outboard on a separate mixer, while beat-matching and pitching is left for Traktor.
Done: component selection, schematic capture 75% done.
Phew, that’s the ones that I have on the top of my head. Believe me, I’ve got TONS of ideas stirring in my head. I just wonder where I’m going to find all the time to work on these and more importantly, just think of all the money that is going to go into the components alone…