Merge branch 'test-merge' into i2c_ina219

pull/10/head
alanbjohnston 7 years ago committed by GitHub
commit 35701f1e01
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,7 +1,13 @@
all: DEBUG_BEHAVIOR=
all: libax5043.a
all: radioafsk
all: radiocw
debug: DEBUG_BEHAVIOR = -DDEBUG_LOGGING
debug: libax5043.a
debug: radioafsk
debug: radiocw
rebuild: clean
rebuild: all
@ -44,40 +50,40 @@ libax5043.a: ax5043/spi/ax5043spi.o
radiochat: libax5043.a
radiochat: chat/chat_main.o
gcc -o radiochat -pthread -L./ chat/chat_main.o -lwiringPi -lax5043
gcc -std=gnu99 $(DEBUG_BEHAVIOR) -o radiochat -pthread -L./ chat/chat_main.o -lwiringPi -lax5043
radiocw: libax5043.a
radiocw: cw/cw_main.o
radiocw: afsk/ax25.o
radiocw: afsk/ax5043.o
radiocw: afsk/send_afsk.o
gcc -o radiocw -L./ afsk/ax25.o afsk/ax5043.o afsk/send_afsk.o cw/cw_main.o -lwiringPi -lax5043
gcc -std=gnu99 $(DEBUG_BEHAVIOR) -o radiocw -L./ afsk/ax25.o afsk/ax5043.o afsk/send_afsk.o cw/cw_main.o -lwiringPi -lax5043
radiopiglatin: libax5043.a
radiopiglatin: piglatin/piglatin_main.o
gcc -o radiopiglatin -pedantic -Wall -Wextra -L./ piglatin/piglatin_main.o -lwiringPi -lax5043
gcc -std=gnu99 $(DEBUG_BEHAVIOR) -o radiopiglatin -pedantic -Wall -Wextra -L./ piglatin/piglatin_main.o -lwiringPi -lax5043
testax5043tx: libax5043.a
testax5043tx: transmit/transmit_main.o
gcc -o testax5043tx -pedantic -Wall -Wextra -L./ transmit/transmit_main.o -lwiringPi -lax5043
gcc -std=gnu99 $(DEBUG_BEHAVIOR) -o testax5043tx -pedantic -Wall -Wextra -L./ transmit/transmit_main.o -lwiringPi -lax5043
testax5043rx: libax5043.a
testax5043rx: receive/receive_main.o
gcc -o testax5043rx -pedantic -Wall -Wextra -L./ receive/receive_main.o -lwiringPi -lax5043
gcc -std=gnu99 $(DEBUG_BEHAVIOR) -o testax5043rx -pedantic -Wall -Wextra -L./ receive/receive_main.o -lwiringPi -lax5043
testax5043init: libax5043.a
testax5043init: init/init_main.o
gcc -o testax5043init -pedantic -Wall -Wextra -L./ init/init_main.o -lwiringPi -lax5043
gcc -std=gnu99 $(DEBUG_BEHAVIOR) -o testax5043init -pedantic -Wall -Wextra -L./ init/init_main.o -lwiringPi -lax5043
testax50432freq: libax5043.a
testax50432freq: transmit2freq/transmit2freq_main.o
gcc -o testax50432freq -pedantic -Wall -Wextra -L./ transmit2freq/transmit2freq_main.o -lwiringPi -lax5043
gcc -std=gnu99 $(DEBUG_BEHAVIOR) -o testax50432freq -pedantic -Wall -Wextra -L./ transmit2freq/transmit2freq_main.o -lwiringPi -lax5043
testafsktx: libax5043.a
testafsktx: afsktx/ax25.o
testafsktx: afsktx/ax5043.o
testafsktx: afsktx/main.o
gcc -o testafsktx -pedantic -Wall -Wextra -L./ afsktx/ax25.o afsktx/ax5043.o afsktx/main.o -lwiringPi -lax5043
gcc -std=gnu99 $(DEBUG_BEHAVIOR) -o testafsktx -pedantic -Wall -Wextra -L./ afsktx/ax25.o afsktx/ax5043.o afsktx/main.o -lwiringPi -lax5043
radioafsk: libax5043.a
radioafsk: afsk/ax25.o
@ -86,7 +92,8 @@ radioafsk: afsk/main.o
radioafsk: afsk/ina219.h
radioafsk: Adafruit_INA219/Adafruit_INA219.o
radioafsk: Adafruit_INA219/Adafruit_INA219.h
gcc -o radioafsk -pedantic -Wall -Wextra -L./ afsk/ax25.o afsk/ax5043.o afsk/main.o Adafruit_INA219/Adafruit_INA219.o -lwiringPi -lax5043
gcc $(DEBUG_BEHAVIOR) -o radioafsk -pedantic -Wall -Wextra -L./ afsk/ax25.o afsk/ax5043.o afsk/main.o Adafruit_INA219/Adafruit_INA219.o -lwiringPi -lax5043
Adafruit_INA219/Adafruit_INA219.o: Adafruit_INA219/Adafruit_INA219.c
Adafruit_INA219/Adafruit_INA219.o: Adafruit_INA219/Adafruit_INA219.h
@ -97,19 +104,19 @@ ax5043/generated/configcommon.o: ax5043/generated/configrx.h
ax5043/generated/configcommon.o: ax5043/generated/configtx.h
ax5043/generated/configcommon.o: ax5043/axradio/axradioinit.h
ax5043/generated/configcommon.o: ax5043/axradio/axradioinit_p.h
cd ax5043/generated; gcc -pedantic -Wall -Wextra -c configcommon.c
cd ax5043/generated; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -pedantic -Wall -Wextra -c configcommon.c
ax5043/generated/configrx.o: ax5043/generated/configrx.c
ax5043/generated/configrx.o: ax5043/generated/configrx.h
ax5043/generated/configrx.o: ax5043/axradio/axradioinit.h
ax5043/generated/configrx.o: ax5043/axradio/axradioinit_p.h
cd ax5043/generated; gcc -pedantic -Wall -Wextra -c configrx.c
cd ax5043/generated; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -pedantic -Wall -Wextra -c configrx.c
ax5043/generated/configtx.o: ax5043/generated/configtx.c
ax5043/generated/configtx.o: ax5043/generated/configtx.h
ax5043/generated/configtx.o: ax5043/axradio/axradioinit.h
ax5043/generated/configtx.o: ax5043/axradio/axradioinit_p.h
cd ax5043/generated; gcc -pedantic -Wall -Wextra -c configtx.c
cd ax5043/generated; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -pedantic -Wall -Wextra -c configtx.c
ax5043/generated/config.o: ax5043/generated/config.c
ax5043/generated/config.o: ax5043/generated/config.h
@ -118,12 +125,12 @@ ax5043/generated/config.o: ax5043/axradio/axradioinit_p.h
ax5043/generated/config.o: ax5043/spi/ax5043spi.h
ax5043/generated/config.o: ax5043/spi/ax5043spi_p.h
ax5043/generated/config.o: ax5043/crc/crc.h
cd ax5043/generated; gcc -pedantic -Wall -Wextra -c config.c
cd ax5043/generated; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -pedantic -Wall -Wextra -c config.c
ax5043/spi/ax5043spi.o: ax5043/spi/ax5043spi.c
ax5043/spi/ax5043spi.o: ax5043/spi/ax5043spi.h
ax5043/spi/ax5043spi.o: ax5043/spi/ax5043spi_p.h
cd ax5043/spi; gcc -pedantic -Wall -Wextra -c ax5043spi.c
cd ax5043/spi; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -pedantic -Wall -Wextra -c ax5043spi.c
ax5043/ax5043support/ax5043init.o: ax5043/ax5043support/ax5043init.c
ax5043/ax5043support/ax5043init.o: ax5043/ax5043support/ax5043init.h
@ -131,7 +138,7 @@ ax5043/ax5043support/ax5043init.o: ax5043/axradio/axradioinit.h
ax5043/ax5043support/ax5043init.o: ax5043/axradio/axradioinit_p.h
ax5043/ax5043support/ax5043init.o: ax5043/spi/ax5043spi.h
ax5043/ax5043support/ax5043init.o: ax5043/spi/ax5043spi_p.h
cd ax5043/ax5043support; gcc -pedantic -Wall -Wextra -c ax5043init.c
cd ax5043/ax5043support; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -pedantic -Wall -Wextra -c ax5043init.c
ax5043/ax5043support/ax5043rx.o: ax5043/ax5043support/ax5043rx.c
ax5043/ax5043support/ax5043rx.o: ax5043/ax5043support/ax5043rx.h
@ -139,7 +146,7 @@ ax5043/ax5043support/ax5043rx.o: ax5043/axradio/axradioinit.h
ax5043/ax5043support/ax5043rx.o: ax5043/axradio/axradioinit_p.h
ax5043/ax5043support/ax5043rx.o: ax5043/spi/ax5043spi.h
ax5043/ax5043support/ax5043rx.o: ax5043/spi/ax5043spi_p.h
cd ax5043/ax5043support; gcc -pedantic -Wall -Wextra -c ax5043rx.c
cd ax5043/ax5043support; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -pedantic -Wall -Wextra -c ax5043rx.c
ax5043/ax5043support/ax5043tx.o: ax5043/ax5043support/ax5043tx.c
ax5043/ax5043support/ax5043tx.o: ax5043/ax5043support/ax5043tx.h
@ -147,7 +154,7 @@ ax5043/ax5043support/ax5043tx.o: ax5043/axradio/axradioinit.h
ax5043/ax5043support/ax5043tx.o: ax5043/axradio/axradioinit_p.h
ax5043/ax5043support/ax5043tx.o: ax5043/spi/ax5043spi.h
ax5043/ax5043support/ax5043tx.o: ax5043/spi/ax5043spi_p.h
cd ax5043/ax5043support; gcc -pedantic -Wall -Wextra -c ax5043tx.c
cd ax5043/ax5043support; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -pedantic -Wall -Wextra -c ax5043tx.c
ax5043/axradio/axradioinit.o: ax5043/axradio/axradioinit.c
ax5043/axradio/axradioinit.o: ax5043/axradio/axradioinit.h
@ -157,7 +164,7 @@ ax5043/axradio/axradioinit.o: ax5043/spi/ax5043spi.h
ax5043/axradio/axradioinit.o: ax5043/spi/ax5043spi_p.h
ax5043/axradio/axradioinit.o: ax5043/generated/config.h
ax5043/axradio/axradioinit.o: ax5043/crc/crc.h
cd ax5043/axradio; gcc -pedantic -Wall -Wextra -c axradioinit.c
cd ax5043/axradio; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -pedantic -Wall -Wextra -c axradioinit.c
ax5043/axradio/axradiomode.o: ax5043/axradio/axradiomode.c
ax5043/axradio/axradiomode.o: ax5043/axradio/axradiomode.h
@ -167,7 +174,7 @@ ax5043/axradio/axradiomode.o: ax5043/axradio/axradioinit_p.h
ax5043/axradio/axradiomode.o: ax5043/spi/ax5043spi.h
ax5043/axradio/axradiomode.o: ax5043/spi/ax5043spi_p.h
ax5043/axradio/axradiomode.o: ax5043/generated/config.h
cd ax5043/axradio; gcc -pedantic -Wall -Wextra -c axradiomode.c
cd ax5043/axradio; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -pedantic -Wall -Wextra -c axradiomode.c
ax5043/axradio/axradiorx.o: ax5043/axradio/axradiorx.c
ax5043/axradio/axradiorx.o: ax5043/axradio/axradiorx.h
@ -177,7 +184,7 @@ ax5043/axradio/axradiorx.o: ax5043/axradio/axradioinit.h
ax5043/axradio/axradiorx.o: ax5043/axradio/axradioinit_p.h
ax5043/axradio/axradiorx.o: ax5043/spi/ax5043spi.h
ax5043/axradio/axradiorx.o: ax5043/spi/ax5043spi_p.h
cd ax5043/axradio; gcc -pedantic -Wall -Wextra -c axradiorx.c
cd ax5043/axradio; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -pedantic -Wall -Wextra -c axradiorx.c
ax5043/axradio/axradiotx.o: ax5043/axradio/axradiotx.c
ax5043/axradio/axradiotx.o: ax5043/axradio/axradiotx.h
@ -191,11 +198,11 @@ ax5043/axradio/axradiotx.o: ax5043/generated/config.h
ax5043/axradio/axradiotx.o: ax5043/axradio/axradiomode.h
ax5043/axradio/axradiotx.o: ax5043/axradio/axradiomode_p.h
ax5043/axradio/axradiotx.o: ax5043/crc/crc.h
cd ax5043/axradio; gcc -pedantic -Wall -Wextra -c axradiotx.c
cd ax5043/axradio; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -pedantic -Wall -Wextra -c axradiotx.c
ax5043/crc/crc.o: ax5043/crc/crc.c
ax5043/crc/crc.o: ax5043/crc/crc.h
cd ax5043/crc; gcc -pedantic -Wall -Wextra -c crc.c
cd ax5043/crc; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -pedantic -Wall -Wextra -c crc.c
chat/chat_main.o: chat/chat_main.c
chat/chat_main.o: ax5043/spi/ax5043spi.h
@ -209,35 +216,36 @@ chat/chat_main.o: ax5043/axradio/axradiorx_p.h
chat/chat_main.o: ax5043/axradio/axradiotx.h
chat/chat_main.o: ax5043/axradio/axradiotx_p.h
chat/chat_main.o: ax5043/generated/configtx.h
cd chat; gcc -I../ax5043 -pedantic -Wconversion -Wall -Wextra -c chat_main.c; cd ..
cd chat; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -I../ax5043 -pedantic -Wconversion -Wall -Wextra -c chat_main.c; cd ..
afsk/ax25.o: afsk/ax25.c
afsk/ax25.o: afsk/ax25.h
afsk/ax25.o: afsk/ax5043.h
afsk/ax25.o: afsk/status.h
cd afsk; gcc -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c ax25.c; cd ..
cd afsk; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c ax25.c; cd ..
afsk/ax5043.o: afsk/ax5043.c
afsk/ax5043.o: afsk/ax25.h
afsk/ax5043.o: afsk/ax5043.h
afsk/ax5043.o: afsk/status.h
afsk/ax5043.o: afsk/utils.h
afsk/ax5043.o: afsk/main.c
afsk/ax5043.o: ax5043/spi/ax5043spi.h
cd afsk; gcc -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c ax5043.c; cd ..
cd afsk; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c ax5043.c; cd ..
afsk/main.o: afsk/main.c
afsk/main.o: afsk/status.h
afsk/main.o: afsk/ax5043.h
afsk/main.o: afsk/ax25.h
afsk/main.o: ax5043/spi/ax5043spi.h
cd afsk; gcc -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c main.c; cd ..
cd afsk; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c main.c; cd ..
afsk/send_afsk.o: afsk/send_afsk.c
afsk/send_afsk.o: afsk/send_afsk.h
afsk/send_afsk.o: afsk/status.h
afsk/send_afsk.o: afsk/ax5043.h
afsk/send_afsk.o: afsk/ax25.h
cd afsk; gcc -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c send_afsk.c; cd ..
cd afsk; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c send_afsk.c; cd ..
cw/cw_main.o: cw/cw_main.c
cw/cw_main.o: ax5043/spi/ax5043spi.h
@ -251,7 +259,7 @@ cw/cw_main.o: ax5043/axradio/axradiorx_p.h
cw/cw_main.o: ax5043/axradio/axradiotx.h
cw/cw_main.o: ax5043/axradio/axradiotx_p.h
cw/cw_main.o: ax5043/generated/configtx.h
cd cw; gcc -I../ax5043 -pedantic -Wconversion -Wall -Wextra -c cw_main.c; cd ..
cd cw; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -I../ax5043 -pedantic -Wconversion -Wall -Wextra -c cw_main.c; cd ..
piglatin/piglatin_main.o: piglatin/piglatin_main.c
piglatin/piglatin_main.o: ax5043/spi/ax5043spi.h
@ -265,7 +273,7 @@ piglatin/piglatin_main.o: ax5043/axradio/axradiorx_p.h
piglatin/piglatin_main.o: ax5043/axradio/axradiotx.h
piglatin/piglatin_main.o: ax5043/axradio/axradiotx_p.h
piglatin/piglatin_main.o: ax5043/generated/configtx.h
cd piglatin; gcc -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c piglatin_main.c; cd ..
cd piglatin; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c piglatin_main.c; cd ..
receive/receive_main.o: receive/receive_main.c
receive/receive_main.o: ax5043/axradio/axradioinit.h
@ -277,7 +285,7 @@ receive/receive_main.o: ax5043/axradio/axradiomode_p.h
receive/receive_main.o: ax5043/axradio/axradiorx.h
receive/receive_main.o: ax5043/axradio/axradiorx_p.h
receive/receive_main.o: ax5043/generated/configrx.h
cd receive; gcc -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c receive_main.c; cd ..
cd receive; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c receive_main.c; cd ..
transmit/transmit_main.o: transmit/transmit_main.c
transmit/transmit_main.o: ax5043/axradio/axradioinit.h
@ -289,7 +297,7 @@ transmit/transmit_main.o: ax5043/axradio/axradiomode_p.h
transmit/transmit_main.o: ax5043/axradio/axradiotx.h
transmit/transmit_main.o: ax5043/axradio/axradiotx_p.h
transmit/transmit_main.o: ax5043/generated/configtx.h
cd transmit; gcc -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c transmit_main.c; cd ..
cd transmit; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c transmit_main.c; cd ..
transmit2freq/transmit2freq_main.o: transmit2freq/transmit2freq_main.c
transmit2freq/transmit2freq_main.o: ax5043/axradio/axradioinit.h
@ -301,20 +309,20 @@ transmit2freq/transmit2freq_main.o: ax5043/axradio/axradiomode_p.h
transmit2freq/transmit2freq_main.o: ax5043/axradio/axradiotx.h
transmit2freq/transmit2freq_main.o: ax5043/axradio/axradiotx_p.h
transmit2freq/transmit2freq_main.o: ax5043/generated/configtx.h
cd transmit2freq; gcc -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c transmit2freq_main.c; cd ..
cd transmit2freq; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c transmit2freq_main.c; cd ..
init/init_main.o: init/init_main.c
init/init_main.o: ax5043/axradio/axradioinit.h
init/init_main.o: ax5043/axradio/axradioinit_p.h
init/init_main.o: ax5043/spi/ax5043spi.h
init/init_main.o: ax5043/spi/ax5043spi_p.h
cd init; gcc -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c init_main.c; cd ..
cd init; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c init_main.c; cd ..
afsktx/ax25.o: afsktx/ax25.c
afsktx/ax25.o: afsktx/ax25.h
afsktx/ax25.o: afsktx/ax5043.h
afsktx/ax25.o: afsktx/status.h
cd afsktx; gcc -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c ax25.c; cd ..
cd afsktx; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c ax25.c; cd ..
afsktx/ax5043.o: afsktx/ax5043.c
afsktx/ax5043.o: afsktx/ax25.h
@ -322,11 +330,11 @@ afsktx/ax5043.o: afsktx/ax5043.h
afsktx/ax5043.o: afsktx/status.h
afsktx/ax5043.o: afsktx/utils.h
afsktx/ax5043.o: ax5043/spi/ax5043spi.h
cd afsktx; gcc -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c ax5043.c; cd ..
cd afsktx; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c ax5043.c; cd ..
afsktx/main.o: afsktx/main.c
afsktx/main.o: afsktx/status.h
afsktx/main.o: afsktx/ax5043.h
afsktx/main.o: afsktx/ax25.h
afsktx/main.o: ax5043/spi/ax5043spi.h
cd afsktx; gcc -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c main.c; cd ..
cd afsktx; gcc -std=gnu99 $(DEBUG_BEHAVIOR) -I ../ax5043 -pedantic -Wconversion -Wall -Wextra -c main.c; cd ..

