HamMessenger is a portable device that uses a ham radio and the APRS protocol as a medium to send and receive text messages.

Overview

HamMessenger

Click here for updates.

HamMessenger is a portable, battery powered device that runs on a microcontroller and interfaces with an inexpensive ham radio to send and receive text messages and provide position updates using the APRS protocol. Messages and position updates sent via HamMessenger can be viewed on sites such as aprs.fi. HamMessenger messages are NOT encrypted!

HamMessenger is intended to be used by licensed ham radio operators. For more information you can check out the ARRL website.

The goal of the HamMessenger project is to create a device that uses ham radio as a medium for sending and receiving text messages. HamMessenger exists also to promote amateur radio, electronics, and programming. The project is currently in a beta prototyping stage but does function quite well.

At the core of the the project is the MicroAPRS modem created by markqvist. The primary controller is an Arduino Mega 2560 with the MicroAPRS Modem running on an Arduino Pro Mini. HamMessenger includes GPS functionality supplied by a Neo-6M GPS radio. For peripherals, an M5Stack CardKB keyboard is used for input and an SSD1106 Oled display for output.

I will add some videos and pictures of the device in action asap. Please feel free to contribute to the project. I am very busy outside of this project so any help is greatly appreciated :)

Illustration

Isometric

Prototype

Operation

Full instructions on how to operate HamMessenger will go here. For now, just a couple notes :)

HamMessenger will beacon your location and comment according to the 'Beacon Frequency' settings in APRS Settings.

To send a direct message to a station, select 'Messages' on the home screen and press the right arrow on the keyboard. A message will be sent according to the settings in APRS Settings.

Screen navigation information can be found here.

Radio setup instructions can be found here.

Serial interface information can be found here.

TODO

hardware:

  • design enclosure

software:

  • add "quick message" functionality. currently to send a message you highlight 'Messages' on the home screen and press the right key.
  • add ability to program the radio once connected for 'plug-n-play' experience (is this possible?)
  • add feature to be selective about message acknowledgments. currently any acknowlegment (from a second conversation) will reset the messaging sequencer.

Libraries

Here are links to the non-standard libraries that I am using for this project. All other libraries are standard and can be installed using the library manager built into the Arduino IDE.
https://github.com/wonho-maker/Adafruit_SH1106
https://github.com/mikalhart/TinyGPSPlus/releases/tag/v1.02b
https://github.com/adafruit/Adafruit-GFX-Library/releases/tag/1.10.10

Compilation

The easiest way to compile HamMessenger is to use the Ardunio IDE. After all libraries are installed you can use the Verify button to compile or the Upload button to compile and write the binary to the main controller M1.

The Arduino source code for HamMessenger can be found here.

The modem controller does not need to be compiled as the binary files are already made available here.

You can use AVRDude to write the binary to the modem controller. Instructions on how to do that will be coming soon. In the meantime, if you already know how to install and use AVRDude then feel free to make use of the batch file I created and an FTDI serial cable to write to the modem.

Parts

Find BOM information on parts here
Find Drawing information on parts here
Find Vendor information on parts here

Part Specs

Arduino:
https://gallery.autodesk.com/fusion360/projects/arduino-mega-2560-r3

Keyboard:
https://github.com/m5stack/M5-ProductExampleCodes/tree/master/Unit/CARDKB

OLED Display:
https://grabcad.com/library/0-96-oled-display-4-pin-1
https://grabcad.com/library/ecran-oled-1-3-1

Modem:
https://github.com/markqvist/MicroAPRS
https://github.com/markqvist/MicroAPRS/blob/master/precompiled/microaprs-5v-ss-latest.hex
https://github.com/markqvist/MicroAPRS/blob/master/documentation/Hardware%20Schematic.pdf
https://unsigned.io/shop
https://unsigned.io/product/micromodem-r23b

GPS:
https://grabcad.com/library/gps-module-ublox_neo6mv2-1
https://grabcad.com/library/ecran-oled-1-3-1

Grove Connector:
https://grabcad.com/library/grove-connectors-stand-and-flat-male-plugs-1/details?folder_id=2820551

Battery:
Panasonic 18650 - don't have a link but you can get them on eBay or Amazon

Updates

18-JUL-2021: The printed circuit boards from OSH will be arriving tomorrow! I have added all of the parts needed to build HamMessenger here.

04-JUL-2021: Version 1 of the pcb for HamMessenger has be sent for fabrication. The estimated delivery date is the 22nd of July. In the meantime I will be ordering the components to populate the board. As I do that I will make sure to get the links for the components and add them to the BOM in the Eagle folder.

