coloradocube / balloonsat

COTS balloonsat mission to test the RPi 4 with a battery UPS, a quad camarray, a GPS module, a RockBLOCK module, and a small number of Qwiic sensors
0 stars 5 forks source link

Iridium SBD communication for sending telemetry over a RockBLOCK module #6

Closed ivogeorg closed 2 years ago

ivogeorg commented 2 years ago

Description

The primary ground communications channel for the balloonsat is the Iridium satellite constellation through the RockBLOCK short-burst-data messaging modules. Since the packet size is 340 downlink and 270 uplink, this channel is only good for telemetry and control (insofar a balloonsat can be controlled). With clear sky, a message can be sent about every 10 seconds.

We have two versions of the RockBLOCK:

  1. The 9602 or v2
  2. The 9603 or v3, which is preferred due to lower weight and other improvements.

The PRi will connect to the RockBLOCK with a USB cable. V2 requires an external USB-to-Serial chip. V3 might have that internally.

Use RockBLOCK short burst messages to deliver live telemetry. In particular:

  1. Connect to RPi and get the RockBlock library running
  2. Write program to Schedule and queue messages per type and subsystem
  3. Set up the msusat.org website and a Web service to show the telemetry.
  4. Set up redirect to the Web service at msusat.org

Knowledge

  1. 9603 vendor product page, specs, and docs
  2. RockBlock guide. In particular:
    1. What's RockBLOCK.
    2. Integration with application
    3. Short burst data.
    4. Receiving data.
    5. RockBLOCK data cycle.
    6. Data compression.
  3. RockBLOCK API reference. In particular:
    1. Sending MT messages. MT messages are ground/web service to RockBLOCK.
  4. FTDI USB-to-Serial drivers
  5. Simple message tutorial (DOES NOT WORK)
  6. SparkFun video demo for connection from laptop.
  7. Adafruit and CircuitPython (On Wikipedia):
    1. 9603 product page and user guide.
    2. Adafruit CircuitPython RockBLOCK library/driver on Github and ReadTheDocs.
    3. Raspberry Pi example with RockBLOCK and driver.
    4. CircuitPython releases and libraries.
    5. The Adafruit library depends on Adafruit-Blinka (PyPi and Github).
  8. iridium AT Command Reference.

Deliverables

  1. A driver library for the RockBLOCK in the form of a Python package. Managed by the Flight Executive (See #28).
  2. Minimal functions:
    1. Send periodic telemetry (See #3).
    2. Accept and send asynchronous critical alerts.
    3. Priority message queue.
    4. Check for incoming messages (aka check mailbox). The incoming (MT) messages have to be retrieved by the RockBLOCK. TODO: Is there a PUSH mechanism that can be configured?
    5. Check and report status of Iridium connection.
    6. Acceptance tests:
    7. Check RPi-RockBLOCK connection (indoors). (AT --> OK)
    8. Round trip to ground with UPS and voltage and current sensor data (outdoors, on ground).
    9. Periodic telemetry after power up from inside battery-powered enclosure (outdoors, on ground).
    10. Periodic telemetry after power up from inside battery-powered enclosure (outdoors, in the air).
ivogeorg commented 2 years ago

We have 3 RockBLOCKs, one mine, and two from Randy. Randy says we can add his to my account. Need to ask Kate to buy credit.

ivogeorg commented 2 years ago

What to send:

  1. Processor level of utilization (@ target of 80% continuous).
  2. Processor internal readings (temperature, etc.).
  3. Ambient temperature in box.
  4. Altitude.
  5. GPS coordinates.

@dperry29, @NotfatPrince, anything else?

ivogeorg commented 2 years ago

USB to Serial converters

For verifying RockBLOCK operation with a laptop.

  1. SparkFun FT231X Breakout (BOB-13263):
    1. Defaults to 5 V (needs jumper soldering).
    2. No headers.
    3. USB, Micro B.
  2. SparkFun FTDI Basic Breakout - 5V (DEV-09716):
    1. Defaults to 5 V. Jumper soldered to 3.3 V.
    2. USB, Mini B.
  3. SparkFun Serial Basic Breakout - CH340C and USB-C (DEV-15096):
    1. Defaults to 3.3.
    2. USB, C.
  4. SparkFun Cerberus USB Cable - 6ft (CAB-12016).
NotfatPrince commented 2 years ago

Description

  1. Get the RockBlock library running
  2. Schedule and queue messages per type and subsystem
  3. Pack and encrypt data (encrypted text should be in ASCII) MSUSAT/Systems#2

    Knowledge

    RockBlock guide Drivers Simple message tutorial

Deliverables

For Indoor lab test of the system

For outdoor lab test of the system. No box.

ivogeorg commented 2 years ago

Sending a message AT commands

AT (testing device status) OK AT&KO (ready to send short-burst data) OK AT+SBDWT=Message to send (writing the message) OK AT+SBDIX (send message in buffer) +SBDIS: 0, 4, 0, 0, 0, 0 (upon successful transmission) +SBDIS: 32, 4, 2, 0, 0, 0 (upon failed transmission) OK

ivogeorg commented 2 years ago

image

ahmedjazeera11 commented 2 years ago

"Connect to RPi and get the RockBlock library running" issue solved

ahmedjazeera11 commented 2 years ago

DSD TECH 2PCS USB to TTL Serial Adapter with CP2102 Chip Compatible with Windows 7,8,10,Linux,Mac OS X https://www.amazon.com/gp/product/B078W5L8W1/ref=ppx_yo_dt_b_asin_title_o01_s01?ie=UTF8&psc=1

ivogeorg commented 2 years ago

Iridium application

image

ivogeorg commented 2 years ago

Critical alerts from flight executive

image

ivogeorg commented 2 years ago

@nmead1 Read through this issue and let's discuss. This will feel like drinking from the hose, but don't worry. Tomorrow, I can give you a RockBLOCK to play with.

ivogeorg commented 2 years ago

The RPi setup for using the UART for the RockBLOCK specifies to enable Serial but disable Serial Console. In reference to #30, could both be enabled?

ivogeorg commented 2 years ago

The rockblock_simpletest.py works with Serial on and the following code:

# uart = board.UART()
# uart.baudrate = 19200

import serial
uart = serial.Serial("/dev/serial0", 19200)

Temperature fell under 0 degrees Celsius and could not run the rockblock_sendtext.py and rockblock_senddata.py.