Elixir Wizards

Creating VintageCell: Nerves, PCBs, and GenStateMachine with Bryan Green


Listen Later

Today on Elixir Wizards, Bryan Green shares how he transformed a vintage 1930s rotary phone into a fully functional cell phone using Elixir, Nerves, and a mix of hardware components.

Bryan shares the highs and lows of his project, from decoding rotary dial clicks to troubleshooting hardware issues with LED outputs. He explains why Nerves was the perfect fit for this project, offering SSH access, over-the-air updates, and remote debugging. You’ll also hear how Elixir’s concurrency model helped him manage hardware inputs and outputs efficiently using GenStateMachine and Genservers.

Elixir and Nerves really shine when modeling real-world systems. Bryan dives into how he used a finite state machine to track the phone’s states and handled inputs from the rotary dial and hook switch via GPIO.

For hardware enthusiasts, Bryan’s advice is to embrace this “golden age” of DIY electronics. Whether you're experienced with embedded systems or just curious on where to start, Bryan's VintageCell can inspire you to tinker with a hardware engineering project.

Key topics discussed in this episode:
  • Advantages of functional programming and immutability in Elixir
  • Building hardware projects using Adafruit components
  • Why Nerves was the best choice for the VintageCell project
  • Interpreting rotary dial clicks using GPIO and circuits.gpio
  • Troubleshooting hardware issues with LED diagnostics
  • Challenges in optimizing wiring and PCB design
  • Benefits of Nerves: SSH access, OTA updates, and remote debugging
  • Modeling real-world systems with Elixir and Nerves
  • Implementing a finite state machine with GenStateMachine
  • Managing input with Genservers for rotary dial and hook switch
  • Leveraging community resources like Discord, Elixir Slack, and forums
  • Practical advice for keeping hardware projects on track
  • Potential applications from SMS servers to home automation
  • Links mentioned:

    Vintage Cellphone: Bridging the Past and Future with Elixir

    Seven Languages in Seven Weeks https://pragprog.com/titles/btlang/seven-languages-in-seven-weeks/
    Seven More Languages https://pragprog.com/titles/7lang/seven-more-languages-in-seven-weeks/
    Node.js https://github.com/nodejs
    https://nerves-project.org/
    https://www.arduino.cc/
    Adafruit Circuit Playground https://www.adafruit.com/category/965
    Adafruit 3D Printed Star Trek Communicator https://learn.adafruit.com/3d-printed-star-trek-communicator
    Adafruit FONA 3G Cellular + GPS Breakout https://learn.adafruit.com/adafruit-fona-3g-cellular-gps-breakout/overview
    https://github.com/elixir-circuits/circuits_gpio
    Nerves SSH https://hex.pm/packages/nerves_ssh
    OTA (over-the-air) Updates with NervesHub https://www.nerves-hub.org/
    https://github.com/kicad
    Waveshare 4G Hat for Raspberry Pi https://www.waveshare.com/sim7600e-h-4g-hat.htm
    https://hexdocs.pm/gen_state_machine/GenStateMachine.html
    https://hexdocs.pm/elixir/GenServer.html
    https://www.sparkfun.com/
    https://www.digikey.com/
    USB-C Gadget Mode with Nerves https://github.com/nerves-project/nerves_system_rpi4/issues/18
    https://livebook.dev/
    https://codestorm.me/
    https://github.com/codestorm1/vintage_cell/

    Special Guest: Bryan Green.

    ...more
    View all episodesView all episodes
    Download on the App Store

    Elixir WizardsBy SmartLogic LLC

    • 4.9
    • 4.9
    • 4.9
    • 4.9
    • 4.9

    4.9

    22 ratings


    More shows like Elixir Wizards

    View all
    Software Engineering Radio - the podcast for professional software developers by se-radio@computer.org

    Software Engineering Radio - the podcast for professional software developers

    262 Listeners

    The Changelog: Software Development, Open Source by Changelog Media

    The Changelog: Software Development, Open Source

    285 Listeners

    Startups For the Rest of Us by Rob Walling

    Startups For the Rest of Us

    694 Listeners

    Software Engineering Daily by Software Engineering Daily

    Software Engineering Daily

    629 Listeners

    Syntax - Tasty Web Development Treats by Wes Bos & Scott Tolinski - Full Stack JavaScript Web Developers

    Syntax - Tasty Web Development Treats

    986 Listeners

    REWORK by 37signals

    REWORK

    212 Listeners

    CoRecursive: Coding Stories by Adam Gordon Bell - Software Developer

    CoRecursive: Coding Stories

    185 Listeners

    Elixir Mix by Charles M Wood

    Elixir Mix

    13 Listeners

    The Stack Overflow Podcast by The Stack Overflow Podcast

    The Stack Overflow Podcast

    63 Listeners

    Thinking Elixir Podcast by ThinkingElixir.com

    Thinking Elixir Podcast

    31 Listeners

    Beam Radio by Lars Wikman

    Beam Radio

    11 Listeners

    Software Unscripted by Richard Feldman

    Software Unscripted

    26 Listeners

    Oxide and Friends by Oxide Computer Company

    Oxide and Friends

    47 Listeners

    Elixir Mentor by Jacob Luetzow

    Elixir Mentor

    2 Listeners

    Elixir Friends by German Velasco

    Elixir Friends

    0 Listeners