fossasystems / fossasat-2 Goto Github PK
View Code? Open in Web Editor NEWFirst generation 2P Satellite
License: GNU General Public License v3.0
First generation 2P Satellite
License: GNU General Public License v3.0
Hi! Thanks a lot for sharing the source code for the software and hardware of FossaSat-2 ❤️
However, I don't see a license in the repository, which legally means that "all rights are reserved" and all uses of this might lead to copyright infringement.
FossaSat-1 was shared with GPL3. Do you intend to use the same license for FossaSat-2?
Hi! Congratulations to the whole team on all your work!
I would like to use your EPS design as a benchmark for our Pocketsat implementation. Do you recommend it? Do you have any suggestions to take into account on the design?
One thing that I notice is that you don't have an over-charging or over-discharging mechanism for the battery (or I couldn't discover it). How do you manage that, so you don't damage the battery?
Thanks in advance!
Hi,
In the FS-2 sketch, message store and forwarding is supported by the folling code
case 'b':
addStoreAndForward(0x1337BEEF, "Hello there!");
break;
I'm not a programmer, but it appears that 0x1337BEEF is a memory address? Is there a limit on the numberof characters which may be sent to this address?
Also, please comment on the code below. This is intended to send a message (up to 32 characters) but unclear to me how to specify the correct memory address.
//adapted from code provided by K4KDR
String myCall="N6RFM";
String mySFtext="Hello from";
void sendSF() {
// get data to be stored and forwarded
char optData[32];
// text to transmit + some additional underscores for blank space after
String cq = mySFtext + myCall + " ";
// Length (with one extra character for the null terminator)
int str_len = cq.length() + 1;
cq.toCharArray(optData, str_len);
Serial.println();
Serial.print(F("Sending Store annd Forward text "));
// data to transmit
uint8_t functionId = CMD_STORE_AND_FORWARD_ADD; //unclear how to specify target memory address ?0x1337BEEF
uint8_t optDataLen = strlen(optData);
// build frame
uint8_t len = FCP_Get_Frame_Length(callsign, optDataLen);
uint8_t* frame = new uint8_t[len];
FCP_Encode(frame, callsign, functionId, optDataLen, (uint8_t*)optData);
// send data
int state = radio.transmit(frame, len);
delete[] frame;
Thanks so much!
Bob N6RFM
Hi,
FYI, there seem to be several definition inconsistencies in the GS ino. "Not declared in scope" observed for FREQUENCY and FSK_DATA_SHAPING. Related compiling errors can be resolved by adjusting to definitions already in sketch to FSK_FREQUENCY, LORA_FREQUENCY and DATA_SHAPING. FSK_CURRENT_LIMIT is also not declared in scope. Can be resolved by editing to CURRENT_LIMIT.
After adjustments made above, several warnings remain. See below. Any suggestions? Using RadioLib 4.02.
Best to all on the team! Looking forward to the upcoming launches.
Bob N6RFM
/home/bob/Desktop/FOSSASAT-2-master/software/GroundStation/GroundStation.ino: In function 'void cameraCapture(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)':
/home/bob/Desktop/FOSSASAT-2-master/software/GroundStation/GroundStation.ino:940:59: warning: narrowing conversion of '(((((int)pictureSize) << 4) & 240) | ((int)(((unsigned char)((int)lightMode)) & 15)))' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing]
uint8_t optData[4] = {slot, ((pictureSize << 4) & 0xF0) | (lightMode & 0x0F),
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
/home/bob/Desktop/FOSSASAT-2-master/software/GroundStation/GroundStation.ino:941:53: warning: narrowing conversion of '(((((int)saturation) << 4) & 240) | ((int)(((unsigned char)((int)brightness)) & 15)))' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing]
((saturation << 4) & 0xF0) | (brightness & 0x0F),
~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/home/bob/Desktop/FOSSASAT-2-master/software/GroundStation/GroundStation.ino:942:51: warning: narrowing conversion of '(((((int)contrast) << 4) & 240) | ((int)(((unsigned char)((int)special)) & 15)))' from 'int' to 'uint8_t {aka unsigned char}' inside { } [-Wnarrowing]
((contrast << 4) & 0xF0) | (special & 0x0F)};
~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/home/bob/Desktop/FOSSASAT-2-master/software/GroundStation/GroundStation.ino: In function 'void loop()':
/home/bob/Desktop/FOSSASAT-2-master/software/GroundStation/GroundStation.ino:1275:32: warning: integer overflow in expression [-Woverflow]
maneuver(0b00011111, 50*1000, 6000, pos);
~~^~~~~
In software/FossaSat2/src/ADCS/ADCS/adcs_main.cpp
FOSSASAT-2/software/FossaSat2/src/ADCS/ADCS/adcs_main.cpp
Lines 477 to 481 in cfe8c75
Solar unit panel reference frame relates to the body-ADCS frame as follows: solar X+ equals ADCS X+, solar Y+ equals body Z + and finally solar Z+ equals ADCS Y+.
ADCS frame is the one used for naming within the code, though it is not the one used in the dynamical model. In this sense, ADCS Z+ is renamed X+, X+ goes to Y+ and ADCS Y+ ends up as Z+.
In adcs_main, lines 477-485, talking about the comments above, there's still a mistake when identifying reference frames (solar and ADCS). Solar X+ should be ADCS X+ and solar Z+ should be ADCS Y+.
I don't know if it is just unupdated commenting or code is to be modified also.
// Calculate the intensities
// pulseLength vector follows solar panel reference frame, not ADCS frame!
// solar X+ = ADCS Y+
// solar Y+ = ADCS Z+
// solar Z+ = ADCS X+
ADCS_CALC_TYPE pulseLength[ADCS_NUM_AXES];
pulseLength[0] = ACS_IntensitiesRectifier(adcsState.prevIntensity[0], intensity[0], adcsParams.timeStep, adcsParams.pulseAmplitude);
pulseLength[1] = ACS_IntensitiesRectifier(adcsState.prevIntensity[2], intensity[2], adcsParams.timeStep, adcsParams.pulseAmplitude);
pulseLength[2] = ACS_IntensitiesRectifier(adcsState.prevIntensity[1], intensity[1], adcsParams.timeStep, adcsParams.pulseAmplitude);
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.