Off Grid BREAD Spring 2023


The Broadly Reconfigurable and Expandable Automation Device (BREAD) is a modular data acquisition system that aims to be more affordable than other open source alternatives. This device consists of a backplane—referred to as a “loaf”—and various smaller PCBs—referred to as “slices”—that interface with the loaf. The Open Science Framework (OSF) repository for the original BREAD project is linked towards this report’s end and holds the files and documentation for eight different slices.

Specifically, the Off-Grid BREAD project allows for BREAD systems to inexpensively be implemented in outside environments. This project involves modifying the loaf and battery management system slice PCBs, writing Arduino code for those boards, and designing weatherproof enclosures for the loaves and slices. All files for the updated boards, Arduino code, and enclosures are located in the Off-Grid BREAD OSF receptacle, which a link to is provided near the end of this report. Additionally, links to all of the open source resources utilized to complete this project are included as well.


Goals for the project were categorized as either functional requirements or value-added, with the former being prioritized over the latter.

Functional Requirements:

  1. The entire device will have design files originated entirely from free and open source software.
  2. All 3D printed components can be produced by an unmodified Ender 3.
  3. The battery management system slice shall be able to be powered from either a motor or a solar panel.
  4. A power management slice library shall exist to allow control of the BMS and charge circuitry.
  5. A physical enclosure for the outdoors shall protect the circuitry from spray and the elements.
  6. A benchtop enclosure shall hold the LOAF and allow for easy storage and mounting around the lab.
  7. A standard enclosure for slices shall hold slices individually.

Value-Added Goals:

  1. The power management slice shall be able to be powered by a motor and a solar panel simultaneously.
  2. An Arduino Library shall exist to allow the LOAF to record data to the onboard SD card.
  3. All peripheral ports are accessible with the enclosure in place.
  4. A four-slice LOAF shall be designed for smaller footprint applications.
  5. A physical enclosure for the four-slice LOAF shall be printed.

BMS Programs

The BMS program is written in arduino and it contains the instructions to control the Battery Management Slice. This code handles pin assignments, charging voltage and current monitoring as well as communication to allow logging to the micro SD card on the BREAD loaf. This program should be uploaded to the arduino nano on the BMS slice.

SD Receiver Program

The SD receiver program writes log files to the SD card on the loaf using Arduinos SD library. This is accomplished by establishing communication between the arduino on the loaf and an arduino on a slice using I2C. This program should be uploaded to the loaf’s arduino nano. If you wish to change the log file names this can be accomplished by modifying the filename variable in the program. It is also worth noting that the size of the communicated information can be changed in the program by modifying Line 45. Modifying Line 45 can also allow communication with other devices communication on I2C such as another slice.

BREAD Loaves

The previous BREAD loaf design was revised to have components now uniformly spaced to facilitate future modifications and compatibility with the BREAD box. The updates to this loaf were made in the open source electronic design automation software KiCad.

Formerly, only an eight-slice loaf design existed, so a BREAD loaf capable of holding up to four slices was designed for smaller applications. This four-slice loaf was derived from the eight-slice loaf and has identical functionality, apart from its capacity of four slices as opposed to eight. The four-slice loaf is approximately half the size of the eight-slice loaf, allowing for an alternative that is easier to store and transport—as well as less expensive to manufacture—for applications that require the concurrent use of no more than four BREAD slices.


BREAD boxes are 3d printable designs to enclose and protect both full loaves and individual slices. The boxes are designed to be printed on an Ender3 or equivalent printer and do not require support. The FreeCAD, .STL, and .3mf files for the boxes are available on the off grid BREAD OSF.

Battery Management System (BMS) Slice

The BMS has been redesigned to include a buck converter that will allow an additional power supply—up to 32V—to power it. Meanwhile, the original power input still accepts up to 10V, and the output remains at slightly below 12V. The buck converter includes an LM2596 and reduces the up to 32V input voltage to 7V so as not to damage the BQ24074 charging chip. The 4.4V output from the BQ24074 acts as the input for the MT3608 boost converter, which raises the voltage and outputs 12V.

The redesigned BMS has the capability of being powered by a 5V source with a micro USB connector and sources connected to the power ins that accept a range of voltages with a minimum input voltage of approximately 4V. Additionally, the BMS can charge a lithium-polymer battery with a JST PH 2-pin connector. Although testing the powering and charging aspects of the new BMS proved to be successful, it is important to note that its charging indicator does not light up at the appropriate time; instead, it acts as a second power indicator—mirroring the power LED and only lighting up when the BMS is receiving power, as opposed to when the BMS is charging a battery.

This issue did not arise in the previous iteration of the BMS which did not include the buck converter and ability to accept an input power supply of up to 32V. While the functionality of the most recent BMS design is not impaired—and it now allows for a power input with a maximum input voltage more than triple that of either of the preexisting power inputs—the complication with the charging LED indicates that the BMS is not yet optimized and requires further development.

Although the specific cause of the problem with the charging indicator has not yet been identified, it most likely arises from the BQ24074 charging chip or the Arduino Nano. The BQ24074 is responsible for determining when the battery is charging and influencing the output of its ninth pin to reflect the charging status. The output voltage from the BQ24074’s pin 9 is the input for the D5 Arduino pin, and this signal is then output from the D7 pin to the charging LED. Since the voltage the charging indicator receives is primarily determined by the BQ24074 and the Arduino Nano, it is probable that the issue with the redesigned BMS involves one or both of those components.

BMS Slice Bill of Materials


ProjectOSF Link
Off-Grid BREAD
Open Source SoftwareLink
Arduino IDE