As a child I was always fascinated by 'wireless' things, and
this has stayed with me all of my life. Any excuse to make something
wireless & I will grab it!
Recently my attention has been focused on WiFi but I've been
distracted by that old 433MHz ISM band too. I've dabbled with all
manner of 433 devices, possibly my favourite was a device to tell me
if my garage door was open.
Let me explain; I can't see the door from anywhere in my house &
it was often left open at night. My daughter might have been out on
her bike with her pals, she'd park her bike in the garage & come
in for tea. She wasn't tall enough to close the door & I
wouldn't notice until the morning.
So I built a little device to tell me if the door was open, you are
thinking 'reed switch' I'm sure, but it actually used an
accelerometer and a 433MHz transmitter. The receiver was a
breadboard with a piezo etc. It was a bit of a mess and was never
really used in anger.
More recently I found a commercial opportunity which does something
similar. I needed a 433MHz receiver in a neat & portable box.
This was a very low budget project so fabricating a
receiver (or more significantly - a box!) wasn't an option.
As I'd just completed a small 'doorbell' project I had a
'light bulb' moment (is that mixing metaphors?) and figured that a
cheap RF doorbell would be ideal as a receiver.
So...
I bought the cheapest RF doorbell I could find on Ebay:
These can be bought for less than £2 including delivery. Don't ask
me how this is possible! I dug out some old code & well tested
libraries but no joy! I hooked up my storage scope to have a closer
look. Still no joy. Feeling an idiot I eventually realised that the
damn thing wasn't a 433MHz device at all!!
It's quite unusual for sellers to actually tell you the
frequency of operation of their devices, and just as unusual for it
to be marked on the product which is rather tedious. I suspect this
is a 315MHz device designed for another market.
Undaunted, I found another bell which I was confident as
being 433MHz:
These are somewhat more expensive but very nicely thought out and
put together. They even sound quite good too! My understanding is
that 1byone is a Canadian company (I could be wrong). The bells are
Chinese in origin, produced by Quhwa.
I even found some Arduino code which purported to ring these bells.
I've not linked this as it didn't work properly, but it did fire my
imagination.
I tried these with the Arduino RCSwitch library without any luck.
Out with my storage scope again and I finally made some progress!
Anyone else who tries this shouldn't be put off. Connecting one of
the usual cheap 433MHz ASK receivers to a scope seems to produce
nothing but noise. Presumably this is because of an AGC on the
receiver. When a decent signal is present you should get a decent
scope trace, although you will struggle without a storage scope.
Deciphering the trace and turning it into numbers suitable for
transmitting is tedious. I was absolutely boggle eyed by the end of
this but I succeeded in making the things ring.
My only real reservation was availabilty of these devices. I paid
£5-£6 which is reasonable, but I suspect they must be 'end of line'
as they normally sell for much more. So I put these to one
side.
Actually, I put them to use as doorbells in my home! They are great!
The next candidate was another cheap chinese bell:
Price wise this fell between my two previous purchases. It's cheap
and cheerful, sounds tinny and I wouldn't want it as an actual doorbell.
I checked this out with RCSwitch & BINGO! The code was
loud and clear, something like: 90542357, 32 bit, protocol 1.
Excitedly, I threw together a program using RCSwitch & bingo
again? Not quite, the bell rang, but only once. My program was in a
loop designed to ring it every few seconds but it only rang once
& then stopped working completely.
After a great deal of button pushing and code compiling it dawned on
me (I'm not asking if this was a 'Eureka' or a 'headslap' moment - I
know!).
The thing uses a rolling code! Thank goodness for RCSwitch,
I would
never have achieved this without going blind using my
scope! I deduced that the bell push was sending any one of the
following codes:
The sharp eyed among you will notice that each code begins '90542'
but I'm not sure that's significant here. I quickly determined that
there is no 'sequence' required, simply that once a code has been
sent, the next code must be different.
Presumably this is some kind of security feature. If so, it isn't
very clever. Not to worry, I was now able to ring the bell to my
heart's content simply by alternating between two different codes.
Something which perturbed me a little was the range of these
devices. NOT the usual lack of range! With a half decent
antenna on my transmitter I could easily achieve 100 metres range (I
gave up walking when I got this far!). My application potentially
requires two or three units to operate independently in fairly close
proximity (around 20 metres apart). The range is severely reduced
without an antenna on the transmitter so this provides a very crude
solution to the problem of interference.
I couldn't help thinking (unfairly as it turns out) that this was
bad design. I have several neighbours within range and if we all had
identical doorbells it would be chaos!
I didn't think much more about this until I received another
'identical' doorbell. What a surprise. It didn't work! By now I'd
become quite adept at analysing these things and I figured out that
this one was using different codes. RCSwitch told me it would
respond to the following:
I had mixed feelings about this. Clearly the designers had thought
about the interference problem, so I could use a decent transmitter
antenna with impunity rather than relying on poor range to avoid
interference. But is every bell uniquely coded? If that's the case
it makes my life harder - I need to program each of my transmitters
with the correct code. While that's not a show stopper it's
certainly tedious.
It is possible that each bell is uniquely coded. This is how 'self
learning' remote switches usually work. I've no way of knowing
unless/until I have more devices to play with! Maybe they only make
a handful of 'different' devices and hope that neighbours don't have
the same ones? Who knows? There is no Wiki for these doorbells...
While I pondered over this I dismantled one of the receivers. That's
just me. I take things apart. This is what it looks like inside:
Not much to see here. Let's take a look at the other side of the
PCB:
I'm guessing but the chip at top left is probably doing the RF
stuff. It's surrounded by inductors & capacitors, it's connected
to a PCB antenna & a crystal. The chip in the middle is a
microcontoller? The one on the right is a power amplifier? It's
connected to the speaker. Maybe you can see a very small push button
at the top of the PCB? I guessed that this might be
something to do with learning/pairing. So I pressed it & pressed
the button on the 'wrong' bell push. Guess what! Now the 'wrong'
button can ring this bell.
It's fairly obvious what this is for. Now I can have a bell push at
my back door and another at the front, both ringing the same bell. I
can have two bells rung from the same button. The opportunities are
endless...
I'm not at all sure that this helps me with my immediate task
unfortunately. So I can set the code but I need to dismantle the
thing to do that! It's easier to change the transmitter program to
match!
So I have something to add to my CV: competent with Chinese
doorbells!!
I'm not complaining! In fact I'm in awe. It's been quite a challenge
to figure this out & I'm amazed by how complex these things are.
So - if you are looking for a low cost, and clever remote
annunciator for a project, spare a thought for the humble doorbell!
Choose the right one(!) and it's fairly easy to integrate with
something like OpenMQTTGateway.
With a little luck I've made it easier for you to do this.