• Stars
    star
    174
  • Rank 219,104 (Top 5 %)
  • Language
    Python
  • Created over 12 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Decoder for Oregon Scientific v1 protocol wireless temperature sensors with RTL-SDR and GNU Radio.

Decoding Oregon Scientific wireless sensor data with RTL-SDR and GNU Radio

Kevin Mehall
http://kevinmehall.net

This script decodes the packets that Oregon Scientific remote thermometers (like the one pictured below) send to the display unit. It also serves as example code for accessing rtl-sdr / GNU Radio samples live from Python.

Picture of sensor

Each sensor transmits every 30 seconds on 433.9MHz. The packet is repeated twice. Modulation is On-off keying, and the 32 data bits are manchester encoded. Alexander Yerezeyev implemeted a decoder for AVR microcontrollers, and wrote up a description of the protocol.

My sensors use the V1 protocol, but if you have newer sensors, take a look at JeeLabs' description of the V2 protocol. It would probably be simple to adapt my code.

The GNU Radio osmosdr block captures from the device. It's tuned slightly to the side to avoid the DC noise at the local oscillator frequency. A freq_xlating_fir_filter_ccc block selects and downsamples the correct region of the captured frequency range. Then it AM demodulates that band, and uses a message sink and queue to bring the samples into Python. (see gr_queue.py). A Python state machine detects the preamble, manchester-decodes the bits, and then parses the packet.

You can also (with the -a flag) play the AM audio to your speakers. The sensor packets sound like beeps, and you can hear other devices transmitting on the ISM band.

More Repositories

1

rust-peg

Parsing Expression Grammar (PEG) parser generator for Rust
Rust
1,427
star
2

nusb

A new pure-Rust library for cross-platform low-level access to USB devices.
Rust
171
star
3

usb

Minimalist portable USB device stack for SAMD21, LPC1800, LPC4300, Xmega
C
98
star
4

node-llvm

LLVM bindings for Node.JS
CoffeeScript
94
star
5

rust-soapysdr

Rust bindings for SoapySDR, the vendor-neutral software defined radio hardware abstraction layer
Rust
74
star
6

codemap

A data structure for tracking source code positions, inspired by the type in rustc's libsyntax.
Rust
50
star
7

rust-vcd

Read and write VCD (Value Change Dump) files in Rust
Rust
40
star
8

rust-usb

Deprecated: see libusb-rs
Rust
24
star
9

codemap-diagnostic

Rust library for displaying compiler diagnostics like rustc
Rust
21
star
10

nRF24L01-buspirate

Python code to interface with Nordic nRF24L01+ radio over SPI through BusPirate
Python
18
star
11

EquationExplorer

Implicit Equation / Vector Field Graphing in HTML5
JavaScript
13
star
12

nano-dm

Receive Qualcomm DSP debug logs over USB
Rust
12
star
13

OTpad

Operational Transformations Testing (Etherpad in nodejs)
CoffeeScript
12
star
14

eagle2web

Export Eagle PCBs and schematics for interactive display on the web
JavaScript
11
star
15

slideshow

Photo Slideshow Generator written in Python
Python
11
star
16

LUFA-LPC13xx

[DEPRECATED] Port of Dean Camera's LUFA USB framework to NXP LPC1343
C
11
star
17

rust-tessel

Programming Tessel in Rust
Rust
10
star
18

webrender-experiments

GLSL
8
star
19

FiveDollarArduino

ATMega328P + 3 resistors + 2 diodes + USB cable = click the upload button, watch the LED blink
C
7
star
20

openrisc-tools-build

[DEPRECATED] Submodules for OpenRISC toolchain components, and scripts to build them all. Updated from http://openrisc.net/toolchain-build.html
6
star
21

eeref

What would microcontroller datasheets look like if they weren't limited to static PDF?
CoffeeScript
5
star
22

openOCD

openOCD including OpenRISC with adv_debug_sys - patched to build on Ubuntu 12.04
C
4
star
23

external_set

Concurrent Rust collection whose items are owned externally, for implementing pub-sub / observer patterns
Rust
4
star
24

rust-svd

Deprecated, use svd2rust
Rust
3
star
25

calculator

Functional programming language for physics estimation
JavaScript
3
star
26

starfish

USB to Pmod
KiCad Layout
3
star
27

regex-derivs

Analyzing and compiling regular expressions with Brzozowski's regular expression derivatives
CoffeeScript
2
star
28

svgExperiments

Experimenting with drag-and-drop to connect objects in SVG, jQuery, and CoffeeScript
JavaScript
1
star
29

serenoa

Static site generator framework that isn't afraid of code
Python
1
star
30

Printer

AVR-based printer controller that prints with a sharpie
C++
1
star
31

inlinr

Embed all linked resources into an HTML page
Python
1
star
32

ocw_physics

Source code of notes from MIT OCW 8.01 and 8.02
Python
1
star
33

tinysync

Simple SFTP directory upload/sync tool
1
star