A blog of my thoughts, from car things, tutorials and ideas to Arduino, electronics, PVR (TVHeadend and Kodi) and a place to put my development ideas and thoughts.
Join me on Patreon https://www.patreon.com/andyb2000 to help support my HOWTOs and online guides.
Sunday, 19 April 2015
Removing dashboard/console/speedo from Chrysler Grand Voyager
So onto the tutorial, I found that the speedometer, rev counter, etc, weren't illuminated at night, so looks like the bulbs were out, so to remove it here are the few simple steps. It didn't take long and is nice and straight forward.
First, there is a plastic cover at the base which exposes two of the first screws, this simply pops up so just apply a little force to the centre of this panel:
As you can see, I've popped that up on mine already. Be careful, the UK edition has that LED embedded which is the engine immobiliser light. The leads on it aren't very long, so don't pull the cover off too quickly.
Looking underneath you'll see the LED is on a small connector, so you can take each leg/lead off. Make sure you mark/make a note which colour lead onto which leg as LEDs are sensitive to polarity (+ and -) so make sure you put them back on the right way round!
LED on mine has yellow and grey leads, so I simply removed the grey lead and wrapped that leg on the LED in white electrician tape.
Remove that cover now and put it out of the way. You've then exposed all 4 screws (the top two screws are obvious)
All four are cross-head (otherwise know as Phillips) screws, so nice and easy. Once out you can remove the plastic facia. This is a little tricky due to it's size and the steering wheel getting in the way, it is slightly flexible so let it flex and eventually it'll come out.
There are then 4 screws at each corner of the panel, each of these are cross-head. Careful when you remove them, try not to let them drop. I did with one of mine and luckily it rattled it's way down and out the bottom into the footwell, but I think I was lucky!
After you've removed all four you can then gently start to move the whole panel towards you. The cable/connector for the panel is along the top near the middle, so pull it towards you slightly so you can see it. It uses the standard Chrysler GV connectors where you slide the red tab before you can press the release on it and tease it out. Try to get the connector out in one swift action. I didn't on my first attempt and the car started to light up a lot of panel lights randomly (Ignition off and key out, obviously) so be careful as I'd not want to do that too often in case it confused it!
Once disconnected you can remove the whole panel. Here is the back of the panel for reference and you can see the main connector just offset from the middle slightly.
(As an aside, you can see why my panel illumination doesn't work. There are no bulbs or even fittings where they should be! These are PC74 lights+fittings for reference)
Fitting it all back together is pretty much the reverse. It's not a complex/tricky job, but hope this helps.
Thursday, 12 March 2015
Broadband at home in the UK
As some of you may know, my professional life is working for an isp as network engineer, and in that role I end up dealing with larger internet connections (mainly business who get fixed line circuits or fibre circuits).
But at home, I unfortunately struggle with a less than perfect speed and connection and unfortunately there is very little you can do.
Thousands of homes through the UK suffer a similar problem, the old BT (or gpo!) infrastructure just simply isn't in place in many locations, especially those in rural Britain or in places where the infrastructure hasn't been touched in decades.
For telephony this isn't a problem, the old twisted pair copper does the job for voice just fine as our ears aren't great at picking up on very high or very low harmonics, so a slightly iffy copper line doesn't make a difference.
Now try to feed superfast broadband over this and you start to have problems. Most superfast broadband uses high frequency to 'overlay' the digital signal on top of the same copper pair used for the voice calls and excuse of that we don't hear or know it's there.
And there is the problem. It had to use the existing copper, so where a line is poor, the infrastructure old, degrading or with few subscribers it's neglected and the costs involved in upgrading, very high.
Now after saying all of that, here's my situation. I live in the North-east of England, in a relatively built up area, served by a relatively modern telephone exchange, and in a house built in 2014. Yes that's right, it's a new house, in a new housing estate in an exchange area covered by an upgraded fttc exchange. But yet all houses in this new part of the estate can barely reach download speeds on ADSL of 3Mb. Why is this?
Well, I've written to everyone I can, I've spoken to BT wholesale, BT retail, the local council, the builders, local government, bduk and they all come back pointing the finger at each other and say tough luck, no plans or funding to sort this out.
So who says what? Bt wholesale state that the builders are responsible for 'selecting' the cabinet/infrastructure that wholesale then install. This seems odd to me, yes it's a pure cost thing as the builders I believe have to assist in payment to wholesale for the street cabinet, but surely a survey by wholesale would show around 200 homes to be served by this cabinet and think there was a market there? (how many homes does the average Street cabinet serve? I'm not sure)
So the builders to be honest, don't care. They'll sell the house regardless and its the homeowners problem on internet connectivity, they do the minimum required (plumb gas, electricity and copper pairs for phone) and the rest is up to the home owner.
Local council state that as the roads aren't adopted by the council yet (building is still going on in parts) that it is nothing to do with them and they wouldn't get involved and don't have on record any plans or queries on the street cabinet install or planning.
Bduk who are charged with helping areas achieve better high speed broadband also cannot help as they can see the problem, identify the cabinet and confirm the issue but then state it's not in their upgrade plans or budget as it wasn't in place in time for their forecasts so it's been missed.
And so, that appears to be it. No option but for each of the 200+ homes to go with slow adsl broadband and wait in the value hope when the roads are adopted by the council that we have somebody to complain to and see if they can assist.
I'm not hopeful.
Wednesday, 4 March 2015
Raspberry PI, Openelec and 1-wire temperature sensing
This particular problem is my home heating system. After being in the new house for a year we're still struggling to have the heating system actually heat the house to a comfortable amount when it needs it. The built-in heating system uses a temperature sensor (Looks like a DS18B20) in the hallway (beside front door and a radiator), and most other rooms have radiator thermostats. The problem is that the hallway never really matches the temperature in the rest of the house, bedrooms are often cold and other rooms roasting hot. Therefore I had a plan to have temperature sensors around the house and provide an 'overview' on/off to the heating system, in theory when rooms are still too cold, forcing the heating to stay on should let these rooms warm up and rooms that are already up to temperature will remain there because of the radiator thermostat. So to do this I need a way of sensing temperatures.
I already have Raspberry PI's in a few of the rooms, sat behind TV's to provide TV/media playback, so I looked into using the 1-wire temperature sensor DS18B20 on the PI. Now luckily there is a nice 1-wire kernel module available so it's pretty easy, modprobe the 1-wire module, modprobe the 1-wire temperature module and you can then pull sensor values using a script. Pretty easy, and yep testing this it works great.
The commands used were simply:
Which then allowed me to grab sensor values by prodding about in the '/sys/bus/w1/devices'modprobe w1-gpiomodprobe w1-therm
However, I use Openelec, not a standard Raspbian release. Now Openelec is great, it's a cut-down system that just works, it boots quickly and runs the hardware nicely. But because it is cut-down for speed a lot of modules, etc, have been removed, and in this case the 1-wire modules have been removed.
So I needed to get a solution to provide the modules in Openelec. To do this I needed to recompile it, which I didn't find the solution to very easily, so I've documented it here not just for myself but in case anyone else wants to try this. First you need the Openelec build environment, so clone their github repo:
git clone https://github.com/OpenELEC/OpenELEC.tv.git
PROJECT=RPi ARCH=arm make release
And leave it (This took my server about 5 hours to complete). That gets you the same release that you're probably running now from the downloaded Openelec/official release. Now to custom the kernel, so you do:PROJECT=RPi ARCH=arm ./scripts/unpack linuxWhich then allows you to edit the kernel parameters like normal, so then running:
cd build.OpenELEC-RPi.arm-devel/linux-3.19.0Followed by:
make menuconfigGets you to change kernel parameters. The changes I made were fairly simple, just:
CONFIG_W1=m CONFIG_W1_MASTER_DS2490=m CONFIG_W1_MASTER_DS2482=m CONFIG_W1_MASTER_DS1WM=m CONFIG_W1_MASTER_GPIO=m CONFIG_W1_SLAVE_THERM=mAdding those you can then recompile the kernel again like this:
make menuconfig
cp .config ../../projects/RPi/linux/linux.arm.confPROJECT=RPi ARCH=arm make release
And you're done. Copy the produced KERNEL and SYSTEM files (in the target folder) over to your PI in the /flash partition and boot up, should be all working at that point.
(Edited: 22/05/2015 thanks to Chris Van Marle pointing out some stupid errors of mine!)
Saturday, 6 December 2014
Xmas lights 2014
Well it's that time again when we all try to out do each other with flashy outdoor xmas lights. This being the first xmas in our new home I had to rethink how to put them up, and of course the wiring.
I'm still looking out for the best wire to use, I keep hoping to find thin green twin core wire, but alas I never find it to buy (appears all xmas light manufacturers know where to buy it!) so for now I'll stick to good old cat5 as it's not bad for the job, just the light grey colour isn't ideal as it's not noticeable.
The lights are my little xmas trees with lights in them, and a mini pir at their base. The idea being, feed power to the pir, take its output back to my Arduino and then control power to the lights on each tree.
The basic code is from my previous blog posts, and appears to work however I think somewhere between the rain last year, the house move and the pir being very cheap Chinese imports have decided to fair, or at least 3 out of 5 are now returning 2v on their signal line constantly instead of pulsing the 5v when motion is detected.
Tomorrow's task is to check them for short circuit, test their boards and try to fix them.
For now they're running my Arduino sequence.
Next jobs, use my multiplexer to provide more outputs from the Arduino and control even more mini trees and also maybe the other hanging lights strung around the windows and door
Monday, 16 June 2014
Problems with DHT11 Moisture sensor
Now as an update, the DHT11 has burnt out! I was starting to get fewer and fewer readings, getting a checksum and then timeout error from the arduino code I was using. Eventually I never got any returned values, so decided to take a look. After checking all the cable runs, etc, I then added the pull-up resistor that was recommended in some locations. But unfortunately still nothing. So I decided to prise open the little blue plastic package, and the problem was quite clear:
My best guess is a large amount of moisture gathered, condensed and the water droplet caused the short to take place and kill the sensor.
So I've now got a replacement DHT11 and trying to work out how to safeguard the next one against damage and how to better sense the moisture in the dryer without destroying the sensor too!
Saturday, 7 June 2014
Arduino Leonardo with ENC28J60
When connecting an Arduino Leonardo up to the ENC28J60 cheapo ethernet adapter things are a little more complicated than with the other Arduino's
I've used them before with the Uno and it's straight forward. PIN conections are:
// PIN Connections (Using Arduino UNO):
// VCC - 3.3V
// GND - GND
// SCK - Pin 13
// SO - Pin 12
// SI - Pin 11
// CS - Pin 8
However, when you get to the Leonardo things are a little different, as the Leondardo has the ICSP header which you need to use for this connection.
The ICSP connections are:
// MISO VDD (+5v)
// SCK MOSI
// RST GND
So the connections are:
Pin Connections (Using Arduino Leonardo):
// VCC - 3.3V
// GND - GND
// SCK - SCK
// SO - MISO
// SI - MOSI
// CS - Pin 10
Then to init the library pass it the pin 10 like this:
ether.begin(sizeof Ethernet::buffer, mymac,10)
And it works! Hopefully this will help you out if you're trying to do the same, otherwise it's just handy for my ageing memory ;-)
Friday, 6 June 2014
New Blog
I'll hopefully import all my older blogs into this soon, but bear with me.
Tuesday, 27 May 2014
DIY clamp-meter current flow indicator
This is a brief one. After my clothes dryer arduino sensor, I quickly realised I wanted to determine when my dryer was powered on. I didn't want to modify the dryer itself, so started to look as passively sensing when the dryer was turned on. To do this I looked at the clamp-meter method of determining current flow. (I use this for my electricity consumption for the entire house, but using a commercial product).
Checking various websites I found that this was something that could be made with some success, so I started to look for the relevant parts. I had spare copper wire, a spare caribena and set about it. The result was this:

