OLED 433Mhz Sniffer

OLED 433Mhz Sniffer

Der folgende Beitrag beschreibt wie ich meine einzelnen Bewegungsmelder und Fenster Kontakte ausgelesen habe. Folgende Bauteile werden benötigt.

Ihr könnt natürlich auch mit anderen Arduino Bibliotheken variieren beziehungsweise mit anderen Displays arbeiten, ich selbst habe mir unten stehenden Sniffer selbst zusammengebaut.

  • 433Mhz Receiver (RX6B)
  • Arduino Mini Pro o.ä.
  • Antenne ( es geht auch ein 17 cm Draht)
  • Display z.B. OLED I2C 128 x 64

Ich habe mir diese Bauteile zusammen gesucht da sie sehr klein sind. Natürlich würde das alles auch mit einem Arduino Uno funktionieren aber ich wollte halt ein kleines Gerät für die Tasche haben welches ich ganz einfach mit einer power Bank betreiben kann. Die besten 433 MHz Empfänger sind meiner Meinung nach die RXB6 Module, hier gehen aber auch andere Empfänger.

/*

Belegung:

A4 (SDA)  SDA
A5 (SCL)  SCL
5V  VCC
GND GND
*/
// 433MHZ Empfänger ist an Interrupt-Pin "0" - Das ist am UNO der Pin2


#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

#define OLED_RESET 4 // not used / nicht genutzt bei diesem Display
Adafruit_SSD1306 display(OLED_RESET);

void setup()   {                

  // initialize with the I2C addr 0x3C / mit I2C-Adresse 0x3c initialisieren
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  
  // random start seed / zufälligen Startwert für Random-Funtionen initialisieren
  randomSeed(analogRead(0));

  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Empfänger ist an Interrupt-Pin "0" - Das ist am UNO der Pin2

  

}

#define DRAW_DELAY 118
#define D_NUM 47

int i;

void loop() {
  
  //display.clearDisplay();

  
  // set text color / Textfarbe setzen
  display.setTextColor(WHITE);
  // set text size / Textgroesse setzen
  display.setTextSize(1);
  // set text cursor position / Textstartposition einstellen
  display.setCursor(1,0);
  // show text / Text anzeigen
  //display.println("AMIN - Display - Test");
  display.setCursor(14,56);

  //grosser Text
  //display.setTextSize(2);
  //display.setCursor(34,15);
  //display.println("Hello");

  
  display.setCursor(30,34);
  display.println("World!");
  display.display();

  
  
 //RF Teil
 
  if (mySwitch.available()) // Wenn ein Code Empfangen wird...
  {
    int value = mySwitch.getReceivedValue(); // Empfangene Daten werden unter der Variable "value" gespeichert.
  
    if (value == 0) // Wenn die Empfangenen Daten "0" sind, wird "Unbekannter Code" angezeigt.
    {
      Serial.println("Unbekannter Code");
    } 
    
    else // Code an Monitor senden
    {
      Serial.print("Empfangen: ");
      Serial.println( mySwitch.getReceivedValue() );

      display.clearDisplay();
      display.setCursor(1,0);
      
      display.println("Empfangen:");
      display.setCursor(0,12);
      display.setTextSize(2);
      display.println(mySwitch.getReceivedValue() );
    
      
      delay(1000);
    }

    mySwitch.resetAvailable(); // Hier wird der Empfänger "resettet"
  }
  

}