Components and supplies
Jumper wires (generic)
Breadboard (generic)
Graphic OLED, 128 x 64
Arduino UNO
Adafruit HUZZAH ESP8266 Breakout
Inertial Measurement Unit (IMU) (6 deg of freedom)
Apps and platforms
Arduino IDE
Project description
Code
Code
arduino
Code
1#include <Adafruit_MPU6050.h> 2#include <Adafruit_Sensor.h> 3#include <Wire.h> 4 5Adafruit_MPU6050 mpu; 6 7void setup(void) { 8 Serial.begin(115200); 9 while (!Serial) 10 delay(10); // will pause Zero, Leonardo, etc until serial console opens 11 12 Serial.println("Adafruit MPU6050 test!"); 13 14 // Try to initialize! 15 if (!mpu.begin()) { 16 Serial.println("Failed to find MPU6050 chip"); 17 while (1) { 18 delay(10); 19 } 20 } 21 Serial.println("MPU6050 Found!"); 22 23 mpu.setAccelerometerRange(MPU6050_RANGE_8_G); 24 Serial.print("Accelerometer range set to: "); 25 switch (mpu.getAccelerometerRange()) { 26 case MPU6050_RANGE_2_G: 27 Serial.println("+-2G"); 28 break; 29 case MPU6050_RANGE_4_G: 30 Serial.println("+-4G"); 31 break; 32 case MPU6050_RANGE_8_G: 33 Serial.println("+-8G"); 34 break; 35 case MPU6050_RANGE_16_G: 36 Serial.println("+-16G"); 37 break; 38 } 39 mpu.setGyroRange(MPU6050_RANGE_500_DEG); 40 Serial.print("Gyro range set to: "); 41 switch (mpu.getGyroRange()) { 42 case MPU6050_RANGE_250_DEG: 43 Serial.println("+- 250 deg/s"); 44 break; 45 case MPU6050_RANGE_500_DEG: 46 Serial.println("+- 500 deg/s"); 47 break; 48 case MPU6050_RANGE_1000_DEG: 49 Serial.println("+- 1000 deg/s"); 50 break; 51 case MPU6050_RANGE_2000_DEG: 52 Serial.println("+- 2000 deg/s"); 53 break; 54 } 55 56 mpu.setFilterBandwidth(MPU6050_BAND_5_HZ); 57 Serial.print("Filter bandwidth set to: "); 58 switch (mpu.getFilterBandwidth()) { 59 case MPU6050_BAND_260_HZ: 60 Serial.println("260 Hz"); 61 break; 62 case MPU6050_BAND_184_HZ: 63 Serial.println("184 Hz"); 64 break; 65 case MPU6050_BAND_94_HZ: 66 Serial.println("94 Hz"); 67 break; 68 case MPU6050_BAND_44_HZ: 69 Serial.println("44 Hz"); 70 break; 71 case MPU6050_BAND_21_HZ: 72 Serial.println("21 Hz"); 73 break; 74 case MPU6050_BAND_10_HZ: 75 Serial.println("10 Hz"); 76 break; 77 case MPU6050_BAND_5_HZ: 78 Serial.println("5 Hz"); 79 break; 80 } 81 82 Serial.println(""); 83 delay(100); 84} 85 86void loop() { 87 /* Get new sensor events with the readings */ 88 sensors_event_t a, g, temp; 89 mpu.getEvent(&a, &g, &temp); 90 91 /* Print out the values */ 92 Serial.print("Acceleration X: "); 93 Serial.print(a.acceleration.x); 94 Serial.print(", Y: "); 95 Serial.print(a.acceleration.y); 96 Serial.print(", Z: "); 97 Serial.print(a.acceleration.z); 98 Serial.println(" m/s^2"); 99 100 Serial.print("Rotation X: "); 101 Serial.print(g.gyro.x); 102 Serial.print(", Y: "); 103 Serial.print(g.gyro.y); 104 Serial.print(", Z: "); 105 Serial.print(g.gyro.z); 106 Serial.println(" rad/s"); 107 108 Serial.print("Temperature: "); 109 Serial.print(temp.temperature); 110 Serial.println(" degC"); 111 112 Serial.println(""); 113 delay(500); 114}
Code
arduino
Code
1#include <Adafruit_MPU6050.h> 2#include <Adafruit_Sensor.h> 3#include <Wire.h> 4 5Adafruit_MPU6050 mpu; 6 7void setup(void) { 8 Serial.begin(115200); 9 while (!Serial) 10 delay(10); // will pause Zero, Leonardo, etc until serial console opens 11 12 Serial.println("Adafruit MPU6050 test!"); 13 14 // Try to initialize! 15 if (!mpu.begin()) { 16 Serial.println("Failed to find MPU6050 chip"); 17 while (1) { 18 delay(10); 19 } 20 } 21 Serial.println("MPU6050 Found!"); 22 23 mpu.setAccelerometerRange(MPU6050_RANGE_8_G); 24 Serial.print("Accelerometer range set to: "); 25 switch (mpu.getAccelerometerRange()) { 26 case MPU6050_RANGE_2_G: 27 Serial.println("+-2G"); 28 break; 29 case MPU6050_RANGE_4_G: 30 Serial.println("+-4G"); 31 break; 32 case MPU6050_RANGE_8_G: 33 Serial.println("+-8G"); 34 break; 35 case MPU6050_RANGE_16_G: 36 Serial.println("+-16G"); 37 break; 38 } 39 mpu.setGyroRange(MPU6050_RANGE_500_DEG); 40 Serial.print("Gyro range set to: "); 41 switch (mpu.getGyroRange()) { 42 case MPU6050_RANGE_250_DEG: 43 Serial.println("+- 250 deg/s"); 44 break; 45 case MPU6050_RANGE_500_DEG: 46 Serial.println("+- 500 deg/s"); 47 break; 48 case MPU6050_RANGE_1000_DEG: 49 Serial.println("+- 1000 deg/s"); 50 break; 51 case MPU6050_RANGE_2000_DEG: 52 Serial.println("+- 2000 deg/s"); 53 break; 54 } 55 56 mpu.setFilterBandwidth(MPU6050_BAND_5_HZ); 57 Serial.print("Filter bandwidth set to: "); 58 switch (mpu.getFilterBandwidth()) { 59 case MPU6050_BAND_260_HZ: 60 Serial.println("260 Hz"); 61 break; 62 case MPU6050_BAND_184_HZ: 63 Serial.println("184 Hz"); 64 break; 65 case MPU6050_BAND_94_HZ: 66 Serial.println("94 Hz"); 67 break; 68 case MPU6050_BAND_44_HZ: 69 Serial.println("44 Hz"); 70 break; 71 case MPU6050_BAND_21_HZ: 72 Serial.println("21 Hz"); 73 break; 74 case MPU6050_BAND_10_HZ: 75 Serial.println("10 Hz"); 76 break; 77 case MPU6050_BAND_5_HZ: 78 Serial.println("5 Hz"); 79 break; 80 } 81 82 Serial.println(""); 83 delay(100); 84} 85 86void loop() { 87 /* Get new sensor events with the readings */ 88 sensors_event_t a, g, temp; 89 mpu.getEvent(&a, &g, &temp); 90 91 /* Print out the values */ 92 Serial.print("Acceleration X: "); 93 Serial.print(a.acceleration.x); 94 Serial.print(", Y: "); 95 Serial.print(a.acceleration.y); 96 Serial.print(", Z: "); 97 Serial.print(a.acceleration.z); 98 Serial.println(" m/s^2"); 99 100 Serial.print("Rotation X: "); 101 Serial.print(g.gyro.x); 102 Serial.print(", Y: "); 103 Serial.print(g.gyro.y); 104 Serial.print(", Z: "); 105 Serial.print(g.gyro.z); 106 Serial.println(" rad/s"); 107 108 Serial.print("Temperature: "); 109 Serial.print(temp.temperature); 110 Serial.println(" degC"); 111 112 Serial.println(""); 113 delay(500); 114}
Downloadable files
Schematics
Schematics
Schematics
Comments
Only logged in users can leave comments
mikesprojects0
2 years ago
Good tutorial, was there a part 2 to make it IoT?