As you can see I had to use a couple of different wires that I joined. But the basic principle remains. I could hook this around one of the two feeds to the dryer (Only live or neutral, round both cause a cancellation effect) and then read the millivolts induced by the crude 'transformer' I have made.
However, no luck. I re-wrapped this several times, tried different methods and different ways of connecting it up and no matter what I tried I never got any output on my multi-meter.
So here it is. What have I done wrong, or how could I improve my design to make this work?
Clothes Dryer arduino moisture alert
So, since moving house we've had to relocate our clothes dryer to the garage. This being slightly inconvenient I keep forgetting to check when it has finished drying clothes which ends up either leaving them ages and having to put the dryer back on to help get damp back out of the clothes, or having trips every 20 mins to the garage to check on it. Either way, I'm lazy and wanted technology to solve my problems.
Searching the web, I found a few people doing smart things with dryers, based around the premise that when clothes become dry, they stop emitting moisture (pretty obvious) and so if you can monitor the operation of the dryer and the moisture still present you can estimate when the clothes are dry and either shut off the machine or advise that it's time to take the clothes out. The general principle is to put a moisture sensor in the vent/output of the dryer to see how much moisture is being emitted. Less moisture, then clothes dryer. You can then build up a reasonable threshold for when the clothes are dry by observing the values and testing.
The plan is to use a spare Arduino Uno I have, plug its usb into the server already in the garage and take readings off this. When a pre-determined threshold is reached it can then alert me by some means (Not sure what yet, tweet, email, sms, bluetooth alert, whatever!). So onto the sensor. Checking around you can get moisture sensors pretty cheap, so I went for the DHT11 moisture/temperature 1-wire sensor (not the usual 1-wire protocol, but well documented and there is an Arduino library for it).
The sensor itself is around 5-10cm in size, so easily hidden and has 4 terminals along the base. These are for +vcc data (unused) and -vcc
These can be bought on ebay from UK sellers for under £2 which is a bargain I'd say! So I got one ordered to play around and test. So next step, link it up to the arduino and load the library, see what happens. Here it is connected up to my Arduino Uno for testing.

