Blubot, The machine that lives forever

Intelligent agents drawing upon natures lessons to source energy and survive.

Similar projects worth following
The Machine That Lives Forever is a concept which can describe an electronic object that can harvest and manage its energy; drawing parallels with various human and animal models. A basic life cycle is realised that follows the rest-feed-work process ingrained into every living creature. A stigmergic ‘survival by evolution and learning’ algorithm is used to maximise and encourage a survival of the fittest approach.

The challenge is to harvest and store ambient energy; when enough has been accumulated a work ‘task’ is executed; when the energy store is depleted hibernation will occur allowing for recharge. This cycle is then repeated forever.

This project details a low-power Bluetooth enabled self-sufficient smart robot capable of intelligently harvesting energy sources such as RF scavenging, solar, thermal and mechanical.


To fulfil the requirements of the project, a Bluetooth low energy programmable platform has been designed that implements the following basic functionality:

  • Have a method to receive energy in some form
  • Harvest and store this energy
  • Monitor the level of the stored energy
  • Have a hibernation mode where its energy usage is reduced to a minimum
  • Execute a task, where it consumes the stored energy
  • Avoid obstacles which will prevent its task from being completed
  • Maximise its ability to have energy delivered efficiently
  • Be able to repeat its sleep-work-sleep cycle indefinitely
  • Be able to communicate with other machines
  • Be able to report its current status
  • Allow remote control and commands to be received
  • Provide the ability to update its internal systems while in the field

The platform is motor driven allowing it to move; it contains various on-board short range and long range communication facilities and has facilities to detect its surrounding objects.

The energy delivery is in the form of solar energy, needing a solar panel to harness this energy.

The energy storage is in the form of capacitors (super caps).  The solar panel charges up the capacitors providing an energy store available for later use.

Highly efficient energy harvesting has been implemented which maximises the absorption of very low amounts of available energy, manage its storage and provide reliable delivery.

The bot monitors the level of energy stored within the capacitors; when the level passes an upper HIGH threshold value, the bot wakes up and perform a task.  As the bot uses the energy the level in the capacitors drops, when the level drops below a LOW threshold, the bot ceases performing task execution and returns to a minimum energy consumption mode, allowing the energy store to be again recharged from the solar panel.

The ‘task’ is to use motors to propel itself along the ground.  As the bot is reliant on solar energy, when it moves, it provides the ability to track the direction of the brightest light.  This is achieved using two photodiodes positioned either side of the bot.  The photodiodes react to the light and allow current to pass dependent on the level of light they receive, the magnitude of this input is used to adjust the bots direction of travel.

Two motors installed on each side of the bot are used to propel it across the ground; the motors speeds are manipulated to control direction of travel.

Ultrasonic radars are located on the front and rear of the bot providing ‘eyes’, these provide an ability to discover objects and distances of objects located around the bot, this data is then used to change the bots direction of travel.  The radars provide a means to prevent the bot from becoming stuck against an object which could restrict its ability to move.

The bot uses both a LOW and HIGH threshold to monitor its energy storage levels; this provides a hysteresis which prevents the bot from entering an infinite cycle of their wake-up energy requirements immediately depleting their accumulated energy storage rendering them needing again to recharge.

Infrared transmission and reception, allowing talking and hearing, coupled with near-field-communications (NFC) has been implemented to facilitate short distance intercommunication between bots. 

Bluetooth LE (Low Energy) communications [1] is used for long-distance control and monitoring.

Bluetooth LE is designed for very low power operation, and is optimized for data transfer solutions. To enable reliable operation in the 2.4 GHz frequency band, it leverages a robust Adaptive Frequency Hopping approach that transmits data over 40 channels. The Bluetooth LE radio provides developers a tremendous amount of flexibility, including multiple PHY options that support data rates from 125...

Read more »

Bootloader Firmware for Keil uVision

x-zip-compressed - 37.85 kB - 06/12/2018 at 16:26


Firmware and library written using Eclipse

x-zip-compressed - 69.86 kB - 06/12/2018 at 16:25


RAD Studio C++ Builder Multi-Platform Application, designed for Windows, MAC, iPhone and Android devices

