433 Squadron

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.


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.

Ian Sexton 2018