- The FlySky iBus protocol 2017-10-22
Build a Jekyll blog with Travis CI without granting write access
With the demise of Openshift Online and its free tier, I was looking for somewhere else to host my blog. Even though it’s a Jekyll blog, it does some image resizing, so I can’t use Github’s native builder. I should be able to use Travis CI though, then push them to another Github repository for Pages hosting.
Check that your flash memory isn't fake
Here’s how I’ve checked that my flash memory (USB stick, SD card etc) isn’t fake. The idea is to use a cipher to produce a psuedorandom stream, write its output to the flash memory, then genenrate the stream again comparing it to the card.
Save space used by an Ubuntu VM by using the live CD, the slightly easier way
Yesterday I worked out how to use the Ubuntu live CD to save space on Ubuntu VMs. It turns out you don’t need to change
Save space used by an Ubuntu VM by using the live CD
I like to use VMs when doing things which might put stuff all over the filesystem or needs root access to install. But at a few gigabytes each they quickly take up space. I managed to use the live CD image as a base, which is compressed and can be shared among virtual machines.
Back up the flash of a Huawei Mediapad 7 Lite
I recently purchased a Huawei Mediapad 7 Lite 4GB very cheaply on clearance. It’s based on a Rockchip RK2918, which there are tools for to read and write the flash directly. Before I start trying to hack it, I should get a backup of what’s already on it.
Running a Z-machine on an AVR
Can you make a Z-machine console - a virtual machine for text adventure games - complete with screen and keyboard on an AVR?
OpenWRT on a Nokia N800
This is work in progress, so expect it to be added to/abandoned (probably the latter) at any time.
Science Alive noise maker
For Science Alive, I made a simple circuit that made noises in response to light changes. Being something which makes noise it was popular with the kids. It’s based on circuits described in Nicolas Collins’ “Handmade Electronic Music”. A few people asked me a circuit so I’ll describe it here.
Synchronize a Linux box to a digital TV signal
I remembered seeing some command which could synchronize the system clock to the digital TV (DVB) signal. This is ideal for a MythTV box which isn’t connected to the internet. It’s
dvbdate. One problem: it ignores the system time zone. It can use the
TZenvironment variable, whose current value can be obtained using the date
Implementing the virtual guestbook
So how about implementing the virtual message board? I’ll try it in a virtual machine first.
The Virtual Guestbook
This is work in progress, so there’s plenty of gaps!
I purchased a quantity of cheap laser modules for a project. They were advertised as 3V modules, but they all have 39Ω resistors in series for current limiting. When connected to two AAA batteries, I measured 15mA and a forward voltage of 2.15V. This makes the resistor value 0.85V/15mA=57Ω though.
Code to produce video signals on the STM32L Discovery
I’ve finally coded the program that produces a video signal. There weren’t too many surprises.
- Video signal output circuitry 2012-10-28
DMA on the STM32L Discovery
There’s one more part to my video generator - the picture data, which I want to transfer to the SPI port using DMA. This actually looks fairly straightforward, these are the available registers:
Picture data using SPI
I plan to use SPI to send the picture data for my video generator.
More on the vsync interrupts
I had a thought after my previous disheartening attempt to get the vsync working: since they might have stuffed up timer 11 in ChibiOS, I might change to timer 4. One massive advantage is that timers 2, 3 and 4 have 4 compare registers, instead of one! This means I can use one to turn off the vsync pulse, and one to trigger the DMA interrupt and adjust the sync timings on the next line. Changing everything to use TIM4 was fairly straightforward, the only tricky part being changing the single compare register to use compare register 4, and enabling APB1 instead of APB2 since that’s where timer 4 is. (I originally used register 1, but that is connected to PORTB6 which is attached to the blue LED.)
Starting on the vsync interrupts
Now it’s time to adjust the sync signals to get vsync working, so I need an interrupt when the signal goes low so I can adjust the sync pulse on the next cycle. I have no idea how to start the interrupts.
Coding PWM on the STM32L
So how about coding up the PWM to produce the hsync signal from my previous post? Here’s my first attempt:
More timing video signals on the STM32L Discovery
I’ve looked how ChibiOS does its timing, and worked out that it’s unsuitable for timing video signals. Now I’ll look at the using the timers directly.
- Timing video signals from the STM32L Discovery 2012-10-07
ChibiOS on the STM32L Discovery
I previously used the libraries provided by ST to do something on the STM32L Discovery, now I’ve made a short demo of using ChibiOS. Hopefully by using an OS to write code, I don’t have to mess around with timers myself to process events periodically, which I always found time consuming on the AVR. Here’s what I did:
Using ST's libraries with the STM32L Discovery
Now that I’ve got the LED to light by accessing the registers directly, I’ll try again this time using ST’s libraries. ST calls this the “standard peripheral library”, and can be downloaded from the CPU page.
Blinky on the STM32L Discovery
My program seems to have locked-in syndrome, so now I’ll see if I can get it to flash an LED.
How the STM32L Discovery demo works
In my previous post, I got a basic program running on a STM32L Discovery board. Now I hope to work out what the program works.
- Getting started with an STM32L Discovery with Linux and GCC 2012-09-18 STM32L Discovery board that I got about 8 months ago. It’s not even the canonical blinking light, but it counts up and you only know that it works by using a debugger! Another site gave me the basic idea, but I needed a few changes to get it working.
- Whiteboard bot's first drawing 2012-08-14
Whiteboard robot number crunching
I’m thinking of building a robot that suspends a whiteboard marker from two strings, and draws on a whiteboard. There would be two motors that can change the length of the strings.
Fixing the foam pads on a trackball
Problem: the trackball scratches my graphics tablet!
Drive an Arduino from a mobile phone wirelessly
A while ago I had the idea of using cheap bluetooth modules to operate an Arduino from a mobile phone, thus saving the expense of an IOIO board (or similar). I purchased the module, but it didn’t arrive during a period of unemployment and I never got around to doing anything with it.
A very cheap AVR dev board
I bought one of these boards for about $4 on eBay. It’s based on the USB ASP - a cheap AVR programming board. I remember seeing a post on Hack A Day a while ago about using them as a general purpose dev board, with 5 lines broken out to the black pin header. By removing a link on the bottom of the board, you can get 3.3V from a regulator.
Add a caption to a JPEG image without reencoding
I was looking for a way to add captions to JPEG images without re-encoding them. It turns out there’s a patch to jpegtran that overlay one JPEG image over another one, without re-encoding either. Here’s how I built it:
- Run a V-USB demo on an AVR stick (Easylogger) 2011-12-17
How an electric kettle knows when the water is boiling
My cheap kettle leaked. You couldn’t press the lever down when it wasn’t on the base, so I hoped to find an electromagnet which held the switch on when it had power. I didn’t find one (I only managed to salvage two neon lights from it), but I found out how kettles switch off when they’re boiling.
Laser printer mirror hacking
I pulled the mirror out of a laster pinter, and I had a go making it work.
Repartitioning a computer with four primary partitions
How I repartitioned a hard disk that has all four primary partitions allocated.
Find the progress of a command
If you’re running some command that takes a while, perhaps compressing a large file, you often want to know how far along it is. This is when the
/proc/_pid_/iofile is useful.
Download the packages for an offline Ubuntu upgrade
Well, not really offline since you’ll still have to download some files, but not all of the packages. Use this for computers with limited internet quota. I’m sure this could be done in a single script with some awk-fu.
Changing 8 pins at a time with the Arduino environment
A quick demo of how to change 8 pins at a time with an Arduino, using some AVR C code:
Inside a fake Wii remote and nunchuck
A while ago I bought a fake Wii remote and nunchuck to play with (I don’t actually own a Wii). My tri-wing screwdriver arrived a few days ago, and here’s what their insides look like (you can contrast with the real thing) (click on a picture for higher resolution, and more pics):
A 10MHz USB oscilloscope for under $50?
Oscilloscopes are expensive. USB ones are too. I reckon one can be built for under $50.
VGA from an Arduino?
Well really, I doubt you could use the Arduino IDE to make it…
I heard about a simple circuit the other day that can light an LED of as little as 0.3V or even a lemon. This page analyzes it in loads of detail, and suggests adding a capacitor and diode to improve the circuit’s efficiency considerably.
Printing from an old fax machine
I use my printer about twice a year. I went to use it the other day. The ink was dry. What type of printer will work when I want?
Microcontroller TTL to RS232 communication
I purchased a USB to serial converter, popped it open and observed the two chips inside: a PL-2303HX USB to Serial Bridge Controller for a USB to TTL serial converter, and a ADM211 for converting those TTL levels to RS232 levels. Which is fine if you wanted to actually talk RS232.