Automatic
Car Parking
Solar Shed System
A self-powered smart parking system with IR sensor detection, servo-controlled gate, real-time LCD slot display, and a complete solar-to-battery power chain — no external electricity needed.
What Makes This Special
A complete smart parking solution that runs entirely off solar energy — no wiring to the grid, no electricity bills, 24/7 operation thanks to battery backup.
Solar Powered
4× 6V panels charge the entire system independently.
Auto Gate
Servo-controlled barrier opens and closes automatically.
Live Display
LCD shows real-time available slots and status messages.
Weatherproof
3D printed waterproof structure with rain drainage design.
BMS Protected
TP5100 + 2S BMS for safe, long-life battery charging.
24/7 Operation
Battery backup ensures function even without sunlight.
How the System Works
IR1 detects entry, IR2 detects exit. Arduino checks slot availability, controls the servo gate, updates the LCD, and manages the slot counter. Solar panels continuously charge the battery through TP5100 and BMS.
Detect
IR1 (entry) or IR2 (exit) sensor triggers when a vehicle crosses the beam.
Check
Arduino checks slot count. If full, shows "SORRY — Parking Full" on LCD.
Open Gate
Servo rotates to 120°. Waits for vehicle to pass through second sensor.
Close & Update
After 2 s delay, gate closes to 10°. LCD updates available slot count.
Solar Power Chain:
Components Required
Eleven components for a complete, self-powered automated parking system.
| Component | Notes | Buy |
|---|---|---|
| Arduino UNO | Main controller | Buy Now |
| IR Sensors (×2) | Entry IR1→D3, Exit IR2→D2 | Buy Now |
| Servo Motor (SG90) | Gate control, pin D13 | Buy Now |
| LCD 16×2 with I²C | SDA→A4, SCL→A5 | Buy Now |
| 6V Solar Panels (×4) | 2 parallel pairs in series = 12V | Buy Now |
| TP5100 Module | 12V → 8.4V charger | Buy Now |
| 2S 20A BMS | Battery protection | Buy Now |
| 7.4V Li-ion Battery | 2S, powers system | Buy Now |
| 25V 2200µF Capacitor | Smooths panel voltage spikes | Buy Now |
| Breadboard | Power distribution | Buy Now |
| Jumper Wires | M-M and M-F set | Buy Now |
3D Model Files
Download the waterproof solar shed structure, gate mechanism mounts, and sensor housings. Designed in Tinkercad with rain drainage channels built in.
Note: The solar shed structure was designed in Tinkercad and printed using JLC3DP's 3D printing services. The structure includes a waterproof rain drainage channel in the roof design.
Pin Connections
All connections in one place. IR sensors on D2/D3, servo on D13, LCD via I²C on A4/A5. Power flows from solar panels through the TP5100 and BMS to the battery and Arduino.
| Component | Component Pin | Arduino / Destination | Notes |
|---|---|---|---|
| IR Sensor 1 (Entry) | OUT | D3 | LOW when car detected |
| IR Sensor 2 (Exit) | OUT | D2 | LOW when car detected |
| Both IR Sensors | VCC | 5V | Arduino 5V rail |
| Both IR Sensors | GND | GND | Common ground |
| SG90 Servo | Signal (Orange) | D13 | 10° = closed, 120° = open |
| SG90 Servo | VCC (Red) | 5V | Arduino 5V or battery direct |
| SG90 Servo | GND (Brown) | GND | Common ground |
| LCD I²C Module | SDA | A4 | I²C data, addr 0x27 |
| LCD I²C Module | SCL | A5 | I²C clock |
| LCD I²C Module | VCC | 5V | Arduino 5V rail |
| LCD I²C Module | GND | GND | Common ground |
| 6V Panels (pair 1) | +/– parallel | 6V node A | Panel 1 + Panel 2 in parallel |
| 6V Panels (pair 2) | +/– parallel | 6V node B | Panel 3 + Panel 4 in parallel |
| Both pairs | Node A+ → Node B– | 12V series | → TP5100 IN+ |
| 25V 2200µF Cap | +/– | TP5100 IN+/IN– | Across input, smooths spikes |
| TP5100 | OUT+ (8.4V) | BMS B+ | Charging input to BMS |
| TP5100 | OUT– | GND (common) | Common ground |
| BMS | P+ output | Arduino VIN | 7.4V powers Arduino |
| BMS | P– output | GND (common) | Common ground rail |
TP5100 indicator: Red LED = charging in progress. Blue LED = battery fully charged. If no LED lights, check the solar panel series/parallel connections and verify 12V at TP5100 input with a multimeter.
Assembly Steps
Upload the Code First
Open Arduino IDE, paste the code, select Arduino UNO board and correct COM port, then upload before any wiring.
3D Print the Structure
Print all STL files. Use JLC3DP for professional waterproof quality. The roof has built-in drainage channels.
Wire Electronics
Follow the pin table above. Connect IR sensors, servo, and LCD to Arduino. Double-check I²C address (0x27 or try 0x3F).
Solar Panel Configuration
Pair 1: panels 1+2 in parallel. Pair 2: panels 3+4 in parallel. Connect both pairs in series → 12V to TP5100 input.
Capacitor Placement
Place the 25V 2200µF capacitor across TP5100 IN+ and IN– to smooth voltage spikes from the solar panels.
Adjust IR Sensors
Use a small screwdriver to adjust the sensitivity potentiometer on each IR sensor. Test with your hand before mounting.
Mount & Test
Mount all components in the enclosure. Power on and verify: LCD welcome message, gate movement, IR detection, slot counter update.
Verify Battery Charging
Place in sunlight. Red LED on TP5100 = charging. Monitor voltage at BMS output. System ready for 24/7 outdoor use.
Circuit & Assembly Video
Complete wiring diagram, solar panel configuration, IR sensor adjustment, and live parking gate demonstration.
Watch for the solar wiring sequence — the parallel-then-series panel configuration is shown clearly. Also demonstrates gate timing and LCD message flow.
Arduino Code
Change Slot = 4 and MaxSlots = 4 to match your physical parking bay count. Gate angles: 10° = closed, 120° = open.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#define servoPin 13
Servo myservo;
LiquidCrystal_I2C lcd(0x27, 16, 2); // try 0x3F if blank
int IR1 = 3; // Entry sensor
int IR2 = 2; // Exit sensor
int Slot = 4; // ← change to match your parking bays
const int MaxSlots = 4;
bool carEntering = false;
bool carExiting = false;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(IR1, INPUT);
pinMode(IR2, INPUT);
myservo.attach(servoPin);
myservo.write(10); // Closed position
lcd.setCursor(0, 0);
lcd.print(" ARDUINO ");
lcd.setCursor(0, 1);
lcd.print(" PARKING SYSTEM ");
delay(3000);
lcd.clear();
}
void loop() {
// ── Entry detection (IR1 triggered) ──────────────────
if (digitalRead(IR1) == LOW && !carEntering && !carExiting) {
carEntering = true;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Car Detected!");
delay(1000);
if (Slot > 0) {
myservo.write(120); // Open gate
Slot--;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Gate Opened!");
delay(2000);
while (digitalRead(IR2) == HIGH) delay(100); // Wait for IR2 trigger
while (digitalRead(IR2) == LOW) delay(100); // Wait for IR2 clear
delay(2000);
myservo.write(10); // Close gate
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Gate Closed!");
delay(2000);
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" SORRY :( ");
lcd.setCursor(0, 1);
lcd.print(" Parking Full ");
delay(3000);
lcd.clear();
}
carEntering = false;
}
// ── Exit detection (IR2 triggered) ───────────────────
if (digitalRead(IR2) == LOW && !carExiting && !carEntering) {
if (Slot == MaxSlots) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" No Cars Left! ");
delay(3000);
lcd.clear();
} else {
carExiting = true;
myservo.write(120); // Open gate
if (Slot < MaxSlots) Slot++;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Car Exiting...");
delay(2000);
while (digitalRead(IR1) == HIGH) delay(100);
while (digitalRead(IR1) == LOW) delay(100);
delay(2000);
myservo.write(10); // Close gate
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Gate Closed!");
delay(2000);
carExiting = false;
}
}
// ── Idle display ─────────────────────────────────────
lcd.setCursor(0, 0);
lcd.print(" WELCOME! ");
lcd.setCursor(0, 1);
lcd.print("Slot Left: ");
lcd.print(Slot);
}
setup()
Initialises LCD, servo at 10° (closed), IR pin modes. Displays "ARDUINO PARKING SYSTEM" for 3 s on boot.
Entry Logic
IR1 LOW triggers entry. If Slot > 0, opens gate, decrements count, waits for IR2 to confirm car has passed.
Exit Logic
IR2 LOW triggers exit. If slots aren't full, opens gate, increments count, waits for IR1 to confirm car cleared.
Idle Display
When no car is detected, LCD shows "WELCOME!" and current available slot count continuously.
Common Issues & Fixes
Quick fixes for common problems:
- Gate not opening — Check servo signal wire on D13 and power connections
- IR sensors not detecting — Adjust sensitivity pot with a small screwdriver
- Solar not charging — Verify parallel-then-series panel wiring; check 12V at TP5100 IN
- LCD blank — Try I²C address 0x3F instead of 0x27 in the code
- Battery not holding charge — Check BMS cell wiring; verify TP5100 output is 8.4V
Bro please make the 3d files for free
ReplyDeleteMan it's 1.89, come on! You don't even buy him a coffee for his work you are just getting and using for your project or anything. Are you for real?
ReplyDelete