Thursday, November 13, 2014

Our stab at a line follower robot

Found this old post that I somehow forgot to publish:

I and a couple of people from Illutron are running three workshops about robotics. One of the projects we are presenting is a line follower robot. We have chosen this since making a robot capable of following a black line on a piece of paper presents a number of good hardware and software challenges for the worksop participants.
This is our first version the hardware.
The robot is laser cut from 4mm HDF board and consists of a flat chassis driven by two hacked servos. A top structure is added to carry batteries and various sensors.
A curved structure at the back acts as the 3'rd wheel.
Good traction is achieved by gluing sand paper to the wheels.
The sensor is made from layered HDF board.

Minimalistic APRS transponder beaten by the internet

When starting the minimalistic APRS transponder project the goal was to make a semi-disposable APRS transponder costing less than 28 Euro (~35USD).
After spending many nights designing a VHF transmitter from cheap easily obtainable parts the price landed around (for the transmitter) 13.5 Euro (16.75 USD). This was not including about 1 hour of assembly time. All seem good but then I found this module on the Internet for 11.12 Euro, including shipping. Not only was it cheaper than I could ever build something myself but it was also a fully programmable VHF tranceiver and had 1W output.
I have now decided to base my APRS tranceiver around this module and use the left over money(!) on a more powerful processor.

Here is a picture of my initial prototype. Schematic and source follow shortly.

Friday, November 7, 2014

APRS transponder now with 1W output

Did some more work on the minimalistic APRS transponder. Made a test circuit board that allowed for adjusting component values. It now output 1Watt at 7.2V
UPDATE: Some pins have changed so this schematic is NOT compatible with the code posted earlier
Updated code HERE
Added a voltage regulator for 2LiPo cell operation.
Here is a quick video of my test setup transmitting 1W.

Tuesday, October 28, 2014

Tone/DTMF detector library for Arduino

Was playing with some cheap radios and decided that the keypad DTMF tones could be used for remote control.
I had some old source that detected touch tones using a AVR microcontroller and decided to convert it for Arduino.

This resulted in a library that detect audio tones played into any Arduino pin.
The audio is first clipped to a 1-bit signal (played loudly into a digital pin) then sampled at 10kHz.
256 1-bit samples (25.6mS) can then be analyzed for the content of one or more audio tones.
The analyzer uses a crude 1-bit DFT but works surprisingly well at detecting multible tones such as DTMF or guitar plucks.
The result can be presented as either a DTMF symbol or approximate signal strength for any frequency analyzed (up to 5kHz).

Here is the library for now (will move to github).

Magnetic levitation

Some students wanted to build a toothbrush holder that floated a toothbrush in mid air to avoid contamination.
I build a prototype to see if it was possible to implement the control system in software.

This project allow a small permanent magnet to be levitated by a electro magnet.
Since static passive magnetic levitation is not possible a HALL effect sensor
 is used to constantly regulate the magnetic field.
To achieve stability a software based PID controller is used.
5 potentiometers is used to control the PID parameters.
This is the Arduino code for the project

Minimalistic APRS transponder

After working on a High altitude Balloon project I got interested in APRS.
APRS is basically a radio amateur driven network that among other things lets you broadcast your position worldwide on VHF radio.
For out project we used this APRS transponder to keep track of the balloon.
Mostly for the challenge I decided to build a really small and inexpensive APRS tracker you wouldn't be too sad to loose.

UPDATE: The example code uses a ATTINY85. Change to ATTINY45 in AtmelStudio if using this chip.

I used a FS6377 integrated clock synthesizer as the VHF transmitter. This chip is I2C programmable and is able to generate 144.8MHz (or 144.39MHz for US) from a 20MHz crystal.
The FS6377 does not have a modulation input but I was able to modulate the crystal oscillator using a simple variable capacitance diode.
I chose the ATTINY85 microcontroller form Atmel because it is cheap and available in a really small package.
The BELL202 modem signal needed for APRS is synthesized inside the ATTINY85 microcontroller and output as a PWM signal.
The frequency of the modem tones need to be very precise and since the internal clock is not very accurate I chose to generate a 10MHz clock frequency externally. It is possible to tune the internal clock in software to gain an extra I/O pin but I didn't need it here.

