Automation. I have to admit I’m a fanatic supporter of automation of otherwise difficult or cumbersome tasks. And this is true on the traditional way we RC-hobbyist’s use our LiPo’s. So I thought that I should do something about it.

About RFID

RFID is a clever way to read information in this case, install a small reader to your model next to battery, put a tag on battery and there you have it, battery identification. Couldn’t be easier.

Application needs a RFID-reader to read currently used battery’s information. Since these are not commercially available we need to make one ourselves. So head on to Helifreak where AlastairC made a great work by making a working example and making it available to us others to use.

The usual RC522 type RFID-reader people are using is a bit too big to my taste so I searched Ebay for something smaller, here’s the needed parts, RFID-reader/writer and Arduino Pro Mini as parts with EC5-connector for size-comparison and the complete prototype from both sides. My final installation unit to heli’s will be without the black wire and “all in one”-type solution. Nice and tidy.

rfid_pcb  rfid_proto  rfid_proto_2

In order to use this Lua-app you need to use the code from my Github for RFID-Battery here, I added cell-count to RFID-data for even more automation. (All other instruction like programming RFID-tags are as Alastair’s writing says)

Building RFID-Sensor is presented on my project-page here. The RC-Thoughts RFID-Sensor is now also 100% compatible with Revo Bump technology for even more easy battery management for users.

RC-Thoughts Jeti Tools RFID-Battery

Application is a swiss army-knife of battery management for Jeti Lua-capable transmitters. All relevant and important functions tied to one app with minimal setting and adjusting for user to do. 

This is (so far?) the largest single Lua-app available in RC-Thoughts Jeti Tools, being almost 3 times bigger than others. But it was well worth it.

Application is free to download from my Github here. Everything except hardware and Arduino-programming software is included.

RFID-Battery features

RFID-Battery features following functions on DC/DS-24

  • One app to all models, up to 15 batteries per model
  • Automatic battery identification based on ID-number from RFID-tag
  • RFID-info is ID, Capacity (mAh), Cycle-count and Cell-count
  • Automatic detection of 2-pack config (For example two 7S in 14S use)
  • Automatic detection of empty battery when powering model
  • Empty battery on powering -alarm has repeatable and user selectable voice-alert
  • Used capacity alarm has repeatable and user selectable voice-alert
  • Possibility to select a switch for announcement of percentage used
  • Several different telemetry screens available based on available information
  • Warning and info-screen on main screen
  • Minimal setting required
  • Allows usage of batteries with any voltage, capacity in one model without doing several overlapping telemetry-warnings etc
  • All settings are model-specific

RFID-Battery features following functions on DC/DS-16

  • Fully automatic capacity-warning regardless of battery-size
  • Unlimited amount of batteries allowed
  • Allows usage of batteries with any voltage, capacity in one model without doing several overlapping telemetry-warnings etc
  • Automatic battery identification based oncapacity-info from RFID-tag
  • Used capacity alarm has user selectable voice-alert
  • Possibility to select a switch for announcement of percentage used
  • Minimal setting required

Logging! RFID-Battery writes a fully automatic battery-log!

Due memory-limitations on DC/DS-16 logging is limited to DC/DS-24.

  • A new line is added to logfile after every successful cycle
  • Data includes date/time, Model name, battery name, battery capacity, used capacity and cycle-count
  • Log is written in comma delimited csv-format with date and time in ISO 8601 format for perfect platform-independent compatibility
  • Log is common for all models collecting all batteries usage to one file
  • Log is written regardless of usage of Revo Bump or RC-Thoughts tags


In short: Copy the RCT-Rfid.lc (or .lua, the .lc is memory-optimized) file from github here to your transmitters Apps-folder, copy the RCT-Rfid.jsn file to Apps/Lang-folder on your transmitter. Head on to “Applications” -> “User applications” and add the app. Guide on installation of Lua-apps available here if you need some more in-depth guide.

Note: For DC/DS-24 also copy the BattLog.csv to /Log folder!

Minimal setting up required

Application needs very little setup. Setting sensors if of course mandatory, on top of that only desired capacity-limit and cell-voltage-limit’s, voice files, repeats and common settings is done. Of course user needs to write model- and battery-names and battery RFID-information. After that, forget about it.

Setting up RFID-Battery

Settings are self-explanatory. After installing the application go to “Applications” -> “RFID-Battery”:


RFID-reader gives five sensors to Jeti:

  • ID
  • Capacity
  • Cycles
  • C-Value
  • Cells

In order for application to work you need to select the sensor “ID” to RFID-Battery application. All other RFID-data is read automatically.

For full benefit you should also define capacity- and voltage sensors (voltage on 24 only), these are available for example with MUI-series sensors from Jeti. (Note: Do not use the RFID-sensor named “Capacity”, it shows the battery capacity, not used mAh.)

Capacity-alarm percentage is the low-limit where you wan’t the alarm to be activated, in my example I want the alarm to sound three times when 23% of capacity is left in battery.

Same goes to the low-voltage alarm. (24 only)

Empty Flight-pack alarm is now built-in, no sequencer were harmed!

Making transmitter alert you when you connect an half-empty battery to your model is of course doable with Jeti but now it’s even more easier. Due Lua memory limitations available on 24 only.

RFID-Battery app uses voltage-sensor and RFID-information of cell-count to calculate two things, one is the total amount of cells, if total voltage is over max-voltage for that size battery app determines that user is having a dual-battery setup. For example max voltage for 6S LiPo battery is  25,2V, if RFID sends information that this is 6S battery and voltage-sensor gives more than one cell over this voltage RFID-Battery knows this has to be an dual battery setup and adjust empty flightpack-alarm accordingly.