@ -1,11 +1,15 @@
# CubeSatSim
See the Wiki for more details. To build and run the software on a Raspberry Pi 3B, 3B+, or Pi Zero W:
The CubeSat Simulator https://github.com/alanbjohnston/CubeSatSim/wiki is a low cost satellite emulator that run on solar panels and batteries, transmits UHF radio telemetry, has a 3D printed frame, and can be extended by additional sensors and modules. This project is sponsored by the not-for-profit [Radio Amateur Satellite Corporation, AMSAT®](https://amsat.org).
See the Wiki Software Install page for more details: https://github.com/alanbjohnston/CubeSatSim/wiki/Software-Install. To build and run the software on a Raspberry Pi 3B, 3B+, or Pi Zero W:
`git clone http://github.com/alanbjohnston/CubeSatSim.git`
`cd CubeSatSim`
Edit the afsk/main.c file to set your amateur radio callsign, then
`make rebuild`
To hear CW telemetry (Morse code), tune your radio or SDR to 435.297 MHz and enter:
@ -16,15 +20,18 @@ To stop, Ctrl-C. To hear AFSK telemetry (X.25 data), your radio or SDR to 440.3
`./radioafsk`
This code uses the Brandenburg Tech Digital Transceiver, based on DigitalTxRxRP
https://brandenburgtech.wordpress.com/-
This code uses the Brandenburg Tech Digital Transceiver, based on DigitalTxRxRP https://brandenburgtech.wordpress.com/
This repository contains:
- cw - Code that sends telemetry in CW (Morse code) using AO-7 format
- afsk - Code that sends telemetry in 1k2 AFSK X.25 format
- afsk - Code that sends telemetry in 1k2 AFSK X.25 format
- arduino - Sample Arduino sketches to show how payload sensors can be interfaced to CubeSat Simulator
- ax5043 - Source for a library of functions to communicate with the AX5043 and configure the AX5043.
- cw - Code that sends telemetry in CW (Morse code) using AO-7 format
- libs - External libraries
- python - Python code for reading I2C sensors for current and temperature
- spreadsheet - Spreadsheets and macros for analyzing the Simulator telemetry
- spreadsheet - Spreadsheets for decoding and analyzing the Simulator telemetry (see https://github.com/alanbjohnston/CubeSatSim/wiki/Decoding-Telemetry for details)
- wav - Wave audio files of CW or AFSK telemetry for listening or transmitting usng a CubeSat Simulator Lite
- demo.sh - a shell script to run the Simulator on boot using systemd (see https://github.com/alanbjohnston/CubeSatSim/wiki/Software-Install#autoboot-configuration for how to configure the Pi)
See the Wiki for more details
See the Wiki for more details https://github.com/alanbjohnston/CubeSatSim/wiki

@ -21,6 +21,7 @@
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include <time.h>
#include "ax25.h"
#include "ax5043.h"
#include "status.h"
@ -34,6 +35,8 @@ static size_t __tx_buf_idx = 0;
static uint8_t __tx_fifo_chunk[AX5043_FIFO_MAX_SIZE];
static uint32_t __tx_remaining = 0;
extern uint32_t tx_freq_hz;
/**
* FIFO command for the preamble. The third byte corresponds the length of
* the preamble and is set by the TX routine for every frame
@ -222,12 +225,11 @@ int ax5043_init(ax5043_conf_t *conf, uint32_t f_xtal, vco_mode_t vco) {
}
/* Setup TX only related parameters */
/*
ret = ax5043_conf_tx_path(conf);
if (ret) {
return ret;
}
*/
/* Set an internal copy for the ax5042_wait_for_transmit function */
__ax5043_conf = conf;
@ -256,7 +258,7 @@ int ax5043_conf_tx_path(ax5043_conf_t *conf) {
return ret;
}
ret = ax5043_set_tx_freq(conf, TX_FREQ_HZ);
ret = ax5043_set_tx_freq(conf, tx_freq_hz);
if (ret) {
return ret;
}
@ -449,7 +451,7 @@ int ax5043_set_tx_freq(ax5043_conf_t *conf, uint32_t freq) {
if (freq + 25000000 > prev_freq || freq - 25000000 < prev_freq) {
ax5043_autoranging(conf);
}
return PQWS_SUCCESS;
}
@ -614,23 +616,33 @@ int ax5043_autoranging(ax5043_conf_t *conf) {
val = BIT(4) | AX5043_VCOR_INIT;
ret = ax5043_spi_write_8(conf, pllranging_reg, val);
if (ret) {
printf("ERROR: AX5043 Autoranging Write Failure\n\n");
return ret;
}
usleep(10);
val = 0;
//val = 0;
/* Wait until the autoranging is complete */
while ((val & BIT(4)) == 0) {
int timeout = 0;
clock_t start = clock();
while (((val & BIT(4)) != 0) && !timeout ) { // changed to !=, since https://www.onsemi.com/pub/Collateral/AND9347-D.PDF says BIT(4) RNG START clears when autoranging done
ret = ax5043_spi_read_8(conf, &val, pllranging_reg);
if (ret) {
printf("ERROR: AX5043 Autoranging Read Failure\n\n");
return ret;
}
if ((clock() - start) > 1000000) {
timeout = 1;
}
}
if (val & BIT(5)) {
printf("ERROR: AX5043 Autoranging Error\n\n");
return -PQWS_AX5043_AUTORANGING_ERROR;
} else if (timeout) {
printf("ERROR: AX5043 Autoranging Timeout\n\n");
return -1;
}
return PQWS_SUCCESS;
}
@ -1059,7 +1071,9 @@ int ax5043_wait_for_transmit() {
/* tx is done */
__tx_frame_end(__ax5043_conf);
transmittedPostamble = 0;
printf("INFO: TX done\n");
#ifdef DEBUG_LOGGING
printf("INFO: TX done\n");
#endif
return PQWS_SUCCESS;
}
@ -1118,7 +1132,9 @@ int ax5043_wait_for_transmit() {
if (radiostate == 0) {
/* tx is done */
__tx_active = 0;
printf("INFO: TX done\n");
#ifdef DEBUG_LOGGING
printf("INFO: TX done\n");
#endif
}
}
}

@ -19,10 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
//#include <unistd.h> //Needed for I2C port
#include <fcntl.h> //Needed for I2C port
//#include <sys/ioctl.h> //Needed for I2C port
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
@ -36,8 +33,7 @@
#include <time.h>
#include "ina219.h"
// Put your callsign here
#define CALLSIGN "KU2Y"
#define CALLSIGN "" // Put your callsign here!
#define VBATT 15
#define ADC5 17
#define ADC6 18
@ -60,7 +56,6 @@
#define CURRENTV 1
#define POWER 2
#define VBATT 15
#define PLUS_X 0
#define PLUS_Y 1
#define PLUS_Z 2
@ -70,6 +65,8 @@
#define MINUS_Z 6
#define BUS 7
#define OFF -1
uint32_t tx_freq_hz = 434900000 + FREQUENCY_OFFSET;
uint32_t tx_channel = 0;
ax5043_conf_t hax5043;
ax25_conf_t hax25;
@ -109,71 +106,47 @@ float voltsBus[8];
float voltsShunt[8];
float current[8];
float power[8];
char src_addr[5] = "";
char dest_addr[5] = "CQ";
int main(void) {
int main(int argc, char *argv[]) {
if (argc > 1) {
strcpy(src_addr, argv[1]);
}
wiringPiSetup () ;
pinMode (0, OUTPUT) ;
int blink;
for (blink = 1; blink < 2 ;blink++)
for (blink = 1; blink < 4 ;blink++)
{
digitalWrite (0, HIGH) ; delay (500) ;
digitalWrite (0, LOW) ; delay (500) ;
}
// digitalWrite (0, HIGH) ;
setSpiChannel(SPI_CHANNEL);
setSpiSpeed(SPI_SPEED);
initializeSpi();
int tlm[7][5];
int i, j;
for (i = 1; i < 7; i++) {
for (j = 1; j < 5; j++) {
tlm[i][j] = 0;
}
}
timestamp = time(NULL);
int file_i2c;
//char *filenam1e = (char*)"/dev/i2c-3";
if ((file_i2c = open("/dev/i2c-3", O_RDWR)) < 0)
{
fprintf(stderr,"ERROR: /dev/ic2-3 bus not present\n");
tempSensor = -1;
} else
{
tempSensor = wiringPiI2CSetupInterface("/dev/i2c-3", 0x48);
}
digitalWrite (0, HIGH) ;
setSpiChannel(SPI_CHANNEL);
setSpiSpeed(SPI_SPEED);
initializeSpi();
int tlm[7][5];
memset(tlm, 0, sizeof tlm);
fprintf(stderr,"tempSensor: %d \n",tempSensor);
int arduinoI2C;
if ((arduinoI2C = open("/dev/i2c-0", O_RDWR)) < 0)
{
fprintf(stderr,"ERROR: /dev/i2c-0 bus not present\n");
} else {
arduinoI2C = wiringPiI2CSetupInterface("/dev/i2c-0", 0x4c);
fprintf(stderr,"arduinoI2C: %d\n", arduinoI2C);
if (arduinoI2C > 0) {
// for (blink = 1; blink < 20 ;blink++) {
sleep(1);
fprintf(stderr,"Arduio: %d \n", wiringPiI2CReadReg16(arduinoI2C,0));
sleep(1);
fprintf(stderr,"Arduio: %d \n", wiringPiI2CRead(arduinoI2C));
sleep(1);
printf("Arduio: %d \n", wiringPiI2CReadReg16(arduinoI2C,1));
sleep(1);
printf("Arduio: %d \n", wiringPiI2CReadReg16(arduinoI2C,2));
sleep(1);
// }
} else {
fprintf(stderr,"Arduino payload not present\n");
}
timestamp = time(NULL);
int file_i2c = access("/dev/i2c-3", W_OK | R_OK);
//char *filenam1e = (char*)"/dev/i2c-3";
if (file_i2c < 0)
{
fprintf(stderr,"ERROR: /dev/ic2-3 bus not present\n");
tempSensor = -1;
} else
{
tempSensor = wiringPiI2CSetupInterface("/dev/i2c-3", 0x48);
}
// new INA219 current reading code
#ifdef DEBUG_LOGGING
fprintf(stderr,"tempSensor: %d \n",tempSensor);
#endif
x_calValue = 4096; //8192;
x_powerMultiplier = 2;
@ -232,107 +205,163 @@ int main(void) {
sensor[MINUS_Y] = OFF;
sensor[MINUS_Z] = OFF;
}
}
int ret;
uint8_t data[1024];
}
init_rf();
// new INA219 current reading code
x_calValue = 8192;
x_powerMultiplier = 1;
x_currentDivider = 20;
config = INA219_CONFIG_BVOLTAGERANGE_16V |
INA219_CONFIG_GAIN_40MV |
INA219_CONFIG_BADCRES_12BIT |
INA219_CONFIG_SADCRES_12BIT_4S_2130US |
//INA219_CONFIG_SADCRES_12BIT_1S_532US |
INA219_CONFIG_MODE_SANDBVOLT_CONTINUOUS;
file_i2c = access("/dev/i2c-0", W_OK | R_OK);
if (file_i2c < 0)
{
fprintf(stderr,"ERROR: /dev/ic2-0 bus not present\n");
x_fd = -1; // Disable reading -X, -Y, and -Z telemetry
y_fd = -1;
z_fd = -1;
} else
{
x_fd = wiringPiI2CSetupInterface("/dev/i2c-0", 0x40);
y_fd = wiringPiI2CSetupInterface("/dev/i2c-0", 0x41);
z_fd = wiringPiI2CSetupInterface("/dev/i2c-0", 0x44);
#ifdef DEBUG_LOGGING
fprintf(stderr, "Opening of -X fd %d\n", x_fd);
fprintf(stderr, "Opening of -Y fd %d\n", y_fd);
fprintf(stderr, "Opening of -Z fd %d\n", z_fd);
#endif
}
int ret;
uint8_t data[1024];
tx_freq_hz -= tx_channel * 50000 + 85000; // subtracting rx offset of 90kHz
init_rf();
// ax25_init(&hax25, (uint8_t *) "CubeSatSim", '2', (uint8_t *) CALLSIGN, '2',
ax25_init(&hax25, (uint8_t *) "CubeSatSim", '1', (uint8_t *) CALLSIGN, '1',
AX25_PREAMBLE_LEN,
AX25_POSTAMBLE_LEN);
/* Infinite loop */
for (;;) {
sleep(2);
// send X.25 packet
// init_rf();
// ax25_init(&hax25, (uint8_t *) "CQ", '2', (uint8_t *) "DX", '2',
// AX25_PREAMBLE_LEN,
// AX25_POSTAMBLE_LEN);
fprintf(stderr,"INFO: Getting TLM Data\n");
get_tlm(tlm);
// ax25_init(&hax25, (uint8_t *) "CQ", '1', (uint8_t *) CALLSIGN, '1',
ax25_init(&hax25, (uint8_t *) dest_addr, '1', (uint8_t *) src_addr, '1',
AX25_PREAMBLE_LEN,
AX25_POSTAMBLE_LEN);
/* Infinite loop */
for (;;) {
sleep(1); // Delay 1 second
#ifdef DEBUG_LOGGING
fprintf(stderr,"INFO: Getting TLM Data\n");
#endif
get_tlm(tlm);
#ifdef DEBUG_LOGGING
fprintf(stderr,"INFO: Preparing X.25 packet\n");
#endif
char str[1000];
char tlm_str[1000];
char header_str[] = "\x03\xf0hi hi ";
strcpy(str, header_str);
// printf("%s-1>CQ-1:hi hi ", CALLSIGN);
printf("%s-1>%s-1:hi hi ", (uint8_t *)src_addr, (uint8_t *)dest_addr);
int channel;
for (channel = 1; channel < 7; channel++) {
#ifdef DEBUG_LOGGING
printf("%d %d %d %d \n", tlm[channel][1], tlm[channel][2], tlm[channel][3], tlm[channel][4]);
#endif
sprintf(tlm_str, "%d%d%d %d%d%d %d%d%d %d%d%d ",
channel, upper_digit(tlm[channel][1]), lower_digit(tlm[channel][1]),
channel, upper_digit(tlm[channel][2]), lower_digit(tlm[channel][2]),
channel, upper_digit(tlm[channel][3]), lower_digit(tlm[channel][3]),
channel, upper_digit(tlm[channel][4]), lower_digit(tlm[channel][4]));
printf("%s",tlm_str);
strcat(str, tlm_str);
}
fprintf(stderr,"INFO: Preparing X.25 packet\n");
char str[1000];
char tlm_str[1000];
char header_str[] = "\x03\x0fhi hi ";
strcpy(str, header_str);
/*
int channel;
for (channel = 1; channel < 7; channel++) {
// printf("%d %d %d %d \n", tlm[channel][1], tlm[channel][2], tlm[channel][3], tlm[channel][4]);
sprintf(tlm_str, "%d%d%d %d%d%d %d%d%d %d%d%d ",
channel, upper_digit(tlm[channel][1]), lower_digit(tlm[channel][1]),
channel, upper_digit(tlm[channel][2]), lower_digit(tlm[channel][2]),
channel, upper_digit(tlm[channel][3]), lower_digit(tlm[channel][3]),
channel, upper_digit(tlm[channel][4]), lower_digit(tlm[channel][4]));
// printf("%s \n",tlm_str);
strcat(str, tlm_str);
}
*/
if (arduinoI2C > 0) { /* Read Arduino payload */
for(int reg = 0; reg < 4; reg++) {
sprintf(tlm_str, " %04x",wiringPiI2CReadReg16(arduinoI2C,reg));
#ifdef DEBUG_LOGGING
printf("%s \n",tlm_str);
#endif
strcat(str,tlm_str); /* Append payload telemetry */
printf("%s",tlm_str);
usleep(100000);
}
}
printf("\n");
digitalWrite (0, LOW);
/*
char cmdbuffer[1000];
char cmdbuffer[1000];
if (charging) {
FILE* file1 = popen("/home/pi/mopower/mpcmd LED_STAT=1", "r");
fgets(cmdbuffer, 999, file1);
pclose(file1);
if (charging) {
FILE* file1 = popen("/home/pi/mopower/mpcmd LED_STAT=1", "r");
fgets(cmdbuffer, 999, file1);
pclose(file1);
// printf("LED state: %s\n", cmdbuffer);
}
}
*/
fprintf(stderr,"INFO: Transmitting X.25 packet\n");
memcpy(data, str, strnlen(str, 256));
ret = ax25_tx_frame(&hax25, &hax5043, data, strnlen(str, 256));
if (ret) {
fprintf(stderr,
"ERROR: Failed to transmit AX.25 frame with error code %d\n",
ret);
exit(EXIT_FAILURE);
}
ax5043_wait_for_transmit();
#ifdef DEBUG_LOGGING
fprintf(stderr,"INFO: Transmitting X.25 packet\n");
#endif
memcpy(data, str, strnlen(str, 256));
ret = ax25_tx_frame(&hax25, &hax5043, data, strnlen(str, 256));
if (ret) {
fprintf(stderr,
"ERROR: Failed to transmit AX.25 frame with error code %d\n",
ret);
exit(EXIT_FAILURE);
}
ax5043_wait_for_transmit();
digitalWrite (0, HIGH);
/*
FILE* file2 = popen("/home/pi/mopower/mpcmd LED_STAT=0", "r");
fgets(cmdbuffer, 999, file2);
pclose(file2);
FILE* file2 = popen("/home/pi/mopower/mpcmd LED_STAT=0", "r");
fgets(cmdbuffer, 999, file2);
pclose(file2);
// printf("LED state: %s\n", cmdbuffer);
*/
if (ret) {
fprintf(stderr,
"ERROR: Failed to transmit entire AX.25 frame with error code %d\n",
ret);
exit(EXIT_FAILURE);
}
if (ret) {
fprintf(stderr,
"ERROR: Failed to transmit entire AX.25 frame with error code %d\n",
ret);
exit(EXIT_FAILURE);
}
}
return 0;
return 0;
}
static void init_rf() {
int ret;
int ret;
#ifdef DEBUG_LOGGING
fprintf(stderr,"Initializing AX5043\n");
ret = ax5043_init(&hax5043, XTAL_FREQ_HZ, VCO_INTERNAL);
if (ret != PQWS_SUCCESS) {
fprintf(stderr,
"ERROR: Failed to initialize AX5043 with error code %d\n", ret);
exit(EXIT_FAILURE);
}
#endif
ret = ax5043_init(&hax5043, XTAL_FREQ_HZ, VCO_INTERNAL);
if (ret != PQWS_SUCCESS) {
fprintf(stderr,
"ERROR: Failed to initialize AX5043 with error code %d\n", ret);
exit(EXIT_FAILURE);
}
}
// Returns lower digit of a number which must be less than 99
@ -358,61 +387,30 @@ int upper_digit(int number) {
fprintf(stderr,"ERROR: Not a digit in upper_digit!\n");
return digit;
}
int get_tlm(int tlm[][5]) {
// Reading I2C voltage and current sensors
char cmdbuffer[1000];
FILE* file = popen("sudo python /home/pi/CubeSatSim/python/readcurrent.py 2>&1", "r");
fgets(cmdbuffer, 999, file);
pclose(file);
#ifdef DEBUG_LOGGING
fprintf(stderr,"I2C Sensor data: %s\n", cmdbuffer);
#endif
// Reading I2C voltage and current sensors
char cmdbuffer[1000];
FILE* file = popen("sudo python /home/pi/CubeSatSim/python/readcurrent.py 2>&1", "r");
fgets(cmdbuffer, 999, file);
pclose(file);
fprintf(stderr,"I2C Sensor data: %s\n", cmdbuffer);
char ina219[16][20]; // voltage, currents, and power from the INA219 current sensors x4a, x40, x41, x44, and x45.
int i = 0;
char * data2 = strtok (cmdbuffer," ");
while (data2 != NULL) {
strcpy(ina219[i], data2);
// printf ("ina219[%d]=%s\n",i,ina219[i]);
data2 = strtok (NULL, " ");
i++;
}
// Reading MoPower telemetry info
/*
file = popen("/home/pi/mopower/mpcmd show data", "r");
fgets(cmdbuffer, 999, file);
pclose(file);
// printf("MoPower data: %s\n", cmdbuffer);
char mopower[64][14];
// char str[] ="- This, a sample string.";
char * pch;
// printf ("Splitting string \"%s\" into tokens:\n",str);
// pch = strtok (str," ");
i = 0;
pch = strtok (cmdbuffer," ,.-");
while (pch != NULL)
{
strcpy(mopower[i], pch);
// printf ("mopwer[%d]=%s\n",i,mopower[i]); // pch);
pch = strtok (NULL, " ");
i++;
}
printf("Battery voltage = %s\n", mopower[16]);
if (strtof(mopower[17],NULL) > -0.5) {
charging = 1;
printf("Charging on\n");
}
else {
charging = 0;
printf("Charging off\n");
char ina219[16][20]; // voltage, currents, and power from the INA219 current sensors x4a, x40, x41, x44, and x45.
int i = 0;
char * data2 = strtok (cmdbuffer," ");
while (data2 != NULL) {
strcpy(ina219[i], data2);
#ifdef DEBUG_LOGGING
printf ("ina219[%d]=%s\n",i,ina219[i]);
#endif
data2 = strtok (NULL, " ");
i++;
}
}
*/
// read i2c current sensors //
double x_current = 0, voltage = 0, x_power = 0, y_current = 0, y_voltage, y_power = 0, z_current = 0, z_voltage = 0, z_power = 0;
if (x_fd != -1) {
@ -437,8 +435,9 @@ int get_tlm(int tlm[][5]) {
x_current = getCurrent_mA(x_fd);
x_power = getPower_mW(x_fd);
voltage = shuntVolts + busVolts;
printf("-X 0x40 busVolts %4.2f shuntVolts %4.2f current %4.2f power %4.2f \n", busVolts, shuntVolts, x_current, x_power);
#ifdef DEBUG_LOGGING
printf("-X 0x40 busVolts %4.2f shuntVolts %4.2f current %4.2f power %4.2f \n", busVolts, shuntVolts, x_current, x_power);
#endif
}
int count;
for (count = 0; count < 7; count++)
@ -458,8 +457,10 @@ int get_tlm(int tlm[][5]) {
current[count] = 0;
power[count] = 0;
}
printf(" sensor[%d] voltsBus %4.2f voltsShunt %4.2f current %4.2f power %4.2f \n",
count, voltsBus[count], voltsShunt[count], current[count], power[count]);
#ifdef DEBUG_LOGGING
printf(" sensor[%d] voltsBus %4.2f voltsShunt %4.2f current %4.2f power %4.2f \n",
count, voltsBus[count], voltsShunt[count], current[count], power[count]);
#endif
}
if (sensor[BUS] != OFF) // For MoPower V2 INA219
{
@ -476,9 +477,10 @@ int get_tlm(int tlm[][5]) {
current[BUS] = 0;
power[BUS] = 0;
}
printf(" sensor[%d] voltsBus %4.2f voltsShunt %4.2f current %4.2f power %4.2f \n",
#ifdef DEBUG_LOGGING
printf(" sensor[%d] voltsBus %4.2f voltsShunt %4.2f current %4.2f power %4.2f \n",
count, voltsBus[BUS], voltsShunt[BUS], current[BUS], power[BUS]);
#endif
@ -519,25 +521,44 @@ int get_tlm(int tlm[][5]) {
tlm[3][A] = abs((int)((strtof(ina219[SENSOR_45 + VOLTAGE], NULL) * 10) - 65.5) % 100);
tlm[3][B] = (int)(strtof(ina219[SENSOR_4A + VOLTAGE], NULL) * 10.0) % 100; // 5V supply to Pi
if (tempSensor != -1) {
int tempValue = wiringPiI2CReadReg16(tempSensor, 0);
// printf("Read: %x\n", tempValue);
uint8_t upper = (uint8_t) (tempValue >> 8);
uint8_t lower = (uint8_t) (tempValue & 0xff);
float temp = (float)lower + ((float)upper / 0x100);
tlm[4][A] = (int)((95.8 - temp)/1.48 + 0.5) % 100;
}
tlm[6][B] = 0 ;
tlm[6][D] = 49 + rand() % 3;
if (tempSensor != -1) {
int tempValue = wiringPiI2CReadReg16(tempSensor, 0);
#ifdef DEBUG_LOGGING
printf("Temp Sensor Read: %x\n", tempValue);
#endif
uint8_t upper = (uint8_t) (tempValue >> 8);
uint8_t lower = (uint8_t) (tempValue & 0xff);
float temp = (float)lower + ((float)upper / 0x100);
tlm[4][A] = (int)((95.8 - temp)/1.48 + 0.5) % 100;
}
FILE *cpuTempSensor = fopen("/sys/class/thermal/thermal_zone0/temp", "r");
if (cpuTempSensor) {
double cpuTemp;
fscanf (cpuTempSensor, "%lf", &cpuTemp);
cpuTemp /= 1000;
#ifdef DEBUG_LOGGING
printf("CPU Temp Read: %6.1f\n", cpuTemp);
#endif
tlm[4][B] = (int)((95.8 - cpuTemp)/1.48 + 0.5) % 100;
fclose (cpuTempSensor);
}
tlm[6][B] = 0 ;
tlm[6][D] = 49 + rand() % 3;
#ifdef DEBUG_LOGGING
// Display tlm
int k, j;
for (k = 1; k < 7; k++) {
for (j = 1; j < 5; j++) {
printf(" %2d ", tlm[k][j]);
}
printf("\n");
for (j = 1; j < 5; j++) {
printf(" %2d ", tlm[k][j]);
}
printf("\n");
}
return 0;
#endif
return 0;
}

@ -0,0 +1,12 @@
This code is used on an Arduino acting as a payload to the CubeSat Simulator.
The Arduino is on the Raspberry Pi i2c bus 0, address 0x4b
The 2c_master_register_read.ino code emulates the register reading of the Raspberry Pi. You can connect two Arduinos back-to-back to show this.
The i2c_slave_register_read.ino code responds to register reads from a bus master such as another Arduino or the Raspberry Pi
The i2c_slave_with_sensor_reading.ino code responds to register reads from a bus master and has placeholders for reading a sensor.
See https://github.com/alanbjohnston/CubeSatSim/wiki/Arduino-Payload for ideas on using the Arduino as a payload for the CubeSat Simulator.

@ -0,0 +1,55 @@
// Wire Master Reader
// by Nicholas Zambetti <http://www.zambetti.com>
// Demonstrates use of the Wire library
// Reads data from an I2C/TWI slave device
// Refer to the "Wire Slave Sender" example for use with this
// Created 29 March 2006
// This example code is in the public domain.
// modified by Alan Johnston to show reading registers 0 - 3
// code based on https://forum.arduino.cc/index.php?topic=211587.0
//
// This code is to simulate the Raspberry Pi acting as I2C bus master
#include <Wire.h>
#define I2C_ADDRESS 0x4B
#define REGISTER_0 0x00
#define REGISTER_1 0x01
#define REGISTER_2 0x02
#define REGISTER_3 0x03
uint8_t reg; // I2C read register
void setup() {
Wire.begin(); // join i2c bus (address optional for master)
Serial.begin(9600); // start serial for output
pinMode(LED_BUILTIN, OUTPUT);
Serial.println("Starting");
}
void loop() {
for (reg=0; reg < 4; reg++) {
delay(5000);
digitalWrite(LED_BUILTIN, HIGH);
Wire.beginTransmission(I2C_ADDRESS);
Wire.write(reg);
Wire.endTransmission();
delay(100);
digitalWrite(LED_BUILTIN, LOW);
Wire.requestFrom(I2C_ADDRESS, 2); // request 2 bytes from I2C device
byte LSB = Wire.read();
byte MSB = Wire.read();
uint16_t register_value = ((MSB << 8) | LSB);
Serial.print("Read ");
Serial.print(register_value, HEX); // display register value in HEXADECIMAL
Serial.print(" from register ");
Serial.println(reg);
}
}

@ -0,0 +1,75 @@
// Arduino I2C slave for reading 16 bit registers
//
// by Alan Johnston
//
// based on
#include <Wire.h>
#define I2C_ADDRESS 0x4B
#define REGISTER_0 0x00
#define REGISTER_1 0x01
#define REGISTER_2 0x02
#define REGISTER_3 0x03
uint8_t reg; // I2C read register
unsigned int reg_0_value, reg_1_value, reg_2_value, reg_3_value; // register variables
void setup() {
Wire.begin(I2C_ADDRESS);
Wire.setClock(400000); // set I2C clock for full speed
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);
Wire.onRequest(requestEvent);
Wire.onReceive(receiveEvent);
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600); // start serial for output
Serial.println();
Serial.println("Starting");
}
void loop() {
Serial.println("Waiting for register read");
// Read from sensor here and set register variables
reg_0_value = 57007; // decimal values of registers for testing
reg_1_value = 48879;
reg_2_value = 3790;
reg_3_value = 4613;
delay(5000);
}
void receiveEvent(int bytes) {
// Read the first byte to determine which register is concerned
reg = Wire.read();
Serial.print("Read register ");
Serial.println(reg);
}
void requestEvent() {
// Read from the register variable to know what to send back
digitalWrite(LED_BUILTIN, HIGH);
if (reg == REGISTER_0) {
Wire.write((uint8_t *)&reg_0_value, sizeof(reg_0_value));
Serial.print("Writing value ");
Serial.println(reg_0_value, DEC); // writing register value in DECIMAL format
} else if (reg == REGISTER_1) {
Wire.write((uint8_t *)&reg_1_value, sizeof(reg_1_value));
Serial.print("Writing value ");
Serial.println(reg_1_value, DEC);
} else if (reg == REGISTER_2) {
Wire.write((uint8_t *)&reg_2_value, sizeof(reg_2_value));
Serial.print("Writing value ");
Serial.println(reg_2_value, DEC);
} else if (reg == REGISTER_3) {
Wire.write((uint8_t *)&reg_3_value, sizeof(reg_3_value));
Serial.print("Writing value ");
Serial.println(reg_3_value, DEC);
} else {
Serial.println("Unknown register");
}
delay(50);
digitalWrite(LED_BUILTIN, LOW);
}

@ -0,0 +1,73 @@
#include <Wire.h>
#define REGISTER_0 0x00
#define REGISTER_1 0x01
#define REGISTER_2 0x02
#define REGISTER_3 0x03
#define I2C_ADDRESS_SELF 0x4B
unsigned int reg_0_value = 41151;
unsigned int reg_1_value = 0;
unsigned int reg_2_value = 0;
unsigned int reg_3_value = 0;
uint8_t master_reg; // I2C master read register
uint8_t slave_reg; // I2C slave read register
void setup()
{
Serial.begin(9600); //Begins Serial communication
Serial.println("Setup for sensor");
Wire.begin(I2C_ADDRESS_SELF); // join i2c bus
Wire.setClock(400000); // set I2C clock for full speed
Serial.begin(9600); // start serial for output
digitalWrite(A4, LOW);
digitalWrite(A5, LOW);
Wire.onRequest(requestEvent);
Wire.onReceive(receiveEvent);
pinMode(LED_BUILTIN, OUTPUT);
Serial.println("Starting");
}
void loop()
{
delay(1000);
Serial.println("Read sensor value");
reg_0_value = 1; // set register 0 value to the sensor value
reg_1_value += 1; // increment a count of how many values read
}
void receiveEvent(int bytes) {
// Slave reads the first byte to determine which register is concerned
slave_reg = Wire.read();
Serial.print("Slave read register ");
Serial.println(slave_reg);
}
void requestEvent() {
// Slave uses the the register variable to know what to send back
digitalWrite(LED_BUILTIN, HIGH);
if (slave_reg == REGISTER_0) {
Wire.write((uint8_t *)&reg_0_value, sizeof(reg_0_value));
Serial.print("Slave writing value ");
Serial.println(reg_0_value);
} else if (slave_reg == REGISTER_1) {
Wire.write((uint8_t *)&reg_1_value, sizeof(reg_1_value));
Serial.print("Slave writing value ");
Serial.println(reg_1_value);
} else if (slave_reg == REGISTER_2) {
Wire.write((uint8_t *)&reg_2_value, sizeof(reg_2_value));
Serial.print("Slave writing value ");
Serial.println(reg_2_value);
} else if (slave_reg == REGISTER_3) {
Wire.write((uint8_t *)&reg_3_value, sizeof(reg_3_value));
Serial.print("Slave writing value ");
Serial.println(reg_3_value);
} else {
Serial.println("Slave unknown register");
}
delay(50);
digitalWrite(LED_BUILTIN, LOW);
}

@ -62,6 +62,8 @@
#define CURRENT 1
#define POWER 2
uint32_t tx_freq_hz = 440390000;
long int timestamp = 0;
extern uint8_t axradio_rxbuffer[];
void *transmit(void *arg);

@ -1,9 +1,8 @@
#!/bin/bash
exit 0
echo -e "\nDemo of CubeSatSim sends AFSK telemetry at 440 MHz continuously\n\n"
sleep 60
sleep 30
#echo 'sleep over' >> /home/pi/CubeSatSim/log.txt
@ -12,7 +11,7 @@ echo $(date '+%Y %b %d %H:%M') Starting Hostname $HOSTNAME >> /home/pi/CubeSatS
/home/pi/CubeSatSim/radioafsk >> /home/pi/CubeSatSim/log.txt
#/home/pi/DigitalTxRxRPi/testafsktx >> /home/pi/CubeSatSim/log.txt
#echo $(date '+%Y %b %d %H:%M') Stopping Hostname $HOSTNAME >> /home/pi/CubeSatSim/log.txt
echo $(date '+%Y %b %d %H:%M') Stopping Hostname $HOSTNAME >> /home/pi/CubeSatSim/log.txt
#/home/pi/mopower/mpcmd LED_STAT=0
#sleep 30

@ -0,0 +1,17 @@
These files relate to the optional Raspberry Pi Ground Station.
The Ground Station can be installed on any Windows or Linux PC or laptop, but it does require drivers to be installed (RTL-SDR)
and virtual audio cable (for sound) to be installed. This requires administrator privileges on the computer.
A simpler approach perhaps well suited to school environments is to use a dedicated Raspberry Pi Ground Station
The Raspberry Pi Ground Station can be used as a stand-alone ground station for receiving, decoding, and analyzing telemetry
from the CubeSat Simulator if an HDMI monitor, USB keyboard, and USB mouse are plugged into the Pi.
Alternatively, with another computer or laptop that has SSH access to the Pi, the telemetry can be received and decoded on the Pi
and analyzed on the other computer or laptop.
Also, a web SDR known as OpenWebRX can be run on the Pi so that other PCs or laptops on the same WiFi can use the SDR to tune the
telemetry with only a web browser.
See https://github.com/alanbjohnston/CubeSatSim/wiki/Raspberry-Pi-Ground-Station-Setup for the details.

@ -0,0 +1,9 @@
#!/bin/bash
# script to auto decode APRS packets on 2m
# kill openwebrx if it is running
ps -ef | grep rtl | grep -v grep | awk '{print $2}' | sudo xargs kill
echo -e "Script to auto decode APRS packets on 144.390 MHz\n"
sudo rtl_fm -f 144.39M -s 22050 -g 48 - | multimon-ng -a AFSK1200 -A -t raw -

@ -0,0 +1,216 @@
# -*- coding: utf-8 -*-
"""
config_webrx: configuration options for OpenWebRX
This file is part of OpenWebRX,
an open-source SDR receiver software with a web UI.
Copyright (c) 2013-2015 by Andras Retzler <randras@sdr.hu>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
In addition, as a special exception, the copyright holders
state that config_rtl.py and config_webrx.py are not part of the
Corresponding Source defined in GNU AGPL version 3 section 1.
(It means that you do not have to redistribute config_rtl.py and
config_webrx.py if you make any changes to these two configuration files,
and use them for running your web service with OpenWebRX.)
"""
# NOTE: you can find additional information about configuring OpenWebRX in the Wiki:
# https://github.com/simonyiszk/openwebrx/wiki
# ==== Server settings ====
web_port=8073
server_hostname="localhost" # If this contains an incorrect value, the web UI may freeze on load (it can't open websocket)
max_clients=20
# ==== Web GUI configuration ====
receiver_name="AMSAT CubeSat Simulator Ground Station"
receiver_location=""
receiver_qra=""
receiver_asl=0
receiver_ant="monopole"
receiver_device="RTL-SDR"
receiver_admin="ku2y@amsat.org"
receiver_gps=(39.0302,-77.0747)
photo_height=350
photo_title="Panorama of Budapest from Schönherz Zoltán Dormitory"
photo_desc="""
You can add your own background photo and receiver information.<br />
Receiver is operated by: <a href="mailto:%[RX_ADMIN]">%[RX_ADMIN]</a><br/>
Device: %[RX_DEVICE]<br />
Antenna: %[RX_ANT]<br />
Website: <a href="http://localhost" target="_blank">http://localhost</a>
"""
# ==== sdr.hu listing ====
# If you want your ham receiver to be listed publicly on sdr.hu, then take the following steps:
# 1. Register at: http://sdr.hu/register
# 2. You will get an unique key by email. Copy it and paste here:
sdrhu_key = ""
# 3. Set this setting to True to enable listing:
sdrhu_public_listing = False
# ==== DSP/RX settings ====
fft_fps=9
fft_size=4096 #Should be power of 2
fft_voverlap_factor=0.3 #If fft_voverlap_factor is above 0, multiple FFTs will be used for creating a line on the diagram.
samp_rate = 250000
# samp_rate = 2400000
center_freq = 440450000
rf_gain = 37 #in dB. For an RTL-SDR, rf_gain=0 will set the tuner to auto gain mode, else it will be in manual gain mode.
ppm = 0
audio_compression="adpcm" #valid values: "adpcm", "none"
fft_compression="adpcm" #valid values: "adpcm", "none"
digimodes_enable=False # True #Decoding digimodes come with higher CPU usage.
digimodes_fft_size=1024
start_rtl_thread=True
"""
Note: if you experience audio underruns while CPU usage is 100%, you can:
- decrease `samp_rate`,
- set `fft_voverlap_factor` to 0,
- decrease `fft_fps` and `fft_size`,
- limit the number of users by decreasing `max_clients`.
"""
# ==== I/Q sources ====
# (Uncomment the appropriate by removing # characters at the beginning of the corresponding lines.)
#################################################################################################
# Is my SDR hardware supported? #
# Check here: https://github.com/simonyiszk/openwebrx/wiki#guides-for-receiver-hardware-support #
#################################################################################################
# You can use other SDR hardware as well, by giving your own command that outputs the I/Q samples... Some examples of configuration are available here (default is RTL-SDR):
# >> RTL-SDR via rtl_sdr
start_rtl_command="rtl_sdr -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm)
format_conversion="csdr convert_u8_f"
#lna_gain=8
#rf_amp=1
#start_rtl_command="hackrf_transfer -s {samp_rate} -f {center_freq} -g {rf_gain} -l{lna_gain} -a{rf_amp} -r-".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm, rf_amp=rf_amp, lna_gain=lna_gain)
#format_conversion="csdr convert_s8_f"
"""
To use a HackRF, compile the HackRF host tools from its "stdout" branch:
git clone https://github.com/mossmann/hackrf/
cd hackrf
git fetch
git checkout origin/stdout
cd host
mkdir build
cd build
cmake .. -DINSTALL_UDEV_RULES=ON
make
sudo make install
"""
# >> Sound card SDR (needs ALSA)
# I did not have the chance to properly test it.
#samp_rate = 96000
#start_rtl_command="arecord -f S16_LE -r {samp_rate} -c2 -".format(samp_rate=samp_rate)
#format_conversion="csdr convert_s16_f | csdr gain_ff 30"
# >> /dev/urandom test signal source
# samp_rate = 2400000
# start_rtl_command="cat /dev/urandom | (pv -qL `python -c 'print int({samp_rate} * 2.2)'` 2>&1)".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate)
# format_conversion="csdr convert_u8_f"
# >> Pre-recorded raw I/Q file as signal source
# You will have to correctly specify: samp_rate, center_freq, format_conversion in order to correctly play an I/Q file.
#start_rtl_command="(while true; do cat my_iq_file.raw; done) | csdr flowcontrol {sr} 20 ".format(sr=samp_rate*2*1.05)
#format_conversion="csdr convert_u8_f"
#>> The rx_sdr command works with a variety of SDR harware: RTL-SDR, HackRF, SDRplay, UHD, Airspy, Red Pitaya, audio devices, etc.
# It will auto-detect your SDR hardware if the following tools are installed:
# * the vendor provided driver and library,
# * the vendor-specific SoapySDR wrapper library,
# * and SoapySDR itself.
# Check out this article on the OpenWebRX Wiki: https://github.com/simonyiszk/openwebrx/wiki/Using-rx_tools-with-OpenWebRX/
#start_rtl_command="rx_sdr -F CF32 -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm)
#format_conversion=""
# >> gr-osmosdr signal source using GNU Radio (follow this guide: https://github.com/simonyiszk/openwebrx/wiki/Using-GrOsmoSDR-as-signal-source)
#start_rtl_command="cat /tmp/osmocom_fifo"
#format_conversion=""
# ==== Misc settings ====
shown_center_freq = center_freq #you can change this if you use an upconverter
client_audio_buffer_size = 5
#increasing client_audio_buffer_size will:
# - also increase the latency
# - decrease the chance of audio underruns
start_freq = center_freq
start_mod = "nfm" #nfm, am, lsb, usb, cw
iq_server_port = 4951 #TCP port for ncat to listen on. It will send I/Q data over its connections, for internal use in OpenWebRX. It is only accessible from the localhost by default.
#access_log = "~/openwebrx_access.log"
# ==== Color themes ====
#A guide is available to help you set these values: https://github.com/simonyiszk/openwebrx/wiki/Calibrating-waterfall-display-levels
### default theme by teejez:
waterfall_colors = "[0x000000ff,0x0000ffff,0x00ffffff,0x00ff00ff,0xffff00ff,0xff0000ff,0xff00ffff,0xffffffff]"
waterfall_min_level = -88 #in dB
waterfall_max_level = -20
waterfall_auto_level_margin = (5, 40)
### old theme by HA7ILM:
#waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]"
#waterfall_min_level = -115 #in dB
#waterfall_max_level = 0
#waterfall_auto_level_margin = (20, 30)
##For the old colors, you might also want to set [fft_voverlap_factor] to 0.
#Note: When the auto waterfall level button is clicked, the following happens:
# [waterfall_min_level] = [current_min_power_level] - [waterfall_auto_level_margin[0]]
# [waterfall_max_level] = [current_max_power_level] + [waterfall_auto_level_margin[1]]
#
# ___|____________________________________|____________________________________|____________________________________|___> signal power
# \_waterfall_auto_level_margin[0]_/ |__ current_min_power_level | \_waterfall_auto_level_margin[1]_/
# current_max_power_level __|
# 3D view settings
mathbox_waterfall_frequency_resolution = 128 #bins
mathbox_waterfall_history_length = 10 #seconds
mathbox_waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]"
# === Experimental settings ===
#Warning! The settings below are very experimental.
csdr_dynamic_bufsize = False # This allows you to change the buffering mode of csdr.
csdr_print_bufsizes = False # This prints the buffer sizes used for csdr processes.
csdr_through = False # Setting this True will print out how much data is going into the DSP chains.
nmux_memory = 50 #in megabytes. This sets the approximate size of the circular buffer used by nmux.
#Look up external IP address automatically from icanhazip.com, and use it as [server_hostname]
"""
print "[openwebrx-config] Detecting external IP address..."
import urllib2
server_hostname=urllib2.urlopen("http://icanhazip.com").read()[:-1]
print "[openwebrx-config] External IP address detected:", server_hostname
"""

@ -0,0 +1,216 @@
# -*- coding: utf-8 -*-
"""
config_webrx: configuration options for OpenWebRX
This file is part of OpenWebRX,
an open-source SDR receiver software with a web UI.
Copyright (c) 2013-2015 by Andras Retzler <randras@sdr.hu>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
In addition, as a special exception, the copyright holders
state that config_rtl.py and config_webrx.py are not part of the
Corresponding Source defined in GNU AGPL version 3 section 1.
(It means that you do not have to redistribute config_rtl.py and
config_webrx.py if you make any changes to these two configuration files,
and use them for running your web service with OpenWebRX.)
"""
# NOTE: you can find additional information about configuring OpenWebRX in the Wiki:
# https://github.com/simonyiszk/openwebrx/wiki
# ==== Server settings ====
web_port=8073
server_hostname="localhost" # If this contains an incorrect value, the web UI may freeze on load (it can't open websocket)
max_clients=20
# ==== Web GUI configuration ====
receiver_name="ARISS Ground Station"
receiver_location=""
receiver_qra=""
receiver_asl=0
receiver_ant="monopole"
receiver_device="RTL-SDR"
receiver_admin="ku2y@amsat.org"
receiver_gps=(39.0302,-77.0747)
photo_height=350
photo_title="ARISS - Amateur Radio on the International Space Station"
photo_desc="""
You can add your own background photo and receiver information.<br />
Receiver is operated by: <a href="mailto:%[RX_ADMIN]">%[RX_ADMIN]</a><br/>
Device: %[RX_DEVICE]<br />
Antenna: %[RX_ANT]<br />
Website: <a href="http://localhost" target="_blank">http://localhost</a>
"""
# ==== sdr.hu listing ====
# If you want your ham receiver to be listed publicly on sdr.hu, then take the following steps:
# 1. Register at: http://sdr.hu/register
# 2. You will get an unique key by email. Copy it and paste here:
sdrhu_key = ""
# 3. Set this setting to True to enable listing:
sdrhu_public_listing = False
# ==== DSP/RX settings ====
fft_fps=9
fft_size=4096 #Should be power of 2
fft_voverlap_factor=0.3 #If fft_voverlap_factor is above 0, multiple FFTs will be used for creating a line on the diagram.
#samp_rate = 250000
samp_rate = 2400000
center_freq = 107000000
rf_gain = 37 #in dB. For an RTL-SDR, rf_gain=0 will set the tuner to auto gain mode, else it will be in manual gain mode.
ppm = 0
audio_compression="adpcm" #valid values: "adpcm", "none"
fft_compression="adpcm" #valid values: "adpcm", "none"
digimodes_enable=False # True #Decoding digimodes come with higher CPU usage.
digimodes_fft_size=1024
start_rtl_thread=True
"""
Note: if you experience audio underruns while CPU usage is 100%, you can:
- decrease `samp_rate`,
- set `fft_voverlap_factor` to 0,
- decrease `fft_fps` and `fft_size`,
- limit the number of users by decreasing `max_clients`.
"""
# ==== I/Q sources ====
# (Uncomment the appropriate by removing # characters at the beginning of the corresponding lines.)
#################################################################################################
# Is my SDR hardware supported? #
# Check here: https://github.com/simonyiszk/openwebrx/wiki#guides-for-receiver-hardware-support #
#################################################################################################
# You can use other SDR hardware as well, by giving your own command that outputs the I/Q samples... Some examples of configuration are available here (default is RTL-SDR):
# >> RTL-SDR via rtl_sdr
start_rtl_command="rtl_sdr -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm)
format_conversion="csdr convert_u8_f"
#lna_gain=8
#rf_amp=1
#start_rtl_command="hackrf_transfer -s {samp_rate} -f {center_freq} -g {rf_gain} -l{lna_gain} -a{rf_amp} -r-".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm, rf_amp=rf_amp, lna_gain=lna_gain)
#format_conversion="csdr convert_s8_f"
"""
To use a HackRF, compile the HackRF host tools from its "stdout" branch:
git clone https://github.com/mossmann/hackrf/
cd hackrf
git fetch
git checkout origin/stdout
cd host
mkdir build
cd build
cmake .. -DINSTALL_UDEV_RULES=ON
make
sudo make install
"""
# >> Sound card SDR (needs ALSA)
# I did not have the chance to properly test it.
#samp_rate = 96000
#start_rtl_command="arecord -f S16_LE -r {samp_rate} -c2 -".format(samp_rate=samp_rate)
#format_conversion="csdr convert_s16_f | csdr gain_ff 30"
# >> /dev/urandom test signal source
# samp_rate = 2400000
# start_rtl_command="cat /dev/urandom | (pv -qL `python -c 'print int({samp_rate} * 2.2)'` 2>&1)".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate)
# format_conversion="csdr convert_u8_f"
# >> Pre-recorded raw I/Q file as signal source
# You will have to correctly specify: samp_rate, center_freq, format_conversion in order to correctly play an I/Q file.
#start_rtl_command="(while true; do cat my_iq_file.raw; done) | csdr flowcontrol {sr} 20 ".format(sr=samp_rate*2*1.05)
#format_conversion="csdr convert_u8_f"
#>> The rx_sdr command works with a variety of SDR harware: RTL-SDR, HackRF, SDRplay, UHD, Airspy, Red Pitaya, audio devices, etc.
# It will auto-detect your SDR hardware if the following tools are installed:
# * the vendor provided driver and library,
# * the vendor-specific SoapySDR wrapper library,
# * and SoapySDR itself.
# Check out this article on the OpenWebRX Wiki: https://github.com/simonyiszk/openwebrx/wiki/Using-rx_tools-with-OpenWebRX/
#start_rtl_command="rx_sdr -F CF32 -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm)
#format_conversion=""
# >> gr-osmosdr signal source using GNU Radio (follow this guide: https://github.com/simonyiszk/openwebrx/wiki/Using-GrOsmoSDR-as-signal-source)
#start_rtl_command="cat /tmp/osmocom_fifo"
#format_conversion=""
# ==== Misc settings ====
shown_center_freq = center_freq #you can change this if you use an upconverter
client_audio_buffer_size = 5
#increasing client_audio_buffer_size will:
# - also increase the latency
# - decrease the chance of audio underruns
start_freq = center_freq
start_mod = "nfm" #nfm, am, lsb, usb, cw
iq_server_port = 4951 #TCP port for ncat to listen on. It will send I/Q data over its connections, for internal use in OpenWebRX. It is only accessible from the localhost by default.
#access_log = "~/openwebrx_access.log"
# ==== Color themes ====
#A guide is available to help you set these values: https://github.com/simonyiszk/openwebrx/wiki/Calibrating-waterfall-display-levels
### default theme by teejez:
waterfall_colors = "[0x000000ff,0x0000ffff,0x00ffffff,0x00ff00ff,0xffff00ff,0xff0000ff,0xff00ffff,0xffffffff]"
waterfall_min_level = -88 #in dB
waterfall_max_level = -20
waterfall_auto_level_margin = (5, 40)
### old theme by HA7ILM:
#waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]"
#waterfall_min_level = -115 #in dB
#waterfall_max_level = 0
#waterfall_auto_level_margin = (20, 30)
##For the old colors, you might also want to set [fft_voverlap_factor] to 0.
#Note: When the auto waterfall level button is clicked, the following happens:
# [waterfall_min_level] = [current_min_power_level] - [waterfall_auto_level_margin[0]]
# [waterfall_max_level] = [current_max_power_level] + [waterfall_auto_level_margin[1]]
#
# ___|____________________________________|____________________________________|____________________________________|___> signal power
# \_waterfall_auto_level_margin[0]_/ |__ current_min_power_level | \_waterfall_auto_level_margin[1]_/
# current_max_power_level __|
# 3D view settings
mathbox_waterfall_frequency_resolution = 128 #bins
mathbox_waterfall_history_length = 10 #seconds
mathbox_waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]"
# === Experimental settings ===
#Warning! The settings below are very experimental.
csdr_dynamic_bufsize = False # This allows you to change the buffering mode of csdr.
csdr_print_bufsizes = False # This prints the buffer sizes used for csdr processes.
csdr_through = False # Setting this True will print out how much data is going into the DSP chains.
nmux_memory = 50 #in megabytes. This sets the approximate size of the circular buffer used by nmux.
#Look up external IP address automatically from icanhazip.com, and use it as [server_hostname]
"""
print "[openwebrx-config] Detecting external IP address..."
import urllib2
server_hostname=urllib2.urlopen("http://icanhazip.com").read()[:-1]
print "[openwebrx-config] External IP address detected:", server_hostname
"""

@ -0,0 +1,216 @@
# -*- coding: utf-8 -*-
"""
config_webrx: configuration options for OpenWebRX
This file is part of OpenWebRX,
an open-source SDR receiver software with a web UI.
Copyright (c) 2013-2015 by Andras Retzler <randras@sdr.hu>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
In addition, as a special exception, the copyright holders
state that config_rtl.py and config_webrx.py are not part of the
Corresponding Source defined in GNU AGPL version 3 section 1.
(It means that you do not have to redistribute config_rtl.py and
config_webrx.py if you make any changes to these two configuration files,
and use them for running your web service with OpenWebRX.)
"""
# NOTE: you can find additional information about configuring OpenWebRX in the Wiki:
# https://github.com/simonyiszk/openwebrx/wiki
# ==== Server settings ====
web_port=8073
server_hostname="localhost" # If this contains an incorrect value, the web UI may freeze on load (it can't open websocket)
max_clients=20
# ==== Web GUI configuration ====
receiver_name="ARISS Ground Station"
receiver_location=""
receiver_qra=""
receiver_asl=0
receiver_ant="monopole"
receiver_device="RTL-SDR"
receiver_admin="ku2y@amsat.org"
receiver_gps=(39.0302,-77.0747)
photo_height=350
photo_title="ARISS - Amateur Radio on the International Space Station"
photo_desc="""
You can add your own background photo and receiver information.<br />
Receiver is operated by: <a href="mailto:%[RX_ADMIN]">%[RX_ADMIN]</a><br/>
Device: %[RX_DEVICE]<br />
Antenna: %[RX_ANT]<br />
Website: <a href="http://localhost" target="_blank">http://localhost</a>
"""
# ==== sdr.hu listing ====
# If you want your ham receiver to be listed publicly on sdr.hu, then take the following steps:
# 1. Register at: http://sdr.hu/register
# 2. You will get an unique key by email. Copy it and paste here:
sdrhu_key = ""
# 3. Set this setting to True to enable listing:
sdrhu_public_listing = False
# ==== DSP/RX settings ====
fft_fps=9
fft_size=4096 #Should be power of 2
fft_voverlap_factor=0.3 #If fft_voverlap_factor is above 0, multiple FFTs will be used for creating a line on the diagram.
#samp_rate = 250000
samp_rate = 2400000
center_freq = 145800000
rf_gain = 37 #in dB. For an RTL-SDR, rf_gain=0 will set the tuner to auto gain mode, else it will be in manual gain mode.
ppm = 0
audio_compression="adpcm" #valid values: "adpcm", "none"
fft_compression="adpcm" #valid values: "adpcm", "none"
digimodes_enable=False # True #Decoding digimodes come with higher CPU usage.
digimodes_fft_size=1024
start_rtl_thread=True
"""
Note: if you experience audio underruns while CPU usage is 100%, you can:
- decrease `samp_rate`,
- set `fft_voverlap_factor` to 0,
- decrease `fft_fps` and `fft_size`,
- limit the number of users by decreasing `max_clients`.
"""
# ==== I/Q sources ====
# (Uncomment the appropriate by removing # characters at the beginning of the corresponding lines.)
#################################################################################################
# Is my SDR hardware supported? #
# Check here: https://github.com/simonyiszk/openwebrx/wiki#guides-for-receiver-hardware-support #
#################################################################################################
# You can use other SDR hardware as well, by giving your own command that outputs the I/Q samples... Some examples of configuration are available here (default is RTL-SDR):
# >> RTL-SDR via rtl_sdr
start_rtl_command="rtl_sdr -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm)
format_conversion="csdr convert_u8_f"
#lna_gain=8
#rf_amp=1
#start_rtl_command="hackrf_transfer -s {samp_rate} -f {center_freq} -g {rf_gain} -l{lna_gain} -a{rf_amp} -r-".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm, rf_amp=rf_amp, lna_gain=lna_gain)
#format_conversion="csdr convert_s8_f"
"""
To use a HackRF, compile the HackRF host tools from its "stdout" branch:
git clone https://github.com/mossmann/hackrf/
cd hackrf
git fetch
git checkout origin/stdout
cd host
mkdir build
cd build
cmake .. -DINSTALL_UDEV_RULES=ON
make
sudo make install
"""
# >> Sound card SDR (needs ALSA)
# I did not have the chance to properly test it.
#samp_rate = 96000
#start_rtl_command="arecord -f S16_LE -r {samp_rate} -c2 -".format(samp_rate=samp_rate)
#format_conversion="csdr convert_s16_f | csdr gain_ff 30"
# >> /dev/urandom test signal source
# samp_rate = 2400000
# start_rtl_command="cat /dev/urandom | (pv -qL `python -c 'print int({samp_rate} * 2.2)'` 2>&1)".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate)
# format_conversion="csdr convert_u8_f"
# >> Pre-recorded raw I/Q file as signal source
# You will have to correctly specify: samp_rate, center_freq, format_conversion in order to correctly play an I/Q file.
#start_rtl_command="(while true; do cat my_iq_file.raw; done) | csdr flowcontrol {sr} 20 ".format(sr=samp_rate*2*1.05)
#format_conversion="csdr convert_u8_f"
#>> The rx_sdr command works with a variety of SDR harware: RTL-SDR, HackRF, SDRplay, UHD, Airspy, Red Pitaya, audio devices, etc.
# It will auto-detect your SDR hardware if the following tools are installed:
# * the vendor provided driver and library,
# * the vendor-specific SoapySDR wrapper library,
# * and SoapySDR itself.
# Check out this article on the OpenWebRX Wiki: https://github.com/simonyiszk/openwebrx/wiki/Using-rx_tools-with-OpenWebRX/
#start_rtl_command="rx_sdr -F CF32 -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm)
#format_conversion=""
# >> gr-osmosdr signal source using GNU Radio (follow this guide: https://github.com/simonyiszk/openwebrx/wiki/Using-GrOsmoSDR-as-signal-source)
#start_rtl_command="cat /tmp/osmocom_fifo"
#format_conversion=""
# ==== Misc settings ====
shown_center_freq = center_freq #you can change this if you use an upconverter
client_audio_buffer_size = 5
#increasing client_audio_buffer_size will:
# - also increase the latency
# - decrease the chance of audio underruns
start_freq = center_freq
start_mod = "nfm" #nfm, am, lsb, usb, cw
iq_server_port = 4951 #TCP port for ncat to listen on. It will send I/Q data over its connections, for internal use in OpenWebRX. It is only accessible from the localhost by default.
#access_log = "~/openwebrx_access.log"
# ==== Color themes ====
#A guide is available to help you set these values: https://github.com/simonyiszk/openwebrx/wiki/Calibrating-waterfall-display-levels
### default theme by teejez:
waterfall_colors = "[0x000000ff,0x0000ffff,0x00ffffff,0x00ff00ff,0xffff00ff,0xff0000ff,0xff00ffff,0xffffffff]"
waterfall_min_level = -88 #in dB
waterfall_max_level = -20
waterfall_auto_level_margin = (5, 40)
### old theme by HA7ILM:
#waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]"
#waterfall_min_level = -115 #in dB
#waterfall_max_level = 0
#waterfall_auto_level_margin = (20, 30)
##For the old colors, you might also want to set [fft_voverlap_factor] to 0.
#Note: When the auto waterfall level button is clicked, the following happens:
# [waterfall_min_level] = [current_min_power_level] - [waterfall_auto_level_margin[0]]
# [waterfall_max_level] = [current_max_power_level] + [waterfall_auto_level_margin[1]]
#
# ___|____________________________________|____________________________________|____________________________________|___> signal power
# \_waterfall_auto_level_margin[0]_/ |__ current_min_power_level | \_waterfall_auto_level_margin[1]_/
# current_max_power_level __|
# 3D view settings
mathbox_waterfall_frequency_resolution = 128 #bins
mathbox_waterfall_history_length = 10 #seconds
mathbox_waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]"
# === Experimental settings ===
#Warning! The settings below are very experimental.
csdr_dynamic_bufsize = False # This allows you to change the buffering mode of csdr.
csdr_print_bufsizes = False # This prints the buffer sizes used for csdr processes.
csdr_through = False # Setting this True will print out how much data is going into the DSP chains.
nmux_memory = 50 #in megabytes. This sets the approximate size of the circular buffer used by nmux.
#Look up external IP address automatically from icanhazip.com, and use it as [server_hostname]
"""
print "[openwebrx-config] Detecting external IP address..."
import urllib2
server_hostname=urllib2.urlopen("http://icanhazip.com").read()[:-1]
print "[openwebrx-config] External IP address detected:", server_hostname
"""

@ -0,0 +1,216 @@
# -*- coding: utf-8 -*-
"""
config_webrx: configuration options for OpenWebRX
This file is part of OpenWebRX,
an open-source SDR receiver software with a web UI.
Copyright (c) 2013-2015 by Andras Retzler <randras@sdr.hu>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
In addition, as a special exception, the copyright holders
state that config_rtl.py and config_webrx.py are not part of the
Corresponding Source defined in GNU AGPL version 3 section 1.
(It means that you do not have to redistribute config_rtl.py and
config_webrx.py if you make any changes to these two configuration files,
and use them for running your web service with OpenWebRX.)
"""
# NOTE: you can find additional information about configuring OpenWebRX in the Wiki:
# https://github.com/simonyiszk/openwebrx/wiki
# ==== Server settings ====
web_port=8073
server_hostname="localhost" # If this contains an incorrect value, the web UI may freeze on load (it can't open websocket)
max_clients=20
# ==== Web GUI configuration ====
receiver_name="ARISS Ground Station"
receiver_location=""
receiver_qra=""
receiver_asl=0
receiver_ant="monopole"
receiver_device="RTL-SDR"
receiver_admin="ku2y@amsat.org"
receiver_gps=(39.0302,-77.0747)
photo_height=350
photo_title="ARISS - Amateur Radio on the International Space Station"
photo_desc="""
You can add your own background photo and receiver information.<br />
Receiver is operated by: <a href="mailto:%[RX_ADMIN]">%[RX_ADMIN]</a><br/>
Device: %[RX_DEVICE]<br />
Antenna: %[RX_ANT]<br />
Website: <a href="http://localhost" target="_blank">http://localhost</a>
"""
# ==== sdr.hu listing ====
# If you want your ham receiver to be listed publicly on sdr.hu, then take the following steps:
# 1. Register at: http://sdr.hu/register
# 2. You will get an unique key by email. Copy it and paste here:
sdrhu_key = ""
# 3. Set this setting to True to enable listing:
sdrhu_public_listing = False
# ==== DSP/RX settings ====
fft_fps=9
fft_size=4096 #Should be power of 2
fft_voverlap_factor=0.3 #If fft_voverlap_factor is above 0, multiple FFTs will be used for creating a line on the diagram.
samp_rate = 250000
# samp_rate = 2400000
center_freq = 440450000
rf_gain = 37 #in dB. For an RTL-SDR, rf_gain=0 will set the tuner to auto gain mode, else it will be in manual gain mode.
ppm = 0
audio_compression="adpcm" #valid values: "adpcm", "none"
fft_compression="adpcm" #valid values: "adpcm", "none"
digimodes_enable=False # True #Decoding digimodes come with higher CPU usage.
digimodes_fft_size=1024
start_rtl_thread=True
"""
Note: if you experience audio underruns while CPU usage is 100%, you can:
- decrease `samp_rate`,
- set `fft_voverlap_factor` to 0,
- decrease `fft_fps` and `fft_size`,
- limit the number of users by decreasing `max_clients`.
"""
# ==== I/Q sources ====
# (Uncomment the appropriate by removing # characters at the beginning of the corresponding lines.)
#################################################################################################
# Is my SDR hardware supported? #
# Check here: https://github.com/simonyiszk/openwebrx/wiki#guides-for-receiver-hardware-support #
#################################################################################################
# You can use other SDR hardware as well, by giving your own command that outputs the I/Q samples... Some examples of configuration are available here (default is RTL-SDR):
# >> RTL-SDR via rtl_sdr
start_rtl_command="rtl_sdr -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm)
format_conversion="csdr convert_u8_f"
#lna_gain=8
#rf_amp=1
#start_rtl_command="hackrf_transfer -s {samp_rate} -f {center_freq} -g {rf_gain} -l{lna_gain} -a{rf_amp} -r-".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm, rf_amp=rf_amp, lna_gain=lna_gain)
#format_conversion="csdr convert_s8_f"
"""
To use a HackRF, compile the HackRF host tools from its "stdout" branch:
git clone https://github.com/mossmann/hackrf/
cd hackrf
git fetch
git checkout origin/stdout
cd host
mkdir build
cd build
cmake .. -DINSTALL_UDEV_RULES=ON
make
sudo make install
"""
# >> Sound card SDR (needs ALSA)
# I did not have the chance to properly test it.
#samp_rate = 96000
#start_rtl_command="arecord -f S16_LE -r {samp_rate} -c2 -".format(samp_rate=samp_rate)
#format_conversion="csdr convert_s16_f | csdr gain_ff 30"
# >> /dev/urandom test signal source
# samp_rate = 2400000
# start_rtl_command="cat /dev/urandom | (pv -qL `python -c 'print int({samp_rate} * 2.2)'` 2>&1)".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate)
# format_conversion="csdr convert_u8_f"
# >> Pre-recorded raw I/Q file as signal source
# You will have to correctly specify: samp_rate, center_freq, format_conversion in order to correctly play an I/Q file.
#start_rtl_command="(while true; do cat my_iq_file.raw; done) | csdr flowcontrol {sr} 20 ".format(sr=samp_rate*2*1.05)
#format_conversion="csdr convert_u8_f"
#>> The rx_sdr command works with a variety of SDR harware: RTL-SDR, HackRF, SDRplay, UHD, Airspy, Red Pitaya, audio devices, etc.
# It will auto-detect your SDR hardware if the following tools are installed:
# * the vendor provided driver and library,
# * the vendor-specific SoapySDR wrapper library,
# * and SoapySDR itself.
# Check out this article on the OpenWebRX Wiki: https://github.com/simonyiszk/openwebrx/wiki/Using-rx_tools-with-OpenWebRX/
#start_rtl_command="rx_sdr -F CF32 -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm)
#format_conversion=""
# >> gr-osmosdr signal source using GNU Radio (follow this guide: https://github.com/simonyiszk/openwebrx/wiki/Using-GrOsmoSDR-as-signal-source)
#start_rtl_command="cat /tmp/osmocom_fifo"
#format_conversion=""
# ==== Misc settings ====
shown_center_freq = center_freq #you can change this if you use an upconverter
client_audio_buffer_size = 5
#increasing client_audio_buffer_size will:
# - also increase the latency
# - decrease the chance of audio underruns
start_freq = center_freq
start_mod = "nfm" #nfm, am, lsb, usb, cw
iq_server_port = 4951 #TCP port for ncat to listen on. It will send I/Q data over its connections, for internal use in OpenWebRX. It is only accessible from the localhost by default.
#access_log = "~/openwebrx_access.log"
# ==== Color themes ====
#A guide is available to help you set these values: https://github.com/simonyiszk/openwebrx/wiki/Calibrating-waterfall-display-levels
### default theme by teejez:
waterfall_colors = "[0x000000ff,0x0000ffff,0x00ffffff,0x00ff00ff,0xffff00ff,0xff0000ff,0xff00ffff,0xffffffff]"
waterfall_min_level = -88 #in dB
waterfall_max_level = -20
waterfall_auto_level_margin = (5, 40)
### old theme by HA7ILM:
#waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]"
#waterfall_min_level = -115 #in dB
#waterfall_max_level = 0
#waterfall_auto_level_margin = (20, 30)
##For the old colors, you might also want to set [fft_voverlap_factor] to 0.
#Note: When the auto waterfall level button is clicked, the following happens:
# [waterfall_min_level] = [current_min_power_level] - [waterfall_auto_level_margin[0]]
# [waterfall_max_level] = [current_max_power_level] + [waterfall_auto_level_margin[1]]
#
# ___|____________________________________|____________________________________|____________________________________|___> signal power
# \_waterfall_auto_level_margin[0]_/ |__ current_min_power_level | \_waterfall_auto_level_margin[1]_/
# current_max_power_level __|
# 3D view settings
mathbox_waterfall_frequency_resolution = 128 #bins
mathbox_waterfall_history_length = 10 #seconds
mathbox_waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]"
# === Experimental settings ===
#Warning! The settings below are very experimental.
csdr_dynamic_bufsize = False # This allows you to change the buffering mode of csdr.
csdr_print_bufsizes = False # This prints the buffer sizes used for csdr processes.
csdr_through = False # Setting this True will print out how much data is going into the DSP chains.
nmux_memory = 50 #in megabytes. This sets the approximate size of the circular buffer used by nmux.
#Look up external IP address automatically from icanhazip.com, and use it as [server_hostname]
"""
print "[openwebrx-config] Detecting external IP address..."
import urllib2
server_hostname=urllib2.urlopen("http://icanhazip.com").read()[:-1]
print "[openwebrx-config] External IP address detected:", server_hostname
"""

