Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Hardware
  3. Microwave Radar Module as PIR replacement.

Microwave Radar Module as PIR replacement.

Scheduled Pinned Locked Moved Hardware
42 Posts 21 Posters 42.3k Views 26 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • cimba007C Offline
    cimba007C Offline
    cimba007
    wrote on last edited by cimba007
    #30

    All things from my previous post regarding the wiring are still needed:

    Here is a stripped down example on how to use the FC1816 Microwave Sensor. You need the following library:

    https://github.com/RobTillaart/Arduino/tree/master/libraries/Statistic

    #include "Statistic.h"
    
    #define MICRO_SENSOR_ANALOG_PIN A1
    
    void setup()
    {
      
      Serial.begin(57600);
      Serial.print("begin");
      
      // Microwave
      pinMode(5,OUTPUT);        // VCC BISS0001
      digitalWrite(5,HIGH);
      
      pinMode(6,OUTPUT);        // Enabled
      digitalWrite(6,LOW);      // DISABLE PLEASE!
      
      pinMode(7,OUTPUT);        // GND
      digitalWrite(7,LOW);
    
      pinMode(A1,INPUT);        // PIR 2nd amplification stage
    
      pinMode(A0,OUTPUT);       // UPD microwave generator
      digitalWrite(A0,HIGH);
    
    }
    
    void loop()      
    {     
      // Report Microwave
      static Statistic mw_s;
      static uint16_t stdev_sum = 0;
      //mw_s.clear();
    
      //digitalWrite(8,HIGH);
      //delay(100);
      analogRead(MICRO_SENSOR_ANALOG_PIN);
      uint16_t reading;
      for(int i = 0; i < 200; i++)
      {
        reading = analogRead(MICRO_SENSOR_ANALOG_PIN);
        mw_s.add(reading);
        //Serial.println(reading);
        //Serial.flush();
        //delay(50);
        //LowPower.powerDown(SLEEP_60MS, ADC_ON, BOD_OFF);  
        //delay(1);
      }
      Serial.print(mw_s.minimum());   Serial.print(",");
      Serial.print(mw_s.average());   Serial.print(",");
      Serial.print(mw_s.maximum());   Serial.print(",");
      Serial.print(mw_s.pop_stdev()); Serial.print(",");
      stdev_sum += mw_s.pop_stdev();
      Serial.print(stdev_sum); //Serial.print(",");
      Serial.println();
      stdev_sum *= 0.9;
      mw_s.clear();
    }
    

    I just had the idea to sum up the std-dev and decrease it by 10% every round. Thus the code is less prone to peaks.

    0_1471429474464_upload-9c26c9f3-6ccd-4aaf-9bcc-797ad4c03be4

    stdev_sum is the lower dark blue line which can now be much easier compared to a threshold.

    Some measurement with my µCurrent-Gold:

    Unmodified code as above, power LED removed from ProMini @ 8Mhz internal osci with LDO desoldered
    4,8mA

    I tried to put the FC1816 into sleep by disable the power to the Microwave generator but this doesn't work.
    I modified the fuses for 8Mhz with 0ms wakeup delay for stabelizing the oscillator. No risk no phun ;-)

    The most practical solution I got to replace a PIR (still nothing as close as a PIR ;-ö)

    1530µA

    with this code:

    Note that the radar generator just can't be disable as it needs 10-15seconds to stabelize after power up

    #include <LowPower.h>
    
    #include "Statistic.h"
    
    #define MICRO_SENSOR_ANALOG_PIN A1
    
    void setup()
    {
      
      Serial.begin(57600);
      Serial.print("begin");
      
      // Microwave
      pinMode(5,OUTPUT);        // VCC BISS0001
      digitalWrite(5,HIGH);
      
      pinMode(6,OUTPUT);        // Enabled
      digitalWrite(6,LOW);      // DISABLE PLEASE!
      
      pinMode(7,OUTPUT);        // GND
      digitalWrite(7,LOW);
    
      pinMode(A1,INPUT);        // PIR 2nd amplification stage
    
      pinMode(A0,OUTPUT);       // UPD microwave generator
      digitalWrite(A0,HIGH);
    
    }
    
    void loop()      
    {     
      // Report Microwave
      static Statistic mw_s;
      static uint16_t stdev_sum = 0;
      //mw_s.clear();
    
      
      //delay(100);
      analogRead(MICRO_SENSOR_ANALOG_PIN);
      uint16_t reading;
      for(int i = 0; i < 10; i++)
      {
        LowPower.powerDown(SLEEP_15Ms, ADC_ON, BOD_OFF);  
        reading = analogRead(MICRO_SENSOR_ANALOG_PIN);
        mw_s.add(reading);
        //Serial.println(reading);
        //Serial.flush();
        //delay(50);
        LowPower.powerDown(SLEEP_15Ms, ADC_ON, BOD_OFF);  
        //delay(1);
      }
      Serial.print(mw_s.minimum());   Serial.print(",");
      Serial.print(mw_s.average());   Serial.print(",");
      Serial.print(mw_s.maximum());   Serial.print(",");
      Serial.print(mw_s.pop_stdev()); Serial.print(",");
      stdev_sum += mw_s.pop_stdev();
      Serial.print(stdev_sum); //Serial.print(",");
      Serial.println();
      Serial.flush();
      stdev_sum *= 0.9;
      mw_s.clear();
      
    }
    
    YveauxY 1 Reply Last reply
    3
    • cimba007C cimba007

      All things from my previous post regarding the wiring are still needed:

      Here is a stripped down example on how to use the FC1816 Microwave Sensor. You need the following library:

      https://github.com/RobTillaart/Arduino/tree/master/libraries/Statistic

      #include "Statistic.h"
      
      #define MICRO_SENSOR_ANALOG_PIN A1
      
      void setup()
      {
        
        Serial.begin(57600);
        Serial.print("begin");
        
        // Microwave
        pinMode(5,OUTPUT);        // VCC BISS0001
        digitalWrite(5,HIGH);
        
        pinMode(6,OUTPUT);        // Enabled
        digitalWrite(6,LOW);      // DISABLE PLEASE!
        
        pinMode(7,OUTPUT);        // GND
        digitalWrite(7,LOW);
      
        pinMode(A1,INPUT);        // PIR 2nd amplification stage
      
        pinMode(A0,OUTPUT);       // UPD microwave generator
        digitalWrite(A0,HIGH);
      
      }
      
      void loop()      
      {     
        // Report Microwave
        static Statistic mw_s;
        static uint16_t stdev_sum = 0;
        //mw_s.clear();
      
        //digitalWrite(8,HIGH);
        //delay(100);
        analogRead(MICRO_SENSOR_ANALOG_PIN);
        uint16_t reading;
        for(int i = 0; i < 200; i++)
        {
          reading = analogRead(MICRO_SENSOR_ANALOG_PIN);
          mw_s.add(reading);
          //Serial.println(reading);
          //Serial.flush();
          //delay(50);
          //LowPower.powerDown(SLEEP_60MS, ADC_ON, BOD_OFF);  
          //delay(1);
        }
        Serial.print(mw_s.minimum());   Serial.print(",");
        Serial.print(mw_s.average());   Serial.print(",");
        Serial.print(mw_s.maximum());   Serial.print(",");
        Serial.print(mw_s.pop_stdev()); Serial.print(",");
        stdev_sum += mw_s.pop_stdev();
        Serial.print(stdev_sum); //Serial.print(",");
        Serial.println();
        stdev_sum *= 0.9;
        mw_s.clear();
      }
      

      I just had the idea to sum up the std-dev and decrease it by 10% every round. Thus the code is less prone to peaks.

      0_1471429474464_upload-9c26c9f3-6ccd-4aaf-9bcc-797ad4c03be4

      stdev_sum is the lower dark blue line which can now be much easier compared to a threshold.

      Some measurement with my µCurrent-Gold:

      Unmodified code as above, power LED removed from ProMini @ 8Mhz internal osci with LDO desoldered
      4,8mA

      I tried to put the FC1816 into sleep by disable the power to the Microwave generator but this doesn't work.
      I modified the fuses for 8Mhz with 0ms wakeup delay for stabelizing the oscillator. No risk no phun ;-)

      The most practical solution I got to replace a PIR (still nothing as close as a PIR ;-ö)

      1530µA

      with this code:

      Note that the radar generator just can't be disable as it needs 10-15seconds to stabelize after power up

      #include <LowPower.h>
      
      #include "Statistic.h"
      
      #define MICRO_SENSOR_ANALOG_PIN A1
      
      void setup()
      {
        
        Serial.begin(57600);
        Serial.print("begin");
        
        // Microwave
        pinMode(5,OUTPUT);        // VCC BISS0001
        digitalWrite(5,HIGH);
        
        pinMode(6,OUTPUT);        // Enabled
        digitalWrite(6,LOW);      // DISABLE PLEASE!
        
        pinMode(7,OUTPUT);        // GND
        digitalWrite(7,LOW);
      
        pinMode(A1,INPUT);        // PIR 2nd amplification stage
      
        pinMode(A0,OUTPUT);       // UPD microwave generator
        digitalWrite(A0,HIGH);
      
      }
      
      void loop()      
      {     
        // Report Microwave
        static Statistic mw_s;
        static uint16_t stdev_sum = 0;
        //mw_s.clear();
      
        
        //delay(100);
        analogRead(MICRO_SENSOR_ANALOG_PIN);
        uint16_t reading;
        for(int i = 0; i < 10; i++)
        {
          LowPower.powerDown(SLEEP_15Ms, ADC_ON, BOD_OFF);  
          reading = analogRead(MICRO_SENSOR_ANALOG_PIN);
          mw_s.add(reading);
          //Serial.println(reading);
          //Serial.flush();
          //delay(50);
          LowPower.powerDown(SLEEP_15Ms, ADC_ON, BOD_OFF);  
          //delay(1);
        }
        Serial.print(mw_s.minimum());   Serial.print(",");
        Serial.print(mw_s.average());   Serial.print(",");
        Serial.print(mw_s.maximum());   Serial.print(",");
        Serial.print(mw_s.pop_stdev()); Serial.print(",");
        stdev_sum += mw_s.pop_stdev();
        Serial.print(stdev_sum); //Serial.print(",");
        Serial.println();
        Serial.flush();
        stdev_sum *= 0.9;
        mw_s.clear();
        
      }
      
      YveauxY Offline
      YveauxY Offline
      Yveaux
      Mod
      wrote on last edited by
      #31

      @cimba007 Thanks for the update :+1: Very interesting numbers!
      The 'sleep' current of 1.5mA rules out the microwave module as battery powered PIR replacement for me...
      As a mains powered sensor they're still very interesting, though!

      http://yveaux.blogspot.nl

      1 Reply Last reply
      0
      • cimba007C Offline
        cimba007C Offline
        cimba007
        wrote on last edited by cimba007
        #32

        After a few more days of testing I noticed these ugly "PEAKS" from my FC1816 readings. I added lots of capacitors and RC and LC sections but still .. nasty little peaks (left side in the beginning)

        0_1471879150498_upload-a9d03c1d-941a-4179-9306-7fb6eb708a7b

        In my previous post replace this line:

        stdev_sum += mw_s.pop_stdev();
        

        with this:

          // Ignore the first 3 peaks within short succession
          // Real movement should mean there are more peaks/activity over a long time
          static uint8_t peakcount = 0;
          if(mw_s.pop_stdev() > 30 && peakcount < 3)
          {
            peakcount++;
          }
          else
          {
            stdev_sum += mw_s.pop_stdev();
            stdev_sum *= 0.92; //
            if (stdev_sum >= 7)
              stdev_sum -= 7; // Default background noise
            if (stdev_sum > 512)
              stdev_sum = 512;    
        
            if(peakcount > 0)
              peakcount--;
          }
        

        With this code the first 3 peaks are essentially removed .. if there is really some movement it should last for a few seconds and would still be detected.

        I have invested like 10-20hours into testing and debugging the FC1816 and I can say .. this thing is .. peculiar ..

        I hate it cause of the spikes, the amplification which has to be manually altered with a pot .. but at the same time I love it ..

        I can detect my foot beckoning 2-3meters apart in my bed :D

        An example of the code snipped in action:

        0_1471879619120_upload-a3996be3-43b2-417d-ab69-e2545d288fd3

        Here you can see the big spikes in the beginning completely ignored (1)

        0_1471879713596_upload-3031e15c-37cb-4799-8b4a-ea6c3193f6bf

        YveauxY 1 Reply Last reply
        1
        • cimba007C cimba007

          After a few more days of testing I noticed these ugly "PEAKS" from my FC1816 readings. I added lots of capacitors and RC and LC sections but still .. nasty little peaks (left side in the beginning)

          0_1471879150498_upload-a9d03c1d-941a-4179-9306-7fb6eb708a7b

          In my previous post replace this line:

          stdev_sum += mw_s.pop_stdev();
          

          with this:

            // Ignore the first 3 peaks within short succession
            // Real movement should mean there are more peaks/activity over a long time
            static uint8_t peakcount = 0;
            if(mw_s.pop_stdev() > 30 && peakcount < 3)
            {
              peakcount++;
            }
            else
            {
              stdev_sum += mw_s.pop_stdev();
              stdev_sum *= 0.92; //
              if (stdev_sum >= 7)
                stdev_sum -= 7; // Default background noise
              if (stdev_sum > 512)
                stdev_sum = 512;    
          
              if(peakcount > 0)
                peakcount--;
            }
          

          With this code the first 3 peaks are essentially removed .. if there is really some movement it should last for a few seconds and would still be detected.

          I have invested like 10-20hours into testing and debugging the FC1816 and I can say .. this thing is .. peculiar ..

          I hate it cause of the spikes, the amplification which has to be manually altered with a pot .. but at the same time I love it ..

          I can detect my foot beckoning 2-3meters apart in my bed :D

          An example of the code snipped in action:

          0_1471879619120_upload-a3996be3-43b2-417d-ab69-e2545d288fd3

          Here you can see the big spikes in the beginning completely ignored (1)

          0_1471879713596_upload-3031e15c-37cb-4799-8b4a-ea6c3193f6bf

          YveauxY Offline
          YveauxY Offline
          Yveaux
          Mod
          wrote on last edited by
          #33

          @cimba007 awesome to read about all the research and debugging you did on this topic!
          Did you consider pouring the code into a library, so it can be reused and updated easily?

          http://yveaux.blogspot.nl

          1 Reply Last reply
          0
          • cimba007C Offline
            cimba007C Offline
            cimba007
            wrote on last edited by cimba007
            #34

            Currently I don't plan to make a library .. a library implies that the sensor is very easy to use .. plug in + import library.

            The FC1816 is not such a sensor.

            • Needs Voltage-Supply filter (RC Section)
            • Need separate cable to grab the signal at the 2nd amplification stage
            • Need potentiometer to lower the amplification
            • Is very prone to random noise (in fact even entering RF24 or ATMEGA328 low power mode might increase noise floor a lot)

            Using a "simple to use" library and not getting the expected result of an "easy"-sensor would be very disappointing. For now I would say this is an advanced sensor with some pitfalls.

            I update this thread with my findings to hopefully make everybodys life a bit easyer if you want to tinker with the FC1816 although you now know it is a little beast ;-)

            If you need any help just ask here and I will support you the best I can.

            1 Reply Last reply
            2
            • gohanG Offline
              gohanG Offline
              gohan
              Mod
              wrote on last edited by
              #35

              Are there any new updates on these sensors? I noticed there are some "new" one that have 2 potentiometers like the standard PIR sensors.

              1 Reply Last reply
              0
              • gohanG Offline
                gohanG Offline
                gohan
                Mod
                wrote on last edited by
                #36

                It's a review of some radar sensors if anyone is interested.

                https://youtu.be/9WiJJgIi3W0

                P 1 Reply Last reply
                0
                • gohanG gohan

                  It's a review of some radar sensors if anyone is interested.

                  https://youtu.be/9WiJJgIi3W0

                  P Offline
                  P Offline
                  pandeyg
                  wrote on last edited by
                  #37

                  @gohan Can you help how to bypass this sensor without changing of sensor ....

                  1 Reply Last reply
                  0
                  • gohanG Offline
                    gohanG Offline
                    gohan
                    Mod
                    wrote on last edited by
                    #38

                    I did not get what you meant

                    1 Reply Last reply
                    0
                    • alowhumA Offline
                      alowhumA Offline
                      alowhum
                      Plugin Developer
                      wrote on last edited by
                      #39

                      Does anyone have a complete MySensors sketch for these that they would be willing to share?

                      I tried to create a wildlife sensor with it a while ago.. but the signal seemed to always be high.

                      berkseoB 2 Replies Last reply
                      0
                      • gohanG Offline
                        gohanG Offline
                        gohan
                        Mod
                        wrote on last edited by
                        #40

                        It depends a lot on the sensor type so minor changes need to be made on sketch to make it handle the inverse logic.

                        1 Reply Last reply
                        0
                        • alowhumA alowhum

                          Does anyone have a complete MySensors sketch for these that they would be willing to share?

                          I tried to create a wildlife sensor with it a while ago.. but the signal seemed to always be high.

                          berkseoB Offline
                          berkseoB Offline
                          berkseo
                          wrote on last edited by berkseo
                          #41

                          @alowhum

                          I when the tested here is such:

                          https://ru.aliexpress.com/item/5-8GHZ-Microwave-Radar-Sensor-Module-Smart-Sensoring-Switch-6-9M-Home-Control-New-Electric-Unit/32752738026.html?spm=a2g0v.search0204.3.182.51813dffPLeG2R&ws_ab_test=searchweb0_0,searchweb201602_1_10152_5013111_10151_10065_10344_10068_10342_10343_316_10340_10341_10696_10084_10083_10618_10307_5723511_10301_10059_5013411_100031_10103_10624_10623_10622_10621_10620_5013311_5013211,searchweb201603_2,ppcSwitch_3_ppcChannel&algo_expid=6975e011-d892-4cfb-9b54-88979e999308-25&algo_pvid=6975e011-d892-4cfb-9b54-88979e999308&transAbTest=ae803_2&priceBeautifyAB=0

                          They work great on an almost standard PIR MOTION sketch

                          ..By the way why no one makes these motion sensors MW for MySensors on openhardware, it seems there is nothing complicated?

                          1 Reply Last reply
                          1
                          • alowhumA alowhum

                            Does anyone have a complete MySensors sketch for these that they would be willing to share?

                            I tried to create a wildlife sensor with it a while ago.. but the signal seemed to always be high.

                            berkseoB Offline
                            berkseoB Offline
                            berkseo
                            wrote on last edited by berkseo
                            #42

                            @alowhum
                            Now I remembered that I once shot a video about this sensor. In the description below the video there are links to sketches that work with such sensors. But for this video I did not do subtitles in English, in sketches comments also seem to be in Russian. But I think it won't be a problem.

                            https://www.youtube.com/watch?v=Q0sxeT0VsVg

                            https://www.youtube.com/watch?v=NdrU0byfbvI

                            1 Reply Last reply
                            0
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            10

                            Online

                            11.7k

                            Users

                            11.2k

                            Topics

                            113.1k

                            Posts


                            Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                            • Login

                            • Don't have an account? Register

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • MySensors
                            • OpenHardware.io
                            • Categories
                            • Recent
                            • Tags
                            • Popular