Data Acquisition and Processing from MPU 6050 using NORD MCU in MATLAB wirelessly.

Talha K Rajpoot
7 min readJul 21, 2023

--

In the field of biomedical engineering, the integration of motion-tracking sensors and wireless data processing has revolutionized the way human movements are analyzed and understood. This project focuses on utilizing the MPU 6050 sensor in conjunction with a NORD MCU and MATLAB for seamless data acquisition and processing. The MPU 6050’s gyroscope and accelerometer capabilities enable the capture of intricate motion data, while the NORD MCU facilitates wireless communication with MATLAB, allowing for real-time analysis and visualization. Such a powerful combination opens up a plethora of applications in biomedical engineering, ranging from gait analysis, posture monitoring, and rehabilitation assessment to neuromuscular disorder research, fall detection, and sports biomechanics. This introductory study seeks to explore the vast potential of this integrated system in enhancing diagnostics, treatments, and overall quality of life in diverse biomedical scenarios.

Pathway

MPU-6050 Gyroscope and Accelerometer

MPU 6050 sensor module

The MPU-6050 is a module with a 3-axis accelerometer and a 3-axis gyroscope. The gyroscope measures rotational velocity (rad/s) — this is the change of the angular position over time along the X, Y and Z axis (roll, pitch and yaw). This allows us to determine the orientation of an object. The accelerometer measures acceleration (rate of change of the velocity of an object). It senses static forces like gravity (9.8m/s2) or dynamic forces like vibrations or movement.

Schematic diagram ESP866 v3 MPU-6050

Integrating Adafruit and ESP8266WiFi Libraries in Arduino IDE:

To effectively acquire readings from the MPU-6050 sensor in the iarduino IDE, we will be utilizing the Adafruit MPU6050 library. However, before proceeding, it is essential to install the necessary dependencies. Along with the Adafruit Unified Sensor library and the Adafruit Bus IO Library, we also need to install the ESP8266WiFi and WiFiClient libraries to enable wireless communication. These additional libraries will enable seamless integration with the ESP8266WiFi module, allowing wireless data transmission and expanding the possibilities of biomedical engineering applications in remote or real-time monitoring scenarios. By having all the required libraries installed, we can harness the full potential of the MPU-6050 sensor and the ESP8266WiFi module to facilitate data acquisition and processing in a wireless environment.

Connection over WiFi with MATLAB:

To configure your NORD MCU hardware to communicate via WiFi:

· Connect the Nord MCU hardware via USB by choosing the connection type WiFi. Choose the encryption type of your WiFi network, and enter the necessary credentials.

· If you have previously configured your Arduino board using WiFi via the Arduino setup interface, you can select the Retrieve last configuration from Arduino board option, which retrieves the necessary credentials from your previous configuration.

· If you select the Use static IP address box, make sure that you use an available static IP address and that your router allows the usage of static IP

Arduino IDE Code

