White board eraser control using remote.
Creating a whiteboard eraser control using a remote can be an interesting project. It involves integrating hardware components such as motors, a remote control, and possibly an Arduino for controlling the system. Here's a high-level outline of how you could approach this project:
Components Needed:
- Arduino (e.g., Uno or Nano)
- DC Motor or Stepper Motor (for moving the eraser)
- Motor Driver (e.g., L298N or ULN2003 for stepper motor)
- IR Receiver Module (for detecting signals from the remote control)
- IR Remote Control (any standard TV remote can work)
- Whiteboard Eraser (or a custom eraser attachment)
- Power Supply (for the motor and Arduino)
- Breadboard and Connecting Wires
Steps to Implement:
Set Up the Motor:
- Attach the motor to the whiteboard eraser or a mechanism that will move the eraser.
- Use the motor driver to connect the motor to the Arduino. The motor driver is necessary because the Arduino can't supply enough current to drive the motor directly.
Connect the IR Receiver:
- Connect the IR receiver module to the Arduino. Typically, it will have three pins: VCC, GND, and Signal (connected to a digital pin on the Arduino).
Program the Arduino:
- Write a code that allows the Arduino to interpret the signals from the IR remote. You can use the
IRremotelibrary in Arduino to decode the signals. - Program the motor to move in response to specific IR remote buttons. For example, one button could move the eraser to the left, another to the right, and another could stop it.
- Write a code that allows the Arduino to interpret the signals from the IR remote. You can use the
Testing and Calibration:
- Test the system to ensure that the motor moves the eraser as expected when you press the corresponding buttons on the remote.
- Calibrate the movement so that it effectively erases the board.
Sample Arduino Code:
Here is a basic example of how you might code this:
cpp#include <IRremote.h>
int motorPin1 = 8; // Motor driver pin 1
int motorPin2 = 9; // Motor driver pin 2
int irPin = 11; // IR receiver pin
IRrecv irrecv(irPin);
decode_results results;
void setup() {
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
irrecv.enableIRIn();
Serial.begin(9600);
}
void loop() {
if (irrecv.decode(&results)) {
unsigned long value = results.value;
Serial.println(value);
// Adjust the values according to your remote's button codes
if (value == 0xFF629D) { // Example: Button to move left
moveLeft();
} else if (value == 0xFF22DD) { // Example: Button to move right
moveRight();
} else if (value == 0xFFC23D) { // Example: Button to stop
stopMotor();
}
irrecv.resume();
}
}
void moveLeft() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
}
void moveRight() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
}
void stopMotor() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
}
Tips:
- Ensure the motor is powerful enough to move the eraser across the board.
- You might need to create a track or guiding mechanism to ensure the eraser moves smoothly across the board.
- You can add more features like adjusting the speed of the motor, adding an automatic return function, or even creating a pattern for erasing.
Would you like more detailed guidance on any specific part of this project?
CIRCUIT DIAGRAM
ARDI (ARDUINO UNO R3) Control unit.
TSOP 1838 The TSOP1838 is a miniature IR receiver IC form the TSOP18xx series. This particular model TSOP1838 will respond to 38kHz IR signals from remote control devices.
D5 (LED) for showing operating status.
D6 (LED) for showing power status in ARDUINO.
D3 & D4 (LED) for showing power status in motor driver ic.
D2 (LED) for showing power status in TSOP 1838
R2, R3, R4, R5, R6 (RESISTOR 1K) for LED protection from burn.
R1 (1K) D1 (DIODE 1N4007) ,BC 547 is a NPN transistor, used to drive the electromagnetic relay.
DC MOTOR should be gear motor which have 12V
If you feel any technical difficulty, then you may CONTACT ME,
//SOURCE CODE WWW.ONLINESOLN.COM //
#include <IRremote.h>
int RECV_PIN = 3;
IRrecv irrecv(RECV_PIN);
decode_results results;
//pins for LEDs
int power_pin = A3;
int operating_pin = A2;
int lmt_right = 9;
int lmt_left = 5;
//pins for motor_driver
int mt1 = 10;
int mt2 = 11;
//pins for Relay
int l1 = 12;
void setup() {
// put your setup code here, to run once:
Serial.println("Enabling IRin");
irrecv.enableIRIn(); // Start the receiver
Serial.println("Enabled IRin");
pinMode(power_pin, OUTPUT);
pinMode(operating_pin, OUTPUT);
pinMode(mt1, OUTPUT);
pinMode(mt2, OUTPUT);
pinMode(l1, OUTPUT);
pinMode(lmt_right, INPUT);
pinMode(lmt_left, INPUT);
delay(1000);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.begin(9600);
Control_duster(); //control duster with button and remote
}
//METHOD TO RUN THE DUST BY BUTTON
void Control_duster(){
String result_2 = "";
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
result_2 = (String)results.value;
Serial.print("RESULT 2: ");
Serial.println(result_2);
irrecv.resume(); // Receive the next value
delay(200);
}
if(result_2=="16769565"){
result_2 = "";
delay(500);
while(digitalRead(lmt_right)==LOW){
Serial.println("Forward run");
digitalWrite(mt1, LOW);
digitalWrite(mt2, HIGH);
digitalWrite(l1, LOW);
delay(1000);
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
result_2 = (String)results.value;
Serial.print("RESULT 2: ");
Serial.println(result_2);
irrecv.resume(); // Receive the next value
delay(200);
}
if(result_2=="16753245"){
delay(500);
Serial.println("Stop imeadiately...");
result_2 = "";
break;
}
}
digitalWrite(mt1, LOW);
digitalWrite(mt2, LOW);
digitalWrite(l1, HIGH);
delay(500);
while(digitalRead(lmt_left)==LOW){
Serial.println("Reverse run");
digitalWrite(mt1, HIGH);
digitalWrite(mt2, LOW);
digitalWrite(l1, HIGH);
delay(1000);
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
result_2 = (String)results.value;
Serial.print("RESULT 2: ");
Serial.println(result_2);
irrecv.resume(); // Receive the next value
delay(100);
}
if(result_2=="16736925"){
delay(500);
Serial.println("Stop imeadiately...");
result_2 = "";
break;
}
}
digitalWrite(mt1, HIGH);
digitalWrite(mt2, HIGH);
digitalWrite(l1, HIGH);
digitalWrite(operating_pin, LOW);
delay(500);
}
}

0 Comments