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

Arduino UNO with MPU-6050 Sensor Array and Multiplexer Control Circuit

View and Edit Project In Cirkit DesignerImage of Arduino UNO with MPU-6050 Sensor Array and Multiplexer Control Circuit

Circuit Documentation

Summary

The circuit in question is designed around an Arduino UNO microcontroller, which serves as the central processing unit. The circuit includes multiple MPU-6050 sensors, which are 6-axis motion tracking devices that combine a 3-axis gyroscope and a 3-axis accelerometer. The circuit also features an HCF4052BE analog multiplexer/demultiplexer for signal routing, resistors for current limiting and voltage division, NPN transistors for switching, and LEDs for visual indication. The Arduino UNO is programmed to interface with the sensors and communicate with external devices via Bluetooth and Wi-Fi using software serial communication.

Component List

Microcontroller

Sensors

Multiplexer

Resistors

Transistors

LEDs

Comments

Wiring Details

Arduino UNO

MPU-6050 Sensors

HCF4052BE ANALOG MULTIPLEXER/DEMULTIPLEXER

Resistors

NPN Transistor (CBE)

LEDs

Documented Code

#include <Wire.h>
#include <Adafruit_MPR121.h>
#include <Adafruit_ADXL345_U.h>
#include <MPU6050.h>
#include <SoftwareSerial.h>

// Initialize Sensors
Adafruit_MPR121 capSensor = Adafruit_MPR121();
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345);
MPU6050 mpu;

// Pins for Bluetooth and Wi-Fi modules
const int BT_TX = 10;  // Arduino TX to HC-05 RX
const int BT_RX = 11;  // Arduino RX to HC-05 TX
const int WIFI_TX = 8; // Arduino TX to ESP8266 RX
const int WIFI_RX = 9; // Arduino RX to ESP8266 TX

// SoftwareSerial for Bluetooth and Wi-Fi modules
SoftwareSerial BTSerial(BT_TX, BT_RX);
SoftwareSerial WifiSerial(WIFI_TX, WIFI_RX);

// Microphone Pin
const int micPin = A0;

void setup() {
  Serial.begin(9600);

  // Initialize Bluetooth and Wi-Fi serial communication
  BTSerial.begin(9600);
  WifiSerial.begin(9600);

  // Initialize MPR121 capacitive sensor
  if (!capSensor.begin(0x5A)) {
    Serial.println("MPR121 not found, check wiring?");
    while (1);
  }
  
  // Initialize ADXL345 accelerometer
  if (!accel.begin()) {
    Serial.println("ADXL345 not found, check wiring?");
    while (1);
  }
  
  // Initialize MPU6050 gyroscope
  Wire.begin();
  mpu.initialize();
  if (!mpu.testConnection()) {
    Serial.println("MPU6050 not found, check wiring?");
    while (1);
  }

  // Setup microphone pin
  pinMode(micPin, INPUT);
}

void loop() {
  // Read capacitive sensor
  uint16_t touch = capSensor.touched();
  for (uint8_t i = 0; i < 12; i++) {
    if (touch & (1 << i)) {
      Serial.print("Capacitive Sensor "); Serial.print(i); Serial.println(" touched");
      BTSerial.print("Sensor "); BTSerial.print(i); BTSerial.println(" touched");
    }
  }

  // Read accelerometer data
  sensors_event_t event;
  accel.getEvent(&event);
  Serial.print("Accel X: "); Serial.print(event.acceleration.x); 
  Serial.print(" Y: "); Serial.print(event.acceleration.y); 
  Serial.print(" Z: "); Serial.println(event.acceleration.z);

  // Read gyroscope data
  int16_t gx, gy, gz;
  mpu.getRotation(&gx, &gy, &gz);
  Serial.print("Gyro X: "); Serial.print(gx); 
  Serial.print(" Y: "); Serial.print(gy); 
  Serial.print(" Z: "); Serial.println(gz);

  // Read microphone
  int micValue = analogRead(micPin);
  Serial.print("Mic Value: "); Serial.println(micValue);

  // Transmit data via Bluetooth and Wi-Fi
  BTSerial.print("Accel X: "); BTSerial.print(event.acceleration.x); 
  BTSerial.print(" Y: "); BTSerial.print(event.acceleration.y); 
  BTSerial.print(" Z: "); BTSerial.println(event.acceleration.z);

  WifiSerial.print("Gyro X: "); WifiSerial.print(gx); 
  WifiSerial.print(" Y: "); WifiSerial.print(gy); 
  WifiSerial.print(" Z: "); WifiSerial.println(gz);

  // Small delay
  delay(500);
}

This code is designed to run on the Arduino UNO microcontroller. It initializes and reads data from capacitive, accelerometer, and gyroscope sensors, and transmits the data via Bluetooth and Wi-Fi using software serial communication. It also includes a microphone input for additional data acquisition.