My old Ham-IV rotator has been in storage for a while, but I’m keen on using it again for satellite tracking. Following moving object such as satellites across the sky requires computer control, so I decided to retrofit the Ham-IV’s controller box. After all the rotator controller box is just 3 switches and a position sensing pot, it shouldn’t be too hard to control using a microcontroller.
My 1981 vintage rotator control box blew its display backlight. Instead of searching for a suitable replacement bulb, I decided to replace it with a LED strip.
This page describes how to automatically send events on the VSCP bus on specific, pre-determined moments. This is useful for example to every night turn off any lights that might have been left on.
I plan on using a few spare Nokia Li-Ion batteries for my new quadcopter and was in need of a decent battery charger. This project can charge 5 single cell LiPo or Li-Ion (in my case Nokia BL-5C 1020mAh) batteries simultaneously from a single 6-20VDC power source. It is based on Microchip’s MCP73831 integrated charge management IC, which is powered through a 1117 5V regulator.
In true eevblog-style we take the REX C100 PID controller and don’t turn it on, but tear it apart.
The controller can be found in many different options on eBay for around 10 Euro. I was curious to see what is inside this cheap PID controller so I opened it up and took some pictures to share.
This article describes how to control VSCP events from a web page. It is based on websockets which connects to the VSCP daemon.
This post describes how I set up my development environment for OpenHAB on Ubuntu 14.04 LTS.
This is a quick video tour of my home automation system.
This article is a check-list for configuring Mespelare nodes as I integrate them into my house’s lighting and power system. It describes the steps to follow to properly configure each node, so that I don’t forget anything.
Most of the configuration is documented in a master spreadsheet file, which lists all inputs and outputs, how they are physically connected (cabling) and how they are to be configured.
When I tried to start my old Yamaha 9.5A outboard engine the pull-cord broke. Oh well, at least I was still in my driveway and didn’t already have the boat in the water. So I set out to replace the pull-cord, which was an easy fix.
I have an old Weck kettle which I occasionally use to boil my wort while brewing. The thermostat on the kettle does not allow fine control of the power input into the wort, so I decided to make a simple controller for it. I had an Arduino Uno clone lying around and it was time to put that to some use. The controller does a very slow pulse width modulation on an output pin, which (through a SSR) will control the kettle’s heating element. This control has to be very gentle so that it does not put too much strain on the AC power.
While changing the gears on my Hobbymat MD65 lathe, I discovered that I was missing a crucial accessory: a small bushing which in my French manual is affectionately called “le coussinet”. To add insult to injury, the manual continues to mention that this is an “accessoire normal”. I guess the lathe didn’t come complete with all accessories when I bought it second-hand. So I had to make my own replacement bushing. Fabricating a small bushing isn’t a big effort when one has a lathe, except that the bushing has a longitudinal slot which accepts a piece of 4x4mm square bar. Without a mill it wouldn’t be easy to machine this slot accurately, but I decided to get creative nonetheless.
Since I have started adding fertilizers to my aquarium using the Estimative Index, I’ve found myself dosing 10ml of liquid into the tank 3 times a week. This gets old very soon, so I started thinking about a way to automatically add the correct dosage of liquid. Since all problems look like a nail if you have a hammer, I started thinking about syringes actuated by motor-driven threaded rod. When looking in my junk bin for a suitable timer to drive the motor, I found a simple 230V timer and realized that it already contained a small but heavily geared motor which turned on a daily cycle. So I decided to try and build a dosing pump out of it. This is the result.
I’ve always wanted a door bell that could e-mail me a picture whenever someone came to my door. This should be fairly easy using a Raspberry Pi, so I built one. Here’s the build log and code if you would like to build one yourself.
My indigenous aquarium has been running just fine for a few months, and then developed a problem. The plant growth slowed down a lot, until they dwindled and slowly died. I knew I wasn’t feeding them properly, so I needed to give them some nutrients. But I want to avoid using test kits to measure the different nutrient levels in the tank. Enter the Estimative Index.
Here’s an overview of how to install vscp_software on a Raspberry Pi. It is based on the tutorial on setting up the VSCP daemon on Unix. I’m not only giving the commands but also the verbose output for most commands, so grease up your scroll wheel :-)
This post documents how I have set up my Raspberry Pi (model B+) for double duty as a VSCP daemon server and a pimped doorbell. This page is mostly for my own reference.
The Hasselt code uses a non-standard bus speed of 250kbps. In order to stay in sync with the rest of the VSCP development community, I changed it back to the 125kbps which everyone else is using.
An important design criteria for my home automation is that nodes should be able to continue performing (basic) actions autonomously, even when they loose connectivity to the VSCP bus. Therefore I designed my Mespelare node so that it has inputs and outputs to manage a 6-way push-button face plate with LED indicators, and the pulse relays that need to be actuated with these buttons. I was planning on piping events sent by the node through its own Decision Matrix and trigger the pulse relays this way, but it turns out that VSCP nodes do not receive events they have sent out themselves, so they are not processed by the DM within the sending node. I could re-write the vscp_firmware so that sent events are echoed to the receive buffer, but this would make mean I am no longer using the standard vscp_firmware and would have to merge future updates into my code manually. So I decided to implement the response to key presses in application code.
Since version 22.214.171.124, VSCPworks reads registers using CLASS2_LEVEL1_PROTOCOL, EXTENDED_PAGE_READ. In reply to this request, the VSCP node sends a few tens of register values to the bus. These frames are sent through the sendCANFrame() and subsequently vscp18fsendMsg() or ECANSendMessage() functions. If the microcontroller can’t clear the CAN send buffer fast enough, the current implementation of the code hangs. Time to update it.
The original Hasselt firmware runs a 10ms timer on Timer0 in interrupt isr_low. The code for Mespelare could use a timer that is a bit less granular than 10ms, for example for the new output PWM routine. Therefor I changed the timer period to 1ms, and updated the other code so it can handle this new timer period.
The Hasselt code has defined several actions for its outputs: On, Off, Toggle and PWM. My house’s lighting system uses pulse relays so I couldn’t really use any of these actions, I need the action to put a short pulse on the output. So I wrote a new action called Pulse.
This article describes the modification of a domestic oven for reflowing printed circuit boards. To avoid re-inventing the wheel I’m using firmware from another project, the Hobbybotics reflow controller. It has everything you’d expect from a reflow oven converter such as PID temperature control and solder profile selection and is nicely documented so it should be easy to reproduce. And it has a PC application as a bonus.
VSCP uses registers to read and write information to and from a node. This article describes the way the addressing of these registers works in VSCP. It describes the mapping of registers in the MDF to the node’s application space and the way the application in turn stores these registers.
So my Siemens WT46W560FG clothesdryer stopped working. It gave an error signalling that the condensation tray was full, while in fact it wasn’t at all. Checking the internet reveals that this is a very common problem with this type of dryers, so much that it can be considered a design flaw. Siemens wanted over a third of the cost of a new machine to repair my 4-year old machine, so I said no and decided to investigate the problem myself. Turns out all is needed to get the machine running again is a (very) thorough clean. Here’s the pictures, should you be interested to do this yourself.
As the C18 compiler is no longer supported by Microchip and the rest of the VSCP group has migrated their code to XC8, I needed to migrate my Mespelare firmware as well. This article describes the process.
So I’ve bricked my PICkit3. The PICkit 3 v3 application crashed while loading new firmware into the PICkit3, and it ended up bricked. It still got recognized by the host computer as a PICkit3 USB device, but with an empty serial number. The Power, Active and Status LEDs stayed on and I couldn’t load any more firmware. So I had to unbrick it. Ironically to do this you’ll need another PICkit programmer. I used my spare PICkit2.
I’m using my Nikon D3000 DSLR camera to document my projects for this web site. Usually it is trailing around somewhere on my cluttered workbench, which isn’t the best idea for a sensitive and expensive piece of electronics. So I decided it deserved its own dedicated space, and bodged up a quick & dirty open cabinet to install it in.
Before putting the Mespelare board into production, I wanted to do a final proof-of-concept test to make sure the hardware design is 100% correct before ordering the boards and components. I wanted my first professional production PCBs to come out 100% perfect, I would hate it to have to bodge up 30 boards…
This article describes my roadmap for developing a home automation system based on VSCP. While I generally try to avoid any Project Management in my hobby projects, this roadmap does keep me focussed on the ultimate goal of getting the system running, and to build basic functionality first and then the sugar coating.
Now that I have the code for the Mespelare module mostly working, it is time to update the VSCP firmware to the latest version. A few years have passed since Kurt has written the firmware for Hasselt (on which Mespelare is based), and the code is still using the old VSCP firmware. A few changes and bugfixes have been made in the meantime so it is time to upgrade.
This is a small PIC-based APRS tracker that supports the OpenTracker firmware. It has a small integrated 300mW transmitter on-board, and a pin header to connect a GPS module.
After lots of testing, reading code and checking, I came to the conclusion that the MDF file for the Hasselt module is bad. That statement goes for any version of the MDF that I was able to find (SourceForge, forum posts, …) So that means we’re on our own and will need to reconstruct it. To be able to do that, we’ll need a way to verify what values VSCP Works has written to our node’s EEPROM memory. This article describes some code to dump the EEPROM memory over the serial connection which we set up earlier.
When you have a hobby like electronics, you quickly find yourself swamped with large numbers of small components which you have to carefully label and store. This goes especially for SMD components; not only will you loose them, but if you don’t keep them in a labelled container you’ll never know the part number of the component again. I needed a cheap, easy and quick way of storing my components, so I made a simple cabinet for them.
Learning the way existing code works is much easier when you can have insight in the code as it runs. While we can’t really look inside a running microcontroller the way we can with programs on a computer, we can use the serial port to send us information on the running code (values of variables, if statement conditions, signal specific points in the code etc). To add serial output to the existing Hasselt code, we’ll need to add a serial connection and add some code to the existing Hasselt firmware. We’ll start by looking at the code.
In the previous articles we’ve ran the modified firmware for our Mespelare module for the first time. In this article we’ll play with the Decision Matrix so we can make the module respond to events on the bus.
This article is a draft and is not finished yet. Proceed at your own peril.
The firmware for the Mespelare board will be based on kurtsidekick’s Hasselt firmware. To gain a good understanding of how this firmware works, we will dissect it in detail in this article.
As a kid I used to have a tropical aquarium. When I moved out of my parents house, the aquarium was emptied and stored in the attic. A decade later my parents cleared the attic, and the aquarium had to go. Instead of storing it empty in my basement, I decided to put some simple plants and fish in it for the enjoyment of my kids (and my own). Easy maintenance and low cost are the key words.
This article describes how to use the USB2CAN interface with VSCP on Linux. While I am installing the interface on Ubuntu Linux, there is no reasons why it shouldn’t work on other distributions as well. We’ll be using VSCP’s built-in driver. The interface is subsequently tested using the VSCP Works suite.
After happily using Herma labels to label my beer bottles, I also want to use them to label jars in which I keep my SMD electronic components. Instead of printing multiple copies of the same label, I needed to figure out a way to print a different text onto each label, preferably without having to type over all the label information that I already have in an Excel file. Luckily, the Herma Label Designer has a feature to import information from a ‘database’. It has a small learning curve, so here’s a quick tutorial.
The VSCP Daemon is a service that forms an abstraction layer between the application(s) and the hardware interface. We’ll use it to allow multiple applications to connect to the bus through the same physical interface. Here’s how to install and test it on a Windows computer.
I have a table saw with a crappy fence. It takes a long time and lots of measuring to set it correctly, and even then it isn’t as stable as it should be. I replaced it with a sliding table. This table is guaranteed to run exactly square to the blade, and allows for easy setting of cutting distances.
Conveniently I label my beers on the cap and not on the bottle. This way they are easily readable without removing the bottle from the case, and once the bottle is uncapped and thoroughly rinsed, I put it in the crate on it’s head and it is ready for re-use, without removing any pesky bottle labels.
My cheap pillar drill comes with a standard table with two slots for installing a small vise. Rarely do I need to drill pieces that require tight clamping, so I figured my pillar drill would benefit more from a bigger table with an adjustable precision fence. I made one out of a few pieces of scrap wood.
Now this is old-school: I sometimes play Tekken 2 and Tony Hawk 1 with my mates on an old PlayStation 1. I used to have a borrowed PS1 which I had modded, but had to return it. I have since acquired my own PS1, so it is time to mod it so it can run copied game CD’s.
De flessenspoeler “Blast”, die verkocht wordt bij Brouwland, is een zeer handig hulpmiddeltje om snel de binnenkant van flessen te spoelen. Het enige nadeel is dat je hem steeds op en af je kraan moet schroeven wanneer je de kraan ook wilt gebruiken om de spoelbak te vullen of een slang aan te sluiten. Het zou zeer handig zijn om de Blast met een snelkoppeling op een standaard koppelstuk te kunnen bevestigen. Mits een kleine aanpassing is dit eenvoudig mogelijk.
I own a Rigol DS1052E oscilloscope. It is a 2-channel 50MHz scope which offers excellent value for its price, and as an unintended bonus can be easily hacked to increase its bandwidth to the 100MHz of its more expensive but otherwise identical brother DS1102E. This article describes the necessary steps, and where to find the correct firmware files & tools to successfully hack the scope.
This article is a collection of links to documents that have good information for people starting with VSCP. Besides reading the complete protocol specification, they explain some of the basic concepts such as the general protocol concept, addressing, the Decision Matrix, masks/filters and much more in an understandable way.
In the previous articles we’ve set up our tool chain and compiled source code for the first time. In this article we’ll be modifying the source code we’ve downloaded to fit the Mespelare board. We’ll be taking baby steps here so bear with me.
This article is a draft and is not finished yet. Proceed at your own peril.
In previous articles we’ve set up our tool chain and developed a new VSCP interface board. Before we start writing firmware for the Mespelare board, we’ll try to compile Kurtsidekick’s code for the Hasselt module. We’ll later base our own code on this foundation.
Here are all the recipes for the beers that I have brewed so far. Not all of them turned out so great, mind you. I like to experiment and sometimes make extreme things. Some of these beers are, mmm, more of an acquired taste… My better beers are listed in bold, although ‘better’ is a quite subjective statement. Let’s say that these are the beers that I would happily brew and drink again.
I’m experimenting with VSCP. The Very Simple Control Protocol is a simple but clever protocol implementation. Its creator made some of the same design choices I would have made, so it will be well-suited for my application as a home automation protocol. I’m not going to describe it here, you can read all about it on Wikipedia or on the VSCP website. Instead I will describe the set-up I have installed to learn VSCP and develop for it.
The Mespelare node is a VSCP board based on the Hasselt board by kurt_sidekick, used to read a Niko 6-way potential-free button set, and control it’s 6 indicator LEDs as well as 6 outputs (teleruptors).
Thanks for reading my website. No really, I appreciate it. This website is a minimalistic attempt to give something back to the web. As this is a personal website, don’t expect quality content and fancy layouts. If you however like to read, as I do, other people’s endeavours into all things technical, I hope that my sometimes incoherent ramblings offer some information or entertainment to you.
In case you wonder what technologies power this website, here’s the what and how.
The original way to interface a TS-50 transceiver to a computer used to be through a serial interface converter. The serial interface has since been replaced with USB ports. Luckily it is even easier to build a homebrew USB interface for the TS-50!
I like brewing beer. This means I have to store a lot of beer. There was an unused space in the basement under the stairs so I set out to build a simple beer rack there. It holds 23 cases, is constructed out of cheap 46x21mm pine and designed to hold a Duvel case in such a way that a maximum of cases can be fitted, keep the bottles accessible without lifting crates, and to allow enough room for circulation. So I put the cases halfway on their sides.
I bottle all of my homebrew. Bottling is one of the more tedious tasks of brewing, and consists of different steps; filling the bottle, capping it, labelling and cleaning. The easier and faster I can make these tasks, the better. I have a pretty good work-flow for filling, labelling and cleaning bottles, but capping needed some improvement.
My two main needs when brewing are small volume and automation, something I couldn’t find in most brewing rigs except for the (+1.500€) Speidel Braumeister. So I decided to build my own picobrewery, based on a 28L Weck kettle and a BrewTroller control module.
Crushing malt is an important step in brewing. It is important to crush the malt finely so that all starch is easily accessible for conversion into sugar, but care must be taken not to damage the husks too much since they are essential to the lautering process. An ideal mill for the job is a roller mill, since it crushes flour out of the malt grains while leaving the husks largely intact. As an exercise in metalworking skills I set out to build my own malt mill.
Het Zotte Zomerproject van vorig jaar was een vispeditie van een paar dagen met een vlot op de rivier. Hiervoor heb ik een tweedehands buitenboordmotortje van 2pk gekocht voor 25€, wat nu dus werkloos in de garage staat. Zonde natuurlijk, en ik had de smaak van het ‘varen’ te pakken gekregen, dus kreeg ik al snel zin in een bootje. De vereisten waren: zelf te bouwen, klein en licht, en qua prijs zo dicht mogelijk tegen de 0€ aan.
If you want to grow your own yeast, a magnetic stir plate is a great tool. It keeps the wort (and any suspended yeast) in constant motion, improving the access of the yeast to nutrients, and optimizing gas exchange so that produced CO2 is replaced by fresh oxygen. Commercial magnetic stirrers are quite expensive, even second-hand, luckily they aren’t too difficult to make yourself.
One day we were sitting by the waterside, fishing. We contemplated that it would be so comfortable to have a sofa on the bank of the river, no, it needed to be on a platform on the water! With a little barbecue on the side for food. And a sofa bed so we could sleep under a tent canopy. Well, things got a little out of hand from there… We built it, took the thing onto the water, lived on it for a few days and had lots of fun along the way!
This is a report of the third firing of the Ballistic Evaluation motor constructed by the Vlaamse Raket Organisatie (VRO). During the second firing a number of issues surfaced, which were since resolved and this third test is intended to verify these fixes.
The previous tests with the Ballistic Evaluation Motor (BEM) failed because the motor failed to ignite. To avoid ignition problems it was decided to increase the throat diameter from 2 or 3mm to 6mm. This allows the use of a beefier igniter. Pol machined a new insert for the throat region, and made a hollow brass tube with flange for the ignition, in which the igniter was glued in such a way that the head of the igniter protrudes from the underside of the tube.
Deze pagina beschrijft de ontwikkeling van een geïntegreerd meetsysteem voor statische motorttesten. Deze electronica interfacet met de Ballistische Evaluatie Motor, leest hier de meetwaarden uit en geeft deze door aan een computer voor opslag en analyse.
This page describes the construction and operation of a device for testing rocket motors. It allows the recording of the thrust generated by the motor during a static test. The recorded data is then analysed using an Excel spreadsheet.
This is a compact, programmable 4-channel rocket timer, based on the Microchip PIC 16F88 microcontroller. It features accelerometer or reed switch lift-off detection and 4 pyro channels that can be independently timed, disabled or grouped together.
This article describes a homebuilt interface for connecting the TS-50 transceiver to a computer using the serial port.
Note: this article is depreciated, for a more modern and easier way to interface the TS-50 to a computer, please check the post TS-50 USB interface.
The picture on the front of my QSL card was taken while departing for a DXpedition to Holmön island (EU-135), off the coast of Umea, Sweden. While preparing for the expedition, I was told that the only means of transportation to the island at the time I would be in Sweden, was a Hydrocopter. I could picture all sorts of weird vehicles in my head, like helicopters with floatation skids etc, but was quite surprised to see this nice vehicle sitting on the ice.