The transponder really show potential to miniaturized. The transmit power is around 30mW enough for long range if transmitting in line of sight.

The project is heavily inspired by the Trackduino project.

Here is the source code for the project as an AtmelStudo project

UPDATE: Fuses are EXTENDED 0xFF : HIGH 0xDF : LOW 0xC0

Use this program to change for other frequencies:
This is the current configuration. Mind that the registers are in reverse order from the order they are sent in transmitter.cpp in the project.

Monday, May 12, 2014

A bit more wheelchair stuff

Figured out some more details about the actuator data format.
Also a short video from FabLabRuc of me driving the wheelchair using a HCD controller.

Sunday, May 11, 2014

Hacking electric wheelchair drive

While building some robots for a museum we came up with the idea of using an electric wheelchair as the base for the robot.
Not wanting to replace the electronics we gave it a shot to try to use the existing motor driver and control it from an Arduino. On inspection it turned out to be a very common Penny and Giles Pilot plus drive.
Very little technical information is available about the interface between the joystick- and motor unit of this system. So we started reverse engineering. Here is what we have found so far.

By opening up the joystick and probing connections inside we found that the joystick movement are communicated as serial data @19200BAUD, 8 databits and even parity. Apart from the driving data the joystick unit also emit an additional, and completely different, data stream for controlling various lights and actuators on the chair.
The physical connection is using a propitiatory 6 way connector.

I turns out that the joystick sends drive data packets with checksum roughly every 10mS. Immediately after the data line changes direction and the motor controller returns a packet of data, again with checksum.
Simultaneously but not in sync another data signal is sent to control lights and actuators.

The data format seem to be completely non-standard but relatively simple to encode.

Probably for safety reasons the system does not tolerate any signals being missing or corrupted without shutting down so a fair bit of probing and fiddling went in to eliminating the joystick and replacing it with an arduino.
Here is a rough cut first Arduino sketch that allowed us to drive the wheelchair motors actuators and lights.
Quick shaky video of it running.

We plan to turn out a easy-to-use Arduino library for controlling the PG Pilot Plus soon.

Saturday, April 26, 2014

The_synth Arduino library got an upgrade

A while ago I released a Arduino synthesizer library. A new and improved version is now available github:

I was asked to play a small concert at my friends PhD defense using an Arduino running this library.

Listen to the result here:

The music was sequenced using Ableton Live and sent to the Arduino via. MIDI @ 31250 BAUD serial data. The output from the Arduino was a 8 bit PWM signal that was subsequently lowpass filtered using a simple LC filter.
Part of the low pass filtered audio signal was sent back through a echo effect processor (inside Ableton) to add a bit of flavor and make it tolerable to regular people :)

Monday, February 24, 2014

Easy to use Arduino wireless library

When working on the HCD project it came apparent that the small radio chips used could be used for general purpose wireless communication.
The BK2421 based radio turns out to be compatible with a lot of other devices like the RFM70  or the nRF24L01 from Sparkfun.
I have made a simple to use library for Arduino that uses the HCD or similar radio for simple character driven communication.
In addition to communicating between Arduinos it can be used to connect to the HCD or similar handsets so they may be used for controlling your own stuff.
See the library examples for basic functionality.

Check out the Arduino library.

Friday, January 10, 2014

Fun with thermopile generator

Got a bag of Peltier cooling elements (thanks Dan) and experimented with using them as thermoelectric generators. These devices will generate an electric current when subjected to a temperature difference.
When placed on a hot oven they will generate about 1,8V and 650mA for a few seconds and then fade out due to heat conducting through the element and cancelling out the temperature difference.
I found a really fancy heat sink from an old server. By placing the heat sink on top of the element I was able to sustain generation for a much longer time.
Even the heat sink eventually gets hot causing the power output to decrease. Sitting on top of the oven in a column of warm air it is not able to dissipate heat well.
I found that blowing cold(er) air from the surroundings onto the heat sink increased the efficiency dramatically.
As a small cooling fan I used a motor/prop assembly from one of the HCD's, powered directly from the Peltier element. This allows sustained power generation.
Just for fun I connected a color changing LED (Thanks Jim), powered by modified Joule Thief circuit:

Video of the thing going.

Update: Picked up the cold generator and held it in my hand. After a few seconds the fan started just from the heat of my hand!