@ -0,0 +1,216 @@
# -*- coding: utf-8 -*-
"""
config_webrx: configuration options for OpenWebRX
This file is part of OpenWebRX,
an open-source SDR receiver software with a web UI.
Copyright (c) 2013-2015 by Andras Retzler <randras@sdr.hu>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
In addition, as a special exception, the copyright holders
state that config_rtl.py and config_webrx.py are not part of the
Corresponding Source defined in GNU AGPL version 3 section 1.
(It means that you do not have to redistribute config_rtl.py and
config_webrx.py if you make any changes to these two configuration files,
and use them for running your web service with OpenWebRX.)
"""
# NOTE: you can find additional information about configuring OpenWebRX in the Wiki:
# https://github.com/simonyiszk/openwebrx/wiki
# ==== Server settings ====
web_port=8073
server_hostname="localhost" # If this contains an incorrect value, the web UI may freeze on load (it can't open websocket)
max_clients=20
# ==== Web GUI configuration ====
receiver_name="AMSATCubeSat Simulator Ground Station"
receiver_location=""
receiver_qra=""
receiver_asl=0
receiver_ant="monopole"
receiver_device="RTL-SDR"
receiver_admin="ku2y@amsat.org"
receiver_gps=(39.0302,-77.0747)
photo_height=350
photo_title="ARISS - Amateur Radio on the International Space Station"
photo_desc="""
You can add your own background photo and receiver information.<br />
Receiver is operated by: <a href="mailto:%[RX_ADMIN]">%[RX_ADMIN]</a><br/>
Device: %[RX_DEVICE]<br />
Antenna: %[RX_ANT]<br />
Website: <a href="http://localhost" target="_blank">http://localhost</a>
"""
# ==== sdr.hu listing ====
# If you want your ham receiver to be listed publicly on sdr.hu, then take the following steps:
# 1. Register at: http://sdr.hu/register
# 2. You will get an unique key by email. Copy it and paste here:
sdrhu_key = ""
# 3. Set this setting to True to enable listing:
sdrhu_public_listing = False
# ==== DSP/RX settings ====
fft_fps=9
fft_size=4096 #Should be power of 2
fft_voverlap_factor=0.3 #If fft_voverlap_factor is above 0, multiple FFTs will be used for creating a line on the diagram.
samp_rate = 250000
# samp_rate = 2400000
center_freq = 128000000
rf_gain = 37 #in dB. For an RTL-SDR, rf_gain=0 will set the tuner to auto gain mode, else it will be in manual gain mode.
ppm = 0
audio_compression="adpcm" #valid values: "adpcm", "none"
fft_compression="adpcm" #valid values: "adpcm", "none"
digimodes_enable=False # True #Decoding digimodes come with higher CPU usage.
digimodes_fft_size=1024
start_rtl_thread=True
"""
Note: if you experience audio underruns while CPU usage is 100%, you can:
- decrease `samp_rate`,
- set `fft_voverlap_factor` to 0,
- decrease `fft_fps` and `fft_size`,
- limit the number of users by decreasing `max_clients`.
"""
# ==== I/Q sources ====
# (Uncomment the appropriate by removing # characters at the beginning of the corresponding lines.)
#################################################################################################
# Is my SDR hardware supported? #
# Check here: https://github.com/simonyiszk/openwebrx/wiki#guides-for-receiver-hardware-support #
#################################################################################################
# You can use other SDR hardware as well, by giving your own command that outputs the I/Q samples... Some examples of configuration are available here (default is RTL-SDR):
# >> RTL-SDR via rtl_sdr
start_rtl_command="rtl_sdr -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm)
format_conversion="csdr convert_u8_f"
#lna_gain=8
#rf_amp=1
#start_rtl_command="hackrf_transfer -s {samp_rate} -f {center_freq} -g {rf_gain} -l{lna_gain} -a{rf_amp} -r-".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm, rf_amp=rf_amp, lna_gain=lna_gain)
#format_conversion="csdr convert_s8_f"
"""
To use a HackRF, compile the HackRF host tools from its "stdout" branch:
git clone https://github.com/mossmann/hackrf/
cd hackrf
git fetch
git checkout origin/stdout
cd host
mkdir build
cd build
cmake .. -DINSTALL_UDEV_RULES=ON
make
sudo make install
"""
# >> Sound card SDR (needs ALSA)
# I did not have the chance to properly test it.
#samp_rate = 96000
#start_rtl_command="arecord -f S16_LE -r {samp_rate} -c2 -".format(samp_rate=samp_rate)
#format_conversion="csdr convert_s16_f | csdr gain_ff 30"
# >> /dev/urandom test signal source
# samp_rate = 2400000
# start_rtl_command="cat /dev/urandom | (pv -qL `python -c 'print int({samp_rate} * 2.2)'` 2>&1)".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate)
# format_conversion="csdr convert_u8_f"
# >> Pre-recorded raw I/Q file as signal source
# You will have to correctly specify: samp_rate, center_freq, format_conversion in order to correctly play an I/Q file.
#start_rtl_command="(while true; do cat my_iq_file.raw; done) | csdr flowcontrol {sr} 20 ".format(sr=samp_rate*2*1.05)
#format_conversion="csdr convert_u8_f"
#>> The rx_sdr command works with a variety of SDR harware: RTL-SDR, HackRF, SDRplay, UHD, Airspy, Red Pitaya, audio devices, etc.
# It will auto-detect your SDR hardware if the following tools are installed:
# * the vendor provided driver and library,
# * the vendor-specific SoapySDR wrapper library,
# * and SoapySDR itself.
# Check out this article on the OpenWebRX Wiki: https://github.com/simonyiszk/openwebrx/wiki/Using-rx_tools-with-OpenWebRX/
#start_rtl_command="rx_sdr -F CF32 -s {samp_rate} -f {center_freq} -p {ppm} -g {rf_gain} -".format(rf_gain=rf_gain, center_freq=center_freq, samp_rate=samp_rate, ppm=ppm)
#format_conversion=""
# >> gr-osmosdr signal source using GNU Radio (follow this guide: https://github.com/simonyiszk/openwebrx/wiki/Using-GrOsmoSDR-as-signal-source)
#start_rtl_command="cat /tmp/osmocom_fifo"
#format_conversion=""
# ==== Misc settings ====
shown_center_freq = center_freq #you can change this if you use an upconverter
client_audio_buffer_size = 5
#increasing client_audio_buffer_size will:
# - also increase the latency
# - decrease the chance of audio underruns
start_freq = center_freq
start_mod = "nfm" #nfm, am, lsb, usb, cw
iq_server_port = 4951 #TCP port for ncat to listen on. It will send I/Q data over its connections, for internal use in OpenWebRX. It is only accessible from the localhost by default.
#access_log = "~/openwebrx_access.log"
# ==== Color themes ====
#A guide is available to help you set these values: https://github.com/simonyiszk/openwebrx/wiki/Calibrating-waterfall-display-levels
### default theme by teejez:
waterfall_colors = "[0x000000ff,0x0000ffff,0x00ffffff,0x00ff00ff,0xffff00ff,0xff0000ff,0xff00ffff,0xffffffff]"
waterfall_min_level = -88 #in dB
waterfall_max_level = -20
waterfall_auto_level_margin = (5, 40)
### old theme by HA7ILM:
#waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]"
#waterfall_min_level = -115 #in dB
#waterfall_max_level = 0
#waterfall_auto_level_margin = (20, 30)
##For the old colors, you might also want to set [fft_voverlap_factor] to 0.
#Note: When the auto waterfall level button is clicked, the following happens:
# [waterfall_min_level] = [current_min_power_level] - [waterfall_auto_level_margin[0]]
# [waterfall_max_level] = [current_max_power_level] + [waterfall_auto_level_margin[1]]
#
# ___|____________________________________|____________________________________|____________________________________|___> signal power
# \_waterfall_auto_level_margin[0]_/ |__ current_min_power_level | \_waterfall_auto_level_margin[1]_/
# current_max_power_level __|
# 3D view settings
mathbox_waterfall_frequency_resolution = 128 #bins
mathbox_waterfall_history_length = 10 #seconds
mathbox_waterfall_colors = "[0x000000ff,0x2e6893ff, 0x69a5d0ff, 0x214b69ff, 0x9dc4e0ff, 0xfff775ff, 0xff8a8aff, 0xb20000ff]"
# === Experimental settings ===
#Warning! The settings below are very experimental.
csdr_dynamic_bufsize = False # This allows you to change the buffering mode of csdr.
csdr_print_bufsizes = False # This prints the buffer sizes used for csdr processes.
csdr_through = False # Setting this True will print out how much data is going into the DSP chains.
nmux_memory = 50 #in megabytes. This sets the approximate size of the circular buffer used by nmux.
#Look up external IP address automatically from icanhazip.com, and use it as [server_hostname]
"""
print "[openwebrx-config] Detecting external IP address..."
import urllib2
server_hostname=urllib2.urlopen("http://icanhazip.com").read()[:-1]
print "[openwebrx-config] External IP address detected:", server_hostname
"""

