Arduino TutorialsIoT HardwaresIoT Tutorials

Make Your Own Air Mouse with IndusBoard Coin

Ever imagined controlling your computer or smart TV with just a wave of your hand? With an air mouse, you can do exactly that. In this project, we’ll show you how to create your own air mouse using the IndusBoard Coin—a tiny yet powerful development board loaded with sensors.

What is an Air Mouse?

An air mouse is a device that allows you to control the cursor on a screen by moving the device in the air. It’s perfect for presentations, gaming, or just a fun DIY project. The key component in this setup is the accelerometer sensor, which detects the orientation and movement of the device.

Components Required

Here’s what you’ll need to build your air mouse:

S. No. Name Description Quantity
1 IndusBoard Coin 3cm sized dev board 1
2 Device (laptop) A Laptop or other mouse-operated device 1
3 USB cable To connect IndusBoard to the device 1
4 Push button For left and right click 2
5 Jumper wires To connect push buttons to the board 3

How It Works

The IndusBoard Coin comes equipped with various built-in sensors, including an accelerometer and a magnetometer. For this project, we’ll be using the accelerometer to detect the board’s orientation and translate it into mouse movements. Additionally, two push buttons will be used to simulate left and right mouse clicks.

Arduino Code

Below is the Arduino code that will bring your air mouse to life:

#include <LSM303AGR_ACC_Sensor.h>
#include <Wire.h>
#include <MPU6050.h>
#include "USB.h"
#include "USBHIDMouse.h"

USBHIDMouse Mouse;
MPU6050 mpu();

#if defined(ARDUINO_SAM_DUE)
#define DEV_I2C Wire1 //Define which I2C bus is used. Wire1 for the Arduino Due
#define SerialPort Serial
#else
#define DEV_I2C Wire //Or Wire
#define SerialPort Serial
#endif

LSM303AGR_ACC_Sensor Acc(&DEV_I2C);

const int leftButtonPin = 2; // Pin connected to the left button
const int rightButtonPin = 3; // Pin connected to the right button

void setup() {
Serial.begin(115200);
Mouse.begin();
USB.begin();
Wire.begin();

DEV_I2C.begin();
Acc.begin();
Acc.Enable();

pinMode(leftButtonPin, INPUT_PULLUP);
pinMode(rightButtonPin, INPUT_PULLUP);
}

void loop() {
int32_t accelerometer[3];
Acc.GetAxes(accelerometer);

float accelX = accelerometer[0]; // X-axis
float accelY = accelerometer[1]; // Y-axis

float mouseX = (float)(accelX * 0.01); // Adjust scaling factor as needed
float mouseY = (float)(accelY * 0.01); // Adjust scaling factor as needed
Mouse.move(mouseX, mouseY);

int leftButtonState = digitalRead(leftButtonPin);
int rightButtonState = digitalRead(rightButtonPin);

if (leftButtonState == LOW) {
Mouse.click(MOUSE_LEFT); // Send left click
delay(50); // Debounce delay
}
if (rightButtonState == LOW) {
Mouse.click(MOUSE_RIGHT); // Send right click
delay(50); // Debounce delay
}

if (abs(mouseX) > 2 || abs(mouseY) > 2) { // Adjust threshold as needed
Mouse.move(mouseX, mouseY);
}
delay(20); // for smooth movement
}

Schematic and Real Implementation

Schematic IndusBoard
Schematic IndusBoard

To bring everything together, follow the schematic below to connect your push buttons to the IndusBoard Coin:

  1. Connect the left button to pin 2 of the IndusBoard.
  2. Connect the right button to pin 3.
  3. Use the jumper wires to make the connections, ensuring everything is securely attached.

Once your hardware is set up, upload the code to your IndusBoard, connect it to your computer via USB, and watch as your hand movements control the cursor on the screen!

Conclusion

In conclusion, Building your own air mouse is not only a fun project but also a practical tool that can be used in a variety of settings. With the IndusBoard Coin and some basic components, you can create a device that’s both innovative and useful. Give it a try and see how you can take control of your devices with just a wave of your hand!

Anshul Pal

Hey there, I'm Anshul Pal, a tech blogger and Computer Science graduate. I'm passionate about exploring tech-related topics and sharing the knowledge I've acquired. With two years of industry expertise in blogging and content writing. Thanks for reading my blog – Happy Learning!

Anshul Pal has 196 posts and counting. See all posts by Anshul Pal

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.