Skip to content

lobdellb/brycemodem

Repository files navigation

Brycemodem

I wanted to revive some knowledge from my past life as an electrical engineer, so I started making a modem in Python. Idea is that two computers could communicate using their speaker and micorphone, across a room, with random acoustic conditions. I used the simplest form of everything so I could get it working in an afternoon, which I did.

The first swing looks like this

  • Not realtime opertation, not streaming.
  • Uses pyaudio, which has event-driven access to read/write binary data to the audio devices.
  • AM modulation
  • Use FIR/sinc filters, because they are easy to design and cost nothing if I'm not running real-time.
  • No equalization.
  • No error correction, channel coding, diversity.
  • No PLLs or other syncronization
  • No AGC in the usual sense, though it is not sensitive to the level of the signal.
  • 2 khz carrier, 10 baud.

The next steps

  • Make into a real-time streaming system which can transmit a stream from one computer to another (or support PPP, if it were fast-enough).
  • Make moduler-enough that adapting various parts of it isn't all that diffiult: Try to decouple the different pieces to the extent possible.

Modules might be

  • Carrier PLL
  • Channel coding
  • Channel equalization
  • Chip PLL
  • Modulation scheme/constelation
  • Configurable generic mixers, or something which can bring a signal down to baseband.
  • Diagnostics

It's been years since I've fussed with this stuff. I had such a fun time doing it, I reckon I'll press on.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published