Yesterday, I wrote the AFSK-1200 modem for the flight computer. This was challenging, in-fact, I worked several days to figure it out. Being new to the AtMega328p I found the manual tough going. I plan to put together a write-up on this at some point in the future, to help others through the pains. Unfortunately my schedule is a little too tight for that right now, I have a flight planned in three weeks time and the software isn’t yet written!
One of the more challenging aspects of writing the modem for me, was understanding PWM (Pulse Width Modulation), in particular because of being unfamiliar with the Arduino registers and how interrupts are used. I also continually confused 2200Hz as being double 1200Hz, which of course it isn’t! I don’t know why my brain would repeatedly fail on this point, but it did.
For the benefit of anyone else attempting to do the same thing, here are some useful references that I came across…
http://arduino.cc/en/Tutorial/PWM A good description of what PWM is.
http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM A good tutorial on the PWM modes of the AtMega328p (Arduino Uno)
http://www.daycounter.com/Calculators/Sine-Generator-Calculator.phtml A handy online tool for generating the sine wave to be used as a carrier wave for the Bell tones.
Due to time constraints, I’m not going to detail the software implementation here right now. I would like to come back and write it up later, time permitting. This has simply been an update on project progress and an opportunity to share those links. Until next time…
Thanks for Reading!