#radio

ArmlabRadio

A library for interfacing with CC1200 Radios

20 releases

0.6.5 Oct 17, 2022
0.6.4 Oct 7, 2022
0.6.2 Aug 30, 2022
0.5.2 Aug 29, 2022
0.4.10 Aug 25, 2022

#37 in #radio

Download history 3/week @ 2024-09-18 18/week @ 2024-09-25 3/week @ 2024-10-09 3/week @ 2024-10-16 1/week @ 2024-10-30

85 downloads per month

MIT license

29KB
528 lines

ArmLabCC1200

Libraries for interfacring with Armstrong Labs CC1200 based radios


Download with crates.io

https://crates.io/crates/ArmlabRadio

Purpose

ArmLabCC1200 contains a set of libraries for interfacing with STM32 controlled CC1200 radios. An STM32 wired to a CC1200 chip, and flashed with the following code will be able to be controlled by

  • any linux device over I2C
  • any device over serial

Whats Available

  • Rust source code to interface with the device over I2C on linux (radio_i2c.rs)
  • Rust source code to interface with the device over serial (radio_serial.rs)
  • Library published on crates.io
  • stm32 source code
  • custom stm32 board schematic
  • Commands to change basic radio settings
  • interactive command line example
    • cargo run --example terminal
    • cargo run --features i2clib --example terminal
  • continuous rx/tx (serial only) example
    • cargo run --example beacon
  • Serial radio device, auto detection

Whats Coming

  • More exposed features on the radio
  • Platform independent library for C / C++

Design

view the Latest design specifications, for an explanation on protocols, schematics, testing, and more

Use

I2C (Linux)

use ArmlabRadio::radio_i2c::Radio;

fn main () {
    let mut radio: Radio = Radio::new_rpi().unrwap();
    
    radio.transmit(b"test message").expect("transmit error");
    let packet = radio.get_packet().expect("read error");

    println!("got message: \"{:?}\"", packet);
}

Serial

use ArmlabRadio::radio_serial::Radio;

fn main () {
    let mut radio: Radio = Radio::new("COM 4").unrwap();
    
    radio.transmit(b"test message").expect("transmit error");
    let packet = radio.get_packet().expect("read error");

    println!("got message: \"{:?}\"", packet);
}

Dependencies

~2.3–4.5MB
~79K SLoC