ZeroPhone gives Smartphones the Raspberry (Pi)

There are several open source phones out there these days, but all of them have a downside. Hard to obtain parts, hard to solder, or difficult programming systems abound. [Arsenijs] is looking to change all that with ZeroPhone. ZeroPhone is based upon the popular Raspberry Pi Zero. The $5 price tag of the CPU module means that you can build this entire phone for around $50 USD.

The radio module in the ZeroPhone is the well known SIM800L 2G module. 2G is going away or gone in many places, so [Arsenijs] is already researching more modern devices. An ESP8266 serves as the WiFi module with an OLED screen and code in python round out this phone. Sure, it’s not a fancy graphical touchscreen, but a full desktop is just a matter of connecting a display, mouse, and keyboard.

For the security conscious, the ZeroPhone provides a unique level of control. Since this is a Raspberry Pi running Linux, you choose which modules are included in the kernel, and which software is loaded in the filesystem. And with news that we may soon have a blobless Pi, the firmware hiding in the radio modules are the only black boxes still remaining.

If a Raspberry Pi is a bit too much for you to bite off, check out this Arduino based phone. Don’t want to do any soldering? Check out what you can do with a cheap Android phone and a bit of hacking.

1 kB Challenge: And the winners are…

The 1 kB Challenge deadline has come and gone. The judges have done their work, and we’re ready to announce the winners. Before you jump down to find out who won, I’d like to take a moment to say thanks to everyone who participated. We had some incredible entries. To say that judging was hard is quite an understatement. Even [Eben Upton], father of the Raspberry Pi got in on the action. He created a new helicopter game for the classic BBC Micro. Look for writeups on the winners and many of the other entries in the coming weeks.

Grand Prize

brainfckThe grand prize goes to [Jaromir Sukuba] for Brainf*cktor. [Jaromir] went above and beyond this time. He created a computer which can be programmed in everyone’s favorite esoteric programming language. Brainf*cktor uses 1019 bytes of program memory in [Jaromir’s] PIC18F26K22. You can write, execute and edit programs. [Jaromir] ran into a bit of a problem with his LCD. The character tables would have thrown him over the 1 kB limit. Not a problem – he designed his own compressed character set, which is included in the 1019 bytes mentioned above. All the clever software takes physical form with a homemade PCB, and a case built from blank PCB material. Best of all, [Jaromir] has explained his software tricks, as well as included a full build log for anyone who wants to replicate his project. All that hard work will be rewarded with a Digi-Comp II kit from EMSL.

First Prize

mosFirst prize goes to [Dumitru Stama] with M0S – CortexM0 RTOS in 1024 bytes. Operating systems are complex beasts. Many of our readers have toyed with the Linux Kernel. But writing a real-time OS from scratch? That’s quite an undertaking.  [Dumitru] didn’t shy away from the challenge. He designed a Real-Time Operating System (RTOS) for ARM processors, written completely in ARM thumb assembly instructions. This is no bare-bones executive. M0S has a rich list of features, including preemptive task scheduling, mutexes, and inter-process communication. [Dumitru] even gave us memory allocation with an implementation of malloc() and free(). The OS was demonstrated with a NUCLEO-F072RB board from ST-Micro.

[Dumitru] didn’t just drop a GitHub link and run. He documented M0S with seven project logs and a 37-minute long video. The video uses electronic whiteboard drawings to clearly explain all the internal workings of the operating system, as well as how to use it.

[Dumitru] is the proud new owner of a Maker Select 3D printer V2!

Second Prize

1klaserSecond prize goes to [Cyrille Gindreau] with 1K Challange Laser. Vector lasers generally take lots of memory. You have to manage galvanometers, laser drive, and perform all the magic it takes to convert a set of vectors to lines drawn in space. The project uses 912 bytes of program and initialized data memory to command an MSP430 to draw an image.

Proving that flattery will get you everywhere, [Cyrille] picked the Hackaday logo as the subject. The Jolly Wrencher is not exactly simple to convert to vector format, though. It took some careful optimizations to come up with an image that fit within 1 kB. [Cyrille] wins a Bulbdial Clock kit from EMSL.

