mirror of
https://github.com/markqvist/unsignedio
synced 2026-08-12 17:40:37 -04:00
142 lines
15 KiB
HTML
142 lines
15 KiB
HTML
|
||
<!doctype html>
|
||
<html>
|
||
<head>
|
||
<link rel="stylesheet" href="../css/water.css?v=19">
|
||
<link rel="shortcut icon" type="image/x-icon" href="../gfx/icon.png">
|
||
<meta charset="utf-8"/>
|
||
<title>MicroModem | unsigned.io</title>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
||
<meta property="og:title" content="MicroModem">
|
||
<meta name="description" content="MicroModem page at unsigned.io">
|
||
<meta property="og:description" content="MicroModem page at unsigned.io">
|
||
<meta property="og:image" content="https://unsigned.io/gfx/unsigned_logo.webp">
|
||
<meta property="og:url" content="https://unsigned.io/hardware/MicroModem.html">
|
||
<meta property="og:title" content="MicroModem">
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<meta property="twitter:domain" content="unsigned.io">
|
||
<meta property="twitter:url" content="https://unsigned.io/hardware/MicroModem.html">
|
||
<meta name="twitter:title" content="MicroModem">
|
||
<meta name="twitter:description" content="MicroModem page at unsigned.io">
|
||
<meta name="twitter:image" content="https://unsigned.io/gfx/unsigned_logo.webp">
|
||
|
||
</head>
|
||
<body>
|
||
<div id="load_overlay" style="background-color:#2a2a2f; position:absolute; top:0px; left:0px; width:100%; height:100%; z-index:2000;"></div>
|
||
<span class="logo">unsigned.io</span>
|
||
<center>
|
||
<p><span class="menu"><a href="../index.html">Home</a> | <a href="../log.html">Log</a> | <a href="../guides.html">Guides</a> | <a href="../software/index.html">Software</a> | <a href="../hardware/index.html">Hardware</a> | <a href="https://github.com/markqvist/Reticulum/discussions">Discussions</a> | <a href="../shop.html">Shop</a> | <a href="../contact.html">Contact Me</a> | <a href="../donate.html">Donate</a></span></p>
|
||
</center><hr><h1>MicroModem</h1>
|
||
<p><em><strong>- Important info!</strong></em></p>
|
||
<p><em>MicroModem is now discontinued, and I will not be producing any more units for sale. All information on this page is historical and for reference purposes.</em></p>
|
||
<p><em>If you want a complete, pre-built unit, please <a href="https://unsigned.io/openmodem/">have a look at OpenModem instead</a>. It offers a much more powerful feature-set, is easier to use, and is the platform I will be developing in the future.</em></p>
|
||
<p><em>While I will not be producing more MicroModems or developing the firmware further, all resources for MicroModem, including software, schematics, build info and source-code will be kept available for existing installations, and for any users that still want to build their own MicroModems.</em></p>
|
||
<p><em>If you want to build your own AFSK1200 modem, MicroModem is still a very viable option, since it is easy to build, and very well documented. It is also incredibly stable, with many units in the field running for years at a time without issues.</em></p>
|
||
<h3>What is it?</h3>
|
||
|
||
<p><img style="float: left; margin-right: 1.5em;" src="../images/P1060545-300x225.jpg" /> MicroModem is an open-source implementation of a 1200-baud <a title="Wikipedia AFSK" href="http://en.wikipedia.org/wiki/Frequency-shift_keying#Audio_FSK" target="_blank" rel="noopener noreferrer">AFSK</a> / <a title="Bell 202" href="http://en.wikipedia.org/wiki/Bell_202_modem" target="_blank" rel="noopener noreferrer">Bell 202</a> modem on the popular ATmega328p microprocessor. MicroModem can be used for things like ham radio APRS, AX.25, TCP/IP over SLIP, experimentation with mesh-networks, long-range wireless communication with sensors (Or friends! Or strangers!). It basically comes in two flavors: Prebuilt or DIY.</p>
|
||
<p>It is simple enough that, if you have some basic electronics experience, you can understand and build it yourself with a few components and an Arduino. You can also get a more advanced and prebuilt, fully tested MicroModem directly from me. I manufacture them personally, to the highest quality.</p>
|
||
<p>Please note that the resources listed here for building your own MicroModem are for an earlier, more simple version, than the one I currently offer for sale. While the two modems are functionally identical, the version I offer for sale has some technical refinements, and is implemented as an integrated board with MCU, USB and everything on one board, measuring only 3x5 cm.</p>
|
||
<h3>Can I buy it?</h3>
|
||
<p>Yes! If you don't feel like building it yourself, I sell a completed version flashed with the firmware of your choice, fully tested and ready to go. Just visit <a title="Shop" href="http://unsigned.io/shop/">my shop</a> and browse through the options! Buying the modem from me helps me fund continued development of the firmware and hardware.</p>
|
||
<h3>Resources</h3>
|
||
<ul>
|
||
<li>Download <a title="Manual" href="https://unsigned.io/shop/wp-content/uploads/2018/04/MicroModem_Manual_v3-1.pdf" target="_blank" rel="noopener noreferrer">user manual</a></li>
|
||
<li>Download <a title="Overview" href="https://unsigned.io/shop/wp-content/uploads/2014/12/BoardOverview-1-1.pdf" target="_blank" rel="noopener noreferrer">board overview</a></li>
|
||
<li>Download <a title="Schematic" href="https://unsigned.io/shop/wp-content/uploads/2014/12/Schematic-1.pdf" target="_blank" rel="noopener noreferrer">schematic PDF</a> / <a title="Schematic" href="http://unsigned.io/shop/wp-content/uploads/2014/12/Schematic.sch" target="_blank" rel="noopener noreferrer">eagle</a></li>
|
||
</ul>
|
||
|
||
<h3>Firmware downloads</h3>
|
||
<p>There's currently several different pre-compiled firmwares available for MicroModem. Take your pick, download, flash and enjoy! If you have the old version of the hardware, select the <em>5V reference</em> build of your chosen version. If you have the new hardware version (greater than 2.0 printed on the PCB), select the <em>3.3V reference</em> build.</p>
|
||
<ul>
|
||
<li>MicroAPRS KISS firmware: <a href="https://github.com/markqvist/MicroAPRS/raw/master/precompiled/microaprs-3v-kiss-latest.hex">Download Latest Version</a></li>
|
||
<li>MicroAPRS SimpleSerial firmware: <a href="https://github.com/markqvist/MicroAPRS/raw/master/precompiled/microaprs-3v-ss-latest.hex">Download Latest Version</a> / <a href="https://unsigned.io/shop/wp-content/uploads/2014/11/Usage-1.pdf">SimpleSerial commands reference</a></li>
|
||
<li>MicroModemGP KISS firmware: <a href="https://github.com/markqvist/MicroModemGP/raw/master/precompiled/MicroModemGP-kiss.hex" target="_blank" rel="noopener noreferrer">Download Latest Version</a></li>
|
||
<li>MicroModemGP direct serial firmware: <a href="https://github.com/markqvist/MicroModemGP/raw/master/precompiled/MicroModemGP-direct.hex" target="_blank" rel="noopener noreferrer">Download Latest Version</a></li>
|
||
</ul>
|
||
|
||
<p>You can flash the firmware with avrdude or similar programs. Using avrdude, the command would look something like:</p>
|
||
<p><code>avrdude -p m328p -c arduino -P /dev/ttyUSB0 -b 115200 -U flash:w:MicroAPRS.hex</code></p>
|
||
<p>If you use Windows, and want a GUI flashing program, you might want to take a look at XLoader.</p>
|
||
<h3>Specifications</h3>
|
||
<p>Here's a list of specifications for the version I offer for sale. If you have any other questions regarding specs, just send me an email, or ask in a comment on this page.</p>
|
||
<ul>
|
||
<li>ATmega328p @ <strong>16MHz</strong> (2<strong>KB</strong> RAM / <strong>32KB</strong> flash)</li>
|
||
<li>Powered from <strong>USB</strong> or external regulated <strong>5V</strong> source</li>
|
||
<li><strong>51mA</strong> idle power consumption</li>
|
||
<li>Operating range: -<strong>20°C</strong> to <strong>70°C</strong> (non-condensing)</li>
|
||
<li>Great demodulator performance, decodes <strong>~900</strong> packets from the TNC Test CD</li>
|
||
<li>Modulated analog output level adjustable from approximately <strong>15mV to 1.5V</strong> peak-to-peak</li>
|
||
<li>Minimum analog input level for good decode is about<strong> 100mV</strong> peak-to-peak</li>
|
||
<li>ADC running on <strong>3.3v reference</strong></li>
|
||
<li>Arduino compatible (You can program the board from the <strong>Arduino IDE</strong>, over USB)</li>
|
||
<li><strong>Connectors:</strong>
|
||
<ul>
|
||
<li>USB <strong>Mini-B</strong> (USB-powered)</li>
|
||
<li>Audio out (modulator output)</li>
|
||
<li>Audio in (demodulator input)</li>
|
||
<li>Ground x2</li>
|
||
<li>VCC (5V) x2</li>
|
||
<li><strong>3.3V output</strong> (Max current 50mA)</li>
|
||
<li>PTT_V+ (for Kenwood style PTT)</li>
|
||
<li>PTT (logic level PTT signal)</li>
|
||
<li>UART - RX / TX (Arduino pins D0 & D1)</li>
|
||
<li>I2C - SCL / SDA (Arduino pins A4 & A5)</li>
|
||
<li>SPI
|
||
<ul>
|
||
<li>SCLK (Arduino pin D11)</li>
|
||
<li>MISO (Arduino pin D12)</li>
|
||
<li>MOSI (Arduino pin D13)</li>
|
||
<li>DTR (Reset pin)</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><strong>Flexible firmware support</strong>, use one of the provided firmwares, or create your own!
|
||
<ul>
|
||
<li>APRS KISS</li>
|
||
<li>APRS SimpleSerial</li>
|
||
<li>MicroModemGP KISS</li>
|
||
<li>MicroModemGP Direct Serial</li>
|
||
</ul>
|
||
</li>
|
||
<li>Arduino <strong>APRS library available</strong>, create your own APRS firmwares easily!</li>
|
||
<li>All firmwares are Open Source, and <a href="https://github.com/markqvist/MicroAPRS" target="_blank" rel="noopener noreferrer">available on GitHub</a></li>
|
||
<li>Hardware design is Open Source, and <a href="https://github.com/markqvist/MicroModem/tree/master/Design" target="_blank" rel="noopener noreferrer">available on GitHub</a></li>
|
||
</ul>
|
||
|
||
<h3>How do I build it myself?</h3>
|
||
<p>If you want to build MicroModem yourself, you should have a look at the <a href="http://github.com/markqvist/MicroModem">GitHub repository for MicroModem</a>. It contains all the source-code, schematics, PCB layout, documentation and everything you need to get started. If you're not familiar with GitHub and just want to get going, here's the basic resources:</p>
|
||
<ul>
|
||
<li><a title="Schematic" href="https://unsigned.io/shop/wp-content/uploads/2014/11/Schematic-1.pdf">Schematic</a></li>
|
||
<li><a title="Quickstart" href="https://unsigned.io/shop/wp-content/uploads/2014/11/Quickstart-1.pdf">Quickstart Guide</a> (with assembly notes)</li>
|
||
<li><a title="PCB" href="https://unsigned.io/shop/wp-content/uploads/2014/11/Modem_rev_a1-1.pdf">PCB Layout</a></li>
|
||
<li>General purpose firmware
|
||
<ul>
|
||
<li>Download for direct serial connection: <a href="https://github.com/markqvist/MicroModemGP/raw/master/precompiled/MicroModemGP-3v-direct.hex" target="_blank" rel="noopener noreferrer">3.3v ADC reference</a> / <a href="https://github.com/markqvist/MicroModemGP/raw/master/precompiled/MicroModemGP-5v-direct.hex" target="_blank" rel="noopener noreferrer">5v ADC reference</a></li>
|
||
<li>Download for KISS serial connection: <a href="https://github.com/markqvist/MicroModemGP/raw/master/precompiled/MicroModemGP-3v-kiss.hex" target="_blank" rel="noopener noreferrer">3.3v ADC reference</a> / <a href="https://raw.githubusercontent.com/markqvist/MicroModemGP/master/precompiled/MicroModemGP-5v-kiss.hex" target="_blank" rel="noopener noreferrer">5v ADC reference</a></li>
|
||
</ul>
|
||
</li>
|
||
<li>If you want to use this for APRS, take a look at <a title="MicroAPRS" href="http://unsigned.io/microaprs/">MicroAPRS</a>, the APRS firmware for MicroModem</li>
|
||
</ul>
|
||
|
||
<h3>The general-purpose firmware</h3>
|
||
<p>The <a href="https://github.com/markqvist/MicroModemGP">MicroModemGP firmware</a> is ideal if you want to build your own applications running over radio, or just want to experiment. It lets you send packets over almost any radio with up to 792 bytes of data per packet. This means you can also use SLIP to use the modem as an TCP/IP interface. The MicroModemGP firmware features forward error correction (12,8-hamming code), 12-byte interleaving, and CRC checksumming on all packets. It should be easy to expand the protocol to support addressing and routing, encryption, or whatever you find useful. If you have a cool idea but aren’t sure how to go about it, let me know and I will try and help! The protocol was written as an example of how to implement a basic protocol with error correction.</p>
|
||
<p>Don’t expect live video-streaming and rocking out to DI.fm over this though. This is only 1.2 kilobits per second. Loading <a title="Hackaday Retro" href="http://retro.hackaday.com/" target="_blank" rel="noopener noreferrer">Hackaday Retro</a> took around 15 minutes when I tried. If you’re not using TCP/IP you will have better throughput than that though. But TCP/IP works fine for very simple synchroneous-style connections (like: connect to server -> send request -> wait for response -> send another request -> receive another response -> disconnect). Anything complicated, and you will get a lot of packet loss!</p>
|
||
<h3>Other Notes</h3>
|
||
<p>I designed MicroModem to be as simple an introduction to digital wireless communication as possible, while still being very flexible and functional. Micromodem will let you learn the basics in how to build digital wireless systems from scratch, and also offer an interesting platform to build further projects on. I hope you will find it educational and useful!</p>
|
||
<p>The source code for the modem firmware is very heavily commented, and should be easy to understand. In fact there is more comments than actual code most places. Some of the concepts can be a little daunting just from looking at the code, but it is actually all quite simple, when taken one step at a time. If you have any questions, drop me a comment here and I will try to help out.</p>
|
||
<h3>Connecting to a Radio</h3>
|
||
<p>You will need to connect the <strong>Audio In</strong> port of the modem to the speaker output of your radio, and the <strong>Audio Out</strong> port of the modem to the input of your radio. Most handheld radios will need microphone level audio on the input port, otherwise the transmitted audio will distort, making packets hard to decode. You should also also connect GND from your radio (usually the GND pin of the speaker jack) to the <strong>GND</strong> port of the modem.</p>
|
||
<p>The PTT circuit works by closing a switch (using a MOSFET) between the PTT+ and PTT_GND pins. Most Kenwood-style handhelds will have +3v on the ground pin of the MIC jack, that will trigger PTT when connected to the ground pin on the SPK jack. The PTT connector supplies a logic-level PTT signal. If you can trigger your radios PTT like this, use this connector instead.</p>
|
||
<br/><hr/><span class="no_print"><center><br/><i>This website is running on a 100% solar powered server</i><br/><br/>☀️<br/><br/><i><small>Unless otherwise noted, everything here is put into the world under a <a href="../LICENSE.txt">CC BY-NC-SA 4.0</a> license.<br/>Feel free to share and remix, just remember the attribution.
|
||
</small></i></center></span>
|
||
<div class="print_only donation_block"><br/>
|
||
Contribute to keeping information on Free & Open Communications systems available for all.<br/>
|
||
You can donate directly to <b>unsigned.io</b> by using one of the following QR codes:<br/><br/>
|
||
<span class="donate_qr"><img src="../gfx/donate_xmr.png"/><br/>Monero</span>
|
||
<span class="donate_qr"><img src="../gfx/donate_btc.png"/><br/>Bitcoin</span>
|
||
<span class="donate_qr"><img src="../gfx/donate_eth.png"/><br/>Ethereum</span>
|
||
</div>
|
||
</body></html>
|