diff --git a/.gitignore b/.gitignore index c904aa40..04810931 100644 --- a/.gitignore +++ b/.gitignore @@ -41,4 +41,9 @@ transmit_dtmf uptime beacon_off battery_saver - +pi_zero2 +image_file.bin +logt.txt +telem.txt.bk +failure_mode.txt +sim_mode_auto diff --git a/gpl.txt b/LICENSE similarity index 100% rename from gpl.txt rename to LICENSE diff --git a/Makefile b/Makefile index dd699fbd..a2c69fcb 100644 --- a/Makefile +++ b/Makefile @@ -41,8 +41,10 @@ cubesatsim: libax5043.a cubesatsim: afsk/ax25.o cubesatsim: afsk/ax5043.o cubesatsim: TelemEncoding.o +cubesatsim: sensor_extension.o cubesatsim: main.o - gcc -std=gnu99 $(DEBUG_BEHAVIOR) -o cubesatsim -Wall -Wextra -L./ afsk/ax25.o afsk/ax5043.o TelemEncoding.o main.o -lwiringPi -lax5043 -lm +cubesatsim: codecAO40.o + gcc -std=gnu99 $(DEBUG_BEHAVIOR) -o cubesatsim -Wall -Wextra -L./ afsk/ax25.o afsk/ax5043.o TelemEncoding.o sensor_extension.o codecAO40.o main.o -lwiringPi -lax5043 -lm telem: telem.o gcc -std=gnu99 $(DEBUG_BEHAVIOR) -o telem -Wall -Wextra -L./ telem.o -lwiringPi @@ -51,6 +53,13 @@ TelemEncoding.o: TelemEncoding.c TelemEncoding.o: TelemEncoding.h gcc -std=gnu99 $(DEBUG_BEHAVIOR) -Wall -Wextra -c TelemEncoding.c +sensor_extension.o: sensor_extension.c + gcc -std=gnu99 $(DEBUG_BEHAVIOR) -Wall -Wextra -c sensor_extension.c + +codecAO40.o: codecAO40.c +codecAO40.o: codecAO40.h + gcc -std=gnu99 $(DEBUG_BEHAVIOR) -Wall -Wextra -c codecAO40.c + ax5043/generated/configcommon.o: ax5043/generated/configcommon.c ax5043/generated/configcommon.o: ax5043/generated/configrx.h ax5043/generated/configcommon.o: ax5043/generated/configtx.h diff --git a/README.md b/README.md index bdac8141..608132c6 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,16 @@ # CubeSatSim -The CubeSat Simulator https://github.com/alanbjohnston/CubeSatSim/wiki is a low cost satellite emulator that runs 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). +The CubeSat Simulator https://github.com/alanbjohnston/CubeSatSim/wiki is a low cost satellite emulator that runs 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) https://CubeSatSim.org + +CubeSatSim v2 The three custom PCBs are the Main, Battery and Solar boards. Information including schematics and gerbers is in https://CubeSatSim.org/hardware -cubesatsim-main-v2 0 1_top cubesatsim-battery-v2 0_top cubesatsim-solar-v2 0_top +cubesatsim-main-v2 0 1_top cubesatsim-battery-v2 0_top cubesatsim-solar-v2 0_top + +For information about the AMSAT STEM education program based on the CubeSatSim, see https://CubeSatSim.org/EducatorsGuide + +For STEM activities to do with the CubeSatSim, see the https://CubeSatSim.org/ActivityGuides There are several hardware versions and software branches to go with them - see below for information. @@ -12,9 +18,9 @@ See the Wiki Software Install page for more details: https://github.com/alanbjoh There are two ways to get the CubeSatSim(TM) software for your Pi. -One option is to download the disk image file and write it to a 16GB micro SD card or larger. The image is based on Raspberry Pi OS (Rasbian) Lite, dated December 2020. All software is installed, you just need to login to change your password and set your amateur radio callsign if you have one. You can run the ./update.sh script to update all packages and update and compile the latest CubeSatSim software. +One option is to download the disk image file and write it to a 16GB micro SD card or larger. The image is based on Raspberry Pi OS (Bulleye) Lite. All software is installed, you just need to login to change your password and set your amateur radio callsign if you have one. You can run the ./update.sh script to update all packages and update and compile the latest CubeSatSim software. -The other option is to start with a Raspberry Pi OS (Rasbian) image (Bullseye or Buster works) and run the installation script ./install.sh which will install and compile all the related software. This includes the following packages: +The other option is to start with a Raspberry Pi OS (Rasbian) image (only Bullseye works, Bookworm or Trixie are not compatible) and run the installation script ./install.sh which will install and compile all the related software. This includes the following packages: - wiringpi - git - libasound2-dev @@ -30,11 +36,23 @@ See the Wiki Software Install page for details: [https://github.com/alanbjohnsto ## Installation Script Option Steps -CubeSatSim runs on the Bullseye or Buster version of Raspberry Pi OS (Desktop or Lite), although a Pi Zero or Pi Zero W should only run Lite. Your Pi will need to have internet access to update settings and install packages. +CubeSatSim runs on the Bullseye version of Raspberry Pi OS (Desktop or Lite), although a Pi Zero or Pi Zero W should only run Lite. Your Pi will need to have internet access to update settings and install packages. + +For the status of our efforts to get the code running on Bookworm, see https://github.com/alanbjohnston/CubeSatSim/discussions/389 + +Here is a Bullseye Pi OS image that works: https://downloads.raspberrypi.org/raspios_full_armhf/images/raspios_full_armhf-2023-05-03/ Here is the file download link: https://downloads.raspberrypi.org/raspios_full_armhf/images/raspios_full_armhf-2023-05-03/2023-05-03-raspios-bullseye-armhf-full.img.xz + +You can use this with the Raspberry Pi Imager, but under `OS` you need to choose the `Use Custom` option at the very bottom of the list, then select the downloaded image `2023-05-03-raspios-bullseye-armhf-full.img.xz` + +Unfortunately, Customization is not supported with a Custom image, so you can't preset your username, password, localization, and WiFi settings. + +So after you write this image to your microSD card, you will need to connect a monitor and keyboard to your Pi Zero 2 to set these things (make sure you set `pi` as the username). After that, you can connect it to your WiFi and turn on ssh and vnc for remote access. + +You can then follow the software installation steps and it work work. The only hiccup is that if you run the installer script while running the Desktop, the Direwolf installation will freeze. But you can just cycle the power to the Pi Zero 2, then run the installer script again and it will complete successfully. Alternatively, if you use `sudo raspi-config` to change to Boot to Console (System/ Boot Auto Login/ Console or Console Auto Login) then the installer script will complete without any issues. *Note:* CubeSatSim expects to be installed as the `pi` user and references many paths in `/home/pi/*`. Installing as a different user will result in configuration files not saving along with many other issues. -To get the software follow these steps: +To install the software follow these steps: `sudo apt-get update` @@ -54,6 +72,8 @@ The installation script will run for quite a while. You will get prompted for y See the Wiki for more details about the CubeSatSim [https://github.com/alanbjohnston/CubeSatSim/wiki](https://github.com/alanbjohnston/CubeSatSim/wiki/v1.3.2-0.-Home) +Here are some Quick Start Guides for operating the CubeSatSim: https://CubeSatSim.org/qsg + Older Versions There are several versions of the hardware and software to go with them: diff --git a/codecAO40.c b/codecAO40.c new file mode 100644 index 00000000..f1646e46 --- /dev/null +++ b/codecAO40.c @@ -0,0 +1,529 @@ +#include +#include "codecAO40.h" + +/* ---------------------- */ +/* AO40 Encoder - Decoder */ +/* ---------------------- */ + +/* Scramble and RS encode 256 byte blocks of data into 5200 bits + * or Descramble and RS decode 5200 bits into the 256 bytes of data + * + * -------------------------------------------------------------------------- + * This decoder has evolved extensively through the work of Phil Karn. It draws + * on his own ideas and optimisations, and on the work of others. The lineage + * is as below, and parts of the authors' notices are included here. (JRM) + + * AO40 encoder / decoder + * Copyright 2002 Phil Karn, KA9Q + * May be used under the terms of the GNU General Public License (GPL) + * + * Reed-Solomon coding and decoding + * Phil Karn (karn@ka9q.ampr.org) September 1996 + * + * This file is derived from the program "new_rs_erasures.c" by Robert + * Morelos-Zaragoza (robert@spectra.eng.hawaii.edu) and Hari Thirumoorthy + * (harit@spectra.eng.hawaii.edu), Aug 1995 + * -------------------------------------------------------------------------- + * + * From the RM-Z & HT program: + * The encoding and decoding methods are based on the + * book "Error Control Coding: Fundamentals and Applications", + * by Lin and Costello, Prentice Hall, 1983, ISBN 0-13-283796-X + * Portions of this program are from a Reed-Solomon encoder/decoder + * in C, written by Simon Rockliff (simon@augean.ua.oz.au) on 21/9/89. + * -------------------------------------------------------------------------- + * + * From the 1989/1991 SR program (also based on Lin and Costello): + * This program may be freely modified and/or given to whoever wants it. + * A condition of such distribution is that the author's contribution be + * acknowledged by his name being left in the comments heading the program, + * Simon Rockliff, 26th June 1991 + * + */ + +/* Defines for RS Decoder(s) */ +#ifndef min +#define min(a,b) ((a) < (b) ? (a) : (b)) +#endif + +/* +CCodecAO40::CCodecAO40(void) +{ +} + + +CCodecAO40::~CCodecAO40(void) +{ +} + +*/ +//int CCodecAO40::mod255(int x) { +int mod255(int x) { + while (x >= 255) { + x -= 255; + x = (x >> 8) + (x & 255); + } + return x; +} + +//int CCodecAO40::decode_rs_8(char *data, int *eras_pos, int no_eras){ +int decode_rs_8(char *data, int *eras_pos, int no_eras){ + + int deg_lambda, el, deg_omega; + int i, j, r,k; + unsigned char u,q,tmp,num1,num2,den,discr_r; + unsigned char lambda[NROOTS+1], s[NROOTS]; /* Err+Eras Locator poly and syndrome poly */ + unsigned char b[NROOTS+1], t[NROOTS+1], omega[NROOTS+1]; + unsigned char root[NROOTS], reg[NROOTS+1], loc[NROOTS]; + int syn_error, count; + + /* form the syndromes; i.e., evaluate data(x) at roots of g(x) */ + for(i=0;i 0) { + /* Init lambda to be the erasure locator polynomial */ + lambda[1] = ALPHA_TO[mod255(PRIM*(NN-1-eras_pos[0]))]; + for (i = 1; i < no_eras; i++) { + u = mod255(PRIM*(NN-1-eras_pos[i])); + for (j = i+1; j > 0; j--) { + tmp = INDEX_OF[lambda[j - 1]]; + if(tmp != A0) + lambda[j] ^= ALPHA_TO[mod255(u + tmp)]; + } + } + } + for(i=0;i 0; j--){ + if (reg[j] != A0) { + reg[j] = mod255(reg[j] + j); + q ^= ALPHA_TO[reg[j]]; + } + } + if (q != 0) + continue; /* Not a root */ + /* store root (index-form) and error location number */ + root[count] = i; + loc[count] = k; + /* If we've already found max possible roots, + * abort the search to save time + */ + if(++count == deg_lambda) + break; + } + if (deg_lambda != count) { + /* + * deg(lambda) unequal to number of roots => uncorrectable + * error detected + */ + count = -1; + goto finish; + } + /* + * Compute err+eras evaluator poly omega(x) = s(x)*lambda(x) (modulo + * x**NROOTS). in index form. Also find deg(omega). + */ + deg_omega = 0; + for (i = 0; i < NROOTS;i++){ + tmp = 0; + j = (deg_lambda < i) ? deg_lambda : i; + for(;j >= 0; j--){ + if ((s[i - j] != A0) && (lambda[j] != A0)) + tmp ^= ALPHA_TO[mod255(s[i - j] + lambda[j])]; + } + if(tmp != 0) + deg_omega = i; + omega[i] = INDEX_OF[tmp]; + } + omega[NROOTS] = A0; + + /* + * Compute error values in poly-form. num1 = omega(inv(X(l))), num2 = + * inv(X(l))**(FCR-1) and den = lambda_pr(inv(X(l))) all in poly-form + */ + for (j = count-1; j >=0; j--) { + num1 = 0; + for (i = deg_omega; i >= 0; i--) { + if (omega[i] != A0) + num1 ^= ALPHA_TO[mod255(omega[i] + i * root[j])]; + } + num2 = ALPHA_TO[mod255(root[j] * (FCR - 1) + NN)]; + den = 0; + + /* lambda[i+1] for i even is the formal derivative lambda_pr of lambda[i] */ + for (i = min(deg_lambda,NROOTS-1) & ~1; i >= 0; i -=2) { + if(lambda[i+1] != A0) + den ^= ALPHA_TO[mod255(lambda[i+1] + i * root[j])]; + } + if (den == 0) { + count = -1; + goto finish; + } + /* Apply error to data */ + if (num1 != 0) { + data[loc[j]] ^= ALPHA_TO[mod255(INDEX_OF[num1] + INDEX_OF[num2] + NN - INDEX_OF[den])]; + } + } +finish: + if(eras_pos != NULL){ + for(i=0;i> 7); + c <<= 1; + interleave_symbol( Partab[m_conv_sr & CPOLYA]); + interleave_symbol(!Partab[m_conv_sr & CPOLYB]); /* Second encoder symbol is inverted */ + } +} + +/* Scramble a byte, convolutionally encode and interleave into frame */ +//void CCodecAO40::scramble_and_encode(unsigned char c){ +void scramble_and_encode(unsigned char c){ + c ^= Scrambler[m_encoded_bytes]; /* Scramble byte */ + encode_and_interleave(c,8); /* RS encode and place into reencode buffer */ +} + +/* Encodes the 256 byte source block RSdecdata[] into 5200 byte block of symbols +* results stored in m_encoded. +* On success encoded buffer is returned, an zeroed buffer on failure +*/ +//const unsigned char *CCodecAO40::encode(unsigned char *source_bytes, int byte_count) +const unsigned char *encode(unsigned char *source_bytes, int byte_count) +{ + if(BLOCKSIZE != byte_count || NULL == source_bytes ) + { + memset(m_encoded, 0, BLOCKSIZE); + return m_encoded; + } + + init_encoder(); + + for(int i=0;i>1]; + scramble_and_encode(c); + if(++m_encoded_bytes == 320){ + /* Tail off the convolutional encoder (flush) */ + encode_and_interleave(0,6); + } +} + + + +//void CCodecAO40::descramble_to_rsblocks(unsigned char viterbi_decoded[NBITS_OUT], char rsblocks[RSBLOCKS][NN]) +void descramble_to_rsblocks(unsigned char viterbi_decoded[NBITS_OUT], char rsblocks[RSBLOCKS][NN]) +{ + /* interleave into Reed Solomon codeblocks */ + memset(rsblocks,0,RSBLOCKS*NN); /* Zero rsblocks array */ + int di = 0; + int si = 0; + for(int col=RSPAD;col>7) ) + { + error_count++ ; + } + } + return error_count; +} diff --git a/codecAO40.h b/codecAO40.h new file mode 100644 index 00000000..3ca2c11c --- /dev/null +++ b/codecAO40.h @@ -0,0 +1,110 @@ +/* AO40 encoder / decoder + * Copyright 2002 Phil Karn, KA9Q + * May be used under the terms of the GNU General Public License (GPL) + * See CodecAO40.cpp for lineage + * + * This file is part of FUNcubeLib. + * + * FUNcubeLib is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * FUNcubeLib 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with FUNcubeLib If not, see . + * +*/ + +#pragma once + +//#include "fecConstants.h" + + +/* + Amsat P3 FEC Encoder/decoder system. Look-up tables + Created by Phil Karn KA9Q and James Miller G3RUH + Last modified 2003 Jun 20 +*/ + +/* Defines for Viterbi Decoder for r=1/2 k=7 (to CCSDS convention) */ +#define K 7 /* Constraint length */ +#define N 2 /* Number of symbols per data bit */ +#define CPOLYA 0x4f /* First convolutional encoder polynomial */ +#define CPOLYB 0x6d /* Second convolutional encoder polynomial */ + +#define SYNC_POLY 0x48 /* Sync vector PN polynomial */ + +#define NN 255 +#define KK 223 +#define NROOTS 32 /* NN-KK */ +#define A0 (NN) +#define FCR 112 +#define PRIM 11 +#define IPRIM 116 +#define BLOCKSIZE 256 /* Data bytes per frame */ +#define RSBLOCKS 2 /* Number of RS decoder blocks */ +#define RSPAD 95 /* Unused bytes in block (KK-BLOCKSIZE/RSBLOCKS) */ + +/* Defines for Interleaver */ +#define ROWS 80 /* Block interleaver rows */ +#define COLUMNS 65 /* Block interleaver columns */ +#define SYMPBLOCK (ROWS*COLUMNS) /* Encoded symbols per block */ + +/* Number of symbols in an FEC block that are */ +/* passed to the Viterbi decoder (320*8 + 6) */ +#define NBITS ((BLOCKSIZE+NROOTS*RSBLOCKS)*8+K-1) +/* Number of bits obtained from Viterbi decoder */ +#define NBITS_OUT (BLOCKSIZE+NROOTS*RSBLOCKS) + + +extern unsigned char m_RS_block[RSBLOCKS][NROOTS]; /* RS parity blocks */ +extern unsigned char m_encoded[SYMPBLOCK] ; /* encoded symbols */ +extern int m_encoded_bytes; /* Byte counter for encode_data() */ +extern int m_ileaver_index; /* Byte counter for interleaver */ +extern unsigned char m_conv_sr; /* Convolutional encoder shift register state */ + +extern const unsigned char RS_poly[]; +extern const unsigned char ALPHA_TO[]; +extern const unsigned char INDEX_OF[]; +extern const unsigned char Partab[]; +extern const unsigned char Scrambler[]; + +//class CCodecAO40 +//{ +//public: +// CCodecAO40(void); +// virtual ~CCodecAO40(void); + + int decode(unsigned char viterbi_decoded[NBITS_OUT], unsigned char *decoded_data); + + /* Encodes the 256 byte source block into 5200 byte block of symbols into m_encoded buffer */ + const unsigned char *encode( + unsigned char *source_bytes, /* input to encode */ + int byte_count); /* input length in bytes */ + + /* Compares raw input symbols to current buffer of encoded symbols and counts the errors */ + int count_errors( unsigned char *raw_symbols); + +//private: + int mod255(int x); + int decode_rs_8(char *data, int *eras_pos, int no_eras); + void scramble_and_encode(unsigned char c); + void encode_and_interleave(unsigned char c,int cnt); + + void descramble_to_rsblocks( + unsigned char viterbi_decoded[NBITS_OUT], + char rsblocks[RSBLOCKS][NN]); + + void init_encoder(void); + void encode_byte(unsigned char c); + void encode_parity(void); + + void interleave_symbol(int c); + + +//}; diff --git a/command b/command index dccd9382..4021f59b 100755 --- a/command +++ b/command @@ -1,6 +1,8 @@ #!/bin/bash -echo -e "\nCommand and Control script for CubeSatSim v2.0\n" +echo -e "\nCommand and Control script for CubeSatSim v2.1\n" + +sudo modprobe snd-aloop sudo modprobe snd-aloop @@ -37,9 +39,17 @@ else fi -echo "Waiting 20 seconds for USB" +uptime=`cat /proc/uptime | awk '{printf "%0.f", $1}'` + +echo -n "Uptime since boot is " +echo $uptime -sleep 20 +if [[ "$uptime" -lt "60" ]]; then + + echo "Waiting 20 seconds for USB" + + sleep 20 +fi FILE=/home/pi/CubeSatSim/command_control_direwolf if [[ $(arecord -l | grep "USB Audio Device") ]] && [ -f "$FILE" ]; then diff --git a/config b/config index 22fb272d..0a5993d3 100755 --- a/config +++ b/config @@ -436,6 +436,8 @@ elif [ "$1" = "-s" ]; then check_restart sudo echo "s" > /home/pi/CubeSatSim/.mode + fi + elif [ "$1" = "-t" ]; then echo @@ -519,7 +521,6 @@ elif [ "$1" = "-c" ]; then echo $callsign $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} echo $callsign $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} > /home/pi/CubeSatSim/sim.cfg - fi if [ "$norestart" = "1" ]; then diff --git a/direwolf/direwolf-transmit-dtmf-beacon.conf b/direwolf/direwolf-transmit-dtmf-beacon.conf deleted file mode 100644 index 6c022dea..00000000 --- a/direwolf/direwolf-transmit-dtmf-beacon.conf +++ /dev/null @@ -1,5 +0,0 @@ -ADEVICE hw:CARD=Loopback,DEV=0 hw:CARD=Headphones,DEV=0 -MYCALL AMSAT -CHANNEL 0 -MODEM 1200 -CBEACON dest="DTMF-3" info="10 #" delay=0 diff --git a/direwolf/direwolf-transmit-dtmf-bpsk.conf b/direwolf/direwolf-transmit-dtmf-bpsk.conf deleted file mode 100644 index a0ae9b54..00000000 --- a/direwolf/direwolf-transmit-dtmf-bpsk.conf +++ /dev/null @@ -1,5 +0,0 @@ -ADEVICE hw:CARD=Loopback,DEV=0 hw:CARD=Headphones,DEV=0 -MYCALL AMSAT -CHANNEL 0 -MODEM 1200 -CBEACON dest="DTMF-3" info="3 #" delay=0 diff --git a/direwolf/direwolf-transmit-dtmf-cw.conf b/direwolf/direwolf-transmit-dtmf-cw.conf deleted file mode 100644 index 8629754f..00000000 --- a/direwolf/direwolf-transmit-dtmf-cw.conf +++ /dev/null @@ -1,5 +0,0 @@ -ADEVICE hw:CARD=Loopback,DEV=0 hw:CARD=Headphones,DEV=0 -MYCALL AMSAT -CHANNEL 0 -MODEM 1200 -CBEACON dest="DTMF-3" info="5 #" delay=0 diff --git a/direwolf/direwolf-transmit-dtmf-fsk.conf b/direwolf/direwolf-transmit-dtmf-fsk.conf deleted file mode 100644 index f197e583..00000000 --- a/direwolf/direwolf-transmit-dtmf-fsk.conf +++ /dev/null @@ -1,5 +0,0 @@ -ADEVICE hw:CARD=Loopback,DEV=0 hw:CARD=Headphones,DEV=0 -MYCALL AMSAT -CHANNEL 0 -MODEM 1200 -CBEACON dest="DTMF-3" info="2 #" delay=0 diff --git a/direwolf/direwolf-transmit-dtmf-sstv.conf b/direwolf/direwolf-transmit-dtmf-sstv.conf deleted file mode 100644 index c58cb77f..00000000 --- a/direwolf/direwolf-transmit-dtmf-sstv.conf +++ /dev/null @@ -1,5 +0,0 @@ -ADEVICE hw:CARD=Loopback,DEV=0 hw:CARD=Headphones,DEV=0 -MYCALL AMSAT -CHANNEL 0 -MODEM 1200 -CBEACON dest="DTMF-3" info="4 #" delay=0 diff --git a/direwolf/direwolf-transmit-dtmf-aprs.conf b/direwolf/direwolf-transmit-dtmf.conf similarity index 71% rename from direwolf/direwolf-transmit-dtmf-aprs.conf rename to direwolf/direwolf-transmit-dtmf.conf index 37ddbe97..f5853dff 100644 --- a/direwolf/direwolf-transmit-dtmf-aprs.conf +++ b/direwolf/direwolf-transmit-dtmf.conf @@ -3,4 +3,5 @@ PTT GPIO 20 MYCALL AMSAT CHANNEL 0 MODEM 1200 -CBEACON dest="DTMF-3" info="1 #" delay=0 +KISSPORT 8003 +AGWPORT 8004 diff --git a/dtmf_aprs_cc.py b/dtmf_aprs_cc.py index 67b82ec8..6afef09e 100644 --- a/dtmf_aprs_cc.py +++ b/dtmf_aprs_cc.py @@ -18,7 +18,7 @@ def blink(times): if __name__ == "__main__": powerPin = 16 - txLed = 27 + txLed = 17 change_mode = False debug_mode = False counter = 1 @@ -187,6 +187,7 @@ if __name__ == "__main__": change_mode = False except: print("Error reading line (probably due to UTF-8 issue)") + print("Waiting 5 seconds to allow unplug and plug of soundcard") sleep(5) print("Done") diff --git a/fecConstants.h b/fecConstants.h new file mode 100644 index 00000000..850c0aa6 --- /dev/null +++ b/fecConstants.h @@ -0,0 +1,128 @@ +#pragma once + +/* + Amsat P3 FEC Encoder/decoder system. Look-up tables + Created by Phil Karn KA9Q and James Miller G3RUH + Last modified 2003 Jun 20 +*/ + +/* Defines for Viterbi Decoder for r=1/2 k=7 (to CCSDS convention) */ +#define K 7 /* Constraint length */ +#define N 2 /* Number of symbols per data bit */ +#define CPOLYA 0x4f /* First convolutional encoder polynomial */ +#define CPOLYB 0x6d /* Second convolutional encoder polynomial */ + +#define SYNC_POLY 0x48 /* Sync vector PN polynomial */ + +#define NN 255 +#define KK 223 +#define NROOTS 32 /* NN-KK */ +#define A0 (NN) +#define FCR 112 +#define PRIM 11 +#define IPRIM 116 +#define BLOCKSIZE 256 /* Data bytes per frame */ +#define RSBLOCKS 2 /* Number of RS decoder blocks */ +#define RSPAD 95 /* Unused bytes in block (KK-BLOCKSIZE/RSBLOCKS) */ + +/* Defines for Interleaver */ +#define ROWS 80 /* Block interleaver rows */ +#define COLUMNS 65 /* Block interleaver columns */ +#define SYMPBLOCK (ROWS*COLUMNS) /* Encoded symbols per block */ + +/* Number of symbols in an FEC block that are */ +/* passed to the Viterbi decoder (320*8 + 6) */ +#define NBITS ((BLOCKSIZE+NROOTS*RSBLOCKS)*8+K-1) +/* Number of bits obtained from Viterbi decoder */ +#define NBITS_OUT (BLOCKSIZE+NROOTS*RSBLOCKS) + +const unsigned char RS_poly[] = { + 249, 59, 66, 4, 43,126,251, 97, 30, 3,213, 50, 66,170, 5, 24 +}; + +/* Tables for RS decoder */ +/* Galois field log/antilog tables */ +const unsigned char ALPHA_TO[] = +{ + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x87, 0x89, 0x95, 0xad, 0xdd, 0x3d, 0x7a, 0xf4, + 0x6f, 0xde, 0x3b, 0x76, 0xec, 0x5f, 0xbe, 0xfb, 0x71, 0xe2, 0x43, 0x86, 0x8b, 0x91, 0xa5, 0xcd, + 0x1d, 0x3a, 0x74, 0xe8, 0x57, 0xae, 0xdb, 0x31, 0x62, 0xc4, 0x0f, 0x1e, 0x3c, 0x78, 0xf0, 0x67, + 0xce, 0x1b, 0x36, 0x6c, 0xd8, 0x37, 0x6e, 0xdc, 0x3f, 0x7e, 0xfc, 0x7f, 0xfe, 0x7b, 0xf6, 0x6b, + 0xd6, 0x2b, 0x56, 0xac, 0xdf, 0x39, 0x72, 0xe4, 0x4f, 0x9e, 0xbb, 0xf1, 0x65, 0xca, 0x13, 0x26, + 0x4c, 0x98, 0xb7, 0xe9, 0x55, 0xaa, 0xd3, 0x21, 0x42, 0x84, 0x8f, 0x99, 0xb5, 0xed, 0x5d, 0xba, + 0xf3, 0x61, 0xc2, 0x03, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x07, 0x0e, 0x1c, 0x38, 0x70, 0xe0, + 0x47, 0x8e, 0x9b, 0xb1, 0xe5, 0x4d, 0x9a, 0xb3, 0xe1, 0x45, 0x8a, 0x93, 0xa1, 0xc5, 0x0d, 0x1a, + 0x34, 0x68, 0xd0, 0x27, 0x4e, 0x9c, 0xbf, 0xf9, 0x75, 0xea, 0x53, 0xa6, 0xcb, 0x11, 0x22, 0x44, + 0x88, 0x97, 0xa9, 0xd5, 0x2d, 0x5a, 0xb4, 0xef, 0x59, 0xb2, 0xe3, 0x41, 0x82, 0x83, 0x81, 0x85, + 0x8d, 0x9d, 0xbd, 0xfd, 0x7d, 0xfa, 0x73, 0xe6, 0x4b, 0x96, 0xab, 0xd1, 0x25, 0x4a, 0x94, 0xaf, + 0xd9, 0x35, 0x6a, 0xd4, 0x2f, 0x5e, 0xbc, 0xff, 0x79, 0xf2, 0x63, 0xc6, 0x0b, 0x16, 0x2c, 0x58, + 0xb0, 0xe7, 0x49, 0x92, 0xa3, 0xc1, 0x05, 0x0a, 0x14, 0x28, 0x50, 0xa0, 0xc7, 0x09, 0x12, 0x24, + 0x48, 0x90, 0xa7, 0xc9, 0x15, 0x2a, 0x54, 0xa8, 0xd7, 0x29, 0x52, 0xa4, 0xcf, 0x19, 0x32, 0x64, + 0xc8, 0x17, 0x2e, 0x5c, 0xb8, 0xf7, 0x69, 0xd2, 0x23, 0x46, 0x8c, 0x9f, 0xb9, 0xf5, 0x6d, 0xda, + 0x33, 0x66, 0xcc, 0x1f, 0x3e, 0x7c, 0xf8, 0x77, 0xee, 0x5b, 0xb6, 0xeb, 0x51, 0xa2, 0xc3, 0x00, +}; + +const unsigned char INDEX_OF[]= +{ + 0xff, 0x00, 0x01, 0x63, 0x02, 0xc6, 0x64, 0x6a, 0x03, 0xcd, 0xc7, 0xbc, 0x65, 0x7e, 0x6b, 0x2a, + 0x04, 0x8d, 0xce, 0x4e, 0xc8, 0xd4, 0xbd, 0xe1, 0x66, 0xdd, 0x7f, 0x31, 0x6c, 0x20, 0x2b, 0xf3, + 0x05, 0x57, 0x8e, 0xe8, 0xcf, 0xac, 0x4f, 0x83, 0xc9, 0xd9, 0xd5, 0x41, 0xbe, 0x94, 0xe2, 0xb4, + 0x67, 0x27, 0xde, 0xf0, 0x80, 0xb1, 0x32, 0x35, 0x6d, 0x45, 0x21, 0x12, 0x2c, 0x0d, 0xf4, 0x38, + 0x06, 0x9b, 0x58, 0x1a, 0x8f, 0x79, 0xe9, 0x70, 0xd0, 0xc2, 0xad, 0xa8, 0x50, 0x75, 0x84, 0x48, + 0xca, 0xfc, 0xda, 0x8a, 0xd6, 0x54, 0x42, 0x24, 0xbf, 0x98, 0x95, 0xf9, 0xe3, 0x5e, 0xb5, 0x15, + 0x68, 0x61, 0x28, 0xba, 0xdf, 0x4c, 0xf1, 0x2f, 0x81, 0xe6, 0xb2, 0x3f, 0x33, 0xee, 0x36, 0x10, + 0x6e, 0x18, 0x46, 0xa6, 0x22, 0x88, 0x13, 0xf7, 0x2d, 0xb8, 0x0e, 0x3d, 0xf5, 0xa4, 0x39, 0x3b, + 0x07, 0x9e, 0x9c, 0x9d, 0x59, 0x9f, 0x1b, 0x08, 0x90, 0x09, 0x7a, 0x1c, 0xea, 0xa0, 0x71, 0x5a, + 0xd1, 0x1d, 0xc3, 0x7b, 0xae, 0x0a, 0xa9, 0x91, 0x51, 0x5b, 0x76, 0x72, 0x85, 0xa1, 0x49, 0xeb, + 0xcb, 0x7c, 0xfd, 0xc4, 0xdb, 0x1e, 0x8b, 0xd2, 0xd7, 0x92, 0x55, 0xaa, 0x43, 0x0b, 0x25, 0xaf, + 0xc0, 0x73, 0x99, 0x77, 0x96, 0x5c, 0xfa, 0x52, 0xe4, 0xec, 0x5f, 0x4a, 0xb6, 0xa2, 0x16, 0x86, + 0x69, 0xc5, 0x62, 0xfe, 0x29, 0x7d, 0xbb, 0xcc, 0xe0, 0xd3, 0x4d, 0x8c, 0xf2, 0x1f, 0x30, 0xdc, + 0x82, 0xab, 0xe7, 0x56, 0xb3, 0x93, 0x40, 0xd8, 0x34, 0xb0, 0xef, 0x26, 0x37, 0x0c, 0x11, 0x44, + 0x6f, 0x78, 0x19, 0x9a, 0x47, 0x74, 0xa7, 0xc1, 0x23, 0x53, 0x89, 0xfb, 0x14, 0x5d, 0xf8, 0x97, + 0x2e, 0x4b, 0xb9, 0x60, 0x0f, 0xed, 0x3e, 0xe5, 0xf6, 0x87, 0xa5, 0x17, 0x3a, 0xa3, 0x3c, 0xb7, +}; + +/* 8-bit parity table */ +const unsigned char Partab[] = { + 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, + 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, + 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, + 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, + 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, + 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, + 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, + 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, + 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, + 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, + 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, + 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, + 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, + 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, + 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, + 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, +}; + +/* Scramble byte table */ +const unsigned char Scrambler[]= +{ + 0xff, 0x48, 0x0e, 0xc0, 0x9a, 0x0d, 0x70, 0xbc, 0x8e, 0x2c, 0x93, 0xad, 0xa7, 0xb7, 0x46, 0xce, + 0x5a, 0x97, 0x7d, 0xcc, 0x32, 0xa2, 0xbf, 0x3e, 0x0a, 0x10, 0xf1, 0x88, 0x94, 0xcd, 0xea, 0xb1, + 0xfe, 0x90, 0x1d, 0x81, 0x34, 0x1a, 0xe1, 0x79, 0x1c, 0x59, 0x27, 0x5b, 0x4f, 0x6e, 0x8d, 0x9c, + 0xb5, 0x2e, 0xfb, 0x98, 0x65, 0x45, 0x7e, 0x7c, 0x14, 0x21, 0xe3, 0x11, 0x29, 0x9b, 0xd5, 0x63, + 0xfd, 0x20, 0x3b, 0x02, 0x68, 0x35, 0xc2, 0xf2, 0x38, 0xb2, 0x4e, 0xb6, 0x9e, 0xdd, 0x1b, 0x39, + 0x6a, 0x5d, 0xf7, 0x30, 0xca, 0x8a, 0xfc, 0xf8, 0x28, 0x43, 0xc6, 0x22, 0x53, 0x37, 0xaa, 0xc7, + 0xfa, 0x40, 0x76, 0x04, 0xd0, 0x6b, 0x85, 0xe4, 0x71, 0x64, 0x9d, 0x6d, 0x3d, 0xba, 0x36, 0x72, + 0xd4, 0xbb, 0xee, 0x61, 0x95, 0x15, 0xf9, 0xf0, 0x50, 0x87, 0x8c, 0x44, 0xa6, 0x6f, 0x55, 0x8f, + 0xf4, 0x80, 0xec, 0x09, 0xa0, 0xd7, 0x0b, 0xc8, 0xe2, 0xc9, 0x3a, 0xda, 0x7b, 0x74, 0x6c, 0xe5, + 0xa9, 0x77, 0xdc, 0xc3, 0x2a, 0x2b, 0xf3, 0xe0, 0xa1, 0x0f, 0x18, 0x89, 0x4c, 0xde, 0xab, 0x1f, + 0xe9, 0x01, 0xd8, 0x13, 0x41, 0xae, 0x17, 0x91, 0xc5, 0x92, 0x75, 0xb4, 0xf6, 0xe8, 0xd9, 0xcb, + 0x52, 0xef, 0xb9, 0x86, 0x54, 0x57, 0xe7, 0xc1, 0x42, 0x1e, 0x31, 0x12, 0x99, 0xbd, 0x56, 0x3f, + 0xd2, 0x03, 0xb0, 0x26, 0x83, 0x5c, 0x2f, 0x23, 0x8b, 0x24, 0xeb, 0x69, 0xed, 0xd1, 0xb3, 0x96, + 0xa5, 0xdf, 0x73, 0x0c, 0xa8, 0xaf, 0xcf, 0x82, 0x84, 0x3c, 0x62, 0x25, 0x33, 0x7a, 0xac, 0x7f, + 0xa4, 0x07, 0x60, 0x4d, 0x06, 0xb8, 0x5e, 0x47, 0x16, 0x49, 0xd6, 0xd3, 0xdb, 0xa3, 0x67, 0x2d, + 0x4b, 0xbe, 0xe6, 0x19, 0x51, 0x5f, 0x9f, 0x05, 0x08, 0x78, 0xc4, 0x4a, 0x66, 0xf5, 0x58, 0xff, + 0x48, 0x0e, 0xc0, 0x9a, 0x0d, 0x70, 0xbc, 0x8e, 0x2c, 0x93, 0xad, 0xa7, 0xb7, 0x46, 0xce, 0x5a, + 0x97, 0x7d, 0xcc, 0x32, 0xa2, 0xbf, 0x3e, 0x0a, 0x10, 0xf1, 0x88, 0x94, 0xcd, 0xea, 0xb1, 0xfe, + 0x90, 0x1d, 0x81, 0x34, 0x1a, 0xe1, 0x79, 0x1c, 0x59, 0x27, 0x5b, 0x4f, 0x6e, 0x8d, 0x9c, 0xb5, + 0x2e, 0xfb, 0x98, 0x65, 0x45, 0x7e, 0x7c, 0x14, 0x21, 0xe3, 0x11, 0x29, 0x9b, 0xd5, 0x63, 0xfd, +}; diff --git a/gps_client.py b/gps_client.py new file mode 100644 index 00000000..87c4aa45 --- /dev/null +++ b/gps_client.py @@ -0,0 +1,72 @@ +#! /usr/bin/env python3 +""" +example Python gpsd client +run this way: python3 example1.py.txt +""" + +# from https://gpsd.gitlab.io/gpsd/gpsd-client-example-code.html + +# this client is for the CubeSatSim Lite which does not have a Pico microcontroller + +try: + + import gps # the gpsd interface module + import time + + mode = -1 + lat = 0 + lon = 0 + alt = 0 + + session = gps.gps(mode=gps.WATCH_ENABLE) + + start = time.perf_counter() + + try: +# while (session.read() == 0) and ((time.perf_counter() - start) < 2) and (mode < 2): + while ((time.perf_counter() - start) < 2) and (mode < 2): + if session.waiting(2.0): + session.read() + + # print(gps.MODE_SET) + # print(session.valid) + if (session.valid): + # not useful, probably not a TPV message + # continue + + # print('Mode: %s(%d) Time: ' % + # (("Invalid", "NO_FIX", "2D", "3D")[session.fix.mode], + # session.fix.mode), end="") + # print time, if we have it +# print("%d " % session.fix.mode, end="") + if (session.fix.mode > mode): + mode = session.fix.mode + # if gps.TIME_SET & session.valid: + # print(session.fix.time, end="") + # else: + # print('n/a', end="") + + if gps.isfinite(session.fix.latitude): + lat = session.fix.latitude + if gps.isfinite(session.fix.longitude): + lon = session.fix.longitude + if gps.isfinite(session.fix.altitude): + alt = session.fix.altitude +# print("%.6f %.6f %.6f" % (session.fix.latitude, session.fix.longitude, session.fix.altitude)) + + # else: + # print(" 0 0 0") + + except KeyboardInterrupt: + # got a ^C. Say bye, bye + print('') + + # Got ^C, or fell out of the loop. Cleanup, and leave. + session.close() + print("%d %.6f %.6f %.1f" % (mode, lat, lon, alt)) +# exit(0) + +except: + print("-1 0 0 0") + exit(0) + diff --git a/groundstation/bands.json b/groundstation/bands.json index ea638154..dde2db0a 100644 --- a/groundstation/bands.json +++ b/groundstation/bands.json @@ -173,7 +173,8 @@ "upper_bound": 440000000, "frequencies": { "packet": 434900000, - "pocsag": 439987500 + "pocsag": 439987500, + "sstv": { "frequency": 434900000, "underlying": "nfm" } } }, { diff --git a/groundstation/fc_block_decode.py b/groundstation/fc_block_decode.py new file mode 100644 index 00000000..144b07b6 --- /dev/null +++ b/groundstation/fc_block_decode.py @@ -0,0 +1,213 @@ +import sys +from os import system +from time import sleep +import logging +import random +from PIL import Image, ImageDraw, ImageFont, ImageColor +import subprocess +import io +import datetime + +logging.basicConfig(format='%(message)s') +# logging.warning('CC-Warning!') + + +def fstr(template): + return eval(f"f'{template}'") + +def system_and_print(string): + print(string) + system(string) + +FC_EPS = 1 +FC_BOB = 25 +FC_SW = 50 +FC_PAYLOAD = 55 +extended = 1 + +sequence, image_id, image_count = 0, 0, 0 +Vx, Vy, Vz, Vb = 0, 0, 0, 0 +Ix, Iy, Iz, Ic, Ib = 0, 0, 0, 0, 0 +frame_count, frame_type = 0, " " +frequency_string, frequency, errors, first_byte = " ", 0, 0, 0 + +#html_dir = "/home/pi/CubeSatSim/groundstation/public_html/" +html_dir = "/home/pi/fctelem/public_html/" +image_dir = "/home/pi/fctelem/" +image = "image_file" +ssdv = "/home/pi/ssdv/ssdv -d -J " + +date_time_string = str(datetime.datetime.now()) +date_time = date_time_string[:21] + +system_and_print("sudo rm " + image_dir + image) +#system_and_print("sudo rm " + html_dir + "*") +system_and_print("sudo rm " + html_dir + "images/*") + +try: + with open('/home/pi/fctelem/fctelem.cfg', 'r') as config: + config_string = config.read() + print(config_string) +except: + print("Error loading fctelem.cfg") + +#system_and_print("cp /home/pi/CubeSatSim/sstv/sstv_image_1_320_x_256.jpg " + html_dir + "image_file.jpeg") + +head_string = 'FUNcube CubeSatSim Telemetry\n\n