@ -0,0 +1,8 @@
#!/bin/bash
# script to run CubeSat Simulator Lite
#
# on SDR application, listen at 107.9
echo -e "\nScript to run CubeSat Simulator Lite \n"
sudo /home/pi/CubeSatSim/PiFmRds/src/pi_fm_rds -audio /home/pi/CubeSatSim/wav/afsk2.wav -freq 107.5

@ -0,0 +1,8 @@
#!/bin/bash
# script to run CubeSat Simulator Lite
#
# on SDR application, listen at 107.9
echo -e "\nScript to run CubeSat Simulator Lite \n"
sudo /home/pi/CubeSatSim/PiFmRds/src/pi_fm_rds -audio /home/pi/CubeSatSim/wav/afsk2.wav -freq 107.9

@ -0,0 +1,10 @@
#!/bin/bash
# script to auto decode CubeSat Simulator telemetry
# kill openwebrx if it is running
ps -ef | grep rtl | grep -v grep | awk '{print $2}' | sudo xargs kill
echo -e "Script to auto decode CubeSat Simulator telemetry\n"
sudo rtl_fm -f 107.906M -M wbfm -s 70000 -g 48 - | multimon-ng -a AFSK1200 -A -t raw -

@ -0,0 +1,10 @@
#!/bin/bash
# script to auto decode CubeSat Simulator telemetry
# kill openwebrx if it is running
ps -ef | grep rtl | grep -v grep | awk '{print $2}' | sudo xargs kill
echo -e "Script to auto decode CubeSat Simulator telemetry\n"
sudo rtl_fm -f 440.386M -s 22050 -g 48 - | multimon-ng -a AFSK1200 -A -t raw -

