Skip to content
This repository was archived by the owner on Feb 18, 2025. It is now read-only.

Commit 98907fc

Browse files
committed
docs updates
1 parent 731ae87 commit 98907fc

File tree

23 files changed

+502
-104
lines changed

23 files changed

+502
-104
lines changed

.gitignore

+5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
.DS_Store
22
.vscode
3+
.venv
4+
**/*.pyc
5+
**/.venv
36
**/venv
47
**/__pycache__
8+
**/rtl-sdr.rules
9+
**/cloudflared.deb

balloon-tracker/readme.md

+90
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
![Banner](https://github.com/trackuino/trackuino/wiki/img/trackuino-banner-narrow.png)
2+
3+
The software and hardware for Trackuino, an open-source APRS tracker based on the Arduino platform. It was designed primarily to track high altitude balloons, so it has other handy features like reading temperature sensors and a buzzer for acoustic location.
4+
5+
Trackuino is intended for use by licensed radio amateurs.
6+
7+
# Features
8+
9+
- Arduino form factor (support for Arduino Nano, Uno, and Mega)
10+
- Fully modular, choose the daughterboards you want to use and print/buy them and the motherboard that fits your Arduino
11+
- Onboard and external LED headers for module status indications
12+
- Internal/external temperature sensors to read temperature in and outside the payload
13+
- Active/passive buzzer support to ease acoustic payload location
14+
- Support for custom additional analog and digital sensors
15+
- Open source (GPLv2 license), both software and hardware. In other words, do whatever you want with it: modify it, add it to your project, etc. as long as you open-source your modifications as well.
16+
17+
## Modules
18+
19+
Choose whatever modules you want to use and add them onto your motherboard.
20+
21+
### GPS Module
22+
23+
- Any GPS module that outputs NMEA strings (e.g. SiRF, UBLOX, etc.) is supported
24+
- GPS used needs 5V, GND, RX, and TX pins
25+
26+
### GSM Cellular Module
27+
28+
- Allows sending data to a GSM network (e.g. AT&T, T-Mobile, etc.) via web requests or SMS messages
29+
- Configuration for message format and destination phone number or URL
30+
31+
### Radio Module
32+
33+
- Radio: Radiometrix's HX1 (300 mW).
34+
- 1200 bauds AFSK using 8-bit PWM
35+
- Sends out standard APRS position messages (latitude, longitude, altitude, course, speed and time).
36+
- SMA female plug for radio out
37+
38+
### SD Card Local Storage Module
39+
40+
- OpenLog SD Card writing for an on-board copy of recorded data
41+
- Supports CSV format writing of data
42+
- Raw data dumping option
43+
- Custom pre-save formatting option (can convert raw analog input to temperature with given formula, etc.)
44+
45+
### Buzzer Module
46+
47+
- Active buzzer for acoustic payload location
48+
- Supports GPS readings for variable buzzing based on altitude or satellite lock
49+
50+
# Setup
51+
52+
Use the `Download ZIP` button or [click here](https://github.com/EricAndrechek/trackuino-v2/archive/refs/heads/main.zip) to get the source code and board schematics.
53+
54+
## Choosing Boards
55+
56+
Choose the motherboard you want to use based on what Arduino/MCU form factor you plan to use. The larger the Arduino/MCU and therefore motherboard, the more modules you will be able to add.
57+
58+
After selecting your motherboard, you can choose the modules you want to use. You can add as many modules as you want so long as they all fit on the motherboard. One of these modules needs to be the power daughterboard.
59+
60+
**Important**: Pay attention to the voltage your Arduino is using. If you are unsure, check [this page](https://learn.sparkfun.com/tutorials/arduino-comparison-guide/totally-tabular) to find out. If your MCU is 3.3V, you will need to print the 3.3V power daughterboard, if it is 5V, you will need to print the 5V power daughterboard.
61+
62+
Select all motherboards and module daughter boards you would like to use, and find somewhere online to get them printed.
63+
64+
## Soldering
65+
66+
Each module has a readme file that contains instructions for soldering. The boards also include labels on each component detailing what to solder where.
67+
68+
Each board's readme also includes a table of needed components to purchase to be used on your board.
69+
70+
## Software
71+
72+
If you are building for the Arduino platform you need the Arduino IDE. Get it from the [Arduino web site](https://arduino.cc/).
73+
74+
Unzip the software in your sketches directory and load it up by double-clicking on trackuino.ino.
75+
76+
The single most important configuration file is `config.h`. The file is self-documented. Here is where you set up your callsign, module settings, and more.
77+
78+
Some modules, like GSM, allow you to make additional configuration changes in their own custom, self-documented files so that you can do things like specify a JSON format for data to be sent through.
79+
80+
## Flashing
81+
82+
**Important**: When flashing the Arduino, remove the it from the motherboard. After flashing the firmware, you can plug it back in. The GPS, OpenLog, and the host computer share the same serial port on the AVR, so they will conflict when used together.
83+
84+
Within the Arduino IDE, be sure to select the correct board type for your Arduino.
85+
86+
While trackuino.ino is opened in the Arduino IDE, select the `Program` tab and click the `Upload` button.
87+
88+
## Debugging
89+
90+
In order to use serial debugging, you need to enable it in the `config.h` file, upload the code to the Arduino again, and then select the `Serial Monitor` tab.

balloon-tracker/whatsnew.md

+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
## Version 2.0 - 2022/07/01
2+
3+
- Combined the Shield and Software into one repository
4+
5+
- Completely re-wrote shield to make it more modular
6+
7+
- Added support for any GPS module that outputs NMEA strings (e.g. SiRF, UBLOX, etc.)
8+
9+
- Added OpenLog for storing data to SD card
10+
11+
- Added support for custom additional analog and digital sensors
12+
13+
- Added hardware schematics for a variety of Arduino footprints
14+
15+
- Added support for active buzzer
16+
17+
- Added support for temperature sensors
18+
19+
- Added status LED code and hardware LED options
20+
21+
## Version 1.52 - 2016/08/25
22+
23+
- FIX: Support U-BLOX M8 (and other Glonass / mixed GPSs), thanks to tmyrtle
24+
25+
- FIX: GPS minor fixes / debug code cleanup, thanks to tmyrtle
26+
27+
## Version 1.51 - 2014/07/25
28+
29+
- FIX: Compilation in Arduino 1.5.7 (deprecation of prog_uchar)
30+
31+
- FIX: Renamed .pde -> .ino
32+
33+
## Version 1.5 - 2014/04/06
34+
35+
- FIX: Allow compilation on Arduino 1.0+
36+
37+
- FIX: Added pre-emphasis flag, makes the signal more intelligible
38+
39+
- FIX: Revamped modem code to avoid ISR overruns
40+
41+
- FIX: improve baudrate accuracy
42+
43+
## Version 1.4 - 2012/08/26
44+
45+
- NEW: Support for PIC32 / Chipkit Uno32 platform
46+
47+
- NEW: Support for active or passive buzzers (DC or PWM driven)
48+
49+
- NEW: Battery voltage sensing
50+
51+
- NEW: Slotted transmissions for multilaunch events
52+
53+
- REMOVED: Support for the MX146 radio
54+
55+
## Version 1.31 - 2011/08/02
56+
57+
- FIX: Altitude 16-bit rollover
58+
59+
## Version 1.3 - 2011/07/05
60+
61+
- FIX: More robust GPS parsing. It should improve compatibility with most
62+
NMEA-standard units.
63+
64+
- FIX: Several optimizations in the modem module aimed at improving signal
65+
quality and reducing the chance of packet loss.
66+
67+
- FIX: Cut down SRAM usage by 30% by moving the big sine table to PROGMEM.
68+
69+
- NEW: Buzzer support for acoustic payload location.
70+
71+
- NEW: Debug information to aid in testing the firmware without a radio.
72+
73+
- NEW: The LED now indicates CPU activity.
74+
75+
## Version 1.2 - 2011/06/09
76+
77+
- FIX: APRS messages reported 1/10th of the actual speed
78+
79+
- NEW: Switch in config.h between celsius/farenheit/kelvin temperatures
80+
81+
## Version 1.1 - 2011/01/12
82+
83+
- FIX: Eagle files: use soldermask under MOSFET Q5 as heat sink
84+
85+
- FIX: TX LED's pin wasn't properly set as an output
86+
87+
- FIX: Move code into the sketch's directory to avoid library clutter
88+
89+
- NEW: Read internal/external temperatures from LM60 sensors
90+
91+
## Version 20100706
92+
93+
- First public release

ground-station/config.json

-6
This file was deleted.

ground-station/config.yaml

+107
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# Config for trackuino-v2 ground station
2+
# See https://github.com/EricAndrechek/trackuino-v2/blob/main/ground-station/readme.md#31-configyml-settings for more info
3+
4+
APRS-IS:
5+
# Callsign of the ground station
6+
callsign: N0CALL
7+
8+
# SSID of the ground station (0-15)
9+
# http://www.aprs.org/aprs11/SSIDs.txt
10+
ssid: 0
11+
12+
# Callsign passcode
13+
# https://apps.magicbug.co.uk/passcode/
14+
# passcode: 123456
15+
# (now automatically calculated from callsign)
16+
17+
# APRS-IS server to connect to
18+
# See http://www.aprs2.net/ for more info
19+
host: rotate.aprs2.net
20+
port: 14580
21+
22+
GS-Updates:
23+
# Whether to send ground station update packets
24+
enabled: true
25+
26+
# Symbol table and symbol code for the ground station
27+
# See http://www.aprs.org/symbols.html for more info or
28+
# http://wa8lmf.net/miscinfo/APRS_Symbol_Chart_Rev-H.pdf
29+
symbol-table: /
30+
symbol-code: (
31+
32+
# What the tocall should be for the packets
33+
# https://github.com/aprsorg/aprs-deviceid
34+
to-call: APRS
35+
36+
# comment to send with ground station packets
37+
comment: 'Trackuino-v2 Ground Station'
38+
39+
# Whether to send ground station position packets from USB GPS
40+
# if GPS is not set, this will be ignored
41+
position:
42+
enabled: true
43+
44+
# How many satellite fixes are required before position packets
45+
# If the number of fixes is less than this, the ground station will not send any position update packets
46+
# 0 to transmit regardless of fix
47+
required-fixes: 3
48+
49+
# How often to send ground station position packets (in seconds)
50+
# aprs.fi does not allow 30 seconds or faster
51+
update-interval: 60
52+
53+
# Whether to send ground station telemetry data
54+
telemetry:
55+
enabled: true
56+
# What telemetry data to send
57+
58+
# if all are false, no telemetry data will be sent
59+
data:
60+
- cpu: true
61+
- memory: true
62+
- disk: true
63+
- network: true
64+
- temperature: true
65+
# TODO: add way for user to add custom telemetry data
66+
67+
# How often to send ground station telemetry packets (in seconds)
68+
# aprs.fi does not allow 30 seconds or faster
69+
update-interval: 60
70+
71+
GPS:
72+
# Whether to use a USB GPS
73+
# If false, the ground station will not send any position update packets
74+
enabled: true
75+
76+
# Serial port to use for GPS
77+
# If not set, this will attempt to be found automatically
78+
port: ''
79+
80+
# Baud rate to use for GPS
81+
baud: 4800
82+
83+
RTL-SDR:
84+
# Whether to use an RTL-SDR
85+
# If false, the ground station will not receive any packets
86+
enabled: true
87+
88+
# Frequency to tune to (in Hz)
89+
# 144.390 MHz is the APRS frequency in the US
90+
# Value can be specified as an integer (89100000), a float (89.1e6) or as a metric suffix (89.1M)
91+
frequency: 144.390M
92+
93+
# Sample rate to use (in Hz)
94+
# 22050 Hz is the minimum sample rate for the RTL-SDR
95+
sample-rate: 22050
96+
97+
# Gain to use (leave blank for automatic gain)
98+
gain:
99+
100+
# PPM correction to use
101+
ppm: 0
102+
103+
# Enable option (default: offset)
104+
# See https://osmocom.org/projects/rtl-sdr/wiki/Rtl-sdr#rtl_fm for more info
105+
enable-option: offset
106+
107+

ground-station/config_reader.py

-17
This file was deleted.

ground-station/main.py

+9-10
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
from rtlsdr import RtlSdr
2-
import utilities
3-
from config_reader import config
1+
from utilities import config, passcode
2+
import sys
43

5-
sdr = RtlSdr()
64

7-
# configure device
8-
sdr.sample_rate = config['sample_rate']
9-
sdr.center_freq = config['freq']
10-
sdr.freq_correction = config['ppm']
11-
sdr.gain = config['gain']
5+
if __name__ == '__main__':
6+
config_file = sys.argv[1] if len(sys.argv) > 1 else 'config.yaml'
7+
conf = config.Config(config_file)
8+
passcode.add_passcode(conf)
129

13-
print(sdr.read_samples(512))
10+
11+
12+
print(conf)

0 commit comments

Comments
 (0)