← Back to Personal Projects

Introduction

This collection showcases various Arduino-based robotics and electronics projects developed over time, ranging from simple LED control to complex robotic arms and remote-controlled vehicles. These projects demonstrate practical applications of microcontroller programming, motor control, sensor integration, and wireless communication using Arduino platforms.

Project Overview

The projects span multiple domains including:

Key Technologies

Featured Projects

1. Bluetooth-Controlled Remote Car

Robotic Arm Model

Project Description

Development of a remote-controlled vehicle controlled via Bluetooth from a smartphone. The car features:

Hardware Components

Components List:
- Arduino Uno microcontroller
- L298N motor driver module
- 4× DC motors (6V)
- HC-05 Bluetooth module
- HC-SR04 ultrasonic sensor
- 2× LED headlights
- 7.4V Li-Po battery
- Chassis and wheels

Software Implementation

Motor Control Functions:

// Forward motion
void avancer() {
    digitalWrite(enableBridge1, HIGH);
    digitalWrite(MotorForward1, HIGH);
    digitalWrite(MotorReverse1, LOW);
    digitalWrite(enableBridge2, HIGH);
    digitalWrite(MotorForward2, HIGH);
    digitalWrite(MotorReverse2, LOW);
}

// Reverse motion
void reculer() {
    digitalWrite(enableBridge1, HIGH);
    digitalWrite(MotorForward1, LOW);
    digitalWrite(MotorReverse1, HIGH);
    digitalWrite(enableBridge2, HIGH);
    digitalWrite(MotorForward2, LOW);
    digitalWrite(MotorReverse2, HIGH);
}

// Turn right
void droite() {
    digitalWrite(enableBridge2, HIGH);
    digitalWrite(MotorForward2, HIGH);
    digitalWrite(MotorReverse2, LOW);
}

// Turn left
void gauche() {
    digitalWrite(enableBridge1, HIGH);
    digitalWrite(MotorForward1, HIGH);
    digitalWrite(MotorReverse1, LOW);
}

// Stop all motors
void stopp() {
    digitalWrite(enableBridge1, LOW);
    digitalWrite(enableBridge2, LOW);
}

Bluetooth Command Processing:

void loop() {
    if (Serial.available() > 0) {
        Bluetooth = Serial.read();
        
        switch(Bluetooth) {
            case 'F': avancer(); break;     // Forward
            case 'B': reculer(); break;     // Backward
            case 'R': droite(); break;      // Right
            case 'L': gauche(); break;      // Left
            case 'S': stopp(); break;       // Stop
            case 'W': digitalWrite(phare1, HIGH); break;  // Lights ON
            case 'w': digitalWrite(phare1, LOW); break;   // Lights OFF
        }
    }
}

Features Implemented

2. Robotic Arm with Servo Control

Robotic Arm Design Small Robotic Arm

Project Description

Design and development of 3D-printed robotic arms with multiple degrees of freedom, controlled by servo motors and Arduino. The project included:

Mechanical Design

The robotic arms were designed with:

Servo Control System

#include <Servo.h>

Servo servoBase;
Servo servoShoulder;
Servo servoElbow;
Servo servoWrist;
Servo servoGripper;

void setup() {
    servoBase.attach(3);
    servoShoulder.attach(5);
    servoElbow.attach(6);
    servoWrist.attach(9);
    servoGripper.attach(10);
    
    // Initialize to neutral position
    servoBase.write(90);
    servoShoulder.write(90);
    servoElbow.write(90);
    servoWrist.write(90);
    servoGripper.write(45);
}

void moveToPosition(int base, int shoulder, int elbow, int wrist, int grip) {
    servoBase.write(base);
    delay(15);
    servoShoulder.write(shoulder);
    delay(15);
    servoElbow.write(elbow);
    delay(15);
    servoWrist.write(wrist);
    delay(15);
    servoGripper.write(grip);
}

Applications

3. Sensor Integration Modules

Ultrasonic Distance Measurement

const int pinTrig = 6;
const int pinEcho = 7;
long temps;
float distance;

void setup() {
    pinMode(pinTrig, OUTPUT);
    pinMode(pinEcho, INPUT);
    digitalWrite(pinTrig, LOW);
    Serial.begin(9600);
}

void mesureDistance() {
    digitalWrite(pinTrig, HIGH);
    delayMicroseconds(10);
    digitalWrite(pinTrig, LOW);
    
    temps = pulseIn(pinEcho, HIGH);
    distance = temps * 0.034 / 2;  // Speed of sound: 340 m/s
    
    Serial.print("Distance: ");
    Serial.print(distance);
    Serial.println(" cm");
}

Infrared Sensor Integration

Vibration Sensor

4. ESP32-CAM Streaming Project

Project Description

Implementation of a WiFi-enabled camera system using the ESP32-CAM module:

Features

5. LCD Display Integration

16×2 LCD with I2C Interface

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);  // Address 0x27, 16 columns, 2 rows

void setup() {
    lcd.init();
    lcd.backlight();
    lcd.setCursor(0, 0);
    lcd.print("Arduino Project");
    lcd.setCursor(0, 1);
    lcd.print("Ready!");
}

void displayMessage(String line1, String line2) {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(line1);
    lcd.setCursor(0, 1);
    lcd.print(line2);
}

Applications

Technical Challenges and Solutions

Challenge 1: Motor Control Precision

Problem: Inconsistent motor speeds due to battery voltage variations.

Solution: Implemented PWM speed control with voltage monitoring and compensation:

int compensatedSpeed(int desiredSpeed, float batteryVoltage) {
    float nominalVoltage = 7.4;
    int compensated = desiredSpeed * (nominalVoltage / batteryVoltage);
    return constrain(compensated, 0, 255);
}

Challenge 2: Bluetooth Communication Reliability

Problem: Command loss and delayed responses in Bluetooth communication.

Solution:

Challenge 3: Servo Jitter and Noise

Problem: Servo motors exhibited jittering during hold position.

Solution:

Challenge 4: Power Management

Problem: Battery drain and insufficient current for all motors simultaneously.

Solution:

Development Tools and Workflow

Software Tools

Hardware Tools

Development Process

  1. Concept and planning: Define project requirements
  2. Circuit design: Create schematic and breadboard prototype
  3. Code development: Write and test firmware incrementally
  4. Integration testing: Combine hardware and software
  5. Mechanical assembly: 3D print and assemble parts
  6. System testing: Validate all functions
  7. Optimization: Improve performance and reliability
  8. Documentation: Record specifications and usage

Lessons Learned

Technical Skills Developed

Best Practices Established

Areas for Future Improvement

Future Project Ideas

Short-term Goals

Long-term Aspirations

Conclusion

These Arduino projects represent a journey from basic electronics to complex robotic systems. Each project provided valuable hands-on experience in embedded programming, hardware integration, and system design. The iterative development process, troubleshooting challenges, and continuous learning have built a strong foundation in robotics and electronics.

The skills acquired through these projects are directly applicable to professional embedded systems development, IoT devices, and autonomous robotics. Future projects will build upon this foundation, incorporating more advanced sensors, machine learning algorithms, and sophisticated mechanical designs.