This article describes building a small (3.3 cm times 3.3 cm) RC servo controller using an avr microprocessor and an FT232RL USB-uart chip. All RC servo signals can be set to pulsewidths from 0 to 8.1 ms using the usb-serial interface.
RC Servos are popular among modelling and robotics enthusiasts because of their simplicity. They take a pulsewidth-encoded input, and turn accordingly with relatively high torque. They have their disadvantages, for example one cannot tell if the servo was able to get where it was sent, but their low price and the fact that driver and gear box are integrated make up for that. Also, Conrad sells them for 3 € a piece, so I bought some.
Posted in Electronics
|
Tagged avr, servo, usb
|
Due to my slightly outdated computer flash is a huge problem. So, for viewing youtube videos, youtube-dl.py is a great solution. However, I wanted something more comfortable.
ytplay wraps around youtube-dl.py, it searches for a video, orders youtube-dl to get it, and starts playing it in vlc.
Usage is simple:
> ytplay foobar
will search youtube for videos about foobar and play the first one found.
The code is still quite dirty, especially the subprocess part. However, it should work, have fun!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| #!/usr/bin/python
# -*- coding: utf-8 -*-
# parser.add_option('-P', '--play', action='store_true',
# dest='play', help='play in vlc', default=False)
from optparse import OptionParser
from subprocess import Popen, PIPE
from urllib2 import urlopen
from urllib import quote_plus
from re import search, match
from os import system
parser = OptionParser(version='2010.02.13')
parser.add_option('-p', '--player',
dest='player', metavar='PROGRAM', help='media player to use', default='vlc')
(opts, args) = parser.parse_args()
if match("http://",args[0]):
videopageurl = args[0]
else:
searchargs = '+'.join(args)
searchurl = "http://www.youtube.com/results?search_type=&aq=f&oq=&search_query=" + quote_plus(searchargs)
searchresult = urlopen(searchurl).read()
p=search(r'(watch\?[^"]*)',searchresult)
if p==None:
print "No Videos found"
exit()
videopageurl="http://www.youtube.com/" + p.group(1)
print "Starting youtube-dl for " + videopageurl
ytdl = Popen("youtube-dl.py -t -b " + videopageurl,shell=True,stdout=PIPE)
while not ytdl.stdout.closed:
line = ytdl.stdout.readline()
print line,
if line == '': exit()
p = search(r'\[download\] Destination: (\S*)',line)
if p != None:
print "Starting player: " + opts.player + " " + p.group(1)
system(opts.player + " " + p.group(1) + " &") |
ytplay (1.28 kiB, 2010-02-14)
Having recently acquired a bluetooth GPS receiver for as little as 20 €, and just having switched to KDE 4, i tried to combine those two, and write a little plasmoid to show the current position on the desktop.
And that is basically everything to say, enjoy the little applet.
Installation
Make sure gpsd is installed and set up properly. Also make sure the python bindings are installed.
In Ubuntu you would need to:
sudo apt-get install gpsd python-gps
sudo dpkg-reconfigure gpsd
sudo apt-get install python-plasma python-dev
After those are installed, you can proceed to install the plasmoid with plasmapkg -i.
Posted in Computers
|
Tagged gps, plasmoid, python
|
LCD Controllers using an HD44780 Display Controller are commonly used for small batch electronic devices, and are popular with electronics fans worldwide. One problem with those controllers is their demand for IO-lines, due too the parallel interface they require at least 7 IO lines.
Posted in Electronics
|
Tagged avr, c++, lcd
|
For several years now, new trucks sold in the European union are equipped with digital tachographs, that record the driving times and replace the older chart-based mechanical tachographs.
For companies in road transport that means, although in theory they get nice data about their drivers and vehicles, in practice they have to pay a lot of money for the digital tachograph and the associated equipment, which is then used against them – the old fraud schemes no longer work, the machine cruelly gives every police officer the driving times of the last 28 days (and could give much more).
Since it’s suddenly, out of nowhere, christmas time again, and since christmas is traditionally the time to build blinking somethings, i decided to publish this. Long ago – well, actually last year – this as a christmas present for my girlfriend Eva.
What does it do? Nothing useful. You plug it in, and the various LEDs blink wildly, one letter at a time, two letters at a time, all on, all off.
Posted in Electronics
|
Tagged avr, blinky
|
Some months ago I aquired a cheap gps mouse (Royaltek RGM-2000, really cheap, 2 € + shipping) at ebay. My plans to use it in combination with an microcontroller and a display haven’t worked out, it is a lot of work and the garmin units do that job fine.
However, playing around with it in python lead to better results. Getting the data to google earth works nicely, and at least qlandkarte can read the generated gpx tracks.
Usage
- Start the Program, add a parameter for the port your nmea device is attached to (/dev/ttyUSB0 is the default
Posted in Computers
|
Tagged gps, python
|

This device connects to a computer’s usb port and controls two small electric motors using the L293D. The atmega microcontroller uses the firmware-only USB driver from objective development.
Device description
The usbmot device controls up to two small motors, 600 mA current each, 1.2 A peak each, with an atmel atmega microcontroller connected to some host device via USB. The speed of the motors can be controlled with PWM.
Posted in Electronics
|
Tagged avr, motor, usb
|
After reading about the amazing 5-seconds bootup I decided to once again compile a kernel myself. Compiling a kernel is almost trivial these days, but customizing the configuration can still be quite confusing. For example, the names of the modules in lsmod aren’t the ones you select as config options. To map them, I found some scripts in the LQWiki, but they weren’t that easily to use, and also programming in bash is just painful.
So i wrote a python variant, that takes an input config(for example your distributions config) and changes the reply to “y” for all config options if the respective module is loaded(ie. if ext3 is loaded, CONFIG_EXT3_FS=y will be set).
Think about an ordinary man on an ordinary day. He drives to work using 1.5 tons of steel, with an engine strong enough to carry two cows to the slaughterhouse, does some work in some office, using some 3 GHz machine to answer some emails and print some forms. Later that day he goes home, where roughly 400 cubic meters of air and some more of wood and concrete are heated to comfortable 23 degrees Celsius, to provide a comfortable evening for 0.1 cubic meters of person.
Posted in Musings
|
Tagged rant
|