So far so good, running a simple sketch I could retrieve the moisture value (in %) and temperature (in oC) so I was getting together something I could use.
By soldering a long cable onto the sensor and wrapping it a little in electricians tape I then needed to tackle the dryer itself and identify how to make this work. My dryer is a Hotpoint self-ventilating dryer (avoids the external hose requirement) as it uses a condensing technique to convert the moisture-rich hot-air back into water (which then collects in a tub to empty).

So, I didn't want to modify the dryer in any way (I'd get into trouble off the mrs!) so I then looked at how to sense whats in the drum. The following image shows the layout with the door open:

Here you can see the main filter which fits into the dryer drum in the middle. This is all snug-fitting plastic, so no option here really, plus the sensor would end up getting clogged with dryer lint. However, following the internal plastic duct it comes out at the bottom, if you look at the middle+bottom you can see the cut-out that then feeds into the condenser fittings and into the water collector. This seemed like a good place, it was relatively lint-free and would take the hot air coming out. This seemed like a good spot, and it fits when closed using rubber+felt fittings, so I could fit the cable in quite easily.
I therefore put together the sensor onto a long wire and duct-taped it inside the duct (Yep, duct-tape actually being used in a duct).

After the initial test, the humidity rose rapidly with a full load of wet clothes and as the dryer kicked in it heated up. Initially this looked good, temperature going up and then I found a rapid drop in humidity, checking this did indicate that the clothes were reaching the optimum dryness, so it looks like it works. I waited longer to let the temperature level off and then the moisture dropped rapidly showing completion of cycle.
(The dryer isn't smart, it doesn't have a moisture sensor and will continue to run on its timer, so I think this may also let me help save energy by shutting it off early, but that will be a future change)
Unfortunately, I didn't keep a graph of this test, so I cannot show the simple correlation I did. However, something odd I noticed. Afterwards the graphing continued (I use the excellent Munin for graphing as it is so easy to write plugins) and I saw the humidity jump up and then remain at around 95%. This seemed odd, and I did a few things to see if it was a fault, but now I suspect that when the dryer is idle, and not heated its at quite a low temperature, and residual water in the dryers mechanics must stay there and keep moisture high. This also makes me worry about the dryer itself, as it cannot be healthy for it idle at high moisture, but again that is something to worry about another time.
The final design seems to work, and I'm going to continue doing some more test runs before setting up a threshold monitor and alerting part of this. The graph below is from the days after the test and shows the very high humidity. If you can think of a better explanation than mine I gave above, please feel free to add to comments and put me right!