#include <Wire.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
const IPAddress serverIP(192, 168, 1, 100);
const int MPU_ADDR = 0x68;
const int SDA_PIN = 6;
const int SCL_PIN = 7;
WiFiClient client;
void setup() {
Wire.begin(SDA_PIN, SCL_PIN);
Serial.begin(115200);
delay(100);
Serial.println("Connecting to WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
void loop() {
if (!client.connected()) {
if (client.connect(serverIP, 80)) {
Serial.println("Connected to MATLAB");
collectAndSendSensorData();
}
}
if (millis() > 120000) { // 2 minutes elapsed
client.stop();
Serial.println("Data collection finished");
ESP.deepSleep(0); // Enter deep sleep to save power
}
}
void collectAndSendSensorData() {
while (millis() <= 120000) { // Collect data for 2 minutes
Wire.beginTransmission(MPU_ADDR);
Wire.write(0x3B); // Starting with register 0x3B (ACCEL_XOUT_H)
Wire.endTransmission(false);
Wire.requestFrom(MPU_ADDR, 6); // Removed 'true' as it's not needed for the MPU6050
int16_t accelX = (Wire.read() << 8 | Wire.read());
int16_t accelY = (Wire.read() << 8 | Wire.read());
int16_t accelZ = (Wire.read() << 8 | Wire.read());
// Send the sensor data to MATLAB over WiFi
String dataPacket = String(accelX) + "," + String(accelY) + "," + String(accelZ) + "\n";
client.print(dataPacket);
delay(100); // Adjust this delay based on your requirements
}
}

The line below should contain the IP address of the computer or laptop connected to same WiFi network as the NORD MCU

const IPAddress serverIP(192, 168, 1, 100);

MATLAB CODE:

% Set the IP address and port of your ESP8266 server
serverIP = '192.168.89.203';
serverPort = 80;
% Connect to ESP8266 server
tcpClient = tcpclient(serverIP, serverPort, 'Timeout', 30);
configureCallback(tcpClient, "terminator", "@LF");
% Read data for 2 minutes
data = [];
timeLimit = 2 * 60; % 2 minutes
tic;
while toc < timeLimit
rawData = readline(tcpClient);
if isempty(rawData)
continue
end
dataArray = str2double(strsplit(rawData, ','));
if length(dataArray) == 3
data(end+1, :) = dataArray;
end
end
% Close the connection
fclose(tcpClient);
% Extract X, Y, Z axis data
X = data(:, 1);
Y = data(:, 2);
Z = data(:, 3);

The code line below should contain the IP address of the NORD MCU which can be obtained by pressing the reset button on it once after the NORD MCU has successfully connected to the network.

serverIP = '192.168.89.203';
serverPort = 80;

The server port is 80 and it is defined in Arduino IDE code

if (client.connect(serverIP, 80)) {
Serial.println("Connected to MATLAB");

OUTPUT WAVES FORMS:

The project of acquiring and processing data from an MPU 6050 sensor using a NORD MCU in MATLAB wirelessly has several potential applications in the field of biomedical engineering. The MPU 6050 is a motion-tracking device that combines a gyroscope and an accelerometer, making it useful for capturing and analyzing human movements. When integrated with a NORD MCU and MATLAB for wireless data transfer and processing, it can have the following applications in biomedical engineering:

  1. Gait Analysis: Gait analysis is essential for understanding human locomotion patterns. The MPU 6050 can be attached to different parts of the body to capture the movement of limbs during walking, running, or other activities. Biomedical engineers can use this data to assess gait abnormalities, track rehabilitation progress, or design assistive devices for individuals with mobility impairments.
  2. Posture Monitoring: Monitoring body posture is crucial in various medical applications, such as assessing spinal alignment or studying ergonomics. The MPU 6050 can provide real-time data on body orientation, which can be used to detect improper postures and suggest corrective measures.
  3. Rehabilitation and Physical Therapy: In the rehabilitation process, motion tracking using MPU 6050 can provide objective data to evaluate patient progress, adherence to exercises, and the effectiveness of specific therapeutic interventions. It enables healthcare professionals to customize treatment plans and make data-driven decisions.
  4. Neuromuscular Disorder Research: For conditions like Parkinson’s disease, muscular dystrophy, or cerebral palsy, analyzing movement patterns can provide valuable insights into the progression of the disease and the impact of treatments.
  5. Fall Detection and Prevention: Elderly populations are prone to falls, which can have severe consequences. Using the MPU 6050 to monitor body movements, the system can detect sudden changes or loss of balance and trigger alerts or preventive measures to reduce the risk of falling.
  6. Sports Biomechanics: Biomedical engineers can apply this system to analyze the biomechanics of athletes during training and competition. By understanding the forces acting on various body parts, coaches and athletes can optimize techniques and reduce the risk of injuries.
  7. Prosthetic Design and Control: For individuals with limb loss, the MPU 6050 can be utilized to gather real-time motion data, which can aid in the development of more intuitive and responsive prosthetic limbs.
  8. Virtual Reality and Motion Tracking: In the field of virtual reality, motion tracking is crucial for providing a realistic and immersive experience. The MPU 6050 can contribute to real-time tracking of body movements in virtual environments, enhancing user interaction.
  9. Sleep Monitoring: The MPU 6050 can be used to analyze sleep patterns and disturbances, providing insights into sleep quality and disorders.

Overall, the combination of MPU 6050 with a NORD MCU and MATLAB for wireless data acquisition and processing offers a versatile platform for numerous biomedical engineering applications, leading to better diagnostics, treatments, and quality of life for patients and individuals in various settings.

IF YOU FACE ANY PROBELMS REGARDING THIS PROJECT, PLEASE COMMENT AND I WILL TRY MY BEST TO HELP YOU OUT!

--

--