We have been looking after a cat for quite a little while now. He is a sweet, gentle Russian Blue with a very good nature, however he has a habit of waking us up with meowing and scratching at 4am to tell us he wants his breakfast.
We made a number of attempts to find a happy solution, however we discovered that the extra food left out the night before was not fit for catsumption in the morning and that cats can overcome the muting of a closed door when they really want to be heard. I opted for a smart solution to his early morning antics.
I had seen an automatic candy dispenser available around Xmas as a cheap gift option. At $20 it included a large clear hopper for holding lollies, an infrared sensor to detect a ready hand and a motorised dispensing system to send lollies into a waiting hand. I bought a couple thinking that the hopper would store cat nibbles sufficiently well for freshness and the dispenser should be able to cope with what I took to be a slightly smaller product then the designers had anticipated.
I toyed with the idea of leaving the IR senor in the future Cat Feeder but expected the cat might just keep on going if a fresh food source was available (he likes his nibbles…so long as they are fresh). My goal was to hook the device into the existing Home Automation system such that any mobile phone in the household could trigger a food release. This would also allow us to trigger food releases while away from home as well as to script food releases on a schedule.
The existing Home Automation system is run from a PC using WAMP Server – all automation devices are held in a MySQL database and the front end and switching commands are managed using PHP5. I needed a way to connect the Cat Feeder back to the PC, without having to use additional hardware om the PC side. I toyed with adding X10 capability to it but haven’t been at all impressed with the performance of X10. Wireless would work best, and WiFi seemed the ideal solution as it could hook into my existing network allowing the PC to address the Cat Feeder directly.
My design was to hack the Cat Feeder to include a WiFi board, put it on my WiFi network at home and have it always listening on HTTP port 80 for a command to turn on. It would then execute a couple of commands to turn the feeder mechanism on for a second then off again. Simple. So I thought.
I did a bit of research on WiFi modules and found a growing number of hardware options with varying levels of sophistication. Since I was already pretty familiar with Arduino I started there and purchased a WiFly WiFi shield based on the Roving Networks RN171 chip. This board plugs directly onto an Arduino Uno board, allowing you to connect the Arduino to your computer to quickly program it to send and receive data over WiFi. It has support for all kinds of protocols (from raw TCP sockets to FTP and HTTP) and was cheap at around $60 (compared to the more common WiFi Shield at around $100).
After getting this board and connecting it up I very quickly ran into troubles. Although Roving Networks has a really good user guide for their chip, writing the require code for the Arduino to communicate over serial to the chip was a big undertaking…and frankly at the periphery of my abilities. The board manufacturer included a Arduino library which covered the basics (such as associating to a wireless network, sending packets etc) but which seemed more targeted towards using the board to automatically log into a WiFi network and post HTTP data to a server in response to hardware triggers. This made it highly suitable to a telemetry application such as sending temperature readings to a server etc, but become increasingly challenging to get it to listen on port 80 for HTTP traffic and respond intelligently. The library didn’t provide enough of the groundwork to do what I needed out of the box and tackling the learning curve that would enable me to update the library to support what I needed was more work than I wanted to invest. Furthermore the device had a habit of dropping off the network. I guess if its implementation only called for it to log on to a server over WiFi, send a bunch of data then drop off again but I needed it on all the time. I was also never really happy with it’s behaviour over a local serial connection; when using the Arduino serial monitor to connect directly to the board the output from it was always highly garbled, in some cases leading to anomalous operation.
So I looked into alternatives. By this stage I was also aware that using an Arduino board was a bit of overkill for this project – it simply didn’t require that level of smarts. To cover my bases however I immediately bought three other WiFi options!
The official Arduino WiFi shield was a little more expensive but had much better support with a full library covering everything I wanted to do, lots of examples and most importantly a healthy online community for support!
The Electric Imp seemed like it could provide a minimalist solution being the smallest of the lot. Its an amazing little device and I was keen to have a play with it.
The RN-Xv Xbee module I picked up courtesy of a Hack A Day article about a guy that used it to control his garage door over WiFi. He had a pretty good walk through of what he did and I liked that he didn’t use the Arduino board.
Since I wanted to proceed without using an Arduino board I next tried the RN-XV module. Since it is based on the same chip as the WiFly module I had been playing with, much of the operation was already familiar. Communications between the WiFly and Arduino was managed over a serial link, whereas to connect to the RN-XV I first got it going in ad-hoc wireless network mode by putting 3.3v on pin 8 and turning it on. This allowed it to come up with it’s own SSID which I could connect my laptop to in order to establish a serial connection to the board. Worked brilliantly and I was quickly able to set my WiFi network parameters (SSID, WPA2 passphrase etc) on it. Removing the 3.3v to pin 8 and rebooting it brought it up on my WiFi network – success!
I could then telnet to it and send the relevant serial commands to turn the dispenser motor on and off…however not using Arduino meant that my ability to emulate HTTP on the device was limited (again, at the periphery of my ability). So I instead turned to my PHP code and looked for an easy way to telnet to the device and send commands using PHP. After tinkering with a number of classes based on fsockopen I found one that worked well – TelnetDog.
From here it only took a few minutes to update my Home Automation PHP script, add the device to the database and presto! I had a new ‘Feed Cat’ button on my Home Remote page!
I’m happy to report that the cat is indeed eating from the Cat Feeder tray and is not put off by the noise it makes when dispensing his nibbles.
Now if I can only automate the cat litter tray…
Since deciding to host my own wordpress blog I have discovered the joys of comment management.
When I started I thought “Wouldn’t it be nice if I get some comments on my blog?!” Now I am looking for ways to make them stop.
It seems that there are many ways to use the blogsphere to promote your own site to increase eyeball traffic and therefore revenue from things like advertising. The tools developed to meet this need are the wordpress comment robot. This software utility takes away the burden of visiting people’s blogsites, reading their posts and leaving a comment and automates it all. Often the robot uses clever comment phrases that include some of the keywords from your own post to make it sound more legitimate, however more frequently they are very generic and clearly nothing to do with your post.
I get hundreds of these and it is tedious going through them all to hopefully spot the occasional legitimate comment…though the needle in the haystack metaphor comes to mind here…
Just for fun though I am going to publish each and every comment I get for this specific post so you can see the kind of crap that comes in.
So I spent a few hours pulling all its essential inside parts out until I found the guilty part.
First time fixing a washing machine. Saved us $1000 buying a new one but don’t know that I want to do it again…it was pretty heavy and I couldn’t figure out how to remove the inner drum from the washing tub (the big white thing behind the lid – its upside down with the motor sitting at the top there).
Which makes me wonder about waste in our consumption obsessed society. We were close to throwing out a good condition washing machine thats maybe 8 years old because of what sounded like a death rattle. We considered having someone repair it…but expected the repair bill for an 8 year old washing machine would be big enough to warrant discarding it for a new one.
I expect that many a household appliance makes its way to the tip in a very repariable state, discarded due to suspicious behaviour in the never ending quest for the latest and greatest.
Hopefully this story has a happy ending; I haven’t finished putting it back together yet. Then I need to test that it is still working
Of course there is always one or two parts left over…oh well.
Finally had a nice sunny day to take my Arducopter for it’s first flight!
It is not as stable as I thought it would be; most of the flying time I had it in ‘loiter’ mode which attempts to maintain a position based on GPS and altitude (using either barometer or sonar). Even so as you can see from the video it moves around quite a bit still – next time I’ll take my laptop to make sure it has a solid, accurate GPS fix before launching.
Three flights in total, the last one had a hard landing which flipped the quadcopter throwing a prop; all fixed in just a minute ready for the next flight in a few days.
I have been running Eyefinity for a while over three screens at 1080 lines of resolution limited by a Samsung 1080 monitor either side of my Dell 2711 27inch monitor. However I was able to upgrade the two side montiors to match the middle meaning the whole lot can now run at native reoslution giving a total of 8064×1440 pixels.
However pushing 11.6 million pixels around was too much for my Radeon HD 5860 video card, so I also upgraded this to two Radeon HD6970 cards in CrossFire (linked together so both cards share the workload). While the two new cards were able to drive all 3 displays I found they got hot – very hot. At idle running Windows 7 they sat at about 60c, however when running any kind of full screen graphics they burned at 84c! Too hot to expect a long working life. After reviewing aftermarket fan cooling solutions I decided this was impetus enough to bite the bullet and install watercooling, especially as the ambient temperature in the room itself can get well above 30c.
Installed is a EK FC6970 V2 full cover water block on each video card, a koolance CPU-370 water block on the CPU connected to a koolance 360 radiator and koolance RP-1200 combo pump and reservoir. Details of the equipment and installation are in another post, however the result is a whopping drop of well over 30 degrees when running hot. Windows idel now sits about 44c and maxes out at about 50c when being pushed hard with full screen graphics.
I may have over-reached when I started this project.
I am installing a lot of kit into this – a flight data recorder (with GPS), an autopilot (also with GPS), heads-up display, video camera and transmitter, steerable nosewheel…and navigation lights!
Just working out where bits are going to fit and running wiring has been a nightmare – I’ve cut out more foam from the fuselage than is still remaining there.
There have been some key considerations when deciding where to place the different electronic components. I have tried to keep the receivers (GPS x 2 and radio receiver) as far away as possible from the video transmitter. Also I have tried to place the autopilot as close as possible to the centre of gravity. Finally I have put the pitot tube (for airspeed measurement) in the nose to get the cleanest airflow.
The bottom half of the fuselage is upside down – the cockpit area to the left and the cavity to the tight of that is where the wings attach.
Starting from the left we have the pitot tube (the horizontal tube sticking out of the nose), the paddle pop stick is inserted to trigger a hidden microswitch that turns everything off, next is the steerable nosewheel, then the 4s LiPo battery which is shoved up against the Eagle Tree Data Logger and On-Screen Display. The cavity under the wing is where all the wires come out that plug into the wing components – I have kept it clear of any electronics as all the available space is taken up by the wires when the wings are attached. To the right of this (above the main gear) is the autopilot (essentially just a small box with a bunch of gyros in it). Next is the lights controller which makes all the LEDs flash the correct way (9 LEDs in this aircraft); underneath this is the Radio Receiver. Finally to the right of this is the GPS for the Flight Data Recorder followed by the GPS for the autopilot.
Receiver: Futaba R6014HS
LED Controller: Punk RC (controlling 2 red Anti-collision strobes, 3 white navigation lights/ strobes, red and green right of way lights on wingtips and 2 white landing lights).
Flight Data Recorder: Eagle Tree Data Logger V4 and Eagle Tree OSD Pro (On Screen Display)
Autopilot: Fyetech FY-21AP
I’ve finished all painting on the aircraft now – looks pretty good! Up close the surface looks very speckled an foamy but from 100ft or more it could pass for the real thing.
Insignia placement is not perfect but not bad. There is no Australian Customs aircraft registered DSJ (this is actually currently assigned to a UK WWII Observation aircraft built in 1947). I chose it as it was also the registration for a Cessna 182L which dissapeared in 1978 in one of Australia’s most interesting aviation incidents.
I have added landing gear; they are not very scale-like but the nosewheel is steerable and they all have pretty good in-built shock-absorbers.
Have finished the basic white and red painting of the airframe and wing surfaces and all leading edges in black. Next I will print and place insignia (using a custom decal kit) then finish with a UV resistant top coat.
Received my initial Twinstar II kit from Tower Hobbies. It is very light! Shipping was expensive though due to the large box size. The model is an impressive 1.4m wingspan.
Lots of work to do to this before it flies. Besides the camera and video transmitter I have decided to paint the aircraft (not sure what design yet) and to install navigation lights, autopilot, flight data recorder (black box), GPS (Global Positioning System) and a HUD (Heads Up Display) which will give me information like altitude and airspeed overlaid onto the video feed.