Packet radio lives on through open source software
Jump to navigation. Packet radio is an amateur radio technology from the early s that sends data between computers. Linux has natively supported the packet radio protocol, more formally known as AX. Despite its age, amateur radio operators continue to use and develop packet radio today.
It also has some unique capabilities, such as tracking the positions of nearby stations or sending short messages via the International Space Station ISS. In the early days, packet radio relied on a special piece of hardware called a terminal node controller TNC.
A TNC is a modem: it plugs into a two-way radio and uses audio tones to send and receive data. Now that computers are more powerful, it's often simpler to use a software modem. With free and open source software, a Linux PC with a sound card can become a TNC and communicate with other packet radio stations. Common transmission speeds are 1, and 9, baud.
For comparison, a 56K modem is 56, baud! By today's standards this is very slow, but in exchange it works over long distances. Packets are commonly sent tens of kilometers without line of sight and without relying on any infrastructure other than the radio and antenna at each station. Some amateur radio operators prefer to build high-bandwidth networks such as Broadband-Hamnetwhich uses Linksys and Ubiquiti hardware that typically use WiFi equipment rather than packet radio.
Since the internet's arrival, the bulletin board system BBSso common in the s, has become far less popular, but it lives on in packet radio. When every byte counts, a text interface is an efficient way to read your mail. Like TCPboth ends acknowledge the packets they receive, so any that go missing can be retransmitted. By passing packets along a series of digipeaters, stations that normally are out of range can connect to each other.
On Linux, the axcall program creates a connection to a remote station and provides an interactive terminal for sending and receiving text. This is ideal for communicating with BBSes and mailboxes. Its features include message boards, real-time chat between connected users, and file uploads and downloads.
Its most popular use is transmitting locations in real time. Operators can use it to share their location, either at home or by attaching a radio to their car. A packet can indicate other objects of interest, such as radio repeaters or temperature data from weather stations. Nearby digipeaters rebroadcast the packet, and it ripples outward from the original sender. In addition to position reports, the protocol can broadcast short text bulletins and direct messages to other stations.
The APRS network is linked globally using internet-connected gateways. When a gateway receives certain packets on the radio, it uploads them to the global system. A large amount of APRS traffic is captured this way; the locations of all stations can be viewed on websites like aprs. The rules of amateur radio generally disallow encryption or any commercial use, so SSH or passing ordinary internet traffic is forbidden. The entire Computers on this network can operate in an isolated cluster or interconnect with other parts of the world via VPN.
The long-term goal is to replace these connections with radio links where possible. These are some popular uses of packet radio—but anything is possible.It quickly took on a life of its own, first gaining Bluetooth capabilities when I discovered the latent abilities of APRSdroid. And then gaining a battery and recharging circuitry before finally ending up as a product that could be mass-produced.
But underneath it all is still the Arduino project that it started out as. With a few minor tweaks to the firmware to remove the Bluetooth and battery bits, the same firmware that runs in the Mobilinkd TNC1 will run on an Arduino. The resistors, capacitors and transistor cost just a few cents in total if you have them lying around.
You can skip the 4-pole connector and wire a cable directly into the board if you want to save yourself a few bucks. Take a look at the breadboard. The pin rows are numbered from 1 to There are power rails along either edge. Plug the 3. The SparkFun connector will facing out the rear of the breadboard.
Some of the parts in this tutorial will be in different places on the board than what is shown there. The flat part of the transistor is facing the nearest rail. Run a wire from e Collector to the negative rail Ground. Plug one end of the the 1KOhm resister into e Base and the other into g Run a wire from j to j:3 Arduino D And then run a wire from e to e 3.
If your radio does not use a separate PTT signal, you will need one additional component. You will need 2. Instead of a wire from e to e, you will need to plug the 2. This multiplexes the PTT signal on the audio output line. Plug the nF capacitor into e 3. Plug the KOhm resistor from g to g Connect a 10KOhm resistor from j to the negative rail Ground. Then run a wire from i to i:7 Arduino D6. The two resistors form a voltage divider that takes the V audio output and reduces that to mV.
Plug the 10nF capacitor into e 3. With the remaining two resistors, plug one into j and the negative rail Groundand the other into i and the positive rail 5V.Easy & Powerful Arduino Alternative? STM32 Beginner's Guide
Be careful not to short the resistors. Run a wire from h to a:4 Arduino A0. In case you are wondering, the pair of resistors are there to add a 2. With the offset, we get an audio signal that varies from 1. Run a wire into a Arduino 5V into the positive rail 5V. It is always a good idea to tie all of the ground connectors to the ground rail.
Finally, run a wire from e to the negative rail. This ties the 3. Go through the instructions one more time. Make sure the wiring matches and that there are no shorts easy to do with the bare wires on the discrete components.This is the RadioHead Packet Radio library for embedded microprocessors. It provides a complete object-oriented library for sending and receiving packetized messages via a variety of common data radios and other transports on a range of embedded microprocessors.
Do not contact the author directly, unless it is to discuss commercial licensing. Before asking a question or reporting a bug, please read. Caution: Developing this type of software and using data radios successfully is challenging and requires a substantial knowledge base in software and radio and data transmission technologies and theory. It may not be an appropriate project for beginners.
If you are a beginner, you will need to spend some time gaining knowledge in these areas first. Every RadioHead program will have an instance of a Driver to provide access to the data radio or transport, and usually a Manager that uses that driver to send and receive messages for the application. The programmer is required to instantiate a Driver and a Manager, and to initialise the Manager. Thereafter the facilities of the Manager can be used to send and receive messages.
It is also possible to use a Driver on its own, without a Manager, although this only allows unaddressed, unreliable transport via the Driver's facilities.
In some specialised use cases, it is possible to instantiate more than one Driver and more than one Manager. A range of different common embedded microprocessor platforms are supported, allowing your project to run on your choice of processor.
Drivers can be used on their own to provide unaddressed, unreliable datagrams. All drivers have the same identical API. Or you can use any Driver with any of the Managers described below. If your radio or transciever is not on the list above, there is a good chance it wont work without modifying RadioHead to suit it.
If you wish for support for another radio or transciever, and you send 2 of them to AirSpayce Pty Ltd, we will consider adding support for it.
The drivers above all provide for unaddressed, unreliable, variable length messages, but if you need more than that, the following Managers are provided:. We welcome contributions that will expand the range of supported platforms. If your processor is not on the list above, there is a good chance it wont work without modifying RadioHead to suit it. If you wish for support for another processor, and you send 2 of them to AirSpayce Pty Ltd, we will consider adding support for it.
RadioHead is available through the efforts of others for PlatformIO. PlatformIO is a cross-platform code builder and the missing library manager. RadioHead was created in Aprilsubstantially based on code from some of our other earlier Radio libraries:. During this combination and redevelopment, we have tried to retain all the processor dependencies and support from the libraries that were contributed by other people. However not all platforms can be tested by us, so if you find that support from some platform has not been successfully migrated, please feel free to fix it and send us a patch.
Install in the usual way: unzip the distribution zip file to the libraries sub-folder of your sketchbook. The example sketches will be visible in in your Arduino, mpide, maple-ide or whatever. The Photon is not supported by the Arduino IDE, so it takes a little effort to set up a build environment. Heres what we did to enable building of RadioHead example sketches on Linux, but there are other ways to skin this cat.
RadioHead is designed so it can run on small processors with very limited resources and strict timing contraints. We are happy with this, but we are aware that some people may think we are legaving useful tools on the table. This library is offered under a free GPL license for those who want to use it that way.
We try hard to keep it up to date, fix bugs and to provide free support.If you are new to the Arduino, you can read getting started with Arduino.
Save my name, email, and website in this browser for the next time I comment. Notify me of follow-up comments by email. Notify me of new posts by email. Sign in. Log into your account. Forgot your password?
Password recovery. Recover your password. The DXZone. Arduino automated antenna switch. Arduino CW Keyer. Open source Arduino based CW Morse Code keyer with a lot of features and flexibility, often rivaling commercial keyers. Arduino automatic antenna tuner. Controlling an antenna tuner with an arduino board. The project includes movies, explanation and the arduino code. Arduino remote antenna switch. Arduino Rotator Controller. Arduino as an SDR. Rigexpert AA Top Amateur Radio Websites — Issue Top Amateur Radio links of the week Issue Please enter your comment!
Please enter your name here. You have entered an incorrect email address! Mar 17, The Grid Square Locator, also known as the Maidenhead Locator System, is a geographical co-ordinate method based on a 6-digit code, widely used by amateur radio operators to determine a rough position on the Earth.
We sell a couple of great antennaswhere some of the proceeds go to a good cause: Amateur radio education. This kit requires soldering of header and SMA components. You will also need an amateur radio license. You will need Arduino or other system development skills in order to operate this radio.
Arduino 101 Packet Radio IMU
There are many example sketches from our library that we have provided. Instructional Videos on YouTube. Arduino Library on GitHub.
Support Forums. Search Home Products Expand menu Collapse menu. Calculators Expand menu Collapse menu. About Expand menu Collapse menu. HamShield 1.After spending a number of weeks on the project getting the basics all sorted out, it started to turn into something quite usable. However, these had to run at 3. This made the actual layout and component count far simpler. It also doubled the available packet memory. To achieve this system design, I wanted to use the smallest external parts count I could and accomplish as much with software as possible.
They had a very efficient and nice looking approach to the audio decode. I copied their code over and adapted it into the flow of my own software that had been worked out. It turns out their decoder is very accurate and sensitive. The entire current source for the AX. I originally had it all just in a private repository, but realized others may find the software useful.
This let me have a lot more flexibility with the modules. There are a number of third party modules that are unmodified in the source tree to add features into the system. I keep working on the project when I find time and the need to program. I hope to use it soon with my Raspberry Pi based iGate for a low power and low maintenance solution to my home based iGate setup. Toggle navigation slepp. Home Hobbies Electronics AX. Design The design of the system is very straight forward: Use the hardware PWM of the Arduino to create the output wave forms using direct digital synthesis.
Pass the output voltage from the PWM through a low pass filter using two poles to get it nice and smooth. Pass the receive audio through a capacitor and low pass filter straight to an Arduino ADC pin. Store packets as they are received into memory and output them on serial when an entire HDLC frame has been received.
Store outbound packets into a buffer and schedule them for delivery via the PWM output when the channel is free and an entire HDLC frame has been received from the host. Software The entire current source for the AX.
Future I keep working on the project when I find time and the need to program. Software Github GitLab.
Companies Vocti.Add the following snippet to your HTML:. Project showcase by Gregory O. Voronin and Phil V. However, there are some limitations to BLE distance of transmission and data rate transmission. BLE is great for short range, low bandwidth transmissions. Think of the connection between smartwatches and smartphones.
However this is limited to about 30 feet or so. It is also good for reliable data transmission, but unlike traditional Bluetooth it is not an ideal solution for rapid data transmission.
I learned this when I first began experimenting with BLE last year, I made a small demo to share real time clock data from an Arduino to a hybrid mobile web app, and always found a consistent second delay in times between the Arduino and the app!
In preparation for a new project where we would like to have rapid, wireless transmission in the field at distances much greater than 30 feet, we began experimenting with some packet radio breakout boards. The things we learned began to add up, so instead of writing it all up at the end, we thought it would be better to present this as an informal "Part 1" detailing getting packet radio up and running on the Arduino After doing some reading and watching some videos about LoRa we were concerned that despite the much great range of transmission, the project might suffer from lower data rates of LoRa.
LoRa breakout boards are also generally more expensive, but this wasn't as big a concern. What exactly is packet radio? I recommend checking out the fine resources listed here:. The Orientation Visualizer example was one of the reasons we got interested in using the Arduino in the first place.
We are going to assume you can get both the Arduino IDE up and running for the Arduino and that you can also get processing up and running. This is great. They are well documented and contain numerous examples to learn from.
However when I first tried to compile each for the Arduino in the Arduino IDE "out-of-the-box", they both bombed out! This has happened to me before.
The Arduinohowever, using an entirely different microcontroller. So software optimized for the AVR using things such as chip specific registers, timers, etc. These programs are trying to utilize things that do not exist on the Arduino !
For those not expert in embedded programming, working through the documentation, code, datasheets is a daunting, if not project killing, task. So I did what I do when this has happened to me in the past: I googled it!
A quick google search showed that Sparkfun has a similar board and user Hartatak62 ran into the same problem with another type and provided some code that should run generically in the Arduino IDE! Problem thankfully solved by the Maker community! But as Hartatak62 notes, there are a few things you need to do before this modified library will work with the Arduino We also came up with a few other gotchas, all of these are listed below:. We're not ready to use the library just yet.
According to Hartatak62, two modifications were needed to make this library work on the Arduino