Skip to content

Repository files navigation

SoftModem

SoftModem

SoftModem is a wired, low-cost and platform independent solution for communication between an Arduino and mobile phones. It uses the phone's audio jack and Bell 202 modem-like FSK encoding with up to 1225 bit/s. Check out this blog post.

Projects based on SoftModem:

Install via Arduino Library Manager

Open the Arduino Library Manager from the menu: Sketch → Include Library → Manage Libraries.... Then search for 'SoftModem' and click install.

Manual install

Create a folder 'SoftModem' inside your libraries folder and place these files there.

Supported Boards

  • ATmega328: Arduino Uno / Nano / Pro / Pro Mini / Fio
  • ATtiny85, ATmega32U4: not implemented yet, contributions welcome!
BoardTX pinRX pinAIN1 pinTimerNotes
Arduino Uno3672

Usage

This is an example sketch that forwards data to/from the serial port.

#include <SoftModem.h>
SoftModem modem = SoftModem();
void setup() {
Serial.begin(115200);
Serial.println("Booting");
delay(100);
modem.begin();
}
void loop() { while(modem.available()){
int c = modem.read();
if(isprint(c)){
Serial.print((char)c);
}
else{
Serial.print("(");
Serial.print(c,HEX);
Serial.println(")"); }
}
if(Serial.available()){
modem.write(0xff);
while(Serial.available()){
char c = Serial.read();
modem.write(c);
}
}
}

Notes

SoftModem uses Timer2, therefore you can not make use of the analogWrite() function for pins 3 and 11 in your sketch.

Hardware

A shield is available here or here. You can also build your own. Here is the schematic:

Schematic

##License BSD 3

About

Audio Jack Modem Library for Arduino

Resources

Stars

196 stars

Watchers

14 watching

Forks

Releases

Packages

Contributors

Languages