This is a talk I gave to the Tallahassee Amateur Radio Society on building an off-grid electrical system for remote RV/Marine operations. Here is a Print Friendly version of the presentation.
Other Uses for Solar Activity
Click on the "Links" to go to Project and About Pages Click for Projects Links About the Vess...
This is a talk I gave to the Tallahassee Amateur Radio Society on building an off-grid electrical system for remote RV/Marine operations. Here is a Print Friendly version of the presentation.
Other Uses for Solar Activity
6AH LiFePO4 DIY Battery System for Testing and Developing
Here is an idea inspired from Andy at the Off-Grid Garage. Andy has a wonderful YouTube channel covering all things solar with emphasis on testing and the the understanding concepts. Check him out at https://off-grid-garage.com.
I recommend that anyone interested in building a reasonably sized DIY LiFePO4 battery (100AH or more) that they build a simple test/development battery using 4 small 6AH LiFePO4 cells and a decent BMS. Ideally, one would want to use the BMS intend for use in the big DIY battery build. This a great way to test and understand the BMS operations and limitations. These small cells cost only a few dollars. Simply connect the 4 cells in a 4S series configuration. Connect the 5 BMS balance wires and the BMS negative input to the battery's overall negative terminal. Plug the BMS balance connector into the BMS and the battery system is operational.
![]() |
| The JBD SP04S020 120A 12V LiFePO4 BMS with Bluetooth UART and RS485 com boards |
![]() |
| XiaoxiangiBMS iPhone App |
ARDUINO CODE/*
* Smart SI-ACR controller
*
* This code follows the Makerguide.com example for the DS18B20 1-Wire digital temperature sensor
* with 16x2 I2C LCD and Arduino example code. More info: https://www.makerguides.com/ds18b20-arduino-tutorial/
*
*/
// Include the required Arduino libraries
#include <onewire.h>
#include <dallastemperature.h>
#include <liquidcrystal_i2c.h>
// Define input/output pins
#define ONE_WIRE_BUS 2 // readout pin for temp probes
#define RELAY 7 // output pin for the relay control
// Create a new instance of the oneWire class to communicate with any OneWire device:
OneWire oneWire(ONE_WIRE_BUS);
// Pass the oneWire reference to DallasTemperature library:
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Degree symbol:
byte Degree[] = {
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
B00000
};
bool isOn = true;
void setup() {
// Start up the library:
sensors.begin();
// Start the LCD and turn on the backlight:
lcd.init();
lcd.backlight();
// Create a custom character:
lcd.createChar(0, Degree);
digitalWrite(RELAY, LOW);
pinMode(RELAY, OUTPUT);
lcd.setCursor(0,0);
lcd.print("ALT BAT CHARGING");
lcd.setCursor(3,1);
lcd.print("Delay Start");
delay(30000); // initial delay of 30 seconds
}
void loop() {
// Send the command for all devices on the bus to perform a temperature conversion:
sensors.requestTemperatures();
// Fetch the temperature in degrees Fahrenheit for two devices
int i = 0;
float AlternatorTemp = sensors.getTempFByIndex(i++); // the index 0 refers to the first device
float BatteryTemp = sensors.getTempFByIndex(i++);
// Print the temperature on the LCD;
lcd.setCursor(0,0);
lcd.print("ALT LiFe CHG:");
lcd.setCursor(13,0);
if(isOn)
lcd.print(" ON");
else
lcd.print("OFF");
lcd.setCursor(0,1);
lcd.print(" "); // clear the line
lcd.setCursor(0,1);
lcd.print("A:");
lcd.print((int) AlternatorTemp);
lcd.write(0); // print the custom character
lcd.print("F ");
lcd.setCursor(8,1);
lcd.print(" ");
lcd.setCursor(8,1);
lcd.print("B:");
lcd.print((int)BatteryTemp);
lcd.write(0);
lcd.print("F");
if(BatteryTemp < 32 || AlternatorTemp > 200 ) {
isOn=false;
digitalWrite(RELAY,LOW);
}
else {
isOn = true;
digitalWrite(RELAY,HIGH);
}
// Wait 1 second between updates
delay(1000);
}After many years of service, it was time to update the cabin upholstery aboard Johanna Rose. The project included recovering the settee cushions and making new curtains, which made a surprisingly large difference in the appearance of the cabin.
For the project, I purchased a NewTech 607Z sewing machine. The NewTech 607Z is a Ultrafeed LSZ-style walking-foot sewing machine from GoldStar Tool. It is essentially a much less expensive alternative to the Sailrite Ultrafeed LSZ and cost roughly one-quarter as much. For an occasional DIY marine upholstery project, it proved quite capable of handling the heavier fabrics and multiple layers involved.
I purchased the upholstery fabric and sewing notions from Sailrite and relied heavily on Sailrite's excellent how-to videos for the construction techniques. Their videos walked me through the process of measuring, cutting, sewing, and assembling the cushion covers and were particularly helpful for someone tackling marine upholstery work for the first time.
The existing cushion foam was reused where possible, with new covers made to fit the original cushions. I also used the project as an opportunity to make new cabin curtains from coordinating fabric.
This was a very manageable DIY project with the right sewing machine and a little patience. The combination of new cushion covers and curtains gave the cabin a fresh, updated appearance without the expense of having the upholstery professionally made.
![]() |
| The original cabin cushions before beginning the upholstery project. |
![]() |
| NewTech 607Z sewing machine with Monster wheel option. |
![]() |
| New upholstery fabric selected for the cabin settee cushions. |
![]() |
| One of the newly covered cushions completed and ready to go back aboard. |
![]() |
| The finished cabin—the new cushion covers provide a simple but substantial update to the interior of Johanna Rose. |
![]() |
| The port-side settee with the newly upholstered cushions set up in pull-out berth mode. |
![]() |
| Reupholstering the vee-berth cushions. The old cushions were in poor shape. |
![]() |
| The newly finished vee-berth cushion a substantial update to the interior of Johanna Rose. |