x-zip-compressed - 887.88 kB - 06/12/2018 at 16:22



3D Model

step - 12.12 MB - 06/12/2018 at 16:19


Adobe Portable Document Format - 81.59 kB - 06/12/2018 at 16:18


View all 8 files

  • 2 × Geared Motor 2-5V
  • 1 × 1.0uF Capacitor, X7R, ±10%
  • 1 × WE-TPC-2813-TH SMD Inductor, 2-Leads, Body 2.8x2.8x1.5 mm
  • 1 × WE-TPC-3816-S SMD Inductor, 2-Leads, Body 3.8x3.8x1.8 mm
  • 4 × 12pF Capacitor, X7R, ±10%

View all 48 components

  • Build Results

    Michael Walton06/13/2018 at 08:42 0 comments

    Figure 60: Basic Specification Results

    The specifications shown in Figure 60 have been recording under tightly controlled conditions.  Current consumption while executing its task has been recorded without motor movement, because any motor drive impedance present has a direct effect on its current draw.

    Task execution time before low threshold is taken with motor drive enabled at full speed and demonstrated the time the bot can move from its highest energy store level of 3.3V to its lowest of 1.8V.


    Quite impressive current restraints have been achieved with the design. Three basic modes of operation have been implemented:

    • Deep Hibernation
    • Advertising
    • Connected

    During Deep Hibernation, a minimum current draw is realised, all communications and radio are disabled and as many internal peripherals as possible are disabled.  To wake from this state, the on-board PCB button must be pressed causing an interrupt to occur within the microcontroller.

    Current consumption during Deep Hibernation is sub 500nA, a minimum of 82nA was recorded with averaging at 203nA

    When woken, the mode transitions to Advertising.  This mode enables Bluetooth discovery.  The radio is enabled, and short advertisement bursts are transmitted every 3 seconds.  During this mode, the Bot is effectively waiting for a controller to make contact and form a connection with it, if this does not happen within one minute, the mode reverts to Deep Hibernation.

    Current consumption during Advertising contains peaks where the radio is active and transmitting; this can be controlled by manipulating the advertisement interval if desired.  A peak averaging 1.85mA was recorded during the transmission.

    The connected mode is active when a controlling device has initiated and established a full Bluetooth connection, this mode will be active until the connection is dropped, in which case the mode will revert to Advertising.

    Current statistics during a Connected state showed an consostant average being recorded at 1.74mA.

    The BQ25570 [6] performs extremely well, under test it provided an energy store charge under ambient light which was beyond expectations.  It was able to successfully harvest tiny amounts of energy and add it to the super caps.  It also provided a stable 5V output even when energy store levels were below 1.9V

    Charging of the energy store automatically stopped at 3.28V to prevent overcharge and over-voltage conditions (set by the BQ25570’s [6] resisters) and the Output OK signal was detected when the store level hit 2V, and disabled itself when it drained to under 1.8V.

    The entire power ADC sample process takes ≈25uS.  After the load resister is switched in an 8uS delay is applied before ADC sampling is initiated, this prevents the initial peak from interfering with the sampled result.  The input impedance is 100K so based on the microcontroller spec ≈15uS of acquisition time has been configured.

    Ohms law states the current flow at 2.7V through the 100K resister would be 𝑉𝑅 = 2.7100000 = 27uA, this will only be consumed when the microcontroller enables the sample pin allowing current to pass through the diodes and resister.


    The microstrip antenna was tested using a VNA, the VWSR result showed that reflection is minimised at a frequency centred around 2.422GHz, meaning that better, more efficient power transfer is possible around this frequency.

    Wikipedia states “Bluetooth operates at frequencies between 2402 and...

    Read more »

  • Blubot, software components

    Michael Walton06/12/2018 at 16:55 0 comments


    A firmware library has been written which allows basic manipulation of all implemented peripherals using Eclipse [16] (Figure 47).  The library is easy to understand and use and well abstracted away from normal firmware development, all peripherals can be accessed using high-level function calls without the need to understand the detail of implementation.

    Figure 47: Firmware Development Using Eclipse IDE

    Figure 62: BluBot Firmware Library

    All functions of the library have been implemented with access via the GUI interface for demonstration and testing purposes.  Firmware’s can be developed using these libraries which provide intelligent operation and utilisation of the Bots, aiding research and teachings.  The developed firmware’s can then be programmed and tested using the Bluetooth Over-The-Air update facility (Figure 49).

    Over-The-Air firmware updating is fully functional using the nRF Connect software supplied by Nordic Semiconductor [2] (Figure 49).  It allows quick and efficient in-field firmware updating with the ability to recover from failed attempts if the Bot suffered a power loss during the transfer.

    The library ensures that all power needs of the peripherals have been minimised, and when used the operations will incur minimal current consumption for the shortest possible time to obtain results.

    The Eclipse IDE [16] proved to be a good choice for firmware development, although the initial setup to enable the Nordic [2] SDK to be imported and compiled was rather involved, the result was both easy to use and debug.  The Segger [19] J-Link (Figure 14) integrated seamlessly, and none of the required tools had any limitations or license expenses.


    The GUI software (Figure 50, Figure 51 and Figure 52) worked out very well, with both a windows version and android version deployed for test it allowed easy control of the Bots function.

    Figure 50: GUI Development Under RAD Studio

    Figure 51: GUI Software Design (iPhone)

    Discovery of all Bots in range is possible allowing the user to select the Bot they wish to manipulate.  Service and character discovery, auto selection and connection are all implemented behind the scenes to provide the user with an easy to use and understand interface.

    A windows and Android deployment were tested, and both provided full control of the Bot, iPhone and Mac versions have been compiled however deployment hardware was not available for final tests.

  • PCB and Build Conclusion

    Michael Walton06/12/2018 at 16:54 0 comments


    The BluBot PCB (Figure 53, Figure 57, Figure 58 and Figure 59) contained many small SMT components, in particular, the nRF52832 microcontroller with 48 pins in a fine pitch QFN package was very difficult to solder.  The board has four layers, three of which contain a ground polygon pour with lots of via stitching, the QFN48 package also has an exposed ground pad with vias embedded to maintain its thermal performance; this all meant that providing adequate heat to allow solder reflow was quite a challenge.

    Figure 53: BluBot PCB CAD

    Figure 54: BluBot 3D Model

    Figure 57: BluBot PCB

    Figure 58: BluBot PCB

    Figure 59: BluBot PCB

    Particular design attention was needed for the BQ25570 [6] due to its handling of very low microwatt input energy.  Large low impeding PCB traces were required with ground guarding and multiple ground planes to reduce leakage and loss to an absolute minimum.

    For the next PCB revision; various board shape tweaks have been implemented, more room for the motor fixings has been provided as well as removing the need to have the PCBs individually routed; this results in ‘V’ scoring becoming a viable manufacture option resulting in reduced board costs.

    Further manufacture costs will be met under the next revision due to a minimum hole size increase from 0.15mm to 0.25mm.


    Regarding current consumption the BluBot surpassed all expectations; even during full Bluetooth connection, current draw was manageable. In deep hibernation mode, the super caps stay charged for many days indicating leakage is very low indeed.

    Even under low ambient light conditions BluBot still managed to provide levels of charge to its energy bank and hold its own, low ambient light alone was enough to counteract the remaining leakage in the design.

    Software control, Bluetooth signal and peripherals all proved to be reliable and usable; the drive systems enabling movement are both responsive and effective.

    There are still opportunities in this design to find and reduce leakage current further, for example removing sleep modes of components by controlling their power supplies via the microcontroller.  Using a low-frequency crystal oscillator in place of the internal RC also has the advantage of consuming a smaller amount of current, especially considering this oscillator is always active.

    A bigger more efficient solar panel can be employed by designing a plastic frame to support it from the circuit board; the extra energy intake would allow prolonged operation during very low ambient light conditions.  The motor drive has more than enough torque to deal with the added weight from the frame and panel assemblies.

    More current characterisation and profiling is needed to fully understand all aspects of the design and make improvements. Motor and sensor current profiles should be individually accessed to ensure they can be utilised with maximum efficiency.

    Various other energy sources can be profiled using this design, Peltier sources, thermo-energy devices and RF scavenging can all provide a means to feed BluBots energy requirements.

    Ultimately a small army of BluBots ought to be built to explore further intelligent interaction and decision making between the individual units themselves.  The software and firmware have both been designed to support this and to further promote this idea the PCB has been revised to reduce manufacture and build costs.

    BluBot offers a solid ‘body’ design which can be used to develop and explore the parallels between machines and living beings.  It provides an efficient energy-using engine with a beating heart which needs both rest and food to be able to properly function.  It surfaces sensors which allow it to see, hear, talk, remember, learn and move. 

    Software development can now be implemented to utilise and combine all these features, provide...

    Read more »

  • Energy harvesting platform for customised development

    Michael Walton06/12/2018 at 16:47 0 comments

    One of the beautiful things about this project is its ability to provide a energy harvesting, self-sufficient mobile connected platform ready for all kinds of further customised development.

    The idea behind this design was to create a learning platform which can be used again and again to test intelligent algorithms, sensors, meshing and IoT based ideas.

    The radio, motion, energy and power management are all provided, along with a bunch of useful sensors and on-board devices, this is all supported by a rich firmware library giving the user a high-level entry into the low-level features.

    GUI software is also provided which can be extended and customised as any hacker sees fit.  Alternatively any other BLE enabled software environment can be used instead.  The firmware is all written using open-source or free IDEs and all the required SDK files are freely available from the internet.

    Energy harvesting is extremely efficient and can harvest micro-watts of energy in a managed fashion.  The above video demonstrates the early success enjoyed when powering up the bot for the first time using only a lamp with sodium based bulb.

    The platform is usable, highly customisable and configurable.  The goal was never to provide a single solution to a single problem, but to provide a foundation which can be used to evaluate many different unknowns.

    Deploy an army of self-sustaining sensors, intelligent personality driven bot with the ability to fight for survival relying solely on ambient energy sources.  Meshing, inter-communication, IoT, distributed problem solving; all of these areas are open now for exploration.

    The energy harvesting circuitry can easily be adapted to suit different ambient energy sources by simply changing its input transducer.  Rectennas can be using for RF scavenging, Peltier devices, thermos electric or mechanical movement can all be interfaced as required.