@ -0,0 +1,33 @@
[General]
configversion=2
crashed=false
[audio]
gain=224
udp_host=localhost
[fft]
fft_size=4096
split=40
[gui]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x2\0\0\0\0\0\0\0\0\0$\0\0\x3\xff\0\0\x2\xff\0\0\0\0\0\0\0\x42\0\0\x2\xe8\0\0\x2\xed\0\0\0\0\x2\0\0\0\x4\0)
state=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x2\0\0\0\x1\0\0\x1&\0\0\x2\x65\xfc\x2\0\0\0\x2\xfc\0\0\0\x41\0\0\x1\x90\0\0\x1\x83\0\b\0 \xfa\0\0\0\x1\x2\0\0\0\x3\xfb\0\0\0\x18\0\x44\0o\0\x63\0k\0I\0n\0p\0u\0t\0\x43\0t\0l\x1\0\0\0\0\xff\xff\xff\xff\0\0\x1.\0\xff\xff\xff\xfb\0\0\0\x12\0\x44\0o\0\x63\0k\0R\0x\0O\0p\0t\x1\0\0\0\0\xff\xff\xff\xff\0\0\x1\x62\0\a\xff\xff\xfb\0\0\0\xe\0\x44\0o\0\x63\0k\0\x46\0\x66\0t\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\xc8\0\a\xff\xff\xfc\0\0\x1\xd7\0\0\0\xcf\0\0\0\xc8\0\xff\xff\xff\xfa\0\0\0\0\x2\0\0\0\x2\xfb\0\0\0\x12\0\x44\0o\0\x63\0k\0\x41\0u\0\x64\0i\0o\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\xc8\0\xff\xff\xff\xfb\0\0\0\xe\0\x44\0o\0\x63\0k\0R\0\x44\0S\0\0\0\0\0\xff\xff\xff\xff\0\0\0h\0\xff\xff\xff\0\0\0\x3\0\0\x2\xd4\0\0\0\xe9\xfc\x1\0\0\0\x1\xfb\0\0\0\x1a\0\x44\0o\0\x63\0k\0\x42\0o\0o\0k\0m\0\x61\0r\0k\0s\x1\0\0\0\0\0\0\x2\xd4\0\0\x1\x42\0\xff\xff\xff\0\0\x2\xd4\0\0\x1v\0\0\0\x1\0\0\0\x2\0\0\0\b\0\0\0\x2\xfc\0\0\0\x1\0\0\0\x2\0\0\0\x1\0\0\0\x16\0m\0\x61\0i\0n\0T\0o\0o\0l\0\x42\0\x61\0r\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
[input]
device="rtl=0"
frequency=145800000
gains=@Variant(\0\0\0\b\0\0\0\x1\0\0\0\x6\0L\0N\0\x41\0\0\0\x2\0\0\x1\xf0)
sample_rate=512000
[receiver]
agc_decay=100
agc_off=true
demod=3
filter_high_cut=5000
filter_low_cut=-5000
offset=-202000
sql_level=-42.5
[remote_control]
allowed_hosts=::ffff:127.0.0.1

@ -0,0 +1,16 @@
#!/bin/bash
# script to auto decode CubeSat Simulator telemetry
# kill rtl if running
ps -ef | grep rtl | grep -v grep | awk '{print $2}' | sudo xargs kill
# kill openwebrx process if running
ps -ef | grep openwebrx | grep -v grep | awk '{print $2}' | sudo xargs kill
# kill csdr process if running
ps -ef | grep csdr | grep -v grep | awk '{print $2}' | sudo xargs kill
echo -e "Script to run Gqrx\n"
/home/pi/gqrx-sdr-2.11.5-linux-rpi3/gqrx

@ -0,0 +1,3 @@
echo -e "IP Address of this Pi is: "
hostname -I|cut -f1 -d ' '

@ -0,0 +1,19 @@
#!/bin/bash
# script to kill all SDR or RTL processes
#
echo -e "\nKilling all SDR or RTL processes \n"
# kill rtl if running
ps -ef | grep rtl_ | grep -v grep | awk '{print $2}' | sudo xargs kill > /dev/null 2>&1
# kill openwebrx process if running
ps -ef | grep openwebrx | grep -v grep | awk '{print $2}' | sudo xargs kill > /dev/null 2>&1
# kill csdr process if running
ps -ef | grep csdr | grep -v grep | awk '{print $2}' | sudo xargs kill > /dev/null 2>&1
# kill gqrx process if running
ps -ef | grep gqrx-sdr-2.11.5-linux-rpi3/gqrx | grep -v grep | awk '{print $2}' | sudo xargs kill > /dev/null 2>&1

@ -0,0 +1,14 @@
#!/bin/bash
# script to run RTL-TCP Server
#
# On SDR client, use 10.3.141.1:1234 to connect
echo -e "\nScript to run RTL-TCP Server for ARISS Ground Station\n"
echo -e "IP Address to use in web browsers is: "
hostname -I|cut -f1 -d ' '
./kill_all.sh
sudo /bin/sh -c '/usr/local/bin/rtl_tcp -a $(hostname -I|cut -f2 -d " ")'

@ -0,0 +1,14 @@
#!/bin/bash
# script to run RTL-TCP Server
#
# On SDR client, use 10.3.141.1:1234 to connect
echo -e "\nScript to run RTL-TCP Server for ARISS Ground Station\n"
echo -e "IP Address to use in web browsers is: "
hostname -I|cut -f1 -d ' '
./kill_all.sh
sudo /bin/sh -c '/usr/local/bin/rtl_tcp -a $(hostname -I|cut -f1 -d " ")'

@ -0,0 +1,19 @@
This image has the SatNOGS client pre installed. It allows you to join the Satellite Network Operators Group network:
https://network.satnogs.org
To join, all you have to do is follow the instructions starting at SatNOGS Client Setup
https://wiki.satnogs.org/SatNOGS_Client_Ansible#SatNOGS_Client_Setup
You will need to Sign Up and create an account:
https://network.satnogs.org/login/auth0
Maybe include "ARISS" in your SatNOGS station name? For example: Joe's ARISS GS
Once you have an account and have logged in, click on the upper right corner and select Dashboard. Click on the API Key button to copy and paste your API Key which you will need to configure using sudo satnogs-setup Basic Configuration SATNOGS_API_TOKEN
Good luck and feel free to message me ku2y on SatNOGS!

@ -0,0 +1,17 @@
#!/bin/bash
# script to run OpenWebRX SDR
echo -e "\nScript to run SDR for ARISS Ground Station\n"
echo -e "IP Address to use in web browsers is: "
hostname -I|cut -f1 -d ' '
./kill_all.sh
cd ~/openwebrx
chromium-browser http://localhost:8073 &
sudo python openwebrx.py config_webrx_145

@ -0,0 +1,19 @@
#!/bin/bash
# script to run OpenWebRX SDR
echo -e "\nScript to run SDR for ARISS Ground Station\n"
echo -e "IP Address to use in web browsers is: "
hostname -I|cut -f1 -d ' '
./kill_all.sh
./kill_all.sh
cd ~/openwebrx
chromium-browser http://localhost:8073 &
sudo python openwebrx.py config_webrx_440

@ -0,0 +1,18 @@
#!/bin/bash
# script to run OpenWebRX SDR
echo -e "\nScript to run SDR for ARISS Ground Station\n"
echo -e "IP Address to use in web browsers is: "
hostname -I|cut -f1 -d ' '
./kill_all.sh
cd ~/openwebrx
chromium-browser http://localhost:8073 &
sudo python openwebrx.py config_webrx_107

@ -0,0 +1,18 @@
#!/bin/bash
# script to run OpenWebRX SDR
echo -e "\nScript to run SDR for CubeSat Simulator\n"
echo -e "IP Address to use in web browsers is: "
hostname -I|cut -f1 -d ' '
# kill rtl if running
ps -ef | grep rtl | grep -v grep | awk '{print $2}' | sudo xargs kill
# kill openwebrx process if running
ps -ef | grep openwebrx | grep -v grep | awk '{print $2}' | sudo xargs kill
cd ~/openwebrx
sudo python openwebrx.py

@ -0,0 +1,24 @@
BY ACCESSING OR USING THESE SYMBOLS & FOOTPRINTS ("MODELS"), YOU ARE ACKNOWLEDGING THAT YOU HAVE READ, FULLY UNDERSTAND AND AGREE TO THESE TERMS AND CONDITIONS (the "Agreement"), WHICH CONSTITUTE A BINDING AGREEMENT BETWEEN YOU AND SNAPEDA, INC., ENTERED INTO ON THE DATE OF SUCH OCCURRENCE (the "Effective Date"). IF YOU ARE ACCESSING OR USING THESE FILES ON BEHALF OF AN ENTITY, YOU REPRESENT THAT YOU HAVE THE RIGHT, AUTHORITY, AND CAPACITY TO BIND SUCH ENTITY TO THIS AGREEMENT AND HEREBY DO SO. IF YOU DO NOT AGREE WITH ANY OF THE TERMS OR CONDITIONS OF THIS AGREEMENT, YOU MUST NOT USE ANY PART OF THESE MODELS.
1. Design License
You and your sub-licensees are hereby licensed to design, manufacture, use and distribute, circuit board designs and circuit boards formed by combining Models provided by SnapEDA with other circuit elements of your choosing. You may then convey such combinations under licensing terms of your choice. 
Individual Models remain the intellectual property of SnapEDA, Inc. You shall not (and shall not permit or encourage any third party to) to do any of the following :
(a) sell, assign, lease, lend, rent, issue, sublicense, make available, or otherwise distribute to any third party, or publicly perform, display or communicate, the Models (for example, by uploading Models to another website or software application);
(b) remove, alter, or conceal, any copyright, trademark, or other proprietary rights notice or legend displayed or contained in the individual Models.
For further clarity, once integrated into a schematic design or PCB layout, Models may be modified freely for the purpose of designing a circuit board. 
2. Limitation of Liability
IN NO EVENT WILL SNAPEDA, CUI, OR OUR SUBSIDIARIES, AGENTS, SUCCESSORS, THIRD PARTY PROVIDERS, AND/OR ANY OF THE FOREGOING ENTITIES' RESPECTIVE DIRECTORS, OFFICERS, EMPLOYEES, AGENTS, REPRESENTATIVES, CUSTOMERS, SUPPLIERS, OR LICENSORS BE RESPONSIBLE OR LIABLE UNDER, OR OTHERWISE IN CONNECTION WITH THIS AGREEMENT, FOR:
(a) ANY CONSEQUENTIAL, INDIRECT, SPECIAL, INCIDENTAL, OR PUNITIVE DAMAGES;
(b) ANY LOSS OF PROFITS, LOSS OF BUSINESS, LOSS OF REVENUE, OR LOSS OF ANTICIPATED SAVINGS;
(c) ANY LOSS OF, OR DAMAGE TO, DATA, REPUTATION, OR GOODWILL; AND/OR
(d) THE COST OF PROCURING ANY SUBSTITUTE GOODS OR SERVICES.
THE COMBINED AGGREGATE LIABILITY OF SNAPEDA AND ALL SNAPEDA CONTENT AFFILIATES UNDER, OR OTHERWISE IN CONNECTION WITH, THIS AGREEMENT SHALL NOT EXCEED THE TOTAL AMOUNT OF FEES RECEIVED BY SNAPEDA FROM YOU IN THE PREVIOUS TWELVE (12) MONTHS. THE FOREGOING EXCLUSIONS AND LIMITATIONS SHALL APPLY: (a) EVEN IF SNAPEDA OR ANY SNAPEDA CONTENT AFFILIATE HAS BEEN ADVISED, OR SHOULD HAVE BEEN AWARE, OF THE POSSIBILITY OF LOSSES, DAMAGES, OR COSTS; (b) EVEN IF ANY REMEDY IN THIS AGREEMENT FAILS OF ITS ESSENTIAL PURPOSE; AND (c) REGARDLESS OF THE THEORY OR BASIS OF LIABILITY (INCLUDING WITHOUT LIMITATION BREACH OF CONTRACT, TORT, NEGLIGENCE, AND STRICT LIABILITY).

@ -0,0 +1,32 @@
EESchema-LIBRARY Version 2.3
#encoding utf-8
#(c) SnapEDA 2016 (snapeda.com)
#This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA) with Design Exception 1.0
#
# PJ-037AH
#
DEF PJ-037AH J 0 40 Y N 1 L N
F0 "J" -300 200 50 H V L BNN
F1 "PJ-037AH" -300 -200 50 H V L BNN
F2 "CUI_PJ-037AH" 0 0 50 H I L BNN
F3 "Manufacturer recommendations" 0 0 50 H I L BNN
F4 "CUI INC" 0 0 50 H I L BNN
DRAW
A -225 100 50 899 2700 0 0 6 N -225 50 -225 150
P 2 0 0 6 -225 150 -50 150 N
P 2 0 0 6 -50 150 -50 50 N
P 2 0 0 6 -50 50 -225 50 N
P 2 0 0 6 -50 50 -50 25 N
P 2 0 0 6 -50 25 0 25 N
P 2 0 0 6 0 25 0 175 N
P 2 0 0 6 0 175 -50 175 N
P 2 0 0 6 -50 175 -50 150 N
P 2 0 0 6 0 -100 -125 -100 N
P 2 0 0 6 -125 -100 -150 -50 N
P 2 0 0 6 -150 -50 -175 -100 N
X 1 1 200 100 200 L 40 40 0 0 P
X 2 2 200 -100 200 L 40 40 0 0 P
ENDDRAW
ENDDEF
#
# End Library

@ -0,0 +1,60 @@
PCBNEW-LibModule-V1
# encoding utf-8
Units mm
$INDEX
CUI_PJ-037AH
$EndINDEX
$MODULE CUI_PJ-037AH
Po 0 0 0 15 00000000 00000000 ~~
Li CUI_PJ-037AH
Cd
Sc 00000000
At STD
Op 0 0 0
.SolderMask 0
.SolderPaste 0
T0 1.85093 -6.76843 1.0005 1.0005 0 0.05 N V 21 "CUI_PJ-037AH"
T1 2.48639 5.77824 1.00056 1.00056 0 0.05 N V 21 "VAL**"
DS 0.5 1.75 -0.5 1.75 0.0001 28
DS -0.5 1.75 -0.5 -1.75 0.0001 28
DS -0.5 -1.75 0.5 -1.75 0.0001 28
DS 0.5 -1.75 0.5 1.75 0.0001 28
DS 6.5 1.5 5.5 1.5 0.0001 28
DS 5.5 1.5 5.5 -1.5 0.0001 28
DS 5.5 -1.5 6.5 -1.5 0.0001 28
DS 6.5 -1.5 6.5 1.5 0.0001 28
DS -0.8 -4.5 13.7 -4.5 0.127 27
DS 13.7 4.5 -0.8 4.5 0.127 27
DS -0.8 4.5 -0.8 -4.5 0.127 27
DS 13.7 -4.5 13.7 4.5 0.127 21
DS 13.7 4.5 -0.8 4.5 0.127 21
DS -0.8 4.5 -0.8 2.65 0.127 21
DS -0.8 -4.5 13.7 -4.5 0.127 21
DS -0.8 -2.55 -0.8 -4.5 0.127 21
DS -1.1 -4.75 13.95 -4.75 0.05 26
DS 13.95 -4.75 13.95 4.75 0.05 26
DS 13.95 4.75 -1.1 4.75 0.05 26
DS -1.1 4.75 -1.1 2.35 0.05 26
DC -2 0 -1.8 0 0.4 21
DS -1.1 -2.25 -1.1 -4.75 0.05 26
DS -1.1 -2.25 -1.55 -2.25 0.05 26
DS -1.55 -2.25 -1.55 2.35 0.05 26
DS -1.55 2.35 -1.1 2.35 0.05 26
DS 13.7 -4.5 13.7 4.5 0.127 27
$PAD
Sh "1" O 5 2.5 0 0 900
Dr 1 0 0
At STD N 00C0FFFF
.SolderMask 0
Ne 0 ""
Po 0 0
$EndPAD
$PAD
Sh "2" O 4.5 2.25 0 0 900
Dr 1 0 0
At STD N 00C0FFFF
.SolderMask 0
Ne 0 ""
Po 6 0
$EndPAD
$EndMODULE CUI_PJ-037AH

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

