├── LICENSE ├── README.md ├── code ├── MATRIX DISPLAY_RECIVER │ ├── MATRIX DISPLAY_RECIVER.ino │ └── PixelToMatrix.exe ├── SERVO_RECIVER │ └── SERVO_RECIVER.ino └── TRASMITTER │ └── TRASMITTER.ino └── stl ├── BODY.stl ├── COVER1.stl ├── COVER2.stl ├── Cover.stl ├── FINGER.stl ├── INDEX1.stl ├── INDEX2.stl └── potentiometer.stl /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 CiferTech 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | logo 4 |

IANA

5 | 6 |

7 | A Game-Inspired Gadget for Remote Control of Devices 8 |

9 | 10 | 11 | 12 | 13 | 14 | cifertech - IANA 15 | stars - IANA 16 | forks - IANA 17 | 18 |

19 | TWITTER 20 | · 21 | INSTAGRAM 22 | · 23 | YOUTUBE 24 | · 25 | WEBSITE 26 |

27 |
28 | 29 |
30 | 31 | 32 | # :notebook_with_decorative_cover: Table of Contents 33 | 34 | - [About the Project](#star2-about-the-project) 35 | * [Pictures](#camera-Pictures) 36 | * [Features](#dart-features) 37 | - [Getting Started](#toolbox-getting-started) 38 | * [Schematic](#electric_plug-Schematic) 39 | * [Installation](#gear-installation) 40 | - [Usage](#eyes-usage) 41 | - [License](#warning-license) 42 | - [Contact](#handshake-contact) 43 | 44 | 45 | 46 | 47 | ## :star2: About the Project 48 | We will be building a smart glove inspired by the game Rainbow Six Siege from IANA character. The project allows us to control a device remotely, using hand gestures captured by a MPU6050 accelerometer/gyroscope and two potentiometers. Wireless communication between the glove and the device is achieved using the nRF24 radio 49 | 50 | 51 | ### :camera: Pictures 52 | 53 |
54 | screenshot 55 |
56 | 57 | 58 | 59 | ### :dart: Features 60 | 61 | - Uses 2.4Ghz band for comunication 62 | - 2 potenciameter for track the movemnent of two finger 63 | - MPU6050 for track the hand movement 64 | 65 | 66 | ## :toolbox: Getting Started 67 | 68 | To build this project, you will need the following parts and tools: 69 | 70 | - Arduino Nano 71 | - MPU6050 Gyroscope 72 | - nRF24L01 Wireless Transceiver 73 | - 2 Potentiometers 74 | 75 | 76 | screenshot 77 | 78 | 79 | 80 | ### :electric_plug: Schematic 81 | Make the connections according to the table and schematic below. 82 | 83 | * TRASMITTER 84 | 85 | | Arduino| nRF24| 86 | | ---- | -----| 87 | | 9 | CE | 88 | | 13 | SCK | 89 | | 12 | MISO | 90 | | 10 | CSN | 91 | | 11 | MOSI | 92 | | 3V3 | Vcc | 93 | | GND | GND | 94 | 95 | | Arduino | MPU6050 | 96 | | ---- | -----| 97 | | A4 | SDA | 98 | | A5 | SCL | 99 | | 5v | VCC | 100 | | GND | GND | 101 | 102 | | Arduino | Poyenciameter1 | 103 | | ---- | -----| 104 | | Wiper | A2 | 105 | | 5v | VCC | 106 | | GND | GND | 107 | 108 | | Arduino | Poyenciameter2 | 109 | | ---- | -----| 110 | | Wiper | A3 | 111 | | 5v | VCC | 112 | | GND | GND | 113 | 114 | 115 | * RECIVER 116 | 117 | | Arduino| nRF24| 118 | | ---- | -----| 119 | | 9 | CE | 120 | | 13 | SCK | 121 | | 12 | MISO | 122 | | 10 | CSN | 123 | | 11 | MOSI | 124 | | 3V3 | Vcc | 125 | | GND | GND | 126 | 127 | 128 | * Complete Schematic 129 | 130 | screenshot 131 | 132 | 133 | 134 | ### :gear: Installation 135 | 136 | you need to install the required library in Arduino IDE Follow these steps: 137 | 138 | - Follow this path Sketch> Include Library> Manage Libraries 139 | - Search for nRF24L01 and Install the library 140 | - Search for RF24 and Install the library 141 | - Search for MPU6050 and Install the library 142 | 143 | 144 | 145 | ## :eyes: Usage 146 | 147 | After uploading the code, Finally, you can test the smart glove by sending data wirelessly to a device and verifying that it responds as expected. You can then customize the code further to suit your specific requirements and make the smart glove even more functional. 148 | 149 | 150 | 151 | ## :warning: License 152 | 153 | Distributed under the MIT License. See LICENSE.txt for more information. 154 | 155 | 156 | 157 | ## :handshake: Contact 158 | 159 | CiferTech - [@twitter](https://twitter.com/cifertech1) - CiferTech@gmali.com 160 | 161 | Project Link: [https://github.com/cifertech/IANA](https://github.com/cifertech/IANA) 162 | 163 | 164 | ## :gem: Acknowledgements 165 | 166 | - [Motion HID Glove](https://www.thingiverse.com/thing:3673439) 167 | - [Overwatch Junkrat Gauntlet](https://www.thingiverse.com/thing:1887603) 168 | 169 | 170 | -------------------------------------------------------------------------------- /code/MATRIX DISPLAY_RECIVER/MATRIX DISPLAY_RECIVER.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | const uint64_t pipeIn = 0xE8E8F0F0E1LL; 7 | 8 | RF24 radio(9, 10); 9 | 10 | int DIN = 7; 11 | int CS = 6; 12 | int CLK = 5; 13 | 14 | LedControl lc=LedControl(DIN,CLK,CS,0); 15 | 16 | struct MyData { 17 | byte X; 18 | byte Y; 19 | int value; 20 | int value1; 21 | }; 22 | 23 | MyData data; 24 | 25 | void setup() 26 | { 27 | Serial.begin(9600); 28 | 29 | lc.shutdown(0,false); 30 | lc.setIntensity(0,15); 31 | lc.clearDisplay(0); 32 | 33 | radio.begin(); 34 | radio.setAutoAck(false); 35 | radio.setDataRate(RF24_250KBPS); 36 | radio.openReadingPipe(1, pipeIn); 37 | radio.startListening(); 38 | 39 | } 40 | 41 | void recvData() 42 | { 43 | if ( radio.available() ) { 44 | radio.read(&data, sizeof(MyData)); 45 | 46 | 47 | if (data.Y < 80) { //Reverse 48 | byte a[8] = {0x18,0x3C,0x7E,0xFF,0x3C,0x3C,0x3C,0x3C}; 49 | printByte(a); 50 | } 51 | 52 | if (data.Y > 145) {//forward 53 | byte a[8] = {0x3C,0x3C,0x3C,0x3C,0xFF,0x7E,0x3C,0x18}; 54 | printByte(a); 55 | } 56 | 57 | if (data.X > 155) {//right 58 | byte a[8] = {0x10,0x30,0x7F,0xFF,0xFF,0x7F,0x30,0x10}; 59 | printByte(a); 60 | } 61 | 62 | if (data.X < 80) {//left 63 | byte a[8] = {0x08,0x0C,0xFE,0xFF,0xFF,0xFE,0x0C,0x08}; 64 | printByte(a); 65 | } 66 | 67 | if (data.X > 100 && data.X < 170 && data.Y > 80 && data.Y < 130) { //stop 68 | byte a[8] = {0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00}; 69 | printByte(a); 70 | } 71 | } 72 | } 73 | 74 | void loop() 75 | { 76 | recvData(); 77 | Serial.print("X= "); 78 | Serial.print(data.X); 79 | Serial.print(" "); 80 | Serial.print("Y= "); 81 | Serial.print(data.Y); 82 | Serial.print(" "); 83 | Serial.print("P1= "); 84 | Serial.print(data.value); 85 | Serial.print(" "); 86 | Serial.print("P2= "); 87 | Serial.print(data.value1); 88 | Serial.print("\n"); 89 | } 90 | 91 | void printByte(byte character []) 92 | { 93 | int i = 0; 94 | for(i=0;i<8;i++) 95 | { 96 | lc.setRow(0,i,character[i]); 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /code/MATRIX DISPLAY_RECIVER/PixelToMatrix.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cifertech/IANA/594a5b5d0f22ca5ef300a2ad94558b4138c4c7e2/code/MATRIX DISPLAY_RECIVER/PixelToMatrix.exe -------------------------------------------------------------------------------- /code/SERVO_RECIVER/SERVO_RECIVER.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include 6 | Servo servox; 7 | Servo servoy; 8 | 9 | const uint64_t pipeIn = 0xE8E8F0F0E1LL; 10 | 11 | RF24 radio(9, 10); 12 | 13 | 14 | struct MyData { 15 | byte X; 16 | byte Y; 17 | int value; 18 | int value1; 19 | }; 20 | 21 | MyData data; 22 | 23 | void setup() 24 | { 25 | Serial.begin(9600); 26 | 27 | servox.attach(6); 28 | servoy.attach(5); 29 | 30 | radio.begin(); 31 | radio.setAutoAck(false); 32 | radio.setDataRate(RF24_250KBPS); 33 | radio.openReadingPipe(1, pipeIn); 34 | radio.startListening(); 35 | 36 | } 37 | 38 | void recvData() 39 | { 40 | if ( radio.available() ) { 41 | radio.read(&data, sizeof(MyData)); 42 | 43 | /* 44 | if (data.Y < 80) { //Reverse 45 | servoy.write(90); 46 | } 47 | 48 | if (data.Y > 145) {//forward 49 | servoy.write(180); 50 | } 51 | 52 | if (data.X > 155) {//right 53 | servox.write(180); 54 | } 55 | 56 | if (data.X < 80) {//left 57 | servox.write(90); 58 | } 59 | 60 | if (data.X > 100 && data.X < 170 && data.Y > 80 && data.Y < 130) { //stop 61 | servox.write(0); 62 | servoy.write(0); 63 | } 64 | */ 65 | 66 | if (data.value < 80) { //Reverse 67 | servoy.write(90); 68 | } 69 | 70 | if (data.value > 145) {//forward 71 | servoy.write(180); 72 | } 73 | 74 | if (data.value1 > 155) {//right 75 | servox.write(180); 76 | } 77 | 78 | if (data.value1 < 80) {//left 79 | servox.write(90); 80 | } 81 | 82 | if (data.value > 100 && data.value < 170 && data.value1 > 80 && data.value1 < 130) { //stop 83 | servox.write(0); 84 | servoy.write(0); 85 | } 86 | 87 | } 88 | } 89 | 90 | void loop() 91 | { 92 | recvData(); 93 | Serial.print("X= "); 94 | Serial.print(data.X); 95 | Serial.print(" "); 96 | Serial.print("Y= "); 97 | Serial.print(data.Y); 98 | Serial.print(" "); 99 | Serial.print("P1= "); 100 | Serial.print(data.value); 101 | Serial.print(" "); 102 | Serial.print("P2= "); 103 | Serial.print(data.value1); 104 | Serial.print("\n"); 105 | } 106 | -------------------------------------------------------------------------------- /code/TRASMITTER/TRASMITTER.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "Wire.h" 5 | #include "I2Cdev.h" 6 | #include "MPU6050.h" 7 | 8 | const int potPin = A2; 9 | const int potPin1 = A3; 10 | 11 | 12 | MPU6050 mpu; 13 | int16_t ax, ay, az; 14 | int16_t gx, gy, gz; 15 | 16 | int16_t value; 17 | int16_t value1; 18 | 19 | const uint64_t pipeOut = 0xE8E8F0F0E1LL; 20 | 21 | RF24 radio(9, 10); // CN and CSN 22 | 23 | struct MyData { 24 | byte X; 25 | byte Y; 26 | int value=0; 27 | int value1=0; 28 | }; 29 | 30 | MyData data; 31 | 32 | void setup() 33 | { 34 | Serial.begin(9600); 35 | 36 | pinMode(potPin, INPUT); 37 | pinMode(potPin1, INPUT); 38 | 39 | Wire.begin(); 40 | mpu.initialize(); 41 | 42 | radio.begin(); 43 | radio.setAutoAck(false); 44 | radio.setDataRate(RF24_250KBPS); 45 | radio.openWritingPipe(pipeOut); 46 | } 47 | 48 | void loop() 49 | { 50 | mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); 51 | 52 | data.X = map(ax, -17000, 17000, 0, 255 ); 53 | data.Y = map(ay, -17000, 17000, 0, 255); 54 | 55 | value = analogRead(potPin); 56 | data.value = map(value, 0, 1023, 0, 255); 57 | 58 | value1 = analogRead(potPin1); 59 | data.value1 = map(value1, 0, 1023, 0, 255); 60 | 61 | delay(50); 62 | radio.write(&data, sizeof(MyData)); 63 | 64 | Serial.print("Axis X = "); 65 | Serial.print(data.X); 66 | Serial.print(" "); 67 | Serial.print("Axis Y = "); 68 | Serial.println(data.Y); 69 | 70 | Serial.print("P1 = "); 71 | Serial.print(data.value); 72 | Serial.print("P2 = "); 73 | Serial.println(data.value1); 74 | } 75 | -------------------------------------------------------------------------------- /stl/BODY.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cifertech/IANA/594a5b5d0f22ca5ef300a2ad94558b4138c4c7e2/stl/BODY.stl -------------------------------------------------------------------------------- /stl/COVER1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cifertech/IANA/594a5b5d0f22ca5ef300a2ad94558b4138c4c7e2/stl/COVER1.stl -------------------------------------------------------------------------------- /stl/COVER2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cifertech/IANA/594a5b5d0f22ca5ef300a2ad94558b4138c4c7e2/stl/COVER2.stl -------------------------------------------------------------------------------- /stl/Cover.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cifertech/IANA/594a5b5d0f22ca5ef300a2ad94558b4138c4c7e2/stl/Cover.stl -------------------------------------------------------------------------------- /stl/FINGER.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cifertech/IANA/594a5b5d0f22ca5ef300a2ad94558b4138c4c7e2/stl/FINGER.stl -------------------------------------------------------------------------------- /stl/INDEX1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cifertech/IANA/594a5b5d0f22ca5ef300a2ad94558b4138c4c7e2/stl/INDEX1.stl -------------------------------------------------------------------------------- /stl/INDEX2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cifertech/IANA/594a5b5d0f22ca5ef300a2ad94558b4138c4c7e2/stl/INDEX2.stl -------------------------------------------------------------------------------- /stl/potentiometer.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cifertech/IANA/594a5b5d0f22ca5ef300a2ad94558b4138c4c7e2/stl/potentiometer.stl --------------------------------------------------------------------------------