As you can see the temperature remains around the same, but humidity sits up at 95% almost constantly (I'm going to assume the drops in humidity are graphing/serial errors and can be ignored. I should really write that into my code!)
I'll try and get another capture of when the dryer is being used to illustrate the correct graphing values that I captured.
You'll also noticed I added an "On" to the graph. The idea is that this will indicate when the dryer power is applied. This is proving tricky. I looked at and made my own caribena induction power monitor to hook around the mains cable and measure when power was flowing (Poor mans clamp meter), as my thinking is that this beast takes around 1kW of power, so its significant and I should be able to see even a tiny voltage showing on my home-made pickup coil. But alas I've failed miserable and I'll address that in another article. So for the moment I'm still working out how to monitor when the dryer power is applied (I still want to avoid intrusively digging into the dryers control panel/inners, especially as it would also probably involve an opto-isolator or something else wired into the 220v mains on the dryer which I like to avoid where possible)
Also, code for the arduino sketch is at github: github.com/andyb2000/dryer-humidity
-- Additional --
I've had a little longer now to look at the code/stats, and have determined that when the dryer isn't being used I should ignore any values, as the moisture values often sit at 95% which I assume is just from the dryer having residual moisture. I'm also building up a decent picture of when clothes are dry. Take a look at this graph from today when the dryer was used 3 times:
As you can see on the graph, when the dryer is on (the green ON isn't working correctly, so it's not showing all 3 switch on times) the moisture goes down as temperature goes up. And the final drying cycle you can see the moisture drops rapidly slowly followed by temperature going up. Therefore this looks like a good set of threshold values to monitor. I suspect having a condition such as:
if temperature > 45 && moisture < 50 then clothes are dry
-- Addendum--
Thanks to everyone visiting from hackaday.com
!
Monday, 12 May 2014
Fetchmail IMAP multiple folders and IDLE
This is more as a reminder for myself than anything the mass public may find useful, but here goes!
I use fetchmail to keep a remote server updated with email from the host system. So I use fetchmail for this, run it in daemon mode and have a config like this:
set daemon 300 set syslog poll myserver.co.uk protocol IMAP username [email protected] password mypassword is me@localhost no rewrite keep smtphost localhost
Pretty simple so far! So I then wanted to pull down the "Junk" folder from the remote server, as I realised mails were getting missed as they got stuck there and I never checked there wasn't something I wanted in there. So I checked and fetchmail has the option to provide multiple folders, in the man pages, web pages, etc, it specified you add 'folder' followed by a comma separated list of the folders you wish to poll. Great, so I tested it, added 'folder inbox' and it identified it was only fetching specific folder 'inbox' I then changed it to 'folder inbox, inbox.junk'
And it failed. It retrieved the first folder, and then stopped. Checking all over I couldn't work it out, man pages appeared correct, in the right section. I tried various different ways of represending it. With quotations, without, spaces, no spaces, multiple lines, etc. And none worked, it always stopped after the first one. I then found a very obsure statement in an online document:
"The ‘idle’ option is intended to be used with IMAP servers..... It also doesn’t work with multiple folders; only the first folder will ever be polled."
Ah, and as I use IDLE the code is obviously just hitting the first folder and stopping (Probably because the code for fetchmail isn't multi-threaded or very smart, it just hits the first thing it finds and sits waiting there on IDLE). So to fix it I set "no idle" in my config, and it works now! (OK, It's a trade-off/performance hit, but I'll have to live with that I guess)
Monday, 7 April 2014
Powerline Ethernet
Hello once again, sorry for not posting more regularly, as usual I have quite a few projects I should/could post, so will start with this one.
After moving house recently the new battle to 'tech-up' the house took place. I had various goals and needs to fulfil fairly quickly after moving. The first and primary being, how to get the TV systems working again. As many of you will know I use XBMC and TVHeadend on all TV sets, so each TV needs network access to be able to access the TV systems we use (DVB-T and DVB-S over ethernet). In the old house, I had managed to pipe network cables around from the garage pretty well, as I had a duct up into the loft-space from the garage and could then reach all of the rooms I needed.
However, our new house having a 3rd floor stopped all of this, no loft space that could access each bedroom, no easy link between garage and the rest of the house (The garage was not separate from the house, but there were no obvious ducts/cable runs, etc, between the two, only a power socket). My first thought was WIFI (I've not had much luck with HD over WIFI, but it might work!), so setup my wifi router in the garage (where the servers, TVHeadend live, etc) and started to see what the signal was like. Bad news, the house was built with good thermal insulation (read - tin foil) and so signal was next to non-existant even beside the wall where the WIFI router was setup, so looks like that was out. I then started to think how to cable at least one location and run everything from there, naturally I didn't really want this as did not want to start modifying a brand new house! So I turned to powerline ethernet. Not something I'd used before, but had played about with it at work as a trial, and it seemed pretty good.
I did some reasearch on Powerline Ethernet (Or Homeplug as its sometimes called) and found there are lots of different manufacturers licensed to it, but they all use the same standards pretty much so seem compatible with one another. I looked up the different speeds, and types. My theory being, the higher the stated throughput of the units, the higher chance of it working at HD video that I needed (I'd guestimated up to 30Mb). I found the TP-Link products and that they were on various deals at the moment.
I settled on the TP-Link PA411KIT AV500 which are the 500Mbps twin pack, for around £35 from argos, which is a bargain really for the potential these things had. A few initial observations though, just to be wary before you rush out to buy them!

They are quite stylish, in a white/grey casing and pretty small too (around the size of a regular wall-wart). They have one button on them for security/pairing, 3 LED's (power, powerlinethernet, ethernet) and an RJ45. Here was the first odd thing, its was a 10/100 network port. But the adapters are supposed to do 500Mbps, so why only a 10/100 not giga? After reading, the 500Mbps is as usual a bit misleading, they mean total, so 250Mbps is actual throughput (when in full duplex), but even so, we're still not at 10/100. But then there is the loss of the whole system, generally this can drop you down quite a bit.
My initial testing was very good. One in the garage plugged into my server/switch. One in the living room (Do not plug them into multi-ways, or adapters as it does affect them. I managed with a 2/3-way direct wall plugged splitter for power. If you have to, just make sure it doesn't have surge filters, etc, as those degrade the signal terribly). Doing that I was getting great results, TV streamed fine, as did HD content and all as fast as I needed. So I went out and bought another pair, plugged these into the TV's upstairs in two bedrooms. Again, these worked great, streaming TV was no issue, internet was fine, etc. So I went out again and bought another 2! (These things act almost like a small switched network, very neat). Now depending on what you read maximum is either 6 or 8, so I should be fine. Plugged them in and all did appear fine.
For a few days....
Then it started slowing down, I was having problems with HD content, it just stuttered after a few seconds (basically filling the xbmc buffer and emptying it again). I was also starting to get occasional stutters from SD content, network traffic was slow, etc. So really not good news. I was worried. Was the technology just not that good?
Troubleshooting involved unplugging all the homeplug adapters, so I just had one in the garage and one in the living room. No difference. I updated their firmware, and setup the network to be on my own named instance (By default you pair them and they use their own 'network name' and security), and ensured they were all set the same. Using the TP-Link windows utility it also showed the throughput available to each device, which worried me. They started to show 11Mbps to a few adapters. Depending on which one I plugged into it showed different ones with 11Mbps. So that made me think, what has changed, something has degraded the powerlines and caused this to happen.
I started to read up on the technology, to see what affects it. Seemingly everything! Just going between different phases or breakers in the fuse box can degrade it (Yep, mine was on different breakers). Different floors of the house as they tend to each have their own ring-main (Yep, mine on different floors). Long distances (Possible, I'm not sure what the length of cables, etc, around the house were, so unsure if sockets were say at the start of the ring or the end). Other interference (Yep, I use X10 and setup an X10 house alarm system, which I know uses powerline technology for their control signals).
So I was starting to worry, had these only worked when we moved in, since nothing else in the house was connected at that time. Next stop, I read that many devices cause interference. Biggest culprit, those cheap mobile phone chargers, computer PSUs, Laptop PSUs, basically anything that was a switch-mode power supply.
My next step of testing was to start switching things off and testing. So I began again with just the two TP-Link adapters plugged in, living room and garage. Loaded up an HD video and sat watching it jump and stutter. I then went round and unplugged all of the mobile phone chargers (wow, we have loads of them, at least 2-3 per person in our house!). Still no different, video stuttering. I then unplugged one laptop, no difference. Then my laptop, and it stopped. The HD video suddenly jumped back to life and ran. I let it run for a good 10 minutes and without stutter. Switched my laptop charger back on, almost the second I did, stutters came back. Aha! This was it. Plugged all the other stuff back in (except my laptop) and it was fine. So looks like that was the problem. Thinking back, this was a replacement PSU for my laptop, and was a cheapo copy, not manufacturer, so that would explain it! Cheap and nasty electronics in there caused it. So now I wanted to fix it, so I could use my laptop. I grabbed a surge protected multiway, and tried with that on a different wall socket, and hey presto that worked! So I still have my laptop, and my powerline ethernet works great!
I hope this maybe helps another individual who wants to use this and has interference problems, etc.
I have to say, I'm a big fan of these units, they are impressive units and do a very good job. At some point I'll run some speed tests and see what I can actually get out of them now, but for now they're streaming my HD tv great.
Thursday, 12 December 2013
Arduino controlled outdoor motion sensing xmas lights
I finally managed to get on with my next Arduino project, and as its Christmas, why not do something with Christmas lights, an arduino, some PIR sensors and relay board. My idea was to use some little xmas trees I bought a few years earlier and do something a little smarter with them. Out of the box they are a chain of 7 1-foot high trees with various lightbulbs on them all powered from an AC power supply (low voltage). Nothing amazing, they didn't even flash originally, so the plan was to do this:
* Disconnect each tree, so that they could be controlled independantly
* Attach a PIR (Passive Infra-Red [motion sensor]) to each tree
* When the tree senses movement, light it up
* Run in a sequence to flash all the trees
So, first job, was to cut the tree cables down so that I had a single common wire running to each, I could then wire a cable to each one to run as the 'trigger' cable. The small trees look like this:
So I cut each of the cables and remade them with new cable runs, tested them and I could light up each tree individually.
Next job was to start with the PIR sensors. These are ones I picked up from eBay and were only around 1-2 uk pounds each, so pretty cheap really.
As you can see there are 3 pins for connection, +ve (5 volts), ground and trigger. When powered and operating they will send high the trigger to +ve to indicate the unit has sensed motion. The sensors also had two pot's on them to control the TX time and the distance control. I didn't get a lot of difference playing with either to be honest but that didn't matter, the defaults seemed to do the trick. I powered them up as a test and found that movement in front of them triggered the output for around a second then when motion stopped it removed the trigger. All looked good, but I had to waterproof them. First attempt and the cheap solution was to wrap them in freezer bags, not sure what this did to the PIR sensitivity I covered on and re-tested, no real difference to the triggering so this was ideal. I wrapped each one in the bags and tied them shut with freezer ties and wound the bag around so they were pretty snug in there.
There you can see the bagged up PIR, and also it nestling inside the tree, I opted to put them low down and try to bury them inside the tree a little, this hid them as much as I could from view and let me put the other tree branches up over them so the general view wasn't the rather unsightly bag and PIR sensor itself.
Next up, to control them I needed a relay board. This is because I was going to be controlling AC and an unknown current (Yes, I could have tested, but to be honest I knew it would be within the ratings of the relays, but way too high for an Arduino output, and I wanted isolation). So again I turned to eBay and found relay boards that you could get for around 5 ukp, and these were optically isolated too, so even better keeping the Arduino isolated and safe so it wasn't going to stress the outputs. Below is an image of the relay board as I was starting to wire it up.
The pins along the left of the board were labelled as ground, 1-8 and +ve. The relays are triggered by 0/LOW from the Arduino, initially I wired the relays up to be powered by the Arduino +5v rails and used the digital outputs as a test. This all appeared to work correctly, setting the digital pins to OUTPUT and when driven LOW the relay clicked and engaged. The relays are single-pole changeover so the outputs can be triggered on either throw of the relay. I wanted to use mine when the relay was engaged/energised the output to the tree would be on. The only thing that started to appear was as I did some test Arduino sketches that sometimes everything would hang and just stop dead, the arduino wouldn't continue its loop and the relays would be left on whatever sequence they were in. After some playing around I made an assumption. The 5v draw from the relays was proving too much, or too electrically noisy to be driven from the Arduino itself, so I separated it. I got another 5v supply, connected its ground to the GROUND on the relay board, and the +5v to the +ve on the relay board. I had to also tie the +ve to the Arduino 5v pin to keep it common but that worked great, the Arduino now only gave signals to the relay board and the other 5v supply powered the relay board itself.
Next was to start wiring the Arduino Uno up. I have the digital pins 0-13 available, so since I need 7 outputs I chose pins 6-12. Setting them in the code to OUTPUT pins and setting them to HIGH initally (Remember the relay board uses LOW to trigger!)
As you can see, I used a small breadboard to use as breakouts for a few of the connections, this was just to make the links to the tree lights themselves and common 5v rails easier to wire up.
For input I used the 5 analogue input ports but used them in a digital way, as all I was detecting was +ve or not that was simple. Referring to them in the code as pins 14-18 as they were being used as digital input pins.
Also you'll probably notice a tri-colour LED on the breadboard, another initial idea (since I already had 5 of them) was to put these on top of each tree and let it cycle through colours, in the end I gave up on that idea as I needed more output pins, and more importantly a lot more wires and the wire I was using already looked a little untidy/unsightly, so I gave up on that idea.
The code for the Arduino too quite a few attempts to get it right, mainly because I needed a few different sequences and logic to make it work right. The completed code is shown below, but it's not very neat, any modifications to it would be welcome! But the general program works as expected, so it will sit in a sequence flashing each tree lights in a sequence until one of the PIRs sense movement. When they do, they will turn off all trees except the ones sensing movement, so you can 'walk' up past the trees and they will light sequencially, you can also jump to particular trees and they will light in any order too!
The biggest bug/drawback that I've found is the PIR sensing component. since the PIRs aren't very precise sometimes they detect movement when none happens (I'm guessing this is because they're outside and picking up all sorts of stray IR activity or heat signatures), but also their field of vision is difficult to control, so knowing where they will detect movement is a bit of trial and error. But they generally work!
Merry Christmas everyone!
Arduino code below:
(Moved code to pastebin) : pastebin.com/FJ2qP74m
Problems: 20-12-2013
I hit a few problems after setting it all up and letting it run a while. The biggest problem I'm having is the Arduino locking up and just stopping where it is in the code. The result are the lights getting stuck at whatever point they were at. I've tried to work around this in various ways. Firstly I thought it was the PSU I was using for the Arduino as it was a USB phone charger and I was feeding the Arduino over the USB port. I've swapped this to use a 9v PSU into the barrel jack so its got a 'proper' power supply and this made no immediate difference. I suspect this is due to EMI (Electro-magnetic-interference) from the relays and switching the low-voltage AC for the lights, so trying to re-route cables and move the relays away from the Arduino has helped but not enough. Finally I've put in a watchdog timer/code into my software so that at least if the Arduino locks up, it'll reboot itself and reset the sequence. I've not managed to figure this out much further other than it being an utter annoyance as its when I want to show the system off to somebody! I still suspect its due to EMI and need to try and protect things a little better, perhaps I've not isolated enough of the relay board from the Arduino output pins, but open to suggestions please folks!
Tuesday, 27 August 2013
Regional DAB switch-off and digital radio in the UK
"@RadioToday Digital Radio News: Regional DAB turned off in West Midlands"
Well, is this a good thing or a bad thing? I was puzzling over this whole setup for quite a while, as I'm very disillusioned already over the state of DAB and digital radio in the UK. Firstly I suppose a little bit of background to it. We all know that in certain areas the use of FM frequencies is tight, there are far too many for the old analogue spectrum to handle and since each station has to keep a 'gap' between the other (to avoid interference overlap, etc) then you start to run out of frequencies available for everyone to use. As an example, take a drive around London, and just seek through the radio frequencies, you'll find the radio stops every .3 or .4 steps and finds a new station. That's the problem. So in very lucrative areas there are no further frequencies available. The big radio firms in the UK are also wanting to expand their empire and go national, as the BBC has been able to do easily for many years, and so the advent of DAB/digital radio offered such an option.
Regional multiplexes of DAB transmitters could be linked and provide the option for a radio station to exist nationally quite easily, and with the ability to fit many stations within a single mux it also allowed a much larger number of channels to become available.
It sounded like the perfect answer to the UK radio industry. Except that the operation of those DAB transmitters/mux's would be auctioned off to the highest bidder, which therefore meant that only the biggest of big boys in the radio industry could get to operate the MUX's. So that did happen, and the big groups such as MXR (A combination of Chrysalis, GMG, Capital and Choice. There were a large number of commercial big boys all going for DAB and getting the infrastructure in and operational.
A good explanation of DAB and what the regional turn-off of DAB means is written here " @RadioToday: Digital Radio News: Regional DAB turned off in West Midlands http://radiotoday.co/14X9Lz5 "
However I'm still not convinced the current model of DAB and digital radio in the UK is a good thing.
I have to say, I have a vested interest, I'm with the 'little guys'. The smaller independant radio companies (Very very few) and the even more minority group, community radio. To be honest, my vested interest is with the community stations I work with, and on many occasions I'm asked "When can we go to digital/DAB". And unfortunately my answer is always the same. Only when we can make a huge profit and do some serious cap-ex.
I have questioned this time and time again, and the answer is always the same. You speak to the regulator (Ofcom) and advise on the DAB/Digital licensing, which in itself isn't a huge expense (And isn't huge for Community stations on FM/AM either). However you then have to arrange to actually transmit on a digital MUX (Multiplex). And that you do by contacting the local regional mux operator (Generally Arquiva, Capital, Chrysalis, etc), and that is where the problem comes in. They're a commercial company, working to a profit and making profit. So you get quoted between 4 and 5 figure sums and then you have to go into rental charges and more. Terrible when its for a community station that barely can pay for the building it runs from, never mind paying staff, expenses, kit, etc. To give it contrast, if you setup a community station to broadcast on FM you can use your own transmitter, your own transmitter site and equipment, making yourself totally self-contained and purchasing the transmission kit yourself. It could be as low as a 3 figure sum if you use the basic kit to get up and running. That plus the relevant fees to regulatory bodies, etc, and you're running in a few 1,000's which is generally within reach.
So my view on DAB and digital radio in the UK is still a very pessimistic one. To get full scale take-up of it by the public, it will need you to be able to get EVERYTHING you do now on analogue radio. At the moment this just isn't possible, and doesn't even look remotely feasible in the medium term. So something has to happen.
I'd love to hear what you think about this, whether you're in the radio industry, part of the licensing or just generally a radio listener, please leave comments and thoughts!
Sunday, 7 July 2013
Community Radio
Well,
It's about time I wrote this one up as it's been in use for a good few months now and I've not mentioned it. As some of you may be aware I like to get involved with Community Radio Stations in the UK. These not-for-profit stations are run purely by volunteers who have a passion in radio, broadcasting or just want to be involved in something a little different. I've been interested in radio since I was very young and always wanted to be involved somehow, so around 6 years ago I started to get involved with local community radio in the area. I've never looked back, helping a few more and more community stations get up and running, or just offering a bit of assistance now and again. My proudest achievement was being a part of setting up and starting a community station in Hartlepool, the station is still running, going strong and have had their license extended beyond the initial 5-year period so I'm thrilled I've been part of something as exciting as that.
So onto another challenge, I was approached to help with a Community station in Redcar, and as usual I couldn't refuse, so started to help with the planning, FM application, documentation and everything that goes with it. Needless to say I get into a lot of trouble for using up so much of my free time on projects like this but I absolutely love doing it! And so, we're now up and running online and just hoping and waiting to hear if Ofcom will grant us an FM license. This would be really exciting if it is granted as its then a mad rush to get a studio fitted out, FM transmitter, audio processing, etc, all in place. It feels like its taken forever to get to this stage, but in reality the station at Redcar has come together in a very short time period. Just around about a year from the original planning and ideas to having the station running 24x7 online streaming and having presenters on-air live from 10am to around 6pm each weekday is so rewarding. Fingers crossed the FM license comes through soon and it can go full-time on FM!
I should also talk a little about what I'm interested in with radio. It's not primarily as a presenter, as unfortunately I'm not the worlds best radio presenter, I mean, don't get my wrong I believe I can do a reasonably job of it, done quite a few interviews over the years and played music, chatted a bit and quite happy in front of the microphone, but alas, I'm not the most thrilling in the world and have the voice to match so this will never be my strong point! So where I aim for is the technical side of radio. The playout systems, broadcast chain (thats the audio processing, FM transmitter, RDS encoder, etc) is where my interest lies firmly. I've been lucky enough to be a part of two start-up stations now, both with their own slightly different needs and so the playout system and equipment behind the scenes needs to be a little different too. At the first station I'm pleased to say we could do things in quite a structured manner. There are two studios, one main playout and a second for pre-recording and voice work. Both use the central database of the playout machine in the primary studio. Audio output from the broadcast desk is then fed over low-oxygen high-grade audio cables up to the 'rack room' where it goes through two levels of audio processing before it hits the FM transmitter, via the RDS encoder and out at 25watts to the end-fed dipole antenna. The coverage is pretty good, even from a congested central town location with lots of noise polluters nearby (noise in terms of r/f interference such as mobile phone transmitters, taxi radios, etc).
This is such a brief insight into what I've put in and done so far, but hopefully I'll get more time in the coming weeks to talk a bit more in depth about each of the elements of broadcast chain and producing a 'decent' output for listeners. If you're interested in community radio too, I'd love to hear from you so please get in touch or pop by on twitter: twitter.com/andyb2000/
Friday, 21 June 2013
Power ON PC from usb/remotely using Arduino
Right folks, It's been a while so thought I should start to write up a few things I've been working on. Unfortunately I don't get the free time I used to because of other projects now (See another post shortly, hopefully!) but this one has been a constant pain since I moved the household TV over to XBMC+TVHEADEND.
Turning the home TV system on is done from an all-in-one remote, the Harmony from Logitech. It has a smart switch-on function that sends the various power and channel change events to the devices (TV, Sound System, channel switcher) but one thing it can't do is power the XBMC PC on. This is a Dell PC with a usb-ir receiver that is powered off most of the time unless tv watching is going on. It cannot go into standby as standby and USB infra-red devices are still problematic under linux and results in no remote control ability after wake-up.
So how to turn it on using the IR remote then? The USB ports are powered off when the system is off (All it leaves powered on is the ethernet adapter for wake-on-lan functionality). So I'm thinking that to power the system on I need to use an external device and 'press' the power button/trigger the ATX power supply to wake up. An Arduino seems the obvious choice for this, mainly because they are good little boards, low powered and can do simple tasks with input+output pins and also because I have a couple of them lying around at the moment as I've not done any projects with them for a while.
So to get the arduino to turn the PC on, I need to trace the power switch inside the PC and the control lines it uses on the ATX power supply connector. So as some of you may know, ATX is a standard an so colours and pin numbers are standard. Pick out the right ones, pull it to ground and it should power the ATX supply on. WRONG when it comes to DELL machines. They decided a while back that using a standard like ATX was silly and so invented their own ATX standard.... Hmm, so this meant the pins and wires didn't translate, and so trying to probe them or work them out might cause a blown PSU. Looking at this particular PSU it is one of Dell's finest custom units and I didn't want to replace it in a hurry so decided this option was out. Next option was to trigger the power button that we press on the front. Again in theory this is just closing a contact so should be straight forward. Well it would be if you could get to it! The power button is sat on a PCB installed at the front of the chassis. From this PCB there is a ribbon cable with around 20 connections on it! This handles the Dell diagnostic LEDs on the front of the machine also, along with some USB, firewire and other functions. So if I removed the board could probably trace them and figure it but this seemed a lot of hassle too, and again if I broke it, it was game over.
I needed a solution that wasn't doing ANYTHING custom to the Dell PC. So my only option really was to look at the Wake On Lan option. This could power the machine up 'remotely' and without modifying it.
To actually trigger the Wake On LAN, I needed to receive IR remote presses. Since the all-in-one remote handles power on for various devices I could just sniff for any of these power on signals and use them to trigger my power on function. Hooking the Arduino up to the IR module and then sniffing codes was straight forward, there are various nice IR libraries to do this. I have the 'Keyes IR Receiver module' which is the one on a small PCB with a metal can-like surrounding. Hook up the pins to the arduino (central pin is + , S is marked and the remainder is -) to one of the digital PWM pins and with the library you can start to decode IR.
Now IR itself is a bit complicated. Because you have lots of different 'standards' and methods of doing things. I finally settled on a very simple bit of code that included the IR library, and then sent the HEX code to the serial port. This worked fine and I found a unique-enough code used when power-on was sent from the IR remote. This let the Arduino do its job. How the hard part, how to get this into a Wake On LAN signal. Unfortunately I don't have an ethernet shield otherwise this would have been simple! So my next option was to use the serial/usb cable to send this HEX code to another device that could send the WOL signal. My trusty FTTC router looked ideal, its a Vigor that has an entire busybox system on it, so ssh, telnet, and most of the normal shell commands there ready, plus two USB ports. Plugging the arduino in, I happily could see the /dev/ttyACM0 appear and dmesg confirmed that it recognised the ftdi interface.
So I could now communicate with the arduino, if I cat /dev/ttyACM0 I could see codes working, so all looked good. I then got back to my dreaded problem from some time ago with the outside temperature sensors. The biggest issue with the setup, everytime you opened the serial port, the Arduino rebooted (for its code upload routine), and also it generally didn't hold the serial port open well enough to actually receive data consistently. This was and still is my biggest hurdle that I've not overcome yet. At the moment I'm trying with a bash script like this:
#!/bin/sh while [ /bin/true ]; do grab=$(grep -m 1 valid /dev/ttyACM0) wget -O - http://192.168.1.1/wake_xbmc2.php >/dev/null 2>&1 sleep 5 done
However, this suffers from several problems. (You'll also note, I'm watching for the word valid to appear, I amended my Arduino code to only put out valid when the relevant IR code was received, this cut down noise on the serial port to try and help things along. Firstly the serial port doesn't always seem to want to send data. So sometimes this will just sit there ignoring any IR input. I'm guessing the Arduino is seeing the IR (The LEDs on the arduino show this) but the serial port just isn't seeing the reply.
Secondly if the serial port is disrupted, the wake on lan gets triggered regardless. This is just a bash scripting tweak but I've not got round to fixing this yet.
So I'm still stuck with reading from the Arduino serial port reliably in this manner, and so I'm hoping for inspiration! Arduino people, feel free to comment and assist!













