The main body of the satellite antenna is completely self contained and can be lifted from the base without needing to detach wires or clips. The base section uses an inductive charging set to wirelessly transfer power to the main body components. This enables continuous rotation on the horizontal azimuth track, but also introduces a challenge faced by many space robots: The inductive charging set will not deliver enough power to continuously run the motors and other modules, so we’ll need to selectively power off modules and charge a battery until we have enough energy to perform a particular operation.
The new base and main_mount files ending with _SRC022A-6.stl are compatible with both the inductive charging set and the SRC022A-6 slip ring. Use a 5V power supply with the slip ring and a 12V power supply with the inductive charging set. The next code release will drop support for the inductive charging set (waiting for battery charge before operations) in favor of the slip ring configuration. The original code will still be available in bitbucket for reference.
There are two magnetometers listed below, the FLORA 9-DOF and the HMC583L. The current code uses the FLORA board and the next release will use the HMC5883L. This module has a white PCB like the breadboard and stepper drivers, and it is a lot easier to attach and orient.
|Item Name||Quantity Needed|
|Adafruit Feather M0 WiFi - ATSAMD21 + ATWINC1500||1|
|FeatherWing OLED - 128x32 OLED Add-on For All Feather Boards||1|
|DIYmall Ublox NEO-7M-000 GPS Module MWC APM2.6||1|
|FLORA 9-DOF Accelerometer/Gyroscope/Magnetometer - LSM9DS0 - v1.0||1|
|HMC5883L Digital Compass Module||1|
|Adafruit SPI Non-Volatile FRAM Breakout - 64Kbit / 8KByte||1 (optional)|
|Inductive Charging Set - 5V @ 500mA max||1|
|NEMA 11 Stepper Motors||2|
|DRV8834 Low-Voltage Stepper Motor Driver Carrier||2|
|Adafruit Perma-Proto Small Mint Tin Size Breadboard PCB - 3 pack||1|
|100uf Electrolytic Capacitors||2|
|Lithium Ion Polymer Battery - 3.7v 500mAh||1 (not needed with slip ring)|
|Panel Mount 2.1mm DC Barrel Jack||1|
|Sunon 30mm fan||1 (not needed with slip ring)|
|100 Ohm / 200 Ohm variable resistor||1 (not needed with slip ring)|
|12V Power Supply||1|
|625ZZ 5mm x 16mm x 5mm bearings||5|
|Copper Foil Tape||1 (optional)|
|Kapton Tape||1 (optional)|
|M3X12 Socket Head Cap Screw|
We chose the Adafruit Feather M0 microcontroller for its built-in WiFi chip, LiPo charging capabilities, and large number of I/O pins. We are using a 500mAh battery.
The Adafruit FartherWing OLED module is used to display status messages and sensor readouts.
An inductive charging set is used to wirelessly power components while allowing for continuous rotation on the azimuth track and easy separation from the base. A 30mm fan mounted in the base keeps the inductive charging set cool and a 100/200 Ohm variable resistor is used to limit fan speed.
Low-voltage stepper drivers are used to operate the two NEMA 11 stepper motors.
An optical endstop is used to determine the altitude range of the dish.
A DIYmall Ublox NEO-7M GPS receiver module returns altitude, longitude, and latitude info with help from the TinyGPS++ library.
A FLORA 9-DOF module from Adafruit provides compass readings.
An Adafruit FRAM module can be used to permanently store settings and calibration values.
It is possible to print all of the parts, including the dish, without supports. We recommend printing everything at 10% infill with a high number of walls/shells (6 or more).
For a higher quality finish, we’ve split the dish into two parts that should be printed with supports.
Cut a layer or two (~0.4mm) of plastic from the inside of sat_shoulder.stl so that the bearing is recessed into the part like it is on the other side.
The receiving side of the inductive charging set (or slip ring) is connected to the USB pin on the Feather M0. The two inductive coils are lined up so they rotate right on top of each other. You may need to resolder one or more inductive coils so they can sit flush without one of the ends looping over the top of the coil. We are using a gel based super glue to hold the coils in place.
The two low-power stepper drivers are connected to BATT for the supply voltage, and D6 for the logic voltage so we can turn them off and on through code.
The FLORA 9-DOF, optical sensor, and FRAM module can be powered with 3.3v. The GPS receiver needs 5v to operate, so it needs to be connected directly to BATT.
The round FLORA 9-DOF pcb has a small white mark (halfway between X and Y) indicating the North direction. North on the chip should be pointing to the where the optical end-stop is mounted. We drilled a small hole through the dish to run wires back to the microcontroller.
|Stepper Driver Logic Pin||6|
|Optical End-Stop Pin||5|
|FRAM + inductive receiver board||2x 3x20mm|
|controller mount||2x 3x25mm|
|opto sensor||2x 3x16mm|
|feather m0||4x 2.5x8mm|
|motors x2||8x 2.5x8mm|
|dish||1x 5x40mm + 1x 5mm nut + 2x 3x10mm|
|azimuth wheels||6x 3x20mm|
|endstop mount||2x 3x20mm|
|endstop||2x 3x14mm + 2x 3mm nuts|
|slip ring||3x 3x20mm + 3xM3 washers|
Install the TinyGPS++ library and make sure you can compile and run Adafruit library example sketches for all of the individual components (Feather M0, FeatherWing OLED, FLORA 9-DOF, FRAM).
An example DesktopSatelliteAntenna Arduino library is available here.
The included example sketch will calibrate the unit by centering the dish and rotating on the azimuth track to record min/max compass values.
There is an internal WaitForVolts() function in the library that makes the unit wait for a charge before performing the next operation. While waiting for the battery to charge, it will output battery voltage, compass direction in degrees, and GPS data.
The main loop() of the example sketch repeatedly positions the dish to North and then South.