27
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

The Montgomery College Satellite Antenna Rotator Projectmstl.atl.calpoly.edu/.../Bern_Montgomery_College_Rotator.pdf · The Montgomery College Satellite Antenna Rotator Project

Embed Size (px)

Citation preview

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

PREDICT

2013 AMSAT Space Symposium 11 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

2013 AMSAT Space Symposium 23 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

Thank you!

I received this book when I was a child... Thank you!

2013 AMSAT Space Symposium 27 of 27 November 1-3, 2013 - Houston, TX