View all 4 project logs

  • 1

    Firmware a library development is done using eclipse.  Various configurations and SDK downloads are required to successfully compile the code and deploy it to the Nordic microprocessor.

    Nordic Semiconductors have provided a step-by-step guide to the setup which is available here:

    Some of the needed tools can be found in the following locations:

    Once Eclipse has been installed and the sanity checks have all been successful, the firmware can be imported into the workspace and compiled.  The makefile may need adjusting based on the installation location of the Nordic SDK.

  • 2

    Embarcadero's RAD Studio (C++Builder profile) was used to develop the GUI software, using the FireMonkey cross platform libraries.

    This is a very powerful, easy to use IDE where code can be written once and deployed on multiple platforms.

    A free version of C++Builder is available, however, I am unaware if this includes the cross-platform Fire-Monkey components used for the initial development.

    Regardless, any IDE, language or development platform capable of BLE can be used to develop a GUI of choice, Nordic also provide addvice and examples on how to do this.  The code has been kept as simple as possible with this goal in mind.

  • 3

    There should be no problem using the GERBERS to get a board manufactured, any good PCB prototype setup will do low numbers for you, quality would be somewhere like Eurocircuits, cheap would be PCBWay:

    The PCB used for testing was built by hand, all components where manually placed using either a soldering iron or hot air blower.  This is a challenge, and by no means recomended for the faint hearted, but it is certainly not impossible.

    A good process to adopt is:

    1) Place the nRF, Energy harvester and motor driver first using hot air reflow

    2) Place all the crstals and large SMT inductors using hot air reflow

    3) Place all other ICs, transisters and headers using soldering iron

    4) Finish off with all the passives and through hole components

    Remember, flux is your friend, use lots of flux to get the solder flowing, especially on the high pin SMT parts.

    Youtube has many videos available on SMT reflow soldering, i would recommend watching some of the work by Louis Rossmann

View all 3 instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates