I've bought a pair of 433MHz RF Tx Rx modules.

I've been struggling to find any information on getting them working on Android Things (Raspberry Pi).

My goal is to set up AT to detect the RF transmission upon a doorbell press and then notify my phone if i'm not in. I'm an Android dev so the software side doesn't phase me, but I'm new to IoT so any and all advice is more than welcome.

  • This is a more fitting job for an MCU than a multitasking system. There are Arduino libraries for detecting codes in the presence of noise that work with that receiver which may be portable to an esp8266 which has WiFi for sending a cloud aided message to your phone. Or use a ble mcu. Aug 31 '18 at 16:58
  • If you must use Android Things you'll probably want an MCU to monitor the radio"s noisy output in real-time anyway, and tell Android Things via a serial port, or clear non-noisy gpio level. Aug 31 '18 at 17:06
  • Do not forget, also, that you need an MCU or sequencer circuit in the transmitter to modulate a unique code onto the transmitter's data pin, which the receiver will look for. You cannot simply use signal level in a radio channel, as variations in the strength of the intended signal vs. noise make this unreliable. Instead you must transmit a time domain pattern and search for this with something downstream of sample timing more consistent than a multi-tasking operating system can provide - ie, you need either hardware or "bare metal"/RTOS software sampling the RF receiver's output. Sep 1 '18 at 2:35
  • To understand a practical solution to your problem which can actually work with the radios you mentioned, start here: airspayce.com/mikem/arduino/RadioHead/classRH__ASK.html#details Sep 1 '18 at 2:44

Given that Linux devices do process scheduling, the application in Android Things is not going to be able to reliably check the signal coming from a 433 MHz radio directly. It just isn't able to check at 433 million times each second.

But you can probably at some radio components to your receiver before it goes into your Android Things board, like an envelope detector, so that you can demodulate it to an extent and get a better digital input.

  • 2
    This is a poor answer as it ignores that the question already specifies a radio receiver. However scheduling will still be an issue. You have not really specified a practical solution. Aug 31 '18 at 16:56
  • If the received radio signal is fed into an envelope detector before going into the Android Things device, it would be better fit for a digital input, as a strong radio signal would be registered as logic HIGH, and most noise should not pass-through the MOSFETs on the device and would be interpreted as logic LOW. I understand my answer is not very clear, but it's much easier to read a demodulated signal a times per second. Aug 31 '18 at 19:36
  • If you want to use Linux, you'd need to replace the crude radios mentioned in the question with something that has hardware packet decoding and validation, for example the nRF24 series. Or interpose an MCU between the radio and the Linux system, to handle the real time requirements of decoding. Or use an RTL-SDR dongle to hardware sample the baseband signal at a consistent rate and analyze it in non-realtime software under Linux... though that's a rather power hungry, heat generating solution. Sep 1 '18 at 2:21
  • I suppose the question is what they are looking for. If they want to actually read the signal they'd need a hardware decoder. But if they just want a simple is on/is off an envelope detector should work. Sep 1 '18 at 18:06
  • 1
    No, it won't work. An RF system, especially with a weak license free transmitter, must deal with undesired signals stronger than the desired ones. This requires pattern recognition as all real systems have. Sep 1 '18 at 18:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.