Monday, October 13, 2014

Restoring/Recharging Over-discharged LiPo (Lithium Polymer) Batteries!

Subscribe by Email!
By Gabriel Staples
Written: 5 March 2014
Posted Here: 13 Oct. 2014
Last Updated: 7 Feb. 2015
-added Q&A section & link - 7 Feb. 2015

Related Articles:
Recommended Arduino Articles:

Though I first posted this article on my Instructables page, I decided to update it and repost it on my main website here in order to keep my articles more consolidated and easily maintained by myself.  From this point on, I will keep the most up-to-date version of this article right here, instead of on my Instructables page, so if you want the latest info, read here.  Don't forget to subscribe to receive an email whenever I post something new by clicking the subscribe link at the top-right of this page!  I will never use your email addresses for spam.

A LiPo that self-discharged, while in my plane, hanging overnight in a tree. :(


LiPo batteries should never be discharged below 3.0V/cell, or they may be permanently damaged.  Many chargers don't even allow you to charge a LiPo battery that is below 2.5V/cell.  So, if you accidentally run your plane/car too long, you don't have your low voltage cutoff set properly in the ESC (Electronic Speed Controller), or you leave the power switch on, forget to unplug the LiPo, get your plane stuck overnight in a tree (the same tree, three separate times, for foolishly flying in areas too small because you are too excited to fly and it's almost dark), etc. etc., you may find yourself in a situation where you've discharged your LiPo down well below 3.0V/cell.  What do you do?

Many people toss the LiPos in the trash.  I don't.  I restore them.  Here's how.

***Subscribe by Email!***

Sunday, August 3, 2014

Recommended Soldering Kit & Tutorials (for Arduino, Electronics, & Radio Control)

Subscribe by Email!
By Gabriel Staples
Written: 14 June 2014
Posted to blog: 3 Aug. 2014
Last Updated: 26 May 2018
History (newest on TOP):
-20180526: Added Velleman desoldering review & link.
-20170415: converted basic Amazon links to Amazon Affiliate links; updated many of the solder links too, and prices on many links
-20161126: updated many links, incl the broken ones from Radio Shack; also added several new sections, including bonus soldering irons, rosin flux, high-power irons & torches, acid-core solders & acid fluxes, & how to tin a soldering iron tip.
-20141008: added an advanced "drag soldering" link at bottom
-20140905: added more soldering iron links, & solder tip tinner/cleaner link, as well as quite a bit more info.
-20140830: added more info about soldering irons "for Radio Control" use; also added "intermediate" links to the soldering tutorials section at the end

Related Articles:
Here is a list I put together to help people get into soldering & electronics.

Keep reading below for more info.

***Subscribe by Email!***

Saturday, May 31, 2014

eRCaGuy_ButtonReader Library for Arduino - Debounce and read the current button state, & most recent action ("just pressed" or "just released") easily!

Subscribe by Email!
By Gabriel Staples
Written: 31 May 2014
Last Updated: 25 July 2015
Article History (newest on top)
-added button image & updated download links - 25 July 2015

Other Articles to Check Out:
This Article:

Library History (newest on top):

20141031: major bug fix; added multi-button support with a new 5-button-reader example!
20140531: first release.
Misc. push buttons which can greatly
benefit from digital debouncing. 
(Image source here).


I wanted a simple and universal, yet very powerful & reliable library to read a button or switch in such a way that I can easily implement toggled actions and momentary actions, know the true, debounced state of a button or switch at any given time, and specify whether I want an action to take place when the button is *pressed* or *released.* This library makes implementing all of these things easy for me, and I now use it on all of my projects that require reading a button or switch, so I wanted to share it with others. Hopefully you find it useful too. Check out the included examples.  

This code is an elaboration of, and library form of, the main Arduino-sponsored "Debounce" example found here.  Thanks to David A. Mellis, Limor Fried (LadyAda), and Mike Walters for writing that excellent and well-thought-out example code.


(Optionally) donate, & download via the link just above, or by clicking here then choosing the appropriate download.  Install the library into the Arduino IDE (using Sketch --> Include Library --> Add .ZIP Library), then run the examples to see how to use the library.

***Subscribe by Email!***

Monday, May 12, 2014

Using the Arduino Uno’s built-in 10-bit to 16+-bit ADC (Analog to Digital Converter)

Subscribe by Email!
By Gabriel Staples Written: 13 May 2014
Last Updated: 16 Sept. 2015

History (newest on top):
-16 Sept 2015 - changed title from "10-bit to 21-bit ADC..." to "10-bit to 16+-bit ADC..."
-25 July 2015 - added a brief update below, updated download links
-17 Feb. 2015 - changed latest link to new release: V2.1 alpha, in yellow below
-24 Jan. 2015 - added link to Version 2.0 alpha below...allows sampling rates of ~50+ kHz, and fixed bug to allow >16-bit samples to not have computation errors

A Few Other Articles to Check Out:

This Article:

Using the Arduino Uno’s built-in 10-bit to 16+-bit ADC (Analog to Digital Converter)???
--Wait, what did you say!? I thought that Arduinos only had a 10-bit ADC!  How can you get, for example, 16-bit resolution out of a 10-bit ADC?  Well, the answer is oversampling.  Atmel has written a really good article about it called "AVR121 Enhancing ADC resolution by oversampling."

Before I continue, I'd like to give a special thanks to user "fat16lib," on the Adafruit Forums, who first made this technique known unto me by his post right here, thereby inspiring me to write this, my first ever, library.

Now on to the library:

***Subscribe by Email!***

Sunday, April 20, 2014

Saturday, April 12, 2014

Propeller Static & Dynamic Thrust Calculation - Part 2 of 2 - How Did I Come Up With This Equation?

Subscribe by Email!
By Gabriel Staples Written: 12 April 2014
Last Updated: 1 June 2015
-added Figure #s - 1 June 2015
-made some minor additions & formatting changes, incl. adding more info. about future work & possibly considering some blade element theory techniques - 13 Apr. 2014
-minor units correction - 16 Apr. 2014
-minor addition to section describing prop helical twist - 29 Apr. 2014
-additions & corrections to the bold portions of the "Application & Conjecturing" section - 4 May 2014

Related Articles:

This Article:

Since posting my initial "Propeller Static & Dynamic Thrust Calculation" post, I have had many questions about where this equation comes from, and several requests to explain more.  I have even had college students ask me about the equation.  Additionally, this is my most popular post at the moment and is getting over 700 views per month, with the bulk of those hits being from Google Search results about propeller thrust.  So, I think it's time I explain more about the background of the equation.  Here goes.

First off, here's the nomenclature I will use:

***Subscribe by Email!***

Friday, April 11, 2014

Aim High

Subscribe by Email!
Aim high!  Shoot for the stars and you’ll land on the moon; shoot for the moon and you’ll land on the roof; shoot for the roof and you’ll land in the dumpster. Aim high!

I've heard quotes similar to this, and the other day (22 March 2014) I thought about this and wrote it on the top of a to-do list I had which pertains to Unmanned Aerial Systems-related projects I'm working on.  These are the types of things I try to remind myself regularly.  Aim high.

~Gabriel Staples

Related Article:

***Subscribe by Email!***

Tuesday, February 25, 2014

The Goal of a Lifetime

Subscribe by Email!
What are My Limits?

"It should be the end goal of any professional to reach such a high level of skill at what you do that you are no longer limited by your abilities; but rather, you are limited only by your imagination."
~Gabriel Staples, 25 Feb. 2014

"Reach your true potential."
~Gabriel Staples, 20 July 2020

I was inspired with this thought tonight while listening to this song (Fear Not This Night (ft. Asja)), followed by this song (David Guetta - Titanium ft. Sia).  As the second song finished, I thought to myself, “did you hear any flaw in her voice?...are there any notes she cannot reach?...does she not have a perfect mastery of music?”  And then it hit me, musical artists at this level are not limited by their skillset, or the lack thereof; they are not limited by vocal control, or a sparse understanding of music, beat, rhythm, and notes.  Rather, singers like this are so skilled that they are limited, in what they will accomplish in their music, only by their imagination.  So it must be with engineers.  In the world of engineers, hobbyists, users and creators of electronics, RC pilots, systems and electronics integration experts and inventors, mathematicians, we must become so adept in our fields that the only limiting factor in what we can create in our areas of expertise is our imaginations.  Let us resolve to better learn our fields, and to make personal efforts to improve our skills on a daily basis, so that we can become doers and not just hearers in whatever we do.  "Be a Thinker, and Be a Doer," that is what drives me [1].

In regards to my professional interests, my goal is to become so skilled in Unmanned Aerial Systems, electronics, aviation, and computer programming, that nothing can hold me back from developing whatever I want to on the leading edge of technology, stretching the bounds of our world as we know it today.

By Gabriel Staples
25 Feb. 2014

[1] - "Be a thinker, and be a doer" is a quote from Destin, on his "Smarter Every Day" series on YouTube.
--photo is a picture of me in Egypt, by the Red Sea, in June 2009, on a trip to study Arabic.

Other Articles to Check Out:
Update History:

  1. 17 March 2014: added links & descriptions of other articles to check out
  2. 20 July 2020: added "Reach your true potential" quote.

***Subscribe by Email!***

Sunday, February 9, 2014

Arduino micros() function with 0.5us precision - using my Timer2_Counter Library

Subscribe by Email!
...merging the world of Arduino and Radio Control, one tool at a time...

"I wrote a libary to get 0.5us precision on a "micros()" replacement function, so that I can get repeatable results reading a PWM or PPM signal, to within 1us.  I searched all around the internet and could not find something comparable (or that was easy to use, and maintained the Arduino's ability to write PWM signals via the Servo Libary), so I think this is my first real contribution to the world of Arduino and Radio Control."  

(font above is type "standard," from here)

Download this library:
  • Click the above link, optionally donate (just set the price you want to pay to $0 if you like), & download the library. You may also click here, then choose the appropriate download. 
    • For the email address field, you may enter if you like. Or, enter your real email if you want to receive an email with the download link, and if you don't mind if I send you an occasional email with something I'm working on (perhaps a few times a year or so).
  • Install the library into the Arduino IDE (using Sketch --> Include Library --> Add .ZIP Library), then run the examples to see how to use the library.
  • GitHub:

***Subscribe by Email!***

Saturday, February 8, 2014

Quick Tip: 4 Ways to Power an Arduino

Subscribe by Email!
By Gabriel Staples
Written: 8 Feb. 2014
Updated: 27 May 2014 - minor details added

Other Articles:

4 Ways to Power Your Arduino:

  1. USB cable
  2. External power supply, or battery, going into the 2.1mm x 5.5mm DC power jack (recommended 7~12V input)
  3. External power supply, or battery, going into the "VIN" and "GND" pins on the board, via jumpers (recommended 7~12V input)
  4. External, regulated 5V power going straight into the "5V" and "GND" pins; this can come from another Arduino's 5V and GND pins even!
Please support my work and contributions by purchasing an Arduino-compatible Nano from me here.
Also, don't forget to like, share, and subscribe at the right.


***Subscribe by Email!***

Arduino Power, Current, and Voltage Limitations

Subscribe by Email!
By Gabriel Staples
Started: 6 Jan. 2014
Last Updated: 12 June 2015
Update History (newest on top)
-added info about IO pin voltage protection using a single resistor (ex: 10K --> +15.5V/-10.5V) - 20150612
-very minor corrections: some clarity added - 20140730

Related Articles:
Other Articles You May Be Interested in Reading:
(image above is from this Adafruit tutorial here

In using Arduino and designing my circuits for it, I have often-times asked myself the question, "What are the power/current/voltage limitations of the Arduino?"  "Will I risk damaging it?"  In the image above, for instance, a large servo is being powered by the voltage regulator right on the Arduino development board.  Larger servos and motors like these have the potential to push the Arduino past its max current limits, potentially causing it to reset itself and cause unusual errors while running, or possibly even damage the Arduino (I should note that most linear voltage regulators have an over-temperature auto-cutoff feature, however, so damage is unlikely).  In either case, it's important to understand the limitations of your Arduino, its input/output pins, and its voltage regulators.

Here, I will attempt to succinctly and accurately describe the power limitations of the standard Arduino boards, such as the Uno and Nano.  References will be included at the end, and references for particular data are denoted by square braces with the reference number, such as this: "[1]."  Following my references and methodology, you can use the same techniques to figure out the limits of your particular board, in case you're not using an Uno or Nano.

Summary of information below:

  • Input Voltage Limits:
    • Recommended: 7~12V
    • Absolute: 6~20V
    • Input/Output (I/O) pins: -0.5V to +5.5V (the actual max is "Vcc + 0.5V," which for a 5V Arduino, is +5.5V) (Note 1)
  • Output Current Limits:
    • When powered by USB: total of 500mA
    • With external battery or power supply: total of 500mA~1A (see below for specifics)
    • 5V pin: same as above: 500mA or 500mA~1A
    • Each input/output pin: 40mA
    • Sum of all input/output pins combined (but NOT including the "5V" pin): 200mA
Note 1: simply by adding a resistor in series with an I/O pin, you get increased input voltage protection for that pin. Ex: a 10k resistor provides voltage enough protection to allow input voltages between -10.5V and +15.5V. A 100k resistor allows DC input voltages from -100.5V to +105.5V. Read my article here for more info: Quick Tip: Arduino Input/Output (I/O) Pin Over-Voltage Protection Using a *Single* Resistor!


Power Limitations of the Arduino Uno & Nano:

***Subscribe by Email!***

Thursday, January 30, 2014

eRCaGuy Store Just Opened

Subscribe by Email!
By: Gabriel Staples
Written: 30 Jan. 2014

Related Links:
I have just opened up a tiny web-shop in order to make a little extra money to support my work.  I intend on purchasing extra parts and pieces when I engage in Arduino or electronics-related products, so that I can sell them on my site.

Please support my work, research, blog, and contributions to the world of Radio Control and Arduino microcontroller programming by purchasing my products.

I am currently selling brand new Arduino-compatible Nano V3.0's, with breadboard, USB cable, and FREE shipping from and to the United States.

***Subscribe by Email!***

Sunday, January 5, 2014

The Power of Arduino

Subscribe by Email!
...And how you can learn to use computer programming to control and customize the physical world around you, including your RC vehicles...

Subscribe to and share this blog by clicking the links to the right -->

By: Gabriel Staples
Written: 5 Jan. 2014
Last Updated:  15 Apr. 2017
History (newest on TOP):
-updated Amazon links & prices, added Elegoo products, and converted Amazon links to Amazon Affiliate links - 15 Apr. 2017
-added link to (incomplete, but functional) touch lamp code - 20 Oct. 2016
-added info on __attribute__ syntax - 25 Sept. 2015
-added more __attribute__((__packed__)) and #pragma pack(1) links to bottom - 4 Sept. 2015
-macro comment addition to Intermediate section - 20 June 2015
-added Expert links section - 9 May 2015
-links edited at bottom - 5 March 2015
-added another Advanced link - 24 Feb 2015
-added Vilros starter kit links to bottom - 7 Feb 2015
-added source code link for my RC car read PWM sketch - 2 Nov. 2014
-added a bunch of new links at bottom of article (mostly Intermediate) - 14 June 2014
-added details and corrections pertaining to microcontrollers being used in servos - 17 March 2014

Be sure to check out the links and resources at the end of this article, as they are EXTREMELY useful to anyone who uses Arduino microcontroller development boards!

Other Related or Interesting Articles:
One Good Use of an Arduino: Use it as a Touch Lamp controller [source code]:

So, you may be wondering why I haven't written an article in the last few months.  To be honest, writing a well-informed article, with plots, pictures, and sources takes vast amounts of time, and life gets busy.  However, I should also tell you that I have been heavily involved in Arduino microcontroller programming for the last several months, and I have spent countless hours learning about and programming Arduino.  I have now built up a variety of Arduino tools and resources that I use, including dozens of bits of test code, many projects and programs, and hundreds of files, links, and resources.  I have even written some code and functions which I have seen nowhere else, which I think are very valuable, and which I intend to periodically share here on my blog.  In other words, I think I have some useful things to contribute to the vast world of Arduino, some of which will help bridge the world between Radio Control, robotics, and Arduino microcontroller programming.  Though I am constantly learning, and constantly seeking help from resources and people who know much more than I, I would consider myself a very informed Arduino user with a sound, yet constantly growing, understanding of electricity, electrical engineering, programming, and computer science.

Why have I recently been doing Arduino programming instead of doing Radio Control stuff?

Learning Arduino is doing Radio Control stuff.  It turns out that the world of Radio Control is

***Subscribe by Email!***