Thanks to AWS, I have a new home on the web…on a box in a rack somewhere in Virginia, USA (not far from where I used to live). Best of all it’s free.
Although my new Wireless Cat Feeder has been operating brilliantly, the cat was still often waking us up for pre-dawn breakfast. Although I would grab my phone from the bedside table and hit the ‘Feed Cat’ button, the cat was unable to grasp the concept that food was now available since the people didn’t get out of bed and get it for him.
In the past we had established a kind of Pavlov’s Dogs association when giving him cat nibbles. We would shake the bag of cat nibbles before putting some on the plate. The noise of the bag being shaken would get him running over every time.
So I wondered was there a way to include this in my solution…?
I had picked up an MP3 player/ trigger board from Sparkfun a couple of weeks earlier for another project but didn’t need it straight away. I saw an opportunity to re-hack my Cat Feeder, add in the ability to play an MP3 recording of the cat food bag being shaken, wait a second, then trigger the food.
This clever board has a built-in MP3 player plus support for playing sounds based on either commands though a serial connection or by bridging one of 18 trigger pins on the board. Shorting the pins for Trigger 1 would play a file on the SD card with a filename starting 001.
The modifications were quickly made: 5V power to the MP3 Trigger board, SD card loaded with the relevant sound effect with filename 001catfeeder.mp3, a transistor connected to the relevant trigger pins with the base connected to another GPIO pin on the RN-XV. I modified the PHP script a bit to send the telnet command to power on/off the GPIO pin for the MP3 player, wait a second, then trigger the cat feeder as before.
The setup inside the Cat Feeder was a bit ugly, but I was hoping I would only need the sound effect for a week or two then remove once the cat had also associated the mechanical sound of the dispenser with food. Speakers were external, connected by a short mini-stereo cable from the MP3 trigger board running out through the dispenser tube to speakers hidden behind the unit.
Once all set up it was time to test it. I pressed the ‘Feed Cat’ button on my phone, the shaking bag sound played, the cat food came out and the cat came trotting over to have some nibbles!
In the end I only had to run the enhanced version for one week before the cat got used to the idea that food could be made available without the people having to put it there, and went running over even when the bag shaking sound wasn’t being played.
Since I set this up people have suggested I make this a commercial product. Although an interesting idea I don’t think it could be made cheap enough to get to the kind of price point that would get mass market appeal. As it stands this until represents about $70 in parts.
A commercial version would also need to have a different feature set. My hacked cat feeder will only work in my house. It has been configured for my local wifi network only. If I change my wifi network settings I have to crack open the Cat Feeder to re-configure it.
It also relies on having my web server in the loop. The ‘Feed Cat’ button is presented on a web page provided by the server. When pressed the server must telnet to the Cat Feeder to send it the commands to operate.
A commercial version would need an easy way to re-configure the wifi settings, or just work in ad-hoc wifi mode. There are similar products in the market that use wifi to connect to other devices (eg AR Drone or Withings Scale). It could be set up so when first setting up the Cat Feeder you download a mobile app you could use to configure your wifi network settings, then place into normal operations mode where the app then connects and sends the operations commands over the local wifi network.
If I ever get around to building a second one to give to someone else I figure this is how I would do it next to make it more user friendly, and plug’n’play!
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…
A perfect storm is growing in Asia – a combination of growing individual wealth, lowering cost of access to smartphones and lack of fixed infrastructure. In coming years there will be a sustained boom in mobile digital services such as we have not seen in western markets.
In these markets prepaid dominates and subsidised phone purchases are vanishingly small. People hold onto handsets for much longer periods and a phone will often be handed from person to person a number of times before finally being trashed. The price point for new phones has to be low – much less than US$250 for mass market appeal.
Many smartphone retailers have responded to this with low cost Android handsets; indeed, many are Asian based. Until recently Apple has been notable for ignoring Asian markets (except to access low cost manufacturing). They have (quite rightly) been following a halo brand strategy in western markets – designing objects of desire and positioning themselves as the premium option. Customers in developing markets also see Apple products as desirable but Apple has priced their wares out of reach for most.
However a number of recent announcements shows that Apple’s focus may be shifting.
In recent months Apple has opened iTunes to many new markets in Asia and other developing markets for the first time. Of course, what use is a digital storefront if you don’t have any customers using your hardware?
I have been anticipating a cheap iPhone for Asia though I had not expected it until sometime in 2014 or 2015. However the growing rumours are that Apple will announce such a device this year.
A little while ago I was interviewed on the radio here in Australia about ways in which people are using their phones that the tech pundits never anticipated. I spoke about the phone increasingly becoming an intersection point for the real and virtual worlds; a kind of remote control for more and more things in your life.
I explained how at our house we have come to be using our mobile phones to let ourselves into the house, something which I set up as a kind of joke (“Siri, let me in”, “I’m sorry, I cant do that Dave”) but has become so useful we no longer bother fishing the keys out when we get home.
We have accomplished this to date fairly simply by combining some off the shelf home automation hardware with a little web scripting know-how. Our phones have a shortcut on the home screen, which opens up a web page that’s only available on our local WiFi network. Among controls for lights and appliances, this page contains a button to unlock the door. Pressing the button sends the command back to the computer running the PHP script which in turns sends the command through the x10 home automation controller to an x10 unit wired to the existing remote door-release circuit, unlatching the door for 3 seconds before it again locks.
About as simple as could be. Or could it be simpler…?
I very recently bought a Samsung Galaxy S3 which has inbuilt support for something called NFC, and I have been thinking about some of the applications we can expect to see from NFC technology in the coming years. NFC (Near Field Communication) is a new technology that uses low-power radio to pass information across short distances, a bit like the RFID technology that has been around for years (think holding your building access card or fob against a panel to open a door) but with the ability to pass more complex information with greater security. Some of the applications we are likely to see coming with NFC include tapping your phone at a grocery item to pick up product information, tapping another phone to pass over a picture, tapping a movie poster to get session times (yay, no more bloody QR codes), tapping at the register to buy a can of drink….or tapping your front door to open it.
To provide secure access through a door you would usually require two things: a lock and a key. With RFID the lock is a reader mounted near the door and the key is the RFID tag or card. The RFID tag contains an antenna and a small amount of storage. When brought close to the sensor the RFID tag is powered up via induction and transmits back to the sensor the contents of it’s storage – usually an encrypted password that the sensor system has listed as allowed access. It’s a lot like the traditional lock and key, however unlike a normal key the lock doesn’t need to be replaced when a key is lost; the sensor system can just be updated to prevent that tag from having access in the future. And just like a physical key, if you don’t have it on you when you want to get in you’re stuck.
An NFC system presents an opportunity for a solution where both the lock and key are ‘smart’. Like the RFID system the reader at the door can check to see if a specific tag has access or not. However the extra smart bit is the NFC enabled mobile phone, which can contain an app that stores the relevant code encrypted on the SIM card. When the mobile is tapped at the reader the mobile NFC passes over the code stored on the SIM and the reader confirms access. If the mobile phone is lost the code can be remotely wiped from the phone. Similarly to provide a new person access is a simple as remotely providing their mobile with an access code securely over the internet.
As a first step I have taken a simple approach that builds on the current system. I’ve encoded an NFC sticker with the URL for the local webpage that sends the command to open the door. When I tap my Samsung Galaxy S3 to the tag the mobile opens the URL, unlocking the door. One of the implications of this system is that any NFC enabled phone could tap the tag to be pushed the same URL, though this is not really an issue since the page is only accessible on my local WiFi network. While not an ideal solution it does provide me with the tap-to-enter experience now while I work on the more challenging solution using an NFC reader at the door.
Some resources for trying this at home:
Douglas Adams once observed that intelligent aliens traveling to Earth might assume from their surveillance that the car was the superior form of life on the planet. I think he was almost right, though I suspect they would mistake the traffic light as the top of our planet’s pecking order, as the pulse of life in every major city is defined by the commands issued from these oligarchs.
They are however really pretty stupid.
Many times I have sat in a line of traffic waiting for the green in spite of there being no other traffic using the intersection. On these occasions I wonder that surely there must be a better way.
It turns out there are efforts being made to make Traffic Lights ‘Smart’, and these typically centre on efforts to connect cars via wireless technologies (wifi, 3G etc) to each other and to a central network. Such a world would usher in a huge host of attending benefits:
- Predictive braking, so when the car in front puts on the breaks it announces to all cars following which then disengage the accelerator and start braking in anticipation of the driver doing the same
- Faster Emergency Responses as all cars on a stretch of road are warned via the network of an approaching emergency vehicle and can then warn the driver where to go to get out of the way – even before the lights or siren get in range
- Less traffic strain on existing roads, since due to predictive braking cars can travel closer together allowing for higher traffic density
- Better incident management, as traffic data is captured in real time allowing for identification and immediate management of trouble spots
- More effective infrastructure planning, due to highly granular traffic data
While this is all great and brilliant, of course the realisation of the above technology is greatly hampered by the huge number of industry participants and the lack of any standard or leadership in the area (efforts by BMW and Siemens notwithstanding). Experience from other similarly fragmented industries tells us that it will take years before a single technology is adopted broadly enough to make it worthwhile.
In the meantime however there is an opportunity to make traffic lights smarter even though cars are still dumb. Every traffic light installation today has a basic level of intelligence; induction coil sensors in the road pick up the presence of cars waiting at the intersection and inform the timing pattern of the lights such that while no cars are waiting on a crossroad the default route gets the green a little longer. I can see an opportunity to improve on this behaviour in two ways.
- Link sets of lights. By providing a set of lights (A) with data about cars passing over sensors at an adjacent set of lights (B), lights A can anticipate traffic coming their way and better time cycles of changing lights. This approach requires some physical networking of light sets and re-tooling of traffic light algorithms however would result in a significant (>10%) improvement in waiting times, carbon emissions, general sanity etc
- Give traffic lights the power of sight. There has been much advancement in the technology of video object recognition, much of this due to investment in devices such as Microsoft Kinect and Google’s Goggles. Which the idea suggested above at (1) would provide traffic lights with a degree of better visibility of coming traffic, equipping lights with cameras and the means to understand what they are seeing would allow a greater resolution and overcome limitations inherent in a sensor only solution – such as recognising and responding to bikes, pedestrians and traffic incidents.
The second solution has the potential to allow for even greater granularity in traffic management. Imagine waiting at a quiet intersection in the future where the lights give green signal just long enough for you to get through before the next wave of traffic approaches. There is room for highly significant improvements in traffic flow rates with such a setup, although it would have to take into account driver response times for starting and stopping. It also provides the benefit of additional sets of traffic cameras for transport authority monitoring of roads and incident recording.
Since the light cycle times become more granular in this solution it is important that drivers understand that they are being allowed to proceed under a smart lighting scenario; effectively they must not delay when moving through the intersection, as well as be alert to oncoming traffic. To signal this I introduce a new colour light located below the green. The flashing blue light indicates it is safe for a single car to proceed through the intersection without delay.
The beautiful thing about the smart traffic light solutions I’ve suggested is that no industry concordance is needed in order to make them work; a suitable technology solution from any player can be implemented by any forward-thinking council anywhere. It might become obsolete in 10 years when smart cars become predominant on our roads, but by then the solution would have paid for itself many times over though reduced investment in new roads and lower carbon emissions.
Something to think about next time you’re stuck waiting at the lights…
A year or so ago I was given a Revell model of the USS Voyager (thanks Rick). While I don’t have the patience and attention-to-detail for model kits, I had been looking for an Arduino project and thought this might be a nice kit to consider a multi-mode lighting system controlled by Arduino.
I’ve tinkered with circuit design for model lighting before to flash LEDs to simulate a aircraft rotating beacon, and had scribbled away somewhere an early design. However messing around witch matching capacitors and resistors to get just the right attack and decay curve is *so* much work, the option of just coding the behaviour into an Arduino controlled set of lights had obvious appeal.
My goal for this project was to have a fairly complete set of lighting installed into the model with a button or other means of cycling through different lighting modes. The lighting was to include:
- running lights – these are steady-on red/ green lights located either side of the hull
- navigation lights – flashing white lights running through the hull midline
- cabin lights – white lights behind the windows in the hull
- impulse engine lights – there are two of these, the red light in the warp nacelles and a soft orange glow coming out of vents on the back of the nacelles
- warp engines – these are the long blue glowing lights along the edges of the warp nacelles
- deflector arrays – there are two of these – the main one has a blue glow around it, the secondary one a soft red glow
- hull spotlights – these pick out details on the hull, such as the ship name
- photon torpedos – these are pulsing red lights located front and rear of the main hull
In the end I came up with the following modes:
- Mode 0 – all off
- Mode 1 – running lights and navigation lights on
- Mode 2 – cabin lights come on in sections moving through both hulls
- Mode 3 – engines on. Impulse engines glow red and warp nacelles fade up blue
- Mode 4 – fire torpedos – the torpedo lights pulse in a firing sequence
- back to mode 0
A lot of other people have completed this exact model with custom lighting, however everyone seems to use LEDs for the blue warp engine lighting. I don’t really like this approach as it results in obvious point sources of light in the blue strip of the nacelle, whereas in the show the blue light is a more consistent intensity glow throughout. I was interested to see how effective electroluminescent lighting would be for this task. Electroluminescent lighting (EL for short) provides a soft, consistent light along the length of a wire or strip – picture those amazing costumes from Tron. EL wire comes in many forms including flat strips which seemed like a good fit for this project. EL wire isn’t cheap however (around $30 for a 1 metre strip), uses High Voltage (ouch when you touch it) and is an absolute pain to cut and shape as it is prone to shorting out.
After much trial and error I managed to cut blue EL strips to length and embed in the model nacelles – I think the result is pretty much bang on for the real thing.
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.
I had been considering this project for a while: the ability to send a link to someone they can use on their smartphone to open our front door. Useful for deliveries or when friends or family come over while you are not home. For example I recently had a friend come and stay while we were away for the weekend, however getting a key to him was going to be a challenge as he lived interstate. In the end I left a key in the mailbox which is a terribly inelegant solution and not especially secure.
So I have now developed a script that allows me to send an SMS with a web link that when clicked unlocks the front door for a couple of seconds.
Obviously when designing this I had to think carefully about how it would be secured. I wanted to ensure it was well protected enough that the effort required to hack it was much greater than the effort required to just break in.
The solution builds on my existing x10 home automation which already has the ability to open the door via a set of controls on iPhone, which is already secured such that it can only be accessed while on the local wifi network or via a pin code to access the mobile web page. It works so well we now typically use our iPhones to open the door when we get home almost never bothering to fish out our keys.
When the destination mobile number is entered in the control page the php script sends an SMS (using directsms.com.au API) with a link. The link includes a randomly generated alphanumeric key which has already been stored on the database, along with the timestamp of when it was originally sent and when it was then used. The link has to be used within one hour or it will not work. After the first use it will continue to work to open the door for two minutes, after which it will no longer work.