Third Prize

tinygamesThird prize goes to [Mark Sherman] with tinygames. Video games have been around for awhile, but they are never quite this small. [Mark] coaxed the minuscule Atmel ATtiny84 to play Centipede with only 1024 bytes of program memory. Even the BOM is kept small, with just a few support components. Control is handled by an Atari 2600 compatible joystick. Video is black and white NTSC, which is demonstrated on a period accurate CRT. [Mark] generates his video by racing the electron beam, exactly the same way the Atari 2600 did it.

[Mark] will take home a Blinkytile kit from Blinkinlabs.

Final thoughts

First of all, I’d like to thank the judges. Our own [Jenny List], [Gerrit Coetzee], [Pedro Umbelino], [Bil Herd], and [Brian Benchoff] worked hard with me in judging this contest. I’d also like to thank our community for creating some amazing projects. The contest may be over, but these projects are now out there for others to build, enjoy, and learn from.

I’ve wanted to organize this contest since [Jeri Ellsworth] and [Chris Gammell] took on the 555 contest way back in 2011. The problem is creating a set of rules that would be relatively fair to every architecture. I think 133 entries to this contest proves that we found a very fair set of constraints. It is safe to say this won’t be the last 1 kB Challenge here at Hackaday, so if you have ideas for future editions, share them in the comments!

Keep an Old Real Time Clock Module Ticking

Sometimes we run into real problems restoring old machines. [RedruM69] recently ran into a system with a dead Real Time Clock (RTC) module. These modules were used on computers and all sorts of other equipment, storing time, date, and 100 or so bytes of battery backed SRAM (before the days of cheap, plentiful flash memory). Often an external coin cell would supply power to the module. In some cases though, cost savings would take over, and the battery would be incorporated into the module. Such is the case with many Dallas Semiconductor models, and the benchmarq bq3287 module [RedruM69] was working with. If we’re reading the date code right, the module was produced in mid 1995 so we’re well past the advertised 10 year battery life.

Apparently Texas Instruments is the current owner of this design, and they even have a datasheet online. (PDF link). It turns out that the bq3287 is a descendant of the bq3285, except that the battery pin is internally disconnected. For most people this would mean a search for a compatible replacement. An industrious hacker might even whip up something compatible from modern components. Not [RedruM69] though. He broke out his Dremel tool and cut into the potted case. Exposing the internal connections above pins 16 and 20 allowed him to solder two wires on. Connecting these wires to an external coin cell brought the module back to life.

[RedruM69] isn’t the first one to perform this hack. Sun computers kept their MAC address in chips like this. When the battery went dead, the computer was off the network. Hackers have been cutting the modules open and adding batteries for years. You could always forgo RTC modules completely and use the power grid as your timebase.

Character Generation in 144 Bytes

[Jaromir Sukuba]  has an awesome BrainF*ck interpreter project going. He’s handling the entire language in less than 1 kB of code. Sounds like a great entry in the 1 kB Challenge. The only problem is the user interface. The original design used a 4 line character based LCD. The HD44780 controller in these LCDs have their own character table ROM, which takes up more than 1 kB of space alone.

[Jaromir] could have submitted the BrainF*ck interpreter without the LCD, and probably would have done well in the contest. That wasn’t quite enough for him though. He knew he could get character based output going within the rules of the contest. The solution was a bit of creative compression.

bf-cs-3Rather than a pixel-by-pixel representation of the characters, [Jaromir] created a palette of 16 single byte vectors of commonly used patterns. Characters are created by combining these vectors. Each character is 4 x 8 pixels, so 4 vectors are used per character. The hard part was picking commonly used bit patterns for the vectors.

The first iteration was quite promising – the text was generally readable, but a few characters were pretty bad. [Jaromir] kept at it, reducing and optimizing his vector pallet twice more. The final design is pretty darn good. Each character uses 16 bits of storage (four 4-bit vector lookup values). The vector pallet itself uses 16 bytes. That means 64 characters only eat up 144 Bytes of flash.
This is exactly the kind of hack we were hoping to see in the 1 kB challenge. A bit of creative thinking finds a way around a seemingly impossible barrier. The best part of all is that [Jaromir] has documented his work, so now anyone can use it in the 1 kB challenge and beyond.



