The Montgomery College Satellite Antenna Rotator...
Transcript of The Montgomery College Satellite Antenna Rotator...
Ham Radio in STEM Education
The Montgomery College Satellite Antenna
Rotator Project
Daniel Albuquerque, Raymond Botty, KK4HDR, Jordan
Deuser, Kyle Nathan, Dennis Ngo
presented by David Bern, W2LNX, adviser
Montgomery College, Rockville, Maryland
David.Bern @ MontgomeryCollege.edu
W2LNX @ AMSAT.org
2013 AMSAT Space Symposium 1 of 27 November 1-3, 2013 - Houston, TX
Introduction
agenda – using ham radio in STEM education
● desire to
● play with Raspberry Pis – a solution looking for a
problem
● organize a hacker/maker/DIY/robotics/ham radio club
summer student workshop at Montgomery College
● At the AMSAT-DC Spring 2013 Workshop
● Tom K3IO, suggested to use DiSEqC antenna rotators
as inexpensive azimuth and elevation rotator system
● a problem to solve with a Raspberry Pi?
2013 AMSAT Space Symposium 2 of 27 November 1-3, 2013 - Houston, TX
DiSEqC rotator
Eagle Aspen Pro Brand International rotator
● runs on 13 V DC, 450 degrees
2013 AMSAT Space Symposium 3 of 27 November 1-3, 2013 - Houston, TX
Raspberry Pi computer
● software – Raspbian Linux with Python, C/C++ installed
● hardware – GPIO pins, Ethernet and USB ports
2013 AMSAT Space Symposium 4 of 27 November 1-3, 2013 - Houston, TX
DiSEqC protocol
Eutelsat Digital Satellite Equipment Control – DiSEqC
● DiSEqC signal and power on same wire
● 22±4 KHz pulse train 650±250 mV peak-to-peak
● one-third bit Pulse Width Keying (PWK)
● 0 bit: 1.0 ms followed by 0.5 ms silence
● 1 bit: 0.5 ms followed by 1.0 ms silence
● 6 ms between DiSEqC commands
2013 AMSAT Space Symposium 5 of 27 November 1-3, 2013 - Houston, TX
DiSEqC protocol
DiSEqC signal from Eagle Aspen controller
DiSEqC signal to TTL level converter circuit
2013 AMSAT Space Symposium 6 of 27 November 1-3, 2013 - Houston, TX
DiSEqC protocol
●DiSEqC commands bytes
● unidirectional to Eagle Aspen rotator
● does not use parity bit
● five command bytes to set position
● example: GO TO 255.0 DEGREES – E0 31 6E 0F F0
● E0 – framing byte: command from master, no reply
required
● 31 – address byte: polar/azimuth positioner
● 6E – drive motor to angular position (°)
● 0F F0 – 255 x 16
2013 AMSAT Space Symposium 7 of 27 November 1-3, 2013 - Houston, TX
DiSEqC protocol
● Raspberry generates pulse width modulated (PWM) DiSEqC
signals on its GPIO pins
● gates a 22 KHz square wave oscillator
DiSEqC command and 22 KHz square wave
2013 AMSAT Space Symposium 8 of 27 November 1-3, 2013 - Houston, TX
DiSEqC protocol
TTL level to DiSEqC signal converter simplified
circuit prototype
2013 AMSAT Space Symposium 9 of 27 November 1-3, 2013 - Houston, TX
Raspberry Pi software
Python scripts – about 600 lines of code
● diseqc_rotator_control.py – reads from standard input
ASCII AZ-EL position data and converts to DiSEqC
commands sent to rotators
● schedule_pass.py – translates ASCII AZ-EL position
data from a file generated by PREDICT of a satellite
pass and writes to standard output
● handles cases when azimuth position goes “below”
zero degree or “beyond” 450 degrees
● read_serial_port.py – translates ASCII AZ-EL position
data read from serial port and writes to standard
output
● EASYCOMM I and II protocol
2013 AMSAT Space Symposium 10 of 27 November 1-3, 2013 - Houston, TX
Raspberry Pi software
gsat and EZ-EL tracking
2013 AMSAT Space Symposium 12 of 27 November 1-3, 2013 - Houston, TX
Software tools
Ethernet router – connect to Internet for current time
● dhcp server – Ethernet cables to desktop computer and
Raspberry Pi
On Raspberry Pi
● sshfs – mounts Linux file directory over ssh
On Linux computer – my development environment
● gedit – programmer text editor
● ssh, scp – secure shell and ssh copy
On Windows computer
● MobaXterm – provides ssh, xterm, scp, and text editor
2013 AMSAT Space Symposium 13 of 27 November 1-3, 2013 - Houston, TX
Raspberry Pi software
Python scripts – about 600 lines of code
● diseqc_rotator_control.py – reads from standard input
ASCII AZ-EL position data and converts to DiSEqC
commands sent to rotators
● schedule_pass.py – translates ASCII AZ-EL position
data from PREDICT satellite pass file and writes to
standard output
● handles cases when azimuth position goes “below”
zero degree or “beyond” 450 degrees
● read_serial_port.py – translates ASCII AZ-EL position
data read from serial port ASCII AZ-EL position
commands and writes to standard output
● EASYCOMM I and II protocol
2013 AMSAT Space Symposium 14 of 27 November 1-3, 2013 - Houston, TX
diseqc_rotator_control.py
# # main routine #
initialize()
azimuth_rotator = Eagle_Aspen_rotator(0, 450, AZIMUTH_PIN) elevation_rotator = Eagle_Aspen_rotator(0, 180, ELEVATION_PIN)
run_interactive_mode(azimuth_rotator, elevation_rotator)
print sys.argv[0], "finished... goodbye"
2013 AMSAT Space Symposium 15 of 27 November 1-3, 2013 - Houston, TX
diseqc_rotator_control.py
# # this routine runs this program in interactive mode #
def run_interactive_mode(azimuth_rotator, elevation_rotator):
while (True): print try: input = raw_input('command: '); print input except EOFError: break input = input.split() azimuth_rotator.update_position(input[1]) elevation_rotator.update_position(input[2]) if (azimuth_rotator.check_limits() == True and elevation_rotator.check_limits() == True): run_DiSEqC_command(azimuth_rotator, elevation_rotator) else: azimuth_rotator.position = azimuth_rotator.last_position elevation_rotator.position = elevation_rotator.last_position
2013 AMSAT Space Symposium 16 of 27 November 1-3, 2013 - Houston, TX
diseqc_rotator_control.py
# # this routine runs the DiSEqC command for the azimuth and elevation ... #
def run_DiSEqC_command(azimuth_rotator, elevation_rotator):
azimuth_rotator.run_DiSEqC_command() time.sleep(0.1) elevation_rotator.run_DiSEqC_command() time.sleep(0.1)
2013 AMSAT Space Symposium 17 of 27 November 1-3, 2013 - Houston, TX
diseqc_rotator_control.py
import RPi.GPIO as GPIO import time import sys import os from configuration import * from Eagle_Aspen_rotator import Eagle_Aspen_rotator from routines import *
PULSE_TIMING = DiSEqC.PULSE_TIMING AZIMUTH_PIN = GPIO_pin.AZIMUTH_PIN ELEVATION_PIN = GPIO_pin.ELEVATION_PIN STATUS_PIN = GPIO_pin.STATUS_PIN
# # this routine initializes the program # def initialize():
GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) GPIO.setup(AZIMUTH_PIN, GPIO.OUT) GPIO.setup(ELEVATION_PIN, GPIO.OUT) GPIO.setup(STATUS_PIN, GPIO.OUT)
print sys.argv[0], "starting... hello"
2013 AMSAT Space Symposium 18 of 27 November 1-3, 2013 - Houston, TX
Eagle_Aspen_rotator.py
class Eagle_Aspen_rotator:
def __init__(self, lower_limit, upper_limit, GPIO_pin):
...
def update_position(self, input):
...
def calc_stop_position(self):
...
def run_DiSEqC_command(self):
...
def make_DiSEqC_command(self):
...
def check_limits(self):
...
2013 AMSAT Space Symposium 19 of 27 November 1-3, 2013 - Houston, TX
Recommendations and conclusion
Recommendations
● Eagle Aspen rotators are fine for demonstrations and
for casual amateur satellite work
● rotators occasionally wander around the correct
position during a pass – mitigated by sending
position when it changes by at least two degrees
● needed to reset to zero position with its
controller – happened once
Conclusion
● agenda of using ham radio for STEM education
● this was a great experience for the students
2013 AMSAT Space Symposium 20 of 27 November 1-3, 2013 - Houston, TX
Continuing work
We plan to
● develop a printed circuit board for the Eagle Aspen
rotators if there is interest
● explore motors, stepper motors and rotary encoders
● explore interfacing Raspberry Pi to G-5500 rotator
control box
● assemble the least expensive satellite ground station
● home made antennas using WA5VJB's “Cheap” Yagis
2013 AMSAT Space Symposium 21 of 27 November 1-3, 2013 - Houston, TX
Availability
All source code, schematics, and documentation are
available on The Montgomery College Satellite Antenna
Rotator Project Website at
http://code.google.com/p/mc-satellite-antenna-rotator-project/
Questions, ideas, suggestions, requests and comments are
welcome by sending email to
mc.antenna.rotator.project @ gmail.com
2013 AMSAT Space Symposium 22 of 27 November 1-3, 2013 - Houston, TX
My students
Kyle, Daniel, Jordan, Dennis, Ray, KK4HDR
2013 AMSAT Space Symposium 24 of 27 November 1-3, 2013 - Houston, TX
Acknowledgments
● Tom Clark, K3IO, for inspiring and advising us on this
project
● Gilbert Mackall, N3RZN, for lending us his Yaesu G5500
rotator and a Yaesu GS232A
● Dr. Muhammad Kehnemouyi, the chairman of the
Department of Physics, Engineering, and Geosciences at
Montgomery College, Rockville for his encouragement and
support
● others ...
2013 AMSAT Space Symposium 25 of 27 November 1-3, 2013 - Houston, TX
Questions
?demonstration in the demonstration room
2013 AMSAT Space Symposium 26 of 27 November 1-3, 2013 - Houston, TX