Arduino trådløs(315/433MHz) hack

Udgivet af Sims den

Okay, indrømmet! Denne guide er primært rettet mod børn og barnligesjæle.. Men der ligger mere bag, end at irritere naboen, det er blot en bonus, læs min ansvarsfraskrivelse*!

Lad os starte med den useriøse brug af denne lille “gadget”, at få naboens trådløse ringeklokke til at ringe i tide og utide. Du skal bruge:

En Arduino
En 315MHz sender og modtager*
3x ledninger (jumpere)
USB kabel (Arduino -> PC)
Arduino programmerings software (arduino.cc)

315MHz sender og modtager* Det kan være at enheden du forsøger at kommunikere med, benytter en anden frekvens, eksempel vis 433MHz, her må du prøve dig frem!

arduino315sm

Sender og modtager (den store med 4 ben er modtager).

Forbind modtager og sender

Tilslut de 2 komponenter til Arduino’en sådan:

illu-arduino-UNO

Download “RCSwitch” og pak ud i Arduino biblioteket (Dokumenter -> Arduino -> Libraries).

Modtag signalet

Tilslut Adruino’en til din PC og start Arduino’s programmerings software. Upload denne kode til Arduino’en:

/*
  315/433MHz modtager output til Serial Monitor
  Lavet af Kasper Simonsen 2015
  https://www.rakett.dk - GDS Automation
*/

#include  

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Modtager "data" pin til inerrupt 0 (pin #2 på Arduino'en).
}

void loop() {
  if (mySwitch.available()) {
    
    int value = mySwitch.getReceivedValue();
    
    if (value == 0) {
      Serial.print("Ukendt kodning");
    } else {
      Serial.print("Decimal kode: ");
      Serial.println( mySwitch.getReceivedValue() );
      Serial.print("Bit lændge: ");
      Serial.println( mySwitch.getReceivedBitlength() );
      Serial.print("Puls længde: ");
      Serial.println( mySwitch.getReceivedDelay() );
      Serial.println(" ---------- ");
    }

    mySwitch.resetAvailable();
  }
}

arduinoRC2

Nu har du uploadet til Arduino’en og åbnet “Serial Monitor” (Tools -> Serial Monitor).

Tryk nu på den enhed der normalt sender signalet, ringeklokken, eller en anden trådløs enhed der benytter samme frekvens som din modtager på Arduino’en. Hvis det hele virker burde du se noget lignende:

arduinoRC3

Du skal bruge alle 3 stykker data til at sende det modtagne signal fra Arduino’en. Kopier og gem det et sted (gerne Notepad). Puls længden er ikke så følsom som de andre data, den bør ligge indenfor ± 2. Som du ser i eksemplet herover, springer den fra 169 til 170. Prøver du flere gange kan den springe endnu mere.

Send signalet

Nu bliver det sjovt, vi skal nemlig replikere signalet vi modtog og sende det fra Arduino’en! Den efterfølgende kode skal redigeres lidt for at passe til det signal du modtog, da det temmelig sikkert ikke ligner mit (Nej du skal ikke rende rundt og sende dette signal, det er tilhørende min egen ringeklokke!):

/*
  315/433MHz sender 
  Lavet af Kasper Simonsen 2015
  https://www.rakett.dk - GDS Automation
  
*/
#include 
RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600); 
  mySwitch.enableTransmit(10); // Sender "data" pin til Arduino pin #10
  mySwitch.setPulseLength(170); // Sæt til modtaget puls længde
}

void loop() {
  mySwitch.send(13873989, 24); // Sæt til modtaget decimal kode og bit længde
  delay(5000);  
}

I næste guide, vil jeg tilføje 2 knapper/switche og et batteri, så vi kan få vores “trådløse hacker” bærbar og gøre det endnu mere sjovt/brugbart!

Download sender program (.ino)
Download modtager program (.ino)

Ansvarsfraskrivelse*

Du skal selvfølgelig ikke lade din Arduino stå tændt med “send naboens ringeklokke kode” i al evighed, jeg påtager mig intet ansvar for barnlig og uforsvarlig brug af denne guide. Det er helt op til dig hvordan du (mis)bruger eksemplet, jeg elsker en god spøg, men den skal altså ikke vare 5 timer i træk, midt om natten.

Kategorier: Projekter