So, this month I tried my hand at doing some improvements to the PETpix project as part of the Retrochallenge Winter Warmup. My intent was to do a board layout for PETpix and to have a few of them made up. I didn’t quite reach this mark, but I was happy with some progress I made with improving the iPhone app I used to transfer PETSCII images over to the pet.
Basically, I had made an iOS app which captures an image, converts it to the closest-match PETSCII image, and sends the converted image via audio from the iPhone’s audio jack to a custom board on the PET side. The speed, however was quite slow – over 10 seconds to send a single image over the wire, and a couple of seconds to do the PETSCII conversion.
With some nights of hacking away at it I was able to optimize the code and get the PETSCII conversion down to about .25 seconds, and the image transfer down to about half a second.
This was accomplished by using a different method of transferring data via audio. Before, I was using a frequency encoding technique, much like that used when saving data to a cassette – one frequency for a 1 bit, and another for a 0.
But after a bit of consideration I found that it was possible to just directly convert bits in a serial waveform to levels in an audio waveform. In the last couple of days I was able to reliably send data from the iPhone’s audio jack at a 19.2 kbps rate and read it over a serial port. This required a comparator to square up the output waveform, and an RS232 level converter. I’ll post more details on this soon.
So, in conclusion for the Winter Warmup, I wish I had had some more time this month to work on this. It was a particularly busy month with regular work, and there just wasn’t a lot to spare after the other obligations were completed. But I’m happy to have sped up the conversion/transmission process, and this should enable realtime (albeit 2 fps or so) video display, using an iPhone camera, and displaying with PETSCII on a PET! Hope to get the full chain working within the next week or so.
This was a fun event and will definitely be involved in the full Retrochallenge!