What user needs to tell in settings is the low voltage limit for one cell, everything else is automatic. I’m personally been using value of 4.12V, if battery’s cell-voltage is lower than that it should be checked, everything else is considered as full battery.

Note: This check is available only 10 seconds after RFID has identification of battery and voltage sensor is active, this alarm will not sound after that, battery needs to be disconnected before alarm is activated again. And again, fully automatic.

Same as in capacity-alarm, choose a voice-file and choose if you wan’t it to be repeated.

Voice announcement

You can also define a switch for voice announcement. When switch is activated transmitter will tell you your battery percentage like “Capacity 85 percent”. Announcements can be made every 3 seconds. Leaving the switch on will result in transmitter telling you the percentage every 3 second.

Individual settings for batteries

There’s very little that needs to be done for batteries since everything is done by application. Give a suitable name for your battery and put the RFID-tag ID-number, that’s it. Note: You need to do this even when using Revo Bump technology. Note! This is for 24 only! Since 16 uses capacity-information straight from RFID-tag 16 has unlimited battery-amount.

There’s room for 15 batteries per model:


Now, as Jeremy says, “How hard can it be?” :)

Main screen and Information overload

Main screen gives quite a lot information. If there is no RFID-data present the screen is of course with no information:


If you are not using capacity-calculation the screen in use is the same as above, there’s just the static information on battery-name, cycle-count and capacity, not really informative. Things change when we start using the full capability of application:


There’s the name of pack obviously, as biggest number is capacity left in battery. This is calculated automatically with information from RFID-capacity and capacity-sensors values. Also in the bottom there’s information on how many cycles battery have been used and the nominal capacity of it.

On the left side is a real-time display on how much capacity is left and under it the cell-count calculated by RFID-Battery application. Note that this is not the cell-count coming from RFID-information.

What happens in different alarms?

If you connect an empty or half-full battery to your model you will hear the voice-alert you configured but also see a warning-message on screen. Also the capacity left is automatically dropped to 0% and battery-display becomes red, all in order ot make sure user really knows there’s issues at hand.


The warning for capacity also makes the real-time displayed battery-symbol red and announce the chosen voice-file.

Logging, how does it work?

For the first time ever, true model-independent battery-logging with Jeti!

There’s a few conditions on when log is written:

  • Model needs to be powered at least for 30 seconds
  • No log-line is written in case of alarm when connecting empty battery
  • No log-line is written if battery capacity is zero on tag
  • No log-line is written if consumed capacity is zero

After disconnecting battery after use a message is displayed on screen for confirmation. Also since writing has to be done after all sensors have disappeared it’s important to tell user that logging is done, otherwise user could turn off transmitter right away. Writing does not take a second, but it takes a few seconds before transmitter realizes the absence of sensors. Message is simple and clear:


Format of log is easy to export and use in Excel, LIbreOffice Calc or where ever. Simple comma-limited data. Date and time is in ISO 8601 format being YYYYMMDDTHHMM. This is what it looks like:

Date,Model Name,Battery,Capacity,Used mAh,Cycles,,,
20161110T1852,Logo 800 Xxtreme,GensAce 65C Pack 1,4400,3722,41,,,
20161110T1858,Logo 800 Xxtreme,GensAce 65C Pack 1,4400,2623,42,,,
20161110T1901,Logo 800 Xxtreme,GensAce 65C Pack 1,4400,3476,43,,,
20161110T1917,Logo 800 Xxtreme,GensAce 65C Pack 2,4400,1533,29,,,
20161111T1452,Logo 800 Xxtreme,GensAce 65C Pack 2,4400,3902,30,,,
20161111T1458,Logo 800 Xxtreme,GensAce 65C Pack 2,4400,3155,31,,,
20161111T1521,Logo 800 Xxtreme,GensAce 65C Pack 2,4400,2846,32,,,
20161111T2303,Logo 800 Xxtreme,GensAce 65C Pack 2,4400,4036,33,,,
20161111T2333,Logo 800 Xxtreme,GensAce 65C Pack 2,4400,3884,34,,,

And imported to LibreOffice Calc:


Easy to make all sort of graphics or stats from here :)

Happy care-free flying!

Version history

  • 1.0 Original version – Languages available EN
  • 1.1 Bugfixes for log-writing and protection against wrong usage
  • 1.2 Bugfix for log-writing and optimized Arduino-code R/REX-compatibility
  • 1.3 Bugfixes
  • 1.4 Revo Bump compatibility
  • 1.5 DC/DS-16 version released
  • 1.6 Added Italian translation from Fabrizio Zaini
  • 1.7 Function enhancements – Identifies to transmitter without tag present and allows user to change tag “on the fly”
  • 1.8 Voice announcement added
  • 1.92 24-version – Log writing revisited
  • 2.0 Same version number for 14/16/24 and memory improvements
  • 2.1 Added German translations by Norbert Kolb
  • 2.2 Typo in AUDIO_QUEUE fixed
  • 2.3 Added safety feature for announcement if no tag is active
  • 2.4 Fixed safety feature


Some rules do of course apply!

  • Never use Lua to control a function that would take the model down if misbehaving!
  • Always, always test the function thoroughly!
  • If you do not know, then don’t!
  • RC-Thoughts or myself is NOT responsible for anything this application does
  • Applications are free to use (MIT-license) and linking to this page is encouraged!