Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Solar-Powered Bottle-Weight Activated Phone Charging Station

View and Edit Project In Cirkit DesignerImage of Solar-Powered Bottle-Weight Activated Phone Charging Station

Solar Powered Charging Station Circuit Documentation

Summary

The Solar Powered Charging Station is an environmentally friendly solution that utilizes solar energy to charge electronic devices. The system is designed to activate a charging session when a bottle is placed on a load cell, indicating recycling participation. The charging session lasts for 5 minutes. The circuit comprises a solar panel, battery, charge controller, voltage regulator, load cell with an amplifier, an Arduino UNO microcontroller, an LCD screen for user interface, a relay to control the power to the charging circuit, and a PowerBoost module for stable 5V output.

Component List

Solar Panel

12v 7ah Battery

Solar Charge Controller

XL4015 5A DC Buck Step-down Converter

SparkFun Load Cell Amplifier - HX711

LCD screen 16x2 I2C

PowerBoost 1000 Basic Terminal USB

Load Cell - Red/white/black/green

Arduino UNO

5v Relay

Wiring Details

Solar Panel

12v 7ah Battery

Solar Charge Controller

XL4015 5A DC Buck Step-down Converter

SparkFun Load Cell Amplifier - HX711

LCD screen 16x2 I2C

PowerBoost 1000 Basic Terminal USB

Load Cell - Red/white/black/green

Arduino UNO

5v Relay

Documented Code

/*
 * Solar Powered Charging Station
 * This Arduino sketch controls a solar-powered charging station. When a bottle
 * is placed on the load cell, the system grants 5 minutes of phone charging
 * time. The system uses an LCD to display status messages and a relay to
 * control the charging circuit.
 */

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Pin definitions
const int loadCellDataPin = A1;
const int loadCellClockPin = A0;
const int relayPin = 7;

// Load cell calibration factor
const float calibrationFactor = -7050.0;

// LCD setup
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  // Initialize serial communication
  Serial.begin(9600);

  // Initialize LCD
  lcd.begin();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Charging Station");

  // Initialize relay pin
  pinMode(relayPin, OUTPUT);
  digitalWrite(relayPin, LOW);

  // Initialize load cell
  scale.begin(loadCellDataPin, loadCellClockPin);
  scale.set_scale(calibrationFactor);
  scale.tare();
}

void loop() {
  // Read load cell value
  float weight = scale.get_units(10);

  // Check if a bottle is placed
  if (weight > 50) { // Adjust threshold as needed
    lcd.setCursor(0, 1);
    lcd.print("Charging...");
    digitalWrite(relayPin, HIGH);
    delay(300000); // 5 minutes
    digitalWrite(relayPin, LOW);
    lcd.setCursor(0, 1);
    lcd.print("Done");
    delay(2000);
    lcd.setCursor(0, 1);
    lcd.print("                ");
  }
  delay(1000);
}

This code is responsible for controlling the charging station. It reads the weight from the load cell and, if the weight exceeds a certain threshold, it activates the relay to allow charging. The LCD screen displays the status of the charging session. The code includes setup for the load cell, LCD, and relay, as well as the main loop that checks the load cell and controls the relay.