@ -56,6 +56,78 @@ X 5 5 500 -200 200 L 40 40 0 0 P
ENDDRAW
ENDDEF
#
# PJ-037AH_PJ-037AH
#
DEF PJ-037AH_PJ-037AH J 0 40 Y N 1 L N
F0 "J" -300 200 50 H V L BNN
F1 "PJ-037AH_PJ-037AH" -300 -200 50 H V L BNN
F2 "CUI_PJ-037AH" 0 0 50 H I L BNN
F3 "Manufacturer recommendations" 0 0 50 H I L BNN
F4 "CUI INC" 0 0 50 H I L BNN
DRAW
A -225 100 50 899 -900 0 0 6 N -225 50 -225 150
P 2 0 0 6 -225 150 -50 150 N
P 2 0 0 6 -150 -50 -175 -100 N
P 2 0 0 6 -125 -100 -150 -50 N
P 2 0 0 6 -50 25 0 25 N
P 2 0 0 6 -50 50 -225 50 N
P 2 0 0 6 -50 50 -50 25 N
P 2 0 0 6 -50 150 -50 50 N
P 2 0 0 6 -50 175 -50 150 N
P 2 0 0 6 0 -100 -125 -100 N
P 2 0 0 6 0 25 0 175 N
P 2 0 0 6 0 175 -50 175 N
X 1 1 200 100 200 L 40 40 0 0 P
X 2 2 200 -100 200 L 40 40 0 0 P
ENDDRAW
ENDDEF
#
# conn2_CONN_01X14
#
DEF conn2_CONN_01X14 J 0 40 Y N 1 F N
F0 "J" 0 750 50 H V C CNN
F1 "conn2_CONN_01X14" 100 0 50 V V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Pin_Header_Straight_1X*
Pin_Header_Angled_1X*
Socket_Strip_Straight_1X*
Socket_Strip_Angled_1X*
$ENDFPLIST
DRAW
S -50 -645 10 -655 0 1 0 N
S -50 -545 10 -555 0 1 0 N
S -50 -445 10 -455 0 1 0 N
S -50 -345 10 -355 0 1 0 N
S -50 -245 10 -255 0 1 0 N
S -50 -145 10 -155 0 1 0 N
S -50 -45 10 -55 0 1 0 N
S -50 55 10 45 0 1 0 N
S -50 155 10 145 0 1 0 N
S -50 255 10 245 0 1 0 N
S -50 355 10 345 0 1 0 N
S -50 455 10 445 0 1 0 N
S -50 555 10 545 0 1 0 N
S -50 655 10 645 0 1 0 N
S -50 700 50 -700 0 1 0 N
X P1 1 -200 650 150 R 50 50 1 1 P
X P10 10 -200 -250 150 R 50 50 1 1 P
X P11 11 -200 -350 150 R 50 50 1 1 P
X P12 12 -200 -450 150 R 50 50 1 1 P
X P13 13 -200 -550 150 R 50 50 1 1 P
X P14 14 -200 -650 150 R 50 50 1 1 P
X P2 2 -200 550 150 R 50 50 1 1 P
X P3 3 -200 450 150 R 50 50 1 1 P
X P4 4 -200 350 150 R 50 50 1 1 P
X P5 5 -200 250 150 R 50 50 1 1 P
X P6 6 -200 150 150 R 50 50 1 1 P
X P7 7 -200 50 150 R 50 50 1 1 P
X P8 8 -200 -50 150 R 50 50 1 1 P
X P9 9 -200 -150 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_+3.3V-PiHatAx5043-cache
#
DEF pihat_template-rescue_+3.3V-PiHatAx5043-cache #PWR 0 0 Y Y 1 F P
@ -128,49 +200,6 @@ X P2 2 -200 -50 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_CONN_01X02_FEMALE-conn2
#
DEF pihat_template-rescue_CONN_01X02_FEMALE-conn2 J 0 40 Y N 1 F N
F0 "J" 0 200 50 H V C CNN
F1 "pihat_template-rescue_CONN_01X02_FEMALE-conn2" 75 -200 50 H V C CNN
F2 "" 0 100 50 H I C CNN
F3 "" 0 100 50 H I C CNN
DRAW
A 150 -100 50 901 -901 0 1 0 N 150 -50 150 -150
A 150 100 50 901 -901 0 1 0 N 150 150 150 50
X 1 1 -100 100 200 R 50 50 1 1 P
X 2 2 -100 -100 200 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_CONN_01X05-conn2
#
DEF pihat_template-rescue_CONN_01X05-conn2 J 0 40 Y N 1 F N
F0 "J" 0 300 50 H V C CNN
F1 "pihat_template-rescue_CONN_01X05-conn2" 100 0 50 V V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Pin_Header_Straight_1X*
Pin_Header_Angled_1X*
Socket_Strip_Straight_1X*
Socket_Strip_Angled_1X*
$ENDFPLIST
DRAW
S -50 -195 10 -205 0 1 0 N
S -50 -95 10 -105 0 1 0 N
S -50 5 10 -5 0 1 0 N
S -50 105 10 95 0 1 0 N
S -50 205 10 195 0 1 0 N
S -50 250 50 -250 0 1 0 N
X P1 1 -200 200 150 R 50 50 1 1 P
X P2 2 -200 100 150 R 50 50 1 1 P
X P3 3 -200 0 150 R 50 50 1 1 P
X P4 4 -200 -100 150 R 50 50 1 1 P
X P5 5 -200 -200 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_Conn_01x05_Female-Connector
#
DEF pihat_template-rescue_Conn_01x05_Female-Connector J 0 40 Y N 1 F N
@ -232,50 +261,6 @@ X Pin_6 6 -200 -300 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_Conn_01x10_Female-Connector
#
DEF pihat_template-rescue_Conn_01x10_Female-Connector J 0 40 Y N 1 F N
F0 "J" 0 500 50 H V C CNN
F1 "pihat_template-rescue_Conn_01x10_Female-Connector" 0 -600 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_1x??_*
$ENDFPLIST
DRAW
A 0 -500 20 901 -901 1 1 6 N 0 -480 0 -520
A 0 -400 20 901 -901 1 1 6 N 0 -380 0 -420
A 0 -300 20 901 -901 1 1 6 N 0 -280 0 -320
A 0 -200 20 901 -901 1 1 6 N 0 -180 0 -220
A 0 -100 20 901 -901 1 1 6 N 0 -80 0 -120
A 0 0 20 901 -901 1 1 6 N 0 20 0 -20
A 0 100 20 901 -901 1 1 6 N 0 120 0 80
A 0 200 20 901 -901 1 1 6 N 0 220 0 180
A 0 300 20 901 -901 1 1 6 N 0 320 0 280
A 0 400 20 901 -901 1 1 6 N 0 420 0 380
P 2 1 1 6 -50 -500 -20 -500 N
P 2 1 1 6 -50 -400 -20 -400 N
P 2 1 1 6 -50 -300 -20 -300 N
P 2 1 1 6 -50 -200 -20 -200 N
P 2 1 1 6 -50 -100 -20 -100 N
P 2 1 1 6 -50 0 -20 0 N
P 2 1 1 6 -50 100 -20 100 N
P 2 1 1 6 -50 200 -20 200 N
P 2 1 1 6 -50 300 -20 300 N
P 2 1 1 6 -50 400 -20 400 N
X Pin_1 1 -200 400 150 R 50 50 1 1 P
X Pin_10 10 -200 -500 150 R 50 50 1 1 P
X Pin_2 2 -200 300 150 R 50 50 1 1 P
X Pin_3 3 -200 200 150 R 50 50 1 1 P
X Pin_4 4 -200 100 150 R 50 50 1 1 P
X Pin_5 5 -200 0 150 R 50 50 1 1 P
X Pin_6 6 -200 -100 150 R 50 50 1 1 P
X Pin_7 7 -200 -200 150 R 50 50 1 1 P
X Pin_8 8 -200 -300 150 R 50 50 1 1 P
X Pin_9 9 -200 -400 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_D-device
#
DEF pihat_template-rescue_D-device D 0 40 N N 1 F N

@ -6,9 +6,9 @@ $Descr USLetter 11000 8500
encoding utf-8
Sheet 1 1
Title "AMSAT CubeSat Simulator Solar Panel Board"
Date "December 13, 2018"
Rev "B1.1"
Comp ""
Date "February 27, 2019"
Rev "B3.0"
Comp "Author: KU2Y"
Comment1 ""
Comment2 ""
Comment3 ""
@ -55,17 +55,17 @@ Wire Wire Line
Wire Wire Line
1100 900 1200 900
Text GLabel 7450 4900 0 50 Input ~ 0
X+In
+X_In
Text GLabel 7450 5000 0 50 Input ~ 0
X+Out
+X_Out
Text GLabel 7450 5100 0 50 Input ~ 0
SDA_1
Text GLabel 7450 5200 0 50 Input ~ 0
SCL_1
Text GLabel 8900 5200 0 50 Input ~ 0
Y+In
Text GLabel 8975 4875 0 50 Input ~ 0
+Y_In
Text GLabel 4800 2425 0 50 Input ~ 0
X+Out
+X_Out
$Comp
L pihat_template-rescue:GND-power #PWR03
U 1 1 5BF227F6
@ -133,25 +133,14 @@ F 3 "~" H 7650 5100 50 0001 C CNN
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:Conn_01x10_Female-Connector J1
U 1 1 5BF2F696
P 9250 5400
F 0 "J1" V 9415 5330 50 0000 C CNN
F 1 "Sensor Inputs" V 9324 5330 50 0000 C CNN
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_Vertical" H 9250 5400 50 0001 C CNN
F 3 "~" H 9250 5400 50 0001 C CNN
1 9250 5400
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:GND-power #PWR0102
U 1 1 5BF305B5
P 8950 5275
F 0 "#PWR0102" H 8950 5025 50 0001 C CNN
F 1 "GND" H 8825 5250 50 0000 C CNN
F 2 "" H 8950 5275 50 0001 C CNN
F 3 "" H 8950 5275 50 0001 C CNN
1 8950 5275
P 9025 4950
F 0 "#PWR0102" H 9025 4700 50 0001 C CNN
F 1 "GND" H 8900 4925 50 0000 C CNN
F 2 "" H 9025 4950 50 0001 C CNN
F 3 "" H 9025 4950 50 0001 C CNN
1 9025 4950
1 0 0 -1
$EndComp
$Comp
@ -176,180 +165,94 @@ F 3 "" H 6650 2350 50 0001 C CNN
1 6650 2350
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:CONN_01X05-conn2 J5
U 1 1 5BF5F60C
P 9125 1875
F 0 "J5" H 8900 2200 50 0000 L CNN
F 1 "RBF Switch" H 9025 2200 50 0000 L CNN
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical" H 9125 1875 50 0001 C CNN
F 3 "" H 9125 1875 50 0001 C CNN
1 9125 1875
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:CONN_01X02-conn2 J3
U 1 1 5BF6082F
P 9125 2725
F 0 "J3" H 9202 2766 50 0000 L CNN
F 1 "Vdc In" H 9202 2675 50 0000 L CNN
F 2 "Connector_Wire:SolderWirePad_1x02_P3.81mm_Drill1.2mm" H 9125 2725 50 0001 C CNN
F 3 "" H 9125 2725 50 0001 C CNN
1 9125 2725
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:CONN_01X02-conn2 J4
U 1 1 5BF6089F
P 9125 2350
F 0 "J4" H 9203 2391 50 0000 L CNN
F 1 "Vout to MoPOWER" H 9203 2300 50 0000 L CNN
F 2 "Connector_Wire:SolderWirePad_1x02_P3.81mm_Drill1.2mm" H 9125 2350 50 0001 C CNN
F 3 "" H 9125 2350 50 0001 C CNN
1 9125 2350
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:GND-power #PWR0105
U 1 1 5BF609A2
P 8925 2775
F 0 "#PWR0105" H 8925 2525 50 0001 C CNN
F 1 "GND-power" H 8925 2625 50 0000 C CNN
F 2 "" H 8925 2775 50 0001 C CNN
F 3 "" H 8925 2775 50 0001 C CNN
1 8925 2775
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:GND-power #PWR0106
U 1 1 5BF609DA
P 8925 2400
F 0 "#PWR0106" H 8925 2150 50 0001 C CNN
F 1 "GND-power" H 8930 2227 50 0000 C CNN
F 2 "" H 8925 2400 50 0001 C CNN
F 3 "" H 8925 2400 50 0001 C CNN
1 8925 2400
1 0 0 -1
$EndComp
Wire Wire Line
8550 1975 8925 1975
Wire Wire Line
8925 2075 8650 2075
Wire Wire Line
8650 2675 8925 2675
Wire Wire Line
5500 2425 5625 2425
Wire Wire Line
4800 2425 5200 2425
Wire Wire Line
8900 5200 9050 5200
Text GLabel 8900 5400 0 50 Input ~ 0
Z+In
8975 4875 9125 4875
Text GLabel 8975 5075 0 50 Input ~ 0
+Z_In
Wire Wire Line
8900 5400 9050 5400
8975 5075 9125 5075
Wire Wire Line
9050 5300 9000 5300
9125 4975 9075 4975
Wire Wire Line
9000 5300 9000 5275
9075 4975 9075 4950
Wire Wire Line
9000 5275 8950 5275
Text GLabel 8900 5600 0 50 Input ~ 0
X-In
9075 4950 9025 4950
Text GLabel 8950 5475 0 50 Input ~ 0
-X_In
$Comp
L pihat_template-rescue:GND-power #PWR0107
U 1 1 5BF6C7AE
P 8950 5675
F 0 "#PWR0107" H 8950 5425 50 0001 C CNN
F 1 "GND" H 8825 5650 50 0000 C CNN
F 2 "" H 8950 5675 50 0001 C CNN
F 3 "" H 8950 5675 50 0001 C CNN
1 8950 5675
P 9000 5550
F 0 "#PWR0107" H 9000 5300 50 0001 C CNN
F 1 "GND" H 8875 5525 50 0000 C CNN
F 2 "" H 9000 5550 50 0001 C CNN
F 3 "" H 9000 5550 50 0001 C CNN
1 9000 5550
1 0 0 -1
$EndComp
Wire Wire Line
8900 5600 9050 5600
Wire Wire Line
9050 5700 9000 5700
Wire Wire Line
9000 5700 9000 5675
Wire Wire Line
9000 5675 8950 5675
Text GLabel 8900 5000 0 50 Input ~ 0
X+In
Text GLabel 8975 4675 0 50 Input ~ 0
+X_In
$Comp
L pihat_template-rescue:GND-power #PWR0108
U 1 1 5BF6D13B
P 8950 5075
F 0 "#PWR0108" H 8950 4825 50 0001 C CNN
F 1 "GND" H 8825 5050 50 0000 C CNN
F 2 "" H 8950 5075 50 0001 C CNN
F 3 "" H 8950 5075 50 0001 C CNN
1 8950 5075
P 9025 4750
F 0 "#PWR0108" H 9025 4500 50 0001 C CNN
F 1 "GND" H 8900 4725 50 0000 C CNN
F 2 "" H 9025 4750 50 0001 C CNN
F 3 "" H 9025 4750 50 0001 C CNN
1 9025 4750
1 0 0 -1
$EndComp
Wire Wire Line
8900 5000 9050 5000
8975 4675 9125 4675
Wire Wire Line
9050 5100 9000 5100
9125 4775 9075 4775
Wire Wire Line
9000 5100 9000 5075
9075 4775 9075 4750
Wire Wire Line
9000 5075 8950 5075
Text GLabel 8900 5800 0 50 Input ~ 0
Y-In
9075 4750 9025 4750
Text GLabel 8950 5675 0 50 Input ~ 0
-Y_In
$Comp
L pihat_template-rescue:GND-power #PWR0109
U 1 1 5BF6DC40
P 8950 5875
F 0 "#PWR0109" H 8950 5625 50 0001 C CNN
F 1 "GND" H 8825 5850 50 0000 C CNN
F 2 "" H 8950 5875 50 0001 C CNN
F 3 "" H 8950 5875 50 0001 C CNN
1 8950 5875
P 9000 5750
F 0 "#PWR0109" H 9000 5500 50 0001 C CNN
F 1 "GND" H 8875 5725 50 0000 C CNN
F 2 "" H 9000 5750 50 0001 C CNN
F 3 "" H 9000 5750 50 0001 C CNN
1 9000 5750
1 0 0 -1
$EndComp
Wire Wire Line
8900 5800 9050 5800
Wire Wire Line
9050 5900 9000 5900
Wire Wire Line
9000 5900 9000 5875
9125 5575 9075 5575
Wire Wire Line
9000 5875 8950 5875
9075 5575 9075 5550
$Comp
L pihat_template-rescue:GND-power #PWR0110
U 1 1 5BF6E8ED
P 8950 5475
F 0 "#PWR0110" H 8950 5225 50 0001 C CNN
F 1 "GND" H 8825 5450 50 0000 C CNN
F 2 "" H 8950 5475 50 0001 C CNN
F 3 "" H 8950 5475 50 0001 C CNN
1 8950 5475
P 9025 5150
F 0 "#PWR0110" H 9025 4900 50 0001 C CNN
F 1 "GND" H 8900 5125 50 0000 C CNN
F 2 "" H 9025 5150 50 0001 C CNN
F 3 "" H 9025 5150 50 0001 C CNN
1 9025 5150
1 0 0 -1
$EndComp
Wire Wire Line
9050 5500 9000 5500
9125 5175 9075 5175
Wire Wire Line
9000 5500 9000 5475
9075 5175 9075 5150
Wire Wire Line
9000 5475 8950 5475
$Comp
L pihat_template-rescue:CONN_01X02_FEMALE-conn2 J2
U 1 1 5BF6F85F
P 9100 6300
F 0 "J2" H 9375 6300 50 0000 L CNN
F 1 "Battery In/Out" V 9300 6075 50 0000 L CNN
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" H 9100 6400 50 0001 C CNN
F 3 "" H 9100 6400 50 0001 C CNN
1 9100 6300
1 0 0 -1
$EndComp
Text GLabel 8950 6200 0 50 Input ~ 0
9075 5150 9025 5150
Text GLabel 8950 5275 0 50 Input ~ 0
VbattIn
Text GLabel 9000 6400 0 50 Input ~ 0
Text GLabel 9000 5375 0 50 Input ~ 0
VbattOut
Wire Wire Line
8950 6200 9000 6200
Wire Wire Line
7450 5400 7375 5400
Wire Wire Line
@ -564,9 +467,9 @@ I2C Address 0x40
Text Notes 2775 5400 0 50 ~ 0
I2C Address 0x45
Text GLabel 5850 4925 0 50 Input ~ 0
Y+In
+Y_In
Text GLabel 5850 5025 0 50 Input ~ 0
Y+Out
+Y_Out
Text GLabel 5850 5125 0 50 Input ~ 0
SDA_1
Text GLabel 5850 5225 0 50 Input ~ 0
@ -619,9 +522,9 @@ $EndComp
Text Notes 6125 5375 0 50 ~ 0
I2C Address 0x41\n
Text GLabel 4175 4950 0 50 Input ~ 0
Z+In
+Z_In
Text GLabel 4175 5050 0 50 Input ~ 0
Z+Out
+Z_Out
Text GLabel 4175 5150 0 50 Input ~ 0
SDA_1
Text GLabel 4175 5250 0 50 Input ~ 0
@ -674,9 +577,9 @@ $EndComp
Text Notes 4450 5400 0 50 ~ 0
I2C Address 0x44\n
Text GLabel 7475 5775 0 50 Input ~ 0
X-In
-X_In
Text GLabel 7475 5875 0 50 Input ~ 0
X-Out
-X_Out
Text GLabel 7475 5975 0 50 Input ~ 0
SDA_3
Text GLabel 7475 6075 0 50 Input ~ 0
@ -729,9 +632,9 @@ $EndComp
Text Notes 7750 6225 0 50 ~ 0
I2C Address 0x40
Text GLabel 5800 5775 0 50 Input ~ 0
Y-In
-Y_In
Text GLabel 5800 5875 0 50 Input ~ 0
Y-Out
-Y_Out
Text GLabel 5800 5975 0 50 Input ~ 0
SDA_3
Text GLabel 5800 6075 0 50 Input ~ 0
@ -782,7 +685,7 @@ $EndComp
Text Notes 6100 6225 0 50 ~ 0
I2C Address 0x41
Text GLabel 4800 2750 0 50 Input ~ 0
Y+Out
+Y_Out
$Comp
L pihat_template-rescue:D-device D2
U 1 1 5BFCE14D
@ -799,7 +702,7 @@ Wire Wire Line
Wire Wire Line
4800 2750 5200 2750
Text GLabel 4800 3100 0 50 Input ~ 0
Z+Out
+Z_Out
$Comp
L pihat_template-rescue:D-device D3
U 1 1 5BFD1A73
@ -816,7 +719,7 @@ Wire Wire Line
Wire Wire Line
4800 3100 5200 3100
Text GLabel 4800 3425 0 50 Input ~ 0
X-Out
-X_Out
$Comp
L pihat_template-rescue:D-device D4
U 1 1 5BFD565A
@ -833,7 +736,7 @@ Wire Wire Line
Wire Wire Line
4800 3425 5200 3425
Text GLabel 4800 3775 0 50 Input ~ 0
Y-Out
-Y_Out
$Comp
L pihat_template-rescue:D-device D5
U 1 1 5BFD9541
@ -880,13 +783,11 @@ Wire Wire Line
8125 2350 7975 2350
Text Label 12250 10925 0 50 ~ 0
AMSAT CubeSat Simulator Solar Power Board
Wire Wire Line
8050 1875 8050 2100
$Comp
L pihat_template-rescue:CONN_01X01-conn2 J13
L pihat_template-rescue:CONN_01X01-conn2 J17
U 1 1 5C0D6034
P 7000 2100
F 0 "J13" H 7100 2100 50 0000 L CNN
F 0 "J17" H 7100 2100 50 0000 L CNN
F 1 "IN+" H 6775 2050 50 0000 L CNN
F 2 "Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical" H 7000 2100 50 0001 C CNN
F 3 "" H 7000 2100 50 0001 C CNN
@ -932,31 +833,23 @@ Wire Wire Line
6700 1775 6700 2100
Wire Wire Line
6700 2100 6800 2100
Text Notes 9475 2725 0 50 ~ 0
To 5.5mm x 2.1mm
Text Notes 9475 2825 0 50 ~ 0
Text Notes 9500 3050 0 50 ~ 0
5.5mm x 2.1mm
Text Notes 9500 3150 0 50 ~ 0
female barrel jack
Text Notes 5700 6600 0 50 Italic 0
INA219 boards are mounted vertically with 90 degree 5x1 header pins
Text Notes 8500 6625 0 50 ~ 0
Between NiMH battery and MoPower Board
Text Notes 9550 5450 0 50 ~ 0
INA219 boards are mounted vertically with 90 degree 1x6 header pins
Text Notes 9150 4525 0 50 ~ 0
To Solar Panels
Text Notes 6750 2900 0 50 ~ 0
Boost Converter trim pot adjusted to \ngive 15V output at maximum solar \npanel voltage input.
Wire Wire Line
8650 2075 8650 2675
Wire Wire Line
8550 1975 8550 2300
Wire Wire Line
8550 2300 8925 2300
Connection ~ 8550 1975
Connection ~ 8650 2075
$Comp
L 35RAPC4BH3:35RAPC4BH3 J17
L 35RAPC4BH3:35RAPC4BH3 J3
U 1 1 5C4F657F
P 9350 1125
F 0 "J17" H 9021 1171 50 0000 R CNN
F 0 "J3" H 9021 1171 50 0000 R CNN
F 1 "35RAPC4BH3" H 9021 1080 50 0000 R CNN
F 2 "35RAPC4BH3:SWITCHCRAFT_35RAPC4BH3" H 9350 1125 50 0001 L BNN
F 3 "None" H 9350 1125 50 0001 L BNN
@ -972,29 +865,14 @@ Wire Wire Line
8550 1325 8850 1325
Wire Wire Line
8050 1225 8850 1225
Connection ~ 8050 1875
Wire Wire Line
8050 1875 8925 1875
Wire Wire Line
8550 1325 8550 1975
Wire Wire Line
8050 1225 8050 1875
Wire Wire Line
8850 1125 8450 1125
Wire Wire Line
8450 1125 8450 1675
Connection ~ 8450 1675
Wire Wire Line
8450 1675 8925 1675
Wire Wire Line
5625 1675 8450 1675
Wire Wire Line
8350 1025 8350 1775
Connection ~ 8350 1775
Wire Wire Line
8350 1775 8925 1775
Wire Wire Line
8650 925 8650 2075
Wire Wire Line
6700 1775 8350 1775
Wire Wire Line
@ -1005,8 +883,8 @@ Text Notes 5725 1050 0 50 ~ 0
With RBF switch inserted (3.5mm jack plugged in),\n Vout to MoPower comes from the Vdc in barrel jack\n through 3.5mm plug that has jumper between 3 and 1 \n(center and outer). Solar panels are isolated from the input to \nthe boost converter through the switch.
Text Notes 5800 1500 0 50 ~ 0
With the RBF switch removed, the solar panels are \nconnected to the boost converter input and the \noutput of the boost converter is connected to \nthe Vout to the MoPower board.
Text Notes 9475 2125 0 50 ~ 0
Use either J17 if RBF \nswitch is mounted on \nPC board, or J5 if RBF \nswitch is connected \nthrough wires on \nthe frame.
Text Notes 8925 1625 0 50 ~ 0
RBF switch is mounted on \nPC board.\n
Wire Notes Line style solid rgb(132, 0, 0)
6925 2025 6925 2425
Wire Notes Line style solid rgb(132, 0, 0)
@ -1017,4 +895,234 @@ Wire Notes Line style solid rgb(132, 0, 0)
7850 2025 6925 2025
Text Notes 7050 1975 0 50 ~ 0
U1 Boost Converter
$Comp
L PJ-037AH:PJ-037AH J1
U 1 1 5C775C0E
P 9100 3200
F 0 "J1" H 8800 3100 50 0000 R CNN
F 1 "PJ-037AH" H 8625 3100 50 0000 R CNN
F 2 "PJ-037AH:CUI_PJ-037AH" H 9100 3200 50 0001 L BNN
F 3 "Manufacturer recommendations" H 9100 3200 50 0001 L BNN
F 4 "CUI INC" H 9100 3200 50 0001 L BNN "Field4"
1 9100 3200
-1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:GND-power #PWR06
U 1 1 5C78910F
P 8900 3350
F 0 "#PWR06" H 8900 3100 50 0001 C CNN
F 1 "GND-power" H 8905 3177 50 0000 C CNN
F 2 "" H 8900 3350 50 0001 C CNN
F 3 "" H 8900 3350 50 0001 C CNN
1 8900 3350
1 0 0 -1
$EndComp
Wire Wire Line
8900 3300 8900 3350
Wire Wire Line
8900 3100 8650 3100
$Comp
L pihat_template-rescue:GND-power #PWR0106
U 1 1 5BF609DA
P 8925 2400
F 0 "#PWR0106" H 8925 2150 50 0001 C CNN
F 1 "GND-power" H 8930 2227 50 0000 C CNN
F 2 "" H 8925 2400 50 0001 C CNN
F 3 "" H 8925 2400 50 0001 C CNN
1 8925 2400
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:CONN_01X02-conn2 J4
U 1 1 5BF6089F
P 9125 2350
F 0 "J4" H 9203 2391 50 0000 L CNN
F 1 "Vout to MoPOWER" H 9203 2300 50 0000 L CNN
F 2 "Connector_PinSocket_2.54mm:PinSocket_2x01_P2.54mm_Vertical" H 9125 2350 50 0001 C CNN
F 3 "" H 9125 2350 50 0001 C CNN
1 9125 2350
1 0 0 -1
$EndComp
Text GLabel 4225 5750 0 50 Input ~ 0
-Z_In
Text GLabel 4225 5850 0 50 Input ~ 0
-Z_Out
Text GLabel 4225 5950 0 50 Input ~ 0
SDA_3
Text GLabel 4225 6050 0 50 Input ~ 0
SCL_3
$Comp
L pihat_template-rescue:GND-power #PWR0105
U 1 1 5C7AD97F
P 3675 6250
F 0 "#PWR0105" H 3675 6000 50 0001 C CNN
F 1 "GND" H 3680 6077 50 0000 C CNN
F 2 "" H 3675 6250 50 0001 C CNN
F 3 "" H 3675 6250 50 0001 C CNN
1 3675 6250
1 0 0 -1
$EndComp
Wire Wire Line
3675 6250 3675 6150
Wire Wire Line
3675 6150 4225 6150
$Comp
L pihat_template-rescue:Conn_01x06_Female-Connector J13
U 1 1 5C7AD987
P 4425 5950
F 0 "J13" H 4453 5926 50 0000 L CNN
F 1 "INA219 Sensor Board" H 4453 5835 50 0000 L CNN
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical" H 4425 5950 50 0001 C CNN
F 3 "~" H 4425 5950 50 0001 C CNN
1 4425 5950
1 0 0 -1
$EndComp
Wire Wire Line
4225 6250 4150 6250
Wire Wire Line
4150 6250 4150 6325
Wire Wire Line
4150 6325 4100 6325
$Comp
L pihat_template-rescue:power_+3.3V-PiHatAx5043-cache #PWR0124
U 1 1 5C7AD991
P 4100 6325
F 0 "#PWR0124" H 4100 6175 50 0001 C CNN
F 1 "power_+3.3V" H 4125 6275 50 0000 C CNN
F 2 "" H 4100 6325 50 0001 C CNN
F 3 "" H 4100 6325 50 0001 C CNN
1 4100 6325
1 0 0 -1
$EndComp
Text Notes 4525 6200 0 50 ~ 0
I2C Address 0x44
Text GLabel 4800 4150 0 50 Input ~ 0
-Z_Out
$Comp
L pihat_template-rescue:D-device D6
U 1 1 5C7B2D77
P 5350 4150
F 0 "D6" H 5350 4366 50 0000 C CNN
F 1 "1N5817" H 5350 4275 50 0000 C CNN
F 2 "Diode_THT:D_DO-41_SOD81_P3.81mm_Vertical_AnodeUp" H 5350 4150 50 0001 C CNN
F 3 "~" H 5350 4150 50 0001 C CNN
1 5350 4150
-1 0 0 -1
$EndComp
Wire Wire Line
5500 4150 5625 4150
Wire Wire Line
4800 4150 5200 4150
Wire Wire Line
5625 3775 5625 4150
Connection ~ 5625 3775
$Comp
L conn2:CONN_01X14 J2
U 1 1 5C7E4666
P 9325 5325
F 0 "J2" H 9403 5366 50 0000 L CNN
F 1 "CONN_01X14" H 9403 5275 50 0000 L CNN
F 2 "Connector_PinSocket_2.54mm:PinSocket_1x14_P2.54mm_Vertical" H 9325 5325 50 0001 C CNN
F 3 "" H 9325 5325 50 0001 C CNN
1 9325 5325
1 0 0 -1
$EndComp
Wire Wire Line
8950 5475 9125 5475
Wire Wire Line
8950 5675 9125 5675
Wire Wire Line
9075 5750 9075 5775
Wire Wire Line
9075 5775 9125 5775
Wire Wire Line
9000 5750 9075 5750
Wire Wire Line
9000 5550 9075 5550
Wire Wire Line
8950 5275 9125 5275
Wire Wire Line
9125 5375 9000 5375
Text GLabel 8950 5875 0 50 Input ~ 0
-Z_In
$Comp
L pihat_template-rescue:GND-power #PWR0125
U 1 1 5C82013E
P 9000 5950
F 0 "#PWR0125" H 9000 5700 50 0001 C CNN
F 1 "GND" H 8875 5925 50 0000 C CNN
F 2 "" H 9000 5950 50 0001 C CNN
F 3 "" H 9000 5950 50 0001 C CNN
1 9000 5950
1 0 0 -1
$EndComp
Wire Wire Line
8950 5875 9125 5875
Wire Wire Line
9075 5950 9075 5975
Wire Wire Line
9075 5975 9125 5975
Wire Wire Line
9000 5950 9075 5950
Wire Wire Line
8550 1325 8550 2300
Wire Wire Line
8650 925 8650 3100
Wire Wire Line
8050 1225 8050 2100
$Comp
L pihat_template-rescue:D-device D?
U 1 1 5C7BFAE7
P 4075 2800
F 0 "D?" H 4075 3016 50 0000 C CNN
F 1 "LED" H 4075 2925 50 0000 C CNN
F 2 "Diode_THT:D_DO-41_SOD81_P3.81mm_Vertical_AnodeUp" H 4075 2800 50 0001 C CNN
F 3 "~" H 4075 2800 50 0001 C CNN
1 4075 2800
0 1 -1 0
$EndComp
$Comp
L pihat_template-rescue:RESISTOR-passive R?
U 1 1 5C7C98E3
P 4075 2475
F 0 "R?" V 4025 2300 60 0000 L CNB
F 1 "220" V 4050 2550 40 0000 L CNN
F 2 "Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P5.08mm_Vertical" H 4075 2335 40 0001 C CNN
F 3 "" H 4075 2575 60 0000 C CNN
F 4 "-" H 4075 2635 45 0001 C CNN "Part"
F 5 "Passive" H 4305 2765 50 0001 C CNN "Family"
1 4075 2475
0 1 1 0
$EndComp
$Comp
L pihat_template-rescue:+3.3V-PiHatAx5043-cache #PWR?
U 1 1 5C7CE806
P 1025 2725
F 0 "#PWR?" H 1025 2575 50 0001 C CNN
F 1 "+3.3V" H 1040 2898 50 0000 C CNN
F 2 "" H 1025 2725 50 0001 C CNN
F 3 "" H 1025 2725 50 0001 C CNN
1 1025 2725
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:+3.3V-PiHatAx5043-cache #PWR?
U 1 1 5C7D3690
P 4075 2300
F 0 "#PWR?" H 4075 2150 50 0001 C CNN
F 1 "+3.3V" H 4090 2473 50 0000 C CNN
F 2 "" H 4075 2300 50 0001 C CNN
F 3 "" H 4075 2300 50 0001 C CNN
1 4075 2300
1 0 0 -1
$EndComp
Wire Wire Line
4075 2300 4075 2375
Wire Wire Line
4075 2575 4075 2650
Wire Wire Line
4075 2950 4075 3000
Wire Wire Line
4075 3000 3750 3000
$EndSCHEMATC

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,4 +1,4 @@
update=1/27/2019 6:13:21 PM
update=3/15/2019 7:42:43 AM
version=1
last_client=eeschema
[cvpcb]

