Maker's Guide Ch 1

The target reader of this blog/book is someone who has some experience with programming in higher-level languages such as Python, Ruby, Javascript, C, etc. on platforms such as a PC, Mac or Linux and wants to learn how to put all the pieces together that are necessary to bring a real world gadget to life. The basics of electronics and short primers on software development will both be covered along the way. The reader will learn how to build electronic circuits that will enable programs to sense and respond to the environment, run on batteries and communicate with other devices. The prototyping process will be performed on a solderless breadboard, while explaining the manufacturing process required to take an idea from schematic to production.

 

Contents

The following planned topics are intended to teach you what you need to know to get productive in embedded development.  More topics may be added later.

  • Introduction
  • Getting started
  • The First Embedded Project: Hello World!
  • Control External Components with a Solderless Breadboard
  • Fading LEDs with Interrupts
  • Create a Backyard Sprinkler Timer
  • Send Messages to Your Computer with a Serial Interface
  • Store Lots of Data in a SPI Flash ROM or SD Card
  • How to Use Accelerometers with I2C
  • Control an Array of RGB LEDs with an LED Controller
  • Send Images to an LCD screen with a Parallel Interface
  • Play High Quality Audio from WAV Files
  • Creating Audio Tones with Nothing but a FET and a Speaker
  • Blend Sounds from WAV Files with a DAC
  • Capture User Input via Capacitive and Resistive Sensing
  • Control Motors and Servos
  • Send Messages with Light and Sound and Detect Distance

 About the Author

About the Author

My name is David Lynch and I am the inventor of Sabertron, Foam Swords with Electronic Scoring. I created a Kickstarter campaign that was funded in June of 2014 for $233,852, which made it the 12th highest grossing Kickstarter project to date from Austin, Texas. Since then, I have been hard at work making Sabertron “a thing” and learning a ton about the embedded design and development process that makes these kinds of gadgets tick.

  

I have been working as a full-time computer engineering professional since the 1990's. I have worked on PC architectures from mobile to server, on cutting-edge high speed digital interfaces such as DDR and HyperTransport and utilizing oscilloscopes and other high end measurement equipment while developing software to automate the process. I’ve had a wide breadth of experience in both hardware and software.  Yet, it was difficult for me to get up and running with embedded design and development. It shouldn’t be this hard, and it doesn’t have to be that way.  I will be your guide to help you come up to speed quickly and help you gain a more complete understanding than what I had to endure. While I am a seasoned professional in the field of computer engineering, I am no expert on embedded design nor am I an expert on the EFM32 family of MCUs. I hope to expand my skills in the process of writing this book so that I can implement better firmware for Sabertron products. It is my hope that by putting this material together, others can learn from me and I can learn from the very good questions that will arise in the process. 

 

Computer programming has never been more accessible thanks to initiatives like open-source software and the “Hour of Code” initiative by code.org, with celebrities and even the president pushing the idea. My premise is that most people who might want to build an embedded gadget may already know a thing or two about software programming, but there is a HUGE chasm between where they stand and prototyping, developing and bringing that gadget to market. In this series, you will follow along as I demonstrate how to prototype embedded mini-projects, both the electronics hardware circuit as well as the software programming that runs on that hardware. I have chosen to develop this series on the Silicon Labs EFM32 family of ARM Cortex MCUs using the Wonder Gecko Starter Kit. These lessons aren’t exclusive to Silicon Labs MCUs, but they are easily the best MCUs for newcomers in my experience. You will also learn about what it takes to create prototypes on a shoestring budget, doing as much of the work as possible on your own. You will find out what it takes to make an Internet of Things (IoT) device that incorporates the ARM processor, accelerometers, LED drivers, communications ICs, power regulation circuitry, and even analog circuits.

Wonder Gecko

Silicon Labs Wonder Gecko Starter Kit

 

My journey from well-paid and comfortable engineering professional to zany, white-knuckled DIY entrepreneur began when I was just playing around with the kids outside in the backyard. We were play sword fighting with PVC pipes covered in foam. The moment that we began to play, I had a thought, as I often do, that this experience could be so much better. My mind instantly began trying to figure out how to add electronic scoring to the sword fight. There has to be a clean, wireless way to do it, but everything I could come up with was too complicated or exotic that I doubted that it would work. It was one of my favorite ideas  so I protected it in my mind for a while. I did searches all over the Internet and I could only find electronic devices for the more serious sport of fencing. I could not find anything for the toy/game arena. 

 

After five years of thinking about this idea, a thought occurred to me in September of 2013 that started it all. I figured out a way to drastically simplify the mechanism for determining sword hit detection using nothing but an accelerometer and a wireless link between the swords. Now that I had finally figured out a practical way to keep score, I had to go on the web and order some parts to try it.  Within a week or two, I had developed a working prototype of the first Sabertron sword. It wasn’t perfect, but it worked.

 

Prototypes

Progression of Sabertron Prototypes


I completed the first prototype by turning to an Arduino since it had a strong community and libraries that would let me interface with an accelerometer breakout board. It fit the bill for the first three prototypes, but it was running out of steam. One of the problems, and the impetus for this book, was that the libraries would only let me do a certain set of things. As I tried to manage interrupts and multiple threads, things got tricky. The “simplified” Arduino interface quickly dissolved into pure C++ coding as soon as I tried to do something that was off the beaten path. There isn’t a lot of debugging support in the Arduino Integrated Development Environment (IDE), and I couldn’t find the support that I needed to keep moving forward with that architecture. I found myself pouring through technical specs reviewing register definitions and banging bits, which was very similar to the kind of work that I had done for 15+ years as an engineering professional. I can honestly say that without my background in computer engineering, I would not have been able to finish the prototypes by myself. What began as an easy and fun little “hobby” project turned into a full-on engineering effort.

 

One of the problems with technology is that engineers are typically good with details and comfortable with high levels of complexity but many don’t document their designs well or make things accessible to others that might not have an engineering background. I wanted to write this book because I believe that I have a quality that many engineers lack, which is the ability to explain things in a very simple and visual way. I love to teach, and as a student of Edward Tufte, I cherish effective visualizations.

 

Testing

Testing Sabertron on an Oscilloscope

 

I live on the outskirts of Austin, Texas on a rural property along with my wife and five kids. When I am not developing embedded gadgets, I can be found driving my tractor, installing fences, building stone walls, remodeling my house, or anything else that a big property requires. I am a maker, hacker and DIY’er, to the extreme.

 

Feel free to comment on each lesson and make suggestions to improve the content, examples, and code. I will take part in the discussion and use your feedback to improve the final published book.

 

Visit the Maker's Guide home page for updated info, including where to buy the parts I discuss and where to find the code snippets I'll reference. And don't forget to subscribe to the blog so you don't miss any updates.

 

NEXT

  • Blog Posts
  • Makers
  • Thanks for the great article David!

    0
  • Thank you for providing this wonderful guide.  I have followed it from the start and hope to see additional chapters in the future.  Thank you for all the time and effort you put into this.

    0
  • Hello david,

     

    Could I follow this guide with de development board instead of the evalutions kit?

    0