FUNcube CubeSatSim Telemetry

' + \ + 'fcdctl ' + config_string + '

  
All images
' +foot_string = '' +telem_string_format = " Image: {image_id:3d} count: {image_count:2d}

" + \ + " Vx(mV): {Vx:5d} Vy(mV): {Vy:5d} Vz(mV): {Vz:5d}

" + \ + " Ix(mA): {Ix:5d} Iy(mA): {Iy:5d} Iz(mA): {Iz:5d}

" + \ + " Vbat(mV): {Vb:5d} Ibat(mA): {Ib:5d}

" + \ + " Freq: {frequency:10.1f} errors: {errors} Seq: {sequence:d} {frame_type} frames: {frame_count:d}" +label_string = "date time , frm, freq off, err, h, seq, frame, img, c, Vx, Vy, Vz, Ix, Iy, Iz, Vb, Ib " +label_string_html = label_string.replace(" "," ") +csv_format = "{date_time:21s}, {frame_count:4d}, {frequency:10.1f}, {errors:3d}, {first_byte: 2x}, {sequence:5d}, {frame_type:9s}, {image_id:3d}, {image_count:2d}, " + \ + "{Vx:5d}, {Vy:5d}, {Vz:5d}, {Ix:5d}, {Iy:5d}, {Iz:5d}, {Vb:5d}, {Ib:5d}" + + +telem_string = fstr(telem_string_format) +with open(html_dir + "index.html", "w+") as html_file: + html_file.write(head_string) + html_file.write(telem_string) + html_file.write(foot_string) + +with open(html_dir + "images/telem.csv.txt", "w+") as csv_file: +# csv_file.write(csv_format) + csv_file.write(label_string) + csv_file.write("\n") + +image_id = 256 # set illegal image ID for null # random.randint(0, 255) +image_count = 1; + +# sys.exit() + +if __name__ == "__main__": + debug_mode = False + counter = 1 + if (len(sys.argv)) > 1: +# print("There are arguments!") + if ('d' == sys.argv[1]): + debug_mode = True + print(debug_mode) + for line in sys.stdin: + if (debug_mode): + print(line, end =" ") + logging.warning(line) + + if ((line.find("data: ")) > 0): + print("\ndata block found!\n") + frame_count += 1 + data_block_string = line.split() +# print(data_block_string) + frequency_string = data_block_string[2] + print(frequency_string) + frequency = float(frequency_string[:len(frequency_string) - 2]) + print(frequency) + errors = int(data_block_string[5]) + data_block = [int(number_string,16) for number_string in data_block_string[7:]] + first_byte = data_block[0] + if (first_byte == 0xE0) or (first_byte == 0xE1): + if (data_block[0] == 0xE0): + frame_type = "RT1+IMG1" + if (data_block[0] == 0xE1): + frame_type = "RT2+IMG2" +# print(frame_type) + print("Frame Type: {:02X}".format(data_block[0])) + print("Sat Id: {:02X}".format(data_block[1])) + print(data_block[extended + 51], data_block[extended + 50], data_block[extended + 49]) + sequence = data_block[extended + 51] + data_block[extended + 50] * 2**8 + data_block[extended + 49] * 2**16 + print("Sequence number: {:d}".format(sequence)) + Vx = (data_block[extended + FC_EPS + 0] * 2**6) + (data_block[extended + FC_EPS + 1] >> 2) + Vy = (0x03 & data_block[extended + FC_EPS + 1]) * 2**12 + data_block[extended + FC_EPS + 2] * 2**4 + (data_block[extended + FC_EPS + 3] >> 4) + Vz = (0x0f & data_block[extended + FC_EPS + 3]) * 2**10 + data_block[extended + FC_EPS + 4] * 2**2 + (data_block[extended + FC_EPS + 5] >> 6) + Vb = (0x3f & data_block[extended + FC_EPS + 5]) * 2**8 + data_block[extended + FC_EPS + 6] + Ix = data_block[extended + FC_EPS + 7] * 2**2 + (data_block[extended + FC_EPS + 8] >> 6) + Iy = (0x3f & data_block[extended + FC_EPS + 8]) * 2**4 + (data_block[extended + FC_EPS + 9] >> 4) + Iz = (0x0f & data_block[extended + FC_EPS + 9]) * 2**6 + (data_block[extended + FC_EPS + 10] >> 2) + Ic = (0x03 & data_block[extended + FC_EPS + 10]) * 2**8 + data_block[extended + FC_EPS + 11] + Ib = data_block[extended + FC_EPS + 12] * 2**2 + ((0xc0 & data_block[extended + FC_EPS + 13]) >> 6) + if (Ib == 0): + Ib = 0 - Ic + print("Vx: {:d} mV Vy: {:d} mV Vz: {:d} mV".format(Vx, Vy, Vz)) + print('Payload {:x} {:x} \n'.format(data_block[FC_PAYLOAD + extended], data_block[FC_PAYLOAD + extended + 1])) + if (data_block[FC_PAYLOAD + extended] == 0x55) and (data_block[FC_PAYLOAD + extended + 1] == 0x68): + try: + print("Writing this image payload block to file " + image + "_payload") + immutable_payload = bytes(bytearray(data_block[(FC_PAYLOAD + extended):])) # payload) +# print(immutable_payload) + with open(image_dir + image + "_payload", "wb") as binary_file: + binary_file.write(immutable_payload) + except: + print("File error") +# try: + print("Processing payload with ssdv, saving image to " + image + "_paylad.jpeg and log to ssdv_output") + system_and_print(ssdv + image_dir + image + "_payload " + + image_dir + image + "_payload.jpeg 2>&1 | sudo tee /home/pi/fctelem/ssdv_output") + print("Parsing ssdv_output") + with open("/home/pi/fctelem/ssdv_output", "r") as file: + for line in file: +# print("line:") +# print(line) + if ((line.find("mage ID:")) > 0): +# print("\nImage ID found!\n") + image_id_string = line.split() +# print(image_id_string) + new_image_id = int(image_id_string[2], 16) +# print(new_image_id) + if (new_image_id != image_id): + print("End of image") + if (image_id != 256): + print("Saving complete image") + system_and_print("cp " + html_dir + "image_file.jpeg " + html_dir + "images/" + image + str(image_id) + "." + str(image_count) + ".jpeg") + system_and_print("sudo rm " + image_dir + image) + else: + system_and_print("sudo rm " + image_dir + image) + print("New Image ID: ") + print(new_image_id) + image_id = new_image_id + image_count = 1 + else: + image_count += 1 + print("new image_count:") + print(image_count) + print("Appending block to file " + image) + with open(image_dir + image, "ab") as binary_file: + binary_file.write(immutable_payload) + print("Running ssdv with all blocks in file " + image + " saving as " + html_dir + "image_file.jpeg") + system_and_print(ssdv + image_dir + image + " " + html_dir + "image_file.jpeg") + telem_string = fstr(telem_string_format) + print("Writing index.html file") + with open(html_dir + "index.html", "w") as html_file: + html_file.write(head_string) + html_file.write(telem_string) + html_file.write("
")
+									with open(html_dir + "/images/telem.csv.txt", "r") as csv_file:
+										for line in csv_file:
+											html_file.write(line)
+											html_file.write("
") + date_time_string = str(datetime.datetime.now()) + date_time = date_time_string[:21] + tlm_string = fstr(csv_format) + html_file.write(tlm_string) + html_file.write("

") + html_file.write(foot_string) + else: + print("Payload not an image!") + # image_id = 256 # set illegal image_id to force new image + else: + print("Unknown Sat Id or Frame") + sequence, image_id, image_count = 0, 0, 0 + Vx, Vy, Vz, Vb = 0, 0, 0, 0 + Ix, Iy, Iz, Ic, Ib = 0, 0, 0, 0, 0 + frame_count, frame_type = 0, " " + frequency_string, errors = " ", 0 + + tlm_string = fstr(csv_format) + with open(html_dir + "/images/telem.csv.txt", "a") as csv_file: + csv_file.write(tlm_string) + csv_file.write("\n") + + diff --git a/groundstation/fctelem.desktop b/groundstation/fctelem.desktop new file mode 100644 index 00000000..26f353fd --- /dev/null +++ b/groundstation/fctelem.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Application +Exec=/home/pi/CubeSatSim/groundstation/fctelem.sh +Name=FUNcube Telem +Comment=FUNcube Telemetry Web App +Icon=/home/pi/Icons/fc-icon.png +Path=/home/pi +Terminal=true +Categories=HamRadio +Keywords=Ham Radio;SDR diff --git a/groundstation/fctelem.sh b/groundstation/fctelem.sh new file mode 100755 index 00000000..4beb88a3 --- /dev/null +++ b/groundstation/fctelem.sh @@ -0,0 +1,154 @@ +#!/bin/bash +# script to run FUNcube Pi Telemetry App + +echo "Script to run FUNcube CubeSatSim Telemetry" + +echo + +echo "The Chromium browser will load in a few seconds with fctelem." + +echo "You can also use another web browser if you are on the same network as your Pi." + + +echo + +ip=$(hostname -I|cut -f1 -d ' ') + +echo "IP Address to use in web browser is: $ip:8002" + +echo + +ssid=$(iwgetid -r) + +echo "Note: you need to be on the Wifi network: $ssid" + +echo + +sudo killall -9 fctelem &>/dev/null + +sudo killall -9 python3 &>/dev/null + +#sudo killall -9 java &>/dev/null + +#sudo killall -9 rtl_fm &>/dev/null + +#pkill -o chromium &>/dev/null + +#sudo killall -9 rtl_tcp &>/dev/null + +#sudo killall -9 CubicSDR &>/dev/null + +#sudo killall -9 qsstv &>/dev/null + +#sudo killall -9 aplay &>/dev/null + +#sudo killall -9 direwolf &>/dev/null + +#sudo killall -9 zenity &>/dev/null + +#sudo systemctl stop rtl_tcp + +#sudo systemctl stop openwebrx + + +if [[ $(/home/pi/fcdctl/fcdctl -l | grep "No FCD found") ]]; then + echo "No FUNcube Dongle Found!" + echo "Plug in FCD and try running again" + sleep 30 + exit +else + echo "FCD Found! Setting Gain" + + FILE=/home/pi/fctelem/fctelem.cfg + if [ -f "$FILE" ]; then + +# config_string=$(> FILE + fi + + /home/pi/fcdctl/fcdctl $config_string + + # /home/pi/fcdctl/fcdctl -g 1 -m 1 -i 0 + echo + echo "You can adjust the FCD settings by running the command fcdctl/fcdctl" + echo +fi + + +frequency=$(zenity --timeout=10 --list 2>/dev/null --width=410 --height=180 --title="FUNcube Telem Decoding" --text="Choose the frequency for FUNcube decoding:" --column="kHz" --column="Use" 434900 "CubeSatSim" Other "Choose another frequency") + +echo $frequency + +if [ -z "$frequency" ]; then + + echo "No choice made." + frequency=434900 + +fi + +if [ "$frequency" = "434900" ]; then + + frequency=434900000 + +elif [ "$frequency" = "Other" ]; then + + echo + + echo "Enter the frequency in kiloHertz" + + echo + + read -r frequency + + frequency=$frequency"000" + +fi + +echo "Frequency is" $frequency +echo +echo "If your CubeSatSim is transmitting in FUNcube mode (mode 7) you should get some frames after 30 seconds" +echo + +sleep 3 + +echo "connectport=64516 connectaddress='localhost' autotuneoffset=100000 outdir='/home/pi/go/app/fctelem/data' frequency=$frequency" > /home/pi/fctelem/fcdecode.conf + +# FILE=/home/pi/CubeSatSim/groundstation/public_html +FILE=/home/pi/CubeSatSim/fctelem/public_html +if [ ! -d "$FILE" ]; then + echo "Making public_html directory" + mkdir /home/pi/fctelem/public_html + mkdir /home/pi/fctelem/public_html/images +fi + +cd /home/pi/fctelem/public_html + +cp /home/pi/CubeSatSim/groundstation/index.html . + +cp /home/pi/CubeSatSim/sstv/sstv_image_1_320_x_256.jpg ./image_file.jpeg + +python3 -m http.server 8002 & + +setsid chromium-browser --check-for-update-interval=1 --simulate-critical-update --noerrdialogs --disable-infobars http://127.0.0.1:8002 &>/dev/null & + +cd /home/pi/fctelem + +sudo ./fctelem | python3 /home/pi/CubeSatSim/groundstation/fc_block_decode.py + +# sleep 10 + +#read val + +#sudo killall -9 fctelem &>/dev/null + +#sudo killall -9 python3 &>/dev/null + +sleep 10 + +#$SHELL diff --git a/groundstation/fox-profile.sh b/groundstation/fox-profile.sh index 1610e293..91290402 100755 --- a/groundstation/fox-profile.sh +++ b/groundstation/fox-profile.sh @@ -5,6 +5,8 @@ echo "Script to change your default FoxTelem profile for FIAB v4" echo +source /home/pi/venv/bin/activate + sudo rm /home/pi/FoxTelemetryData/.foxprofile /home/pi/CubeSatSim/groundstation/fox-run.sh diff --git a/groundstation/fox-run.sh b/groundstation/fox-run.sh index 3f1ec4c5..d321719d 100755 --- a/groundstation/fox-run.sh +++ b/groundstation/fox-run.sh @@ -82,8 +82,8 @@ if [ ! -f "$FILE" ]; then sudo sed -i "s/stationDetails=.*/stationDetails=FoxInABox/g" /home/pi/FoxTelemetryData/FoxTelem.properties - # sudo sed -i "s/soundCard=NONE/soundCard=RTL SDR/g" /home/pi/FoxTelemetryData/FoxTelem.properties # change to FunCube - sudo sed -i "s/soundCard=NONE/soundCard=Direct Audio Device\: FUNcube Dongle V2.0, USB Audi/g" /home/pi/FoxTelemetryData/FoxTelem.properties # change to FunCube + # sudo sed -i "s/soundCard=NONE/soundCard=RTL SDR/g" /home/pi/FoxTelemetryData/FoxTelem.properties # change to FUNcbe + sudo sed -i "s/soundCard=NONE/soundCard=Direct Audio Device\: FUNcube Dongle V2.0, USB Audi/g" /home/pi/FoxTelemetryData/FoxTelem.properties # change to FUNcube diff --git a/groundstation/frequency_manager_config.json b/groundstation/frequency_manager_config.json new file mode 100644 index 00000000..31e6e4b8 --- /dev/null +++ b/groundstation/frequency_manager_config.json @@ -0,0 +1,171 @@ +{ + "bookmarkDisplayMode": 1, + "lists": { + "General": { + "bookmarks": { + "AO-73": { + "bandwidth": 5000.0, + "frequency": 145935000.0, + "mode": 4 + }, + "APRS Packet": { + "bandwidth": 12500.0, + "frequency": 144390000.0, + "mode": 0 + }, + "ATC Clearance Delivery": { + "bandwidth": 12500.0, + "frequency": 118850000.0, + "mode": 2 + }, + "ATC Ground East": { + "bandwidth": 12500.0, + "frequency": 121900000.0, + "mode": 2 + }, + "ATC Ground West": { + "bandwidth": 12500.0, + "frequency": 121650000.0, + "mode": 2 + }, + "ATC Local East": { + "bandwidth": 12500.0, + "frequency": 118500000.0, + "mode": 2 + }, + "ATC Local West": { + "bandwidth": 12500.0, + "frequency": 135100000.0, + "mode": 2 + }, + "CAS-4A": { + "bandwidth": 5000.0, + "frequency": 145836000.0, + "mode": 4 + }, + "CAS-4B": { + "bandwidth": 5000.0, + "frequency": 145893000.0, + "mode": 4 + }, + "CubeSatSim": { + "bandwidth": 12500.0, + "frequency": 434900000.0, + "mode": 0 + }, + "Ham APRS": { + "bandwidth": 12500.0, + "frequency": 144390000.0, + "mode": 2 + }, + "Ham Beacon PHL": { + "bandwidth": 3000.0, + "frequency": 144272000.0, + "mode": 4 + }, + "Ham Cherry Hill": { + "bandwidth": 201869.15625, + "frequency": 145370000.0, + "mode": 0 + }, + "Ham Munroe": { + "bandwidth": 12500.0, + "frequency": 145390000.0, + "mode": 0 + }, + "Ham Newtown": { + "bandwidth": 12500.0, + "frequency": 147060000.0, + "mode": 0 + }, + "Ham Paoli": { + "bandwidth": 18495.533203125, + "frequency": 145130000.0, + "mode": 0 + }, + "ISS": { + "bandwidth": 5000.0, + "frequency": 437800000.0, + "mode": 0 + }, + "ISS-SSTV": { + "bandwidth": 5000.0, + "frequency": 145800000.0, + "mode": 0 + }, + "NOAA Allentown": { + "bandwidth": 18495.533203125, + "frequency": 162400000.0, + "mode": 0 + }, + "NOAA Harrisburg": { + "bandwidth": 18495.533203125, + "frequency": 162550000.0, + "mode": 0 + }, + "NOAA Hiburnia Park": { + "bandwidth": 18495.533203125, + "frequency": 162425000.0, + "mode": 0 + }, + "NOAA PHL": { + "bandwidth": 18495.533203125, + "frequency": 162475000.0, + "mode": 0 + }, + "NOAA Sudlersville": { + "bandwidth": 18495.533203125, + "frequency": 162500000.0, + "mode": 0 + }, + "PHL": { + "bandwidth": 12500.0, + "frequency": 133275000.0, + "mode": 2 + }, + "PHL 2": { + "bandwidth": 12500.0, + "frequency": 133475000.0, + "mode": 2 + }, + "PHL 3": { + "bandwidth": 12500.0, + "frequency": 133500000.0, + "mode": 2 + }, + "PHL 5": { + "bandwidth": 12500.0, + "frequency": 133575000.0, + "mode": 2 + }, + "PHL 6": { + "bandwidth": 12500.0, + "frequency": 134600000.0, + "mode": 2 + }, + "PHL 7": { + "bandwidth": 12500.0, + "frequency": 135450000.0, + "mode": 2 + }, + "PHL 8": { + "bandwidth": 12500.0, + "frequency": 128795000.0, + "mode": 2 + }, + "PHL Automated": { + "bandwidth": 18495.533203125, + "frequency": 133400000.0, + "mode": 0 + }, + "The Roar WXVL": { + "bandwidth": 201869.15625, + "frequency": 89100000.0, + "mode": 1 + } + }, + "showOnWaterfall": true + } + }, + "selectedList": "General" +} \ No newline at end of file diff --git a/groundstation/index.html b/groundstation/index.html new file mode 100644 index 00000000..df3363d5 --- /dev/null +++ b/groundstation/index.html @@ -0,0 +1,9 @@ + + +FUNcube CubeSatSim Telemetry +

+ + +

diff --git a/groundstation/packet.sh b/groundstation/packet.sh index 2b47089f..2213b052 100755 --- a/groundstation/packet.sh +++ b/groundstation/packet.sh @@ -152,6 +152,7 @@ echo echo -e "Auto decoding APRS packets on $frequency Hz" + # direwolf -r 48000 -c /home/pi/CubeSatSim/groundstation/direwolf/direwolf.conf -t 0 & setsid direwolf -r 48000 -c /home/pi/CubeSatSim/groundstation/direwolf/direwolf.conf & #fi diff --git a/groundstation/sdr.sh b/groundstation/sdr.sh index 2821d7c0..54ddb7a3 100755 --- a/groundstation/sdr.sh +++ b/groundstation/sdr.sh @@ -53,6 +53,8 @@ sudo /etc/init.d/alsa-utils start sudo killall -9 rtl_fm &>/dev/null +sudo killall -9 rtl_fm &>/dev/null + sudo systemctl restart openwebrx sleep 10 diff --git a/groundstation/sstv_decode_prompt.sh b/groundstation/sstv_decode_prompt.sh index ae49a758..07c4cf05 100755 --- a/groundstation/sstv_decode_prompt.sh +++ b/groundstation/sstv_decode_prompt.sh @@ -135,7 +135,7 @@ set -- $value #rtl_fm -M fm -f 434.9M -s 48k | aplay -D hw:${2:0:1},0,0 -r 48000 -t raw -f S16_LE -c 1 #rtl_fm -M fm -f 434.9M -s 48k | tee >(aplay -D hw:${2:0:1},0,0 -r 48000 -t raw -f S16_LE -c 1) | aplay -D hw:0,0 -r 48000 -t raw -f S16_LE -c 1 -rtl_fm -f $frequency -s 48k | tee >(aplay -D hw:${2:0:1},0,0 -r 48000 -t raw -f S16_LE -c 1) | aplay -r 48000 -t raw -f S16_LE -c 1 +rtl_fm -M fm -f $frequency -s 48k | tee >(aplay -D hw:${2:0:1},0,0 -r 48000 -t raw -f S16_LE -c 1) | aplay -r 48000 -t raw -f S16_LE -c 1 rtl_fm -M fm -f $frequency -s 48k | aplay -D hw:${2:0:1},0,0 -r 48000 -t raw -f S16_LE -c 1 diff --git a/hardware/frame/v2.0/2u/cubesatsim_frame_connector.v2.0.stl b/hardware/frame/v2.0/2u/cubesatsim_frame_connector.v2.0.stl new file mode 100644 index 00000000..b63a2af7 Binary files /dev/null and b/hardware/frame/v2.0/2u/cubesatsim_frame_connector.v2.0.stl differ diff --git a/hardware/frame/v2.0/2u/readme.md b/hardware/frame/v2.0/2u/readme.md new file mode 100644 index 00000000..ec399b3b --- /dev/null +++ b/hardware/frame/v2.0/2u/readme.md @@ -0,0 +1,7 @@ +Here is the source for the 2U Connector part: https://cad.onshape.com/documents/eecb39d3cd81220d3a56ce06/v/fdc9aca356206986ef6440e6/e/f881e9547bb3cd4fd653d041 + +You can export it in other formats + +You will also need two additional frame sides + +Here's how to upgrade a 1U CubeSatSim https://github.com/alanbjohnston/CubeSatSim/wiki/Upgrading-to-2U diff --git a/hardware/frame/v2.0/plug_circle_24.stl b/hardware/frame/v2.0/plug_circle_24.stl new file mode 100644 index 00000000..890e3305 Binary files /dev/null and b/hardware/frame/v2.0/plug_circle_24.stl differ diff --git a/hardware/frame/v2.0/readme.md b/hardware/frame/v2.0/readme.md index ccb58d26..b5828009 100644 --- a/hardware/frame/v2.0/readme.md +++ b/hardware/frame/v2.0/readme.md @@ -2,10 +2,12 @@ These are the STL files for printing the frame. ![CubeSatSim Frame v2.0](https://github.com/user-attachments/assets/bbcedd26-cc1b-488d-86fa-b6e12f46bd6a) -You will need to print two of the top/bottom, and one of each side +You will need to print two of the top/bottom, and one of each side, PLA material, 20% infill. The source is availale at: https://cad.onshape.com/documents/ba47819ff100597297d1d967/w/f19409ec7cd5459afb429cb9/e/a0e0cc37dee6fb879c4bcc2b https://cad.onshape.com/documents/1515e31c7fa5f6258ef39ae7/w/36f6069826ee0c0263f8d85e/e/2b7801717a8e1af3df455057 https://cad.onshape.com/documents/188300bd4469521b14597507/w/546e1730182c1520c46b050d/e/ceef7084a00eb9b26c486bb6 + +To make a 2U frame, also print the 2U connector part in https://github.com/alanbjohnston/CubeSatSim/tree/master/hardware/frame/v2.0/2u and print two additional side parts. See https://github.com/alanbjohnston/CubeSatSim/wiki/Upgrading-to-2U for more information. diff --git a/hardware/lite/v2/README.md b/hardware/lite/v2/README.md new file mode 100644 index 00000000..3810277c --- /dev/null +++ b/hardware/lite/v2/README.md @@ -0,0 +1,13 @@ +Here is information about the CubeSatSim Lite v2 hardware + +cubesatsim-Lite_2.0.1_gerbers.zip -- All gerber files used to fabricate PCBs + +cubesatsim-Lite_2.0.1_schematic.pdf -- Schematic + +cubesatsim-Lite_2.0.1.mnt -- SMD file + +cubesatsim-lLite_2.0.1_pcb.png -- image of board + +cubesatsim-Lite_2.0.1_bom.csv.txt -- Bill of Materials (BOM) + +For more information see https://github.com/alanbjohnston/CubeSatSim/wiki/CubeSatSim-Lite diff --git a/hardware/lite/v2/cubesatsim-Lite-v2.0.1.mnb b/hardware/lite/v2/cubesatsim-Lite-v2.0.1.mnb new file mode 100644 index 00000000..e97af237 --- /dev/null +++ b/hardware/lite/v2/cubesatsim-Lite-v2.0.1.mnb @@ -0,0 +1,5 @@ +JP1 44.68 53.87 0 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK +JP2 23.14 59.97 0 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK +JP3 21.74 56.03 270 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK +JP6 33.99 59.61 0 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK +JP7 16.00 63.09 90 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK diff --git a/hardware/lite/v2/cubesatsim-Lite-v2.0.1.mnt b/hardware/lite/v2/cubesatsim-Lite-v2.0.1.mnt new file mode 100644 index 00000000..9e31062d --- /dev/null +++ b/hardware/lite/v2/cubesatsim-Lite-v2.0.1.mnt @@ -0,0 +1,26 @@ +C1 8.36 61.93 0 18pF C0603 +C2 10.03 61.90 0 16pF C0603 +C3 56.06 58.32 90 18pF C0603 +C4 55.47 62.84 270 16pF C0603 +C7 49.23 56.57 0 DNI/47uF C0603 +C8 50.47 47.68 270 DNI/100nF C0603 +E1 3.63 53.23 270 ANT-916-CHP-T XDCR_ANT-916-CHP-T +E2 61.39 53.21 270 ANT-916-CHP-T XDCR_ANT-916-CHP-T +J1 32.55 66.61 0 CONN_20X2 2X20 +J13 9.25 45.02 180 SJ1-2503A CONN_SJ1-2503A +J14 55.07 45.08 180 SJ1-2503A CONN_SJ1-2503A +L1 9.22 59.44 180 13nH L0603 +L2 56.24 60.55 270 13nH L0603 +LED5 19.08 42.09 270 GREEN LED-0603 +LED6 43.94 41.91 270 BLUE LED-0603 +R2 46.63 62.48 180 DNI/1k R0603 +R4 51.18 62.51 180 DNI/1k R0603 +R10 12.70 41.91 90 DNI/1k 0603-RES +R11 51.66 41.91 90 DNI/100 0603-RES +R16 13.79 60.22 0 DNI/68 R0805 +R17 18.44 60.33 270 DNI/180 R0603 +R18 26.67 60.22 180 DNI/68 R0805 +R21 48.90 51.23 0 DNI/100 R0603 +R22 55.14 51.99 0 DNI/220 R0603 +S2 7.80 51.82 90 DTSM-6 DTSM-6 +U6 32.94 51.75 270 SR105U SR_FRS_0W5 diff --git a/hardware/lite/v2/cubesatsim-Lite-v2.0.1_bom.csv.txt b/hardware/lite/v2/cubesatsim-Lite-v2.0.1_bom.csv.txt new file mode 100644 index 00000000..44718daa --- /dev/null +++ b/hardware/lite/v2/cubesatsim-Lite-v2.0.1_bom.csv.txt @@ -0,0 +1,53 @@ +"Part";"Value";"Device";"Package";"Description";""; +"C1";"18pF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";""; +"C2";"16pF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";""; +"C3";"18pF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";""; +"C4";"16pF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";""; +"C5";"47uF";"CAPPTH";"CAP-PTH-SMALL";"Capacitor";""; +"C6";"100nF";"CAPPTH";"CAP-PTH-SMALL";"Capacitor";""; +"C7";"DNI/47uF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";""; +"C8";"DNI/100nF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";""; +"E1";"ANT-916-CHP-T";"ANT-916-CHP-T";"XDCR_ANT-916-CHP-T";"868MHz ISM, LoRa, Sensor Networks, SigFox Chip RF Antenna 863MHz ~ 873MHz 0.5dBi Solder Surface Mount Check prices";""; +"E2";"ANT-916-CHP-T";"ANT-916-CHP-T";"XDCR_ANT-916-CHP-T";"868MHz ISM, LoRa, Sensor Networks, SigFox Chip RF Antenna 863MHz ~ 873MHz 0.5dBi Solder Surface Mount Check prices";""; +"J1";"CONN_20X2";"CONN_20X2";"2X20";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; +"J2";"";"CONN_021X02_NO_SILK";"1X02_NO_SILK";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; +"J6";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";""; +"J10";"DNI/Sparkfun QWIIC Breakout";"CONN_041X04_NO_SILK";"1X04_NO_SILK";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; +"J12";"DNI/1x4 pin header";"CONN_041X04_NO_SILK";"1X04_NO_SILK";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; +"J13";"SJ1-2503A";"SJ1-2503A";"CONN_SJ1-2503A";"";""; +"J14";"SJ1-2503A";"SJ1-2503A";"CONN_SJ1-2503A";"";""; +"J15";"";"CONN_06NO_SILK_NO_POP";"1X06_NO_SILK";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; +"JP1";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"Normally closed trace jumper";""; +"JP2";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";""; +"JP3";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"Normally closed trace jumper";""; +"JP6";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"Normally closed trace jumper";""; +"JP7";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";""; +"L1";"13nH";"SMD-FERRITE-CHIP-120-OHM-500MA(0603)";"L0603";"303030001";""; +"L2";"13nH";"SMD-FERRITE-CHIP-120-OHM-500MA(0603)";"L0603";"303030001";""; +"LED3";"Green 5mm";"LED3MM";"LED3MM";"LED";""; +"LED4";"Blue 5mm";"LED3MM";"LED3MM";"LED";""; +"LED5";"GREEN";"LED-GREEN0603";"LED-0603";"Green SMD LED";""; +"LED6";"BLUE";"LED-BLUE0603";"LED-0603";"Blue SMD LED";""; +"R1";"1K";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";""; +"R2";"DNI/1k";"R-EU_R0603";"R0603";"RESISTOR, European symbol";""; +"R3";"1K";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";""; +"R4";"DNI/1k";"R-EU_R0603";"R0603";"RESISTOR, European symbol";""; +"R7";"1k";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";""; +"R8";"DNI/100";"RESISTOR0603";"0603-RES";"Resistor";""; +"R10";"DNI/1k";"RESISTOR0603-RES";"0603-RES";"Resistor";""; +"R11";"100";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";""; +"R13";"68";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";""; +"R14";"180";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";""; +"R15";"68";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";""; +"R16";"DNI/68";"R-US_R0805";"R0805";"RESISTOR, American symbol";""; +"R17";"DNI/180";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"301010206";""; +"R18";"DNI/68";"R-US_R0805";"R0805";"RESISTOR, American symbol";""; +"R19";"100";"RESISTORPTH-1/4W-VERT-KIT";"AXIAL-0.1EZ";"Resistor";""; +"R20";"220";"RESISTORPTH-1/4W-VERT-KIT";"AXIAL-0.1EZ";"Resistor";""; +"R21";"DNI/100";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"301010206";""; +"R22";"DNI/220";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"301010206";""; +"S1";"RA-SPST";"RA-SPST";"RA-SPST";"";""; +"S2";"DTSM-6";"DTSM-6";"DTSM-6";"";""; +"U1";"SR105U";"SR_FRS_0W5";"SR_FRS_0W5";"";""; +"X2";"SMA-VERT";"SMA-VERT";"SMA-VERT";"";""; +"X3";"SMA-VERT";"SMA-VERT";"SMA-VERT";"";""; diff --git a/hardware/lite/v2/cubesatsim-Lite-v2.0.1_bottom.png b/hardware/lite/v2/cubesatsim-Lite-v2.0.1_bottom.png new file mode 100644 index 00000000..ecafa19d Binary files /dev/null and b/hardware/lite/v2/cubesatsim-Lite-v2.0.1_bottom.png differ diff --git a/hardware/lite/v2/cubesatsim-Lite-v2.0.1_centroid.zip b/hardware/lite/v2/cubesatsim-Lite-v2.0.1_centroid.zip new file mode 100644 index 00000000..314a9832 Binary files /dev/null and b/hardware/lite/v2/cubesatsim-Lite-v2.0.1_centroid.zip differ diff --git a/hardware/lite/v2/cubesatsim-Lite-v2.0.1_gerbers.zip b/hardware/lite/v2/cubesatsim-Lite-v2.0.1_gerbers.zip new file mode 100644 index 00000000..ad1a58ef Binary files /dev/null and b/hardware/lite/v2/cubesatsim-Lite-v2.0.1_gerbers.zip differ diff --git a/hardware/lite/v2/cubesatsim-Lite-v2.0.1_pcb.png b/hardware/lite/v2/cubesatsim-Lite-v2.0.1_pcb.png new file mode 100644 index 00000000..be0e7e5d Binary files /dev/null and b/hardware/lite/v2/cubesatsim-Lite-v2.0.1_pcb.png differ diff --git a/hardware/lite/v2/cubesatsim-Lite-v2.0.1_pour.png b/hardware/lite/v2/cubesatsim-Lite-v2.0.1_pour.png new file mode 100644 index 00000000..6eb98adf Binary files /dev/null and b/hardware/lite/v2/cubesatsim-Lite-v2.0.1_pour.png differ diff --git a/hardware/lite/v2/cubesatsim-Lite-v2.0.1_schematic.pdf b/hardware/lite/v2/cubesatsim-Lite-v2.0.1_schematic.pdf new file mode 100644 index 00000000..b3b16fc0 Binary files /dev/null and b/hardware/lite/v2/cubesatsim-Lite-v2.0.1_schematic.pdf differ diff --git a/hardware/lite/v2/cubesatsim-Lite-v2.0.1_top.png b/hardware/lite/v2/cubesatsim-Lite-v2.0.1_top.png new file mode 100644 index 00000000..2f3b0145 Binary files /dev/null and b/hardware/lite/v2/cubesatsim-Lite-v2.0.1_top.png differ diff --git a/hardware/lite/vB5/README.md b/hardware/lite/vB5/README.md index af044d35..8d6f40d6 100644 --- a/hardware/lite/vB5/README.md +++ b/hardware/lite/vB5/README.md @@ -10,4 +10,4 @@ cubesatsim-lite-0.5_pcb.png -- image of board cubesatsim-lite-0.5.csv.txt -- Bill of Materials (BOM) -For more information see https://github.com/alanbjohnston/CubeSatSim/wiki/CubeSatSim-Lite +For more information see https://github.com/alanbjohnston/CubeSatSim/wiki/CubeSatSim-Lite-Beta-vB5 diff --git a/hardware/v2.0/cubesatsim-battery-v2.0.1.mnb b/hardware/v2.0/cubesatsim-battery-v2.0.1.mnb deleted file mode 100644 index 48b4e2ca..00000000 --- a/hardware/v2.0/cubesatsim-battery-v2.0.1.mnb +++ /dev/null @@ -1,3 +0,0 @@ -JP4 12.92 79.27 180 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK -JP5 66.93 74.27 90 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK -JP6 17.51 69.85 180 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK diff --git a/hardware/v2.0/cubesatsim-battery-v2.0.1.mnt b/hardware/v2.0/cubesatsim-battery-v2.0.1.mnt deleted file mode 100644 index 5646f168..00000000 --- a/hardware/v2.0/cubesatsim-battery-v2.0.1.mnt +++ /dev/null @@ -1,11 +0,0 @@ -BT1 44.48 57.58 0 1024 BAT_1024 -BT2 41.27 29.90 0 1012 BAT_1012 -C1 4.88 58.78 0 DNI/0.1µF 0603 -J1 32.68 74.23 0 CONN_20X2 2X20 -JP9 3.38 54.25 0 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK -JP10 6.71 50.72 0 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK -JP11 6.85 54.23 0 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK -JP12 3.31 50.70 0 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK -R1 17.45 69.49 0 DNI/R100 R0805 -U1 12.19 67.41 180 INA219 purple board INA219 -U2 4.55 62.79 0 INA219AIDR D0008A_N diff --git a/hardware/v2.0/cubesatsim-battery-v2.0.1_centroid.zip b/hardware/v2.0/cubesatsim-battery-v2.0.1_centroid.zip deleted file mode 100644 index d7223876..00000000 Binary files a/hardware/v2.0/cubesatsim-battery-v2.0.1_centroid.zip and /dev/null differ diff --git a/hardware/v2.0/cubesatsim-battery-v2.0.1_pcb.png b/hardware/v2.0/cubesatsim-battery-v2.0.1_pcb.png deleted file mode 100644 index 1d2f98ad..00000000 Binary files a/hardware/v2.0/cubesatsim-battery-v2.0.1_pcb.png and /dev/null differ diff --git a/hardware/v2.0/cubesatsim-battery-v2.0.1_pour.png b/hardware/v2.0/cubesatsim-battery-v2.0.1_pour.png deleted file mode 100644 index ab4c3385..00000000 Binary files a/hardware/v2.0/cubesatsim-battery-v2.0.1_pour.png and /dev/null differ diff --git a/hardware/v2.0/cubesatsim-battery-v2.0.1_top.png b/hardware/v2.0/cubesatsim-battery-v2.0.1_top.png deleted file mode 100644 index 9a5cad77..00000000 Binary files a/hardware/v2.0/cubesatsim-battery-v2.0.1_top.png and /dev/null differ diff --git a/hardware/v2.0/cubesatsim-battery-v2.0.2_bom.csv.txt b/hardware/v2.0/cubesatsim-battery-v2.0.2_bom.csv.txt new file mode 100644 index 00000000..91d1919f --- /dev/null +++ b/hardware/v2.0/cubesatsim-battery-v2.0.2_bom.csv.txt @@ -0,0 +1,13 @@ +"Qty";"Value";"Device";"Package";"Parts";"Description";""; +"5";"";"CONN_01";"1X01";"JP2, JP3, JP7, JP13, JP14";"Single connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; +"1";"1012";"1012";"BAT_1012";"BT2";"Check availability";""; +"1";"1024";"1024";"BAT_1024";"BT1";"Check availability";""; +"1";"CONN_20X2";"CONN_20X2";"2X20";"J1";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; +"1";"DNI/0.1µF";"CAP_CERAMIC0603";"0603";"C1";"Ceramic Capacitors";""; +"1";"DNI/R100";"R-US_R0805";"R0805";"R1";"RESISTOR, American symbol";""; +"1";"INA219 purple board";"INA219";"INA219";"U1";"";""; +"1";"INA219AIDR";"INA219AIDR";"D0008A_N";"U2";"";""; +"3";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"JP5, JP9, JP10";"Normally closed trace jumper";""; +"4";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"JP4, JP6, JP11, JP12";"Normally open jumper";""; +"2";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"JP1, JP8";"Standard 2-pin 0.1" header. Use with";""; +"1";"PTC";"PTCPTH";"PTC";"F1";"Resettable Fuse PTC";""; diff --git a/hardware/v2.0/cubesatsim-battery-v2.0.1_bottom.png b/hardware/v2.0/cubesatsim-battery-v2.0.2_bottom.png similarity index 100% rename from hardware/v2.0/cubesatsim-battery-v2.0.1_bottom.png rename to hardware/v2.0/cubesatsim-battery-v2.0.2_bottom.png diff --git a/hardware/v2.0/cubesatsim-battery-v2.0.2_centroid.zip b/hardware/v2.0/cubesatsim-battery-v2.0.2_centroid.zip new file mode 100644 index 00000000..daaeefb2 Binary files /dev/null and b/hardware/v2.0/cubesatsim-battery-v2.0.2_centroid.zip differ diff --git a/hardware/v2.0/cubesatsim-battery-v2.0.1_gerbers.zip b/hardware/v2.0/cubesatsim-battery-v2.0.2_gerbers.zip similarity index 65% rename from hardware/v2.0/cubesatsim-battery-v2.0.1_gerbers.zip rename to hardware/v2.0/cubesatsim-battery-v2.0.2_gerbers.zip index 27317983..f0da43b4 100644 Binary files a/hardware/v2.0/cubesatsim-battery-v2.0.1_gerbers.zip and b/hardware/v2.0/cubesatsim-battery-v2.0.2_gerbers.zip differ diff --git a/hardware/v2.0/cubesatsim-battery-v2.0.2_pcb.png b/hardware/v2.0/cubesatsim-battery-v2.0.2_pcb.png new file mode 100644 index 00000000..45af2f66 Binary files /dev/null and b/hardware/v2.0/cubesatsim-battery-v2.0.2_pcb.png differ diff --git a/hardware/v2.0/cubesatsim-battery-v2.0.2_pour.png b/hardware/v2.0/cubesatsim-battery-v2.0.2_pour.png new file mode 100644 index 00000000..70211388 Binary files /dev/null and b/hardware/v2.0/cubesatsim-battery-v2.0.2_pour.png differ diff --git a/hardware/v2.0/cubesatsim-battery-v2.0.1_schematic.pdf b/hardware/v2.0/cubesatsim-battery-v2.0.2_schematic.pdf similarity index 61% rename from hardware/v2.0/cubesatsim-battery-v2.0.1_schematic.pdf rename to hardware/v2.0/cubesatsim-battery-v2.0.2_schematic.pdf index 681a87c7..6065ca27 100644 Binary files a/hardware/v2.0/cubesatsim-battery-v2.0.1_schematic.pdf and b/hardware/v2.0/cubesatsim-battery-v2.0.2_schematic.pdf differ diff --git a/hardware/v2.0/cubesatsim-battery-v2.0.2_top.png b/hardware/v2.0/cubesatsim-battery-v2.0.2_top.png new file mode 100644 index 00000000..79155867 Binary files /dev/null and b/hardware/v2.0/cubesatsim-battery-v2.0.2_top.png differ diff --git a/hardware/v2.0/cubesatsim-main-v2.0.1_bom.csv.txt b/hardware/v2.0/cubesatsim-main-v2.0.1_bom.csv.txt new file mode 100644 index 00000000..fb6e9718 --- /dev/null +++ b/hardware/v2.0/cubesatsim-main-v2.0.1_bom.csv.txt @@ -0,0 +1,57 @@ +"Qty";"Value";"Device";"Package";"Parts";"Description";""; +"1";"";"CONN_06NO_SILK_NO_POP";"1X06_NO_SILK";"J15";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; +"1";"100";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"R8";"Resistor";""; +"1";"100";"RESISTORPTH-1/4W-VERT-KIT";"AXIAL-0.1EZ";"R19";"Resistor";""; +"2";"100nF";"CAPPTH";"CAP-PTH-SMALL";"C6, C9";"Capacitor";""; +"1";"10K";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"R27";"Resistor";""; +"2";"13nH";"SMD-FERRITE-CHIP-120-OHM-500MA(0603)";"L0603";"L1, L2";"303030001";""; +"2";"16pF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"C2, C4";"302010097";""; +"1";"180";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"R14";"Resistor";""; +"2";"18pF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"C1, C3";"302010097";""; +"2";"1K";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"R1, R3";"Resistor";""; +"1";"1N4148";"DIODE-D-2.5";"D-2.5";"D3";"DIODE";""; +"4";"1N5817";"DIODE-D-2.5";"D-2.5";"D1, D2, D4, D10";"DIODE";""; +"2";"1k";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"R7, R30";"Resistor";""; +"2";"220";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"R9, R29";"Resistor";""; +"1";"220";"RESISTORPTH-1/4W-VERT-KIT";"AXIAL-0.1EZ";"R20";"Resistor";""; +"2";"4.7k";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"R23, R24";"Resistor";""; +"1";"47uF";"CAPPTH";"CAP-PTH-SMALL";"C5";"Capacitor";""; +"2";"68";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"R13, R15";"Resistor";""; +"2";"ANT-916-CHP-T";"ANT-916-CHP-T";"XDCR_ANT-916-CHP-T";"E1, E2";"868MHz ISM, LoRa, Sensor Networks, SigFox Chip RF Antenna 863MHz ~ 873MHz 0.5dBi Solder Surface Mount Check prices";""; +"1";"BME280";"M04NO_SILK_ALL_ROUND";"1X04_NO_SILK_ALL_ROUND";"J5";"Header 4";""; +"1";"Blue 5mm";"LED3MM";"LED3MM";"LED4";"LED";""; +"1";"CONN_20X2";"CONN_20X2";"2X20";"J1";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; +"2";"DNI/100";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"R11, R21";"301010206";""; +"2";"DNI/100nF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"C8, C10";"302010097";""; +"1";"DNI/10k";"R-EU_R0603";"R0603";"R28";"RESISTOR, European symbol";""; +"1";"DNI/180";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"R17";"301010206";""; +"1";"DNI/1N5817";"DIODE-D-2.5";"D-2.5";"D9";"DIODE";""; +"2";"DNI/1k";"R-EU_R0603";"R0603";"R2, R4";"RESISTOR, European symbol";""; +"2";"DNI/1k";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"R10, R32";"301010206";""; +"1";"DNI/1x4 pin header";"CONN_041X04_NO_SILK";"1X04_NO_SILK";"J12";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; +"3";"DNI/220";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"R12, R22, R31";"301010206";""; +"2";"DNI/4.7k";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"R33, R34";"Resistor";""; +"2";"DNI/4.7k";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"R25, R26";"301010206";""; +"1";"DNI/4148WS";"DIODESOD-323F";"SOD-323F";"D7";"Diode";""; +"1";"DNI/47uF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"C7";"302010097";""; +"2";"DNI/5.1k";"R-EU_R0603";"R0603";"R5, R6";"RESISTOR, European symbol";""; +"1";"DNI/5V1 Zener 1W";"ZENER-DIODEZD-2.5";"ZDIO-2.5";"D8";"Z-Diode";""; +"2";"DNI/68";"R-US_R0805";"R0805";"R16, R18";"RESISTOR, American symbol";""; +"3";"DNI/B5817WS";"DIODESOD-323F";"SOD-323F";"D5, D6, D11";"Diode";""; +"1";"DNI/Sparkfun QWIIC Breakout";"CONN_041X04_NO_SILK";"1X04_NO_SILK";"J10";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; +"1";"DNI/USB4105-GF-A or GT-USB-7010B";"USB_C_2-LAYER_PADS";"USB-C-16P-2LAYER-PADS";"J9";"USB Type C 16Pin Connector";""; +"1";"Green 5mm";"LED3MM";"LED3MM";"LED3";"LED";""; +"3";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"JP3, JP4, JP6";"Normally closed trace jumper";""; +"7";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"JP1, JP2, JP5, JP7, JP8, JP9, JP10";"Normally open jumper";""; +"1";"MPU6050";"M08NO_SILK_FEMALE_PTH";"1X08_NO_SILK@1";"J4";"Header 8";""; +"2";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"J6, J7";"Standard 2-pin 0.1" header. Use with";""; +"1";"RA-SPST";"RA-SPST";"RA-SPST";"S1";"";""; +"1";"Raspberry Pi Pico";"RASPBERRY_PICO-NO_DEBUG";"PICO-PKG-NO_DEBUG";"U1";"";""; +"1";"Red 5mm";"LED3MM";"LED3MM";"LED5";"LED";""; +"1";"SC1464-ND";"PG203J";"PG203J";"X1";"MIC/HEADPHONE JACK";""; +"2";"SJ1-2503A";"SJ1-2503A";"CONN_SJ1-2503A";"J13, J14";"";""; +"2";"SMA-VERT";"SMA-VERT";"SMA-VERT";"X2, X3";"";""; +"1";"SR105U";"SR_FRS_0W5";"SR_FRS_0W5";"U6";"";""; +"1";"Sparkfun USB-C Breakout";"CONN_06NO_SILK_FEMALE_PTH";"1X06_NO_SILK";"J8";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; +"1";"White 5mm";"LED3MM";"LED3MM";"LED1";"LED";""; +"1";"Yellow 5mm";"LED3MM";"LED3MM";"LED2";"LED";""; diff --git a/hardware/v2.0/cubesatsim-main-v2.0.1_bottom.png b/hardware/v2.0/cubesatsim-main-v2.0.1_bottom.png new file mode 100644 index 00000000..2624b6ed Binary files /dev/null and b/hardware/v2.0/cubesatsim-main-v2.0.1_bottom.png differ diff --git a/hardware/v2.0/cubesatsim-main-v2.0.1_centroid.zip b/hardware/v2.0/cubesatsim-main-v2.0.1_centroid.zip new file mode 100644 index 00000000..740ebc9b Binary files /dev/null and b/hardware/v2.0/cubesatsim-main-v2.0.1_centroid.zip differ diff --git a/hardware/v2.0/cubesatsim-main-v2.0.1_gerbers.zip b/hardware/v2.0/cubesatsim-main-v2.0.1_gerbers.zip new file mode 100644 index 00000000..7c451de2 Binary files /dev/null and b/hardware/v2.0/cubesatsim-main-v2.0.1_gerbers.zip differ diff --git a/hardware/v2.0/cubesatsim-main-v2.0.1_pcb.png b/hardware/v2.0/cubesatsim-main-v2.0.1_pcb.png new file mode 100644 index 00000000..8b641c01 Binary files /dev/null and b/hardware/v2.0/cubesatsim-main-v2.0.1_pcb.png differ diff --git a/hardware/v2.0/cubesatsim-main-v2.0.1_pour.png b/hardware/v2.0/cubesatsim-main-v2.0.1_pour.png new file mode 100644 index 00000000..7ee53492 Binary files /dev/null and b/hardware/v2.0/cubesatsim-main-v2.0.1_pour.png differ diff --git a/hardware/v2.0/cubesatsim-main-v2.0.1_schematic.pdf b/hardware/v2.0/cubesatsim-main-v2.0.1_schematic.pdf new file mode 100644 index 00000000..54349cba Binary files /dev/null and b/hardware/v2.0/cubesatsim-main-v2.0.1_schematic.pdf differ diff --git a/hardware/v2.0/cubesatsim-main-v2.0.1_top.png b/hardware/v2.0/cubesatsim-main-v2.0.1_top.png new file mode 100644 index 00000000..15e08dfa Binary files /dev/null and b/hardware/v2.0/cubesatsim-main-v2.0.1_top.png differ diff --git a/hardware/v2.0/cubesatsim-main-v2.0.mnb b/hardware/v2.0/cubesatsim-main-v2.0.mnb deleted file mode 100644 index 8d335ba6..00000000 --- a/hardware/v2.0/cubesatsim-main-v2.0.mnb +++ /dev/null @@ -1,18 +0,0 @@ -D1 63.55 60.58 0 1N5817 D-2.5 -D2 72.01 10.49 0 1N5817 D-2.5 -D3 66.45 10.62 180 1N4148 D-2.5 -D4 63.65 54.61 0 1N5817 D-2.5 -D8 59.31 7.52 270 DNI/5V1 Zener 1W ZDIO-2.5 -D9 19.71 45.92 0 DNI/1N5817 D-2.5 -D10 77.50 10.46 0 1N5817 D-2.5 -JP1 72.17 8.66 180 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK -JP2 24.73 59.61 0 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK -JP3 19.63 58.93 270 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK -JP4 51.94 53.34 180 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK -JP5 75.08 56.49 270 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK -JP6 26.31 37.01 180 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK -JP7 15.95 61.99 90 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK -JP8 37.93 40.67 180 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK -JP9 45.17 51.10 180 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK -JP10 63.64 56.54 0 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK -X1 71.86 61.21 270 SC1464-ND PG203J diff --git a/hardware/v2.0/cubesatsim-main-v2.0_bottom.png b/hardware/v2.0/cubesatsim-main-v2.0_bottom.png deleted file mode 100644 index 83baa402..00000000 Binary files a/hardware/v2.0/cubesatsim-main-v2.0_bottom.png and /dev/null differ diff --git a/hardware/v2.0/cubesatsim-main-v2.0_gerbers.zip b/hardware/v2.0/cubesatsim-main-v2.0_gerbers.zip deleted file mode 100644 index eed74445..00000000 Binary files a/hardware/v2.0/cubesatsim-main-v2.0_gerbers.zip and /dev/null differ diff --git a/hardware/v2.0/cubesatsim-main-v2.0_pcb.png b/hardware/v2.0/cubesatsim-main-v2.0_pcb.png deleted file mode 100644 index 29633023..00000000 Binary files a/hardware/v2.0/cubesatsim-main-v2.0_pcb.png and /dev/null differ diff --git a/hardware/v2.0/cubesatsim-main-v2.0_pour.png b/hardware/v2.0/cubesatsim-main-v2.0_pour.png deleted file mode 100644 index 96f24219..00000000 Binary files a/hardware/v2.0/cubesatsim-main-v2.0_pour.png and /dev/null differ diff --git a/hardware/v2.0/cubesatsim-main-v2.0_schematic.pdf b/hardware/v2.0/cubesatsim-main-v2.0_schematic.pdf deleted file mode 100644 index d266622b..00000000 Binary files a/hardware/v2.0/cubesatsim-main-v2.0_schematic.pdf and /dev/null differ diff --git a/hardware/v2.0/cubesatsim-main-v2.0_top.png b/hardware/v2.0/cubesatsim-main-v2.0_top.png deleted file mode 100644 index b80e3c79..00000000 Binary files a/hardware/v2.0/cubesatsim-main-v2.0_top.png and /dev/null differ diff --git a/hardware/v2.0/cubesatsim-solar-v2.0.1_bottom.png b/hardware/v2.0/cubesatsim-solar-v2.0.1_bottom.png deleted file mode 100644 index 5d033c7c..00000000 Binary files a/hardware/v2.0/cubesatsim-solar-v2.0.1_bottom.png and /dev/null differ diff --git a/hardware/v2.0/cubesatsim-solar-v2.0.1_pcb.png b/hardware/v2.0/cubesatsim-solar-v2.0.1_pcb.png deleted file mode 100644 index d9996de9..00000000 Binary files a/hardware/v2.0/cubesatsim-solar-v2.0.1_pcb.png and /dev/null differ diff --git a/hardware/v2.0/cubesatsim-solar-v2.0.1_pour.png b/hardware/v2.0/cubesatsim-solar-v2.0.1_pour.png deleted file mode 100644 index a759ae6e..00000000 Binary files a/hardware/v2.0/cubesatsim-solar-v2.0.1_pour.png and /dev/null differ diff --git a/hardware/v2.0/cubesatsim-solar-v2.0.2_bom.csv.txt b/hardware/v2.0/cubesatsim-solar-v2.0.2_bom.csv.txt new file mode 100644 index 00000000..ab57f669 --- /dev/null +++ b/hardware/v2.0/cubesatsim-solar-v2.0.2_bom.csv.txt @@ -0,0 +1,17 @@ +"Qty";"Value";"Device";"Package";"Parts";"Description";"COPYRIGHT";"DIGI-KEY_PART_NUMBER_1";"DIGI-KEY_PART_NUMBER_2";"DIGI-KEY_PART_NUMBER_3";"DIGI-KEY_PART_NUMBER_4";"MANUFACTURER_PART_NUMBER";"MFR_NAME";"PROD_ID";"REFDES";"TYPE";"VALUE"; +"2";"";"CONN_01PTH_NO_SILK_YES_STOP";"1X01_NO_SILK";"JP16, JP19";"Single connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";"";"";"";"";"";"";"";"";"";""; +"6";"0.1µF";"CAP_CERAMIC0603";"0603";"C2, C3, C4, C5, C6, C7";"Ceramic Capacitors";"";"";"";"";"";"";"";"";"";"";""; +"6";"1A/23V/620mV";"DIODE-SCHOTTKY-BAT20J";"SOD-323";"D7, D8, D9, D10, D11, D12";"Schottky diode";"";"";"";"";"";"";"";"DIO-11623";"";"";"1A/23V/620mV"; +"6";"1N5817";"DIODE-D-2.5";"D-2.5";"D1, D2, D3, D4, D5, D6";"DIODE";"";"";"";"";"";"";"";"";"";"";""; +"2";"4.7k";"RESISTORPTH-1/4W-VERT-KIT";"AXIAL-0.1EZ";"R3, R4";"Resistor";"";"";"";"";"";"";"";"";"";"";""; +"1";"CONN_20X2";"CONN_20X2";"2X20";"J1";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";"";"";"";"";"";"";"";"";"";""; +"2";"DNI-4.7k";"R-US_R0603";"R0603";"R11, R12";"RESISTOR, American symbol";"";"";"";"";"";"";"";"";"";"";""; +"2";"DNI-4.7k";"RESISTORPTH-1/4W-VERT-KIT";"AXIAL-0.1EZ";"R7, R8";"Resistor";"";"";"";"";"";"";"";"";"";"";""; +"1";"DNI/Sparkfun QWIIC Breakout";"CONN_041X04_NO_SILK";"1X04_NO_SILK";"J5";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";"";"";"";"";"";"";"CONN-09696";"";"";""; +"6";"INA219 purple board";"INA219";"INA219";"U3, U4, U5, U6, U7, U8";"";"";"";"";"";"";"";"";"";"";"";""; +"6";"INA219AIDR";"INA219AIDR";"D0008A_N";"U2, U10, U11, U12, U13, U14";"";"Copyright (C) 2022 Ultra Librarian. All rights reserved.";"296-23978-1-ND";"296-23978-2-ND";"296-23978-6-ND";"2156-INA219AIDR-ND";"INA219AIDR";"Texas Instruments";"";"RefDes";"TYPE";""; +"1";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"JP18";"Normally open jumper";"";"";"";"";"";"";"";"";"";"";""; +"1";"Micro JST";"CONN_021X02_NO_SILK";"1X02_NO_SILK";"JP8";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";"";"";"";"";"";"";"";"";"";""; +"14";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"JP1, JP2, JP3, JP4, JP5, JP6, JP7, JP10, JP11, JP12, JP13, JP14, JP15, JP17";"Standard 2-pin 0.1" header. Use with";"";"";"";"";"";"";"";"";"";"";""; +"6";"R100";"R-US_R0805";"R0805";"R1, R2, R5, R6, R9, R10";"RESISTOR, American symbol";"";"";"";"";"";"";"";"";"";"";""; +"1";"VDD-EN";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"JP9";"Normally closed trace jumper";"";"";"";"";"";"";"";"";"";"";""; diff --git a/hardware/v2.0/cubesatsim-solar-v2.0.2_bottom.png b/hardware/v2.0/cubesatsim-solar-v2.0.2_bottom.png new file mode 100644 index 00000000..47885a16 Binary files /dev/null and b/hardware/v2.0/cubesatsim-solar-v2.0.2_bottom.png differ diff --git a/hardware/v2.0/cubesatsim-solar-v2.0.2_centroid.zip b/hardware/v2.0/cubesatsim-solar-v2.0.2_centroid.zip new file mode 100644 index 00000000..715a46ae Binary files /dev/null and b/hardware/v2.0/cubesatsim-solar-v2.0.2_centroid.zip differ diff --git a/hardware/v2.0/cubesatsim-solar-v2.0.1_gerbers.zip b/hardware/v2.0/cubesatsim-solar-v2.0.2_gerbers.zip similarity index 66% rename from hardware/v2.0/cubesatsim-solar-v2.0.1_gerbers.zip rename to hardware/v2.0/cubesatsim-solar-v2.0.2_gerbers.zip index 8f17bb5e..adac2140 100644 Binary files a/hardware/v2.0/cubesatsim-solar-v2.0.1_gerbers.zip and b/hardware/v2.0/cubesatsim-solar-v2.0.2_gerbers.zip differ diff --git a/hardware/v2.0/cubesatsim-solar-v2.0.2_pcb.png b/hardware/v2.0/cubesatsim-solar-v2.0.2_pcb.png new file mode 100644 index 00000000..32e1af68 Binary files /dev/null and b/hardware/v2.0/cubesatsim-solar-v2.0.2_pcb.png differ diff --git a/hardware/v2.0/cubesatsim-solar-v2.0.2_pour.png b/hardware/v2.0/cubesatsim-solar-v2.0.2_pour.png new file mode 100644 index 00000000..0ed4780c Binary files /dev/null and b/hardware/v2.0/cubesatsim-solar-v2.0.2_pour.png differ diff --git a/hardware/v2.0/cubesatsim-solar-v2.0.1_schematic.pdf b/hardware/v2.0/cubesatsim-solar-v2.0.2_schematic.pdf similarity index 99% rename from hardware/v2.0/cubesatsim-solar-v2.0.1_schematic.pdf rename to hardware/v2.0/cubesatsim-solar-v2.0.2_schematic.pdf index aaa8f820..e03c570d 100644 Binary files a/hardware/v2.0/cubesatsim-solar-v2.0.1_schematic.pdf and b/hardware/v2.0/cubesatsim-solar-v2.0.2_schematic.pdf differ diff --git a/hardware/v2.0/cubesatsim-solar-v2.0.1_top.png b/hardware/v2.0/cubesatsim-solar-v2.0.2_top.png similarity index 76% rename from hardware/v2.0/cubesatsim-solar-v2.0.1_top.png rename to hardware/v2.0/cubesatsim-solar-v2.0.2_top.png index 407b7c38..a2c88eaa 100644 Binary files a/hardware/v2.0/cubesatsim-solar-v2.0.1_top.png and b/hardware/v2.0/cubesatsim-solar-v2.0.2_top.png differ diff --git a/hardware/v2.1/CubeSatSim Main v2.1.0 BOM.xls b/hardware/v2.1/CubeSatSim Main v2.1.0 BOM.xls new file mode 100644 index 00000000..ae5f101c Binary files /dev/null and b/hardware/v2.1/CubeSatSim Main v2.1.0 BOM.xls differ diff --git a/hardware/v2.0/cubesatsim-battery-v2.0.1_bom.csv.txt b/hardware/v2.1/cubesatsim-battery-v2.1.0_bom.csv.txt similarity index 90% rename from hardware/v2.0/cubesatsim-battery-v2.0.1_bom.csv.txt rename to hardware/v2.1/cubesatsim-battery-v2.1.0_bom.csv.txt index d7850b63..a60a8138 100644 --- a/hardware/v2.0/cubesatsim-battery-v2.0.1_bom.csv.txt +++ b/hardware/v2.1/cubesatsim-battery-v2.1.0_bom.csv.txt @@ -12,12 +12,12 @@ "JP6";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";""; "JP7";"";"CONN_01";"1X01";"Single connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; "JP8";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";""; -"JP9";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"Normally closed trace jumper";""; "JP10";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"Normally closed trace jumper";""; "JP11";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";""; -"JP12";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";""; "JP13";"";"CONN_01";"1X01";"Single connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; "JP14";"";"CONN_01";"1X01";"Single connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; "R1";"DNI/R100";"R-US_R0805";"R0805";"RESISTOR, American symbol";""; +"R2";"10k";"R-EU_R0603";"R0603";"RESISTOR, European symbol";""; +"R3";"10k";"R-EU_R0603";"R0603";"RESISTOR, European symbol";""; "U1";"INA219 purple board";"INA219";"INA219";"";""; "U2";"INA219AIDR";"INA219AIDR";"D0008A_N";"";""; diff --git a/hardware/v2.1/cubesatsim-battery-v2.1.0_bottom.png b/hardware/v2.1/cubesatsim-battery-v2.1.0_bottom.png new file mode 100644 index 00000000..58d2adcd Binary files /dev/null and b/hardware/v2.1/cubesatsim-battery-v2.1.0_bottom.png differ diff --git a/hardware/v2.1/cubesatsim-battery-v2.1.0_centroid.zip b/hardware/v2.1/cubesatsim-battery-v2.1.0_centroid.zip new file mode 100644 index 00000000..ab278a89 Binary files /dev/null and b/hardware/v2.1/cubesatsim-battery-v2.1.0_centroid.zip differ diff --git a/hardware/v2.1/cubesatsim-battery-v2.1.0_gerbers.zip b/hardware/v2.1/cubesatsim-battery-v2.1.0_gerbers.zip new file mode 100644 index 00000000..428226d4 Binary files /dev/null and b/hardware/v2.1/cubesatsim-battery-v2.1.0_gerbers.zip differ diff --git a/hardware/v2.1/cubesatsim-battery-v2.1.0_pcb.png b/hardware/v2.1/cubesatsim-battery-v2.1.0_pcb.png new file mode 100644 index 00000000..a8b4d242 Binary files /dev/null and b/hardware/v2.1/cubesatsim-battery-v2.1.0_pcb.png differ diff --git a/hardware/v2.1/cubesatsim-battery-v2.1.0_pour.png b/hardware/v2.1/cubesatsim-battery-v2.1.0_pour.png new file mode 100644 index 00000000..b9e7ebdc Binary files /dev/null and b/hardware/v2.1/cubesatsim-battery-v2.1.0_pour.png differ diff --git a/hardware/v2.1/cubesatsim-battery-v2.1.0_schematic.pdf b/hardware/v2.1/cubesatsim-battery-v2.1.0_schematic.pdf new file mode 100644 index 00000000..f0375bc0 Binary files /dev/null and b/hardware/v2.1/cubesatsim-battery-v2.1.0_schematic.pdf differ diff --git a/hardware/v2.1/cubesatsim-battery-v2.1.0_top.png b/hardware/v2.1/cubesatsim-battery-v2.1.0_top.png new file mode 100644 index 00000000..7c8db0c7 Binary files /dev/null and b/hardware/v2.1/cubesatsim-battery-v2.1.0_top.png differ diff --git a/hardware/v2.1/cubesatsim-main-v2.1.0.mnb b/hardware/v2.1/cubesatsim-main-v2.1.0.mnb new file mode 100644 index 00000000..b8b888f9 --- /dev/null +++ b/hardware/v2.1/cubesatsim-main-v2.1.0.mnb @@ -0,0 +1,18 @@ +D1 63.55 60.58 0 BYW27-400 D-2.5 +D2 72.01 10.49 0 1N5817 D-2.5 +D3 66.45 10.62 180 1N4148 D-2.5 +D8 59.31 7.52 270 DNI/5V1 Zener 1W ZDIO-2.5 +D10 77.50 10.46 0 1N5817 D-2.5 +JP1 72.17 8.66 180 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK +JP2 24.73 60.99 0 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK +JP3 16.08 58.12 270 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK +JP4 59.36 56.39 180 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK +JP5 75.08 56.48 270 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK +JP6 26.21 35.94 180 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK +JP7 15.95 62.24 90 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK +JP8 47.28 30.91 180 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK +JP9 44.21 61.82 180 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK +JP10 63.61 56.54 0 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK +JP11 14.63 52.17 180 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK +U7 36.42 49.89 0 DRA818V DORJI_DRA818V +X1 71.86 61.21 270 SC1464-ND PG203J diff --git a/hardware/v2.0/cubesatsim-main-v2.0.mnt b/hardware/v2.1/cubesatsim-main-v2.1.0.mnt similarity index 94% rename from hardware/v2.0/cubesatsim-main-v2.0.mnt rename to hardware/v2.1/cubesatsim-main-v2.1.0.mnt index a364bdeb..c33a4c37 100644 --- a/hardware/v2.0/cubesatsim-main-v2.0.mnt +++ b/hardware/v2.1/cubesatsim-main-v2.1.0.mnt @@ -5,12 +5,12 @@ C4 20.68 10.16 180 16pF C0603 C7 55.60 56.62 0 DNI/47uF C0603 C8 59.00 47.55 270 DNI/100nF C0603 C10 66.83 3.91 270 DNI/100nF C0603 -D5 63.53 62.56 180 DNI/B5817WS SOD-323F +D5 63.42 62.53 0 DNI/1N4007FL SOD-123FL D6 72.16 8.69 180 DNI/B5817WS SOD-323F D7 66.47 8.84 0 DNI/4148WS SOD-323F -D11 63.65 56.59 180 DNI/B5817WS SOD-323F E1 6.80 76.35 180 ANT-916-CHP-T XDCR_ANT-916-CHP-T E2 19.18 3.81 0 ANT-916-CHP-T XDCR_ANT-916-CHP-T +F2 63.68 57.18 180 DNI/MF-FSML100/8-2 0603 J1 32.55 66.61 0 CONN_20X2 2X20 J8 36.17 72.01 0 Sparkfun USB-C Breakout 1X06_NO_SILK J9 36.35 74.15 180 DNI/USB4105-GF-A or GT-USB-7010B USB-C-16P-2LAYER-PADS diff --git a/hardware/v2.0/cubesatsim-main-v2.0_bom.csv.txt b/hardware/v2.1/cubesatsim-main-v2.1.0_bom.csv.txt similarity index 92% rename from hardware/v2.0/cubesatsim-main-v2.0_bom.csv.txt rename to hardware/v2.1/cubesatsim-main-v2.1.0_bom.csv.txt index 55ff16da..b75fcd21 100644 --- a/hardware/v2.0/cubesatsim-main-v2.0_bom.csv.txt +++ b/hardware/v2.1/cubesatsim-main-v2.1.0_bom.csv.txt @@ -9,19 +9,18 @@ "C8";"DNI/100nF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";""; "C9";"100nF";"CAPPTH";"CAP-PTH-SMALL";"Capacitor";""; "C10";"DNI/100nF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";""; -"D1";"1N5817";"DIODE-D-2.5";"D-2.5";"DIODE";""; +"D1";"BYW27-400";"DIODE-D-2.5";"D-2.5";"DIODE";""; "D2";"1N5817";"DIODE-D-2.5";"D-2.5";"DIODE";""; "D3";"1N4148";"DIODE-D-2.5";"D-2.5";"DIODE";""; -"D4";"1N5817";"DIODE-D-2.5";"D-2.5";"DIODE";""; -"D5";"DNI/B5817WS";"DIODESOD-323F";"SOD-323F";"Diode";""; +"D5";"DNI/1N4007FL";"DIODE_SOD-123FL";"SOD-123FL";"Diode";""; "D6";"DNI/B5817WS";"DIODESOD-323F";"SOD-323F";"Diode";""; "D7";"DNI/4148WS";"DIODESOD-323F";"SOD-323F";"Diode";""; "D8";"DNI/5V1 Zener 1W";"ZENER-DIODEZD-2.5";"ZDIO-2.5";"Z-Diode";""; -"D9";"DNI/1N5817";"DIODE-D-2.5";"D-2.5";"DIODE";""; "D10";"1N5817";"DIODE-D-2.5";"D-2.5";"DIODE";""; -"D11";"DNI/B5817WS";"DIODESOD-323F";"SOD-323F";"Diode";""; "E1";"ANT-916-CHP-T";"ANT-916-CHP-T";"XDCR_ANT-916-CHP-T";"868MHz ISM, LoRa, Sensor Networks, SigFox Chip RF Antenna 863MHz ~ 873MHz 0.5dBi Solder Surface Mount Check prices";""; "E2";"ANT-916-CHP-T";"ANT-916-CHP-T";"XDCR_ANT-916-CHP-T";"868MHz ISM, LoRa, Sensor Networks, SigFox Chip RF Antenna 863MHz ~ 873MHz 0.5dBi Solder Surface Mount Check prices";""; +"F1";"RHEF100-2";"PTCPTH";"PTC";"Resettable Fuse PTC";""; +"F2";"DNI/MF-FSML100/8-2";"PTC0603";"0603";"Resettable Fuse PTC";""; "J1";"CONN_20X2";"CONN_20X2";"2X20";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; "J4";"MPU6050";"M08NO_SILK_FEMALE_PTH";"1X08_NO_SILK@1";"Header 8";""; "J5";"BME280";"M04NO_SILK_ALL_ROUND";"1X04_NO_SILK_ALL_ROUND";"Header 4";""; @@ -44,10 +43,11 @@ "JP8";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";""; "JP9";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";""; "JP10";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";""; +"JP11";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"Normally closed trace jumper";""; "L1";"13nH";"SMD-FERRITE-CHIP-120-OHM-500MA(0603)";"L0603";"303030001";""; "L2";"13nH";"SMD-FERRITE-CHIP-120-OHM-500MA(0603)";"L0603";"303030001";""; -"LED1";"Yellow 5mm";"LED3MM";"LED3MM";"LED";""; -"LED2";"White 5mm";"LED3MM";"LED3MM";"LED";""; +"LED1";"White 5mm";"LED3MM";"LED3MM";"LED";""; +"LED2";"Yellow 5mm";"LED3MM";"LED3MM";"LED";""; "LED3";"Green 5mm";"LED3MM";"LED3MM";"LED";""; "LED4";"Blue 5mm";"LED3MM";"LED3MM";"LED";""; "LED5";"Red 5mm";"LED3MM";"LED3MM";"LED";""; @@ -88,6 +88,7 @@ "S1";"RA-SPST";"RA-SPST";"RA-SPST";"";""; "U1";"Raspberry Pi Pico";"RASPBERRY_PICO-NO_DEBUG";"PICO-PKG-NO_DEBUG";"";""; "U6";"SR105U";"SR_FRS_0W5";"SR_FRS_0W5";"";""; +"U7";"DRA818V";"DRA818V";"DORJI_DRA818V";"Check availability";""; "X1";"SC1464-ND";"PG203J";"PG203J";"MIC/HEADPHONE JACK";""; "X2";"SMA-VERT";"SMA-VERT";"SMA-VERT";"";""; "X3";"SMA-VERT";"SMA-VERT";"SMA-VERT";"";""; diff --git a/hardware/v2.1/cubesatsim-main-v2.1.0_bottom.png b/hardware/v2.1/cubesatsim-main-v2.1.0_bottom.png new file mode 100644 index 00000000..c5a4429a Binary files /dev/null and b/hardware/v2.1/cubesatsim-main-v2.1.0_bottom.png differ diff --git a/hardware/v2.1/cubesatsim-main-v2.1.0_centroid.zip b/hardware/v2.1/cubesatsim-main-v2.1.0_centroid.zip new file mode 100644 index 00000000..27156c2c Binary files /dev/null and b/hardware/v2.1/cubesatsim-main-v2.1.0_centroid.zip differ diff --git a/hardware/v2.1/cubesatsim-main-v2.1.0_gerbers.zip b/hardware/v2.1/cubesatsim-main-v2.1.0_gerbers.zip new file mode 100644 index 00000000..095b9c1a Binary files /dev/null and b/hardware/v2.1/cubesatsim-main-v2.1.0_gerbers.zip differ diff --git a/hardware/v2.1/cubesatsim-main-v2.1.0_pcb.png b/hardware/v2.1/cubesatsim-main-v2.1.0_pcb.png new file mode 100644 index 00000000..92150f61 Binary files /dev/null and b/hardware/v2.1/cubesatsim-main-v2.1.0_pcb.png differ diff --git a/hardware/v2.1/cubesatsim-main-v2.1.0_pour.png b/hardware/v2.1/cubesatsim-main-v2.1.0_pour.png new file mode 100644 index 00000000..5c4dce49 Binary files /dev/null and b/hardware/v2.1/cubesatsim-main-v2.1.0_pour.png differ diff --git a/hardware/v2.1/cubesatsim-main-v2.1.0_schematic.pdf b/hardware/v2.1/cubesatsim-main-v2.1.0_schematic.pdf new file mode 100644 index 00000000..46ae259f Binary files /dev/null and b/hardware/v2.1/cubesatsim-main-v2.1.0_schematic.pdf differ diff --git a/hardware/v2.1/cubesatsim-main-v2.1.0_top.png b/hardware/v2.1/cubesatsim-main-v2.1.0_top.png new file mode 100644 index 00000000..180a19c5 Binary files /dev/null and b/hardware/v2.1/cubesatsim-main-v2.1.0_top.png differ diff --git a/hardware/v2.1/cubesatsim-solar-v2.1.0._gerbers.zip b/hardware/v2.1/cubesatsim-solar-v2.1.0._gerbers.zip new file mode 100644 index 00000000..ed8ec3cb Binary files /dev/null and b/hardware/v2.1/cubesatsim-solar-v2.1.0._gerbers.zip differ diff --git a/hardware/v2.0/cubesatsim-solar-v2.0.1.mnb b/hardware/v2.1/cubesatsim-solar-v2.1.0.mnb similarity index 100% rename from hardware/v2.0/cubesatsim-solar-v2.0.1.mnb rename to hardware/v2.1/cubesatsim-solar-v2.1.0.mnb diff --git a/hardware/v2.0/cubesatsim-solar-v2.0.1.mnt b/hardware/v2.1/cubesatsim-solar-v2.1.0.mnt similarity index 100% rename from hardware/v2.0/cubesatsim-solar-v2.0.1.mnt rename to hardware/v2.1/cubesatsim-solar-v2.1.0.mnt diff --git a/hardware/v2.0/cubesatsim-solar-v2.0.1_bom.csv.txt b/hardware/v2.1/cubesatsim-solar-v2.1.0_bom.csv.txt similarity index 88% rename from hardware/v2.0/cubesatsim-solar-v2.0.1_bom.csv.txt rename to hardware/v2.1/cubesatsim-solar-v2.1.0_bom.csv.txt index c761de98..200e9fdb 100644 --- a/hardware/v2.0/cubesatsim-solar-v2.0.1_bom.csv.txt +++ b/hardware/v2.1/cubesatsim-solar-v2.1.0_bom.csv.txt @@ -38,6 +38,13 @@ "JP17";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";""; "JP18";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";""; "JP19";"";"CONN_01PTH_NO_SILK_YES_STOP";"1X01_NO_SILK";"Single connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";""; +"JP20";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";""; +"JP21";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";""; +"JP22";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";""; +"JP23";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";""; +"JP24";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";""; +"JP25";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";""; +"JP26";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";""; "R1";"R100";"R-US_R0805";"R0805";"RESISTOR, American symbol";""; "R2";"R100";"R-US_R0805";"R0805";"RESISTOR, American symbol";""; "R3";"4.7k";"RESISTORPTH-1/4W-VERT-KIT";"AXIAL-0.1EZ";"Resistor";""; diff --git a/hardware/v2.1/cubesatsim-solar-v2.1.0_bottom.png b/hardware/v2.1/cubesatsim-solar-v2.1.0_bottom.png new file mode 100644 index 00000000..ee63809f Binary files /dev/null and b/hardware/v2.1/cubesatsim-solar-v2.1.0_bottom.png differ diff --git a/hardware/v2.1/cubesatsim-solar-v2.1.0_centroid.zip b/hardware/v2.1/cubesatsim-solar-v2.1.0_centroid.zip new file mode 100644 index 00000000..e80ca696 Binary files /dev/null and b/hardware/v2.1/cubesatsim-solar-v2.1.0_centroid.zip differ diff --git a/hardware/v2.1/cubesatsim-solar-v2.1.0_pcb.png b/hardware/v2.1/cubesatsim-solar-v2.1.0_pcb.png new file mode 100644 index 00000000..5ab20a76 Binary files /dev/null and b/hardware/v2.1/cubesatsim-solar-v2.1.0_pcb.png differ diff --git a/hardware/v2.1/cubesatsim-solar-v2.1.0_pour.png b/hardware/v2.1/cubesatsim-solar-v2.1.0_pour.png new file mode 100644 index 00000000..8dd7bf7a Binary files /dev/null and b/hardware/v2.1/cubesatsim-solar-v2.1.0_pour.png differ diff --git a/hardware/v2.1/cubesatsim-solar-v2.1.0_schematic.pdf b/hardware/v2.1/cubesatsim-solar-v2.1.0_schematic.pdf new file mode 100644 index 00000000..77e59fb7 Binary files /dev/null and b/hardware/v2.1/cubesatsim-solar-v2.1.0_schematic.pdf differ diff --git a/hardware/v2.1/cubesatsim-solar-v2.1.0_top.png b/hardware/v2.1/cubesatsim-solar-v2.1.0_top.png new file mode 100644 index 00000000..2c8e3ee3 Binary files /dev/null and b/hardware/v2.1/cubesatsim-solar-v2.1.0_top.png differ diff --git a/hardware/v2.1/readme.md b/hardware/v2.1/readme.md new file mode 100644 index 00000000..6e079749 --- /dev/null +++ b/hardware/v2.1/readme.md @@ -0,0 +1,33 @@ +cubesatsim-main-v2 0 1_top cubesatsim-battery-v2 0_top cubesatsim-solar-v2 0_top + + + +Here is information about the CubeSatSim PCBs, version v2.1 + +There are 3 boards: Main, Solar, and Battery + +Here's what the files are: + +*_gerbers.zip -- All gerber files used to fabricate PCBs along with .TXT drill file + +*_schematic.pdf -- Schematic + +*_pcb.png -- View of board + +*_pour.png -- View of board with fill + +*_top.png -- Top view of PCB generated by gerbers + +*_bottom.png -- Bottom view of PCB generated by gerbers + +*.mnt -- top SMD component placement data + +*.mnb -- bottom SMD component placement data + +*_bom.csv.txt -- Bill of Materials in CSV format + +I use PCBWay to fabricate PCBs https://pcbway.com + +Here is the bill of materials: https://CubeSatSim.org/bom + +Wiki instructions: https://github.com/alanbjohnston/CubeSatSim/wiki/ diff --git a/install b/install index b1981204..adbc9fc1 100755 --- a/install +++ b/install @@ -261,7 +261,6 @@ elif [[ $(grep 'trixie' /etc/os-release) ]]; then exit 1 fi fi ->>>>>>> 9518ba870ed4548fcaf00285b0578312a9a300c2 FILE=/home/pi/CubeSatSim/sim.cfg if [ -f "$FILE" ]; then @@ -348,7 +347,6 @@ if [ ! -d "/home/pi/venv" ]; then sudo /home/pi/venv/bin/pip3 install adafruit-circuitpython-ina219 fi ->>>>>>> 9518ba870ed4548fcaf00285b0578312a9a300c2 sudo apt-get remove pulseaudio -y @@ -360,11 +358,14 @@ sudo apt-get install -y git libasound2-dev i2c-tools build-essential libgd-dev l if [ ! -d "/home/pi/direwolf" ]; then cd - git clone https://github.com/alanbjohnston/direwolf.git - cd direwolf - make -j - sudo make install - make install-rpi + git clone https://github.com/wb2osz/direwolf.git + cd direwolf + mkdir build + cd build + cmake .. + make -j4 + sudo make install + make install-conf fi sudo apt-get install -y gpsd gpsd-clients libgps-dev python3-gps @@ -417,19 +418,6 @@ else echo "b" > .mode fi -cd - -git clone https://github.com/wb2osz/direwolf.git -cd direwolf -mkdir build -cd build -cmake .. -make -j4 -sudo make install -make install-conf - -cd - if [ ! -d "/home/pi/pi-power-button" ]; then cd @@ -447,6 +435,7 @@ git pull --no-rebase > .updated_p git checkout master grep 'changed' /home/pi/pi-power-button/.updated_p if [[ $(grep 'changed' /home/pi/pi-power-button/.updated_p) ]]; then + echo "updating pi-power-button." script/install FLAG=1 diff --git a/main.c b/main.c index bcb7d75d..26bb93ff 100644 --- a/main.c +++ b/main.c @@ -1660,7 +1660,6 @@ void get_tlm_fox() { for (int count1 = 0; count1 < 8; count1++) { if (voltage[count1] < voltage_min[count1]) voltage_min[count1] = voltage[count1]; if (current[count1] < current_min[count1]) current_min[count1] = current[count1]; - if (voltage[count1] > voltage_max[count1]) voltage_max[count1] = voltage[count1]; if (current[count1] > current_max[count1]) current_max[count1] = current[count1]; @@ -2735,6 +2734,8 @@ if (setting == ON) { pclose(command); fprintf(stderr,"Turning Battery saver mode OFF\n"); if ((mode == AFSK) || (mode == SSTV) || (mode == CW) || (mode == PACSAT)) { + battery_saver_mode = OFF; + if ((mode == AFSK) || (mode == SSTV) || (mode == CW)) { command = popen("echo 'reboot due to turning OFF Safe Mode!' | wall", "r"); pclose(command); command = popen("sudo reboot now", "r"); diff --git a/main.h b/main.h index dfa37b2e..058c0012 100644 --- a/main.h +++ b/main.h @@ -145,6 +145,21 @@ FILE *image_file; #define FAIL_AUDIO 11 int failureMode = FAIL_NONE; +#define FAIL_COUNT 11 +#define FAIL_NONE -1 +#define FAIL_UNPLUG 1 +#define FAIL_SOLAR 2 +#define FAIL_DEGRADE 3 +#define FAIL_SHORT 4 +#define FAIL_I2C1 5 +#define FAIL_I2C3 6 +#define FAIL_CAMERA 7 +#define FAIL_PAYLOAD 8 +#define FAIL_BME 9 +#define FAIL_MPU 10 +#define FAIL_AUDIO 11 +int failureMode = FAIL_NONE; + int transmitStatus = -1; float amplitude; // = ; // 20000; // 32767/(10%amp+5%amp+100%amp) diff --git a/motd.txt b/motd.txt new file mode 100644 index 00000000..09ff7ac9 --- /dev/null +++ b/motd.txt @@ -0,0 +1,11 @@ + +This Raspberry Pi has the CubeSatSim v2.x software installed +and runs automatically as systemd cubesatsim.service. For more +information see https://CubeSatSim.org. To update +to the latest version, enter this command: + +CubeSatSim/update + +To see configuration options, enter this command: + +CubeSatSim/config diff --git a/sensor_extension.c b/sensor_extension.c new file mode 100644 index 00000000..5c958a5a --- /dev/null +++ b/sensor_extension.c @@ -0,0 +1,34 @@ +// Use this template for adding additional sensors +// see example ... + +// put your library includes here +#include +#include + +// put your globals here + + +// put your setup code here +void sensor_setup() { + +// printf("Starting new sensor!\n"); + +} + +// put your loop code here +// Very Important: only use print, not println!! +int sensor_loop(char *sensor_buffer) { + + int sensors = 0; // set to the number of sensor readings adding. + sensor_buffer[0] = 0; // make sure buffer is empty + +// printf("Reading new sensors!\n"); + +// sensors = 3; +// strcpy(sensor_buffer, "NEW 0.0 0.0 0.0"); + +// printf("New sensor string: %s\n", sensor_buffer); + + return(sensors); + +} diff --git a/spacecraft/FoxTelem_1.13i/CubeSatSim_PSK_maxtelemetry.csv b/spacecraft/FoxTelem_1.13i/CubeSatSim_PSK_maxtelemetry.csv new file mode 100644 index 00000000..f99efb04 --- /dev/null +++ b/spacecraft/FoxTelem_1.13i/CubeSatSim_PSK_maxtelemetry.csv @@ -0,0 +1,62 @@ +61,TYPE,FIELD,BITS,UNIT,CONVERSION,MODULE,MODULE_NUM,MODULE_LINE,LINE_TYPE,SHORT_NAME,DESCRIPTION +0,MAX,Sensor 2,12,integer,1,NONE,6,8,3,Sensor 2,STEM Payload Extra Sensor 2 +1,MAX,Sensor 3,12,integer,1,NONE,6,9,3,Sensor 3,STEM Payload Extra Sensor 3 +2,MAX,BATT_V,12,V,cubesatsim_voltage|FLOAT2,NONE,4,1,3,Battery Voltage,INA219 Battery Voltage +3,MAX,SatelliteXAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,7,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around X Axis +4,MAX,SatelliteYAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,8,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around Y Axis +5,MAX,SatelliteZAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,9,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around Z Axis +6,MAX,BATT_I,12,mA,cubesatsim_current,NONE,4,2,3,Battery Current,INA219 Battery Current +7,MAX,Temperature,12,C,cubesatsim_temperature,NONE,6,2,3,BME280 Temp,BME280 STEM Payload sensor temperature +8,MAX,posXv,12,V,cubesatsim_voltage|FLOAT2,NONE,7,1,3,Voltage,INA219 +X solar panel Voltage +9,MAX,posYv,12,V,cubesatsim_voltage|FLOAT2,NONE,8,1,3,Voltage,INA219 +Y solar panel Voltage +10,MAX,posZv,12,V,cubesatsim_voltage|FLOAT2,NONE,9,1,3,Voltage,INA219 +Z solar panel Voltage +11,MAX,negXv,12,V,cubesatsim_voltage|FLOAT2,NONE,10,1,3,Voltage,INA219 -X solar panel Voltage +12,MAX,negYv,12,V,cubesatsim_voltage|FLOAT2,NONE,11,1,3,Voltage,INA219 -Y solar panel Voltage +13,MAX,negZv,12,V,cubesatsim_voltage|FLOAT2,NONE,12,1,3,Voltage,INA219 -Z solar panel Voltage +14,MAX,posXi,12,mA,cubesatsim_current,NONE,7,2,3,Current,INA219 +X solar panel Current +15,MAX,posYi,12,mA,cubesatsim_current,NONE,8,2,3,Current,INA219 +Y solar panel Current +16,MAX,posZi,12,mA,cubesatsim_current,NONE,9,2,3,Current,INA219 +Z solar panel Current +17,MAX,negXi,12,mA,cubesatsim_current,NONE,10,2,3,Current,INA219 -X solar panel Current +18,MAX,negYi,12,mA,cubesatsim_current,NONE,11,2,3,Current,INA219 -Y solar panel Current +19,MAX,negZi,12,mA,cubesatsim_current,NONE,12,2,3,Current,INA219 -Z solar panel Current +20,MAX,BATT2_V,12,V,cubesatsim_voltage|FLOAT2,NONE,5,1,3,Battery 2 Voltage,INA219 Battery 2 Voltage +21,MAX,spin,12,rpm,cubesatsim_rpm,NONE,3,1,3,Spacecraft Spin,Calculated spin rate using solar cells +22,MAX,Pressure,12,hPa,cubesatsim_pressure,NONE,6,3,3,BME280 Pressure,BME280 STEM Payload sensor pressure +23,MAX,Altitude,12,m,cubesatsim_altitude|INT,NONE,6,4,3,BME280 Altitude,BME280 STEM Payload sensor altitude +24,MAX,Resets,12,-,12,NONE,3,2,3,Reset Count, Software Reset Count +25,MAX,rssi,12,dBm,cubesatsim_rssi|INT,NONE,1,1,3,RSSI,Received Signal Strength Indication +26,MAX,IHUcpuTemp,12,C,cubesatsim_temperature,NONE,2,1,3,IHU Temp (Pi),Internal temperature of IHU from Pi +27,MAX,SatelliteXAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,7,3,3,Rotation,STEM Payload Board MPU6050 Angular veolcity around X Axis +28,MAX,SatelliteYAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,8,3,3,Rotation,STEM Payload Board MPU6050 Angular veolcity around Y Axis +29,MAX,SatelliteZAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,9,3,3,Rotation,STEM Payload Board MPU6050 Angular veolcity around Z Axis +30,MAX,Humidity,12,%,cubesatsim_temperature,NONE,6,5,3,BME280 Humidity,BME280 Humidity +31,MAX,BAT2_I,12,mA,cubesatsim_current,NONE,5,2,3,Battery 2 Current,INA219 Battery 2 Current +32,MAX,DiodeTemp,12,C,cubesatsim_rpm,NONE,6,6,3,Diode Temp,STEM Payload Diode Temperature +33,MAX,Sensor 1,12,integer,1,NONE,6,7,3,Sensor 1,STEM Payload Extra Sensor 1 +34,MAX,STEMPayloadStatus,1,-,17,NONE,6,1,0,STEM Payload Status, STEM Payload STEM Payload board failure Indicator +35,MAX,SafeMode,1,-,STATUS_ON_OFF,NONE,3,2,0,Safe Mode, Safe Mode (Low Battery Voltage) +36,MAX,SimulatedTelemetry,1,-,STATUS_ON_OFF,NONE,3,4,0,Simulated Telemetry,Simulated Telemetry Indicator +37,MAX,PayloadStatus1,1,-,17,NONE,6,8,0,Exp 3,STEM Payload status 1 failure indicator +38,MAX,I2CBus0Failure,1,-,17,NONE,2,2,0,I2C Bus 0,I2C bus 0 failure indicator +39,MAX,I2CBus1Failure,1,-,17,NONE,2,2,0,I2C Bus 1,I2C bus 1 failure indicator +40,MAX,I2CBus3Failure,1,-,17,NONE,2,3,0,I2C Bus 3,I2C bus 3 failure indicator +41,MAX,CameraFailure,1,-,17,NONE,2,4,0,Camera,Camera failure indicator +42,MAX,GroundCommands,4,-,1,NONE,3,3,0,Ground Commands,Number of ground commands received +43,MAX,RxAntenna,1,-,16,NONE,1,3,0,RX Antenna,Receive antenna status +44,MAX,TxAntenna,1,-,16,NONE,1,2,0,TX Antenna,Transmit antenna status +45,MAX,C2CStatus,2,-,COMMAND_STATUS,NONE,3,5,0,Command Control, Command & Control Status +46,MAX,ICR3VProt,12,V,43,NONE,7,2,3,3V Prot,ICR 3V Proteted +47,MAX,ICR2dot5V,12,V,43,NONE,7,3,3,2.5V,ICR 2.5V +48,MAX,ICR2dot5VProt,12,V,43,NONE,7,4,3,2.5V Prot,ICR 2.5V Protected +49,MAX,rf6,12,-,0,NONE,0,0,0,None,None +50,MAX,rf7,12,-,0,NONE,0,0,0,None,None +51,MAX,MuxTest,12,V,43,NONE,7,5,3,Sensor Power,Sensor Power Voltage at the ICR +52,MAX,LtVGACtl,12,V,42,NONE,1,4,3,VGA Control,Control Voltage to the Variable Gain Amplifier (VGA) +53,MAX,pad,4,-,34,NONE,0,0,0,None,Unused +54,MAX,IHUdiagData,32,-,18,NONE,3,2,0,Diagnostic Info,Diagnostic Data on IHU Performance +55,MAX,pad1,1,-,0,NONE,0,0,0,NONE,Filler +56,MAX,wodSize,8,000s,36,NONE,3,3,0,WOD Stored,Number of WOD data payloads kept for each of Science and Housekeeping. In hundreds +57,MAX,swCmds,32,-,35,NONE,7,6,0,Diagnostic,ICR Diagnostic information +58,MAX,hwCmdCnt,6,-,1,NONE,7,7,0,HW Command Count,Number of hardware commands since last reset +59,MAX,swCmdCnt,6,-,1,NONE,7,8,0,SW Command Count,Number of software commands since last reset +60,MAX,pad2,27,-,0,NONE,0,0,0,NONE,Filler byets diff --git a/spacecraft/FoxTelem_1.13i/CubeSatSim_PSK_mintelemetry.csv b/spacecraft/FoxTelem_1.13i/CubeSatSim_PSK_mintelemetry.csv new file mode 100644 index 00000000..7d69fce6 --- /dev/null +++ b/spacecraft/FoxTelem_1.13i/CubeSatSim_PSK_mintelemetry.csv @@ -0,0 +1,62 @@ +61,TYPE,FIELD,BITS,UNIT,CONVERSION,MODULE,MODULE_NUM,MODULE_LINE,LINE_TYPE,SHORT_NAME,DESCRIPTION +0,MIN,Sensor 2,12,integer,1,NONE,6,8,3,Sensor 2,STEM Payload Extra Sensor 2 +1,MIN,Sensor 3,12,integer,1,NONE,6,9,3,Sensor 3,STEM Payload Extra Sensor 3 +2,MIN,BATT_V,12,V,cubesatsim_voltage|FLOAT2,NONE,4,1,3,Battery Voltage,INA219 Battery Voltage +3,MIN,SatelliteXAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,7,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around X Axis +4,MIN,SatelliteYAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,8,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around Y Axis +5,MIN,SatelliteZAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,9,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around Z Axis +6,MIN,BATT_I,12,mA,cubesatsim_current,NONE,4,2,3,Battery Current,INA219 Battery Current +7,MIN,Temperature,12,C,cubesatsim_temperature,NONE,6,2,3,BME280 Temp,BME280 STEM Payload sensor temperature +8,MIN,posXv,12,V,cubesatsim_voltage|FLOAT2,NONE,7,1,3,Voltage,INA219 +X solar panel Voltage +9,MIN,posYv,12,V,cubesatsim_voltage|FLOAT2,NONE,8,1,3,Voltage,INA219 +Y solar panel Voltage +10,MIN,posZv,12,V,cubesatsim_voltage|FLOAT2,NONE,9,1,3,Voltage,INA219 +Z solar panel Voltage +11,MIN,negXv,12,V,cubesatsim_voltage|FLOAT2,NONE,10,1,3,Voltage,INA219 -X solar panel Voltage +12,MIN,negYv,12,V,cubesatsim_voltage|FLOAT2,NONE,11,1,3,Voltage,INA219 -Y solar panel Voltage +13,MIN,negZv,12,V,cubesatsim_voltage|FLOAT2,NONE,12,1,3,Voltage,INA219 -Z solar panel Voltage +14,MIN,posXi,12,mA,cubesatsim_current,NONE,7,2,3,Current,INA219 +X solar panel Current +15,MIN,posYi,12,mA,cubesatsim_current,NONE,8,2,3,Current,INA219 +Y solar panel Current +16,MIN,posZi,12,mA,cubesatsim_current,NONE,9,2,3,Current,INA219 +Z solar panel Current +17,MIN,negXi,12,mA,cubesatsim_current,NONE,10,2,3,Current,INA219 -X solar panel Current +18,MIN,negYi,12,mA,cubesatsim_current,NONE,11,2,3,Current,INA219 -Y solar panel Current +19,MIN,negZi,12,mA,cubesatsim_current,NONE,12,2,3,Current,INA219 -Z solar panel Current +20,MIN,BATT2_V,12,V,cubesatsim_voltage|FLOAT2,NONE,5,1,3,Battery 2 Voltage,INA219 Battery 2 Voltage +21,MIN,spin,12,rpm,cubesatsim_rpm,NONE,3,1,3,Spacecraft Spin,Calculated spin rate using solar cells +22,MIN,Pressure,12,hPa,cubesatsim_pressure,NONE,6,3,3,BME280 Pressure,BME280 STEM Payload sensor pressure +23,MIN,Altitude,12,m,cubesatsim_altitude|INT,NONE,6,4,3,BME280 Altitude,BME280 STEM Payload sensor altitude +24,MIN,Resets,12,-,12,NONE,3,2,3,Reset Count, Software Reset Count +25,MIN,rssi,12,dBm,cubesatsim_rssi|INT,NONE,1,1,3,RSSI,Received Signal Strength Indication +26,MIN,IHUcpuTemp,12,C,cubesatsim_temperature,NONE,2,1,3,IHU Temp (Pi),Internal temperature of IHU from Pi +27,MIN,SatelliteXAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,7,3,3,Rotation,STEM Payload Board MPU6050 Angular veolcity around X Axis +28,MIN,SatelliteYAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,8,3,3,Rotation,STEM Payload Board MPU6050 Angular veolcity around Y Axis +29,MIN,SatelliteZAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,9,3,3,Rotation,STEM Payload Board MPU6050 Angular veolcity around Z Axis +30,MIN,Humidity,12,%,cubesatsim_temperature,NONE,6,5,3,BME280 Humidity,BME280 Humidity +31,MIN,BAT2_I,12,mA,cubesatsim_current,NONE,5,2,3,Battery 2 Current,INA219 Battery 2 Current +32,MIN,DiodeTemp,12,C,cubesatsim_rpm,NONE,6,6,3,Diode Temp,STEM Payload Diode Temperature +33,MIN,Sensor 1,12,integer,1,NONE,6,7,3,Sensor 1,STEM Payload Extra Sensor 1 +34,MIN,STEMPayloadStatus,1,-,17,NONE,6,1,0,STEM Payload Status, STEM Payload STEM Payload board failure Indicator +35,MIN,SafeMode,1,-,STATUS_ON_OFF,NONE,3,2,0,Safe Mode, Safe Mode (Low Battery Voltage) +36,MIN,SimulatedTelemetry,1,-,STATUS_ON_OFF,NONE,3,4,0,Simulated Telemetry,Simulated Telemetry Indicator +37,MIN,PayloadStatus1,1,-,17,NONE,6,8,0,Exp 3,STEM Payload status 1 failure indicator +38,MIN,I2CBus0Failure,1,-,17,NONE,2,2,0,I2C Bus 0,I2C bus 0 failure indicator +39,MIN,I2CBus1Failure,1,-,17,NONE,2,2,0,I2C Bus 1,I2C bus 1 failure indicator +40,MIN,I2CBus3Failure,1,-,17,NONE,2,3,0,I2C Bus 3,I2C bus 3 failure indicator +41,MIN,CameraFailure,1,-,17,NONE,2,4,0,Camera,Camera failure indicator +42,MIN,GroundCommands,4,-,1,NONE,3,3,0,Ground Commands,Number of ground commands received +43,MIN,RxAntenna,1,-,16,NONE,1,3,0,RX Antenna,Receive antenna status +44,MIN,TxAntenna,1,-,16,NONE,1,2,0,TX Antenna,Transmit antenna status +45,MIN,C2CStatus,2,-,COMMAND_STATUS,NONE,3,5,0,Command Control, Command & Control Status +46,MIN,ICR3VProt,12,V,43,NONE,7,2,3,3V Prot,ICR 3V Proteted +47,MIN,ICR2dot5V,12,V,43,NONE,7,3,3,2.5V,ICR 2.5V +48,MIN,ICR2dot5VProt,12,V,43,NONE,7,4,3,2.5V Prot,ICR 2.5V Protected +49,MIN,rf6,12,-,0,NONE,0,0,0,None,None +50,MIN,rf7,12,-,0,NONE,0,0,0,None,None +51,MIN,MuxTest,12,V,43,NONE,7,5,3,Sensor Power,Sensor Power Voltage at the ICR +52,MIN,LtVGACtl,12,V,42,NONE,1,4,3,VGA Control,Control Voltage to the Variable Gain Amplifier (VGA) +53,MIN,pad,4,-,34,NONE,0,0,0,None,Unused +54,MIN,IHUdiagData,32,-,18,NONE,3,2,0,Diagnostic Info,Diagnostic Data on IHU Performance +55,MIN,pad1,1,-,0,NONE,0,0,0,NONE,Filler +56,MIN,wodSize,8,000s,36,NONE,3,3,0,WOD Stored,Number of WOD data payloads kept for each of Science and Housekeeping. In hundreds +57,MIN,swCmds,32,-,35,NONE,7,6,0,Diagnostic,ICR Diagnostic information +58,MIN,hwCmdCnt,6,-,1,NONE,7,7,0,HW Command Count,Number of hardware commands since last reset +59,MIN,swCmdCnt,6,-,1,NONE,7,8,0,SW Command Count,Number of software commands since last reset +60,MIN,pad2,27,-,0,NONE,0,0,0,NONE,Filler diff --git a/spacecraft/FoxTelem_1.13i/CubeSatSim_PSK_rttelemetry.csv b/spacecraft/FoxTelem_1.13i/CubeSatSim_PSK_rttelemetry.csv new file mode 100644 index 00000000..9fdaed04 --- /dev/null +++ b/spacecraft/FoxTelem_1.13i/CubeSatSim_PSK_rttelemetry.csv @@ -0,0 +1,63 @@ +62,TYPE,FIELD,BITS,UNIT,CONVERSION,MODULE,MODULE_NUM,MODULE_LINE,LINE_TYPE,SHORT_NAME,DESCRIPTION +0,realTime,Sensor 2,12,integer,1,Experiments,6,8,3,Sensor 2,STEM Payload Extra Sensor 2 +1,realTime,Sensor 3,12,integer,1,Experiments,6,9,3,Sensor 3,STEM Payload Extra Sensor 3 +2,realTime,BATT_V,12,V,cubesatsim_voltage|FLOAT2,Battery,4,1,3,Battery Voltage,INA219 Battery Voltage +3,realTime,SatelliteXAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,+X Panel,7,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around X Axis +4,realTime,SatelliteYAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,+Y Panel,8,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around Y Axis +5,realTime,SatelliteZAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,+Z Panel,9,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around Z Axis +6,realTime,BATT_I,12,mA,cubesatsim_current,Battery,4,2,3,Battery Current,INA219 Battery Current +7,realTime,Temperature,12,C,cubesatsim_temperature,Experiments,6,2,3,BME280 Temp,BME280 STEM Payload sensor temperature +8,realTime,posXv,12,V,cubesatsim_voltage|FLOAT2,+X Panel,7,1,3,Voltage,INA219 +X solar panel Voltage +9,realTime,posYv,12,V,cubesatsim_voltage|FLOAT2,+Y Panel,8,1,3,Voltage,INA219 +Y solar panel Voltage +10,realTime,posZv,12,V,cubesatsim_voltage|FLOAT2,+Z Panel,9,1,3,Voltage,INA219 +Z solar panel Voltage +11,realTime,negXv,12,V,cubesatsim_voltage|FLOAT2,-X Panel,10,1,3,Voltage,INA219 -X solar panel Voltage +12,realTime,negYv,12,V,cubesatsim_voltage|FLOAT2,-Y Panel,11,1,3,Voltage,INA219 -Y solar panel Voltage +13,realTime,negZv,12,V,cubesatsim_voltage|FLOAT2,-Z Panel,12,1,3,Voltage,INA219 -Z solar panel Voltage +14,realTime,posXi,12,mA,cubesatsim_current,+X Panel,7,2,3,Current,INA219 +X solar panel Current +15,realTime,posYi,12,mA,cubesatsim_current,+Y Panel,8,2,3,Current,INA219 +Y solar panel Current +16,realTime,posZi,12,mA,cubesatsim_current,+Z Panel,9,2,3,Current,INA219 +Z solar panel Current +17,realTime,negXi,12,mA,cubesatsim_current,-X Panel,10,2,3,Current,INA219 -X solar panel Current +18,realTime,negYi,12,mA,cubesatsim_current,-Y Panel,11,2,3,Current,INA219 -Y solar panel Current +19,realTime,negZi,12,mA,cubesatsim_current,-Z Panel,12,2,3,Current,INA219 -Z solar panel Current +20,realTime,BATT2_V,12,V,cubesatsim_voltage|FLOAT2,Battery2,5,1,3,Battery2 Voltage,INA219 Battery2 Voltage +21,realTime,spin,12,rpm,cubesatsim_rpm,Computer Software,3,1,3,Spacecraft Spin,Calculated spin rate using solar cells +22,realTime,Pressure,12,hPa,cubesatsim_pressure,Experiments,6,3,3,BME280 Pressure,BME280 STEM Payload sensor pressure +23,realTime,Altitude,12,m,cubesatsim_altitude|INT,Experiments,6,4,3,BME280 Altitude,BME280 STEM Payload sensor altitude +24,realTime,Resets,12,-,12,NONE,3,2,3,Reset Count, Software Reset Count +25,realTime,rssi,12,dBm,cubesatsim_rssi|INT,Radio,1,1,3,RSSI,Received Signal Strength Indication +26,realTime,IHUcpuTemp,12,C,cubesatsim_temperature,Computer Hardware,2,1,3,IHU Temp (Pi),Internal temperature of IHU from Pi +27,realTime,SatelliteXAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,+X Panel,7,3,3,Rotation,STEM Payload Board MPU6050 Angular veolcity around X Axis +28,realTime,SatelliteYAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,+Y Panel,8,3,3,Rotation,STEM Payload Board MPU6050 Angular veolcity around Y Axis +29,realTime,SatelliteZAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,+Z Panel,9,3,3,Rotation,STEM Payload Board MPU6050 Angular veolcity around Z Axis +30,realTime,Humidity,12,%,cubesatsim_temperature,Experiments,6,5,3,BME280 Humidity,BME280 Humidity +31,realTime,BAT2_I,12,mA,cubesatsim_current,Battery2,5,2,3,Battery2 Current,INA219 Battery2 Current +32,realTime,DiodeTemp,12,C,cubesatsim_rpm,Experiments,6,6,3,Diode Temp,STEM Payload Diode Temperature +33,realTime,Sensor 1,12,integer,1,Experiments,6,7,3,Sensor 1,STEM Payload Extra Sensor 1 +34,realTime,STEMPayloadStatus,1,-,17,Experiments,6,1,0,STEM Payload Status, STEM Payload STEM Payload board failure Indicator +35,realTime,SafeMode,1,-,STATUS_ON_OFF,Computer Software,3,2,0,Safe Mode, Safe Mode (Low Battery Voltage) +36,realTime,SimulatedTelemetry,1,-,STATUS_ON_OFF,Computer Software,3,4,0,Simulated Telemetry,Simulated Telemetry Indicator +37,realTime,PayloadStatus1,1,-,17,NONE,6,8,0,Exp 3,STEM Payload status 1 failure indicator +38,realTime,I2CBus0Failure,1,-,17,NONE,2,2,0,I2C Bus 0,I2C bus 0 failure indicator +39,realTime,I2CBus1Failure,1,-,17,Computer Hardware,2,2,0,I2C Bus 1,I2C bus 1 failure indicator +40,realTime,I2CBus3Failure,1,-,17,Computer Hardware,2,3,0,I2C Bus 3,I2C bus 3 failure indicator +41,realTime,CameraFailure,1,-,17,Computer Hardware,2,4,0,Camera,Camera failure indicator +42,realTime,GroundCommands,4,-,1,NONE,0,0,0,Ground Commands,Number of ground commands received +43,realTime,RxAntenna,1,-,16,Radio,1,3,0,RX Antenna,Receive antenna status +44,realTime,TxAntenna,1,-,16,Radio,1,2,0,TX Antenna,Transmit antenna status +45,realTime,C2CStatus,2,-,COMMAND_STATUS,Computer Software,3,5,0,Command Control, Command & Control Status +46,realTime,GroundCommands2,10,-,1,Computer Software,3,3,0,Ground Commands,Number of ground commands received +47,realTime,ICR3VProt,12,V,43,NONE,7,2,3,3V Prot,ICR 3V Proteted +48,realTime,ICR2dot5V,12,V,43,NONE,7,3,3,2.5V,ICR 2.5V +49,realTime,ICR2dot5VProt,12,V,43,NONE,7,4,3,2.5V Prot,ICR 2.5V Protected +50,realTime,rf6,12,-,0,NONE,0,0,0,None,None +51,realTime,rf7,12,-,0,NONE,0,0,0,None,None +52,realTime,MuxTest,12,V,43,NONE,7,5,3,Sensor Power,Sensor Power Voltage at the ICR +53,realTime,LtVGACtl,12,V,42,NONE,1,4,3,VGA Control,Control Voltage to the Variable Gain Amplifier (VGA) +54,realTime,pad,4,-,34,NONE,0,0,0,None,Unused +55,realTime,IHUdiagData,32,-,18,NONE,3,2,0,Diagnostic Info,Diagnostic Data on IHU Performance +56,realTime,pad1,1,-,0,NONE,0,0,0,NONE,Filler +57,realTime,wodSize,8,000s,36,NONE,3,3,0,WOD Stored,Number of WOD data payloads kept for each of Science and Housekeeping. In hundreds +58,realTime,swCmds,32,-,35,NONE,7,6,0,Diagnostic,ICR Diagnostic information +59,realTime,hwCmdCnt,6,-,1,NONE,7,7,0,HW Command Count,Number of hardware commands since last reset +60,realTime,swCmdCnt,6,-,1,NONE,7,8,0,SW Command Count,Number of software commands since last reset +61,realTime,pad2,17,-,0,NONE,0,0,0,NONE,Filler diff --git a/spacecraft/FoxTelem_1.13i/CubeSatSim_conversion_curves.csv b/spacecraft/FoxTelem_1.13i/CubeSatSim_conversion_curves.csv new file mode 100644 index 00000000..38f4351b --- /dev/null +++ b/spacecraft/FoxTelem_1.13i/CubeSatSim_conversion_curves.csv @@ -0,0 +1,13 @@ +CurveName,a,bx,cx^2,dx^3,ex^4,fx^5,Description +cubesatsim_voltage,0,0.01,0,0,0,0,Converts voltages read from the INA219 sensors +cubesatsim_current,-2048,1,0,0,0,0,Converts positive and negative currents read from the INA219 sensors +cubesatsim_temperature,0,0.1,0,0,0,0,Converts temperature of Pi +cubesatsim_rotation,-2048,1,0,0,0,0,Converts positive and negative dps rotation +cubesatsim_acceleration,-20.48,0.01,0,0,0,0,Converts positive and negative g acceleration +cubesatsim_altitude,0,10,0,0,0,0,Converts altitude +cubesatsim_pressure,0,1,0,0,0,0,Converts pressure +cubesatsim_sensor1,0,1,0,0,0,0,Conversion of Sensor 1 +cubesatsim_sensor2,-2048,1,0,0,0,0,Conversion of Sensor 2 +cubesatsim_sensor3,-20.48,0.01,0,0,0,0,Conversion of Sensor 3 +cubesatsim_rpm,-204.8,0.1,0,0,0,0,Conversion of calculated RPM +cubesatsim_rssi,-2048,1,0,0,0,0,Conversion of Received Signal Strength diff --git a/spacecraft/FoxTelem_1.13i/CubeSatSim_maxtelemetry.csv b/spacecraft/FoxTelem_1.13i/CubeSatSim_maxtelemetry.csv new file mode 100644 index 00000000..9bcc637e --- /dev/null +++ b/spacecraft/FoxTelem_1.13i/CubeSatSim_maxtelemetry.csv @@ -0,0 +1,48 @@ +47,TYPE,FIELD,BITS,UNIT,CONVERSION,MODULE,MODULE_NUM,MODULE_LINE,LINE_TYPE,SHORT_NAME,DESCRIPTION +0,MAX,Sensor 2,12,integer,1,NONE,6,8,3,Sensor 2,STEM Payload Extra Sensor 2 +1,MAX,Sensor 3,12,integer,1,NONE,6,9,3,Sensor 3,STEM Payload Extra Sensor 3 +2,MAX,BATT_V,12,V,cubesatsim_voltage|FLOAT2,NONE,4,1,3,Battery Voltage,INA219 Battery Voltage +3,MAX,SatelliteXAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,7,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around X Axis +4,MAX,SatelliteYAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,8,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around Y Axis +5,MAX,SatelliteZAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,9,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around Z Axis +6,MAX,BATT_I,12,mA,cubesatsim_current,NONE,4,2,3,Battery Current,INA219 Battery Current +7,MAX,Temperature,12,C,cubesatsim_temperature,NONE,6,2,3,BME280 Temp,STEM Payload Sensor BME280 Temperature +8,MAX,PANEL_PLUS_X_V,12,V,cubesatsim_voltage|FLOAT2,NONE,7,1,3,Voltage,INA219 +X Panel Voltage +9,MAX,PANEL_MINUS_X_V,12,V,cubesatsim_voltage|FLOAT2,NONE,10,1,3,Voltage,INA219 -X Panel Voltage +10,MAX,PANEL_PLUS_Y_V,12,V,cubesatsim_voltage|FLOAT2,NONE,8,1,3,Voltage,INA219 +Y Panel Voltage +11,MAX,PANEL_MINUS_Y_V,12,V,cubesatsim_voltage|FLOAT2,NONE,11,1,3,Voltage,INA219 -Y Panel Voltage +12,MAX,PANEL_PLUS_Z_V,12,V,cubesatsim_voltage|FLOAT2,NONE,9,1,3,Voltage,INA219 +Z Panel Voltage +13,MAX,PANEL_MINUS_Z_V,12,V,cubesatsim_voltage|FLOAT2,NONE,12,1,3,Voltage,INA219 -Z Panel Voltage +14,MAX,PANEL_PLUS_X_I,12,mA,cubesatsim_current,NONE,7,2,3,Current,INA219 +X Panel Current +15,MAX,PANEL_MINUS_X_I,12,mA,cubesatsim_current,NONE,10,2,3,Current,INA219 -X Panel Current +16,MAX,PANEL_PLUS_Y_I,12,mA,cubesatsim_current,NONE,8,2,3,Current,INA219 +Y Panel Current +17,MAX,PANEL_MINUS_Y_I,12,mA,cubesatsim_current,NONE,11,2,3,Current,INA219 -Y Panel Current +18,MAX,PANEL_PLUS_Z_I,12,mA,cubesatsim_current,NONE,9,2,3,Current,INA219 +Z Panel Current +19,MAX,PANEL_MINUS_Z_I,12,mA,cubesatsim_current,NONE,12,2,3,Current,INA219 -Z Panel Current +20,MAX,BATT2_V,12,V,cubesatsim_voltage|FLOAT2,NONE,5,1,3,Battery 2 Voltage,INA219 Battery 2 Voltage +21,MAX,SPIN,12,rpm,cubesatsim_rpm,NONE,3,1,3,Spacecraft Spin,Calculated spin rate using solar cells +22,MAX,Pressure,12,hPa,cubesatsim_pressure,NONE,6,3,3,BME280 Pressure,STEM Payload Sensor BME280 Pressure +23,MAX,Altitude,12,m,cubesatsim_altitude|INT,NONE,6,4,3,BME280 Altitude,STEM Payload Sensor BME280 Altitude +24,MAX,Resets,12,-,12,NONE,3,2,3,Reset Count, Software Reset Count +25,MAX,RSSI,12,dBm,cubesatsim_rssi|INT,NONE,1,1,3,RSSI,Received Signal Strength Indication +26,MAX,IHUTemperature,12,C,cubesatsim_temperature,NONE,2,1,3,IHU Temp (Pi),Internal Temperature of Pi IHU +27,MAX,SatelliteXAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,7,3,3,Rotation,STEM Payload Board MPU6050 Angular Veolcity around X Axis +28,MAX,SatelliteYAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,8,3,3,Rotation,STEM Payload Board MPU6050 Angular Veolcity around Y Axis +29,MAX,SatelliteZAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,9,3,3,Rotation,STEM Payload Board MPU6050 Angular Veolcity around Z Axis +30,MAX,Humidity,12,%,cubesatsim_temperature,NONE,6,5,3,BME280 Humidity,STEM Payload Sensor BME280 Humidity +31,MAX,BATT2_I,12,mA,cubesatsim_current,NONE,5,2,3,Battery 2 Current,INA219 Battery 2 Current +32,MAX,DiodeTemp,12,C,cubesatsim_rpm,NONE,6,6,3,Diode Temp,STEM Payload Diode Temperature +33,MAX,Sensor 1,12,integer,1,NONE,6,7,3,Sensor 1,STEM Payload Extra Sensor 1 +34,MAX,STEMPayloadStatus,1,-,17,NONE,6,1,0,STEM Payload Status,STEM Payload Board Status +35,MAX,SafeMode,1,-,STATUS_ON_OFF,NONE,3,2,0,Safe Mode, Safe Mode (Low Battery Voltage) +36,MAX,SimulatedTelemetry,1,-,STATUS_ON_OFF,NONE,3,4,0,Simulated Telemetry, Simulated Telemetry Indicator +37,MAX,PayloadStatus1,1,-,17,NONE,0,0,0,Exp 3,STEM Payload status 1 failure indicator +38,MAX,I2CBus0Failure,1,-,17,NONE,2,2,0,I2C Bus 0,I2C bus 0 failure indicator +39,MAX,I2CBus1Failure,1,-,17,NONE,2,2,0,I2C Bus 1,I2C bus 1 failure indicator +40,MAX,I2CBus3Failure,1,-,17,NONE,2,3,0,I2C Bus 3,I2C bus 3 failure indicator +41,MAX,CameraFailure,1,-,17,NONE,2,4,0,Camera,Camera failure indicator +42,MAX,GroundCommands,4,-,1,NONE,3,3,0,Ground Commands,Number of ground commands received +43,MAX,RXAntenna,1,-,16,NONE,1,3,0,RX Antenna,Receive antenna status +44,MAX,TXAntenna,1,-,16,NONE,1,2,0,TX Antenna,Transmit antenna status +45,MAX,C2CStatus,2,-,COMMAND_STATUS,NONE,3,5,0,Command Control, Command & Control Status +46,MAX,Pad,56,-,0,NONE,0,0,0,NONE,NONE diff --git a/spacecraft/FoxTelem_1.13i/CubeSatSim_mintelemetry.csv b/spacecraft/FoxTelem_1.13i/CubeSatSim_mintelemetry.csv new file mode 100644 index 00000000..5d6627a9 --- /dev/null +++ b/spacecraft/FoxTelem_1.13i/CubeSatSim_mintelemetry.csv @@ -0,0 +1,48 @@ +47,TYPE,FIELD,BITS,UNIT,CONVERSION,MODULE,MODULE_NUM,MODULE_LINE,LINE_TYPE,SHORT_NAME,DESCRIPTION +0,MIN,Sensor 2,12,integer,1,NONE,6,8,3,Sensor 2,STEM Payload Extra Sensor 2 +1,MIN,Sensor 3,12,integer,1,NONE,6,9,3,Sensor 3,STEM Payload Extra Sensor 3 +2,MIN,BATT_V,12,V,cubesatsim_voltage|FLOAT2,NONE,4,1,3,Battery Voltage,INA219 Battery Voltage +3,MIN,SatelliteXAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,7,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around X Axis +4,MIN,SatelliteYAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,8,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around Y Axis +5,MIN,SatelliteZAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,9,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around Z Axis +6,MIN,BATT_I,12,mA,cubesatsim_current,NONE,4,2,3,Battery Current,INA219 Battery Current +7,MIN,Temperature,12,C,cubesatsim_temperature,NONE,6,2,3,BME280 Temp,STEM Payload Sensor BME280 Temperature +8,MIN,PANEL_PLUS_X_V,12,V,cubesatsim_voltage|FLOAT2,NONE,7,1,3,Voltage,INA219 +X Panel Voltage +9,MIN,PANEL_MINUS_X_V,12,V,cubesatsim_voltage|FLOAT2,NONE,10,1,3,Voltage,INA219 -X Panel Voltage +10,MIN,PANEL_PLUS_Y_V,12,V,cubesatsim_voltage|FLOAT2,NONE,8,1,3,Voltage,INA219 +Y Panel Voltage +11,MIN,PANEL_MINUS_Y_V,12,V,cubesatsim_voltage|FLOAT2,NONE,11,1,3,Voltage,INA219 -Y Panel Voltage +12,MIN,PANEL_PLUS_Z_V,12,V,cubesatsim_voltage|FLOAT2,NONE,9,1,3,Voltage,INA219 +Z Panel Voltage +13,MIN,PANEL_MINUS_Z_V,12,V,cubesatsim_voltage|FLOAT2,NONE,12,1,3,Voltage,INA219 -Z Panel Voltage +14,MIN,PANEL_PLUS_X_I,12,mA,cubesatsim_current,NONE,7,2,3,Current,INA219 +X Panel Current +15,MIN,PANEL_MINUS_X_I,12,mA,cubesatsim_current,NONE,10,2,3,Current,INA219 -X Panel Current +16,MIN,PANEL_PLUS_Y_I,12,mA,cubesatsim_current,NONE,8,2,3,Current,INA219 +Y Panel Current +17,MIN,PANEL_MINUS_Y_I,12,mA,cubesatsim_current,NONE,11,2,3,Current,INA219 -Y Panel Current +18,MIN,PANEL_PLUS_Z_I,12,mA,cubesatsim_current,NONE,9,2,3,Current,INA219 +Z Panel Current +19,MIN,PANEL_MINUS_Z_I,12,mA,cubesatsim_current,NONE,12,2,3,Current,INA219 -Z Panel Current +20,MIN,BATT2_V,12,V,cubesatsim_voltage|FLOAT2,NONE,5,1,3,Battery 2 Voltage,INA219 Battery 2 Voltage +21,MIN,SPIN,12,rpm,cubesatsim_rpm,NONE,3,1,3,Spacecraft Spin,Calculated spin rate using solar cells +22,MIN,Pressure,12,hPa,cubesatsim_pressure,NONE,6,3,3,BME280 Pressure,STEM Payload Sensor BME280 Pressure +23,MIN,Altitude,12,m,cubesatsim_altitude|INT,NONE,6,4,3,BME280 Altitude,STEM Payload Sensor BME280 Altitude +24,MIN,Resets,12,-,12,NONE,3,2,3,Reset Count, Software Reset Count +25,MIN,RSSI,12,dBm,cubesatsim_rssi|INT,NONE,1,1,3,RSSI,Received Signal Strength Indication +26,MIN,IHUTemperature,12,C,cubesatsim_temperature,NONE,2,1,3,IHU Temp (Pi),Internal Temperature of Pi IHU +27,MIN,SatelliteXAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,7,3,3,Rotation,STEM Payload Board MPU6050 Angular Veolcity around X Axis +28,MIN,SatelliteYAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,8,3,3,Rotation,STEM Payload Board MPU6050 Angular Veolcity around Y Axis +29,MIN,SatelliteZAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,9,3,3,Rotation,STEM Payload Board MPU6050 Angular Veolcity around Z Axis +30,MIN,Humidity,12,%,cubesatsim_temperature,NONE,6,5,3,BME280 Humidity,STEM Payload Sensor BME280 Humidity +31,MIN,BATT2_I,12,mA,cubesatsim_current,NONE,5,2,3,Battery 2 Current,INA219 Battery 2 Current +32,MIN,DiodeTemp,12,C,cubesatsim_rpm,NONE,6,6,3,Diode Temp,STEM Payload Diode Temperature +33,MIN,Sensor 1,12,integer,1,NONE,6,7,3,Sensor 1,STEM Payload Extra Sensor 1 +34,MIN,STEMPayloadStatus,1,-,17,NONE,6,1,0,STEM Payload Status,STEM Payload Board Status +35,MIN,SafeMode,1,-,STATUS_ON_OFF,NONE,3,2,0,Safe Mode, Safe Mode (Low Battery Voltage) +36,MIN,SimulatedTelemetry,1,-,STATUS_ON_OFF,NONE,3,4,0,Simulated Telemetry, Simulated Telemetry Indicator +37,MIN,PayloadStatus1,1,-,17,NONE,0,0,0,Exp 3,STEM Payload status 1 failure indicator +38,MIN,I2CBus0Failure,1,-,17,NONE,2,2,0,I2C Bus 0,I2C bus 0 failure indicator +39,MIN,I2CBus1Failure,1,-,17,NONE,2,2,0,I2C Bus 1,I2C bus 1 failure indicator +40,MIN,I2CBus3Failure,1,-,17,NONE,2,3,0,I2C Bus 3,I2C bus 3 failure indicator +41,MIN,CameraFailure,1,-,17,NONE,2,4,0,Camera,Camera failure indicator +42,MIN,GroundCommands,4,-,1,NONE,3,3,0,Ground Commands,Number of ground commands received +43,MIN,RXAntenna,1,-,16,NONE,1,3,0,RX Antenna,Receive antenna status +44,MIN,TXAntenna,1,-,16,NONE,1,2,0,TX Antenna,Transmit antenna status +45,MIN,C2CStatus,2,-,COMMAND_STATUS,NONE,3,5,0,Command Control, Command & Control Status +46,MIN,Pad,56,-,0,NONE,0,0,0,NONE,NONE diff --git a/spacecraft/FoxTelem_1.13i/CubeSatSim_rttelemetry.csv b/spacecraft/FoxTelem_1.13i/CubeSatSim_rttelemetry.csv new file mode 100644 index 00000000..967514bc --- /dev/null +++ b/spacecraft/FoxTelem_1.13i/CubeSatSim_rttelemetry.csv @@ -0,0 +1,49 @@ +48,TYPE,FIELD,BITS,UNIT,CONVERSION,MODULE,MODULE_NUM,MODULE_LINE,LINE_TYPE,SHORT_NAME,DESCRIPTION +0,RT,Sensor 2,12,integer,1,Experiments,6,8,3,Sensor 2,STEM Payload Extra Sensor 2 +1,RT,Sensor 3,12,integer,1,Experiments,6,9,3,Sensor 3,STEM Payload Extra Sensor 3 +2,RT,BATT_V,12,V,cubesatsim_voltage|FLOAT2,Battery,4,1,3,Battery Voltage,INA219 Battery Voltage +3,RT,SatelliteXAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,+X Panel,7,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around X Axis +4,RT,SatelliteYAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,+Y Panel,8,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around Y Axis +5,RT,SatelliteZAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,+Z Panel,9,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around Z Axis +6,RT,BATT_I,12,mA,cubesatsim_current,Battery,4,2,3,Battery Current,INA219 Battery Current +7,RT,Temperature,12,C,cubesatsim_temperature,Experiments,6,2,3,BME280 Temp,STEM Payload Sensor BME280 Temperature +8,RT,PANEL_PLUS_X_V,12,V,cubesatsim_voltage|FLOAT2,+X Panel,7,1,3,Voltage,INA219 +X Panel Voltage +9,RT,PANEL_MINUS_X_V,12,V,cubesatsim_voltage|FLOAT2,-X Panel,10,1,3,Voltage,INA219 -X Panel Voltage +10,RT,PANEL_PLUS_Y_V,12,V,cubesatsim_voltage|FLOAT2,+Y Panel,8,1,3,Voltage,INA219 +Y Panel Voltage +11,RT,PANEL_MINUS_Y_V,12,V,cubesatsim_voltage|FLOAT2,-Y Panel,11,1,3,Voltage,INA219 -Y Panel Voltage +12,RT,PANEL_PLUS_Z_V,12,V,cubesatsim_voltage|FLOAT2,+Z Panel,9,1,3,Voltage,INA219 +Z Panel Voltage +13,RT,PANEL_MINUS_Z_V,12,V,cubesatsim_voltage|FLOAT2,-Z Panel,12,1,3,Voltage,INA219 -Z Panel Voltage +14,RT,PANEL_PLUS_X_I,12,mA,cubesatsim_current,+X Panel,7,2,3,Current,INA219 +X Panel Current +15,RT,PANEL_MINUS_X_I,12,mA,cubesatsim_current,-X Panel,10,2,3,Current,INA219 -X Panel Current +16,RT,PANEL_PLUS_Y_I,12,mA,cubesatsim_current,+Y Panel,8,2,3,Current,INA219 +Y Panel Current +17,RT,PANEL_MINUS_Y_I,12,mA,cubesatsim_current,-Y Panel,11,2,3,Current,INA219 -Y Panel Current +18,RT,PANEL_PLUS_Z_I,12,mA,cubesatsim_current,+Z Panel,9,2,3,Current,INA219 +Z Panel Current +19,RT,PANEL_MINUS_Z_I,12,mA,cubesatsim_current,-Z Panel,12,2,3,Current,INA219 -Z Panel Current +20,RT,BATT2_V,12,V,cubesatsim_voltage|FLOAT2,Battery2,5,1,3,Battery2 Voltage,INA219 Battery2 Voltage +21,RT,SPIN,12,rpm,cubesatsim_rpm,Computer Software,3,1,3,Spacecraft Spin,Calculated spin rate using solar cells +22,RT,Pressure,12,hPa,cubesatsim_pressure,Experiments,6,3,3,BME280 Pressure,STEM Payload Sensor BME280 Pressure +23,RT,Altitude,12,m,cubesatsim_altitude|INT,Experiments,6,4,3,BME280 Altitude,STEM Payload Sensor BME280 Altitude +24,RT,Resets,12,-,12,NONE,3,2,3,Reset Count, Software Reset Count +25,RT,RSSI,12,dBm,cubesatsim_rssi|INT,Radio,1,1,3,RSSI,Received Signal Strength Indication +26,RT,IHUTemperature,12,C,cubesatsim_temperature,Computer Hardware,2,1,3,IHU Temp (Pi),Internal Temperature of Pi IHU +27,RT,SatelliteXAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,+X Panel,7,3,3,Rotation,STEM Payload Board MPU6050 Angular Veolcity around X Axis +28,RT,SatelliteYAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,+Y Panel,8,3,3,Rotation,STEM Payload Board MPU6050 Angular Veolcity around Y Axis +29,RT,SatelliteZAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,+Z Panel,9,3,3,Rotation,STEM Payload Board MPU6050 Angular Veolcity around Z Axis +30,RT,Humidity,12,%,cubesatsim_temperature,Experiments,6,5,3,BME280 Humidity,STEM Payload Sensor BME280 Humidity +31,RT,BATT2_I,12,mA,cubesatsim_current,Battery2,5,2,3,Battery2 Current,INA219 Battery2 Current +32,RT,DiodeTemp,12,C,cubesatsim_rpm,Experiments,6,6,3,Diode Temp,STEM Payload Diode Temperature +33,RT,Sensor 1,12,integer,1,Experiments,6,7,3,Sensor 1,STEM Payload Extra Sensor 1 +34,RT,STEMPayloadStatus,1,-,17,Experiments,6,1,0,STEM Payload Status,STEM Payload Board Status +35,RT,SafeMode,1,-,STATUS_ON_OFF,Computer Software,3,2,0,Safe Mode, Safe Mode (Low Battery Voltage) +36,RT,SimulatedTelemetry,1,-,STATUS_ON_OFF,Computer Software,3,4,0,Simulated Telemetry, Simulated Telemetry Indicator +37,RT,PayloadStatus1,1,-,17,NONE,0,0,0,Exp 3,STEM Payload status 1 failure indicator +38,RT,I2CBus0Failure,1,-,17,NONE,2,2,0,I2C Bus 0,I2C bus 0 failure indicator +39,RT,I2CBus1Failure,1,-,17,Computer Hardware,2,2,0,I2C Bus 1,I2C bus 1 failure indicator +40,RT,I2CBus3Failure,1,-,17,Computer Hardware,2,3,0,I2C Bus 3,I2C bus 3 failure indicator +41,RT,CameraFailure,1,-,17,Computer Hardware,2,4,0,Camera,Camera failure indicator +42,RT,GroundCommands,4,-,1,NONE,0,0,0,Ground Commands,Number of ground commands received +43,RT,RXAntenna,1,-,16,Radio,1,3,0,RX Antenna,Receive antenna status +44,RT,TXAntenna,1,-,16,Radio,1,2,0,TX Antenna,Transmit antenna status +45,RT,C2CStatus,2,-,COMMAND_STATUS,Computer Software,3,5,0,Command Control, Command & Control Status +46,RT,GroundCommands2,10,-,1,Computer Software,3,3,0,Ground Commands,Number of ground commands received +47,RT,Pad,46,-,0,NONE,0,0,0,NONE,NONE diff --git a/spacecraft/FoxTelem_1.13i/README.md b/spacecraft/FoxTelem_1.13i/README.md new file mode 100644 index 00000000..765fba49 --- /dev/null +++ b/spacecraft/FoxTelem_1.13i/README.md @@ -0,0 +1,7 @@ +These files update the spacecraft files in FoxTelem version 1.13i or later and fix a bug in the payload altitude sensor display. + +You can download them as a zip file: [foxtelem_spacecraft_files.zip](https://github.com/user-attachments/files/23393444/foxtelem_spacecraft_files.zip) + +Extract (unzip foxtelem_spacecraft_files.zip) and copy into FoxTelem spacecraft folder, replacing existing files. + +Next time you run FoxTelem, the CubeSatSim-FSK and CubeSatSim-BPSK spacecraft will be automatically updated. diff --git a/squelch_cc.py b/squelch_cc.py index 9faa6ca8..a2ad899a 100644 --- a/squelch_cc.py +++ b/squelch_cc.py @@ -4,6 +4,16 @@ from time import sleep from os import system import sys +def blink(times): + blink_time = 0.1 + powerPin = 16 + for i in range(times): # blink times + GPIO.output(powerPin, 0) + sleep(blink_time) + GPIO.output(powerPin, 1) + sleep(blink_time) + sleep(0.65) + def command_control_check(): # global command_control @@ -71,81 +81,33 @@ def increment_mode(): print(mode) if (mode == 'a'): mode = 'f' - GPIO.output(powerPin, 0) # blink two times - sleep(0.1) - GPIO.output(powerPin, 1) - sleep(0.1) - GPIO.output(powerPin, 0) - sleep(0.1) - GPIO.output(powerPin, 1) - sleep(1) + blink(2) elif (mode == 'f'): mode = 'b' - GPIO.output(powerPin, 0) # blink three times - sleep(0.1) - GPIO.output(powerPin, 1) - sleep(0.1) - GPIO.output(powerPin, 0) - sleep(0.1) - GPIO.output(powerPin, 1) - sleep(0.1) - GPIO.output(powerPin, 0) - sleep(0.1) - GPIO.output(powerPin, 1) - sleep(1) + blink(3) elif (mode == 'b'): mode = 's' - GPIO.output(powerPin, 0) # blink four times - sleep(0.1) - GPIO.output(powerPin, 1) - sleep(0.1) - GPIO.output(powerPin, 0) - sleep(0.1) - GPIO.output(powerPin, 1) - sleep(0.1) - GPIO.output(powerPin, 0) - sleep(0.1) - GPIO.output(powerPin, 1) - sleep(0.1) - GPIO.output(powerPin, 0) - sleep(0.1) - GPIO.output(powerPin, 1) - sleep(1) - + blink(4) elif (mode == 's'): mode = 'm' - GPIO.output(powerPin, 0) # blink five times - sleep(0.1) - GPIO.output(powerPin, 1) - sleep(0.1) - GPIO.output(powerPin, 0) - sleep(0.1) - GPIO.output(powerPin, 1) - sleep(0.1) - GPIO.output(powerPin, 0) - sleep(0.1); - GPIO.output(powerPin, 1) - sleep(0.1) - GPIO.output(powerPin, 0) - sleep(0.1) - GPIO.output(powerPin, 1) - sleep(0.1) - GPIO.output(powerPin, 0) - sleep(0.1) - GPIO.output(powerPin, 1) - sleep(1) + blink(5) + elif (mode == 'm'): + mode = 'e' + blink(6) + elif (mode == 'e'): + mode = 'j' + blink(7) else: mode = 'a' - GPIO.output(powerPin, 0) # blink one time - sleep(0.1) - GPIO.output(powerPin, 1) - sleep(1) + blink(1) try: print("/home/pi/CubeSatSim/config -" + mode) - if (debug_mode == False): + if (debug_mode == False): + print("Changing mode now") + system("echo 'incrementing mode due to C2C!' | wall") GPIO.setwarnings(False) GPIO.output(txLed, 0) GPIO.output(powerPin, 0) @@ -153,7 +115,6 @@ def increment_mode(): system("sudo systemctl stop cubesatsim") system("/home/pi/CubeSatSim/config -" + mode) - print("Changing mode now") # file = open("/home/pi/CubeSatSim/.mode", "w") diff --git a/sstv/sstv_image_2_320_x_256.jpeg b/sstv/sstv_image_2_320_x_256.jpeg new file mode 100644 index 00000000..588a1aa7 Binary files /dev/null and b/sstv/sstv_image_2_320_x_256.jpeg differ diff --git a/stempayload/Payload_BME280_MPU6050_AIO/readme.MD b/stempayload/Payload_BME280_MPU6050_AIO/readme.MD index ec01c104..1e23a74d 100644 --- a/stempayload/Payload_BME280_MPU6050_AIO/readme.MD +++ b/stempayload/Payload_BME280_MPU6050_AIO/readme.MD @@ -1,5 +1,7 @@ This code for the Raspberry Pi Pico W supports the built-in BME-280 and MPU-6050 sensors on the Main board and adds support for Adafruit.io +Here is a ZIP file of these files: https://github.com/user-attachments/files/21951798/Payload_BME280_MPU6050_AIO.zip + To use this code, you will need to create a Free account at https://io.adafruit.com You will need to configure your Adafruit.io account information and your WiFi credentials in the edit_this_config_and_rename.h file diff --git a/telem.c b/telem.c index 7afceef2..ce4f14c3 100644 --- a/telem.c +++ b/telem.c @@ -15,7 +15,7 @@ int main(int argc, char *argv[]) { } } - printf("CubeSatSim v2.0 INA219 Voltage and Current Telemetry\n"); + printf("CubeSatSim v2.2 INA219 Voltage and Current Telemetry\n"); map[MINUS_X] = MINUS_Y; map[PLUS_Z] = MINUS_X; map[MINUS_Y] = PLUS_Z;