@ -6,8 +6,8 @@ $Descr USLetter 11000 8500
encoding utf-8
Sheet 1 1
Title "AMSAT CubeSat Simulator Solar Panel Board"
Date "January 26, 2019"
Rev "B2.0"
Date "February 27, 2019"
Rev "B3.0"
Comp "Author: KU2Y"
Comment1 ""
Comment2 ""
@ -55,17 +55,17 @@ Wire Wire Line
Wire Wire Line
1100 900 1200 900
Text GLabel 7450 4900 0 50 Input ~ 0
X+In
+X_In
Text GLabel 7450 5000 0 50 Input ~ 0
X+Out
+X_Out
Text GLabel 7450 5100 0 50 Input ~ 0
SDA_1
Text GLabel 7450 5200 0 50 Input ~ 0
SCL_1
Text GLabel 8900 5200 0 50 Input ~ 0
Y+In
Text GLabel 8975 4875 0 50 Input ~ 0
+Y_In
Text GLabel 4800 2425 0 50 Input ~ 0
X+Out
+X_Out
$Comp
L pihat_template-rescue:GND-power #PWR03
U 1 1 5BF227F6
@ -133,25 +133,14 @@ F 3 "~" H 7650 5100 50 0001 C CNN
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:Conn_01x10_Female-Connector J1
U 1 1 5BF2F696
P 9250 5400
F 0 "J1" V 9415 5330 50 0000 C CNN
F 1 "Sensor Inputs" V 9324 5330 50 0000 C CNN
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_Vertical" H 9250 5400 50 0001 C CNN
F 3 "~" H 9250 5400 50 0001 C CNN
1 9250 5400
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:GND-power #PWR0102
U 1 1 5BF305B5
P 8950 5275
F 0 "#PWR0102" H 8950 5025 50 0001 C CNN
F 1 "GND" H 8825 5250 50 0000 C CNN
F 2 "" H 8950 5275 50 0001 C CNN
F 3 "" H 8950 5275 50 0001 C CNN
1 8950 5275
P 9025 4950
F 0 "#PWR0102" H 9025 4700 50 0001 C CNN
F 1 "GND" H 8900 4925 50 0000 C CNN
F 2 "" H 9025 4950 50 0001 C CNN
F 3 "" H 9025 4950 50 0001 C CNN
1 9025 4950
1 0 0 -1
$EndComp
$Comp
@ -176,180 +165,94 @@ F 3 "" H 6650 2350 50 0001 C CNN
1 6650 2350
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:CONN_01X05-conn2 J5
U 1 1 5BF5F60C
P 9125 1875
F 0 "J5" H 8900 2200 50 0000 L CNN
F 1 "RBF Switch" H 9025 2200 50 0000 L CNN
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical" H 9125 1875 50 0001 C CNN
F 3 "" H 9125 1875 50 0001 C CNN
1 9125 1875
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:CONN_01X02-conn2 J3
U 1 1 5BF6082F
P 9125 2725
F 0 "J3" H 9202 2766 50 0000 L CNN
F 1 "Vdc In" H 9202 2675 50 0000 L CNN
F 2 "Connector_Wire:SolderWirePad_1x02_P3.81mm_Drill1.2mm" H 9125 2725 50 0001 C CNN
F 3 "" H 9125 2725 50 0001 C CNN
1 9125 2725
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:CONN_01X02-conn2 J4
U 1 1 5BF6089F
P 9125 2350
F 0 "J4" H 9203 2391 50 0000 L CNN
F 1 "Vout to MoPOWER" H 9203 2300 50 0000 L CNN
F 2 "Connector_Wire:SolderWirePad_1x02_P3.81mm_Drill1.2mm" H 9125 2350 50 0001 C CNN
F 3 "" H 9125 2350 50 0001 C CNN
1 9125 2350
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:GND-power #PWR0105
U 1 1 5BF609A2
P 8925 2775
F 0 "#PWR0105" H 8925 2525 50 0001 C CNN
F 1 "GND-power" H 8925 2625 50 0000 C CNN
F 2 "" H 8925 2775 50 0001 C CNN
F 3 "" H 8925 2775 50 0001 C CNN
1 8925 2775
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:GND-power #PWR0106
U 1 1 5BF609DA
P 8925 2400
F 0 "#PWR0106" H 8925 2150 50 0001 C CNN
F 1 "GND-power" H 8930 2227 50 0000 C CNN
F 2 "" H 8925 2400 50 0001 C CNN
F 3 "" H 8925 2400 50 0001 C CNN
1 8925 2400
1 0 0 -1
$EndComp
Wire Wire Line
8550 1975 8925 1975
Wire Wire Line
8925 2075 8650 2075
Wire Wire Line
8650 2675 8925 2675
Wire Wire Line
5500 2425 5625 2425
Wire Wire Line
4800 2425 5200 2425
Wire Wire Line
8900 5200 9050 5200
Text GLabel 8900 5400 0 50 Input ~ 0
Z+In
8975 4875 9125 4875
Text GLabel 8975 5075 0 50 Input ~ 0
+Z_In
Wire Wire Line
8900 5400 9050 5400
8975 5075 9125 5075
Wire Wire Line
9050 5300 9000 5300
9125 4975 9075 4975
Wire Wire Line
9000 5300 9000 5275
9075 4975 9075 4950
Wire Wire Line
9000 5275 8950 5275
Text GLabel 8900 5600 0 50 Input ~ 0
X-In
9075 4950 9025 4950
Text GLabel 8950 5475 0 50 Input ~ 0
-X_In
$Comp
L pihat_template-rescue:GND-power #PWR0107
U 1 1 5BF6C7AE
P 8950 5675
F 0 "#PWR0107" H 8950 5425 50 0001 C CNN
F 1 "GND" H 8825 5650 50 0000 C CNN
F 2 "" H 8950 5675 50 0001 C CNN
F 3 "" H 8950 5675 50 0001 C CNN
1 8950 5675
P 9000 5550
F 0 "#PWR0107" H 9000 5300 50 0001 C CNN
F 1 "GND" H 8875 5525 50 0000 C CNN
F 2 "" H 9000 5550 50 0001 C CNN
F 3 "" H 9000 5550 50 0001 C CNN
1 9000 5550
1 0 0 -1
$EndComp
Wire Wire Line
8900 5600 9050 5600
Wire Wire Line
9050 5700 9000 5700
Wire Wire Line
9000 5700 9000 5675
Wire Wire Line
9000 5675 8950 5675
Text GLabel 8900 5000 0 50 Input ~ 0
X+In
Text GLabel 8975 4675 0 50 Input ~ 0
+X_In
$Comp
L pihat_template-rescue:GND-power #PWR0108
U 1 1 5BF6D13B
P 8950 5075
F 0 "#PWR0108" H 8950 4825 50 0001 C CNN
F 1 "GND" H 8825 5050 50 0000 C CNN
F 2 "" H 8950 5075 50 0001 C CNN
F 3 "" H 8950 5075 50 0001 C CNN
1 8950 5075
P 9025 4750
F 0 "#PWR0108" H 9025 4500 50 0001 C CNN
F 1 "GND" H 8900 4725 50 0000 C CNN
F 2 "" H 9025 4750 50 0001 C CNN
F 3 "" H 9025 4750 50 0001 C CNN
1 9025 4750
1 0 0 -1
$EndComp
Wire Wire Line
8900 5000 9050 5000
8975 4675 9125 4675
Wire Wire Line
9050 5100 9000 5100
9125 4775 9075 4775
Wire Wire Line
9000 5100 9000 5075
9075 4775 9075 4750
Wire Wire Line
9000 5075 8950 5075
Text GLabel 8900 5800 0 50 Input ~ 0
Y-In
9075 4750 9025 4750
Text GLabel 8950 5675 0 50 Input ~ 0
-Y_In
$Comp
L pihat_template-rescue:GND-power #PWR0109
U 1 1 5BF6DC40
P 8950 5875
F 0 "#PWR0109" H 8950 5625 50 0001 C CNN
F 1 "GND" H 8825 5850 50 0000 C CNN
F 2 "" H 8950 5875 50 0001 C CNN
F 3 "" H 8950 5875 50 0001 C CNN
1 8950 5875
P 9000 5750
F 0 "#PWR0109" H 9000 5500 50 0001 C CNN
F 1 "GND" H 8875 5725 50 0000 C CNN
F 2 "" H 9000 5750 50 0001 C CNN
F 3 "" H 9000 5750 50 0001 C CNN
1 9000 5750
1 0 0 -1
$EndComp
Wire Wire Line
8900 5800 9050 5800
Wire Wire Line
9050 5900 9000 5900
Wire Wire Line
9000 5900 9000 5875
9125 5575 9075 5575
Wire Wire Line
9000 5875 8950 5875
9075 5575 9075 5550
$Comp
L pihat_template-rescue:GND-power #PWR0110
U 1 1 5BF6E8ED
P 8950 5475
F 0 "#PWR0110" H 8950 5225 50 0001 C CNN
F 1 "GND" H 8825 5450 50 0000 C CNN
F 2 "" H 8950 5475 50 0001 C CNN
F 3 "" H 8950 5475 50 0001 C CNN
1 8950 5475
P 9025 5150
F 0 "#PWR0110" H 9025 4900 50 0001 C CNN
F 1 "GND" H 8900 5125 50 0000 C CNN
F 2 "" H 9025 5150 50 0001 C CNN
F 3 "" H 9025 5150 50 0001 C CNN
1 9025 5150
1 0 0 -1
$EndComp
Wire Wire Line
9050 5500 9000 5500
9125 5175 9075 5175
Wire Wire Line
9000 5500 9000 5475
9075 5175 9075 5150
Wire Wire Line
9000 5475 8950 5475
$Comp
L pihat_template-rescue:CONN_01X02_FEMALE-conn2 J2
U 1 1 5BF6F85F
P 9100 6300
F 0 "J2" H 9375 6300 50 0000 L CNN
F 1 "Battery In/Out" V 9300 6075 50 0000 L CNN
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical" H 9100 6400 50 0001 C CNN
F 3 "" H 9100 6400 50 0001 C CNN
1 9100 6300
1 0 0 -1
$EndComp
Text GLabel 8950 6200 0 50 Input ~ 0
9075 5150 9025 5150
Text GLabel 8950 5275 0 50 Input ~ 0
VbattIn
Text GLabel 9000 6400 0 50 Input ~ 0
Text GLabel 9000 5375 0 50 Input ~ 0
VbattOut
Wire Wire Line
8950 6200 9000 6200
Wire Wire Line
7450 5400 7375 5400
Wire Wire Line
@ -564,9 +467,9 @@ I2C Address 0x40
Text Notes 2775 5400 0 50 ~ 0
I2C Address 0x45
Text GLabel 5850 4925 0 50 Input ~ 0
Y+In
+Y_In
Text GLabel 5850 5025 0 50 Input ~ 0
Y+Out
+Y_Out
Text GLabel 5850 5125 0 50 Input ~ 0
SDA_1
Text GLabel 5850 5225 0 50 Input ~ 0
@ -619,9 +522,9 @@ $EndComp
Text Notes 6125 5375 0 50 ~ 0
I2C Address 0x41\n
Text GLabel 4175 4950 0 50 Input ~ 0
Z+In
+Z_In
Text GLabel 4175 5050 0 50 Input ~ 0
Z+Out
+Z_Out
Text GLabel 4175 5150 0 50 Input ~ 0
SDA_1
Text GLabel 4175 5250 0 50 Input ~ 0
@ -674,9 +577,9 @@ $EndComp
Text Notes 4450 5400 0 50 ~ 0
I2C Address 0x44\n
Text GLabel 7475 5775 0 50 Input ~ 0
X-In
-X_In
Text GLabel 7475 5875 0 50 Input ~ 0
X-Out
-X_Out
Text GLabel 7475 5975 0 50 Input ~ 0
SDA_3
Text GLabel 7475 6075 0 50 Input ~ 0
@ -729,9 +632,9 @@ $EndComp
Text Notes 7750 6225 0 50 ~ 0
I2C Address 0x40
Text GLabel 5800 5775 0 50 Input ~ 0
Y-In
-Y_In
Text GLabel 5800 5875 0 50 Input ~ 0
Y-Out
-Y_Out
Text GLabel 5800 5975 0 50 Input ~ 0
SDA_3
Text GLabel 5800 6075 0 50 Input ~ 0
@ -782,7 +685,7 @@ $EndComp
Text Notes 6100 6225 0 50 ~ 0
I2C Address 0x41
Text GLabel 4800 2750 0 50 Input ~ 0
Y+Out
+Y_Out
$Comp
L pihat_template-rescue:D-device D2
U 1 1 5BFCE14D
@ -799,7 +702,7 @@ Wire Wire Line
Wire Wire Line
4800 2750 5200 2750
Text GLabel 4800 3100 0 50 Input ~ 0
Z+Out
+Z_Out
$Comp
L pihat_template-rescue:D-device D3
U 1 1 5BFD1A73
@ -816,7 +719,7 @@ Wire Wire Line
Wire Wire Line
4800 3100 5200 3100
Text GLabel 4800 3425 0 50 Input ~ 0
X-Out
-X_Out
$Comp
L pihat_template-rescue:D-device D4
U 1 1 5BFD565A
@ -833,7 +736,7 @@ Wire Wire Line
Wire Wire Line
4800 3425 5200 3425
Text GLabel 4800 3775 0 50 Input ~ 0
Y-Out
-Y_Out
$Comp
L pihat_template-rescue:D-device D5
U 1 1 5BFD9541
@ -880,13 +783,11 @@ Wire Wire Line
8125 2350 7975 2350
Text Label 12250 10925 0 50 ~ 0
AMSAT CubeSat Simulator Solar Power Board
Wire Wire Line
8050 1875 8050 2100
$Comp
L pihat_template-rescue:CONN_01X01-conn2 J13
L pihat_template-rescue:CONN_01X01-conn2 J17
U 1 1 5C0D6034
P 7000 2100
F 0 "J13" H 7100 2100 50 0000 L CNN
F 0 "J17" H 7100 2100 50 0000 L CNN
F 1 "IN+" H 6775 2050 50 0000 L CNN
F 2 "Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical" H 7000 2100 50 0001 C CNN
F 3 "" H 7000 2100 50 0001 C CNN
@ -932,31 +833,23 @@ Wire Wire Line
6700 1775 6700 2100
Wire Wire Line
6700 2100 6800 2100
Text Notes 9475 2725 0 50 ~ 0
To 5.5mm x 2.1mm
Text Notes 9475 2825 0 50 ~ 0
Text Notes 9500 3050 0 50 ~ 0
5.5mm x 2.1mm
Text Notes 9500 3150 0 50 ~ 0
female barrel jack
Text Notes 5700 6600 0 50 Italic 0
INA219 boards are mounted vertically with 90 degree 5x1 header pins
Text Notes 8500 6625 0 50 ~ 0
Between NiMH battery and MoPower Board
Text Notes 9550 5450 0 50 ~ 0
INA219 boards are mounted vertically with 90 degree 1x6 header pins
Text Notes 9150 4525 0 50 ~ 0
To Solar Panels
Text Notes 6750 2900 0 50 ~ 0
Boost Converter trim pot adjusted to \ngive 15V output at maximum solar \npanel voltage input.
Wire Wire Line
8650 2075 8650 2675
Wire Wire Line
8550 1975 8550 2300
Wire Wire Line
8550 2300 8925 2300
Connection ~ 8550 1975
Connection ~ 8650 2075
$Comp
L 35RAPC4BH3:35RAPC4BH3 J17
L 35RAPC4BH3:35RAPC4BH3 J3
U 1 1 5C4F657F
P 9350 1125
F 0 "J17" H 9021 1171 50 0000 R CNN
F 0 "J3" H 9021 1171 50 0000 R CNN
F 1 "35RAPC4BH3" H 9021 1080 50 0000 R CNN
F 2 "35RAPC4BH3:SWITCHCRAFT_35RAPC4BH3" H 9350 1125 50 0001 L BNN
F 3 "None" H 9350 1125 50 0001 L BNN
@ -972,29 +865,14 @@ Wire Wire Line
8550 1325 8850 1325
Wire Wire Line
8050 1225 8850 1225
Connection ~ 8050 1875
Wire Wire Line
8050 1875 8925 1875
Wire Wire Line
8550 1325 8550 1975
Wire Wire Line
8050 1225 8050 1875
Wire Wire Line
8850 1125 8450 1125
Wire Wire Line
8450 1125 8450 1675
Connection ~ 8450 1675
Wire Wire Line
8450 1675 8925 1675
Wire Wire Line
5625 1675 8450 1675
Wire Wire Line
8350 1025 8350 1775
Connection ~ 8350 1775
Wire Wire Line
8350 1775 8925 1775
Wire Wire Line
8650 925 8650 2075
Wire Wire Line
6700 1775 8350 1775
Wire Wire Line
@ -1005,8 +883,8 @@ Text Notes 5725 1050 0 50 ~ 0
With RBF switch inserted (3.5mm jack plugged in),\n Vout to MoPower comes from the Vdc in barrel jack\n through 3.5mm plug that has jumper between 3 and 1 \n(center and outer). Solar panels are isolated from the input to \nthe boost converter through the switch.
Text Notes 5800 1500 0 50 ~ 0
With the RBF switch removed, the solar panels are \nconnected to the boost converter input and the \noutput of the boost converter is connected to \nthe Vout to the MoPower board.
Text Notes 9475 2125 0 50 ~ 0
Use either J17 if RBF \nswitch is mounted on \nPC board, or J5 if RBF \nswitch is connected \nthrough wires on \nthe frame.
Text Notes 8925 1625 0 50 ~ 0
RBF switch is mounted on \nPC board.\n
Wire Notes Line style solid rgb(132, 0, 0)
6925 2025 6925 2425
Wire Notes Line style solid rgb(132, 0, 0)
@ -1017,4 +895,234 @@ Wire Notes Line style solid rgb(132, 0, 0)
7850 2025 6925 2025
Text Notes 7050 1975 0 50 ~ 0
U1 Boost Converter
$Comp
L PJ-037AH:PJ-037AH J1
U 1 1 5C775C0E
P 9100 3200
F 0 "J1" H 8800 3100 50 0000 R CNN
F 1 "PJ-037AH" H 8625 3100 50 0000 R CNN
F 2 "PJ-037AH:CUI_PJ-037AH" H 9100 3200 50 0001 L BNN
F 3 "Manufacturer recommendations" H 9100 3200 50 0001 L BNN
F 4 "CUI INC" H 9100 3200 50 0001 L BNN "Field4"
1 9100 3200
-1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:GND-power #PWR06
U 1 1 5C78910F
P 8900 3350
F 0 "#PWR06" H 8900 3100 50 0001 C CNN
F 1 "GND-power" H 8905 3177 50 0000 C CNN
F 2 "" H 8900 3350 50 0001 C CNN
F 3 "" H 8900 3350 50 0001 C CNN
1 8900 3350
1 0 0 -1
$EndComp
Wire Wire Line
8900 3300 8900 3350
Wire Wire Line
8900 3100 8650 3100
$Comp
L pihat_template-rescue:GND-power #PWR0106
U 1 1 5BF609DA
P 8925 2400
F 0 "#PWR0106" H 8925 2150 50 0001 C CNN
F 1 "GND-power" H 8930 2227 50 0000 C CNN
F 2 "" H 8925 2400 50 0001 C CNN
F 3 "" H 8925 2400 50 0001 C CNN
1 8925 2400
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:CONN_01X02-conn2 J4
U 1 1 5BF6089F
P 9125 2350
F 0 "J4" H 9203 2391 50 0000 L CNN
F 1 "Vout to MoPOWER" H 9203 2300 50 0000 L CNN
F 2 "Connector_PinSocket_2.54mm:PinSocket_2x01_P2.54mm_Vertical" H 9125 2350 50 0001 C CNN
F 3 "" H 9125 2350 50 0001 C CNN
1 9125 2350
1 0 0 -1
$EndComp
Text GLabel 4225 5750 0 50 Input ~ 0
-Z_In
Text GLabel 4225 5850 0 50 Input ~ 0
-Z_Out
Text GLabel 4225 5950 0 50 Input ~ 0
SDA_3
Text GLabel 4225 6050 0 50 Input ~ 0
SCL_3
$Comp
L pihat_template-rescue:GND-power #PWR0105
U 1 1 5C7AD97F
P 3675 6250
F 0 "#PWR0105" H 3675 6000 50 0001 C CNN
F 1 "GND" H 3680 6077 50 0000 C CNN
F 2 "" H 3675 6250 50 0001 C CNN
F 3 "" H 3675 6250 50 0001 C CNN
1 3675 6250
1 0 0 -1
$EndComp
Wire Wire Line
3675 6250 3675 6150
Wire Wire Line
3675 6150 4225 6150
$Comp
L pihat_template-rescue:Conn_01x06_Female-Connector J13
U 1 1 5C7AD987
P 4425 5950
F 0 "J13" H 4453 5926 50 0000 L CNN
F 1 "INA219 Sensor Board" H 4453 5835 50 0000 L CNN
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical" H 4425 5950 50 0001 C CNN
F 3 "~" H 4425 5950 50 0001 C CNN
1 4425 5950
1 0 0 -1
$EndComp
Wire Wire Line
4225 6250 4150 6250
Wire Wire Line
4150 6250 4150 6325
Wire Wire Line
4150 6325 4100 6325
$Comp
L pihat_template-rescue:power_+3.3V-PiHatAx5043-cache #PWR0124
U 1 1 5C7AD991
P 4100 6325
F 0 "#PWR0124" H 4100 6175 50 0001 C CNN
F 1 "power_+3.3V" H 4125 6275 50 0000 C CNN
F 2 "" H 4100 6325 50 0001 C CNN
F 3 "" H 4100 6325 50 0001 C CNN
1 4100 6325
1 0 0 -1
$EndComp
Text Notes 4525 6200 0 50 ~ 0
I2C Address 0x44
Text GLabel 4800 4150 0 50 Input ~ 0
-Z_Out
$Comp
L pihat_template-rescue:D-device D6
U 1 1 5C7B2D77
P 5350 4150
F 0 "D6" H 5350 4366 50 0000 C CNN
F 1 "1N5817" H 5350 4275 50 0000 C CNN
F 2 "Diode_THT:D_DO-41_SOD81_P3.81mm_Vertical_AnodeUp" H 5350 4150 50 0001 C CNN
F 3 "~" H 5350 4150 50 0001 C CNN
1 5350 4150
-1 0 0 -1
$EndComp
Wire Wire Line
5500 4150 5625 4150
Wire Wire Line
4800 4150 5200 4150
Wire Wire Line
5625 3775 5625 4150
Connection ~ 5625 3775
$Comp
L conn2:CONN_01X14 J2
U 1 1 5C7E4666
P 9325 5325
F 0 "J2" H 9403 5366 50 0000 L CNN
F 1 "CONN_01X14" H 9403 5275 50 0000 L CNN
F 2 "Connector_PinSocket_2.54mm:PinSocket_1x14_P2.54mm_Vertical" H 9325 5325 50 0001 C CNN
F 3 "" H 9325 5325 50 0001 C CNN
1 9325 5325
1 0 0 -1
$EndComp
Wire Wire Line
8950 5475 9125 5475
Wire Wire Line
8950 5675 9125 5675
Wire Wire Line
9075 5750 9075 5775
Wire Wire Line
9075 5775 9125 5775
Wire Wire Line
9000 5750 9075 5750
Wire Wire Line
9000 5550 9075 5550
Wire Wire Line
8950 5275 9125 5275
Wire Wire Line
9125 5375 9000 5375
Text GLabel 8950 5875 0 50 Input ~ 0
-Z_In
$Comp
L pihat_template-rescue:GND-power #PWR0125
U 1 1 5C82013E
P 9000 5950
F 0 "#PWR0125" H 9000 5700 50 0001 C CNN
F 1 "GND" H 8875 5925 50 0000 C CNN
F 2 "" H 9000 5950 50 0001 C CNN
F 3 "" H 9000 5950 50 0001 C CNN
1 9000 5950
1 0 0 -1
$EndComp
Wire Wire Line
8950 5875 9125 5875
Wire Wire Line
9075 5950 9075 5975
Wire Wire Line
9075 5975 9125 5975
Wire Wire Line
9000 5950 9075 5950
Wire Wire Line
8550 1325 8550 2300
Wire Wire Line
8650 925 8650 3100
Wire Wire Line
8050 1225 8050 2100
$Comp
L pihat_template-rescue:D-device D7
U 1 1 5C7BFAE7
P 4075 2800
F 0 "D7" H 4075 3016 50 0000 C CNN
F 1 "LED" H 4075 2925 50 0000 C CNN
F 2 "Diode_THT:D_DO-41_SOD81_P3.81mm_Vertical_AnodeUp" H 4075 2800 50 0001 C CNN
F 3 "~" H 4075 2800 50 0001 C CNN
1 4075 2800
0 1 -1 0
$EndComp
$Comp
L pihat_template-rescue:RESISTOR-passive R3
U 1 1 5C7C98E3
P 4075 2475
F 0 "R3" V 4025 2300 60 0000 L CNB
F 1 "220" V 4050 2550 40 0000 L CNN
F 2 "Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P5.08mm_Vertical" H 4075 2335 40 0001 C CNN
F 3 "" H 4075 2575 60 0000 C CNN
F 4 "-" H 4075 2635 45 0001 C CNN "Part"
F 5 "Passive" H 4305 2765 50 0001 C CNN "Family"
1 4075 2475
0 1 1 0
$EndComp
$Comp
L pihat_template-rescue:+3.3V-PiHatAx5043-cache #PWR07
U 1 1 5C7CE806
P 1025 2725
F 0 "#PWR07" H 1025 2575 50 0001 C CNN
F 1 "+3.3V" H 1040 2898 50 0000 C CNN
F 2 "" H 1025 2725 50 0001 C CNN
F 3 "" H 1025 2725 50 0001 C CNN
1 1025 2725
1 0 0 -1
$EndComp
$Comp
L pihat_template-rescue:+3.3V-PiHatAx5043-cache #PWR08
U 1 1 5C7D3690
P 4075 2300
F 0 "#PWR08" H 4075 2150 50 0001 C CNN
F 1 "+3.3V" H 4090 2473 50 0000 C CNN
F 2 "" H 4075 2300 50 0001 C CNN
F 3 "" H 4075 2300 50 0001 C CNN
1 4075 2300
1 0 0 -1
$EndComp
Wire Wire Line
4075 2300 4075 2375
Wire Wire Line
4075 2575 4075 2650
Wire Wire Line
4075 2950 4075 3000
Wire Wire Line
4075 3000 3750 3000
$EndSCHEMATC