If you have a cool project in mind, there is still plenty of time to enter the 1 kB Challenge! Deadline is January 5, so check it out and fire up your assemblers!


Bitbanging VGA Fits In under 1 kB

Don’t throw those old VGA monitors away, turn them into works of art with [danjovic] and VGA Blinking Lights. This circuit uses a PIC16F688 to generate VGA video. Not just a random spray of monochrome dots either. VGA Blinking Lights puts up an ever-changing display of 48 colored squares.

blink-thumbOriginally created for the square inch contest, VGA Blinking Lights could hide behind a quarter. [Danjovic] dusted his project off and entered it in The 1 kB Challenge. The code is written in PIC assembly. The final hex used to generate the squares clocks in at 471 words. Since the PIC uses a 14 bit word, that’s just over 824 bytes. Plenty of space for feature creep!

Video is generated with a twist on the R2R DAC. [Danjovic] tweaked the resistor values a bit to obtain the correct voltage levels for the VGA standard. The color of the squares themselves are random, generated using a Galois Linear Feedback Shift Register (LFSR).

With only a handful of components, and a BOM cost under $5, this would be a fun evening project for any hardware hacker.


If you have a cool project in mind, there is still plenty of time to enter the 1 kB Challenge! Deadline is January 5, so check it out and fire up your assemblers!

Half a Chevy Becomes a Boat Launch

A tired 1990 Chevy Lumina isn’t the platform one would normally pick for a custom build. When you’re drag boat racing team on a budget though, you use what you can get cheap. Normally small boats are launched and landed using a trailer and tow vehicle. [Ashley Ruf’s] team at Little John’s racing is launching her boat “Kwitchabitchin” with a bit more style.

The team started by cutting the Lumina in half. Since the Chevy is a front wheel drive platform, everything behind the driver is more or less along for the ride. The gas tank was relocated, and notched to receive the front of the boat. The team then added a quad tire trailer frame. The frame is connected to the car with a long hydraulic cylinder. When the boat is being launched or landed, the cylinder can extend far enough to get the boat floating.

You might be thinking that there is no way this is street legal, and you’d be right. The Lumina only gets the boat into and out of the water. The boat is then pulled all the way forward using the hydraulics. The boat/car pair is a then perfect fit inside the team’s racing travel trailer.

You can check out a video of the car at work after the break

Continue reading “Half a Chevy Becomes a Boat Launch”

Decimal Time Clocks in under 1 kB

Humans historically have worked well with decimal numbering systems. This is probably due to the fact most of us have ten fingers, which make counting in base ten easy. Yet humanity seems to doggedly stick to the odd duodecimal/sexagesimal time system. [Danjovic] is bringing a bit of sanity into the mix with a decimal clock he calls DC-10. He’s entered his clock into our 1 kB Challenge.

DC-10 builds upon C10, the decimal time display system created by [KnivD] on

Here’s how it works:

  • 1 year = 365.25 days (we can’t change this anyway)
  • 1 day = 100 intervals (the equivalent of ‘hours’)
  • 1 interval = 100 centivals (equivalent of ‘minutes’)
  • 1 centival = 100 ticks (equivalent of ‘seconds’)
  • 1 tick = 0.0864 current seconds.

1kb-thumb[Danjovic’s] implantation displays intervals and centivals, exactly what you would need to know the current time of day. He used a Microchip PIC16F628 running from a 4 MHz clock. time is displayed on seven segment LEDs. The PIC is programmed in C, using the classic version of Microchip’s own IDE: MPLAB 8.92. The code uses 297 program words. Since the ‘628 uses 14-bit instructions, that equates to just under 520 bytes. Perfect for the 1 kB challenge!

If you have a cool project in mind, there is still plenty of time to enter the 1 kB Challenge! Deadline is January 5, so check it out and fire up your assemblers!