Issues
  • Like to get 6 new second generation boards

    Like to get 6 new second generation boards

    Dale, I read your article in IEEE "Spectrum". Is there any way that I can get 6 of your 2nd generation PC boards? It is part of emergency communications network that I would like to put in place for my community.

    Thanks,

    Blainea2022

    opened by Blainea2022 3
  • Questions about interfacing to Baofeng

    Questions about interfacing to Baofeng

    Nice project, I was looking into doing something similar. The schematics I found so far for interfacing with the Baofeng were quite different, the most important difference was about the PTT that was implemented using an audio transformer component rather the solution in your project. Did you test also test also the audio transformer solution? Are you aware of any pro of using the tansformer rather than your solution?

    opened by bettio 5
  • Raspberry Pi and sending messages?

    Raspberry Pi and sending messages?

    I really like the look of this project and it's clear a lot of effort went into creating it, but I would love to see the ability to hook this up to a Raspberry Pi or similar device to be able to send and receive messages through a software with some kind of UI. Will this sort of thing ever be considered for the project? I would also be really happy to see secure encryption for the protocol but that seems like it would be really difficult to implement. Looking forward to updates!

    opened by iCrazyBlaze 3
  • All-in-one?

    All-in-one?

    Hi!

    I am looking with interest at this project, and the first thought that crossed my mind was, wouldn't it be simpler to run everything on one board? After all the Mega has enough pins, and you could integrate MicroAPRS into your own code. GPL 3.0 allows for it, AFAIK.

    Also, along the same lines, wouldn't an ESP32 for instance be more practical? I understand, from reading the code and docs quickly, that you need to convert to 3v3 anyway. It'd also offer more choices in terms of input: BLE, WiFi (small web server) etc.

    Anyway, this looks like a great project, and I'll be watching! :-)

    opened by Kongduino 2
  • Missing hardware specs

    Missing hardware specs

    To support development of enclosures either mechanical specs for the components or references to spec sheets for the physical components is needed.

    Examples below:

    image image image

    opened by FlexGunship 1
"Zero-copy" Linux screen capture plugin for OBS that uses libdrm and dmabuf

linux-kmsgrab plugin for OBS Introduction This plugin is a proof-of-concept libdrm-based screen capture for OBS. It uses DMA-BUF to import CRTC frameb

Ivan Avdeev 51 Jun 19, 2022
RetroWave is a hardware sound board series that uses vintage sound chips and works with modern hardware.

RetroWave Authentic sounds from vintage sound chips, on modern hardware! Introduction RetroWave is a hardware sound board series that uses vintage sou

SudoMaker 44 Jul 12, 2022
Linux client for Archo Music written in C++, uses Qt Framework.

ArchoMusicLinux Linux client for Archo Music written in C++, uses Qt Framework. For the original client, visit Archo Music Compiling Setting up the li

GianXD 2 Nov 13, 2021
PortAudio is a portable audio I/O library designed for cross-platform support of audio

PortAudio is a cross-platform, open-source C language library for real-time audio input and output.

PortAudio 668 Aug 2, 2022
A small fast portable speech synthesis system

Flite is an open source small fast run-time text to speech engine. It is the latest addition to the suite of free software synthesis tools including University of Edinburgh's Festival Speech Synthesis System and Carnegie Mellon University's FestVox project, tools, scripts and documentation for building synthetic voices.

CMU Festvox Project 571 Aug 6, 2022
eSpeak NG is a compact open source software text-to-speech synthesizer for Linux, Windows, Android and other operating systems

eSpeak NG is an open source speech synthesizer that supports more than hundred languages and accents.

null 1.4k Jul 27, 2022
🎵 Music notation engraving library for MEI with MusicXML and Humdrum support and various toolkits (JavaScript, Python)

Verovio is a fast, portable and lightweight library for engraving Music Encoding Initiative (MEI) digital scores into SVG images. Verovio also contain

RISM Switzerland 493 Aug 3, 2022
Audacity is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems

Audacity is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems. Audacity is open source software licensed under GPL, version 2 or later.

Audacity 7.8k Aug 5, 2022
Sneedacity (formerly Audacity) is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems.

Sneedacity (formerly Audacity) is an easy-to-use, multi-track audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems. Sneedacity is open source software licensed under GPL, version 2 or later.

Sneed's Feed & Seed 867 Aug 1, 2022
Library and command line backend for the Raspberry Pi OPL3 emulator and midi player

About this repository This repository holds the source code for the pioplemidi backend. You can compile it if you only want to use the library or the

iAmInAction 2 Dec 2, 2021
PendulumSynth is an on-going and open-source project, running on Arduino platform with the goal of mixing real-world physics into music composition and musical performance.

PendulumSynth PendulumSynth is an on-going and open-source project, running on Arduino platform with the goal of mixing real-world physics into music

Mohammadreza Anvari 4 Jun 19, 2022
A command line and keyboard based strategy-game written in c++, where audio-input determines the AI-strategy and lays the seed for the map-generation.

Table of contents Dissonance Premise Installation Requirements Installation Quick-guide Detailed installation guide Usage Logfiles Tests Uninstall Kno

fux 23 May 21, 2022
C++ library for audio and music analysis, description and synthesis, including Python bindings

Essentia Essentia is an open-source C++ library for audio analysis and audio-based music information retrieval released under the Affero GPL license.

Music Technology Group - Universitat Pompeu Fabra 2.2k Jul 28, 2022
JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, RTAS and AAX audio plug-ins.

JUCE is an open-source cross-platform C++ application framework for creating high quality desktop and mobile applications, including VST, VST3, AU, AU

JUCE 4.4k Aug 3, 2022
A simple C++ library for reading and writing audio files.

AudioFile A simple header-only C++ library for reading and writing audio files. Current supported formats: WAV AIFF Author AudioFile is written and ma

Adam Stark 615 Aug 2, 2022
A C library for reading and writing sound files containing sampled audio data.

libsndfile libsndfile is a C library for reading and writing files containing sampled audio data. Authors The libsndfile project was originally develo

null 1k Aug 4, 2022
C library for cross-platform real-time audio input and output

libsoundio C library providing cross-platform audio input and output. The API is suitable for real-time software such as digital audio workstations as

Andrew Kelley 1.6k Aug 7, 2022
C++ Audio and Music DSP Library

_____ _____ ___ __ _ _____ __ __ __ ____ ____ / \\_ \\ \/ / |/ \| | | | \_ \/ \ | Y Y \/ /_ \> <| | Y Y \ | |_|

Mick Grierson 1.3k Aug 3, 2022