@ -0,0 +1,3 @@
(fp_lib_table
(lib (name PJ-037AH)(type Legacy)(uri ${KIPRJMOD}/PJ-037AH.mod)(options "")(descr ""))
)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,12 +1,12 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.0.1)-4*
G04 #@! TF.CreationDate,2019-01-24T22:07:47-05:00*
G04 #@! TF.ProjectId,cubesatsim_solar,6375626573617473696D5F736F6C6172,B1.1*
G04 #@! TF.CreationDate,2019-03-02T10:25:11-05:00*
G04 #@! TF.ProjectId,cubesatsim_solar,6375626573617473696D5F736F6C6172,B2.0*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Paste,Bot*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 1/24/2019 10:07:47 PM*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 3/2/2019 10:25:11 AM*
%MOMM*%
%LPD*%
G01*

@ -1,12 +1,12 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.0.1)-4*
G04 #@! TF.CreationDate,2019-01-24T22:07:47-05:00*
G04 #@! TF.ProjectId,cubesatsim_solar,6375626573617473696D5F736F6C6172,B1.1*
G04 #@! TF.CreationDate,2019-03-02T10:25:11-05:00*
G04 #@! TF.ProjectId,cubesatsim_solar,6375626573617473696D5F736F6C6172,B2.0*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Legend,Bot*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 1/24/2019 10:07:47 PM*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 3/2/2019 10:25:11 AM*
%MOMM*%
%LPD*%
G01*

@ -1,18 +1,21 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.0.1)-4*
G04 #@! TF.CreationDate,2019-01-24T22:07:47-05:00*
G04 #@! TF.ProjectId,cubesatsim_solar,6375626573617473696D5F736F6C6172,B1.1*
G04 #@! TF.CreationDate,2019-03-02T10:25:12-05:00*
G04 #@! TF.ProjectId,cubesatsim_solar,6375626573617473696D5F736F6C6172,B2.0*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Profile,NP*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 1/24/2019 10:07:47 PM*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 3/2/2019 10:25:12 AM*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,0.100000*%
G04 #@! TA.AperFunction,NonConductor*
%ADD11C,0.100000*%
%ADD11C,0.000100*%
G04 #@! TD*
G04 #@! TA.AperFunction,NonConductor*
%ADD12C,0.100000*%
G04 #@! TD*
G04 APERTURE END LIST*
D10*
@ -67,7 +70,25 @@ G75*
G03X178880135Y-71220000I-2827821J0D01*
G01*
D11*
G04 #@! TO.C,J17*
G04 #@! TO.C,J1*
X169690000Y-135708000D02*
X168690000Y-135708000D01*
X168690000Y-135708000D02*
X168690000Y-132208000D01*
X168690000Y-132208000D02*
X169690000Y-132208000D01*
X169690000Y-132208000D02*
X169690000Y-135708000D01*
X175690000Y-135458000D02*
X174690000Y-135458000D01*
X174690000Y-135458000D02*
X174690000Y-132458000D01*
X174690000Y-132458000D02*
X175690000Y-132458000D01*
X175690000Y-132458000D02*
X175690000Y-135458000D01*
D12*
G04 #@! TO.C,J3*
X180764000Y-83796000D02*
X180774000Y-83796000D01*
X181169000Y-84291000D02*

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,12 +1,12 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.0.1)-4*
G04 #@! TF.CreationDate,2019-01-24T22:07:47-05:00*
G04 #@! TF.ProjectId,cubesatsim_solar,6375626573617473696D5F736F6C6172,B1.1*
G04 #@! TF.CreationDate,2019-03-02T10:25:11-05:00*
G04 #@! TF.ProjectId,cubesatsim_solar,6375626573617473696D5F736F6C6172,B2.0*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Paste,Top*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 1/24/2019 10:07:47 PM*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 3/2/2019 10:25:11 AM*
%MOMM*%
%LPD*%
G01*

File diff suppressed because it is too large Load Diff

@ -5,31 +5,56 @@ T2C0.0295
T3C0.0315
T4C0.0394
T5C0.0433
T6C0.0472
T7C0.1181
T6C0.1181
%
G90
G05
T1
X44010Y-30739
X43810Y-30739
X44110Y-52639
X44438Y-42560
X44438Y-49212
X44910Y-49739
X44945Y-51105
X46610Y-45039
X46610Y-45039
X47510Y-49239
X48210Y-50239
X45602Y-41396
X45810Y-46039
X46110Y-30339
X46810Y-50239
X47010Y-43139
X48638Y-40512
X49610Y-43639
X49658Y-44587
X49658Y-44587
X49710Y-32239
X50510Y-47039
X51710Y-40939
X52410Y-43539
X52910Y-45739
X53810Y-46639
X56038Y-42662
X56038Y-48267
X57010Y-46239
X57610Y-43039
X58183Y-50212
X57610Y-47389
X60563Y-44587
X61783Y-52212
X61610Y-43039
X61610Y-43039
X61610Y-49339
X62210Y-33339
X62610Y-43539
X64110Y-44539
X65610Y-41039
X66831Y-46618
X62610Y-48313
X65710Y-34239
X66110Y-45339
X66563Y-46639
X66748Y-48082
X66748Y-49991
X66810Y-38823
X66810Y-38823
X67710Y-43439
X68192Y-50857
X68210Y-40339
X69410Y-33239
X69483Y-46667
T2
X66848Y-31266
X68108Y-34888
@ -37,133 +62,141 @@ X68659Y-33825
X69840Y-31069
X71179Y-32841
T3
X55610Y-31514
X57610Y-31514
X59110Y-31539
X61110Y-31539
X67510Y-44639
X67510Y-46639
X55610Y-31514
X57610Y-31514
T4
X53410Y-47739
X53410Y-48739
X53410Y-49739
X53410Y-50739
X53410Y-51739
X53410Y-52739
X47610Y-33039
X52910Y-47639
X52910Y-48639
X52910Y-49639
X52910Y-50639
X52910Y-51639
X52910Y-52639
X68110Y-45539
X68110Y-46539
X68110Y-47539
X68110Y-48539
X68110Y-49539
X68110Y-50539
X68110Y-51539
X68110Y-52539
X68110Y-53539
X68110Y-54539
X68110Y-43539
X68110Y-44539
X44602Y-28957
X44602Y-29957
X45602Y-28957
X45602Y-29957
X46602Y-28957
X46602Y-29957
X47602Y-28957
X47602Y-29957
X48602Y-28957
X48602Y-29957
X49602Y-28957
X49602Y-29957
X50602Y-28957
X50602Y-29957
X51602Y-28957
X51602Y-29957
X52602Y-28957
X52602Y-29957
X53602Y-28957
X53602Y-29957
X54602Y-28957
X54602Y-29957
X55602Y-28957
X55602Y-29957
X56602Y-28957
X56602Y-29957
X57602Y-28957
X57602Y-29957
X58602Y-28957
X58602Y-29957
X59602Y-28957
X59602Y-29957
X60602Y-28957
X60602Y-29957
X61602Y-28957
X61602Y-29957
X62602Y-28957
X62602Y-29957
X63602Y-28957
X63602Y-29957
X56510Y-47739
X56510Y-48739
X56510Y-49739
X56510Y-50739
X56510Y-51739
X56510Y-52739
X49310Y-47739
X49310Y-48739
X49310Y-49739
X49310Y-50739
X49310Y-51739
X49310Y-52739
X63610Y-33039
X60035Y-47739
X60035Y-48739
X60035Y-49739
X60035Y-50739
X60035Y-51739
X60035Y-52739
X66810Y-36339
X67810Y-36339
X68810Y-36339
X69810Y-36339
X70810Y-36339
X60535Y-47839
X60535Y-48839
X60535Y-49839
X60535Y-50839
X60535Y-51839
X60535Y-52839
X49810Y-47839
X49810Y-48839
X49810Y-49839
X49810Y-50839
X49810Y-51839
X49810Y-52839
X68010Y-36039
X69010Y-36039
X46210Y-47739
X46210Y-48739
X46210Y-49739
X46210Y-50739
X46210Y-51739
X46210Y-52739
X44610Y-28939
X44610Y-29939
X45610Y-28939
X45610Y-29939
X46610Y-28939
X46610Y-29939
X47610Y-28939
X47610Y-29939
X48610Y-28939
X48610Y-29939
X49610Y-28939
X49610Y-29939
X50610Y-28939
X50610Y-29939
X51610Y-28939
X51610Y-29939
X52610Y-28939
X52610Y-29939
X53610Y-28939
X53610Y-29939
X54610Y-28939
X54610Y-29939
X55610Y-28939
X55610Y-29939
X56610Y-28939
X56610Y-29939
X57610Y-28939
X57610Y-29939
X58610Y-28939
X58610Y-29939
X59610Y-28939
X59610Y-29939
X60610Y-28939
X60610Y-29939
X61610Y-28939
X61610Y-29939
X62610Y-28939
X62610Y-29939
X63610Y-28939
X63610Y-29939
X63610Y-40039
X63510Y-47739
X63510Y-48739
X63510Y-49739
X63510Y-50739
X63510Y-51739
X63510Y-52739
X47610Y-40039
X66610Y-52739
X68972Y-52739
X42610Y-50539
X42610Y-51539
X42610Y-52539
X42610Y-53539
X42610Y-54539
X45710Y-47639
X45710Y-48639
X45710Y-49639
X45710Y-50639
X45710Y-51639
X45710Y-52639
X47610Y-40039
X42910Y-44539
X43910Y-44539
X44910Y-44539
X45910Y-44539
X46910Y-44539
X47910Y-44539
X63610Y-33039
X69010Y-37239
X69010Y-38239
X69010Y-39239
X69010Y-40239
X69010Y-41239
X69010Y-42239
X69010Y-43239
X69010Y-44239
X69010Y-45239
X69010Y-46239
X69010Y-47239
X69010Y-48239
X69010Y-49239
X69010Y-50239
X57010Y-47839
X57010Y-48839
X57010Y-49839
X57010Y-50839
X57010Y-51839
X57010Y-52839
X64010Y-47839
X64010Y-48839
X64010Y-49839
X64010Y-50839
X64010Y-51839
X64010Y-52839
T5
X59110Y-42089
X60610Y-42089
X55135Y-42064
X56635Y-42064
X47360Y-42039
X48860Y-42039
X51260Y-42064
X52760Y-42064
X62835Y-41964
X64335Y-41964
X67510Y-48139
X67510Y-49639
X65810Y-42039
X67310Y-42039
X53810Y-42039
X55310Y-42039
X50810Y-42039
X52310Y-42039
X56710Y-42039
X58210Y-42039
X59810Y-42089
X61310Y-42089
X62810Y-42039
X64310Y-42039
T6
X68110Y-37739
X68110Y-39239
X68110Y-40739
X68110Y-42239
T7
X65520Y-29457
X42685Y-48748
X65520Y-48748
X42685Y-48748
X42685Y-29457
T0
M30

Binary file not shown.

@ -0,0 +1,12 @@
config rtl_tcp main
option disabled '0'
option respawn '1'
option device_index ''
option address '192.168.8.1'
option port ''
option frequency '440386000'
option gain '30'
option samplerate ''
option buffers '8'
option num_linked_lists '8'
option ppm_error ''

@ -24,8 +24,10 @@ try:
from ina219 import INA219
from ina219 import DeviceRangeError
INA219DISABLE=-1
except:
INA219DISABLE=1
print"python package ina219 import failed! Install by typing: sudo pip install pi-ina219==1.1.0"
if INA219DISABLE !=1:
try:
@ -83,10 +85,11 @@ if INA219DISABLE !=1:
ina4a.sleep();
except:
FAIL = 1
print
print "+X (0x40) v=",ina40v, "V i=", ina40i, "mA p=", ina40p, "mW "
print "+Y (0x41) v=",ina41v, "V i=", ina41i, "mA p=", ina41p, "mW "
print "+Z (0x44) v=",ina44v, "V i=", ina44i, "mA p=", ina44p, "mW "
print "-X (0x45) v=",ina45v, "V i=", ina45i, "mA p=", ina45p, "mW "
print "5V Supply(0x4a) v=",ina4av, "V i=", ina4ai, "mA p=", ina4ap, "mW "
print
if INA219DISABLE !=1:
print
print "+X (0x40) v=",ina40v, "V i=", ina40i, "mA p=", ina40p, "mW "
print "+Y (0x41) v=",ina41v, "V i=", ina41i, "mA p=", ina41p, "mW "
print "+Z (0x44) v=",ina44v, "V i=", ina44i, "mA p=", ina44p, "mW "
print "Battery (0x45) v=",ina45v, "V i=", ina45i, "mA p=", ina45p, "mW "
print "5V Supply(0x4a) v=",ina4av, "V i=", ina4ai, "mA p=", ina4ap, "mW "
print

@ -0,0 +1,12 @@
<?xml version="1.0"?>
<ArrayOfMemoryEntry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MemoryEntry>
<IsFavourite>true</IsFavourite>
<Name>AMSAT CubeSat Simulator/Name>
<GroupName>Misc</GroupName>
<Frequency>440389653</Frequency>
<DetectorType>NFM</DetectorType>
<Shift>0</Shift>
<FilterBandwidth>13730</FilterBandwidth>
</MemoryEntry>
</ArrayOfMemoryEntry>

@ -4,7 +4,7 @@ It has been tested with Office 365 (Windows) and Office Excel for Mac (Version:
A version for Google Docs is available for copying and download at:
https://docs.google.com/spreadsheets/d/1JvvqCAMaiAT45BoUndiS_DKVOUskV6dXG9W9Ys_21Gw/edit?usp=sharing
http://cubesatsim.org/telem
Instructions:

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save

Powered by TurnKey Linux.