Υποσύστημα On Board Computer

Το υποσύστημα του On-Board Computer (OBC) θεωρείται ως ο «εγκέφαλος» του δορυφόρου. Είναι αρχικό υπεύθυνη για τον συντονισμό και την εκτέλεση των βασικών λειτουργιών που απαιτούνται ώστε να λειτουργεί ο νανοδορυφόρος τύπου CubeSat, καθώς επίσης και για τον έλεγχό του από την γη. Επιπλέον, στις αρμοδιότητες της υποομάδας εντάσσεται η σύνδεση διαφορετικών εξαρτημάτων, η τήρηση του λειτουργικού προγράμματος του δορυφόρου και η διόρθωση σφαλμάτων και αποτυχιών. Τα μέλη έχουν κατορθώσει να κατασκευάσουν ήδη μία δοκιμαστική πλακέτα, στην οποία βρίσκεται ο μικροελεγκτής και τα υπόλοιπα ηλεκτρονικά της κατασκευής.

Αναλυτικά, το OBC χρησιμοποιεί μικροελεγκτές μέσω των οποίων μπορεί να διαχειρίζεται τα δεδομένα πάνω στον δορυφόρο. Ο μικροελεγκτής πρόκειται ουσιαστικά για μία CPU που έχει πολύ μικρότερο μέγεθος και κατανάλωση ενέργειας, ώστε να τοποθετηθεί σε ένα νανοδορυφόρο. Η ομάδα χρησιμοποιεί μικροελεγκτές της Microchip και συγκεκριμένα της σειράς SAMV71. Μία από τις προκλήσεις που καλούνται τα μέλη να αντιμετωπίσουν είναι το περιβάλλον ακτινοβολίας σε τροχιά, που έχει τη δυνατότητα να καταστρέψει τα δεδομένα και να προκαλέσει βλάβες στους μικροελεγκτές. Για την αντιμετώπιση τέτοιου είδους προβλημάτων γίνεται χρήση τεχνικών όπως Error Detection ή εξαρτημάτων όπως Latching Current Limiters και Watchdogs.

Όσον αφορά τη φυσική δομή του OBC, αποτελείται από το μικροελεγκτή, τους απαραίτητους αισθητήρες και μνήμες όπου αποθηκεύονται τα κρίσιμα δεδομένα για τον δορυφόρο. Συγκεκριμένα, υπάρχει μία μνήμη MRAM Everspin MR5A16A, η οποία είναι ανθεκτική στην ακτινοβολία με μέγεθος 4 MB και σε αυτήν αποθηκεύονται όλες οι αριθμητικές τιμές των παραμέτρων του δορυφόρου. Ακολουθεί η μνήμη NAND Flash ISSI IS37SML01G1-MLI, με μέγεθος 128 MB όπου αποθηκεύονται όλα τα πακέτα του δορυφόρου που είναι έτοιμα για αποστολή προς την γη. Τελευταία είναι η μνήμη NAND Flash Micron MT29F64G08AFAAAWP-ITZ:A, με μέγεθος 8 GB, στην οποία αποθηκεύεται ολόκληρος ο όγκος των επιστημονικών δεδομένων της αποστολής, για αποστολή προς την γη. Αυτή η μνήμη βρίσκεται εντός του δοχείου με πίεση του επιστημονικού φορτίου. Άλλες λειτουργίες που πραγματοποιούνται στο OBC είναι η διατήρηση της ώρας, ο εντοπισμός και η διόρθωση σφαλμάτων (Failure Detection, Isolation and Recovery), η μετάβαση του δορυφόρου σε Ασφαλή Λειτουργία (Safe Mode) όταν αυτό χρειάζεται, η αυτόματη εκτέλεση εντολών βάση χρονοδιαγράμματος, ο απομακρυσμένος προγραμματισμός κώδικα άλλων υποσυστημάτων και η δημιουργία και ο έλεγχος όλης της τηλεμετρίας.

Εξίσου σημαντικό είναι και το κομμάτι του λογισμικού, το οποίο γράφεται από τα μέλη της ομάδας σε γλώσσες C++ και C, με τον ανοιχτό και ελεύθερο compiler gcc για ARM Cortex-M. Ο κώδικας αποτελείται από τα ακόλουθα κομμάτια: 

  • Τον κώδικα εφαρμογής (application code), ο οποίος πραγματοποιεί τις κύριες λειτουργίες της αποστολής.
  • Οδηγούς εξαρτημάτων (component drivers) που αποτελούν το κομμάτι που είναι υπεύθυνο για την επικοινωνία με συσκευές όπως αισθητήρες, αντλίες, κάμερες, κινητήρες κ.α.
  • Υπηρεσίες τηλεμετρίας και τηλε-εντολών (telemetry & telecommand services), που εκτελούν τις τυπικές δραστηριότητες ενός αντικειμένου στο διάστημα (όπως για παράδειγμα ανάγνωση μετρήσεων, αλλαγή παραμέτρων, αναφορά σφαλμάτων, κ.ά).
  • Βιβλιοθήκες που αποτελούνται από έτοιμο ανοιχτό κώδικα είναι αρμόδιες για τις τυποποιημένες λειτουργίες όπως τη διαχείριση αρχείων (littlefs) ή δομών δεδομένων (etlcpp).
  • Το λειτουργικό σύστημα πραγματικού χρόνου (real-time operating system) FreeRTOS. Είναι υπεύθυνο για να εκτελούνται όλες οι παραπάνω λειτουργίες, ενώ ο μικροελεγκτής δέχεται όλες τις εξωτερικές εισόδους του.

Τέλος, το λογισμικό γράφεται έχοντας στο μυαλό τους περιορισμούς ενός διαστημικού ενσωματωμένου συστήματος. Δηλαδή, δεν χρησιμοποιείται δυναμική καταχώρηση μνήμης ή RTTI, ενώ πραγματοποιούνται στατικοί έλεγχοι στον κώδικα και ελέγχεται αναλυτικά η κατανάλωση πόρων από τα προγράμματα. Το λογισμικό δοκιμάζεται αυτόματα και αυτή τη χρονική περίοδο γίνεται χρήση της βιβλιοθήκης Catch2 για τα unit tests. Όλος ο κώδικας είναι ανοιχτός και προσβάσιμος για όλους στο GitLab, ώστε να γίνεται περιήγηση, να διαβάζεται από τον καθένα και να προτείνονται αλλαγές!

Κατηγορίες: CubeSat