diff --git a/.gitignore b/.gitignore index b2d6de30..69b1d403 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ npm-debug.log* yarn-debug.log* yarn-error.log* + diff --git a/docs/BioAmp-Hardware/BioAmpEXGPill.md b/docs/BioAmp-Hardware/BioAmpEXGPill.md index 0e009d02..9e0a02b5 100644 --- a/docs/BioAmp-Hardware/BioAmpEXGPill.md +++ b/docs/BioAmp-Hardware/BioAmpEXGPill.md @@ -2,6 +2,8 @@ sidebar_position: 1 --- + + # BioAmp EXG Pill Professional-grade analog front-end amplification for ECG, EMG, EOG, and EEG biosensing on one tiny board diff --git a/docs/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/1_FixedSampling/1_FixedSampling.md b/docs/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/1_FixedSampling/1_FixedSampling.md new file mode 100644 index 00000000..a879887d --- /dev/null +++ b/docs/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/1_FixedSampling/1_FixedSampling.md @@ -0,0 +1,59 @@ +Fixed Sampling - BioAmp EXG Pill +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +```js +#define SAMPLE_RATE 125 +#define BAUD_RATE 115200 +#define INPUT_PIN A0 + + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); +} + +void loop() { + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample + if(timer < 0){ + timer += 1000000 / SAMPLE_RATE; + int sensor_value = analogRead(INPUT_PIN); + Serial.println(sensor_value); + } +} + +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/2_EEGFilter/2_EEGFilter.md b/docs/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/2_EEGFilter/2_EEGFilter.md new file mode 100644 index 00000000..c4561f3c --- /dev/null +++ b/docs/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/2_EEGFilter/2_EEGFilter.md @@ -0,0 +1,99 @@ +EEG Filter - BioAmp EXG Pill +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +```js + +#define SAMPLE_RATE 256 +#define BAUD_RATE 115200 +#define INPUT_PIN A0 + + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); +} + +void loop() { + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample + if(timer < 0){ + timer += 1000000 / SAMPLE_RATE; + float sensor_value = analogRead(INPUT_PIN); + float signal = EEGFilter(sensor_value); + Serial.println(signal); + } +} + +// Band-Pass Butterworth IIR digital filter, generated using filter_gen.py. +// Sampling rate: 256.0 Hz, frequency: [0.5, 29.5] Hz. +// Filter is order 4, implemented as second-order sections (biquads). +// Reference: +// https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html +// https://courses.ideate.cmu.edu/16-223/f2020/Arduino/FilterDemos/filter_gen.py +float EEGFilter(float input) { + float output = input; + { + static float z1, z2; // filter section state + float x = output - -0.95391350*z1 - 0.25311356*z2; + output = 0.00735282*x + 0.01470564*z1 + 0.00735282*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.20596630*z1 - 0.60558332*z2; + output = 1.00000000*x + 2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.97690645*z1 - 0.97706395*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.99071687*z1 - 0.99086813*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + return output; +} + +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/2_EEGFilter/EEGFilter.png b/docs/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/2_EEGFilter/EEGFilter.png new file mode 100644 index 00000000..237aaabf Binary files /dev/null and b/docs/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/2_EEGFilter/EEGFilter.png differ diff --git a/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/.gitignore b/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/.gitignore new file mode 100644 index 00000000..d99efa91 --- /dev/null +++ b/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/.gitignore @@ -0,0 +1,32 @@ +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app \ No newline at end of file diff --git a/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/1_FixedSampling/1_FixedSampling.md b/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/1_FixedSampling/1_FixedSampling.md new file mode 100644 index 00000000..95bbea48 --- /dev/null +++ b/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/1_FixedSampling/1_FixedSampling.md @@ -0,0 +1,58 @@ + +Fixed Sampling - BioAmp EXG Pill +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +```js +#define SAMPLE_RATE 125 +#define BAUD_RATE 115200 +#define INPUT_PIN A0 + + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); +} + +void loop() { + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample + if(timer < 0){ + timer += 1000000 / SAMPLE_RATE; + int sensor_value = analogRead(INPUT_PIN); + Serial.println(sensor_value); + } +} +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/2_EOGFilter/2_EOGFilter.md b/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/2_EOGFilter/2_EOGFilter.md new file mode 100644 index 00000000..ddf6b99b --- /dev/null +++ b/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/2_EOGFilter/2_EOGFilter.md @@ -0,0 +1,102 @@ +EOG Filter - BioAmp EXG Pill +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +```js + +#define SAMPLE_RATE 75 +#define BAUD_RATE 115200 +#define INPUT_PIN A0 + + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); +} + +void loop() { + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample + if(timer < 0){ + timer += 1000000 / SAMPLE_RATE; + float sensor_value = analogRead(INPUT_PIN); + float signal = EOGFilter(sensor_value); + Serial.println(signal); + } +} + +// Band-Pass Butterworth IIR digital filter, generated using filter_gen.py. +// Sampling rate: 500.0 Hz, frequency: [74.5, 149.5] Hz. +// Filter is order 4, implemented as second-order sections (biquads). +// Reference: +// https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html +// https://courses.ideate.cmu.edu/16-223/f2020/Arduino/FilterDemos/filter_gen.py + + +float EOGFilter(float input) +{ + float output = input; + { + static float z1, z2; // filter section state + float x = output - 0.02977423*z1 - 0.04296318*z2; + output = 0.09797471*x + 0.19594942*z1 + 0.09797471*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - 0.08383952*z1 - 0.46067709*z2; + output = 1.00000000*x + 2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.92167271*z1 - 0.92347975*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.96758891*z1 - 0.96933514*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + return output; +} + +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/2_EOGFilter/EOG-Demo.png b/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/2_EOGFilter/EOG-Demo.png new file mode 100644 index 00000000..dcb0d887 Binary files /dev/null and b/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/2_EOGFilter/EOG-Demo.png differ diff --git a/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/2_EOGFilter/EOGFilter.png b/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/2_EOGFilter/EOGFilter.png new file mode 100644 index 00000000..3b29ccfe Binary files /dev/null and b/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/2_EOGFilter/EOGFilter.png differ diff --git a/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/3_DrowsinessDetection/3_DrowsinessDetection.md b/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/3_DrowsinessDetection/3_DrowsinessDetection.md new file mode 100644 index 00000000..3722bc1b --- /dev/null +++ b/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/3_DrowsinessDetection/3_DrowsinessDetection.md @@ -0,0 +1,189 @@ +Drowsiness Detection - BioAmp EXG Pill + https://github.com/upsidedownlabs/BioAmp-EXG-Pill + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +```js +#include + +#define SAMPLE_RATE 75 +#define BAUD_RATE 115200 +#define INPUT_PIN A0 +#define OUTPUT_PIN 13 +#define DATA_LENGTH 10 +#define DROWSINESS_THRESHOLD 6000 + +int data_index = 0; +bool peak = false; + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); + + // Setup Input & Output pin + pinMode(INPUT_PIN, INPUT); + pinMode(OUTPUT_PIN, OUTPUT); +} + +void loop() { + // Blink timestamps + static unsigned long past_blink; + static unsigned long present_blink; + long blink_interval; + + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample + if(timer < 0){ + timer += 1000000 / SAMPLE_RATE; + + // Sample and Nomalize input data (-1 to 1) + float sensor_value = analogRead(INPUT_PIN); + float signal = EOGFilter(sensor_value)/512; + + // Get peak + peak = Getpeak(signal); + + // Print sensor_value and peak + Serial.print(signal); + Serial.print(","); + Serial.println(peak); + + // Indicate on peak + digitalWrite(OUTPUT_PIN, peak); + + // Update blink timestamps + present_blink= millis(); + blink_interval= present_blink - past_blink; + + if(peak==1) + past_blink= present_blink; + + // Print blink interval + Serial.print("blink_interval: "); + Serial.println(blink_interval); + + // Drowsiness detection + if(blink_interval>= DROWSINESS_THRESHOLD) + digitalWrite(OUTPUT_PIN, HIGH); + + if(blink_interval>= DROWSINESS_THRESHOLD) + tone(8, 2000, 50); + } +} + +bool Getpeak(float new_sample){ + // Buffers for data, mean, and standard deviation + static float data_buffer[DATA_LENGTH]; + static float mean_buffer[DATA_LENGTH]; + static float standard_deviation_buffer[DATA_LENGTH]; + + // Check for peak + if (new_sample - mean_buffer[data_index] > (DATA_LENGTH*1.2) * standard_deviation_buffer[data_index]) { + data_buffer[data_index] = new_sample + data_buffer[data_index]; + peak = true; + } else { + data_buffer[data_index] = new_sample; + peak = false; + } + + // Calculate mean + float sum = 0.0, mean, standard_deviation = 0.0; + for (int i = 0; i < DATA_LENGTH; ++i){ + sum += data_buffer[(data_index + i) % DATA_LENGTH]; + } + mean = sum/DATA_LENGTH; + + // Calculate standard deviation + for (int i = 0; i < DATA_LENGTH; ++i){ + standard_deviation += pow(data_buffer[(i) % DATA_LENGTH] - mean, 2); + } + + // Update mean buffer + mean_buffer[data_index] = mean; + + // Update standard deviation buffer + standard_deviation_buffer[data_index] = sqrt(standard_deviation/DATA_LENGTH); + + // Update data_index + data_index = (data_index+1)%DATA_LENGTH; + + // Return peak + return peak; +} + +// Band-Pass Butterworth IIR digital filter, generated using filter_gen.py. +// Sampling rate: 75.0 Hz, frequency: [0.5, 19.5] Hz. +// Filter is order 4, implemented as second-order sections (biquads). +// Reference: +// https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html + +// https://courses.ideate.cmu.edu/16-223/f2020/Arduino/FilterDemos/filter_gen.py + + +float EOGFilter(float input) +{ + float output = input; + { + static float z1, z2; // filter section state + float x = output - 0.02977423*z1 - 0.04296318*z2; + output = 0.09797471*x + 0.19594942*z1 + 0.09797471*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - 0.08383952*z1 - 0.46067709*z2; + output = 1.00000000*x + 2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.92167271*z1 - 0.92347975*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.96758891*z1 - 0.96933514*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + return output; +} + +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/4_EOGPhotoCaptureBLE/4_EOGPhotoCaptureBLE.md b/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/4_EOGPhotoCaptureBLE/4_EOGPhotoCaptureBLE.md new file mode 100644 index 00000000..d5a15507 --- /dev/null +++ b/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/4_EOGPhotoCaptureBLE/4_EOGPhotoCaptureBLE.md @@ -0,0 +1,169 @@ +Eye Blink (EOG) Photo capture using ESP32 - BioAmp EXG Pill +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +```js + +#include +#include + +#define SAMPLE_RATE 75 +#define BAUD_RATE 115200 +#define INPUT_PIN 25 +#define OUTPUT_PIN 27 +#define DATA_LENGTH 20 +BleKeyboard bleKeyboard; + +int data_index = 0; +bool peak = false; + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); + // Ble keyboard begin + bleKeyboard.begin(); + // Setup Input & Output pin + pinMode(OUTPUT_PIN, OUTPUT); + pinMode(INPUT_PIN, INPUT); +} + +void loop() { + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + // Run timer + static long timer = 0; + timer -= interval; + + // Sample + if(timer < 0){ + timer += 1000000 / SAMPLE_RATE; + // Sample and Nomalize input data (-1 to 1) + float sensor_value = analogRead(INPUT_PIN); + float signal = EOGFilter(sensor_value)/512; + // Get peak + peak = Getpeak(signal); + // Print sensor_value and peak + Serial.print(signal); + Serial.print(","); + Serial.println(peak); + Serial.print("Sensor value: "); + Serial.print(sensor_value); + Serial.println(""); + // Blink LED on peak + digitalWrite(OUTPUT_PIN, peak); + //To click photo + if(peak){ + bleKeyboard.press(KEY_MEDIA_VOLUME_UP); + bleKeyboard.release(KEY_MEDIA_VOLUME_UP); + } + } +} + +bool Getpeak(float new_sample) { + // Buffers for data, mean, and standard deviation + static float data_buffer[DATA_LENGTH]; + static float mean_buffer[DATA_LENGTH]; + static float standard_deviation_buffer[DATA_LENGTH]; + + // Check for peak + if (new_sample - mean_buffer[data_index] > (DATA_LENGTH*1.2) * standard_deviation_buffer[data_index]) { + data_buffer[data_index] = new_sample + data_buffer[data_index]; + peak = true; + } else { + data_buffer[data_index] = new_sample; + peak = false; + } + + // Calculate mean + float sum = 0.0, mean, standard_deviation = 0.0; + for (int i = 0; i < DATA_LENGTH; ++i){ + sum += data_buffer[(data_index + i) % DATA_LENGTH]; + } + mean = sum/DATA_LENGTH; + + // Calculate standard deviation + for (int i = 0; i < DATA_LENGTH; ++i){ + standard_deviation += pow(data_buffer[(i) % DATA_LENGTH] - mean, 2); + } + + // Update mean buffer + mean_buffer[data_index] = mean; + + // Update standard deviation buffer + standard_deviation_buffer[data_index] = sqrt(standard_deviation/DATA_LENGTH); + + // Update data_index + data_index = (data_index+1)%DATA_LENGTH; + + // Return peak + return peak; +} + +// Band-Pass Butterworth IIR digital filter, generated using filter_gen.py. +// Sampling rate: 75.0 Hz, frequency: [0.5, 19.5] Hz. +// Filter is order 4, implemented as second-order sections (biquads). +// Reference: +// https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html +// https://courses.ideate.cmu.edu/16-223/f2020/Arduino/FilterDemos/filter_gen.py +float EOGFilter(float input) +{ + float output = input; + { + static float z1, z2; // filter section state + float x = output - 0.02977423*z1 - 0.04296318*z2; + output = 0.09797471*x + 0.19594942*z1 + 0.09797471*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - 0.08383952*z1 - 0.46067709*z2; + output = 1.00000000*x + 2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.92167271*z1 - 0.92347975*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.96758891*z1 - 0.96933514*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + return output; +} + +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/5_EyeBlinkDetection/5_EyeBlinkDetection.md b/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/5_EyeBlinkDetection/5_EyeBlinkDetection.md new file mode 100644 index 00000000..78feecda --- /dev/null +++ b/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/5_EyeBlinkDetection/5_EyeBlinkDetection.md @@ -0,0 +1,171 @@ +Eye Blink Detection (Experimental!) - BioAmp EXG Pill +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +```js + +#include +#define SAMPLE_RATE 75 +#define BAUD_RATE 115200 +#define INPUT_PIN A0 +#define OUTPUT_PIN 13 +#define DATA_LENGTH 10 +#define BUZZER 8 + +int data_index = 0; +bool peak = false; + + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); + // Setup Input & Output pin + pinMode(INPUT_PIN, INPUT); + pinMode(OUTPUT_PIN, OUTPUT); + pinMode(BUZZER, OUTPUT); +} + +void loop() { + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample + if(timer < 0){ + timer += 1000000 / SAMPLE_RATE; + // Sample and Nomalize input data (-1 to 1) + float sensor_value = analogRead(INPUT_PIN); + float signal = EOGFilter(sensor_value)/512; + // Get peak + peak = Getpeak(signal); + // Print sensor_value and peak + Serial.print(signal); + Serial.print(","); + Serial.println(peak); + // Blink LED on peak + digitalWrite(OUTPUT_PIN, peak); + //Buzzer on at peak + if (peak) tone(BUZZER, 2000, 50); + } +} + +bool Getpeak(float new_sample) { + // Buffers for data, mean, and standard deviation + static float data_buffer[DATA_LENGTH]; + static float mean_buffer[DATA_LENGTH]; + static float standard_deviation_buffer[DATA_LENGTH]; + + // Check for peak + if (new_sample - mean_buffer[data_index] > (DATA_LENGTH*1.2) * standard_deviation_buffer[data_index]) { + data_buffer[data_index] = new_sample + data_buffer[data_index]; + peak = true; + } else { + data_buffer[data_index] = new_sample; + peak = false; + } + + // Calculate mean + float sum = 0.0, mean, standard_deviation = 0.0; + for (int i = 0; i < DATA_LENGTH; ++i){ + sum += data_buffer[(data_index + i) % DATA_LENGTH]; + } + mean = sum/DATA_LENGTH; + + // Calculate standard deviation + for (int i = 0; i < DATA_LENGTH; ++i){ + standard_deviation += pow(data_buffer[(i) % DATA_LENGTH] - mean, 2); + } + + // Update mean buffer + mean_buffer[data_index] = mean; + + // Update standard deviation buffer + standard_deviation_buffer[data_index] = sqrt(standard_deviation/DATA_LENGTH); + + // Update data_index + data_index = (data_index+1)%DATA_LENGTH; + + // Return peak + return peak; +} + +// Band-Pass Butterworth IIR digital filter, generated using filter_gen.py. +// Sampling rate: 75.0 Hz, frequency: [0.5, 19.5] Hz. +// Filter is order 4, implemented as second-order sections (biquads). +// Reference: +// https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html +// https://courses.ideate.cmu.edu/16-223/f2020/Arduino/FilterDemos/filter_gen.py + +float EOGFilter(float input) +{ + float output = input; + { + static float z1, z2; // filter section state + float x = output - 0.02977423*z1 - 0.04296318*z2; + output = 0.09797471*x + 0.19594942*z1 + 0.09797471*z2; + z2 = z1; + z1 = x; + } + + + { + static float z1, z2; // filter section state + float x = output - 0.08383952*z1 - 0.46067709*z2; + output = 1.00000000*x + 2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + + + { + static float z1, z2; // filter section state + float x = output - -1.92167271*z1 - 0.92347975*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + + + { + static float z1, z2; // filter section state + float x = output - -1.96758891*z1 - 0.96933514*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + + + return output; +} + +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/.gitignore b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/.gitignore new file mode 100644 index 00000000..d99efa91 --- /dev/null +++ b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/.gitignore @@ -0,0 +1,32 @@ +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app \ No newline at end of file diff --git a/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/1_FixedSampling/1_FixedSampling.md b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/1_FixedSampling/1_FixedSampling.md new file mode 100644 index 00000000..c403aa19 --- /dev/null +++ b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/1_FixedSampling/1_FixedSampling.md @@ -0,0 +1,57 @@ +Fixed Sampling - BioAmp EXG Pill +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +```js +#define SAMPLE_RATE 125 +#define BAUD_RATE 115200 +#define INPUT_PIN A0 + + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); +} + +void loop() { + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample + if(timer < 0){ + timer += 1000000 / SAMPLE_RATE; + int sensor_value = analogRead(INPUT_PIN); + Serial.println(sensor_value); + } +} +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/2_ECGFilter/2_ECGFilter.md b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/2_ECGFilter/2_ECGFilter.md new file mode 100644 index 00000000..268c6e6a --- /dev/null +++ b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/2_ECGFilter/2_ECGFilter.md @@ -0,0 +1,99 @@ +ECG Filter - BioAmp EXG Pill +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +```js + +#define SAMPLE_RATE 125 +#define BAUD_RATE 115200 +#define INPUT_PIN A0 + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); +} + +void loop() { + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample + if(timer < 0){ + timer += 1000000 / SAMPLE_RATE; + float sensor_value = analogRead(INPUT_PIN); + float signal = ECGFilter(sensor_value); + Serial.println(signal); + } +} + +// Band-Pass Butterworth IIR digital filter, generated using filter_gen.py. +// Sampling rate: 125.0 Hz, frequency: [0.5, 44.5] Hz. +// Filter is order 4, implemented as second-order sections (biquads). +// Reference: +// https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html +// https://courses.ideate.cmu.edu/16-223/f2020/Arduino/FilterDemos/filter_gen.py +float ECGFilter(float input) +{ + float output = input; + { + static float z1, z2; // filter section state + float x = output - 0.70682283*z1 - 0.15621030*z2; + output = 0.28064917*x + 0.56129834*z1 + 0.28064917*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - 0.95028224*z1 - 0.54073140*z2; + output = 1.00000000*x + 2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.95360385*z1 - 0.95423412*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.98048558*z1 - 0.98111344*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + return output; +} + +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/2_ECGFilter/ECGFilter.png b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/2_ECGFilter/ECGFilter.png new file mode 100644 index 00000000..01bb3e26 Binary files /dev/null and b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/2_ECGFilter/ECGFilter.png differ diff --git a/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/2_ECGFilter/ECGWaves.png b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/2_ECGFilter/ECGWaves.png new file mode 100644 index 00000000..c964bf28 Binary files /dev/null and b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/2_ECGFilter/ECGWaves.png differ diff --git a/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/3_HeartRateDetection/3_HeartRateDetection.md b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/3_HeartRateDetection/3_HeartRateDetection.md new file mode 100644 index 00000000..128612eb --- /dev/null +++ b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/3_HeartRateDetection/3_HeartRateDetection.md @@ -0,0 +1,192 @@ +HeartRateDetection +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +```js +#include +#include + +#define SAMPLE_RATE 125 +#define BAUD_RATE 115200 +#define INPUT_PIN 36 +#define OUTPUT_PIN 13 +#define DATA_LENGTH 16 + +int avg = 0; +int data_index = 0; +bool peak = false; +int reading = 0; +float BPM = 0.0; +bool IgnoreReading = false; +bool FirstPulseDetected = false; +unsigned long FirstPulseTime = 0; +unsigned long SecondPulseTime = 0; +unsigned long PulseInterval = 0; +CircularBuffer buffer; + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); + // Setup Input & Output pin + pinMode(INPUT_PIN, INPUT); + pinMode(OUTPUT_PIN, OUTPUT); +} + +void loop() { + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample + if(timer < 0){ + timer += 1000000 / SAMPLE_RATE; + // Sample and Nomalize input data (-1 to 1) + float sensor_value = analogRead(INPUT_PIN); + float signal = ECGFilter(sensor_value)/512; + // Get peak + peak = Getpeak(signal); + // Print sensor_value and peak + // Blink LED on peak + digitalWrite(OUTPUT_PIN, peak); + + if(peak && IgnoreReading == false){ + if(FirstPulseDetected == false){ + FirstPulseTime = millis(); + FirstPulseDetected = true; + } + else{ + SecondPulseTime = millis(); + PulseInterval = SecondPulseTime - FirstPulseTime; + buffer.unshift(PulseInterval); + FirstPulseTime = SecondPulseTime; + } + IgnoreReading = true; + } + if(!peak){ + IgnoreReading = false; + } + if (buffer.isFull()){ + for(int i = 0 ;i < buffer.size(); i++){ + avg+=buffer[i]; + } + BPM = (1.0/avg) * 60.0 * 1000 * buffer.size(); + avg = 0; + buffer.pop(); + if (BPM < 240){ + Serial.print("BPM "); + Serial.println(BPM); + Serial.flush(); + } + } + } +} + +bool Getpeak(float new_sample) { + // Buffers for data, mean, and standard deviation + static float data_buffer[DATA_LENGTH]; + static float mean_buffer[DATA_LENGTH]; + static float standard_deviation_buffer[DATA_LENGTH]; + + // Check for peak + if (new_sample - mean_buffer[data_index] > (DATA_LENGTH/2) * standard_deviation_buffer[data_index]) { + data_buffer[data_index] = new_sample + data_buffer[data_index]; + peak = true; + } else { + data_buffer[data_index] = new_sample; + peak = false; + } + + // Calculate mean + float sum = 0.0, mean, standard_deviation = 0.0; + for (int i = 0; i < DATA_LENGTH; ++i){ + sum += data_buffer[(data_index + i) % DATA_LENGTH]; + } + mean = sum/DATA_LENGTH; + + // Calculate standard deviation + for (int i = 0; i < DATA_LENGTH; ++i){ + standard_deviation += pow(data_buffer[(i) % DATA_LENGTH] - mean, 2); + } + + // Update mean buffer + mean_buffer[data_index] = mean; + + // Update standard deviation buffer + standard_deviation_buffer[data_index] = sqrt(standard_deviation/DATA_LENGTH); + + // Update data_index + data_index = (data_index+1)%DATA_LENGTH; + + // Return peak + return peak; +} + +// Band-Pass Butterworth IIR digital filter, generated using filter_gen.py. +// Sampling rate: 125.0 Hz, frequency: [0.5, 44.5] Hz. +// Filter is order 4, implemented as second-order sections (biquads). +// Reference: +// https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html +// https://courses.ideate.cmu.edu/16-223/f2020/Arduino/FilterDemos/filter_gen.py +float ECGFilter(float input) +{ + float output = input; + { + static float z1, z2; // filter section state + float x = output - 0.70682283*z1 - 0.15621030*z2; + output = 0.28064917*x + 0.56129834*z1 + 0.28064917*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - 0.95028224*z1 - 0.54073140*z2; + output = 1.00000000*x + 2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.95360385*z1 - 0.95423412*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.98048558*z1 - 0.98111344*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + return output; +} +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/4_HeartBeatDetection/HeartBeatDetection.md b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/4_HeartBeatDetection/HeartBeatDetection.md new file mode 100644 index 00000000..31717177 --- /dev/null +++ b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/4_HeartBeatDetection/HeartBeatDetection.md @@ -0,0 +1,157 @@ +Heart Beat Detection - BioAmp EXG Pill +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +```js +#include + +#define SAMPLE_RATE 125 +#define BAUD_RATE 115200 +#define INPUT_PIN A0 +#define OUTPUT_PIN 13 +#define DATA_LENGTH 16 + +int data_index = 0; +bool peak = false; + + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); + // Setup Input & Output pin + pinMode(INPUT_PIN, INPUT); + pinMode(OUTPUT_PIN, OUTPUT); +} + +void loop() { + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample + if(timer < 0){ + timer += 1000000 / SAMPLE_RATE; + // Sample and Nomalize input data (-1 to 1) + float sensor_value = analogRead(INPUT_PIN); + float signal = ECGFilter(sensor_value)/512; + // Get peak + peak = Getpeak(signal); + // Print sensor_value and peak + Serial.print(signal); + Serial.print(","); + Serial.println(peak); + // Blink LED on peak + digitalWrite(OUTPUT_PIN, peak); + } +} + +bool Getpeak(float new_sample) { + // Buffers for data, mean, and standard deviation + static float data_buffer[DATA_LENGTH]; + static float mean_buffer[DATA_LENGTH]; + static float standard_deviation_buffer[DATA_LENGTH]; + + // Check for peak + if (new_sample - mean_buffer[data_index] > (DATA_LENGTH/2) * standard_deviation_buffer[data_index]) { + data_buffer[data_index] = new_sample + data_buffer[data_index]; + peak = true; + } else { + data_buffer[data_index] = new_sample; + peak = false; + } + + // Calculate mean + float sum = 0.0, mean, standard_deviation = 0.0; + for (int i = 0; i < DATA_LENGTH; ++i){ + sum += data_buffer[(data_index + i) % DATA_LENGTH]; + } + mean = sum/DATA_LENGTH; + + // Calculate standard deviation + for (int i = 0; i < DATA_LENGTH; ++i){ + standard_deviation += pow(data_buffer[(i) % DATA_LENGTH] - mean, 2); + } + + // Update mean buffer + mean_buffer[data_index] = mean; + + // Update standard deviation buffer + standard_deviation_buffer[data_index] = sqrt(standard_deviation/DATA_LENGTH); + + // Update data_index + data_index = (data_index+1)%DATA_LENGTH; + + // Return peak + return peak; +} + +// Band-Pass Butterworth IIR digital filter, generated using filter_gen.py. +// Sampling rate: 125.0 Hz, frequency: [0.5, 44.5] Hz. +// Filter is order 4, implemented as second-order sections (biquads). +// Reference: +// https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html +// https://courses.ideate.cmu.edu/16-223/f2020/Arduino/FilterDemos/filter_gen.py +float ECGFilter(float input) +{ + float output = input; + { + static float z1, z2; // filter section state + float x = output - 0.70682283*z1 - 0.15621030*z2; + output = 0.28064917*x + 0.56129834*z1 + 0.28064917*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - 0.95028224*z1 - 0.54073140*z2; + output = 1.00000000*x + 2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.95360385*z1 - 0.95423412*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.98048558*z1 - 0.98111344*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + return output; +} +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/4_HeartBeatDetection/HeartBeatDetection.png b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/4_HeartBeatDetection/HeartBeatDetection.png new file mode 100644 index 00000000..a00e9dd3 Binary files /dev/null and b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/4_HeartBeatDetection/HeartBeatDetection.png differ diff --git a/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/5_BLEHeartRateDetection/5_BLEHeartRateDetection.md b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/5_BLEHeartRateDetection/5_BLEHeartRateDetection.md new file mode 100644 index 00000000..c11d9d18 --- /dev/null +++ b/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/5_BLEHeartRateDetection/5_BLEHeartRateDetection.md @@ -0,0 +1,274 @@ +HeartRateDetection +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +```js +#include +#include +#include +#include +#include +#include + +#define SAMPLE_RATE 125 +#define BAUD_RATE 115200 +#define INPUT_PIN 36 +#define OUTPUT_PIN 13 +#define DATA_LENGTH 16 + +int avg = 0; +int data_index = 0; +bool peak = false; +int reading = 0; +float BPM = 0.0; +bool IgnoreReading = false; +bool FirstPulseDetected = false; +unsigned long FirstPulseTime = 0; +unsigned long SecondPulseTime = 0; +unsigned long PulseInterval = 0; +CircularBuffer buffer; + +BLEServer* pServer = NULL; +BLECharacteristic* pCharacteristic = NULL; +bool deviceConnected = false; +bool oldDeviceConnected = false; +uint32_t value = 0; + +// See the following for generating UUIDs: +// https://www.uuidgenerator.net/ + +#define SERVICE_UUID "180D" +#define CHARACTERISTIC_UUID "2A37" + + +class MyServerCallbacks: public BLEServerCallbacks { + void onConnect(BLEServer* pServer) { + deviceConnected = true; + }; + + void onDisconnect(BLEServer* pServer) { + deviceConnected = false; + } +}; + +void setup() { + Serial.begin(115200); + + pinMode(INPUT_PIN, INPUT); + pinMode(OUTPUT_PIN, OUTPUT); + + // Create the BLE Device + BLEDevice::init("MyESP32"); + + // Create the BLE Server + pServer = BLEDevice::createServer(); + pServer->setCallbacks(new MyServerCallbacks()); + + // Create the BLE Service + BLEService *pService = pServer->createService(SERVICE_UUID); + + // Create a BLE Characteristic + pCharacteristic = pService->createCharacteristic( + CHARACTERISTIC_UUID, + BLECharacteristic::PROPERTY_READ | + BLECharacteristic::PROPERTY_WRITE | + BLECharacteristic::PROPERTY_NOTIFY | + BLECharacteristic::PROPERTY_INDICATE + ); + + // https://www.bluetooth.com/specifications/gatt/viewer? + // attributeXmlFile=org.bluetooth.descriptor.gatt.client_characteristic_configuration.xml + // Create a BLE Descriptor + pCharacteristic->addDescriptor(new BLE2902()); + + // Start the service + pService->start(); + + // Start advertising + BLEAdvertising *pAdvertising = BLEDevice::getAdvertising(); + pAdvertising->addServiceUUID(SERVICE_UUID); + pAdvertising->setScanResponse(false); + pAdvertising->setMinPreferred(0x0); // set value to 0x00 to not advertise this parameter + BLEDevice::startAdvertising(); + Serial.println("Waiting a client connection to notify..."); +} + +void loop() { + // notify changed value + if (deviceConnected) { + +// delay(500); // bluetooth stack will go into congestion, if too many packets are sent. + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample + if(timer < 0){ + timer += 1000000 / SAMPLE_RATE; + // Sample and Nomalize input data (-1 to 1) + float sensor_value = analogRead(INPUT_PIN); + float signal = ECGFilter(sensor_value)/512; + // Get peak + peak = Getpeak(signal); + // Print sensor_value and peak + // Blink LED on peak + digitalWrite(OUTPUT_PIN, peak); + + if(peak && IgnoreReading == false){ + if(FirstPulseDetected == false){ + FirstPulseTime = millis(); + FirstPulseDetected = true; + } + else{ + SecondPulseTime = millis(); + PulseInterval = SecondPulseTime - FirstPulseTime; + buffer.unshift(PulseInterval); + FirstPulseTime = SecondPulseTime; + } + IgnoreReading = true; + } + if(!peak){ + IgnoreReading = false; + } + if (buffer.isFull()){ + for(int i = 0 ;i < buffer.size(); i++){ + avg+=buffer[i]; + } + BPM = (1.0/avg) * 60.0 * 1000 * buffer.size(); + avg = 0; + buffer.pop(); + if (BPM < 240){ + Serial.print("BPM "); + Serial.println(BPM); + // pCharacteristic->setValue((uint8_t*)&value, 4); + String alea = (String) BPM; // Lo convierte en String. + pCharacteristic->setValue(alea.c_str()); // Pone el numero aleatorio + pCharacteristic->notify(); + Serial.flush(); + } + } + } + } + // disconnecting + if (!deviceConnected && oldDeviceConnected) { + delay(500); // give the bluetooth stack the chance to get things ready + pServer->startAdvertising(); // restart advertising + Serial.println("start advertising"); + oldDeviceConnected = deviceConnected; + } + // connecting + if (deviceConnected && !oldDeviceConnected) { + // do stuff here on connecting + oldDeviceConnected = deviceConnected; + } + +} +bool Getpeak(float new_sample) { + // Buffers for data, mean, and standard deviation + static float data_buffer[DATA_LENGTH]; + static float mean_buffer[DATA_LENGTH]; + static float standard_deviation_buffer[DATA_LENGTH]; + + // Check for peak + if (new_sample - mean_buffer[data_index] > (DATA_LENGTH/2) * standard_deviation_buffer[data_index]) { + data_buffer[data_index] = new_sample + data_buffer[data_index]; + peak = true; + } else { + data_buffer[data_index] = new_sample; + peak = false; + } + + // Calculate mean + float sum = 0.0, mean, standard_deviation = 0.0; + for (int i = 0; i < DATA_LENGTH; ++i){ + sum += data_buffer[(data_index + i) % DATA_LENGTH]; + } + mean = sum/DATA_LENGTH; + + // Calculate standard deviation + for (int i = 0; i < DATA_LENGTH; ++i){ + standard_deviation += pow(data_buffer[(i) % DATA_LENGTH] - mean, 2); + } + + // Update mean buffer + mean_buffer[data_index] = mean; + + // Update standard deviation buffer + standard_deviation_buffer[data_index] = sqrt(standard_deviation/DATA_LENGTH); + + // Update data_index + data_index = (data_index+1)%DATA_LENGTH; + + // Return peak + return peak; +} + +// Band-Pass Butterworth IIR digital filter, generated using filter_gen.py. +// Sampling rate: 125.0 Hz, frequency: [0.5, 44.5] Hz. +// Filter is order 4, implemented as second-order sections (biquads). +// Reference: +// https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html +// https://courses.ideate.cmu.edu/16-223/f2020/Arduino/FilterDemos/filter_gen.py +float ECGFilter(float input) +{ + float output = input; + { + static float z1, z2; // filter section state + float x = output - 0.70682283*z1 - 0.15621030*z2; + output = 0.28064917*x + 0.56129834*z1 + 0.28064917*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - 0.95028224*z1 - 0.54073140*z2; + output = 1.00000000*x + 2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.95360385*z1 - 0.95423412*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.98048558*z1 - 0.98111344*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + return output; +} + +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/.gitignore b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/.gitignore new file mode 100644 index 00000000..d99efa91 --- /dev/null +++ b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/.gitignore @@ -0,0 +1,32 @@ +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app \ No newline at end of file diff --git a/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/1_FixedSampling/1_FixedSampling.md b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/1_FixedSampling/1_FixedSampling.md new file mode 100644 index 00000000..9396e7c7 --- /dev/null +++ b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/1_FixedSampling/1_FixedSampling.md @@ -0,0 +1,60 @@ +Fixed Sampling - BioAmp EXG Pill +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +```js + +#define SAMPLE_RATE 125 +#define BAUD_RATE 115200 +#define INPUT_PIN A0 + + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); +} + +void loop() { + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample + if(timer < 0){ + timer += 1000000 / SAMPLE_RATE; + int sensor_value = analogRead(INPUT_PIN); + Serial.println(sensor_value); + } +} + + + +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/2_EMGFilter/2_EMGFilter.md b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/2_EMGFilter/2_EMGFilter.md new file mode 100644 index 00000000..027aa310 --- /dev/null +++ b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/2_EMGFilter/2_EMGFilter.md @@ -0,0 +1,105 @@ +EMG Filter - BioAmp EXG Pill +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +```js +#define SAMPLE_RATE 500 +#define BAUD_RATE 115200 +#define INPUT_PIN 32 + + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); +} + +void loop() { + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample + if(timer < 0){ + timer += 1000000 / SAMPLE_RATE; + float sensor_value = analogRead(INPUT_PIN); + float signal = EMGFilter(sensor_value); + Serial.println(signal); + } +} + +// Band-Pass Butterworth IIR digital filter, generated using filter_gen.py. +// Sampling rate: 500.0 Hz, frequency: [74.5, 149.5] Hz. +// Filter is order 4, implemented as second-order sections (biquads). +// Reference: +// https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html +// https://courses.ideate.cmu.edu/16-223/f2020/Arduino/FilterDemos/filter_gen.py +float EMGFilter(float input) +{ + float output = input; + { + static float z1, z2; // filter section state + float x = output - 0.05159732*z1 - 0.36347401*z2; + output = 0.01856301*x + 0.03712602*z1 + 0.01856301*z2; + z2 = z1; + z1 = x; + } + + { + static float z1, z2; // filter section state + float x = output - -0.53945795*z1 - 0.39764934*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + + + { + static float z1, z2; // filter section state + float x = output - 0.47319594*z1 - 0.70744137*z2; + output = 1.00000000*x + 2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + + + { + static float z1, z2; // filter section state + float x = output - -1.00211112*z1 - 0.74520226*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + return output; +} + +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/2_EMGFilter/EMGFilter.png b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/2_EMGFilter/EMGFilter.png new file mode 100644 index 00000000..5f752c32 Binary files /dev/null and b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/2_EMGFilter/EMGFilter.png differ diff --git a/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/2_EMGFilter/EMGWave.png b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/2_EMGFilter/EMGWave.png new file mode 100644 index 00000000..9071f986 Binary files /dev/null and b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/2_EMGFilter/EMGWave.png differ diff --git a/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/3_EMGEnvelope/3_EMGEnvelope.md b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/3_EMGEnvelope/3_EMGEnvelope.md new file mode 100644 index 00000000..339c2af4 --- /dev/null +++ b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/3_EMGEnvelope/3_EMGEnvelope.md @@ -0,0 +1,116 @@ +EMG Envelop - BioAmp EXG Pill +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +```js +#define SAMPLE_RATE 500 +#define BAUD_RATE 115200 +#define INPUT_PIN A0 +#define BUFFER_SIZE 128 + +int circular_buffer[BUFFER_SIZE]; +int data_index, sum; + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); +} + +void loop() { + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample and get envelop + if(timer < 0) { + timer += 1000000 / SAMPLE_RATE; + int sensor_value = analogRead(INPUT_PIN); + int signal = EMGFilter(sensor_value); + int envelop = getEnvelop(abs(signal)); + Serial.print(signal); + Serial.print(","); + Serial.println(envelop); + } +} + +// Envelop detection algorithm +int getEnvelop(int abs_emg){ + sum -= circular_buffer[data_index]; + sum += abs_emg; + circular_buffer[data_index] = abs_emg; + data_index = (data_index + 1) % BUFFER_SIZE; + return (sum/BUFFER_SIZE) * 2; +} + +// Band-Pass Butterworth IIR digital filter, generated using filter_gen.py. +// Sampling rate: 500.0 Hz, frequency: [74.5, 149.5] Hz. +// Filter is order 4, implemented as second-order sections (biquads). +// Reference: +// https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html +// https://courses.ideate.cmu.edu/16-223/f2020/Arduino/FilterDemos/filter_gen.py +float EMGFilter(float input) +{ + float output = input; + { + static float z1, z2; // filter section state + float x = output - 0.05159732*z1 - 0.36347401*z2; + output = 0.01856301*x + 0.03712602*z1 + 0.01856301*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -0.53945795*z1 - 0.39764934*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - 0.47319594*z1 - 0.70744137*z2; + output = 1.00000000*x + 2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.00211112*z1 - 0.74520226*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + return output; +} + +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/3_EMGEnvelope/EMGEnvelop.mp4 b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/3_EMGEnvelope/EMGEnvelop.mp4 new file mode 100644 index 00000000..c52b22c5 Binary files /dev/null and b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/3_EMGEnvelope/EMGEnvelop.mp4 differ diff --git a/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/3_EMGEnvelope/EMGEnvelop.png b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/3_EMGEnvelope/EMGEnvelop.png new file mode 100644 index 00000000..0fb9d08b Binary files /dev/null and b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/3_EMGEnvelope/EMGEnvelop.png differ diff --git a/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/4_ClawController/3D-Claw/Servo gripper v8.png b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/4_ClawController/3D-Claw/Servo gripper v8.png new file mode 100644 index 00000000..e340cbc9 Binary files /dev/null and b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/4_ClawController/3D-Claw/Servo gripper v8.png differ diff --git a/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/4_ClawController/4_ClawController.md b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/4_ClawController/4_ClawController.md new file mode 100644 index 00000000..f272b393 --- /dev/null +++ b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/4_ClawController/4_ClawController.md @@ -0,0 +1,139 @@ +Claw Controller - BioAmp EXG Pill +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +```js + +#if defined(ESP32) + #include +#else + #include +#endif + +#define SAMPLE_RATE 500 +#define BAUD_RATE 115200 +#define INPUT_PIN A0 +#define BUFFER_SIZE 128 +#define SERVO_PIN 9 +#define EMG_MIN 2 +#define EMG_MAX 10 + +int circular_buffer[BUFFER_SIZE]; +int data_index, sum; +int flag=0; +Servo servo; + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); + // Attach servo + servo.attach(SERVO_PIN); +} + +void loop() { + //For initial setup only + if(flag==0){ + Serial.println("Servo is now at 180 degree. Place the Servo arm & screw it in place."); + Serial.println("It is recommended to remove USB while placing servo arm."); + + servo.write(180); + delay(10000); + flag=1; + } + + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample and get envelop + if(timer < 0) { + timer += 1000000 / SAMPLE_RATE; + int sensor_value = analogRead(INPUT_PIN); + int signal = EMGFilter(sensor_value); + int envelop = getEnvelop(abs(signal)); + int servo_position = map(envelop, EMG_MIN, EMG_MAX, 90, 180); + servo.write(servo_position); + Serial.print(signal); + Serial.print(","); + Serial.println(servo_position); + } +} + +// Envelop detection algorithm +int getEnvelop(int abs_emg){ + sum -= circular_buffer[data_index]; + sum += abs_emg; + circular_buffer[data_index] = abs_emg; + data_index = (data_index + 1) % BUFFER_SIZE; + return (sum/BUFFER_SIZE) * 2; +} + +// Band-Pass Butterworth IIR digital filter, generated using filter_gen.py. +// Sampling rate: 500.0 Hz, frequency: [74.5, 149.5] Hz. +// Filter is order 4, implemented as second-order sections (biquads). +// Reference: +// https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html +// https://courses.ideate.cmu.edu/16-223/f2020/Arduino/FilterDemos/filter_gen.py +float EMGFilter(float input) +{ + float output = input; + { + static float z1, z2; // filter section state + float x = output - 0.05159732*z1 - 0.36347401*z2; + output = 0.01856301*x + 0.03712602*z1 + 0.01856301*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -0.53945795*z1 - 0.39764934*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - 0.47319594*z1 - 0.70744137*z2; + output = 1.00000000*x + 2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.00211112*z1 - 0.74520226*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + return output; +} +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/5_ServoControl/5_ServoControl.md b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/5_ServoControl/5_ServoControl.md new file mode 100644 index 00000000..4dadc1f9 --- /dev/null +++ b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/5_ServoControl/5_ServoControl.md @@ -0,0 +1,131 @@ +Servo Control - BioAmp EXG Pill +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +```js + +#include +#if defined(ESP32) + #include +#else + #include +#endif + +#define SAMPLE_RATE 500 +#define BAUD_RATE 115200 +#define INPUT_PIN 17 +#define BUFFER_SIZE 128 +#define SERVO_PIN 19 +#define EMG_MIN 2 +#define EMG_MAX 10 + +int circular_buffer[BUFFER_SIZE]; +int data_index, sum; + +Servo servo; + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); + // Attach servo + servo.attach(SERVO_PIN); +} + +void loop() { + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample and get envelop + if(timer < 0) { + timer += 1000000 / SAMPLE_RATE; + int sensor_value = analogRead(INPUT_PIN); + int signal = EMGFilter(sensor_value); + int envelop = getEnvelop(abs(signal)); + int servo_position = map(envelop, EMG_MIN, EMG_MAX, 0, 180); + servo.write(servo_position); + Serial.print(signal); + Serial.print(","); + Serial.println(servo_position); + } +} + +// Envelop detection algorithm +int getEnvelop(int abs_emg){ + sum -= circular_buffer[data_index]; + sum += abs_emg; + circular_buffer[data_index] = abs_emg; + data_index = (data_index + 1) % BUFFER_SIZE; + return (sum/BUFFER_SIZE) * 2; +} + +// Band-Pass Butterworth IIR digital filter, generated using filter_gen.py. +// Sampling rate: 500.0 Hz, frequency: [74.5, 149.5] Hz. +// Filter is order 4, implemented as second-order sections (biquads). +// Reference: +// https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html +// https://courses.ideate.cmu.edu/16-223/f2020/Arduino/FilterDemos/filter_gen.py +float EMGFilter(float input) +{ + float output = input; + { + static float z1, z2; // filter section state + float x = output - 0.05159732*z1 - 0.36347401*z2; + output = 0.01856301*x + 0.03712602*z1 + 0.01856301*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -0.53945795*z1 - 0.39764934*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - 0.47319594*z1 - 0.70744137*z2; + output = 1.00000000*x + 2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.00211112*z1 - 0.74520226*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + return output; +} + +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/6_LEDBarGraph/6_LEDBarGraph.md b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/6_LEDBarGraph/6_LEDBarGraph.md new file mode 100644 index 00000000..07a4adba --- /dev/null +++ b/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/6_LEDBarGraph/6_LEDBarGraph.md @@ -0,0 +1,133 @@ +LED Bar Graph - BioAmp EXG Pill +https://github.com/upsidedownlabs/BioAmp-EXG-Pill + + +Upside Down Labs invests time and resources providing this open source code, +please support Upside Down Labs and open-source hardware by purchasing +products from Upside Down Labs! + +Copyright (c) 2021 Upside Down Labs - contact@upsidedownlabs.tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +```js + +#define SAMPLE_RATE 500 +#define BAUD_RATE 115200 +#define INPUT_PIN A0 +#define BUFFER_SIZE 128 + +int circular_buffer[BUFFER_SIZE]; +int data_index, sum; +// LED pin numbers in-order +int led_bar[] = {4, 5, 6, 7, 8, 9, 10, 11, 12}; +int total_leds = sizeof(led_bar) / sizeof(led_bar[0]); + +void setup() { + // Serial connection begin + Serial.begin(BAUD_RATE); + // Initialize all the led_bar + for (int i = 0; i < total_leds; i++) { + pinMode(led_bar[i], OUTPUT); + } +} + +void loop() { + // Calculate elapsed time + static unsigned long past = 0; + unsigned long present = micros(); + unsigned long interval = present - past; + past = present; + + // Run timer + static long timer = 0; + timer -= interval; + + // Sample and get envelop + if(timer < 0) { + timer += 1000000 / SAMPLE_RATE; + int sensor_value = analogRead(INPUT_PIN); + int signal = EMGFilter(sensor_value); + int envelop = getEnvelop(abs(signal)); + + // Update LED bar graph + for(int i = 0; i<=total_leds; i++){ + if(i>(envelop-1)){ + digitalWrite(led_bar[i], LOW); + } else { + digitalWrite(led_bar[i], HIGH); + } + } + + Serial.print(signal); + Serial.print(","); + Serial.println(envelop); + } +} + +// Envelop detection algorithm +int getEnvelop(int abs_emg){ + sum -= circular_buffer[data_index]; + sum += abs_emg; + circular_buffer[data_index] = abs_emg; + data_index = (data_index + 1) % BUFFER_SIZE; + return (sum/BUFFER_SIZE) * 2; +} + +// Band-Pass Butterworth IIR digital filter, generated using filter_gen.py. +// Sampling rate: 500.0 Hz, frequency: [74.5, 149.5] Hz. +// Filter is order 4, implemented as second-order sections (biquads). +// Reference: +// https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html +// https://courses.ideate.cmu.edu/16-223/f2020/Arduino/FilterDemos/filter_gen.py +float EMGFilter(float input) +{ + float output = input; + { + static float z1, z2; // filter section state + float x = output - 0.05159732*z1 - 0.36347401*z2; + output = 0.01856301*x + 0.03712602*z1 + 0.01856301*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -0.53945795*z1 - 0.39764934*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - 0.47319594*z1 - 0.70744137*z2; + output = 1.00000000*x + 2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + { + static float z1, z2; // filter section state + float x = output - -1.00211112*z1 - 0.74520226*z2; + output = 1.00000000*x + -2.00000000*z1 + 1.00000000*z2; + z2 = z1; + z1 = x; + } + return output; +} + +``` \ No newline at end of file diff --git a/docs/BioAmp-Software/intro.md b/docs/BioAmp-Software/intro.md index aa0131c8..3e194a1e 100644 --- a/docs/BioAmp-Software/intro.md +++ b/docs/BioAmp-Software/intro.md @@ -1,5 +1,5 @@ --- -sidebar_position: 1 +sidebar_position: 4 + --- -# Software examples \ No newline at end of file diff --git a/docs/Experiments/EEGExperiments.md b/docs/Experiments/ECG Experiments/ECGExperiments.md similarity index 63% rename from docs/Experiments/EEGExperiments.md rename to docs/Experiments/ECG Experiments/ECGExperiments.md index 1923ccdf..dd81c0c1 100644 --- a/docs/Experiments/EEGExperiments.md +++ b/docs/Experiments/ECG Experiments/ECGExperiments.md @@ -2,4 +2,4 @@ sidebar_position: 4 --- -# EEG Experiments \ No newline at end of file +# ECG Experiments \ No newline at end of file diff --git a/docs/Experiments/EEG Experiments/EEGExperiments.md b/docs/Experiments/EEG Experiments/EEGExperiments.md new file mode 100644 index 00000000..bca6396a --- /dev/null +++ b/docs/Experiments/EEG Experiments/EEGExperiments.md @@ -0,0 +1,183 @@ +--- +sidebar_position: 2 +--- + +# EEG Experiments + +# Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill + +![](EEGimg/eegimg1.png) + +In this project we will be recording brainwaves or EEG from prefrontal cortex part of the brain using Arduino Uno and BioAmp EXG Pill. + +## What is Electroencephalography (EEG)? + +An electroencephalogram (EEG) is a test used to evaluate the electrical activity in your brain. It can help detect potential problems with brain cell communication. + +## About BioAmp EXG Pill: + +BioAmp EXG Pill is one of a kind pill-size chip that can record publication-grade biopotential signals from your body be it from the heart (ECG), brain (EEG), eyes (EOG), and muscles (EMG). + +The entire BioAmp series of sensors from Upside Down Labs is designed in a way to teach you the basics of the instrumentation amplifier, active bandpass filtering, soldering, programming, neuroscience, HCI, and BCI just to name a few concepts. + +# Supplies + +## HARDWARE + +1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin) + +1 x BioAmp Cable + +3 x Gel Electrodes + +3 x Jumper Cables + +1 x Arduino Uno / Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC) + +1 x Nuprep Skin Preparation Gel + +1 x Wet wipe + +1 x Brain BioAmp Band (optional) + +1 x Electrode Gel (only if using Brain BioAmp Band) + +## SOFTWARE + +1. Arduino IDE +2. Backyard Brains' Spike Recorder + +**Note**: You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below: + +DIY Neuroscience Kit Basic ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/) | +[Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) | [Amazon Store](https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ)) + +BioAmp EXG Pill Pack ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/bioamp-exg-pill/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) ) + +BioAmp EXG Pill - EXG Explorer Pack ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/bioamp-exg-pill/) | +[Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) | [Amazon Store](https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1)) + +**Disclaimer:** DIY Neuroscience Kit Basic includes everything you need for this project but BioAmp EXG Pill Packs does not include all the supplies and you will have to order them seperately from our stores. + +## Step 1: Assembly + +![](EEGimg/eegimg2.jpg) + +The BioAmp EXG Pill comes presoldered with DIY Neuroscience Kit Basic but in case you are getting BioAmp EXG Pill seperately then you will have to assemble it for this project by soldering the header pins and JST PH 2.0 connector as shown in the diagram. + +## Step 2: Skin Preparation + +![dodge gif](./EEGimg/Skin_Prep2.gif) + +Apply Nuprep Skin Preparation Gel on the skin surface where electrodes would be placed to remove dead skin cells and clean the skin from dirt. After rubbing the skin surface thoroughly, clean it with a wet wipe. + + +### About Nuprep Gel: +Nuprep skin preparation gel is a mildly abrasive, highly conductive gel that should be applied before placing the electrodes on the skin to improve measurements. When applied gently, it strips away the top layer of skin and moistens the underlying skin layer which reduces the skin impedance with minimal skin irritation and discomfort. + +## Step 3: Connecting Electrode Cable + +![dodge gif](./EEGimg/eeggif1.gif) + +Connect the BioAmp Cable to BioAmp EXG Pill. We have different variants of the BioAmp Cable so don't go with the color coding and focus on the REF, IN+ and IN- written on the BioAmp EXG Pill. + +## Step 4: Electrode Placements + +![dodge gif](./EEGimg/eeggif2.gif) +![dodge gif](./EEGimg/eeggif3.gif) + +Let's understand the electrode placements before moving forward in this project. For recording EEG from prefrontal cortex part of brain, you have to place the electrodes on your forehead, specifically on Fp1 and Fp2 refer International 10-20 system for recording EEG + +### What is International 10-20 system for recording EEG? + +It is an internationally recognized method to describe and apply the location of electrodes in the context of an EEG exam or voluntary lab research. This method was developed to maintain standardized testing methods ensuring that a subject's study outcomes (clinical or research) could be compiled, reproduced, and effectively analyzed and compared using the scientific method. + +### Options to measure EEG + +So now we have 2 options to measure the EEG signals, either using the gel electrodes or using dry electrode based EEG band. You can try both of them one by one. + +### Option 1 - Measuring EEG using Gel electrodes: + +1. Connect the BioAmp Cable to gel electrodes, +2. Peel the plastic backing from electrodes +3. Place the IN+ and IN- cables on the forehead & REF (reference) at the bony part, on the back side of your earlobe as shown in the video above. + +### Option 2 - Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band and gel electrode: + + +1. Connect the BioAmp Cable to Brain BioAmp Band in a way such that IN+ and IN- are placed on the forehead. +2. In this case, the REF (reference) should be connected using gel electrode. So connect the reference of BioAmp Cable to the gel electrode, peel the plastic backing and place it at the bony part, on the back side of your earlobe. +3. Now put a small drop of electrode gel on the dry electrodes (IN+ and IN-) between the skin and metallic part of BioAmp Cable to get the best results. + +## Step 5: Connections + + +![](EEGimg/eegimg3.webp) + +Connect BioAmp EXG Pill to Arduino Uno using the jumper cables as directed below: + +1. VCC to 5V +2. GND to GND +3. OUT to A0 + + +## Step 6: Download Arduino IDE + +Download the Arduino IDE from the link given below: + +[Ardiuno IDE](https://www.arduino.cc/en/software) + + +(We have used Arduino IDE version 1.8.19 for this project) + +After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B) + +**Note**: Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition. + + +## Step 7: Download Spike Recorder + +Download Backyard Brains' Spike Recorder according to the operating system you are using (Windows, OSX, Linux) from the link given below: + +https://backyardbrains.com/products/spikerecorder + +After installing the software, just copy paste the Spike Recorder Arduino Code by clicking the link below in Arduino IDE, save the file and flash it on the Arduino Uno. + +Spike Recorder Arduino Code: https://raw.githubusercontent.com/BackyardBrains/SpikerShield/master/Muscle/Arduino%20Code/SpikeRecorder/SpikeRecorderSpikerShield_V1_1.ino + +Now start the Spike Recorder. + +## Step 8: Configurations on Spike Recorder + +![](EEGimg/eegimg4.jpg) + +When the Spike Recorder starts, it will start recording from your microphone. To change that, go to the settings by clicking the first icon on the top left corner of the screen, select the COM port of your Arduino Uno and click on connect. + +Also mute the speakers and apply the 50Hz notch filter by clicking on the checkbox as shown in the screenshot above. + +You should set the low band pass filter to 1Hz and high bandpass filter to 40Hz as we are only recording the EEG singnals which range between these frequencies. + +Now everything is configured and connected. So close the settings window and start recording EEG signals. + +## Step 9: Visualizing EEG + + + + + +The signals that you can see on the screen right now are originating from prefrontal cortex part of your brain and propagating through all the layers to the surface of your skin. + +To record these EEG signals, you have placed the electrodes on the forehead, then BioAmp EXG Pill is amplifying those signals so that we can detect it and finally sending it to the ADC (Analog to Digital Convertor) of your Arduino Uno. Ultimately the signals are being visualized in Spike Recorder software. + +We hope everything is clear now and you understand how the signals are propagating from your brain to the screen of the laptop. + +** Features of Spike Recorder that you can explore:** + +1. Increase or decrease the scale of the Y axis by clicking on the + and - icons respecitively that is present on the left side of the graph. +2. Increase or decrease the X axis timescale by sliding up and down on the scroll wheel of the mouse. +3. Visualize the FFT graph by clicking on the FFT icon on top left size of the screen. +4. Record the data in .wav format by clicking the record icon on the top right corner. You can convert this data in any other format according to your project requirements. +5. Listen to the signals by clicking the volume icon on the top right corner. No don't smile right now, that's how your brain sounds like :P +It was a very basic project, but now we think you are all set to explore on your own and make amazing BCI projects. Let us know your feedback in the comments and feel free to ask any questions. + +You can also mail us at support@upsidedownlabs.tech for any kind of support while you are making this project. \ No newline at end of file diff --git a/docs/Experiments/EEG Experiments/EEGimg/Skin_Prep2.gif b/docs/Experiments/EEG Experiments/EEGimg/Skin_Prep2.gif new file mode 100644 index 00000000..3b86273b Binary files /dev/null and b/docs/Experiments/EEG Experiments/EEGimg/Skin_Prep2.gif differ diff --git a/docs/Experiments/EEG Experiments/EEGimg/eeggif1.gif b/docs/Experiments/EEG Experiments/EEGimg/eeggif1.gif new file mode 100644 index 00000000..9d945df0 Binary files /dev/null and b/docs/Experiments/EEG Experiments/EEGimg/eeggif1.gif differ diff --git a/docs/Experiments/EEG Experiments/EEGimg/eeggif2.gif b/docs/Experiments/EEG Experiments/EEGimg/eeggif2.gif new file mode 100644 index 00000000..bd8c9386 Binary files /dev/null and b/docs/Experiments/EEG Experiments/EEGimg/eeggif2.gif differ diff --git a/docs/Experiments/EEG Experiments/EEGimg/eeggif3.gif b/docs/Experiments/EEG Experiments/EEGimg/eeggif3.gif new file mode 100644 index 00000000..c64bac11 Binary files /dev/null and b/docs/Experiments/EEG Experiments/EEGimg/eeggif3.gif differ diff --git a/docs/Experiments/EEG Experiments/EEGimg/eegimg1.png b/docs/Experiments/EEG Experiments/EEGimg/eegimg1.png new file mode 100644 index 00000000..a9df86f9 Binary files /dev/null and b/docs/Experiments/EEG Experiments/EEGimg/eegimg1.png differ diff --git a/docs/Experiments/EEG Experiments/EEGimg/eegimg2.jpg b/docs/Experiments/EEG Experiments/EEGimg/eegimg2.jpg new file mode 100644 index 00000000..0d178e5d Binary files /dev/null and b/docs/Experiments/EEG Experiments/EEGimg/eegimg2.jpg differ diff --git a/docs/Experiments/EEG Experiments/EEGimg/eegimg3.webp b/docs/Experiments/EEG Experiments/EEGimg/eegimg3.webp new file mode 100644 index 00000000..4660bf3f Binary files /dev/null and b/docs/Experiments/EEG Experiments/EEGimg/eegimg3.webp differ diff --git a/docs/Experiments/EEG Experiments/EEGimg/eegimg4.jpg b/docs/Experiments/EEG Experiments/EEGimg/eegimg4.jpg new file mode 100644 index 00000000..1ab5441b Binary files /dev/null and b/docs/Experiments/EEG Experiments/EEGimg/eegimg4.jpg differ diff --git a/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/BisCute_Visualize EMG.md b/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/BisCute_Visualize EMG.md new file mode 100644 index 00000000..164ac5ce --- /dev/null +++ b/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/BisCute_Visualize EMG.md @@ -0,0 +1,166 @@ +# Visualizing Muscle Signals (EMG) + + +![](EMGimg2/Thumbnail2.jpg) +![](EMGimg2/Thumbnail1.jpg) + +Muscle sensors are typically quite expensive as they are medical-grade diagnostic devices. But with an affordable DIY Muscle Sensor like Muscle BioAmp BisCute, you can record biopotential signals from muscles, conduct experiments and make amazing projects at a fraction of the cost of a professional EMG machine. + +## What is Electromyography (EMG)? + +Electromyography is a technique that measures muscle response or electrical activity in response to a nerve’s stimulation of the muscle. We can use this electrical activity to detect neuromuscular abnormalities or create solutions for some crazy real-world problems like making artificial limb for amputees. + +### About Muscle BioAmp BisCute: + +Muscle BioAmp BisCute is the most affordable DIY muscle sensor that allows you to create a Human-Computer Interface (HCI) with ease and in the process of building your own BisCute, you learn what goes into making a functional biopotential amplifier that can be used for amplifying sub mV signals created by muscles inside your body to a level a microcontroller unit (MCU) can understand. + +The entire BioAmp series of sensors from Upside Down Labs is designed in a way to teach you the basics of the instrumentation amplifier, active bandpass filtering, soldering, programming, neuroscience, HCI, and BCI just to name a few concepts. + +## Supplies +### HARDWARE: + +1 x Muscle BioAmp BisCute Kit ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/muscle-bioamp-biscute-diy/) | [Amazon India](https://www.amazon.in/dp/B0BDRFL2VY/ref=brnd_rev_mng) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-biscute-diy-muscle-sensor/)) + + +- The Kit includes: + - Muscle BioAmp BisCute PCB x 1 + - Passive Components + - Ceramic capacitors. + - Electrolytic capacitors + - Resistors + - Quad OpAmp + - BioAmp Cable (50cm) x 1 + - Jumper Wires x 3 + - Gel Electrodes x 3 + - Muscle BioAmp Band x 1 + + +1 x Arduino UNO with USB cable (Type A to Type B) + +Soldering iron and other equipments to solder the passive components on the PCB + + +### SKIN PREPARATION KIT & ELECTRODE GEL: + +1 x NuPrep skin preparation gel ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/nuprep-gel/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/)) + +1 x Wet wipe + +1 x Electrode Gel (only if using Muscle BioAmp Band) ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/electrode-gel/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/electrode-gel-250ml/)) + + +### SOFTWARE: + +Arduino IDE + + +## Step 1: Assembly + + + +As Muscle BioAmp BisCute is a DIY muscle sensor, so first of all you have to assemble all the passive components on the PCB. + +The interactive BOM can be found on the link below: + +https://upsidedownlabs.github.io/Muscle-BioAmp-BisCute/ + +If you don't know how to solder then you may get the SMD version of Muscle BioAmp BisCute which is Muscle BioAmp Candy, a candy size muscle sensor 1 x Muscle BioAmp BisCute Kit ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/muscle-bioamp-candy/) | [Amazon India](https://www.amazon.in/Muscle-Accessories-Upside-Down-Labs/dp/B09ZDZVCT7/ref=sr_1_3?crid=3B0OFI7LBCGWV&keywords=bioamp&qid=1691132541&sprefix=bioamp%2Caps%2C208&sr=8-3) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-candy/)) + +## Step 2: Connecting Electrode Cable + +![dodge gif](./EMGimg2/Connecting%20Electrode%20Cable.gif) + + +Connect the BioAmp Cable to Muscle BioAmp BisCute. We have different variants of the BioAmp Cable so don't go with the color coding and focus on the REF, IN+ and IN- written on the Muscle BioAmp BisCute. + +**Note:** Don't place the electrodes on the skin at this moment. + +## Step 3: Skin Preparation + +![dodge gif](./EMGimg2/Skin%20Preparation.gif) + + +Apply Nuprep Skin Preparation Gel on the skin surface where electrodes would be placed to remove dead skin cells and clean the skin from dirt. After rubbing the skin surface thoroughly, clean it with a wet wipe. + +### About Nuprep Gel: + +Nuprep skin preparation gel is a mildly abrasive, highly conductive gel that should be applied before placing the electrodes on the skin to improve measurements. When applied gently, it strips away the top layer of skin and moistens the underlying skin layer which reduces the skin impedance with minimal skin irritation and discomfort. + + +## Step 4: Electrode Placements + +![dodge gif](./EMGimg2/Using%20Gel%20Electrodes.gif) + +![dodge gif](./EMGimg2/Using%20EMG%20Band.gif) + +We have 2 options to measure the EMG signals, either using the gel electrodes or using dry electrode based EMG band. You can try both of them one by one. + + +### Measuring EMG using Gel electrodes: + +1. Connect the BioAmp Cable to gel electrodes, +2. Peel the plastic backing from electrodes +3. Place the IN+ and IN- cables on the arm near the ulnar nerve & REF (reference) at the back of your hand. + +### Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band: + +1. Connect the BioAmp Cable to Muscle BioAmp Band in a way such that IN+ and IN- are placed on the arm near the ulnar nerve & REF (reference) on the far side of the band. +2. Wear the band on your arm as shown in the gif above. +3. Now put a small drop of electrode gel between the skin and metallic part of BioAmp Cable to get the best results. + +## Step 5: Connections + +![](EMGimg2/Connections%20with%20Arduino%20Uno.jpg) + + +Connect Muscle BioAmp BisCute to Arduino Uno using the jumper cables as directed below: + +- VCC to 5V +- GND to GND +- OUT to A0 +**Note:** BE VERY CAREFUL and follow the above diagram while making the connections between your Muscle BioAmp BisCute & Arduino Uno, especially the GND and VCC else it may damage the sensor. + + +## Step 6: Download Arduino IDE + +Download the Arduino IDE from the link given below: + +https://www.arduino.cc/en/software + +(We have used Arduino IDE version 1.8.19 for this project) + +After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B) + +**Note:** Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition. + + +## Step 7: Coding Time! +Copy paste any one of the Arduino Sketches given below in Arduino IDE: + +EMG Envelop: https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino + +EMG Filter: https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino + +After flashing the code, open the serial plotter to visualize the EMG signals. + + +## Step 8: Enjoy & Flex Your Arm + + + + +Enjoy, finally you have completed the project. Now flex your arm to visualize the muscle signals in real time on your laptop. Similarly you can try to record EMG from other parts of your body like biceps, triceps, cheeks, thighs, etc. + +You are all set to explore on your own and make amazing HCI projects at the comfort zone of your home. + +## Step 9: Complete Video Guide + + + +You can also watch this complete video guide of this project. + +Let us know your feedback in the comments and feel free to ask any questions. + +You can also mail us at support@upsidedownlabs.tech for any kind of support while you are making this project. + + diff --git a/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Connecting Electrode Cable.gif b/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Connecting Electrode Cable.gif new file mode 100644 index 00000000..5dc6d96f Binary files /dev/null and b/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Connecting Electrode Cable.gif differ diff --git a/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Connections with Arduino Uno.jpg b/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Connections with Arduino Uno.jpg new file mode 100644 index 00000000..312383c3 Binary files /dev/null and b/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Connections with Arduino Uno.jpg differ diff --git a/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Skin Preparation.gif b/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Skin Preparation.gif new file mode 100644 index 00000000..5fa08e68 Binary files /dev/null and b/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Skin Preparation.gif differ diff --git a/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Thumbnail1.jpg b/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Thumbnail1.jpg new file mode 100644 index 00000000..cd765326 Binary files /dev/null and b/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Thumbnail1.jpg differ diff --git a/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Thumbnail2.jpg b/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Thumbnail2.jpg new file mode 100644 index 00000000..1526309d Binary files /dev/null and b/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Thumbnail2.jpg differ diff --git a/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Using EMG Band.gif b/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Using EMG Band.gif new file mode 100644 index 00000000..7ad03df1 Binary files /dev/null and b/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Using EMG Band.gif differ diff --git a/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Using Gel Electrodes.gif b/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Using Gel Electrodes.gif new file mode 100644 index 00000000..3e0f95cf Binary files /dev/null and b/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/EMGimg2/Using Gel Electrodes.gif differ diff --git a/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield.md b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield.md new file mode 100644 index 00000000..3771ee5a --- /dev/null +++ b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield.md @@ -0,0 +1,159 @@ +# Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield + +![dodge gif](./EMGimg3/Thumbnail.gif) + + +In this tutorial we are going to show you how to create a simple EMG system at your home so that you can record the muscle signals and control a servo claw using the Arduino Uno shield for EMG, Muscle BioAmp Shield. With this experiment you will learn the basics of how EMG controlled prosthetic hand works. + +But before moving forward, let's understand a brief about Electromyography. + +## What is Electromyography (EMG)? + +Electromyography is a technique that measures muscle response or electrical activity in response to a nerve’s stimulation of the muscle. We can use this electrical activity to detect neuromuscular abnormalities or create solutions for some crazy real-world problems like making artificial limb for amputees. + + +![dodge gif](EMGimg3/EMGEnvelop.png) + +### About Muscle BioAmp Shield: + +Muscle BioAmp Shield is an all in one Arduino Uno Shield for Electromyography (EMG). It is perfect for beginners as it can be stacked on top of Arduino Uno to record, visualize and listen to the muscle signals to make amazing Human Computer Interface (HCI) projects. It also comes with various plug and play options so you can connect hundreds of devices like OLED screens, character displays, accelerometers, servo claw to name just a few using the I2C interface. + +This is one of the product in the entire BioAmp series of sensors from Upside Down Labs which is designed in a way to teach you the basics of the instrumentation amplifier, active bandpass filtering, soldering, programming, neuroscience, Human Computer Interface (HCI), Brain Computer Interface (BCI), etc. + +![](EMGimg3/Muscle%20BioAmp%20Shield%20Infographic.jpg) + +## Supplies + +### HARDWARE: + +**1 x Muscle BioAmp Shield Kit** ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/muscle-bioamp-shield-v0-3/) | + [Amazon Store](https://www.amazon.in/dp/B09Z32M3PP?ref_=cm_sw_r_cp_ud_dp_N6R5671596GFW0C3JAF0) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-shield-v03-arduino-shield-for-emg/)) + + +- The Kit includes: + - Muscle BioAmp Shield PCB x 1 + - Components + - Ceramic capacitors. + - Electrolytic capacitors + - Resistors + - LEDs + - Audio Jack + - Connectors + - Tactical Switch + - Optocoupler + - Quad OpAmp, etc. + - BioAmp Cable (100cm) x 1 + - Gel Electrodes x 24 + - Muscle BioAmp Band x 1 + - BioAmp AUX Cable x 1 + - 9V Snap Cable x 1 + - STEMMA Cables x 6 + + +1 x Arduino uno with USB cable (Type A to Type B) + +Soldering iron and other equipments to solder the components on the PCB + +## SKIN PREPARATION KIT & ELECTRODE GEL: + +1 x NuPrep skin preparation gel ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/nuprep-gel/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/)) + +1 x Wet wipe +([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/electrode-gel/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/electrode-gel-250ml/)) + + +### SOFTWARE: + +Arduino IDE + +## Step 1: Assembly + + + +First of all, you have to assemble all the passive components on the Muscle BioAmp Shield PCB. For a step-by-step guide of the assembly, you can follow the video above or take a look at this [interactive BOM](https://docs.upsidedownlabs.tech/DIY-Muscle-BioAmp-Shield/ibom.html). + +## Step 2: Stacking on Arduino Uno +![dodge gif](./EMGimg3/Stacking%20on%20Arduino%20Uno.gif) + +Stack the Muscle BioAmp Shield on top of Arduino Uno properly. + +## Step 3: Skin Preparation +![dodge gif](./EMGimg3/Skin%20Preparation.gif) + +Apply Nuprep Skin Preparation Gel on the skin surface where electrodes would be placed to remove dead skin cells and clean the skin from dirt. After rubbing the skin surface thoroughly, clean it with a wet wipe. + +### About Nuprep Gel: + +Nuprep skin preparation gel is a mildly abrasive, highly conductive gel that should be applied before placing the electrodes on the skin to improve measurements. When applied gently, it strips away the top layer of skin and moistens the underlying skin layer which reduces the skin impedance with minimal skin irritation and discomfort. + +## Step 4: Connecting Electrode Cable +![dodge gif](./EMGimg3/Connecting%20Electrode%20Cable.gif) + +Connect the BioAmp Cable to Muscle BioAmp Shield as shown in the connection diagram. + +**Note:** Don't place the electrodes on the skin at this moment. + +## Step 5: Electrode Placements +![dodge gif](./EMGimg3/Using%20Gel%20Electrodes.gif) + +![dodge gif](./EMGimg3/Using%20EMG%20Band.gif) + + +We have 2 options to measure the EMG signals, either using the gel electrodes or using dry electrode based EMG band. You can try both of them one by one. + +### Measuring EMG using Gel electrodes: + +1. Connect the BioAmp Cable to gel electrodes, +2. Peel the plastic backing from electrodes +3. Place the IN+ and IN- cables on the arm near the ulnar nerve & REF (reference) at the back of your hand. + +### Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band: + +1. Connect the BioAmp Cable to Muscle BioAmp Band in a way such that IN+ and IN- are placed on the arm near the ulnar nerve & REF (reference) on the far side of the band. +2. Now put a small drop of electrode gel between the skin and metallic part of BioAmp Cable to get the best results. + +## Step 6: Connect Servo Claw + +![dodge gif](./EMGimg3/Connecting%20Servo%20Claw.gif) + + +Connect the servo claw to Muscle BioAmp Shield as shown in the video above. + +## Step 7: Download Arduino IDE + +Download the Arduino IDE from the link given below: + +https://www.arduino.cc/en/software + +(We have used Arduino IDE version 1.8.19 for this project) + +After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B) + +**Note:** Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition. + +## Step 8: Coding Time! + +Copy paste the Arduino Sketch given below in Arduino IDE: + +Claw Controller: https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/ClawController/ClawController.ino + +## Step 9: Control Servo Claw by Flexing Your Muscles + +![dodge gif](./EMGimg3/control%20servo%20claw.gif) + + +Now flex your arm to control the servo claw in real time. + +This is the same mechanism/working of how EMG controlled prosthetics work. + +Let us know your feedback in the comments and feel free to ask any questions. + +You can also mail us at support@upsidedownlabs.tech for any kind of support while you are making this project. + +## Step 10: Some Other Projects + + + +You can also make various other projects using Muscle BioAmp Shield like: + +Recording, visualizing and listenting to muscle signals (EMG): https://www.instructables.com/Record-Visualize-Listen-to-Muscle-Signals-Using-Mu/ \ No newline at end of file diff --git a/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Connecting Electrode Cable.gif b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Connecting Electrode Cable.gif new file mode 100644 index 00000000..200ec9f4 Binary files /dev/null and b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Connecting Electrode Cable.gif differ diff --git a/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Connecting Servo Claw.gif b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Connecting Servo Claw.gif new file mode 100644 index 00000000..7087fe20 Binary files /dev/null and b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Connecting Servo Claw.gif differ diff --git a/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/EMGEnvelop.png b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/EMGEnvelop.png new file mode 100644 index 00000000..0fb9d08b Binary files /dev/null and b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/EMGEnvelop.png differ diff --git a/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Muscle BioAmp Shield Infographic.jpg b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Muscle BioAmp Shield Infographic.jpg new file mode 100644 index 00000000..b8b4b1a3 Binary files /dev/null and b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Muscle BioAmp Shield Infographic.jpg differ diff --git a/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Skin Preparation.gif b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Skin Preparation.gif new file mode 100644 index 00000000..5fa08e68 Binary files /dev/null and b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Skin Preparation.gif differ diff --git a/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Stacking on Arduino Uno.gif b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Stacking on Arduino Uno.gif new file mode 100644 index 00000000..e3832050 Binary files /dev/null and b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Stacking on Arduino Uno.gif differ diff --git a/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Thumbnail.gif b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Thumbnail.gif new file mode 100644 index 00000000..523b06fd Binary files /dev/null and b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Thumbnail.gif differ diff --git a/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Using EMG Band.gif b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Using EMG Band.gif new file mode 100644 index 00000000..7ad03df1 Binary files /dev/null and b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Using EMG Band.gif differ diff --git a/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Using Gel Electrodes.gif b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Using Gel Electrodes.gif new file mode 100644 index 00000000..3e0f95cf Binary files /dev/null and b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/Using Gel Electrodes.gif differ diff --git a/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/control servo claw.gif b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/control servo claw.gif new file mode 100644 index 00000000..364da15f Binary files /dev/null and b/docs/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/EMGimg3/control servo claw.gif differ diff --git a/docs/Experiments/EMG Experiments/EMGExperiment1/EMGExperiment1.md b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGExperiment1.md new file mode 100644 index 00000000..41e0a10d --- /dev/null +++ b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGExperiment1.md @@ -0,0 +1,136 @@ +--- +sidebar_position: 1 +--- + +# Recording and Visualizing Muscle Signals (EMG) Using Muscle BioAmp Patchy (wearable Muscle Sensor) + +![](EMGimg/emgimg1.jpg) +![](EMGimg/emgimg2.jpg) + +In this tutorial we are going to show you how to create a simple EMG system at your home so that you can easily record and visualize muscle signals in real time using Muscle BioAmp Patchy (wearable muscle sensor) and Arduino Uno. + +But before moving forward, let's understand a brief about Electromyography. + +## What is Electromyography (EMG)? +Electromyography (EMG) is a technique for evaluating and recording the electrical activity produced by skeletal muscles. + +Some applications of EMG: + +1. Prosthetic hands, +2. Human augmentation, +3. Games controllers, +4. Rehabilitation and +5. Physical therapy +Even doctors are using them for the diagnosis of various neuromuscular ailments. + +Recently, it was in the news that [Meta is working on wearable EMG sensors](https://tech.facebook.com/reality-labs/2021/03/inside-facebook-reality-labs-wrist-based-interaction-for-the-next-computing-platform/) to track user movements in the metaverse. + +### About Muscle BioAmp Patchy: + +Muscle BioAmp Patchy is a small **wearable muscle sensor** for precise EMG sensing. It can be snapped directly to the electrodes, eliminating electrode cables. + +## Supplies + +## HARDWARE + +1 x Muscle BioAmp Patchy Kit ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/muscle-bioamp-patchy-v0-2/) | [Amazon India](https://www.amazon.in/dp/B0C4P2JB7J?ref=myi_title_dp&th=1) | [Tindie India](https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-patchy-wearable-muscle-sensor/)) + +The kit will include: +* 1 Muscle BioAmp Patchy, +* 1 Reference Cable, +* 3 Jumper Wires, +* 3 Boxy Gel Electrodes + + +1 x Arduino Uno with USB Cable + +1 x Nuprep Skin Preparation Gel ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/nuprep-gel/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/)) + +1 x Wet wipe + +## SOFTWARE: + +Ardiuno IDE + +## Step 1: Connecting Reference Cable + +![](EMGimg/emgimg3.jpg) + +Connect the reference cable to the Muscle BioAmp Patchy as shown in the above diagram. + +## Step 2: Connecting Muscle BioAmp Patchy to Gel Electrodes + +![](EMGimg/emgimg4.jpg) + +Connect the Muscle BioAmp Patchy to gel electrodes (Don't peel the plastic from the electrodes at this moment). + +## Step 3: Skin Preparation + +![dodge gif](./EMGimg/Skin_Prep.gif) + +Apply Nuprep Skin Preparation Gel on the skin surface where electrodes would be placed to remove dead skin cells and clean the skin from dirt. After rubbing the skin surface thoroughly, clean it with a wet wipe. + +### About Nuprep Gel: + +Nuprep skin preparation gel is a mildly abrasive, highly conductive gel that should be applied before placing the electrodes on the skin to improve measurements. When applied gently, it strips away the top layer of skin and moistens the underlying skin layer which reduces the skin impedance with minimal skin irritation and discomfort. This enhances the performance of the monitoring electrode and virtually eliminates problems such as diaphoresis and muscle artifacts. + + +## Step 4: Electrode Placements + +![](EMGimg/emgimg5.jpg) + +Now peel off the plastic backing from the gel electrodes and place the Muscle BioAmp Patchy on the muscle from where you want to record muscle signals (EMG). In this project, we are targeting the ulnar nerve on the forearm. + + +## Step 5: Connections + +![](EMGimg/emgimg6.jpg) + + +Connect the Muscle BioAmp Patchy to your Arduino Uno using jumper cables as directed below: + +1. OUT to A0 +2. GND to GND +3. VCC to 5V + + +## Step 6: Download Arduino IDE + +Download the Arduino IDE from the link given below: + +https://www.arduino.cc/en/software + +(We have used Arduino IDE version 1.8.19 for this project) + +After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B) + +**Note:** Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition. + +## Step 7: Check All the Conections + +![](EMGimg/emgimg7.jpg) + +Now that you have made all the connections and downloaded the Arduino IDE. Once again check everything as shown in the diagram. + +## Step 8: Coding Time! + +Copy paste any one of the Arduino Sketches given below in Arduino IDE: + +1. EMG Envelop: https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino +2. EMG Filter: https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino + +After flashing the code, open the serial plotter to visualize the EMG signals. + +## Step 9: Flex Your Muscle + + + + + +Now flex your arm to visualize the muscle signals in real time on your laptop. Similarly you can try to record muscle signals from other parts of your body like biceps, triceps, cheeks, thighs, etc. + +You are all set to explore on your own and make amazing HCI projects at the comfort zone of your home. + +Let us know your feedback in the comments and feel free to ask any questions. + +You can also mail us at support@upsidedownlabs.tech for any kind of support while you are making this project. \ No newline at end of file diff --git a/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/Skin_Prep.gif b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/Skin_Prep.gif new file mode 100644 index 00000000..3de34ffc Binary files /dev/null and b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/Skin_Prep.gif differ diff --git a/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg1.jpg b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg1.jpg new file mode 100644 index 00000000..fb574854 Binary files /dev/null and b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg1.jpg differ diff --git a/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg2.jpg b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg2.jpg new file mode 100644 index 00000000..c286c336 Binary files /dev/null and b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg2.jpg differ diff --git a/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg3.jpg b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg3.jpg new file mode 100644 index 00000000..0821599a Binary files /dev/null and b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg3.jpg differ diff --git a/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg4.jpg b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg4.jpg new file mode 100644 index 00000000..a86aa232 Binary files /dev/null and b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg4.jpg differ diff --git a/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg5.jpg b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg5.jpg new file mode 100644 index 00000000..c28a89f6 Binary files /dev/null and b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg5.jpg differ diff --git a/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg6.jpg b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg6.jpg new file mode 100644 index 00000000..873b2bf2 Binary files /dev/null and b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg6.jpg differ diff --git a/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg7.jpg b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg7.jpg new file mode 100644 index 00000000..0e9db8f5 Binary files /dev/null and b/docs/Experiments/EMG Experiments/EMGExperiment1/EMGimg/emgimg7.jpg differ diff --git a/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Connecting 9V battery.gif b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Connecting 9V battery.gif new file mode 100644 index 00000000..f235e265 Binary files /dev/null and b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Connecting 9V battery.gif differ diff --git a/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Connecting Electrode Cable.gif b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Connecting Electrode Cable.gif new file mode 100644 index 00000000..200ec9f4 Binary files /dev/null and b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Connecting Electrode Cable.gif differ diff --git a/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/EMGEnvelop.png b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/EMGEnvelop.png new file mode 100644 index 00000000..0fb9d08b Binary files /dev/null and b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/EMGEnvelop.png differ diff --git a/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/LED Bar Graph.gif b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/LED Bar Graph.gif new file mode 100644 index 00000000..eb294e54 Binary files /dev/null and b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/LED Bar Graph.gif differ diff --git a/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Listening music.gif b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Listening music.gif new file mode 100644 index 00000000..20789b5f Binary files /dev/null and b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Listening music.gif differ diff --git a/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Muscle BioAmp Shield.jpg b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Muscle BioAmp Shield.jpg new file mode 100644 index 00000000..b8b4b1a3 Binary files /dev/null and b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Muscle BioAmp Shield.jpg differ diff --git a/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Skin Preparation.gif b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Skin Preparation.gif new file mode 100644 index 00000000..5fa08e68 Binary files /dev/null and b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Skin Preparation.gif differ diff --git a/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Stacking on Arduino Uno.gif b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Stacking on Arduino Uno.gif new file mode 100644 index 00000000..e3832050 Binary files /dev/null and b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Stacking on Arduino Uno.gif differ diff --git a/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Thumbnail.gif b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Thumbnail.gif new file mode 100644 index 00000000..dd099926 Binary files /dev/null and b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Thumbnail.gif differ diff --git a/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Using BioAmp AUX Cable.gif b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Using BioAmp AUX Cable.gif new file mode 100644 index 00000000..27607867 Binary files /dev/null and b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Using BioAmp AUX Cable.gif differ diff --git a/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Using EMG Band.gif b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Using EMG Band.gif new file mode 100644 index 00000000..7ad03df1 Binary files /dev/null and b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Using EMG Band.gif differ diff --git a/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Using Gel Electrodes.gif b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Using Gel Electrodes.gif new file mode 100644 index 00000000..3e0f95cf Binary files /dev/null and b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/EMGimg4/Using Gel Electrodes.gif differ diff --git a/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield.md b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield.md new file mode 100644 index 00000000..23d4366a --- /dev/null +++ b/docs/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield.md @@ -0,0 +1,187 @@ +# Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield + + +![dodge gif](./EMGimg4/Thumbnail.gif) + + +In this tutorial, we are going to show you how to create a simple EMG system at your home so that you can record the muscle signals, visualize them on LEDs and even listen to your muscles using the Arduino Uno shield for EMG, Muscle BioAmp Shield. + +But before moving forward, let's understand a brief about Electromyography. + +## What is Electromyography (EMG)? + +Electromyography is a technique that measures muscle response or electrical activity in response to a nerve’s stimulation of the muscle. We can use this electrical activity to detect neuromuscular abnormalities or create solutions for some crazy real-world problems like making artificial limbs for amputees. + +![](EMGimg4/EMGEnvelop.png) + +### About Muscle BioAmp Shield: + +Muscle BioAmp Shield is an all-in-one Arduino Uno Shield for Electromyography (EMG). It is perfect for beginners as it can be stacked on top of Arduino Uno to record, visualize and listen to the muscle signals to make amazing Human-Computer Interface (HCI) projects. It also comes with various plug-and-play options so you can connect hundreds of devices like OLED screens, character displays, accelerometers, and servo claws to name just a few using the I2C interface. + +This is one of the products in the entire BioAmp series of sensors from Upside Down Labs which is designed in a way to teach you the basics of the instrumentation amplifier, active bandpass filtering, soldering, programming, neuroscience, Human-Computer Interface (HCI), Brain-Computer Interface (BCI), etc. + +![](EMGimg4/Muscle%20BioAmp%20Shield.jpg) + +## Supplies +### HARDWARE: + +1 x Muscle BioAmp Shield Kit ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/muscle-bioamp-shield-v0-3/) | [Amazon India](https://www.amazon.in/dp/B09Z32M3PP?ref_=cm_sw_r_cp_ud_dp_N6R5671596GFW0C3JAF0) | [Tindie India](https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-shield-v03-arduino-shield-for-emg/)) + +- The Kit includes: + - Muscle BioAmp Shield PCB x 1 + - Components + - Ceramic capacitors. + - Electrolytic capacitors + - Resistors + - LEDs + - Audio Jack + - Connectors + - Tactical Switch + - Optocoupler + - Quad OpAmp, etc. + - BioAmp Cable (100cm) x 1 + - Gel Electrodes x 24 + - Muscle BioAmp Band x 1 + - BioAmp AUX Cable x 1 + - 9V Snap Cable x 1 + - STEMMA Cables x 6 + +1 x Arduino uno with USB cable (Type A to Type B) + +1 x 9V Battery (Optional, only if you want to make the system portable) + +Soldering iron and other equipments to solder the components on the PCB + + +### SKIN PREPARATION KIT & ELECTRODE GEL: +1 x NuPrep skin preparation gel ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/nuprep-gel/) | [Tindie India](https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/)) + +1 x Wet wipe + +1 x Electrode Gel (only if using Muscle BioAmp Band) ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/electrode-gel/) | [Tindie India](https://www.tindie.com/products/upsidedownlabs/electrode-gel-250ml/)) + +### SOFTWARE: + +Arduino IDE + +## Step 1: Assembly + + + + +First of all, you have to assemble all the passive components on the Muscle BioAmp Shield PCB. For a step-by-step guide for the assembly, you can follow the video above or take a look at this ([interactive BOM](https://docs.upsidedownlabs.tech/DIY-Muscle-BioAmp-Shield/ibom.html)) + +## Step 2: Stacking on Arduino Uno + + +![dodge gif](./EMGimg4/Stacking%20on%20Arduino%20Uno.gif) + +Stack the Muscle BioAmp Shield on top of Arduino Uno properly. + +## Step 3: Connecting Electrode Cable +![dodge gif](./EMGimg4/Connecting%20Electrode%20Cable.gif) + +Connect the BioAmp Cable to Muscle BioAmp Shield as shown in the connection diagram. + +**Note:** Don't place the electrodes on the skin at this moment. + +## Step 4: Skin Preparation +![dodge gif](./EMGimg4/Skin%20Preparation.gif) +Apply Nuprep Skin Preparation Gel on the skin surface where electrodes would be placed to remove dead skin cells and clean the skin from dirt. After rubbing the skin surface thoroughly, clean it with a wet wipe. + +### About Nuprep Gel: + +Nuprep skin preparation gel is a mildly abrasive, highly conductive gel that should be applied before placing the electrodes on the skin to improve measurements. When applied gently, it strips away the top layer of skin and moistens the underlying skin layer which reduces the skin impedance with minimal skin irritation and discomfort. + +## Step 5: Electrode Placements + +![dodge gif](./EMGimg4/Using%20Gel%20Electrodes.gif) +![dodge gif](./EMGimg4/Using%20EMG%20Band.gif) + +We have 2 options to measure the EMG signals, either using the gel electrodes or using dry electrode based EMG band. You can try both of them one by one. + + +### Measuring EMG using Gel electrodes: + +1. Connect the BioAmp Cable to gel electrodes, +2. Peel the plastic backing from electrodes +3. Place the IN+ and IN- cables on the arm near the ulnar nerve & REF (reference) at the back of your hand. + +### Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band: + +1. Connect the BioAmp Cable to Muscle BioAmp Band in a way such that IN+ and IN- are placed on the arm near the ulnar nerve & REF (reference) on the far side of the band. +2. Now put a small drop of electrode gel between the skin and metallic part of BioAmp Cable to get the best results. + +## Step 6: Download Arduino IDE + +Download the Arduino IDE from the link given below: + +https://www.arduino.cc/en/software + +(We have used Arduino IDE version 1.8.19 for this project) + +After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B) + +**Note:** Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition. + +## Step 7: Coding Time! + +Copy paste the Arduino Sketch given below in Arduino IDE: + +1. LED Bar Graph: https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/LEDBarGraph/LEDBarGraph.ino + +After flashing the code, open the serial plotter to visualize the EMG signals. + +## Step 8: Enjoy & Flex Your Arm + +![dodge gif](./EMGimg4/LED%20Bar%20Graph.gif) + +Now flex your arm to visualize the muscle signals (EMG) in real time on your laptop (on serial plotter of Arduino IDE) as well as on the onboard LEDs of Muscle BioAmp Shield. + +More strength you apply, more the LED bar goes up. + +Similarly you can try to record EMG from other parts of your body like biceps, triceps, cheeks, thighs, etc. + +## Step 9: Listen to Your Muscles + +![dodge gif](./EMGimg4/Listening%20music.gif) + +Here comes the most interesting part of the project which is listening to your muscles. + +You can either listen it on a speaker or wired earphones/headphones. Let's try both of them. + +### Listening on a wired earphones/headphones: + +1. Plug your wired earphones or headphones on the 3.5mm jack of Muscle BioAmp Shield +2. Plug it in your ears +3. Flex and listen to your muscles + +### Listening on a speaker using BioAmp AUX Cable: + +1. Plug the BioAmp AUX Cable on Muscle BioAmp Shield +2. Connect the BioAmp AUX cable on the speaker +3. Flex and listen to your muscles. +Isn't it AMAZING? How did you feel? + +Let us know your feedback in the comments and feel free to ask any questions. + +You can also mail us at support@upsidedownlabs.tech for any kind of support while you are making this project. + +## Step 10: Make It Portable + +![dodge gif](./EMGimg4/Connecting%209V%20battery.gif) + +Till now, the power for the EMG system was coming from the laptop via USB cable of Arduino Uno but there can be 2 ways in which you can make the system portable: + +1. Using 9V battery: Directly connect a 9V battery to Muscle BioAmp Shield using a 9V snap cable. + +2. Using Power Bank: Instead of connecting the USB cable of Arduino Uno to laptop, you can directly connect it to power bank. + +## Step 11: Some Other Projects + + + + +You can also make various other projects using Muscle BioAmp Shield like: + +1. Controlling a servo claw by muscle signals (EMG): https://www.instructables.com/Controlling-a-Servo-Claw-With-Muscle-Signals-EMG-U/ diff --git a/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection.md b/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection.md new file mode 100644 index 00000000..da847aba --- /dev/null +++ b/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection.md @@ -0,0 +1,125 @@ +# Eye Blink Detection by Recording EOG Using BioAmp EXG Pill + +![dodge gif](./EOGimg2/Thumbnail1.gif) +![dodge gif](./EOGimg2/Thumbnail2.jpg) + +In this project we will be recording electrical impulses of eyes (EOG) to detect eye blinks using Arduino Uno and BioAmp EXG Pill. + +## What is Electrooculography (EOG)? + +Electrooculography (EOG) is a technique for measuring the corneo-retinal standing potential that exists between the front and the back of the human eye.The resulting signal is called the electrooculogram. + +### About BioAmp EXG Pill: +BioAmp EXG Pill is one of a kind pill-size chip that can record publication-grade biopotential signals from your body be it from the heart (ECG), brain (EEG), eyes (EOG), and muscles (EMG). + +The entire BioAmp series of sensors from Upside Down Labs is designed in a way to teach you the basics of the instrumentation amplifier, active bandpass filtering, soldering, programming, neuroscience, HCI, and BCI just to name a few concepts. + +## Supplies + +### Hardware: +1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin) + +1 x BioAmp Cable + +3 x Gel Electrodes + +3 x Jumper Cables + +1 x Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC) + +1 x Nuprep Skin Preparation Gel + +1 x Wet wipe + +### Software: + +Arduino IDE + +**Note:** You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below: + +DIY Neuroscience Kit Basic ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) | [Amazon India](https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ)) + +BioAmp EXG Pill Pack ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/bioamp-exg-pill/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-sensor-for-ecg-emg-eog-or-eeg/)) + +BioAmp EXG Pill - EXG Explorer Pack ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/bioamp-exg-pill/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-x2-sensor-for-ecg-emg-eog-eeg/) | [Amazon India](https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1)) + +**Disclaimer:** DIY Neuroscience Kit Basic includes everything you need for this project but BioAmp EXG Pill Packs does not include all the supplies and you will have to order them seperately from our stores. + + +## Step1: Assembly + +![](EOGimg2/Assembly.jpg) + +The BioAmp EXG Pill comes presoldered with DIY Neuroscience Kit Basic but in case you are getting BioAmp EXG Pill seperately then you will have to assemble it for this project by soldering the header pins and JST PH 2.0 connector as shown in the diagram. + +## Step 2: Skin Preparation + +![dodge gif](./EOGimg2/Skin%20Preparation.gif) + +Apply Nuprep Skin Preparation Gel on the skin surface where electrodes would be placed to remove dead skin cells and clean the skin from dirt. After rubbing the skin surface thoroughly, clean it with a wet wipe. + +### About Nuprep Gel: +Nuprep skin preparation gel is a mildly abrasive, highly conductive gel that should be applied before placing the electrodes on the skin to improve measurements. When applied gently, it strips away the top layer of skin and moistens the underlying skin layer which reduces the skin impedance with minimal skin irritation and discomfort. + + +# Step 3: Connecting Electrode Cable + +![dodge gif](./EOGimg2/Connecting%20Electrode%20Cable.gif) + +Connect the BioAmp Cable to BioAmp EXG Pill as shown in the connection diagram. We have different variants of the BioAmp Cable so don't go with the color coding and focus on the REF, IN+ and IN- written on the BioAmp EXG Pill. + +## Step 4: Electrode Placments + +![](EOGimg2/Electrode%20Placements.jpg) + +1. Connect the BioAmp Cable to gel electrodes, +2. Peel the plastic backing from electrodes +3. Place the IN+ and IN- cables on the forehead & REF (reference) at the bony part, on the back side of your earlobe as shown above. + +## Step 5: Connections + +![](EOGimg2/Connections%20with%20Maker%20Uno.jpg) + +Connect BioAmp EXG Pill to Maker Uno using the jumper cables as directed below: + +- VCC to 5V +- GND to GND +- OUT to A0 + +**Note:** BE VERY CAREFUL and follow the above diagram while making the connections between your BioAmp EXG Pill & Maker Uno, especially the GND and VCC else it may damage the sensor. + +We specifically chose Maker Uno for this experinment as it is Arduino compatible board but has onboard LEDs and a buzzer. + +You can also use Arduino Uno or any other development board with an ADC but in that case the buzzer should be seperately connected to the board. + +## Step 6: Download Arduino IDE + +Download the Arduino IDE from the link given below: + +https://www.arduino.cc/en/software + +(We have used Arduino IDE version 1.8.19 for this project) + +After downloading, connect the Maker Uno to your laptop using the USB Cable + +Note: Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition. + +## Step 7: Coding Time! + +Copy paste the Arduino Sketch given below in Arduino IDE. + +Eye Blink Detection: https://github.com/upsidedownlabs/Eye-BioAmp-Arduino-Firmware/blob/main/5_EyeBlinkDetection/5_EyeBlinkDetection.ino + +After flashing the code, open the serial plotter to visualize the EOG signals and detect the eye blinks. + +## Step 8: Blink Your Eyes + + + +Blink your eyes and detect the eye blinks on the serial plotter of Arduino IDE, LED of Maker Uno and the buzzer as shown in the video above. + +Now you are all set to explore on your own and make amazing HCI projects at the comfort zone of your home. + +Let us know your feedback in the comments and feel free to ask any questions. + +You can also mail us at support@upsidedownlabs.tech for any kind of support while you are making this project. \ No newline at end of file diff --git a/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Assembly.jpg b/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Assembly.jpg new file mode 100644 index 00000000..6bb1f060 Binary files /dev/null and b/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Assembly.jpg differ diff --git a/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Connecting Electrode Cable.gif b/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Connecting Electrode Cable.gif new file mode 100644 index 00000000..bba15b00 Binary files /dev/null and b/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Connecting Electrode Cable.gif differ diff --git a/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Connections with Maker Uno.jpg b/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Connections with Maker Uno.jpg new file mode 100644 index 00000000..e719284f Binary files /dev/null and b/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Connections with Maker Uno.jpg differ diff --git a/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Electrode Placements.jpg b/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Electrode Placements.jpg new file mode 100644 index 00000000..7a66a468 Binary files /dev/null and b/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Electrode Placements.jpg differ diff --git a/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Skin Preparation.gif b/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Skin Preparation.gif new file mode 100644 index 00000000..9ac52b15 Binary files /dev/null and b/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Skin Preparation.gif differ diff --git a/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Thumbnail1.gif b/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Thumbnail1.gif new file mode 100644 index 00000000..81344051 Binary files /dev/null and b/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Thumbnail1.gif differ diff --git a/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Thumbnail2.jpg b/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Thumbnail2.jpg new file mode 100644 index 00000000..e6f65b7a Binary files /dev/null and b/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/EOGimg2/Thumbnail2.jpg differ diff --git a/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill.md b/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill.md new file mode 100644 index 00000000..36bc29ca --- /dev/null +++ b/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill.md @@ -0,0 +1,128 @@ +# Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill + +![](EOGimg3/Thumbnail1.jpg) +![](EOGimg3/Thumbnail2.jpg) + + +In this project we will be recording electrical impulses of eyes (EOG) to make a drowsiness detector using Maker Uno and BioAmp EXG Pill. + +## What is Electrooculography (EOG)? +Electrooculography (EOG) is a technique for measuring the corneo-retinal standing potential that exists between the front and the back of the human eye.The resulting signal is called the electrooculogram. + +### About BioAmp EXG Pill: +BioAmp EXG Pill is one of a kind pill-size chip that can record publication-grade biopotential signals from your body be it from the heart (ECG), brain (EEG), eyes (EOG), and muscles (EMG). + +The entire BioAmp series of sensors from Upside Down Labs is designed in a way to teach you the basics of the instrumentation amplifier, active bandpass filtering, soldering, programming, neuroscience, HCI, and BCI just to name a few concepts. + +## Supplies + +### HARDWARE: +1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin) + +1 x BioAmp Cable + +3 x Gel Electrodes + +3 x Jumper Cables + +1 x Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC) + +1 x Nuprep Skin Preparation Gel + +1 x Wet wipe + +### SOFTWARE: +Arduino IDE + +**Note:** You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below: + + +DIY Neuroscience Kit Basic ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) | [Amazon India](https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ)) + + +BioAmp EXG Pill Pack ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/bioamp-exg-pill/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-sensor-for-ecg-emg-eog-or-eeg/)) + +BioAmp EXG Pill - EXG Explorer Pack ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/bioamp-exg-pill/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-x2-sensor-for-ecg-emg-eog-eeg/) | [Amazon India](https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1&th=1)) + + + +**Disclaimer:** DIY Neuroscience Kit Basic includes everything you need for this project but BioAmp EXG Pill Packs does not include all the supplies and you will have to order them seperately from our stores. + +## Step 1: Assembly +![](EOGimg3/Assembly.jpg) + +The BioAmp EXG Pill comes presoldered with DIY Neuroscience Kit Basic but in case you are getting BioAmp EXG Pill seperately then you will have to assemble it for this project by soldering the header pins and JST PH 2.0 connector as shown in the diagram. + +## Step 2: Skin Preparation + +![dodge gif](./EOGimg3/Skin%20Preparation.gif) + +Apply Nuprep Skin Preparation Gel on the skin surface where electrodes would be placed to remove dead skin cells and clean the skin from dirt. After rubbing the skin surface thoroughly, clean it with a wet wipe. + +### About Nuprep Gel: + +Nuprep skin preparation gel is a mildly abrasive, highly conductive gel that should be applied before placing the electrodes on the skin to improve measurements. When applied gently, it strips away the top layer of skin and moistens the underlying skin layer which reduces the skin impedance with minimal skin irritation and discomfort. + +## Step 3: Connecting Electrode Cable + +![dodge gif](./EOGimg3/Connecting%20Electrode%20Cable.gif) + +Connect the BioAmp Cable to BioAmp EXG Pill as shown in the connection diagram. We have different variants of the BioAmp Cable so don't go with the color coding and focus on the REF, IN+ and IN- written on the BioAmp EXG Pill. + +## Step 4: Electrode Placements + +![](./EOGimg3/Electrode%20Placements.jpg) + +1. Connect the BioAmp Cable to gel electrodes, +2. Peel the plastic backing from electrodes +3. Place the IN+ and IN- cables on the forehead & REF (reference) at the bony part, on the back side of your earlobe as shown above. + +## Step 5: Connections + +![](./EOGimg3/Connections%20with%20Maker%20Uno.jpg) + +Connect BioAmp EXG Pill to Maker Uno using the jumper cables as directed below: + +- VCC to 5V +- GND to GND +- OUT to A0 + +**Note:** BE VERY CAREFUL and follow the above diagram while making the connections between your BioAmp EXG Pill & Maker Uno, especially the GND and VCC else it may damage the sensor. + +We specifically chose Maker Uno for this experinment as it is Arduino compatible board but has onboard LEDs and a buzzer. + +You can also use Arduino Uno or any other development board with an ADC but in that case the buzzer and LED should be seperately connected to the board. + +## Step 6: Download Arduino IDE + +Download the Arduino IDE from the link given below: + +https://www.arduino.cc/en/software + +(We have used Arduino IDE version 1.8.19 for this project) + +After downloading, connect the Maker Uno to your laptop using the USB Cable + +**Note:** Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition. + + +## Step 7: Coding Time! + +Copy paste the Arduino Sketch given below in Arduino IDE. + +Drowsiness Detection: https://github.com/upsidedownlabs/Eye-BioAmp-Arduino-Firmware/blob/main/3_DrowsinessDetection/3_DrowsinessDetection.ino + +## Step 8: Its Ready + + + + +The threshold for time interval between the 2 eye blinks is set to be 6000ms or 6 sec which means that whenever someone feels drowsy and doesn't blink for 6 sec, then the buzzer will beep and LEDs will glow to wake up the person. + +You can change this threshold according to your requirements or preferences. + +Your drowsiness detector is now ready!! + +Let us know your feedback in the comments and feel free to ask any questions. + +You can also mail us at support@upsidedownlabs.tech for any kind of support while you are making this project. \ No newline at end of file diff --git a/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Assembly.jpg b/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Assembly.jpg new file mode 100644 index 00000000..6bb1f060 Binary files /dev/null and b/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Assembly.jpg differ diff --git a/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Connecting Electrode Cable.gif b/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Connecting Electrode Cable.gif new file mode 100644 index 00000000..bba15b00 Binary files /dev/null and b/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Connecting Electrode Cable.gif differ diff --git a/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Connections with Maker Uno.jpg b/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Connections with Maker Uno.jpg new file mode 100644 index 00000000..e719284f Binary files /dev/null and b/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Connections with Maker Uno.jpg differ diff --git a/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Electrode Placements.jpg b/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Electrode Placements.jpg new file mode 100644 index 00000000..7a66a468 Binary files /dev/null and b/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Electrode Placements.jpg differ diff --git a/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Skin Preparation.gif b/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Skin Preparation.gif new file mode 100644 index 00000000..9ac52b15 Binary files /dev/null and b/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Skin Preparation.gif differ diff --git a/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Thumbnail1.jpg b/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Thumbnail1.jpg new file mode 100644 index 00000000..83c57b64 Binary files /dev/null and b/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Thumbnail1.jpg differ diff --git a/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Thumbnail2.jpg b/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Thumbnail2.jpg new file mode 100644 index 00000000..e6f65b7a Binary files /dev/null and b/docs/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/EOGimg3/Thumbnail2.jpg differ diff --git a/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment.md b/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment.md new file mode 100644 index 00000000..a4ced2e4 --- /dev/null +++ b/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment.md @@ -0,0 +1,148 @@ +# Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill + + +![](EOGimg/Thumbnail.jpg) + +In this project we will be recording electrical impulses of eyes (EOG) using BioAmp EXG Pill and Arduino Uno. + +## What is Electrooculography (EOG)? + +Electrooculography (EOG) is a technique for measuring the corneo-retinal standing potential that exists between the front and the back of the human eye.The resulting signal is called the electrooculogram. + +## About BioAmp EXG Pill: + +BioAmp EXG Pill is one of a kind pill-size chip that can record publication-grade biopotential signals from your body be it from the heart (ECG), brain (EEG), eyes (EOG), and muscles (EMG). + +The entire BioAmp series of sensors from Upside Down Labs is designed in a way to teach you the basics of the instrumentation amplifier, active bandpass filtering, soldering, programming, neuroscience, HCI, and BCI just to name a few concepts. + +## Supplies + +## HARDWARE: + +1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin) + +1 x BioAmp Cable + +3 x Gel Electrodes + +3 x Jumper Cables + +1 x Arduino Uno / Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC) + +1 x Nuprep Skin Preparation Gel + +1 x Wet wipe + +## SOFTWARE: + +Arduino IDE + +**Note**: You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below: + +DIY Neuroscience Kit Basic ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/) | +[Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) | [Amazon Store](https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ)) + +BioAmp EXG Pill Pack ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/bioamp-exg-pill/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) ) + +BioAmp EXG Pill - EXG Explorer Pack ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/bioamp-exg-pill/) | +[Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) | [Amazon Store](https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1)) + + + +# Step 1: Assembly + +![Img2](EOGimg/Assembly.jpg) + +The BioAmp EXG Pill comes presoldered with DIY Neuroscience Kit Basic but in case you are getting BioAmp EXG Pill seperately then you will have to assemble it for this project by soldering the header pins and JST PH 2.0 connector as shown in the diagram. + +## Step 2: Skin Preparation + + + +![dodge gif](./EOGimg/Skin%20Preparation%20Vertical.gif) + +![dodge gif](./EOGimg/Skin%20Preparation%20Horizontal.gif) + + + +Apply Nuprep Skin Preparation Gel on the skin surface where electrodes would be placed to remove dead skin cells and clean the skin from dirt. After rubbing the skin surface thoroughly, clean it with a wet wipe. + +### About Nuprep Gel: + +Nuprep skin preparation gel is a mildly abrasive, highly conductive gel that should be applied before placing the electrodes on the skin to improve measurements. When applied gently, it strips away the top layer of skin and moistens the underlying skin layer which reduces the skin impedance with minimal skin irritation and discomfort. + +## Step 3: Connecting Electrode Cable + +![dodge gif](./EOGimg/Connecting%20Electrode%20Cable.gif) + +Connect the BioAmp Cable to BioAmp EXG Pill. We have different variants of the BioAmp Cable so don't go with the color coding and focus on the REF, IN+ and IN- written on the BioAmp EXG Pill. + +## Step 4: Electrode Placements + +![Img5](EOGimg/EOG%20Electrode%20Placements.jpg) + + +Follow three simple steps to place the electrodes as given below: + +1. Connect the BioAmp Cable to gel electrodes, + +2. Peel the plastic backing from electrodes + +3. Place the IN+ and IN- cables around your eyes & REF (reference) at the bony part, on the back side of your earlobe as shown in the diagram above. + +There are 2 options to place the electrodes: + +1. Left and right side of eyes to record horizontal movement or +2. Above & below your eye to record the vertical movement. + +You can try both the electrode placements one by one. Let's start with Option 1 (Horizontal movement) + +## Step 5: Connections + +![Img6](EOGimg/Connections.jpg) + +Connect BioAmp EXG Pill to Arduino Uno using the jumper cables as directed below: + +1. VCC to 5V +2. GND to GND +3. OUT to A0 + +## Step 6: Download Arduino IDE + +Download the Arduino IDE from the link given below: + +[Ardiuno IDE](https://www.arduino.cc/en/software) + + +(We have used Arduino IDE version 1.8.19 for this project) + +After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B) + +**Note**: Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition. + +## Step 7: Coding Time! + + +Copy paste the Arduino Sketch given below in Arduino IDE. + +**EOG Filter**: https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EOGFilter/EOGFilter.ino + +After flashing the code, open the serial plotter to visualize the EOG signals and detect the eye blinks. + +## Step 8: Its Ready + + + + +Move your eyes left and right to visualize the EOG signals. Isn't it amazing? + +Now you can also try the same process for Option 2 (Vertical Movement) of electrode placements to visualize the up and down movements of eyes. + +Congratulations on making this project, seems like you are are all set to explore on your own and make amazing HCI projects at the comfort zone of your home. What are you gonna make using these EOG signals? + +Let us know your feedback in the comments and feel free to ask any questions. + +You can also mail us at support@upsidedownlabs.tech for any kind of support while you are making this project. \ No newline at end of file diff --git a/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Assembly.jpg b/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Assembly.jpg new file mode 100644 index 00000000..6bb1f060 Binary files /dev/null and b/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Assembly.jpg differ diff --git a/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Connecting Electrode Cable.gif b/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Connecting Electrode Cable.gif new file mode 100644 index 00000000..bba15b00 Binary files /dev/null and b/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Connecting Electrode Cable.gif differ diff --git a/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Connections.jpg b/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Connections.jpg new file mode 100644 index 00000000..1f7b7a23 Binary files /dev/null and b/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Connections.jpg differ diff --git a/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/EOG Electrode Placements.jpg b/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/EOG Electrode Placements.jpg new file mode 100644 index 00000000..2e53822a Binary files /dev/null and b/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/EOG Electrode Placements.jpg differ diff --git a/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Skin Preparation Horizontal.gif b/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Skin Preparation Horizontal.gif new file mode 100644 index 00000000..9a5e0aa3 Binary files /dev/null and b/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Skin Preparation Horizontal.gif differ diff --git a/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Skin Preparation Vertical.gif b/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Skin Preparation Vertical.gif new file mode 100644 index 00000000..bd343d8b Binary files /dev/null and b/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Skin Preparation Vertical.gif differ diff --git a/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Thumbnail.jpg b/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Thumbnail.jpg new file mode 100644 index 00000000..369a3d58 Binary files /dev/null and b/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOGimg/Thumbnail.jpg differ diff --git a/docs/Experiments/EOGExperiments.md b/docs/Experiments/EOGExperiments.md deleted file mode 100644 index 8bfab11e..00000000 --- a/docs/Experiments/EOGExperiments.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -sidebar_position: 3 ---- - -# EOG Experiments \ No newline at end of file diff --git a/docs/Experiments/Getting Started/Getting Started.md b/docs/Experiments/Getting Started/Getting Started.md new file mode 100644 index 00000000..22bc8488 --- /dev/null +++ b/docs/Experiments/Getting Started/Getting Started.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 1 +--- + +# Let's Get Started with Experiments!! + + + + + + diff --git a/docusaurus.config.js b/docusaurus.config.js index bbe1330d..64c991cf 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -47,10 +47,27 @@ const config = { ], ], + themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ ({ - // Replace with your project's social card + + + announcementBar: { + + id: 'wip_udl', + + content: + // Example Content for Announcement bar--> + //'Support Ukraine 🇺🇦 Help Provide Humanitarian Aid to Ukraine. ', + // + 'Work in progress @ Upside Down Labs', + backgroundColor: '#097969', + textColor: '#fff', + isCloseable: true, + + }, + image: 'img/docusaurus-social-card.jpg', navbar: { title: 'Upside Down Labs', @@ -60,13 +77,21 @@ const config = { srcDark: 'img/udl_logo_white.svg', }, items: [ + { + type: 'docsVersionDropdown', + position: 'left', + }, + { type: 'docSidebar', sidebarId: 'tutorialSidebar', position: 'left', label: 'Documentation', }, - {to: '/blog', label: 'Blog', position: 'left'}, + {to:'/blog', label: 'Blog', position: 'left'}, + + {to:'/Contributors', label: 'Contribute', position:'left'}, + { href: 'https://upsidedownlabs.tech/', label: 'Main site', @@ -79,8 +104,9 @@ const config = { }, { href: 'https://github.com/upsidedownlabs/upsidedownlabs.github.io', - label: 'GitHub', position: 'right', + className: "header-github-link", + "aria-label": "GitHub repository", }, ], }, @@ -97,7 +123,8 @@ const config = { { label: 'BioAmp Software', to: '/docs/category/BioAmp-Software', - },{ + }, + { label: 'Experiments', to: '/docs/category/Experiments', }, diff --git a/sidebars.js b/sidebars.js index 9ab54c24..ee0f653a 100644 --- a/sidebars.js +++ b/sidebars.js @@ -17,17 +17,15 @@ const sidebars = { tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], // But you can create a sidebar manually - /* - tutorialSidebar: [ - 'intro', - 'hello', - { - type: 'category', - label: 'Tutorial', - items: ['tutorial-basics/create-a-document'], - }, - ], - */ + + // docs: [ + + // { + // type: 'category', + // label: 'Tutorial', + // items: ['tutorial-basics/create-a-document'], + // }, + // ], + }; - module.exports = sidebars; diff --git a/src/components/HomepageFeatures/index.tsx b/src/components/HomepageFeatures/index.tsx index 7065fe26..8fa0ebe3 100644 --- a/src/components/HomepageFeatures/index.tsx +++ b/src/components/HomepageFeatures/index.tsx @@ -1,13 +1,11 @@ import React from 'react'; import clsx from 'clsx'; import styles from './styles.module.css'; - type FeatureItem = { title: string; Svg: React.ComponentType>; description: JSX.Element; }; - const FeatureList: FeatureItem[] = [ { title: 'Open-Source', @@ -37,7 +35,6 @@ const FeatureList: FeatureItem[] = [ ), }, ]; - function Feature({title, Svg, description}: FeatureItem) { return (
@@ -51,7 +48,6 @@ function Feature({title, Svg, description}: FeatureItem) {
); } - export default function HomepageFeatures(): JSX.Element { return (
diff --git a/src/css/custom.css b/src/css/custom.css index bd3eab58..c61248b9 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -31,4 +31,29 @@ .hidden { display: none !important; - } \ No newline at end of file + } + + .header-github-link:hover { + opacity: 0.6; + } + + .header-github-link:before { + content: ''; + width: 24px; + height: 24px; + display: flex; + background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") + no-repeat; + } + + html[data-theme='dark'] .header-github-link:before { + background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='white' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") + no-repeat; + } + +#announcementBar + + { + background: linear-gradient(to right, #ffcc00, #ff3300); + background-repeat: repeat-x; + } diff --git a/src/pages/Contributors.md b/src/pages/Contributors.md new file mode 100644 index 00000000..614e4757 --- /dev/null +++ b/src/pages/Contributors.md @@ -0,0 +1,97 @@ +# EXPLORE AND CONTRIBUTE + +You can’t simply download the project, make some modifications and upload the changes to an open-source project. There is a specific workflow one should follow when contributing to a project in GitHub. So let's look at the correct way to contribute. We will be using the GitHub first-contributions repository in this tutorial. + +## Here, Are the Steps to contribute to the Repository + + +## Step 1: Fork the main repository + +Forking will create a copy of the project in your own GitHub account. It allows the users to make any changes to the code while ensuring that these changes do not affect the original repository. Simply click the Fork button on the project repository. + +![](img/forkgit.png) + +If the forking is successful, it will create a new repo under your account. + +![](img/forkgit2.png) + + +## Step 2 - Clone the forked repository to your machine +Next, you need to clone your forked repo to your local machine to develop the project. Click on the Code icon and select your preferred cloning method. Here, we will use the HTTPS link with the git clone command. +Cloning copies the repository files (and commit history) from GitHub to your local machine. The repository will be downloaded into a subdirectory of your working directory, and the subdirectory will have the same name as the repository. + +![](img/newforkimg.png) + +Run the clone command in your local environment: + +```js +git clone https://github.com/upsidedownlabs/upsidedownlabs.github.io.git; +``` + + + +## Step 3 - Create A New Branch +While making any change to the code, a best practice is to create a new feature branch for the changes we need to make. This ensures that we keep the master branch clean, and are able to simply revert our code or make updates when necessary. + +Switch to the directory that was created after you cloned the forked repository: + + + +```js +cd +``` + +Create a new feature branch with a name that identifies with the changes you are planning to do. For example: +```js +git checkout -b new-user-contribution +``` + +![](img/forkgit4.png) + + + +## Step 4 - Develop, Stage, and Commit +If you have created any new files as part of your change, you will need to add it to the branch you just created. +```js +git add +``` +For all the changes made, you have to commit them to the branch. Make sure you add a valid commit message (as per the conventions of the project): + +```js +git commit -m "Add XYZ to filename" +``` +Image description + +## Step 5 - Push the Changes +The committed changes still reside only in your local environment. Therefore, you need to push these changes to the forked GitHub repository in your account. It can be achieved by using the git push command. + +```js +git push origin fix-npe-issue +``` + +![](img/forkgit6.png) + +The workflow from git add, git commit to git push will be similar across all development environments. It is the standard way to deliver changes to any git repository regardless of the provider. + +## Step 6 - Create a Pull Request +If pushing is successful, you should see a message indicating the new push with the "Compare and pull request" button when visiting the GitHub repository. Click on that button to make a pull request. + + +![](img/forkgit7.png) + +It will generate a pull request that directly targets the original repository. If you look at the request, you can see that the changes from the new-user-contribution branch of your forked repository will be merged to the master branch of the original repository. + +It's generally a good practice to leave a comment indicating the changes or the reason for the pull request. + + +Finally, click on the "Create pull request" button to create the request. It will navigate the user to the newly created pull request in the original repository. In this case, the pull request will be created in the first-contributions repository. + + + + + diff --git a/src/pages/img/forkgit.png b/src/pages/img/forkgit.png new file mode 100644 index 00000000..d9e3d36e Binary files /dev/null and b/src/pages/img/forkgit.png differ diff --git a/src/pages/img/forkgit2.png b/src/pages/img/forkgit2.png new file mode 100644 index 00000000..a3bf12ce Binary files /dev/null and b/src/pages/img/forkgit2.png differ diff --git a/src/pages/img/forkgit3.png b/src/pages/img/forkgit3.png new file mode 100644 index 00000000..213fbec7 Binary files /dev/null and b/src/pages/img/forkgit3.png differ diff --git a/src/pages/img/forkgit4.png b/src/pages/img/forkgit4.png new file mode 100644 index 00000000..07d7574a Binary files /dev/null and b/src/pages/img/forkgit4.png differ diff --git a/src/pages/img/forkgit6.png b/src/pages/img/forkgit6.png new file mode 100644 index 00000000..35ae8103 Binary files /dev/null and b/src/pages/img/forkgit6.png differ diff --git a/src/pages/img/forkgit7.png b/src/pages/img/forkgit7.png new file mode 100644 index 00000000..0f574197 Binary files /dev/null and b/src/pages/img/forkgit7.png differ diff --git a/src/pages/img/newforkimg.png b/src/pages/img/newforkimg.png new file mode 100644 index 00000000..dc3041bb Binary files /dev/null and b/src/pages/img/newforkimg.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/BioAmpEXGPill.md b/versioned_docs/version-1.1.0/BioAmp-Hardware/BioAmpEXGPill.md new file mode 100644 index 00000000..0e009d02 --- /dev/null +++ b/versioned_docs/version-1.1.0/BioAmp-Hardware/BioAmpEXGPill.md @@ -0,0 +1,96 @@ +--- +sidebar_position: 1 +--- + +# BioAmp EXG Pill +Professional-grade analog front-end amplification for ECG, EMG, EOG, and EEG biosensing on one tiny board + +## Overview +BioAmp EXG Pill is a small, powerful analog-front-end (AFE) biopotential signal-acquisition board that can be paired with any microcontroller unit (MCU) or single-board computer (SBC) with an analog-to-digital converter (ADC) such as Arduino UNO & Nano, Espressif ESP32, Adafruit QtPy, STM32 Blue Pill, BeagleBone Black, and Raspberry Pi Pico, to name just a few. It also works with any dedicated ADC, like the Texas Instruments ADS1115 and ADS131M0x, among others. + +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/BioAmp_EXG_Pill.jpg) + +BioAmp EXG Pill is capable of recording publication-quality biopotential signals like ECG, EMG, EOG, and EEG, without the inclusion of any dedicated hardware or software filters. Its small size allows easy integration into mobile and space-constrained projects, and its powerful noise rejection makes it usable even when the device is close to the AC mains supply. Any 1.5 mm diameter wire can be used as a strain-relieving electrode cable, making it very cost-effective in comparison to the other available. + +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/Basic-Circuit.jpg) +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/EXG_Recording.jpg) + +## Features & Specifications + +| Features & Specifications || +| :------- | :-------- | +|Minimum Input Voltage|4.5-40 V| +|Input Impedance|10^12 Ω| +|Compatible Hardware|Any development board with an ADC (Arduino UNO & Nano, Espressif ESP32, Adafruit QtPy, STM32 Blue Pill, BeagleBone Black, Raspberry Pi Pico, to name just a few)| +|BioPotentials|EMG, ECG, EOG, EEG (configurable band-pass)| +|No. of channels|1| +|Electrodes|2 or 3 (configurable)| +|Dimensions|25.4 x 10 mm| +|Designed for use with carrier board|Yes| +|Open Source|Hardware + Software| + + +## Board layout + +Images below shows a quick overview of the BioAmp EXG Pill hardware design. + +| PCB Front | PCB Back | +|:-------:|:-------:| +|![BioAMp EXG Pill](img/BioAmp%20EXG%20Pill/PCB_Front.png)|![BioAMp EXG Pill](img/BioAmp%20EXG%20Pill/PCB_Back.png)| +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/Front_Specifications.jpg) +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/Back_Specifications.jpg) + + +## ElectroMyoGraphy (EMG) + +Electromyography (EMG) is a technique for evaluating and recording the electrical activity produced by skeletal muscles. EMG is also used as a diagnostic procedure to assess the health of muscles and the nerve cells that control them (motor neurons). EMG results can reveal nerve dysfunction, muscle dysfunction, or problems with nerve-to-muscle signal transmission. The images below show an EMG wave recorded with BioAmp EXG Pill and the electrode placement for the recorded EMG respectively. +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/EMGEnvelop.jpg) +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/EMG.jpg) + + +## ElectroCardioGraphy (ECG) +Electrocardiography (ECG) is the process of producing an electrocardiogram (ECG or EKG). It is a graph of voltage versus time of the electrical activity of the heart using electrodes placed on the skin. These electrodes detect the small electrical changes that are a consequence of cardiac muscle depolarization followed by repolarization during each cardiac cycle (heartbeat). The images below show electrode placement for lead 1 ECG recording, an ECG wave recorded with BioAmp EXG Pill and electrode placement for hand ECG/EKG recording respectively. +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/ECG.jpg) +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/bioamp-Exg-Pill-ECG.jpg) +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/EKG.jpg) + + +## Electrooculography (EOG) +Electrooculography (EOG) is a technique for measuring the corneo-retinal standing potential that exists between the front and the back of the human eye. The resulting signal is called EOG. Common electrode placement for vertical & horizontal EOG recording is shown in the image below. +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/bioamp-exg-pill-eog-electrode-placement.jpg) + +To measure eye movement, pairs of electrodes are typically placed either above and below the eye or to the left and right of the eye. If the eye moves from the center position toward one of the two electrodes, this electrode "sees" the positive side of the retina, and the opposite electrode "sees" the negative side of the retina. Consequently, a potential difference occurs between the electrodes. Assuming the resting potential is constant, the recorded potential is a measure of the eye’s position. The images below show electrode placement for vertical EOG recording, an EOG signal recorded with BioAmp EXG Pill and electrode placement for vertical EOG respectively. +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/EOG-Horizontal.jpg) +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/bioamp-exg-pill-eog.jpg) +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/EOG-Vertical.jpg) + +## Electroencephalography (EEG) +Electroencephalography (EEG) is an electrophysiological monitoring method to record electrical activity on the scalp. During the procedure, electrodes consisting of small metal discs with thin wires are pasted onto your scalp. The electrodes detect tiny electrical charges that result from the activity of your brain cells which are then amplified to appear on the computer screen. It is typically non-invasive, with the electrodes placed along the scalp. The images below show an EEG wave recorded with BioAmp EXG Pill and the electrode placement for the frontal cortex EEG recording respectively. +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/bioamp-exg-pill-eeg.jpg) +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/EEG.jpg) + + +## Glimpses of previous versions + +The BioAmp EXG Pill can be used in a variety of ways, the YouTube video below shows a potential way of using v0.7 of BioAmp EXG Pill. + + +A lot has improved in terms of interference rejection and flexibility from v0.7 to v1.0 of the BioAmp EXG Pill. The YouTube video below shows the ECG, EMG, EOG, and EEG recording using v1.0b of device. + + + +## Real-world Applications + +BioAmp EXG Pill is perfect for researchers, makers, and hobbyists looking for novel ways to sample biopotential data. It can be used for a wide variety of interesting biosensing projects, including: + +- AI-assisted detection of congestive heart failure using CNN (ECG) +- Heart-rate variability calculation to detect heart ailments (ECG) +- Prosthetic arm (servo) control (EMG) +- Controlling a 3DOF robotic arm (EMG) +- Quantitative analysis of physical therapy for palsy (EMG) +- Real-time game controllers (EOG) +- Blink detection (EOG) +- Capturing photos with a blink of an eye (EOG) +- Controlling LEDs via brain waves (EEG) +- Patient monitoring +and many more examples. \ No newline at end of file diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/DIYMuscleBioAmpShield.md b/versioned_docs/version-1.1.0/BioAmp-Hardware/DIYMuscleBioAmpShield.md new file mode 100644 index 00000000..336f4750 --- /dev/null +++ b/versioned_docs/version-1.1.0/BioAmp-Hardware/DIYMuscleBioAmpShield.md @@ -0,0 +1,113 @@ +--- +sidebar_position: 2 +--- + +# DIY Muscle BioAmp Shield +All-in-one Arduino Uno Shield for EMG (Electromyography). + +## Overview +Muscle BioAmp Shield is an all-in-one Arduino Uno ElectroMyography (EMG) shield for learning neuroscience with ease. It is a DIY Electrophysiology/NeuroScience shield inspired from Back Yard Brains (BYB) Muscle Spiker shield and provides similar features like hobby servo output, user buttons, LED Bar, Audio output, and battery input. It is perfect for beginners as they can easily stack it on top of Arduino Uno to record, visualize and listen to their muscle signals to make amazing projects in the domain of Human-Computer Interface (HCI). + + + +## Features & Specifications +Muscle BioAmp Shield comes with various plug-and-play options so you can connect hundreds of extension boards like OLED screens, character displays, accelerometers, and servo controllers to name just a few using the STEMMA I2C interface. You also get STEMMA digital and STEMMA analog ports. On STEMMA analog port you can connect additional BioAmp EXG Pill or any other sensor with analog output. On STEMMA digital port you can connect any digital sensor or actuator of your choice. + +![Muscle BioAmp Shield](img/Muscle%20BioAmp%20Shield/Shield%20v0.3%20Pamphlet.jpg) + +||| +| :-------- | :---------- | +|Input Voltage|5V| +|Input Impedance|10^11 Ω| +|Fixed Gain|x2420| +|Bandpass filter|72 – 720 Hz| +|Compatible Hardware|Arduino UNO| +|BioPotentials|EMG (Electromyography)| +|No. of channels|1| +|Electrodes|3 (Positive, Negative, and Reference)| +|Dimensions|6.0 x 5.3 cm| +|Open Source|Hardware + Software| + +## Hardware +Images below shows a quick overview of the hardware design. + +| PCB front | PCB back | +| :-------: | :--------: | +| ![Muscle BioAmp Shield](img/Muscle%20BioAmp%20Shield/Muscle-BioAmp-Shield-Front.png) | ![Muscle BioAmp Shield](img/Muscle%20BioAmp%20Shield/Muscle-BioAmp-Shield-Back.png) | +![With wires](img/Muscle%20BioAmp%20Shield/Muscle-BioAmp-Shield-With-Wires.png) +![Dimensions](img/Muscle%20BioAmp%20Shield/dimensions.png) +![Schematic](img/Muscle%20BioAmp%20Shield/Schematic.png) + +## Assemblying he Kit +You can get your own Muscle BioAmp Shield bag of parts from [our store](https://store.upsidedownlabs.tech/product/muscle-bioamp-shield-v0-3/) or [Tindie](https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-shield-v03-arduino-shield-for-emg/) and for assembling your shield you can take a look at [this interactive BOM](https://upsidedownlabs.github.io/DIY-Muscle-BioAmp-Shield/) or the step by step guide below. + +| Step 1 - Bare board | Step 2 - 1M Resistors | Step 3 - 330R Resistors| +| :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20Shield/Assembly/01_Bare_Board.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/02_1M_Resistors.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/03_330R_Resistors.jpg)| + +| Step 4 - 10K Resistors | Step 5 - 22K Resistors | Step 6 - 1K Resistors| +| :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20Shield/Assembly/04_10K_Resistors.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/05_22K_Resistors.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/06_1K_Resistors.jpg)| + +| Step 7 - 220K Resistors | Step 8 - 1nF Capacitors | Step 9 - 100nF Capacitors| +| :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20Shield/Assembly/07_220K_Resistors.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/08_1nF_Capacitors.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/09_100nF_Capacitors.jpg)| + +| Step 10 - 100pF Capacitors | Step 11 - Servo Header Pin | Step 12 - Buttons| +| :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20Shield/Assembly/10_100pF_Capacitors.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/11_Angled_Header_Pins.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/12_5x5mm_Buttons.jpg)| + +| Step 13 - Optoisolator | Step 14 - Angled JST Connectors | Step 15 - Straight JST Connectors| +| :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20Shield/Assembly/13_OptoIsolator.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/14_JST_PH_Angled_Connectors.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/15_JST_PH_Straight_Connectors.jpg)| + +| Step 16 - IC Socket | Step 17 - IC | Step 18 - LEDs| +| :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20Shield/Assembly/16_IC_Socket.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/17_IC.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/18_LEDs.jpg)| + +| Step 19 - 3.5mm Headphone Jack | Step 20 - 2.2uF Capacitor | Step 21 - 1uF Capacitor| +| :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20Shield/Assembly/19_3.5mm_Headphone_Jack.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/20_2.2uF_Capacitor.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/21_1uF_Capacitor.jpg)| + +| Step 22 - 470uF Capacitors | Step 23 - Shield Header Pins | Step 24 - Shield Ready| +| :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20Shield/Assembly/22_470uF_Capacitor.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/23_Header_Pins.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/24_Assembled.jpg)| + +Still can't figure out the assembly? You can follow the video provided below to assemble your Shield. + + + +## Using the Sensor +The possibilities are endless as you can: + +- Visualize the EMG signals using the 6-onboard LEDs. The more you flex, the more LEDs will glow up. +![LED bar graph](img/Muscle%20BioAmp%20Shield/LEDGraph.gif) + +- Directly connect the servo motor via 3-pin angled header pins and control it using muscle signals (EMG). +![Servo motor](img/Muscle%20BioAmp%20Shield/Servo%20control.gif) + +- Give audio/mic input signals from your mobile phone, laptop, or speakers via BioAmp AUX Cable connected to a 4-pin JST PH 2mm connector. + + ![Listening signals](img/Muscle%20BioAmp%20Shield/listening%20muscle%20signals.gif) + +- Connect a 7V to 9V battery via snap cable. +![9V snap](img/Muscle%20BioAmp%20Shield/9V%20battery.gif) + +- Record the muscle signals (EMG) either using Gel Electrodes or BioAmp Bands (dry electrode based) via BioAmp Cable connected to a 3-pin JST PH 2mm connector. + +- Listen to your muscle signals using wired headphones/earphones connected to a 3.5mm headphone jack. +- Connect hundreds of devices like OLED screens, character displays, temperature sensors, accelerometers, BioAmp Hardware, and much more using the two I2C interfaces. +- Connect Arduino Uno's D6 digital I/O pins and A2 analog input pins using STEMMA digital and STEMMA analog connectors respectively. +- Program the 2 user buttons according to your project requirements. + +## Some project ideas +These features make it the ultimate plug-and-play kit for students, researchers, and hobbyists alike who want to use muscle signals (EMG) to make amazing human-computer interface (HCI) projects like: + +1. Controlling a Dino Game using your muscle signals (EMG) + + + + +2. Scrolling Instagram Reels/YouTube Shorts by using your muscle signals (EMG) + + \ No newline at end of file diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/MuscleBioAmpBisCute.md b/versioned_docs/version-1.1.0/BioAmp-Hardware/MuscleBioAmpBisCute.md new file mode 100644 index 00000000..047b9bd2 --- /dev/null +++ b/versioned_docs/version-1.1.0/BioAmp-Hardware/MuscleBioAmpBisCute.md @@ -0,0 +1,83 @@ +--- +sidebar_position: 5 +--- + +# Muscle BioAmp BisCute +Most affordable DIY Electromyography (EMG) sensor + +## Overview +Muscle BioAmp BisCute is an ultra-affordable DIY ElectroMyography (EMG) sensor that allows you to create a Human-Computer Interface (HCI) with ease and in the process of building your own BisCute, you learn what goes into making a functional biopotential amplifier that can be used for amplifying sub mV signals created by muscles inside your body to a level a microcontroller unit (MCU) can understand. To record the EMG signals you can use any standalone ADC like ADS1115 or any microcontroller development board with an ADC of your choice like Arduino UNO/Nano. + +![Muscle BioAmp BisCute](img/Muscle%20BioAmp%20BisCute/Muscle_BioAmp_BisCute.jpg) + + +## Features & Specifications + +||| +| :------- | :-------- | +|Minimum Input Voltage|3.3-30 V| +|Input Impedance|10^11 Ω| +|Fixed Gain|x2420| +|Bandpass filter|72 – 720 Hz| +|Compatible Hardware|Any development board with an ADC (Arduino UNO & Nano, Espressif ESP32, Adafruit QtPy, STM32 Blue Pill, BeagleBone Black, Raspberry Pi Pico, to name just a few)| +|BioPotentials|EMG (Electromyography)| +|No. of channels|1| +|Electrodes|3 (Positive, Negative, and Reference)| +|Dimensions|3.0 x 4.5 cm| +|Open Source|Hardware + Software| + + +## Hardware +Images below shows a quick overview of the hardware design. + +| PCB front | PCB back | +| :-------: | :--------: | +| ![Muscle BioAmp BisCute](img/Muscle%20BioAmp%20BisCute/front.png) | ![Muscle BioAmp BisCute](img/Muscle%20BioAmp%20BisCute/back.png) | +![Muscle BioAmp BisCute](img/Muscle%20BioAmp%20BisCute/assembled.png) +![Muscle BioAmp BisCute](img/Muscle%20BioAmp%20BisCute/dimensions.png) +![Muscle BioAmp BisCute](img/Muscle%20BioAmp%20BisCute/schematic.png) + + +## Assemblying the kit + +You can get your own Muscle BioAmp BisCute bag of parts from [our store](https://store.upsidedownlabs.tech/product/muscle-bioamp-biscute-diy/) or [Tindie](https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-biscute-diy-muscle-sensor/) and for assembling your Biscute you can either take a look at [this interactive BOM](https://upsidedownlabs.github.io/Muscle-BioAmp-BisCute/) or the step by step guide below. + +| Step 1 - Bare board | Step 2 - 100K Resistor | Step 3 - 10K Resistor| Step 4 - 1M Resistor| +| :----: | :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20BisCute/Assembly/001_Board.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/002_100K_Resistor.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/003_10K_Resistors.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/004_1M_Resistors.png)| + +| Step 5 - 330R Resistor | Step 6 - 220K Resistor | Step 7 - 4.7nF Capacitor | Step 8 - 2.2uF Capacitor | +| :----: | :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20BisCute/Assembly/005_330R_Resistors.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/006_220K_Resistor.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/007_4.7nF_Capacitor.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/008_2.2uF_Capacitor.png)| + +| Step 9 - 470uF Capacitor | Step 10 - 100nF Capacitor | Step 11 - 1nF Capacitor | Step 13 - 1K Resistor | +| :----: | :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20BisCute/Assembly/009_470uF_Capacitor.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/010_100nF_Capacitors.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/011_1nF_Capacitors.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/012_1K_Resistor.png)| + +| Step 13 - BioAmp Connector | Step 14 - Header Pin | Step 15 - IC | Step 16 - Biscute ready | +| :----: | :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20BisCute/Assembly/013_Connector.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/014_HeaderPin.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/015_IC.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/016_Assembled.png)| + +Still can't figure out the assembly? You can follow the video provided below to assemble your BisCute. + + + + +## Connecting with Arduino + +After assembling the kit, you can pair it with any development board with an ADC (Arduino UNO & Nano, Espressif ESP32, Adafruit QtPy, STM32 Blue Pill, BeagleBone Black, Raspberry Pi Pico, to name just a few) or any standalone ADC of your choice. + +To measure the EMG signals, just connect BioAmp Cable v3 with the Muscle BioAmp BisCute as shown in the image below, and get started. + +![Muscle BioAmp BisCute](img/Muscle%20BioAmp%20BisCute/Electrode_Placement_Example.jpg) + + +## Using the Sensor + + + + +## Some project ideas + +We have curated a playlist for you which consists some awesome project ideas for you to get started with your next HCI project. + \ No newline at end of file diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/MuscleBioAmpCandy.md b/versioned_docs/version-1.1.0/BioAmp-Hardware/MuscleBioAmpCandy.md new file mode 100644 index 00000000..764dc5ab --- /dev/null +++ b/versioned_docs/version-1.1.0/BioAmp-Hardware/MuscleBioAmpCandy.md @@ -0,0 +1,60 @@ +--- +sidebar_position: 4 +--- + +# Muscle BioAmp Candy +Candy-size affordable muscle sensor for precise EMG sensing + +## Overview +A candy-size single-channel ElectroMyography (EMG) sensor for precise recording of muscle signals at an affordable cost. It is an SMD version of Muscle BioAmp BisCute that can be used to make amazing Human-Computer Interface (HCI) projects. To record the EMG signals you can use any standalone ADC like ADS1115 or any microcontroller development board with an ADC of your choice like Arduino UNO/Nano. + +![Muscle BioAmp Candy](img/Muscle%20BioAmp%20Candy/Muscle-BioAmp-Candy-front.jpg) + +## Features & Specifications + +||| +| :------- | :-------- | +|Minimum Input Voltage|3.3-30 V| +|Input Impedance|10^11 Ω| +|Fixed Gain|x2420| +|Bandpass filter|72 – 720 Hz| +|Compatible Hardware|Any development board with an ADC (Arduino UNO & Nano, Espressif ESP32, Adafruit QtPy, STM32 Blue Pill, BeagleBone Black, Raspberry Pi Pico, to name just a few)| +|BioPotentials|EMG (Electromyography)| +|No. of channels|1| +|Electrodes|3 (Positive, Negative, and Reference)| +|Dimensions|3.5 x 1.5 cm| +|Open Source|Hardware + Software| + + +## Hardware +Images below shows a quick overview of the hardware design. + +| PCB front | PCB back | +| :-------: | :--------: | +| ![Muscle BioAmp Candy](img/Muscle%20BioAmp%20Candy/PCBfront.png) | ![Muscle BioAmp Candy](img/Muscle%20BioAmp%20Candy/PCBback.png) | + +![Muscle BioAmp Candy](img/Muscle%20BioAmp%20Candy/Muscle%20BioAmp%20Candy_front.png) +![Muscle BioAmp Candy](img/Muscle%20BioAmp%20Candy/Muscle%20BioAmp%20Candy_back.png) +![Muscle BioAmp Candy](img/Muscle%20BioAmp%20Candy/dimensions.png) +![Muscle BioAmp Candy](img/Muscle%20BioAmp%20Candy/schematic.png) + + +## Connecting with Arduino + +To get started, you can pair Muscle BioAmp Candy with any development board with an ADC (Arduino UNO & Nano, Espressif ESP32, Adafruit QtPy, STM32 Blue Pill, BeagleBone Black, Raspberry Pi Pico, to name just a few) or any standalone ADC of your choice. + +To measure the EMG signals, connect BioAmp Cable v3 with your muscle sensor as shown in the image below: + +![Muscle BioAmp Candy](img/Muscle%20BioAmp%20Candy/Muscle-BioAmp-Candy-Arduino-EMG-Recording.jpg) + +CAUTION: Make sure to follow the above diagram while making the connections between your Muscle BioAmp Candy & Arduino (or any other ADC of your choice), especially the GND and VCC else it may damage the muscle sensor. + +## Using the sensor + + + + +## Some project ideas + +We have curated a playlist for you which consists some awesome project ideas for you to get started with your next HCI project. + \ No newline at end of file diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/MuscleBioAmpPatchy.md b/versioned_docs/version-1.1.0/BioAmp-Hardware/MuscleBioAmpPatchy.md new file mode 100644 index 00000000..4e2de84c --- /dev/null +++ b/versioned_docs/version-1.1.0/BioAmp-Hardware/MuscleBioAmpPatchy.md @@ -0,0 +1,56 @@ +--- +sidebar_position: 3 +--- + +# Muscle BioAmp Patchy +Wearable ElectroMyoGraphy (EMG) sensor + +## Overview + +Muscle BioAmp Patchy is a wearable ElectroMyoGraphy or EMG sensor that snaps directly to gel electrodes and connects to your muscle like a patch. It comes with reverse polarity projection, power indicator, onboard snap connectors, and Upside Down Labs' powerful BioAmp sensing technology for precise muscle signal recording. This enables you to easily integrate this sensor in your EMG-based Human-Computer Interface (HCI). + +![Muscle BioAmp Patchy](img/Muscle%20BioAmp%20Patchy/Patchy-All-Colors.jpg) + +| Features & Specifications || +| :------- | :-------- | +|Minimum Input Voltage|4.5 V| +|Input Impedance|10^12 Ω| +|Fixed Gain|x2420| +|Bandpass filter|72 – 720 Hz| +|Wearable|Yes| +|Compatible Hardware|Any development board with an ADC (Arduino UNO & Nano, Espressif ESP32, Adafruit QtPy, STM32 Blue Pill, BeagleBone Black, Raspberry Pi Pico, to name just a few)| +|BioPotentials|EMG (Electromyography)| +|No. of channels|1| +|Electrodes|3 (Positive, Negative, and Reference)| +|Dimensions|47 x 14 mm| +|Open Source|Hardware + Software| + +[![Muscle BioAmp Patchy](img/Muscle%20BioAmp%20Patchy/patchy_Intro_YT.jpg)](https://www.youtube.com/watch?v=qRKU_HvapDE&) + +## Hardware +Images below shows a quick overview of the hardware design. + +| PCB front | PCB back | +| :-------: | :--------: | +| ![Muscle BioAmp Patchy](img/Muscle%20BioAmp%20Patchy/PCB-Front.png) | ![Muscle BioAmp Patchy](img/Muscle%20BioAmp%20Patchy/PCB-Back.png) | + +![Muscle BioAmp Patchy](img/Muscle%20BioAmp%20Patchy/Muscle-BioAmp-Patchy-Assembled-Front.png) + +![Muscle BioAmp Patchy](img/Muscle%20BioAmp%20Patchy/Muscle-BioAmp-Patchy-Assembled-Back.png) + + + +## Connecting with Arduino + +To get started, you can pair Muscle BioAmp Patchy with any development board with an ADC (Arduino UNO & Nano, Espressif ESP32, Adafruit QtPy, STM32 Blue Pill, BeagleBone Black, Raspberry Pi Pico, to name just a few) or any standalone ADC of your choice. + +For the connections and electrode placements, you can follow the diagram given below: + +![Muscle BioAmp Patchy Connections](img/Muscle%20BioAmp%20Patchy/Patchy-Arduino-Connections.jpg) + + +## Demonstration + +After snapping the Patchy onto gel electrodes(placed on our targeted muscle), you can connect your patchy to the arduino via jumper cables, arduino to your battery operated laptop, and start recording your EMG easily. Follow the steps shown in the video below for the demonstration. + +[![Muscle BioAmp Patchy](img/Muscle%20BioAmp%20Patchy/patchy_demo_thumbnail.jpg)](https://www.youtube.com/watch?v=4dnCX3U7LS8&) \ No newline at end of file diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/_category_.json b/versioned_docs/version-1.1.0/BioAmp-Hardware/_category_.json new file mode 100644 index 00000000..f06bd155 --- /dev/null +++ b/versioned_docs/version-1.1.0/BioAmp-Hardware/_category_.json @@ -0,0 +1,9 @@ +{ + "label": "BioAmp Hardware", + "position": 1, + "link": { + "type": "generated-index", + "description": "The entire BioAmp series of sensors from Upside Down Labs is designed in a way to teach you the basics of the instrumentation amplifier, active bandpass filtering, soldering, programming, neuroscience, HCI, and BCI just to name a few concepts involved to create solutions for some crazy real-world problems." + } + } + \ No newline at end of file diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/Back_Specifications.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/Back_Specifications.jpg new file mode 100644 index 00000000..96cf9fff Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/Back_Specifications.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/Basic-Circuit.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/Basic-Circuit.jpg new file mode 100644 index 00000000..0d91ffaf Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/Basic-Circuit.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/BioAmp-EXG-Pill-Front.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/BioAmp-EXG-Pill-Front.png new file mode 100644 index 00000000..e31cbb9e Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/BioAmp-EXG-Pill-Front.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/BioAmp_EXG_Pill.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/BioAmp_EXG_Pill.jpg new file mode 100644 index 00000000..4e28a78f Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/BioAmp_EXG_Pill.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/ECG.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/ECG.jpg new file mode 100644 index 00000000..db31a9b4 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/ECG.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EEG.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EEG.jpg new file mode 100644 index 00000000..0a94084e Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EEG.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EKG.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EKG.jpg new file mode 100644 index 00000000..54ac0242 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EKG.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EMG.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EMG.jpg new file mode 100644 index 00000000..1635420b Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EMG.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EMGEnvelop.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EMGEnvelop.jpg new file mode 100644 index 00000000..1b54729a Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EMGEnvelop.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EOG-Horizontal.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EOG-Horizontal.jpg new file mode 100644 index 00000000..7fd3387a Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EOG-Horizontal.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EOG-Vertical.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EOG-Vertical.jpg new file mode 100644 index 00000000..62e2b4e9 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EOG-Vertical.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EXG_Recording.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EXG_Recording.jpg new file mode 100644 index 00000000..3b7e5241 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/EXG_Recording.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/Front_Specifications.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/Front_Specifications.jpg new file mode 100644 index 00000000..41bf4bd7 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/Front_Specifications.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/PCB_Back.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/PCB_Back.png new file mode 100644 index 00000000..bdf299ee Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/PCB_Back.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/PCB_Front.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/PCB_Front.png new file mode 100644 index 00000000..db69c074 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/PCB_Front.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-Exg-Pill-ECG.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-Exg-Pill-ECG.jpg new file mode 100644 index 00000000..5ef901cd Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-Exg-Pill-ECG.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eeg.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eeg.jpg new file mode 100644 index 00000000..232f899f Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eeg.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eog-electrode-placement.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eog-electrode-placement.jpg new file mode 100644 index 00000000..91909f87 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eog-electrode-placement.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eog.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eog.jpg new file mode 100644 index 00000000..f819fe96 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eog.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/001_Board.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/001_Board.png new file mode 100644 index 00000000..eb7afd5a Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/001_Board.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/002_100K_Resistor.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/002_100K_Resistor.png new file mode 100644 index 00000000..29f6c871 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/002_100K_Resistor.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/003_10K_Resistors.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/003_10K_Resistors.png new file mode 100644 index 00000000..74c6d8eb Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/003_10K_Resistors.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/004_1M_Resistors.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/004_1M_Resistors.png new file mode 100644 index 00000000..03c7d49d Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/004_1M_Resistors.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/005_330R_Resistors.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/005_330R_Resistors.png new file mode 100644 index 00000000..1d7bde34 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/005_330R_Resistors.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/006_220K_Resistor.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/006_220K_Resistor.png new file mode 100644 index 00000000..441ad9ad Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/006_220K_Resistor.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/007_4.7nF_Capacitor.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/007_4.7nF_Capacitor.png new file mode 100644 index 00000000..3e388cf4 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/007_4.7nF_Capacitor.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/008_2.2uF_Capacitor.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/008_2.2uF_Capacitor.png new file mode 100644 index 00000000..047539d7 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/008_2.2uF_Capacitor.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/009_470uF_Capacitor.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/009_470uF_Capacitor.png new file mode 100644 index 00000000..a99f680f Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/009_470uF_Capacitor.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/010_100nF_Capacitors.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/010_100nF_Capacitors.png new file mode 100644 index 00000000..94b0df9c Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/010_100nF_Capacitors.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/011_1nF_Capacitors.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/011_1nF_Capacitors.png new file mode 100644 index 00000000..dbccf0e1 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/011_1nF_Capacitors.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/012_1K_Resistor.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/012_1K_Resistor.png new file mode 100644 index 00000000..d0bb2d3f Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/012_1K_Resistor.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/013_Connector.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/013_Connector.png new file mode 100644 index 00000000..7cffe882 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/013_Connector.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/014_HeaderPin.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/014_HeaderPin.png new file mode 100644 index 00000000..f1b58cda Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/014_HeaderPin.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/015_IC.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/015_IC.png new file mode 100644 index 00000000..16be5ea8 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/015_IC.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/016_Assembled.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/016_Assembled.png new file mode 100644 index 00000000..de98e311 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/016_Assembled.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Electrode_Placement_Example.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Electrode_Placement_Example.jpg new file mode 100644 index 00000000..15c08f3e Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Electrode_Placement_Example.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Muscle_BioAmp_BisCute.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Muscle_BioAmp_BisCute.jpg new file mode 100644 index 00000000..de11d0d1 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/Muscle_BioAmp_BisCute.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/assembled.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/assembled.png new file mode 100644 index 00000000..24ea7e5d Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/assembled.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/back.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/back.png new file mode 100644 index 00000000..452ed0d7 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/back.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/dimensions.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/dimensions.png new file mode 100644 index 00000000..7f564a3e Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/dimensions.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/front.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/front.png new file mode 100644 index 00000000..f12c7079 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/front.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/schematic.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/schematic.png new file mode 100644 index 00000000..89133bc5 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp BisCute/schematic.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle BioAmp Candy_back.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle BioAmp Candy_back.png new file mode 100644 index 00000000..a4840ea4 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle BioAmp Candy_back.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle BioAmp Candy_front.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle BioAmp Candy_front.png new file mode 100644 index 00000000..9aeb4f32 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle BioAmp Candy_front.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle-BioAmp-Candy-Arduino-EMG-Recording.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle-BioAmp-Candy-Arduino-EMG-Recording.jpg new file mode 100644 index 00000000..c654c198 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle-BioAmp-Candy-Arduino-EMG-Recording.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle-BioAmp-Candy-front.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle-BioAmp-Candy-front.jpg new file mode 100644 index 00000000..3bc9f4ad Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle-BioAmp-Candy-front.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/PCBback.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/PCBback.png new file mode 100644 index 00000000..2ea9547e Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/PCBback.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/PCBfront.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/PCBfront.png new file mode 100644 index 00000000..f88fe872 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/PCBfront.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/dimensions.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/dimensions.png new file mode 100644 index 00000000..4a705cd2 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/dimensions.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/schematic.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/schematic.png new file mode 100644 index 00000000..3b66b0af Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Candy/schematic.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Assembled-Back.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Assembled-Back.png new file mode 100644 index 00000000..8ec64ec9 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Assembled-Back.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Assembled-Front.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Assembled-Front.png new file mode 100644 index 00000000..0ea19379 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Assembled-Front.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Back.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Back.png new file mode 100644 index 00000000..ddb35f4b Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Back.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Front.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Front.png new file mode 100644 index 00000000..afdc69be Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Front.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/PCB-Back.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/PCB-Back.png new file mode 100644 index 00000000..180924d7 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/PCB-Back.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/PCB-Front.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/PCB-Front.png new file mode 100644 index 00000000..aa5329b5 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/PCB-Front.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Patchy-All-Colors.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Patchy-All-Colors.jpg new file mode 100644 index 00000000..054cd810 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Patchy-All-Colors.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Patchy-Arduino-Connections.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Patchy-Arduino-Connections.jpg new file mode 100644 index 00000000..afa8642b Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/Patchy-Arduino-Connections.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/patchy_Intro_YT.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/patchy_Intro_YT.jpg new file mode 100644 index 00000000..e20f8c29 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/patchy_Intro_YT.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/patchy_demo_thumbnail.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/patchy_demo_thumbnail.jpg new file mode 100644 index 00000000..0c683c9c Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Patchy/patchy_demo_thumbnail.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/9V battery.gif b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/9V battery.gif new file mode 100644 index 00000000..f235e265 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/9V battery.gif differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/01_Bare_Board.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/01_Bare_Board.jpg new file mode 100644 index 00000000..cfbe11e3 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/01_Bare_Board.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/02_1M_Resistors.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/02_1M_Resistors.jpg new file mode 100644 index 00000000..03c26002 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/02_1M_Resistors.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/03_330R_Resistors.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/03_330R_Resistors.jpg new file mode 100644 index 00000000..ba522c56 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/03_330R_Resistors.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/04_10K_Resistors.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/04_10K_Resistors.jpg new file mode 100644 index 00000000..ac7a546e Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/04_10K_Resistors.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/05_22K_Resistors.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/05_22K_Resistors.jpg new file mode 100644 index 00000000..0682ecda Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/05_22K_Resistors.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/06_1K_Resistors.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/06_1K_Resistors.jpg new file mode 100644 index 00000000..5271d51b Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/06_1K_Resistors.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/07_220K_Resistors.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/07_220K_Resistors.jpg new file mode 100644 index 00000000..a08797eb Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/07_220K_Resistors.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/08_1nF_Capacitors.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/08_1nF_Capacitors.jpg new file mode 100644 index 00000000..11927452 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/08_1nF_Capacitors.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/09_100nF_Capacitors.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/09_100nF_Capacitors.jpg new file mode 100644 index 00000000..49a2eaa3 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/09_100nF_Capacitors.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/10_100pF_Capacitors.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/10_100pF_Capacitors.jpg new file mode 100644 index 00000000..1e45c2ed Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/10_100pF_Capacitors.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/11_Angled_Header_Pins.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/11_Angled_Header_Pins.jpg new file mode 100644 index 00000000..4c4eba75 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/11_Angled_Header_Pins.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/12_5x5mm_Buttons.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/12_5x5mm_Buttons.jpg new file mode 100644 index 00000000..2341bc2b Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/12_5x5mm_Buttons.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/13_OptoIsolator.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/13_OptoIsolator.jpg new file mode 100644 index 00000000..879d37f6 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/13_OptoIsolator.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/14_JST_PH_Angled_Connectors.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/14_JST_PH_Angled_Connectors.jpg new file mode 100644 index 00000000..30453799 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/14_JST_PH_Angled_Connectors.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/15_JST_PH_Straight_Connectors.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/15_JST_PH_Straight_Connectors.jpg new file mode 100644 index 00000000..e750b343 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/15_JST_PH_Straight_Connectors.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/16_IC_Socket.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/16_IC_Socket.jpg new file mode 100644 index 00000000..a9edfe14 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/16_IC_Socket.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/17_IC.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/17_IC.jpg new file mode 100644 index 00000000..8f0e4345 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/17_IC.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/18_LEDs.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/18_LEDs.jpg new file mode 100644 index 00000000..e355c1be Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/18_LEDs.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/19_3.5mm_Headphone_Jack.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/19_3.5mm_Headphone_Jack.jpg new file mode 100644 index 00000000..435d9d8e Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/19_3.5mm_Headphone_Jack.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/20_2.2uF_Capacitor.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/20_2.2uF_Capacitor.jpg new file mode 100644 index 00000000..2c4755ea Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/20_2.2uF_Capacitor.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/21_1uF_Capacitor.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/21_1uF_Capacitor.jpg new file mode 100644 index 00000000..5b25df95 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/21_1uF_Capacitor.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/22_470uF_Capacitor.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/22_470uF_Capacitor.jpg new file mode 100644 index 00000000..449b54ec Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/22_470uF_Capacitor.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/23_Header_Pins.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/23_Header_Pins.jpg new file mode 100644 index 00000000..da871ac1 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/23_Header_Pins.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/24_Assembled.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/24_Assembled.jpg new file mode 100644 index 00000000..5f75008c Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/24_Assembled.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Claw control.gif b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Claw control.gif new file mode 100644 index 00000000..a393a8ed Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Claw control.gif differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/LEDGraph.gif b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/LEDGraph.gif new file mode 100644 index 00000000..eb294e54 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/LEDGraph.gif differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-Back.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-Back.png new file mode 100644 index 00000000..4d8593c5 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-Back.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-Front.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-Front.png new file mode 100644 index 00000000..6ec0d09b Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-Front.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-With-Wires.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-With-Wires.png new file mode 100644 index 00000000..33a58553 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-With-Wires.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Schematic.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Schematic.png new file mode 100644 index 00000000..180c3298 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Schematic.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Servo control.gif b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Servo control.gif new file mode 100644 index 00000000..da3a422a Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Servo control.gif differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Shield v0.3 Pamphlet.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Shield v0.3 Pamphlet.jpg new file mode 100644 index 00000000..ee60abb8 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Shield v0.3 Pamphlet.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Shield v0.3.jpg b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Shield v0.3.jpg new file mode 100644 index 00000000..6de912bd Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/Shield v0.3.jpg differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/dimensions.png b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/dimensions.png new file mode 100644 index 00000000..928445f0 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/dimensions.png differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/listening muscle signals.gif b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/listening muscle signals.gif new file mode 100644 index 00000000..fc654680 Binary files /dev/null and b/versioned_docs/version-1.1.0/BioAmp-Hardware/img/Muscle BioAmp Shield/listening muscle signals.gif differ diff --git a/versioned_docs/version-1.1.0/BioAmp-Software/_category_.json b/versioned_docs/version-1.1.0/BioAmp-Software/_category_.json new file mode 100644 index 00000000..b5e59158 --- /dev/null +++ b/versioned_docs/version-1.1.0/BioAmp-Software/_category_.json @@ -0,0 +1,9 @@ +{ + "label": "BioAmp Software", + "position": 2, + "link": { + "type": "generated-index", + "description": "All about the powerful BioAmp technology" + } + } + \ No newline at end of file diff --git a/docs/Experiments/EMGExperiments.md b/versioned_docs/version-1.1.0/BioAmp-Software/intro.md similarity index 60% rename from docs/Experiments/EMGExperiments.md rename to versioned_docs/version-1.1.0/BioAmp-Software/intro.md index 38bad390..aa0131c8 100644 --- a/docs/Experiments/EMGExperiments.md +++ b/versioned_docs/version-1.1.0/BioAmp-Software/intro.md @@ -2,4 +2,4 @@ sidebar_position: 1 --- -# EMG Experiments \ No newline at end of file +# Software examples \ No newline at end of file diff --git a/docs/Experiments/ECGExperiments.md b/versioned_docs/version-1.1.0/Experiments/ECGExperiments.md similarity index 100% rename from docs/Experiments/ECGExperiments.md rename to versioned_docs/version-1.1.0/Experiments/ECGExperiments.md diff --git a/versioned_docs/version-1.1.0/Experiments/EEGExperiments.md b/versioned_docs/version-1.1.0/Experiments/EEGExperiments.md new file mode 100644 index 00000000..84d0cb8c --- /dev/null +++ b/versioned_docs/version-1.1.0/Experiments/EEGExperiments.md @@ -0,0 +1,183 @@ +--- +sidebar_position: 4 +--- + +# EEG Experiments + +# Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill + +![](img/eegimg1.png) + +In this project we will be recording brainwaves or EEG from prefrontal cortex part of the brain using Arduino Uno and BioAmp EXG Pill. + +## What is Electroencephalography (EEG)? + +An electroencephalogram (EEG) is a test used to evaluate the electrical activity in your brain. It can help detect potential problems with brain cell communication. + +## About BioAmp EXG Pill: + +BioAmp EXG Pill is one of a kind pill-size chip that can record publication-grade biopotential signals from your body be it from the heart (ECG), brain (EEG), eyes (EOG), and muscles (EMG). + +The entire BioAmp series of sensors from Upside Down Labs is designed in a way to teach you the basics of the instrumentation amplifier, active bandpass filtering, soldering, programming, neuroscience, HCI, and BCI just to name a few concepts. + +# Supplies + +## HARDWARE + +1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin) + +1 x BioAmp Cable + +3 x Gel Electrodes + +3 x Jumper Cables + +1 x Arduino Uno / Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC) + +1 x Nuprep Skin Preparation Gel + +1 x Wet wipe + +1 x Brain BioAmp Band (optional) + +1 x Electrode Gel (only if using Brain BioAmp Band) + +## SOFTWARE + +1. Arduino IDE +2. Backyard Brains' Spike Recorder + +**Note**: You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below: + +DIY Neuroscience Kit Basic ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/) | +[Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) | [Amazon Store](https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ)) + +BioAmp EXG Pill Pack ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/bioamp-exg-pill/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) ) + +BioAmp EXG Pill - EXG Explorer Pack ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/bioamp-exg-pill/) | +[Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) | [Amazon Store](https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1)) + +**Disclaimer:** DIY Neuroscience Kit Basic includes everything you need for this project but BioAmp EXG Pill Packs does not include all the supplies and you will have to order them seperately from our stores. + +## Step 1: Assembly + +![](img/eegimg2.jpg) + +The BioAmp EXG Pill comes presoldered with DIY Neuroscience Kit Basic but in case you are getting BioAmp EXG Pill seperately then you will have to assemble it for this project by soldering the header pins and JST PH 2.0 connector as shown in the diagram. + +## Step 2: Skin Preparation + +![dodge gif](./img/Skin_Prep2.gif) + +Apply Nuprep Skin Preparation Gel on the skin surface where electrodes would be placed to remove dead skin cells and clean the skin from dirt. After rubbing the skin surface thoroughly, clean it with a wet wipe. + + +### About Nuprep Gel: +Nuprep skin preparation gel is a mildly abrasive, highly conductive gel that should be applied before placing the electrodes on the skin to improve measurements. When applied gently, it strips away the top layer of skin and moistens the underlying skin layer which reduces the skin impedance with minimal skin irritation and discomfort. + +## Step 3: Connecting Electrode Cable + +![dodge gif](./img/eeggif1.gif) + +Connect the BioAmp Cable to BioAmp EXG Pill. We have different variants of the BioAmp Cable so don't go with the color coding and focus on the REF, IN+ and IN- written on the BioAmp EXG Pill. + +## Step 4: Electrode Placements + +![dodge gif](./img/eeggif2.gif) +![dodge gif](./img/eeggif3.gif) + +Let's understand the electrode placements before moving forward in this project. For recording EEG from prefrontal cortex part of brain, you have to place the electrodes on your forehead, specifically on Fp1 and Fp2 refer International 10-20 system for recording EEG + +### What is International 10-20 system for recording EEG? + +It is an internationally recognized method to describe and apply the location of electrodes in the context of an EEG exam or voluntary lab research. This method was developed to maintain standardized testing methods ensuring that a subject's study outcomes (clinical or research) could be compiled, reproduced, and effectively analyzed and compared using the scientific method. + +### Options to measure EEG + +So now we have 2 options to measure the EEG signals, either using the gel electrodes or using dry electrode based EEG band. You can try both of them one by one. + +### Option 1 - Measuring EEG using Gel electrodes: + +1. Connect the BioAmp Cable to gel electrodes, +2. Peel the plastic backing from electrodes +3. Place the IN+ and IN- cables on the forehead & REF (reference) at the bony part, on the back side of your earlobe as shown in the video above. + +### Option 2 - Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band and gel electrode: + + +1. Connect the BioAmp Cable to Brain BioAmp Band in a way such that IN+ and IN- are placed on the forehead. +2. In this case, the REF (reference) should be connected using gel electrode. So connect the reference of BioAmp Cable to the gel electrode, peel the plastic backing and place it at the bony part, on the back side of your earlobe. +3. Now put a small drop of electrode gel on the dry electrodes (IN+ and IN-) between the skin and metallic part of BioAmp Cable to get the best results. + +## Step 5: Connections + + +![](img/eegimg3.webp) + +Connect BioAmp EXG Pill to Arduino Uno using the jumper cables as directed below: + +1. VCC to 5V +2. GND to GND +3. OUT to A0 + + +## Step 6: Download Arduino IDE + +Download the Arduino IDE from the link given below: + +[Ardiuno IDE](https://www.arduino.cc/en/software) + + +(We have used Arduino IDE version 1.8.19 for this project) + +After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B) + +**Note**: Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition. + + +## Step 7: Download Spike Recorder + +Download Backyard Brains' Spike Recorder according to the operating system you are using (Windows, OSX, Linux) from the link given below: + +https://backyardbrains.com/products/spikerecorder + +After installing the software, just copy paste the Spike Recorder Arduino Code by clicking the link below in Arduino IDE, save the file and flash it on the Arduino Uno. + +Spike Recorder Arduino Code: https://raw.githubusercontent.com/BackyardBrains/SpikerShield/master/Muscle/Arduino%20Code/SpikeRecorder/SpikeRecorderSpikerShield_V1_1.ino + +Now start the Spike Recorder. + +## Step 8: Configurations on Spike Recorder + +![](img/eegimg4.jpg) + +When the Spike Recorder starts, it will start recording from your microphone. To change that, go to the settings by clicking the first icon on the top left corner of the screen, select the COM port of your Arduino Uno and click on connect. + +Also mute the speakers and apply the 50Hz notch filter by clicking on the checkbox as shown in the screenshot above. + +You should set the low band pass filter to 1Hz and high bandpass filter to 40Hz as we are only recording the EEG singnals which range between these frequencies. + +Now everything is configured and connected. So close the settings window and start recording EEG signals. + +## Step 9: Visualizing EEG + + + + + +The signals that you can see on the screen right now are originating from prefrontal cortex part of your brain and propagating through all the layers to the surface of your skin. + +To record these EEG signals, you have placed the electrodes on the forehead, then BioAmp EXG Pill is amplifying those signals so that we can detect it and finally sending it to the ADC (Analog to Digital Convertor) of your Arduino Uno. Ultimately the signals are being visualized in Spike Recorder software. + +We hope everything is clear now and you understand how the signals are propagating from your brain to the screen of the laptop. + +** Features of Spike Recorder that you can explore:** + +1. Increase or decrease the scale of the Y axis by clicking on the + and - icons respecitively that is present on the left side of the graph. +2. Increase or decrease the X axis timescale by sliding up and down on the scroll wheel of the mouse. +3. Visualize the FFT graph by clicking on the FFT icon on top left size of the screen. +4. Record the data in .wav format by clicking the record icon on the top right corner. You can convert this data in any other format according to your project requirements. +5. Listen to the signals by clicking the volume icon on the top right corner. No don't smile right now, that's how your brain sounds like :P +It was a very basic project, but now we think you are all set to explore on your own and make amazing BCI projects. Let us know your feedback in the comments and feel free to ask any questions. + +You can also mail us at support@upsidedownlabs.tech for any kind of support while you are making this project. \ No newline at end of file diff --git a/versioned_docs/version-1.1.0/Experiments/EMGExperiments.md b/versioned_docs/version-1.1.0/Experiments/EMGExperiments.md new file mode 100644 index 00000000..4fa15aa9 --- /dev/null +++ b/versioned_docs/version-1.1.0/Experiments/EMGExperiments.md @@ -0,0 +1,138 @@ +--- +sidebar_position: 1 +--- + +# EMG Experiments + +# Recording and Visualizing Muscle Signals (EMG) Using Muscle BioAmp Patchy (wearable Muscle Sensor) + +![](img/emgimg1.jpg) +![](img/emgimg2.jpg) + +In this tutorial we are going to show you how to create a simple EMG system at your home so that you can easily record and visualize muscle signals in real time using Muscle BioAmp Patchy (wearable muscle sensor) and Arduino Uno. + +But before moving forward, let's understand a brief about Electromyography. + +## What is Electromyography (EMG)? +Electromyography (EMG) is a technique for evaluating and recording the electrical activity produced by skeletal muscles. + +Some applications of EMG: + +1. Prosthetic hands, +2. Human augmentation, +3. Games controllers, +4. Rehabilitation and +5. Physical therapy +Even doctors are using them for the diagnosis of various neuromuscular ailments. + +Recently, it was in the news that [Meta is working on wearable EMG sensors](https://tech.facebook.com/reality-labs/2021/03/inside-facebook-reality-labs-wrist-based-interaction-for-the-next-computing-platform/) to track user movements in the metaverse. + +### About Muscle BioAmp Patchy: + +Muscle BioAmp Patchy is a small **wearable muscle sensor** for precise EMG sensing. It can be snapped directly to the electrodes, eliminating electrode cables. + +## Supplies + +## HARDWARE + +1 x Muscle BioAmp Patchy Kit ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/muscle-bioamp-patchy-v0-2/) | [Amazon India](https://www.amazon.in/dp/B0C4P2JB7J?ref=myi_title_dp&th=1) | [Tindie India](https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-patchy-wearable-muscle-sensor/)) + +The kit will include: +* 1 Muscle BioAmp Patchy, +* 1 Reference Cable, +* 3 Jumper Wires, +* 3 Boxy Gel Electrodes + + +1 x Arduino Uno with USB Cable + +1 x Nuprep Skin Preparation Gel ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/nuprep-gel/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/)) + +1 x Wet wipe + +## SOFTWARE: + +Ardiuno IDE + +## Step 1: Connecting Reference Cable + +![](img/emgimg3.jpg) + +Connect the reference cable to the Muscle BioAmp Patchy as shown in the above diagram. + +## Step 2: Connecting Muscle BioAmp Patchy to Gel Electrodes + +![](img/emgimg4.jpg) + +Connect the Muscle BioAmp Patchy to gel electrodes (Don't peel the plastic from the electrodes at this moment). + +## Step 3: Skin Preparation + +![dodge gif](./img/Skin_Prep.gif) + +Apply Nuprep Skin Preparation Gel on the skin surface where electrodes would be placed to remove dead skin cells and clean the skin from dirt. After rubbing the skin surface thoroughly, clean it with a wet wipe. + +### About Nuprep Gel: + +Nuprep skin preparation gel is a mildly abrasive, highly conductive gel that should be applied before placing the electrodes on the skin to improve measurements. When applied gently, it strips away the top layer of skin and moistens the underlying skin layer which reduces the skin impedance with minimal skin irritation and discomfort. This enhances the performance of the monitoring electrode and virtually eliminates problems such as diaphoresis and muscle artifacts. + + +## Step 4: Electrode Placements + +![](img/emgimg5.jpg) + +Now peel off the plastic backing from the gel electrodes and place the Muscle BioAmp Patchy on the muscle from where you want to record muscle signals (EMG). In this project, we are targeting the ulnar nerve on the forearm. + + +## Step 5: Connections + +![](img/emgimg6.jpg) + + +Connect the Muscle BioAmp Patchy to your Arduino Uno using jumper cables as directed below: + +1. OUT to A0 +2. GND to GND +3. VCC to 5V + + +## Step 6: Download Arduino IDE + +Download the Arduino IDE from the link given below: + +https://www.arduino.cc/en/software + +(We have used Arduino IDE version 1.8.19 for this project) + +After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B) + +**Note:** Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition. + +## Step 7: Check All the Conections + +![](img/emgimg7.jpg) + +Now that you have made all the connections and downloaded the Arduino IDE. Once again check everything as shown in the diagram. + +## Step 8: Coding Time! + +Copy paste any one of the Arduino Sketches given below in Arduino IDE: + +1. EMG Envelop: https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino +2. EMG Filter: https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino + +After flashing the code, open the serial plotter to visualize the EMG signals. + +## Step 9: Flex Your Muscle + + + + + +Now flex your arm to visualize the muscle signals in real time on your laptop. Similarly you can try to record muscle signals from other parts of your body like biceps, triceps, cheeks, thighs, etc. + +You are all set to explore on your own and make amazing HCI projects at the comfort zone of your home. + +Let us know your feedback in the comments and feel free to ask any questions. + +You can also mail us at support@upsidedownlabs.tech for any kind of support while you are making this project. \ No newline at end of file diff --git a/versioned_docs/version-1.1.0/Experiments/EOGExperiments.md b/versioned_docs/version-1.1.0/Experiments/EOGExperiments.md new file mode 100644 index 00000000..f84cf202 --- /dev/null +++ b/versioned_docs/version-1.1.0/Experiments/EOGExperiments.md @@ -0,0 +1,156 @@ +--- +sidebar_position: 3 +--- + + + +# EOG Experiments + + +# Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill + + +![](img/eog%20img1.webp) + +In this project we will be recording electrical impulses of eyes (EOG) using BioAmp EXG Pill and Arduino Uno. + +## What is Electrooculography (EOG)? + +Electrooculography (EOG) is a technique for measuring the corneo-retinal standing potential that exists between the front and the back of the human eye.The resulting signal is called the electrooculogram. + +## About BioAmp EXG Pill: + +BioAmp EXG Pill is one of a kind pill-size chip that can record publication-grade biopotential signals from your body be it from the heart (ECG), brain (EEG), eyes (EOG), and muscles (EMG). + +The entire BioAmp series of sensors from Upside Down Labs is designed in a way to teach you the basics of the instrumentation amplifier, active bandpass filtering, soldering, programming, neuroscience, HCI, and BCI just to name a few concepts. + +## Supplies + +## HARDWARE: + +1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin) + +1 x BioAmp Cable + +3 x Gel Electrodes + +3 x Jumper Cables + +1 x Arduino Uno / Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC) + +1 x Nuprep Skin Preparation Gel + +1 x Wet wipe + +## SOFTWARE: + +Arduino IDE + +**Note**: You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below: + +DIY Neuroscience Kit Basic ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/) | +[Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) | [Amazon Store](https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ)) + +BioAmp EXG Pill Pack ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/bioamp-exg-pill/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) ) + +BioAmp EXG Pill - EXG Explorer Pack ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/bioamp-exg-pill/) | +[Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) | [Amazon Store](https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1)) + + + +# Step 1: Assembly + +![Img2](img/eog%20img2.webp) + +The BioAmp EXG Pill comes presoldered with DIY Neuroscience Kit Basic but in case you are getting BioAmp EXG Pill seperately then you will have to assemble it for this project by soldering the header pins and JST PH 2.0 connector as shown in the diagram. + +## Step 2: Skin Preparation + + + +![dodge gif](./img/eogimg4.gif) +![dodge gif](./img/eogvid5.gif) + + + +Apply Nuprep Skin Preparation Gel on the skin surface where electrodes would be placed to remove dead skin cells and clean the skin from dirt. After rubbing the skin surface thoroughly, clean it with a wet wipe. + +### About Nuprep Gel: + +Nuprep skin preparation gel is a mildly abrasive, highly conductive gel that should be applied before placing the electrodes on the skin to improve measurements. When applied gently, it strips away the top layer of skin and moistens the underlying skin layer which reduces the skin impedance with minimal skin irritation and discomfort. + +## Step 3: Connecting Electrode Cable + +![dodge gif](./img/eogvid6.gif) + +Connect the BioAmp Cable to BioAmp EXG Pill. We have different variants of the BioAmp Cable so don't go with the color coding and focus on the REF, IN+ and IN- written on the BioAmp EXG Pill. + +## Step 4: Electrode Placements + +![Img5](img/eog%20img5.webp) + + +Follow three simple steps to place the electrodes as given below: + +1. Connect the BioAmp Cable to gel electrodes, + +2. Peel the plastic backing from electrodes + +3. Place the IN+ and IN- cables around your eyes & REF (reference) at the bony part, on the back side of your earlobe as shown in the diagram above. + +There are 2 options to place the electrodes: + +1. Left and right side of eyes to record horizontal movement or +2. Above & below your eye to record the vertical movement. + +You can try both the electrode placements one by one. Let's start with Option 1 (Horizontal movement) + +## Step 5: Connections + +![Img6](img/eog%20img6.webp) + +Connect BioAmp EXG Pill to Arduino Uno using the jumper cables as directed below: + +1. VCC to 5V +2. GND to GND +3. OUT to A0 + +## Step 6: Download Arduino IDE + +Download the Arduino IDE from the link given below: + +[Ardiuno IDE](https://www.arduino.cc/en/software) + + +(We have used Arduino IDE version 1.8.19 for this project) + +After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B) + +**Note**: Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition. + +## Step 7: Coding Time! + + +Copy paste the Arduino Sketch given below in Arduino IDE. + +**EOG Filter**: https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EOGFilter/EOGFilter.ino + +After flashing the code, open the serial plotter to visualize the EOG signals and detect the eye blinks. + +## Step 8: Its Ready + + + + +Move your eyes left and right to visualize the EOG signals. Isn't it amazing? + +Now you can also try the same process for Option 2 (Vertical Movement) of electrode placements to visualize the up and down movements of eyes. + +Congratulations on making this project, seems like you are are all set to explore on your own and make amazing HCI projects at the comfort zone of your home. What are you gonna make using these EOG signals? + +Let us know your feedback in the comments and feel free to ask any questions. + +You can also mail us at support@upsidedownlabs.tech for any kind of support while you are making this project. \ No newline at end of file diff --git a/versioned_docs/version-1.1.0/Experiments/_category_.json b/versioned_docs/version-1.1.0/Experiments/_category_.json new file mode 100644 index 00000000..fa8e04ff --- /dev/null +++ b/versioned_docs/version-1.1.0/Experiments/_category_.json @@ -0,0 +1,9 @@ +{ + "label": "Experiments", + "position": 3, + "link": { + "type": "generated-index", + "description": "Building HCI & BCI projects ussing BioAmp Hardware" + } + } + \ No newline at end of file diff --git a/versioned_docs/version-1.1.0/Experiments/img/Skin_Prep.gif b/versioned_docs/version-1.1.0/Experiments/img/Skin_Prep.gif new file mode 100644 index 00000000..3de34ffc Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/Skin_Prep.gif differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/Skin_Prep2.gif b/versioned_docs/version-1.1.0/Experiments/img/Skin_Prep2.gif new file mode 100644 index 00000000..3b86273b Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/Skin_Prep2.gif differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/eeggif1.gif b/versioned_docs/version-1.1.0/Experiments/img/eeggif1.gif new file mode 100644 index 00000000..9d945df0 Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/eeggif1.gif differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/eeggif2.gif b/versioned_docs/version-1.1.0/Experiments/img/eeggif2.gif new file mode 100644 index 00000000..bd8c9386 Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/eeggif2.gif differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/eeggif3.gif b/versioned_docs/version-1.1.0/Experiments/img/eeggif3.gif new file mode 100644 index 00000000..c64bac11 Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/eeggif3.gif differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/eegimg1.png b/versioned_docs/version-1.1.0/Experiments/img/eegimg1.png new file mode 100644 index 00000000..a9df86f9 Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/eegimg1.png differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/eegimg2.jpg b/versioned_docs/version-1.1.0/Experiments/img/eegimg2.jpg new file mode 100644 index 00000000..0d178e5d Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/eegimg2.jpg differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/eegimg3.webp b/versioned_docs/version-1.1.0/Experiments/img/eegimg3.webp new file mode 100644 index 00000000..4660bf3f Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/eegimg3.webp differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/eegimg4.jpg b/versioned_docs/version-1.1.0/Experiments/img/eegimg4.jpg new file mode 100644 index 00000000..1ab5441b Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/eegimg4.jpg differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/emgimg1.jpg b/versioned_docs/version-1.1.0/Experiments/img/emgimg1.jpg new file mode 100644 index 00000000..fb574854 Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/emgimg1.jpg differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/emgimg2.jpg b/versioned_docs/version-1.1.0/Experiments/img/emgimg2.jpg new file mode 100644 index 00000000..c286c336 Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/emgimg2.jpg differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/emgimg3.jpg b/versioned_docs/version-1.1.0/Experiments/img/emgimg3.jpg new file mode 100644 index 00000000..0821599a Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/emgimg3.jpg differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/emgimg4.jpg b/versioned_docs/version-1.1.0/Experiments/img/emgimg4.jpg new file mode 100644 index 00000000..a86aa232 Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/emgimg4.jpg differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/emgimg5.jpg b/versioned_docs/version-1.1.0/Experiments/img/emgimg5.jpg new file mode 100644 index 00000000..c28a89f6 Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/emgimg5.jpg differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/emgimg6.jpg b/versioned_docs/version-1.1.0/Experiments/img/emgimg6.jpg new file mode 100644 index 00000000..873b2bf2 Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/emgimg6.jpg differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/emgimg7.jpg b/versioned_docs/version-1.1.0/Experiments/img/emgimg7.jpg new file mode 100644 index 00000000..0e9db8f5 Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/emgimg7.jpg differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/eog img1.webp b/versioned_docs/version-1.1.0/Experiments/img/eog img1.webp new file mode 100644 index 00000000..9e0ed1b0 Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/eog img1.webp differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/eog img2.webp b/versioned_docs/version-1.1.0/Experiments/img/eog img2.webp new file mode 100644 index 00000000..99ef476f Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/eog img2.webp differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/eog img5.webp b/versioned_docs/version-1.1.0/Experiments/img/eog img5.webp new file mode 100644 index 00000000..33e36be8 Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/eog img5.webp differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/eog img6.webp b/versioned_docs/version-1.1.0/Experiments/img/eog img6.webp new file mode 100644 index 00000000..4660bf3f Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/eog img6.webp differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/eogimg4.gif b/versioned_docs/version-1.1.0/Experiments/img/eogimg4.gif new file mode 100644 index 00000000..0c13a82b Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/eogimg4.gif differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/eogvid5.gif b/versioned_docs/version-1.1.0/Experiments/img/eogvid5.gif new file mode 100644 index 00000000..1c0364eb Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/eogvid5.gif differ diff --git a/versioned_docs/version-1.1.0/Experiments/img/eogvid6.gif b/versioned_docs/version-1.1.0/Experiments/img/eogvid6.gif new file mode 100644 index 00000000..19dd1ff7 Binary files /dev/null and b/versioned_docs/version-1.1.0/Experiments/img/eogvid6.gif differ diff --git a/versioned_docs/version-1.1.0/intro.md b/versioned_docs/version-1.1.0/intro.md new file mode 100644 index 00000000..841ab509 --- /dev/null +++ b/versioned_docs/version-1.1.0/intro.md @@ -0,0 +1,48 @@ +--- +sidebar_class_name: hidden +sidebar_position: 5 +--- + +# Tutorial Intro + +Let's discover **Docusaurus in less than 5 minutes**. + +## Getting Started + +Get started by **creating a new site**. + +Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**. + +### What you'll need + +- [Node.js](https://nodejs.org/en/download/) version 16.14 or above: + - When installing Node.js, you are recommended to check all checkboxes related to dependencies. + +## Generate a new site + +Generate a new Docusaurus site using the **classic template**. + +The classic template will automatically be added to your project after you run the command: + +```bash +npm init docusaurus@latest my-website classic +``` + +You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor. + +The command also installs all necessary dependencies you need to run Docusaurus. + +## Start your site + +Run the development server: + +```bash +cd my-website +npm run start +``` + +The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there. + +The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/. + +Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes. diff --git a/versioned_docs/version-1.1.0/tutorial-basics/_category_.json b/versioned_docs/version-1.1.0/tutorial-basics/_category_.json new file mode 100644 index 00000000..6fa196f3 --- /dev/null +++ b/versioned_docs/version-1.1.0/tutorial-basics/_category_.json @@ -0,0 +1,9 @@ +{ + "className": "hidden", + "label": "Tutorial - Basics", + "position": 4, + "link": { + "type": "generated-index", + "description": "5 minutes to learn the most important Docusaurus concepts." + } +} diff --git a/versioned_docs/version-1.1.0/tutorial-basics/congratulations.md b/versioned_docs/version-1.1.0/tutorial-basics/congratulations.md new file mode 100644 index 00000000..04771a00 --- /dev/null +++ b/versioned_docs/version-1.1.0/tutorial-basics/congratulations.md @@ -0,0 +1,23 @@ +--- +sidebar_position: 6 +--- + +# Congratulations! + +You have just learned the **basics of Docusaurus** and made some changes to the **initial template**. + +Docusaurus has **much more to offer**! + +Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.md)** and **[i18n](../tutorial-extras/translate-your-site.md)**. + +Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610) + +## What's next? + +- Read the [official documentation](https://docusaurus.io/) +- Modify your site configuration with [`docusaurus.config.js`](https://docusaurus.io/docs/api/docusaurus-config) +- Add navbar and footer items with [`themeConfig`](https://docusaurus.io/docs/api/themes/configuration) +- Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout) +- Add a [search bar](https://docusaurus.io/docs/search) +- Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase) +- Get involved in the [Docusaurus Community](https://docusaurus.io/community/support) diff --git a/versioned_docs/version-1.1.0/tutorial-basics/create-a-blog-post.md b/versioned_docs/version-1.1.0/tutorial-basics/create-a-blog-post.md new file mode 100644 index 00000000..ea472bba --- /dev/null +++ b/versioned_docs/version-1.1.0/tutorial-basics/create-a-blog-post.md @@ -0,0 +1,34 @@ +--- +sidebar_position: 3 +--- + +# Create a Blog Post + +Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed... + +## Create your first Post + +Create a file at `blog/2021-02-28-greetings.md`: + +```md title="blog/2021-02-28-greetings.md" +--- +slug: greetings +title: Greetings! +authors: + - name: Joel Marcey + title: Co-creator of Docusaurus 1 + url: https://github.com/JoelMarcey + image_url: https://github.com/JoelMarcey.png + - name: Sébastien Lorber + title: Docusaurus maintainer + url: https://sebastienlorber.com + image_url: https://github.com/slorber.png +tags: [greetings] +--- + +Congratulations, you have made your first post! + +Feel free to play around and edit this post as much you like. +``` + +A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings). diff --git a/versioned_docs/version-1.1.0/tutorial-basics/create-a-document.md b/versioned_docs/version-1.1.0/tutorial-basics/create-a-document.md new file mode 100644 index 00000000..ffddfa8e --- /dev/null +++ b/versioned_docs/version-1.1.0/tutorial-basics/create-a-document.md @@ -0,0 +1,57 @@ +--- +sidebar_position: 2 +--- + +# Create a Document + +Documents are **groups of pages** connected through: + +- a **sidebar** +- **previous/next navigation** +- **versioning** + +## Create your first Doc + +Create a Markdown file at `docs/hello.md`: + +```md title="docs/hello.md" +# Hello + +This is my **first Docusaurus document**! +``` + +A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello). + +## Configure the Sidebar + +Docusaurus automatically **creates a sidebar** from the `docs` folder. + +Add metadata to customize the sidebar label and position: + +```md title="docs/hello.md" {1-4} +--- +sidebar_label: 'Hi!' +sidebar_position: 3 +--- + +# Hello + +This is my **first Docusaurus document**! +``` + +It is also possible to create your sidebar explicitly in `sidebars.js`: + +```js title="sidebars.js" +module.exports = { + tutorialSidebar: [ + 'intro', + // highlight-next-line + 'hello', + { + type: 'category', + label: 'Tutorial', + items: ['tutorial-basics/create-a-document'], + }, + ], +}; +``` diff --git a/versioned_docs/version-1.1.0/tutorial-basics/create-a-page.md b/versioned_docs/version-1.1.0/tutorial-basics/create-a-page.md new file mode 100644 index 00000000..20e2ac30 --- /dev/null +++ b/versioned_docs/version-1.1.0/tutorial-basics/create-a-page.md @@ -0,0 +1,43 @@ +--- +sidebar_position: 1 +--- + +# Create a Page + +Add **Markdown or React** files to `src/pages` to create a **standalone page**: + +- `src/pages/index.js` → `localhost:3000/` +- `src/pages/foo.md` → `localhost:3000/foo` +- `src/pages/foo/bar.js` → `localhost:3000/foo/bar` + +## Create your first React Page + +Create a file at `src/pages/my-react-page.js`: + +```jsx title="src/pages/my-react-page.js" +import React from 'react'; +import Layout from '@theme/Layout'; + +export default function MyReactPage() { + return ( + +

My React page

+

This is a React page

+
+ ); +} +``` + +A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page). + +## Create your first Markdown Page + +Create a file at `src/pages/my-markdown-page.md`: + +```mdx title="src/pages/my-markdown-page.md" +# My Markdown page + +This is a Markdown page +``` + +A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page). diff --git a/versioned_docs/version-1.1.0/tutorial-basics/deploy-your-site.md b/versioned_docs/version-1.1.0/tutorial-basics/deploy-your-site.md new file mode 100644 index 00000000..1c50ee06 --- /dev/null +++ b/versioned_docs/version-1.1.0/tutorial-basics/deploy-your-site.md @@ -0,0 +1,31 @@ +--- +sidebar_position: 5 +--- + +# Deploy your site + +Docusaurus is a **static-site-generator** (also called **[Jamstack](https://jamstack.org/)**). + +It builds your site as simple **static HTML, JavaScript and CSS files**. + +## Build your site + +Build your site **for production**: + +```bash +npm run build +``` + +The static files are generated in the `build` folder. + +## Deploy your site + +Test your production build locally: + +```bash +npm run serve +``` + +The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/). + +You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**). diff --git a/versioned_docs/version-1.1.0/tutorial-basics/markdown-features.mdx b/versioned_docs/version-1.1.0/tutorial-basics/markdown-features.mdx new file mode 100644 index 00000000..0337f34d --- /dev/null +++ b/versioned_docs/version-1.1.0/tutorial-basics/markdown-features.mdx @@ -0,0 +1,150 @@ +--- +sidebar_position: 4 +--- + +# Markdown Features + +Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**. + +## Front Matter + +Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/): + +```text title="my-doc.md" +// highlight-start +--- +id: my-doc-id +title: My document title +description: My document description +slug: /my-custom-url +--- +// highlight-end + +## Markdown heading + +Markdown text with [links](./hello.md) +``` + +## Links + +Regular Markdown links are supported, using url paths or relative file paths. + +```md +Let's see how to [Create a page](/create-a-page). +``` + +```md +Let's see how to [Create a page](./create-a-page.md). +``` + +**Result:** Let's see how to [Create a page](./create-a-page.md). + +## Images + +Regular Markdown images are supported. + +You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`): + +```md +![Docusaurus logo](/img/docusaurus.png) +``` + +![Docusaurus logo](/img/docusaurus.png) + +You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them: + +```md +![Docusaurus logo](./img/docusaurus.png) +``` + +## Code Blocks + +Markdown code blocks are supported with Syntax highlighting. + + ```jsx title="src/components/HelloDocusaurus.js" + function HelloDocusaurus() { + return ( +

Hello, Docusaurus!

+ ) + } + ``` + +```jsx title="src/components/HelloDocusaurus.js" +function HelloDocusaurus() { + return

Hello, Docusaurus!

; +} +``` + +## Admonitions + +Docusaurus has a special syntax to create admonitions and callouts: + + :::tip My tip + + Use this awesome feature option + + ::: + + :::danger Take care + + This action is dangerous + + ::: + +:::tip My tip + +Use this awesome feature option + +::: + +:::danger Take care + +This action is dangerous + +::: + +## MDX and React Components + +[MDX](https://mdxjs.com/) can make your documentation more **interactive** and allows using any **React components inside Markdown**: + +```jsx +export const Highlight = ({children, color}) => ( + { + alert(`You clicked the color ${color} with label ${children}`) + }}> + {children} + +); + +This is Docusaurus green ! + +This is Facebook blue ! +``` + +export const Highlight = ({children, color}) => ( + { + alert(`You clicked the color ${color} with label ${children}`); + }}> + {children} + +); + +This is Docusaurus green ! + +This is Facebook blue ! diff --git a/versioned_docs/version-1.1.0/tutorial-extras/_category_.json b/versioned_docs/version-1.1.0/tutorial-extras/_category_.json new file mode 100644 index 00000000..2bdeed1a --- /dev/null +++ b/versioned_docs/version-1.1.0/tutorial-extras/_category_.json @@ -0,0 +1,8 @@ +{ + "className": "hidden", + "label": "Tutorial - Extras", + "position": 5, + "link": { + "type": "generated-index" + } +} diff --git a/versioned_docs/version-1.1.0/tutorial-extras/img/docsVersionDropdown.png b/versioned_docs/version-1.1.0/tutorial-extras/img/docsVersionDropdown.png new file mode 100644 index 00000000..97e41646 Binary files /dev/null and b/versioned_docs/version-1.1.0/tutorial-extras/img/docsVersionDropdown.png differ diff --git a/versioned_docs/version-1.1.0/tutorial-extras/img/localeDropdown.png b/versioned_docs/version-1.1.0/tutorial-extras/img/localeDropdown.png new file mode 100644 index 00000000..e257edc1 Binary files /dev/null and b/versioned_docs/version-1.1.0/tutorial-extras/img/localeDropdown.png differ diff --git a/versioned_docs/version-1.1.0/tutorial-extras/manage-docs-versions.md b/versioned_docs/version-1.1.0/tutorial-extras/manage-docs-versions.md new file mode 100644 index 00000000..e12c3f34 --- /dev/null +++ b/versioned_docs/version-1.1.0/tutorial-extras/manage-docs-versions.md @@ -0,0 +1,55 @@ +--- +sidebar_position: 1 +--- + +# Manage Docs Versions + +Docusaurus can manage multiple versions of your docs. + +## Create a docs version + +Release a version 1.0 of your project: + +```bash +npm run docusaurus docs:version 1.0 +``` + +The `docs` folder is copied into `versioned_docs/version-1.0` and `versions.json` is created. + +Your docs now have 2 versions: + +- `1.0` at `http://localhost:3000/docs/` for the version 1.0 docs +- `current` at `http://localhost:3000/docs/next/` for the **upcoming, unreleased docs** + +## Add a Version Dropdown + +To navigate seamlessly across versions, add a version dropdown. + +Modify the `docusaurus.config.js` file: + +```js title="docusaurus.config.js" +module.exports = { + themeConfig: { + navbar: { + items: [ + // highlight-start + { + type: 'docsVersionDropdown', + }, + // highlight-end + ], + }, + }, +}; +``` + +The docs version dropdown appears in your navbar: + +![Docs Version Dropdown](./img/docsVersionDropdown.png) + +## Update an existing version + +It is possible to edit versioned docs in their respective folder: + +- `versioned_docs/version-1.0/hello.md` updates `http://localhost:3000/docs/hello` +- `docs/hello.md` updates `http://localhost:3000/docs/next/hello` diff --git a/versioned_docs/version-1.1.0/tutorial-extras/translate-your-site.md b/versioned_docs/version-1.1.0/tutorial-extras/translate-your-site.md new file mode 100644 index 00000000..caeaffb0 --- /dev/null +++ b/versioned_docs/version-1.1.0/tutorial-extras/translate-your-site.md @@ -0,0 +1,88 @@ +--- +sidebar_position: 2 +--- + +# Translate your site + +Let's translate `docs/intro.md` to French. + +## Configure i18n + +Modify `docusaurus.config.js` to add support for the `fr` locale: + +```js title="docusaurus.config.js" +module.exports = { + i18n: { + defaultLocale: 'en', + locales: ['en', 'fr'], + }, +}; +``` + +## Translate a doc + +Copy the `docs/intro.md` file to the `i18n/fr` folder: + +```bash +mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/ + +cp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md +``` + +Translate `i18n/fr/docusaurus-plugin-content-docs/current/intro.md` in French. + +## Start your localized site + +Start your site on the French locale: + +```bash +npm run start -- --locale fr +``` + +Your localized site is accessible at [http://localhost:3000/fr/](http://localhost:3000/fr/) and the `Getting Started` page is translated. + +:::caution + +In development, you can only use one locale at a same time. + +::: + +## Add a Locale Dropdown + +To navigate seamlessly across languages, add a locale dropdown. + +Modify the `docusaurus.config.js` file: + +```js title="docusaurus.config.js" +module.exports = { + themeConfig: { + navbar: { + items: [ + // highlight-start + { + type: 'localeDropdown', + }, + // highlight-end + ], + }, + }, +}; +``` + +The locale dropdown now appears in your navbar: + +![Locale Dropdown](./img/localeDropdown.png) + +## Build your localized site + +Build your site for a specific locale: + +```bash +npm run build -- --locale fr +``` + +Or build your site to include all the locales at once: + +```bash +npm run build +``` diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/BioAmpEXGPill.md b/versioned_docs/version-1.1.1/BioAmp-Hardware/BioAmpEXGPill.md new file mode 100644 index 00000000..793a97c2 --- /dev/null +++ b/versioned_docs/version-1.1.1/BioAmp-Hardware/BioAmpEXGPill.md @@ -0,0 +1,100 @@ +--- +sidebar_position: 1 +--- + + + +# BioAmp EXG Pill +Professional-grade analog front-end amplification for ECG, EMG, EOG, and EEG biosensing on one tiny board + +## Overview +BioAmp EXG Pill is a small, powerful analog-front-end (AFE) biopotential signal-acquisition board that can be paired with any microcontroller unit (MCU) or single-board computer (SBC) with an analog-to-digital converter (ADC) such as Arduino UNO & Nano, Espressif ESP32, Adafruit QtPy, STM32 Blue Pill, BeagleBone Black, and Raspberry Pi Pico, to name just a few. It also works with any dedicated ADC, like the Texas Instruments ADS1115 and ADS131M0x, among others. + +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/BioAmp_EXG_Pill.jpg) + + + +BioAmp EXG Pill is capable of recording publication-quality biopotential signals like ECG, EMG, EOG, and EEG, without the inclusion of any dedicated hardware or software filters. Its small size allows easy integration into mobile and space-constrained projects, and its powerful noise rejection makes it usable even when the device is close to the AC mains supply. Any 1.5 mm diameter wire can be used as a strain-relieving electrode cable, making it very cost-effective in comparison to the other available. + +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/Basic-Circuit.jpg) +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/EXG_Recording.jpg) + +## Features & Specifications + +| Features & Specifications || +| :------- | :-------- | +|Minimum Input Voltage|4.5-40 V| +|Input Impedance|10^12 Ω| +|Compatible Hardware|Any development board with an ADC (Arduino UNO & Nano, Espressif ESP32, Adafruit QtPy, STM32 Blue Pill, BeagleBone Black, Raspberry Pi Pico, to name just a few)| +|BioPotentials|EMG, ECG, EOG, EEG (configurable band-pass)| +|No. of channels|1| +|Electrodes|2 or 3 (configurable)| +|Dimensions|25.4 x 10 mm| +|Designed for use with carrier board|Yes| +|Open Source|Hardware + Software| + + +## Board layout + +Images below shows a quick overview of the BioAmp EXG Pill hardware design. + +| PCB Front | PCB Back | +|:-------:|:-------:| +|![BioAMp EXG Pill](img/BioAmp%20EXG%20Pill/PCB_Front.png)|![BioAMp EXG Pill](img/BioAmp%20EXG%20Pill/PCB_Back.png)| +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/Front_Specifications.jpg) +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/Back_Specifications.jpg) + + +## ElectroMyoGraphy (EMG) + +Electromyography (EMG) is a technique for evaluating and recording the electrical activity produced by skeletal muscles. EMG is also used as a diagnostic procedure to assess the health of muscles and the nerve cells that control them (motor neurons). EMG results can reveal nerve dysfunction, muscle dysfunction, or problems with nerve-to-muscle signal transmission. The images below show an EMG wave recorded with BioAmp EXG Pill and the electrode placement for the recorded EMG respectively. +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/EMGEnvelop.jpg) +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/EMG.jpg) + + +## ElectroCardioGraphy (ECG) +Electrocardiography (ECG) is the process of producing an electrocardiogram (ECG or EKG). It is a graph of voltage versus time of the electrical activity of the heart using electrodes placed on the skin. These electrodes detect the small electrical changes that are a consequence of cardiac muscle depolarization followed by repolarization during each cardiac cycle (heartbeat). The images below show electrode placement for lead 1 ECG recording, an ECG wave recorded with BioAmp EXG Pill and electrode placement for hand ECG/EKG recording respectively. +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/ECG.jpg) +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/bioamp-Exg-Pill-ECG.jpg) +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/EKG.jpg) + + +## Electrooculography (EOG) +Electrooculography (EOG) is a technique for measuring the corneo-retinal standing potential that exists between the front and the back of the human eye. The resulting signal is called EOG. Common electrode placement for vertical & horizontal EOG recording is shown in the image below. +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/bioamp-exg-pill-eog-electrode-placement.jpg) + +To measure eye movement, pairs of electrodes are typically placed either above and below the eye or to the left and right of the eye. If the eye moves from the center position toward one of the two electrodes, this electrode "sees" the positive side of the retina, and the opposite electrode "sees" the negative side of the retina. Consequently, a potential difference occurs between the electrodes. Assuming the resting potential is constant, the recorded potential is a measure of the eye’s position. The images below show electrode placement for vertical EOG recording, an EOG signal recorded with BioAmp EXG Pill and electrode placement for vertical EOG respectively. +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/EOG-Horizontal.jpg) +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/bioamp-exg-pill-eog.jpg) +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/EOG-Vertical.jpg) + +## Electroencephalography (EEG) +Electroencephalography (EEG) is an electrophysiological monitoring method to record electrical activity on the scalp. During the procedure, electrodes consisting of small metal discs with thin wires are pasted onto your scalp. The electrodes detect tiny electrical charges that result from the activity of your brain cells which are then amplified to appear on the computer screen. It is typically non-invasive, with the electrodes placed along the scalp. The images below show an EEG wave recorded with BioAmp EXG Pill and the electrode placement for the frontal cortex EEG recording respectively. +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/bioamp-exg-pill-eeg.jpg) +![BioAmp EXG Pill](img/BioAmp%20EXG%20Pill/EEG.jpg) + + +## Glimpses of previous versions + +The BioAmp EXG Pill can be used in a variety of ways, the YouTube video below shows a potential way of using v0.7 of BioAmp EXG Pill. + + +A lot has improved in terms of interference rejection and flexibility from v0.7 to v1.0 of the BioAmp EXG Pill. The YouTube video below shows the ECG, EMG, EOG, and EEG recording using v1.0b of device. + + + +## Real-world Applications + +BioAmp EXG Pill is perfect for researchers, makers, and hobbyists looking for novel ways to sample biopotential data. It can be used for a wide variety of interesting biosensing projects, including: + +- AI-assisted detection of congestive heart failure using CNN (ECG) +- Heart-rate variability calculation to detect heart ailments (ECG) +- Prosthetic arm (servo) control (EMG) +- Controlling a 3DOF robotic arm (EMG) +- Quantitative analysis of physical therapy for palsy (EMG) +- Real-time game controllers (EOG) +- Blink detection (EOG) +- Capturing photos with a blink of an eye (EOG) +- Controlling LEDs via brain waves (EEG) +- Patient monitoring +and many more examples. \ No newline at end of file diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/DIYMuscleBioAmpShield.md b/versioned_docs/version-1.1.1/BioAmp-Hardware/DIYMuscleBioAmpShield.md new file mode 100644 index 00000000..336f4750 --- /dev/null +++ b/versioned_docs/version-1.1.1/BioAmp-Hardware/DIYMuscleBioAmpShield.md @@ -0,0 +1,113 @@ +--- +sidebar_position: 2 +--- + +# DIY Muscle BioAmp Shield +All-in-one Arduino Uno Shield for EMG (Electromyography). + +## Overview +Muscle BioAmp Shield is an all-in-one Arduino Uno ElectroMyography (EMG) shield for learning neuroscience with ease. It is a DIY Electrophysiology/NeuroScience shield inspired from Back Yard Brains (BYB) Muscle Spiker shield and provides similar features like hobby servo output, user buttons, LED Bar, Audio output, and battery input. It is perfect for beginners as they can easily stack it on top of Arduino Uno to record, visualize and listen to their muscle signals to make amazing projects in the domain of Human-Computer Interface (HCI). + + + +## Features & Specifications +Muscle BioAmp Shield comes with various plug-and-play options so you can connect hundreds of extension boards like OLED screens, character displays, accelerometers, and servo controllers to name just a few using the STEMMA I2C interface. You also get STEMMA digital and STEMMA analog ports. On STEMMA analog port you can connect additional BioAmp EXG Pill or any other sensor with analog output. On STEMMA digital port you can connect any digital sensor or actuator of your choice. + +![Muscle BioAmp Shield](img/Muscle%20BioAmp%20Shield/Shield%20v0.3%20Pamphlet.jpg) + +||| +| :-------- | :---------- | +|Input Voltage|5V| +|Input Impedance|10^11 Ω| +|Fixed Gain|x2420| +|Bandpass filter|72 – 720 Hz| +|Compatible Hardware|Arduino UNO| +|BioPotentials|EMG (Electromyography)| +|No. of channels|1| +|Electrodes|3 (Positive, Negative, and Reference)| +|Dimensions|6.0 x 5.3 cm| +|Open Source|Hardware + Software| + +## Hardware +Images below shows a quick overview of the hardware design. + +| PCB front | PCB back | +| :-------: | :--------: | +| ![Muscle BioAmp Shield](img/Muscle%20BioAmp%20Shield/Muscle-BioAmp-Shield-Front.png) | ![Muscle BioAmp Shield](img/Muscle%20BioAmp%20Shield/Muscle-BioAmp-Shield-Back.png) | +![With wires](img/Muscle%20BioAmp%20Shield/Muscle-BioAmp-Shield-With-Wires.png) +![Dimensions](img/Muscle%20BioAmp%20Shield/dimensions.png) +![Schematic](img/Muscle%20BioAmp%20Shield/Schematic.png) + +## Assemblying he Kit +You can get your own Muscle BioAmp Shield bag of parts from [our store](https://store.upsidedownlabs.tech/product/muscle-bioamp-shield-v0-3/) or [Tindie](https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-shield-v03-arduino-shield-for-emg/) and for assembling your shield you can take a look at [this interactive BOM](https://upsidedownlabs.github.io/DIY-Muscle-BioAmp-Shield/) or the step by step guide below. + +| Step 1 - Bare board | Step 2 - 1M Resistors | Step 3 - 330R Resistors| +| :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20Shield/Assembly/01_Bare_Board.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/02_1M_Resistors.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/03_330R_Resistors.jpg)| + +| Step 4 - 10K Resistors | Step 5 - 22K Resistors | Step 6 - 1K Resistors| +| :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20Shield/Assembly/04_10K_Resistors.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/05_22K_Resistors.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/06_1K_Resistors.jpg)| + +| Step 7 - 220K Resistors | Step 8 - 1nF Capacitors | Step 9 - 100nF Capacitors| +| :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20Shield/Assembly/07_220K_Resistors.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/08_1nF_Capacitors.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/09_100nF_Capacitors.jpg)| + +| Step 10 - 100pF Capacitors | Step 11 - Servo Header Pin | Step 12 - Buttons| +| :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20Shield/Assembly/10_100pF_Capacitors.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/11_Angled_Header_Pins.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/12_5x5mm_Buttons.jpg)| + +| Step 13 - Optoisolator | Step 14 - Angled JST Connectors | Step 15 - Straight JST Connectors| +| :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20Shield/Assembly/13_OptoIsolator.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/14_JST_PH_Angled_Connectors.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/15_JST_PH_Straight_Connectors.jpg)| + +| Step 16 - IC Socket | Step 17 - IC | Step 18 - LEDs| +| :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20Shield/Assembly/16_IC_Socket.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/17_IC.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/18_LEDs.jpg)| + +| Step 19 - 3.5mm Headphone Jack | Step 20 - 2.2uF Capacitor | Step 21 - 1uF Capacitor| +| :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20Shield/Assembly/19_3.5mm_Headphone_Jack.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/20_2.2uF_Capacitor.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/21_1uF_Capacitor.jpg)| + +| Step 22 - 470uF Capacitors | Step 23 - Shield Header Pins | Step 24 - Shield Ready| +| :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20Shield/Assembly/22_470uF_Capacitor.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/23_Header_Pins.jpg)|![](img/Muscle%20BioAmp%20Shield/Assembly/24_Assembled.jpg)| + +Still can't figure out the assembly? You can follow the video provided below to assemble your Shield. + + + +## Using the Sensor +The possibilities are endless as you can: + +- Visualize the EMG signals using the 6-onboard LEDs. The more you flex, the more LEDs will glow up. +![LED bar graph](img/Muscle%20BioAmp%20Shield/LEDGraph.gif) + +- Directly connect the servo motor via 3-pin angled header pins and control it using muscle signals (EMG). +![Servo motor](img/Muscle%20BioAmp%20Shield/Servo%20control.gif) + +- Give audio/mic input signals from your mobile phone, laptop, or speakers via BioAmp AUX Cable connected to a 4-pin JST PH 2mm connector. + + ![Listening signals](img/Muscle%20BioAmp%20Shield/listening%20muscle%20signals.gif) + +- Connect a 7V to 9V battery via snap cable. +![9V snap](img/Muscle%20BioAmp%20Shield/9V%20battery.gif) + +- Record the muscle signals (EMG) either using Gel Electrodes or BioAmp Bands (dry electrode based) via BioAmp Cable connected to a 3-pin JST PH 2mm connector. + +- Listen to your muscle signals using wired headphones/earphones connected to a 3.5mm headphone jack. +- Connect hundreds of devices like OLED screens, character displays, temperature sensors, accelerometers, BioAmp Hardware, and much more using the two I2C interfaces. +- Connect Arduino Uno's D6 digital I/O pins and A2 analog input pins using STEMMA digital and STEMMA analog connectors respectively. +- Program the 2 user buttons according to your project requirements. + +## Some project ideas +These features make it the ultimate plug-and-play kit for students, researchers, and hobbyists alike who want to use muscle signals (EMG) to make amazing human-computer interface (HCI) projects like: + +1. Controlling a Dino Game using your muscle signals (EMG) + + + + +2. Scrolling Instagram Reels/YouTube Shorts by using your muscle signals (EMG) + + \ No newline at end of file diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/MuscleBioAmpBisCute.md b/versioned_docs/version-1.1.1/BioAmp-Hardware/MuscleBioAmpBisCute.md new file mode 100644 index 00000000..047b9bd2 --- /dev/null +++ b/versioned_docs/version-1.1.1/BioAmp-Hardware/MuscleBioAmpBisCute.md @@ -0,0 +1,83 @@ +--- +sidebar_position: 5 +--- + +# Muscle BioAmp BisCute +Most affordable DIY Electromyography (EMG) sensor + +## Overview +Muscle BioAmp BisCute is an ultra-affordable DIY ElectroMyography (EMG) sensor that allows you to create a Human-Computer Interface (HCI) with ease and in the process of building your own BisCute, you learn what goes into making a functional biopotential amplifier that can be used for amplifying sub mV signals created by muscles inside your body to a level a microcontroller unit (MCU) can understand. To record the EMG signals you can use any standalone ADC like ADS1115 or any microcontroller development board with an ADC of your choice like Arduino UNO/Nano. + +![Muscle BioAmp BisCute](img/Muscle%20BioAmp%20BisCute/Muscle_BioAmp_BisCute.jpg) + + +## Features & Specifications + +||| +| :------- | :-------- | +|Minimum Input Voltage|3.3-30 V| +|Input Impedance|10^11 Ω| +|Fixed Gain|x2420| +|Bandpass filter|72 – 720 Hz| +|Compatible Hardware|Any development board with an ADC (Arduino UNO & Nano, Espressif ESP32, Adafruit QtPy, STM32 Blue Pill, BeagleBone Black, Raspberry Pi Pico, to name just a few)| +|BioPotentials|EMG (Electromyography)| +|No. of channels|1| +|Electrodes|3 (Positive, Negative, and Reference)| +|Dimensions|3.0 x 4.5 cm| +|Open Source|Hardware + Software| + + +## Hardware +Images below shows a quick overview of the hardware design. + +| PCB front | PCB back | +| :-------: | :--------: | +| ![Muscle BioAmp BisCute](img/Muscle%20BioAmp%20BisCute/front.png) | ![Muscle BioAmp BisCute](img/Muscle%20BioAmp%20BisCute/back.png) | +![Muscle BioAmp BisCute](img/Muscle%20BioAmp%20BisCute/assembled.png) +![Muscle BioAmp BisCute](img/Muscle%20BioAmp%20BisCute/dimensions.png) +![Muscle BioAmp BisCute](img/Muscle%20BioAmp%20BisCute/schematic.png) + + +## Assemblying the kit + +You can get your own Muscle BioAmp BisCute bag of parts from [our store](https://store.upsidedownlabs.tech/product/muscle-bioamp-biscute-diy/) or [Tindie](https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-biscute-diy-muscle-sensor/) and for assembling your Biscute you can either take a look at [this interactive BOM](https://upsidedownlabs.github.io/Muscle-BioAmp-BisCute/) or the step by step guide below. + +| Step 1 - Bare board | Step 2 - 100K Resistor | Step 3 - 10K Resistor| Step 4 - 1M Resistor| +| :----: | :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20BisCute/Assembly/001_Board.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/002_100K_Resistor.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/003_10K_Resistors.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/004_1M_Resistors.png)| + +| Step 5 - 330R Resistor | Step 6 - 220K Resistor | Step 7 - 4.7nF Capacitor | Step 8 - 2.2uF Capacitor | +| :----: | :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20BisCute/Assembly/005_330R_Resistors.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/006_220K_Resistor.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/007_4.7nF_Capacitor.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/008_2.2uF_Capacitor.png)| + +| Step 9 - 470uF Capacitor | Step 10 - 100nF Capacitor | Step 11 - 1nF Capacitor | Step 13 - 1K Resistor | +| :----: | :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20BisCute/Assembly/009_470uF_Capacitor.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/010_100nF_Capacitors.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/011_1nF_Capacitors.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/012_1K_Resistor.png)| + +| Step 13 - BioAmp Connector | Step 14 - Header Pin | Step 15 - IC | Step 16 - Biscute ready | +| :----: | :----: | :----: | :----: | +| ![](img/Muscle%20BioAmp%20BisCute/Assembly/013_Connector.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/014_HeaderPin.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/015_IC.png)|![](img/Muscle%20BioAmp%20BisCute/Assembly/016_Assembled.png)| + +Still can't figure out the assembly? You can follow the video provided below to assemble your BisCute. + + + + +## Connecting with Arduino + +After assembling the kit, you can pair it with any development board with an ADC (Arduino UNO & Nano, Espressif ESP32, Adafruit QtPy, STM32 Blue Pill, BeagleBone Black, Raspberry Pi Pico, to name just a few) or any standalone ADC of your choice. + +To measure the EMG signals, just connect BioAmp Cable v3 with the Muscle BioAmp BisCute as shown in the image below, and get started. + +![Muscle BioAmp BisCute](img/Muscle%20BioAmp%20BisCute/Electrode_Placement_Example.jpg) + + +## Using the Sensor + + + + +## Some project ideas + +We have curated a playlist for you which consists some awesome project ideas for you to get started with your next HCI project. + \ No newline at end of file diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/MuscleBioAmpCandy.md b/versioned_docs/version-1.1.1/BioAmp-Hardware/MuscleBioAmpCandy.md new file mode 100644 index 00000000..764dc5ab --- /dev/null +++ b/versioned_docs/version-1.1.1/BioAmp-Hardware/MuscleBioAmpCandy.md @@ -0,0 +1,60 @@ +--- +sidebar_position: 4 +--- + +# Muscle BioAmp Candy +Candy-size affordable muscle sensor for precise EMG sensing + +## Overview +A candy-size single-channel ElectroMyography (EMG) sensor for precise recording of muscle signals at an affordable cost. It is an SMD version of Muscle BioAmp BisCute that can be used to make amazing Human-Computer Interface (HCI) projects. To record the EMG signals you can use any standalone ADC like ADS1115 or any microcontroller development board with an ADC of your choice like Arduino UNO/Nano. + +![Muscle BioAmp Candy](img/Muscle%20BioAmp%20Candy/Muscle-BioAmp-Candy-front.jpg) + +## Features & Specifications + +||| +| :------- | :-------- | +|Minimum Input Voltage|3.3-30 V| +|Input Impedance|10^11 Ω| +|Fixed Gain|x2420| +|Bandpass filter|72 – 720 Hz| +|Compatible Hardware|Any development board with an ADC (Arduino UNO & Nano, Espressif ESP32, Adafruit QtPy, STM32 Blue Pill, BeagleBone Black, Raspberry Pi Pico, to name just a few)| +|BioPotentials|EMG (Electromyography)| +|No. of channels|1| +|Electrodes|3 (Positive, Negative, and Reference)| +|Dimensions|3.5 x 1.5 cm| +|Open Source|Hardware + Software| + + +## Hardware +Images below shows a quick overview of the hardware design. + +| PCB front | PCB back | +| :-------: | :--------: | +| ![Muscle BioAmp Candy](img/Muscle%20BioAmp%20Candy/PCBfront.png) | ![Muscle BioAmp Candy](img/Muscle%20BioAmp%20Candy/PCBback.png) | + +![Muscle BioAmp Candy](img/Muscle%20BioAmp%20Candy/Muscle%20BioAmp%20Candy_front.png) +![Muscle BioAmp Candy](img/Muscle%20BioAmp%20Candy/Muscle%20BioAmp%20Candy_back.png) +![Muscle BioAmp Candy](img/Muscle%20BioAmp%20Candy/dimensions.png) +![Muscle BioAmp Candy](img/Muscle%20BioAmp%20Candy/schematic.png) + + +## Connecting with Arduino + +To get started, you can pair Muscle BioAmp Candy with any development board with an ADC (Arduino UNO & Nano, Espressif ESP32, Adafruit QtPy, STM32 Blue Pill, BeagleBone Black, Raspberry Pi Pico, to name just a few) or any standalone ADC of your choice. + +To measure the EMG signals, connect BioAmp Cable v3 with your muscle sensor as shown in the image below: + +![Muscle BioAmp Candy](img/Muscle%20BioAmp%20Candy/Muscle-BioAmp-Candy-Arduino-EMG-Recording.jpg) + +CAUTION: Make sure to follow the above diagram while making the connections between your Muscle BioAmp Candy & Arduino (or any other ADC of your choice), especially the GND and VCC else it may damage the muscle sensor. + +## Using the sensor + + + + +## Some project ideas + +We have curated a playlist for you which consists some awesome project ideas for you to get started with your next HCI project. + \ No newline at end of file diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/MuscleBioAmpPatchy.md b/versioned_docs/version-1.1.1/BioAmp-Hardware/MuscleBioAmpPatchy.md new file mode 100644 index 00000000..4e2de84c --- /dev/null +++ b/versioned_docs/version-1.1.1/BioAmp-Hardware/MuscleBioAmpPatchy.md @@ -0,0 +1,56 @@ +--- +sidebar_position: 3 +--- + +# Muscle BioAmp Patchy +Wearable ElectroMyoGraphy (EMG) sensor + +## Overview + +Muscle BioAmp Patchy is a wearable ElectroMyoGraphy or EMG sensor that snaps directly to gel electrodes and connects to your muscle like a patch. It comes with reverse polarity projection, power indicator, onboard snap connectors, and Upside Down Labs' powerful BioAmp sensing technology for precise muscle signal recording. This enables you to easily integrate this sensor in your EMG-based Human-Computer Interface (HCI). + +![Muscle BioAmp Patchy](img/Muscle%20BioAmp%20Patchy/Patchy-All-Colors.jpg) + +| Features & Specifications || +| :------- | :-------- | +|Minimum Input Voltage|4.5 V| +|Input Impedance|10^12 Ω| +|Fixed Gain|x2420| +|Bandpass filter|72 – 720 Hz| +|Wearable|Yes| +|Compatible Hardware|Any development board with an ADC (Arduino UNO & Nano, Espressif ESP32, Adafruit QtPy, STM32 Blue Pill, BeagleBone Black, Raspberry Pi Pico, to name just a few)| +|BioPotentials|EMG (Electromyography)| +|No. of channels|1| +|Electrodes|3 (Positive, Negative, and Reference)| +|Dimensions|47 x 14 mm| +|Open Source|Hardware + Software| + +[![Muscle BioAmp Patchy](img/Muscle%20BioAmp%20Patchy/patchy_Intro_YT.jpg)](https://www.youtube.com/watch?v=qRKU_HvapDE&) + +## Hardware +Images below shows a quick overview of the hardware design. + +| PCB front | PCB back | +| :-------: | :--------: | +| ![Muscle BioAmp Patchy](img/Muscle%20BioAmp%20Patchy/PCB-Front.png) | ![Muscle BioAmp Patchy](img/Muscle%20BioAmp%20Patchy/PCB-Back.png) | + +![Muscle BioAmp Patchy](img/Muscle%20BioAmp%20Patchy/Muscle-BioAmp-Patchy-Assembled-Front.png) + +![Muscle BioAmp Patchy](img/Muscle%20BioAmp%20Patchy/Muscle-BioAmp-Patchy-Assembled-Back.png) + + + +## Connecting with Arduino + +To get started, you can pair Muscle BioAmp Patchy with any development board with an ADC (Arduino UNO & Nano, Espressif ESP32, Adafruit QtPy, STM32 Blue Pill, BeagleBone Black, Raspberry Pi Pico, to name just a few) or any standalone ADC of your choice. + +For the connections and electrode placements, you can follow the diagram given below: + +![Muscle BioAmp Patchy Connections](img/Muscle%20BioAmp%20Patchy/Patchy-Arduino-Connections.jpg) + + +## Demonstration + +After snapping the Patchy onto gel electrodes(placed on our targeted muscle), you can connect your patchy to the arduino via jumper cables, arduino to your battery operated laptop, and start recording your EMG easily. Follow the steps shown in the video below for the demonstration. + +[![Muscle BioAmp Patchy](img/Muscle%20BioAmp%20Patchy/patchy_demo_thumbnail.jpg)](https://www.youtube.com/watch?v=4dnCX3U7LS8&) \ No newline at end of file diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/_category_.json b/versioned_docs/version-1.1.1/BioAmp-Hardware/_category_.json new file mode 100644 index 00000000..f06bd155 --- /dev/null +++ b/versioned_docs/version-1.1.1/BioAmp-Hardware/_category_.json @@ -0,0 +1,9 @@ +{ + "label": "BioAmp Hardware", + "position": 1, + "link": { + "type": "generated-index", + "description": "The entire BioAmp series of sensors from Upside Down Labs is designed in a way to teach you the basics of the instrumentation amplifier, active bandpass filtering, soldering, programming, neuroscience, HCI, and BCI just to name a few concepts involved to create solutions for some crazy real-world problems." + } + } + \ No newline at end of file diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/Back_Specifications.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/Back_Specifications.jpg new file mode 100644 index 00000000..96cf9fff Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/Back_Specifications.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/Basic-Circuit.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/Basic-Circuit.jpg new file mode 100644 index 00000000..0d91ffaf Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/Basic-Circuit.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/BioAmp-EXG-Pill-Front.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/BioAmp-EXG-Pill-Front.png new file mode 100644 index 00000000..e31cbb9e Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/BioAmp-EXG-Pill-Front.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/BioAmp_EXG_Pill.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/BioAmp_EXG_Pill.jpg new file mode 100644 index 00000000..4e28a78f Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/BioAmp_EXG_Pill.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/ECG.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/ECG.jpg new file mode 100644 index 00000000..db31a9b4 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/ECG.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EEG.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EEG.jpg new file mode 100644 index 00000000..0a94084e Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EEG.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EKG.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EKG.jpg new file mode 100644 index 00000000..54ac0242 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EKG.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EMG.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EMG.jpg new file mode 100644 index 00000000..1635420b Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EMG.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EMGEnvelop.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EMGEnvelop.jpg new file mode 100644 index 00000000..1b54729a Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EMGEnvelop.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EOG-Horizontal.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EOG-Horizontal.jpg new file mode 100644 index 00000000..7fd3387a Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EOG-Horizontal.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EOG-Vertical.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EOG-Vertical.jpg new file mode 100644 index 00000000..62e2b4e9 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EOG-Vertical.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EXG_Recording.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EXG_Recording.jpg new file mode 100644 index 00000000..3b7e5241 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/EXG_Recording.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/Front_Specifications.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/Front_Specifications.jpg new file mode 100644 index 00000000..41bf4bd7 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/Front_Specifications.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/PCB_Back.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/PCB_Back.png new file mode 100644 index 00000000..bdf299ee Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/PCB_Back.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/PCB_Front.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/PCB_Front.png new file mode 100644 index 00000000..db69c074 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/PCB_Front.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-Exg-Pill-ECG.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-Exg-Pill-ECG.jpg new file mode 100644 index 00000000..5ef901cd Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-Exg-Pill-ECG.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eeg.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eeg.jpg new file mode 100644 index 00000000..232f899f Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eeg.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eog-electrode-placement.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eog-electrode-placement.jpg new file mode 100644 index 00000000..91909f87 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eog-electrode-placement.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eog.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eog.jpg new file mode 100644 index 00000000..f819fe96 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/BioAmp EXG Pill/bioamp-exg-pill-eog.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/001_Board.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/001_Board.png new file mode 100644 index 00000000..eb7afd5a Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/001_Board.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/002_100K_Resistor.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/002_100K_Resistor.png new file mode 100644 index 00000000..29f6c871 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/002_100K_Resistor.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/003_10K_Resistors.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/003_10K_Resistors.png new file mode 100644 index 00000000..74c6d8eb Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/003_10K_Resistors.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/004_1M_Resistors.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/004_1M_Resistors.png new file mode 100644 index 00000000..03c7d49d Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/004_1M_Resistors.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/005_330R_Resistors.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/005_330R_Resistors.png new file mode 100644 index 00000000..1d7bde34 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/005_330R_Resistors.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/006_220K_Resistor.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/006_220K_Resistor.png new file mode 100644 index 00000000..441ad9ad Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/006_220K_Resistor.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/007_4.7nF_Capacitor.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/007_4.7nF_Capacitor.png new file mode 100644 index 00000000..3e388cf4 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/007_4.7nF_Capacitor.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/008_2.2uF_Capacitor.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/008_2.2uF_Capacitor.png new file mode 100644 index 00000000..047539d7 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/008_2.2uF_Capacitor.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/009_470uF_Capacitor.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/009_470uF_Capacitor.png new file mode 100644 index 00000000..a99f680f Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/009_470uF_Capacitor.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/010_100nF_Capacitors.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/010_100nF_Capacitors.png new file mode 100644 index 00000000..94b0df9c Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/010_100nF_Capacitors.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/011_1nF_Capacitors.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/011_1nF_Capacitors.png new file mode 100644 index 00000000..dbccf0e1 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/011_1nF_Capacitors.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/012_1K_Resistor.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/012_1K_Resistor.png new file mode 100644 index 00000000..d0bb2d3f Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/012_1K_Resistor.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/013_Connector.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/013_Connector.png new file mode 100644 index 00000000..7cffe882 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/013_Connector.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/014_HeaderPin.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/014_HeaderPin.png new file mode 100644 index 00000000..f1b58cda Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/014_HeaderPin.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/015_IC.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/015_IC.png new file mode 100644 index 00000000..16be5ea8 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/015_IC.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/016_Assembled.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/016_Assembled.png new file mode 100644 index 00000000..de98e311 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Assembly/016_Assembled.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Electrode_Placement_Example.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Electrode_Placement_Example.jpg new file mode 100644 index 00000000..15c08f3e Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Electrode_Placement_Example.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Muscle_BioAmp_BisCute.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Muscle_BioAmp_BisCute.jpg new file mode 100644 index 00000000..de11d0d1 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/Muscle_BioAmp_BisCute.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/assembled.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/assembled.png new file mode 100644 index 00000000..24ea7e5d Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/assembled.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/back.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/back.png new file mode 100644 index 00000000..452ed0d7 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/back.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/dimensions.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/dimensions.png new file mode 100644 index 00000000..7f564a3e Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/dimensions.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/front.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/front.png new file mode 100644 index 00000000..f12c7079 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/front.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/schematic.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/schematic.png new file mode 100644 index 00000000..89133bc5 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp BisCute/schematic.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle BioAmp Candy_back.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle BioAmp Candy_back.png new file mode 100644 index 00000000..a4840ea4 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle BioAmp Candy_back.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle BioAmp Candy_front.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle BioAmp Candy_front.png new file mode 100644 index 00000000..9aeb4f32 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle BioAmp Candy_front.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle-BioAmp-Candy-Arduino-EMG-Recording.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle-BioAmp-Candy-Arduino-EMG-Recording.jpg new file mode 100644 index 00000000..c654c198 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle-BioAmp-Candy-Arduino-EMG-Recording.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle-BioAmp-Candy-front.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle-BioAmp-Candy-front.jpg new file mode 100644 index 00000000..3bc9f4ad Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/Muscle-BioAmp-Candy-front.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/PCBback.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/PCBback.png new file mode 100644 index 00000000..2ea9547e Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/PCBback.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/PCBfront.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/PCBfront.png new file mode 100644 index 00000000..f88fe872 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/PCBfront.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/dimensions.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/dimensions.png new file mode 100644 index 00000000..4a705cd2 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/dimensions.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/schematic.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/schematic.png new file mode 100644 index 00000000..3b66b0af Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Candy/schematic.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Assembled-Back.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Assembled-Back.png new file mode 100644 index 00000000..8ec64ec9 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Assembled-Back.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Assembled-Front.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Assembled-Front.png new file mode 100644 index 00000000..0ea19379 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Assembled-Front.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Back.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Back.png new file mode 100644 index 00000000..ddb35f4b Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Back.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Front.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Front.png new file mode 100644 index 00000000..afdc69be Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Muscle-BioAmp-Patchy-Front.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/PCB-Back.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/PCB-Back.png new file mode 100644 index 00000000..180924d7 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/PCB-Back.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/PCB-Front.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/PCB-Front.png new file mode 100644 index 00000000..aa5329b5 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/PCB-Front.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Patchy-All-Colors.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Patchy-All-Colors.jpg new file mode 100644 index 00000000..054cd810 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Patchy-All-Colors.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Patchy-Arduino-Connections.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Patchy-Arduino-Connections.jpg new file mode 100644 index 00000000..afa8642b Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/Patchy-Arduino-Connections.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/patchy_Intro_YT.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/patchy_Intro_YT.jpg new file mode 100644 index 00000000..e20f8c29 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/patchy_Intro_YT.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/patchy_demo_thumbnail.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/patchy_demo_thumbnail.jpg new file mode 100644 index 00000000..0c683c9c Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Patchy/patchy_demo_thumbnail.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/9V battery.gif b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/9V battery.gif new file mode 100644 index 00000000..f235e265 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/9V battery.gif differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/01_Bare_Board.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/01_Bare_Board.jpg new file mode 100644 index 00000000..cfbe11e3 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/01_Bare_Board.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/02_1M_Resistors.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/02_1M_Resistors.jpg new file mode 100644 index 00000000..03c26002 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/02_1M_Resistors.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/03_330R_Resistors.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/03_330R_Resistors.jpg new file mode 100644 index 00000000..ba522c56 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/03_330R_Resistors.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/04_10K_Resistors.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/04_10K_Resistors.jpg new file mode 100644 index 00000000..ac7a546e Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/04_10K_Resistors.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/05_22K_Resistors.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/05_22K_Resistors.jpg new file mode 100644 index 00000000..0682ecda Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/05_22K_Resistors.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/06_1K_Resistors.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/06_1K_Resistors.jpg new file mode 100644 index 00000000..5271d51b Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/06_1K_Resistors.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/07_220K_Resistors.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/07_220K_Resistors.jpg new file mode 100644 index 00000000..a08797eb Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/07_220K_Resistors.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/08_1nF_Capacitors.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/08_1nF_Capacitors.jpg new file mode 100644 index 00000000..11927452 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/08_1nF_Capacitors.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/09_100nF_Capacitors.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/09_100nF_Capacitors.jpg new file mode 100644 index 00000000..49a2eaa3 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/09_100nF_Capacitors.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/10_100pF_Capacitors.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/10_100pF_Capacitors.jpg new file mode 100644 index 00000000..1e45c2ed Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/10_100pF_Capacitors.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/11_Angled_Header_Pins.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/11_Angled_Header_Pins.jpg new file mode 100644 index 00000000..4c4eba75 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/11_Angled_Header_Pins.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/12_5x5mm_Buttons.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/12_5x5mm_Buttons.jpg new file mode 100644 index 00000000..2341bc2b Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/12_5x5mm_Buttons.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/13_OptoIsolator.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/13_OptoIsolator.jpg new file mode 100644 index 00000000..879d37f6 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/13_OptoIsolator.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/14_JST_PH_Angled_Connectors.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/14_JST_PH_Angled_Connectors.jpg new file mode 100644 index 00000000..30453799 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/14_JST_PH_Angled_Connectors.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/15_JST_PH_Straight_Connectors.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/15_JST_PH_Straight_Connectors.jpg new file mode 100644 index 00000000..e750b343 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/15_JST_PH_Straight_Connectors.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/16_IC_Socket.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/16_IC_Socket.jpg new file mode 100644 index 00000000..a9edfe14 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/16_IC_Socket.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/17_IC.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/17_IC.jpg new file mode 100644 index 00000000..8f0e4345 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/17_IC.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/18_LEDs.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/18_LEDs.jpg new file mode 100644 index 00000000..e355c1be Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/18_LEDs.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/19_3.5mm_Headphone_Jack.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/19_3.5mm_Headphone_Jack.jpg new file mode 100644 index 00000000..435d9d8e Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/19_3.5mm_Headphone_Jack.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/20_2.2uF_Capacitor.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/20_2.2uF_Capacitor.jpg new file mode 100644 index 00000000..2c4755ea Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/20_2.2uF_Capacitor.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/21_1uF_Capacitor.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/21_1uF_Capacitor.jpg new file mode 100644 index 00000000..5b25df95 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/21_1uF_Capacitor.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/22_470uF_Capacitor.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/22_470uF_Capacitor.jpg new file mode 100644 index 00000000..449b54ec Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/22_470uF_Capacitor.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/23_Header_Pins.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/23_Header_Pins.jpg new file mode 100644 index 00000000..da871ac1 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/23_Header_Pins.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/24_Assembled.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/24_Assembled.jpg new file mode 100644 index 00000000..5f75008c Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Assembly/24_Assembled.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Claw control.gif b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Claw control.gif new file mode 100644 index 00000000..a393a8ed Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Claw control.gif differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/LEDGraph.gif b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/LEDGraph.gif new file mode 100644 index 00000000..eb294e54 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/LEDGraph.gif differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-Back.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-Back.png new file mode 100644 index 00000000..4d8593c5 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-Back.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-Front.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-Front.png new file mode 100644 index 00000000..6ec0d09b Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-Front.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-With-Wires.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-With-Wires.png new file mode 100644 index 00000000..33a58553 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Muscle-BioAmp-Shield-With-Wires.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Schematic.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Schematic.png new file mode 100644 index 00000000..180c3298 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Schematic.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Servo control.gif b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Servo control.gif new file mode 100644 index 00000000..da3a422a Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Servo control.gif differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Shield v0.3 Pamphlet.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Shield v0.3 Pamphlet.jpg new file mode 100644 index 00000000..ee60abb8 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Shield v0.3 Pamphlet.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Shield v0.3.jpg b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Shield v0.3.jpg new file mode 100644 index 00000000..6de912bd Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/Shield v0.3.jpg differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/dimensions.png b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/dimensions.png new file mode 100644 index 00000000..928445f0 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/dimensions.png differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/listening muscle signals.gif b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/listening muscle signals.gif new file mode 100644 index 00000000..fc654680 Binary files /dev/null and b/versioned_docs/version-1.1.1/BioAmp-Hardware/img/Muscle BioAmp Shield/listening muscle signals.gif differ diff --git a/versioned_docs/version-1.1.1/BioAmp-Software/_category_.json b/versioned_docs/version-1.1.1/BioAmp-Software/_category_.json new file mode 100644 index 00000000..b5e59158 --- /dev/null +++ b/versioned_docs/version-1.1.1/BioAmp-Software/_category_.json @@ -0,0 +1,9 @@ +{ + "label": "BioAmp Software", + "position": 2, + "link": { + "type": "generated-index", + "description": "All about the powerful BioAmp technology" + } + } + \ No newline at end of file diff --git a/versioned_docs/version-1.1.1/BioAmp-Software/intro.md b/versioned_docs/version-1.1.1/BioAmp-Software/intro.md new file mode 100644 index 00000000..aa0131c8 --- /dev/null +++ b/versioned_docs/version-1.1.1/BioAmp-Software/intro.md @@ -0,0 +1,5 @@ +--- +sidebar_position: 1 +--- + +# Software examples \ No newline at end of file diff --git a/versioned_docs/version-1.1.1/Experiments/ECGExperiments.md b/versioned_docs/version-1.1.1/Experiments/ECGExperiments.md new file mode 100644 index 00000000..ba4ac76e --- /dev/null +++ b/versioned_docs/version-1.1.1/Experiments/ECGExperiments.md @@ -0,0 +1,5 @@ +--- +sidebar_position: 2 +--- + +# ECG Experiments \ No newline at end of file diff --git a/versioned_docs/version-1.1.1/Experiments/EEGExperiments.md b/versioned_docs/version-1.1.1/Experiments/EEGExperiments.md new file mode 100644 index 00000000..84d0cb8c --- /dev/null +++ b/versioned_docs/version-1.1.1/Experiments/EEGExperiments.md @@ -0,0 +1,183 @@ +--- +sidebar_position: 4 +--- + +# EEG Experiments + +# Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill + +![](img/eegimg1.png) + +In this project we will be recording brainwaves or EEG from prefrontal cortex part of the brain using Arduino Uno and BioAmp EXG Pill. + +## What is Electroencephalography (EEG)? + +An electroencephalogram (EEG) is a test used to evaluate the electrical activity in your brain. It can help detect potential problems with brain cell communication. + +## About BioAmp EXG Pill: + +BioAmp EXG Pill is one of a kind pill-size chip that can record publication-grade biopotential signals from your body be it from the heart (ECG), brain (EEG), eyes (EOG), and muscles (EMG). + +The entire BioAmp series of sensors from Upside Down Labs is designed in a way to teach you the basics of the instrumentation amplifier, active bandpass filtering, soldering, programming, neuroscience, HCI, and BCI just to name a few concepts. + +# Supplies + +## HARDWARE + +1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin) + +1 x BioAmp Cable + +3 x Gel Electrodes + +3 x Jumper Cables + +1 x Arduino Uno / Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC) + +1 x Nuprep Skin Preparation Gel + +1 x Wet wipe + +1 x Brain BioAmp Band (optional) + +1 x Electrode Gel (only if using Brain BioAmp Band) + +## SOFTWARE + +1. Arduino IDE +2. Backyard Brains' Spike Recorder + +**Note**: You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below: + +DIY Neuroscience Kit Basic ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/) | +[Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) | [Amazon Store](https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ)) + +BioAmp EXG Pill Pack ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/bioamp-exg-pill/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) ) + +BioAmp EXG Pill - EXG Explorer Pack ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/bioamp-exg-pill/) | +[Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) | [Amazon Store](https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1)) + +**Disclaimer:** DIY Neuroscience Kit Basic includes everything you need for this project but BioAmp EXG Pill Packs does not include all the supplies and you will have to order them seperately from our stores. + +## Step 1: Assembly + +![](img/eegimg2.jpg) + +The BioAmp EXG Pill comes presoldered with DIY Neuroscience Kit Basic but in case you are getting BioAmp EXG Pill seperately then you will have to assemble it for this project by soldering the header pins and JST PH 2.0 connector as shown in the diagram. + +## Step 2: Skin Preparation + +![dodge gif](./img/Skin_Prep2.gif) + +Apply Nuprep Skin Preparation Gel on the skin surface where electrodes would be placed to remove dead skin cells and clean the skin from dirt. After rubbing the skin surface thoroughly, clean it with a wet wipe. + + +### About Nuprep Gel: +Nuprep skin preparation gel is a mildly abrasive, highly conductive gel that should be applied before placing the electrodes on the skin to improve measurements. When applied gently, it strips away the top layer of skin and moistens the underlying skin layer which reduces the skin impedance with minimal skin irritation and discomfort. + +## Step 3: Connecting Electrode Cable + +![dodge gif](./img/eeggif1.gif) + +Connect the BioAmp Cable to BioAmp EXG Pill. We have different variants of the BioAmp Cable so don't go with the color coding and focus on the REF, IN+ and IN- written on the BioAmp EXG Pill. + +## Step 4: Electrode Placements + +![dodge gif](./img/eeggif2.gif) +![dodge gif](./img/eeggif3.gif) + +Let's understand the electrode placements before moving forward in this project. For recording EEG from prefrontal cortex part of brain, you have to place the electrodes on your forehead, specifically on Fp1 and Fp2 refer International 10-20 system for recording EEG + +### What is International 10-20 system for recording EEG? + +It is an internationally recognized method to describe and apply the location of electrodes in the context of an EEG exam or voluntary lab research. This method was developed to maintain standardized testing methods ensuring that a subject's study outcomes (clinical or research) could be compiled, reproduced, and effectively analyzed and compared using the scientific method. + +### Options to measure EEG + +So now we have 2 options to measure the EEG signals, either using the gel electrodes or using dry electrode based EEG band. You can try both of them one by one. + +### Option 1 - Measuring EEG using Gel electrodes: + +1. Connect the BioAmp Cable to gel electrodes, +2. Peel the plastic backing from electrodes +3. Place the IN+ and IN- cables on the forehead & REF (reference) at the bony part, on the back side of your earlobe as shown in the video above. + +### Option 2 - Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band and gel electrode: + + +1. Connect the BioAmp Cable to Brain BioAmp Band in a way such that IN+ and IN- are placed on the forehead. +2. In this case, the REF (reference) should be connected using gel electrode. So connect the reference of BioAmp Cable to the gel electrode, peel the plastic backing and place it at the bony part, on the back side of your earlobe. +3. Now put a small drop of electrode gel on the dry electrodes (IN+ and IN-) between the skin and metallic part of BioAmp Cable to get the best results. + +## Step 5: Connections + + +![](img/eegimg3.webp) + +Connect BioAmp EXG Pill to Arduino Uno using the jumper cables as directed below: + +1. VCC to 5V +2. GND to GND +3. OUT to A0 + + +## Step 6: Download Arduino IDE + +Download the Arduino IDE from the link given below: + +[Ardiuno IDE](https://www.arduino.cc/en/software) + + +(We have used Arduino IDE version 1.8.19 for this project) + +After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B) + +**Note**: Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition. + + +## Step 7: Download Spike Recorder + +Download Backyard Brains' Spike Recorder according to the operating system you are using (Windows, OSX, Linux) from the link given below: + +https://backyardbrains.com/products/spikerecorder + +After installing the software, just copy paste the Spike Recorder Arduino Code by clicking the link below in Arduino IDE, save the file and flash it on the Arduino Uno. + +Spike Recorder Arduino Code: https://raw.githubusercontent.com/BackyardBrains/SpikerShield/master/Muscle/Arduino%20Code/SpikeRecorder/SpikeRecorderSpikerShield_V1_1.ino + +Now start the Spike Recorder. + +## Step 8: Configurations on Spike Recorder + +![](img/eegimg4.jpg) + +When the Spike Recorder starts, it will start recording from your microphone. To change that, go to the settings by clicking the first icon on the top left corner of the screen, select the COM port of your Arduino Uno and click on connect. + +Also mute the speakers and apply the 50Hz notch filter by clicking on the checkbox as shown in the screenshot above. + +You should set the low band pass filter to 1Hz and high bandpass filter to 40Hz as we are only recording the EEG singnals which range between these frequencies. + +Now everything is configured and connected. So close the settings window and start recording EEG signals. + +## Step 9: Visualizing EEG + + + + + +The signals that you can see on the screen right now are originating from prefrontal cortex part of your brain and propagating through all the layers to the surface of your skin. + +To record these EEG signals, you have placed the electrodes on the forehead, then BioAmp EXG Pill is amplifying those signals so that we can detect it and finally sending it to the ADC (Analog to Digital Convertor) of your Arduino Uno. Ultimately the signals are being visualized in Spike Recorder software. + +We hope everything is clear now and you understand how the signals are propagating from your brain to the screen of the laptop. + +** Features of Spike Recorder that you can explore:** + +1. Increase or decrease the scale of the Y axis by clicking on the + and - icons respecitively that is present on the left side of the graph. +2. Increase or decrease the X axis timescale by sliding up and down on the scroll wheel of the mouse. +3. Visualize the FFT graph by clicking on the FFT icon on top left size of the screen. +4. Record the data in .wav format by clicking the record icon on the top right corner. You can convert this data in any other format according to your project requirements. +5. Listen to the signals by clicking the volume icon on the top right corner. No don't smile right now, that's how your brain sounds like :P +It was a very basic project, but now we think you are all set to explore on your own and make amazing BCI projects. Let us know your feedback in the comments and feel free to ask any questions. + +You can also mail us at support@upsidedownlabs.tech for any kind of support while you are making this project. \ No newline at end of file diff --git a/versioned_docs/version-1.1.1/Experiments/EMGExperiments.md b/versioned_docs/version-1.1.1/Experiments/EMGExperiments.md new file mode 100644 index 00000000..4fa15aa9 --- /dev/null +++ b/versioned_docs/version-1.1.1/Experiments/EMGExperiments.md @@ -0,0 +1,138 @@ +--- +sidebar_position: 1 +--- + +# EMG Experiments + +# Recording and Visualizing Muscle Signals (EMG) Using Muscle BioAmp Patchy (wearable Muscle Sensor) + +![](img/emgimg1.jpg) +![](img/emgimg2.jpg) + +In this tutorial we are going to show you how to create a simple EMG system at your home so that you can easily record and visualize muscle signals in real time using Muscle BioAmp Patchy (wearable muscle sensor) and Arduino Uno. + +But before moving forward, let's understand a brief about Electromyography. + +## What is Electromyography (EMG)? +Electromyography (EMG) is a technique for evaluating and recording the electrical activity produced by skeletal muscles. + +Some applications of EMG: + +1. Prosthetic hands, +2. Human augmentation, +3. Games controllers, +4. Rehabilitation and +5. Physical therapy +Even doctors are using them for the diagnosis of various neuromuscular ailments. + +Recently, it was in the news that [Meta is working on wearable EMG sensors](https://tech.facebook.com/reality-labs/2021/03/inside-facebook-reality-labs-wrist-based-interaction-for-the-next-computing-platform/) to track user movements in the metaverse. + +### About Muscle BioAmp Patchy: + +Muscle BioAmp Patchy is a small **wearable muscle sensor** for precise EMG sensing. It can be snapped directly to the electrodes, eliminating electrode cables. + +## Supplies + +## HARDWARE + +1 x Muscle BioAmp Patchy Kit ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/muscle-bioamp-patchy-v0-2/) | [Amazon India](https://www.amazon.in/dp/B0C4P2JB7J?ref=myi_title_dp&th=1) | [Tindie India](https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-patchy-wearable-muscle-sensor/)) + +The kit will include: +* 1 Muscle BioAmp Patchy, +* 1 Reference Cable, +* 3 Jumper Wires, +* 3 Boxy Gel Electrodes + + +1 x Arduino Uno with USB Cable + +1 x Nuprep Skin Preparation Gel ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/nuprep-gel/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/)) + +1 x Wet wipe + +## SOFTWARE: + +Ardiuno IDE + +## Step 1: Connecting Reference Cable + +![](img/emgimg3.jpg) + +Connect the reference cable to the Muscle BioAmp Patchy as shown in the above diagram. + +## Step 2: Connecting Muscle BioAmp Patchy to Gel Electrodes + +![](img/emgimg4.jpg) + +Connect the Muscle BioAmp Patchy to gel electrodes (Don't peel the plastic from the electrodes at this moment). + +## Step 3: Skin Preparation + +![dodge gif](./img/Skin_Prep.gif) + +Apply Nuprep Skin Preparation Gel on the skin surface where electrodes would be placed to remove dead skin cells and clean the skin from dirt. After rubbing the skin surface thoroughly, clean it with a wet wipe. + +### About Nuprep Gel: + +Nuprep skin preparation gel is a mildly abrasive, highly conductive gel that should be applied before placing the electrodes on the skin to improve measurements. When applied gently, it strips away the top layer of skin and moistens the underlying skin layer which reduces the skin impedance with minimal skin irritation and discomfort. This enhances the performance of the monitoring electrode and virtually eliminates problems such as diaphoresis and muscle artifacts. + + +## Step 4: Electrode Placements + +![](img/emgimg5.jpg) + +Now peel off the plastic backing from the gel electrodes and place the Muscle BioAmp Patchy on the muscle from where you want to record muscle signals (EMG). In this project, we are targeting the ulnar nerve on the forearm. + + +## Step 5: Connections + +![](img/emgimg6.jpg) + + +Connect the Muscle BioAmp Patchy to your Arduino Uno using jumper cables as directed below: + +1. OUT to A0 +2. GND to GND +3. VCC to 5V + + +## Step 6: Download Arduino IDE + +Download the Arduino IDE from the link given below: + +https://www.arduino.cc/en/software + +(We have used Arduino IDE version 1.8.19 for this project) + +After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B) + +**Note:** Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition. + +## Step 7: Check All the Conections + +![](img/emgimg7.jpg) + +Now that you have made all the connections and downloaded the Arduino IDE. Once again check everything as shown in the diagram. + +## Step 8: Coding Time! + +Copy paste any one of the Arduino Sketches given below in Arduino IDE: + +1. EMG Envelop: https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino +2. EMG Filter: https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino + +After flashing the code, open the serial plotter to visualize the EMG signals. + +## Step 9: Flex Your Muscle + + + + + +Now flex your arm to visualize the muscle signals in real time on your laptop. Similarly you can try to record muscle signals from other parts of your body like biceps, triceps, cheeks, thighs, etc. + +You are all set to explore on your own and make amazing HCI projects at the comfort zone of your home. + +Let us know your feedback in the comments and feel free to ask any questions. + +You can also mail us at support@upsidedownlabs.tech for any kind of support while you are making this project. \ No newline at end of file diff --git a/versioned_docs/version-1.1.1/Experiments/EOGExperiments.md b/versioned_docs/version-1.1.1/Experiments/EOGExperiments.md new file mode 100644 index 00000000..f84cf202 --- /dev/null +++ b/versioned_docs/version-1.1.1/Experiments/EOGExperiments.md @@ -0,0 +1,156 @@ +--- +sidebar_position: 3 +--- + + + +# EOG Experiments + + +# Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill + + +![](img/eog%20img1.webp) + +In this project we will be recording electrical impulses of eyes (EOG) using BioAmp EXG Pill and Arduino Uno. + +## What is Electrooculography (EOG)? + +Electrooculography (EOG) is a technique for measuring the corneo-retinal standing potential that exists between the front and the back of the human eye.The resulting signal is called the electrooculogram. + +## About BioAmp EXG Pill: + +BioAmp EXG Pill is one of a kind pill-size chip that can record publication-grade biopotential signals from your body be it from the heart (ECG), brain (EEG), eyes (EOG), and muscles (EMG). + +The entire BioAmp series of sensors from Upside Down Labs is designed in a way to teach you the basics of the instrumentation amplifier, active bandpass filtering, soldering, programming, neuroscience, HCI, and BCI just to name a few concepts. + +## Supplies + +## HARDWARE: + +1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin) + +1 x BioAmp Cable + +3 x Gel Electrodes + +3 x Jumper Cables + +1 x Arduino Uno / Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC) + +1 x Nuprep Skin Preparation Gel + +1 x Wet wipe + +## SOFTWARE: + +Arduino IDE + +**Note**: You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below: + +DIY Neuroscience Kit Basic ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/) | +[Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) | [Amazon Store](https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ)) + +BioAmp EXG Pill Pack ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/bioamp-exg-pill/) | [Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) ) + +BioAmp EXG Pill - EXG Explorer Pack ([Upside Down Labs Store](https://store.upsidedownlabs.tech/product/bioamp-exg-pill/) | +[Tindie Store](https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/) | [Amazon Store](https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1)) + + + +# Step 1: Assembly + +![Img2](img/eog%20img2.webp) + +The BioAmp EXG Pill comes presoldered with DIY Neuroscience Kit Basic but in case you are getting BioAmp EXG Pill seperately then you will have to assemble it for this project by soldering the header pins and JST PH 2.0 connector as shown in the diagram. + +## Step 2: Skin Preparation + + + +![dodge gif](./img/eogimg4.gif) +![dodge gif](./img/eogvid5.gif) + + + +Apply Nuprep Skin Preparation Gel on the skin surface where electrodes would be placed to remove dead skin cells and clean the skin from dirt. After rubbing the skin surface thoroughly, clean it with a wet wipe. + +### About Nuprep Gel: + +Nuprep skin preparation gel is a mildly abrasive, highly conductive gel that should be applied before placing the electrodes on the skin to improve measurements. When applied gently, it strips away the top layer of skin and moistens the underlying skin layer which reduces the skin impedance with minimal skin irritation and discomfort. + +## Step 3: Connecting Electrode Cable + +![dodge gif](./img/eogvid6.gif) + +Connect the BioAmp Cable to BioAmp EXG Pill. We have different variants of the BioAmp Cable so don't go with the color coding and focus on the REF, IN+ and IN- written on the BioAmp EXG Pill. + +## Step 4: Electrode Placements + +![Img5](img/eog%20img5.webp) + + +Follow three simple steps to place the electrodes as given below: + +1. Connect the BioAmp Cable to gel electrodes, + +2. Peel the plastic backing from electrodes + +3. Place the IN+ and IN- cables around your eyes & REF (reference) at the bony part, on the back side of your earlobe as shown in the diagram above. + +There are 2 options to place the electrodes: + +1. Left and right side of eyes to record horizontal movement or +2. Above & below your eye to record the vertical movement. + +You can try both the electrode placements one by one. Let's start with Option 1 (Horizontal movement) + +## Step 5: Connections + +![Img6](img/eog%20img6.webp) + +Connect BioAmp EXG Pill to Arduino Uno using the jumper cables as directed below: + +1. VCC to 5V +2. GND to GND +3. OUT to A0 + +## Step 6: Download Arduino IDE + +Download the Arduino IDE from the link given below: + +[Ardiuno IDE](https://www.arduino.cc/en/software) + + +(We have used Arduino IDE version 1.8.19 for this project) + +After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B) + +**Note**: Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition. + +## Step 7: Coding Time! + + +Copy paste the Arduino Sketch given below in Arduino IDE. + +**EOG Filter**: https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EOGFilter/EOGFilter.ino + +After flashing the code, open the serial plotter to visualize the EOG signals and detect the eye blinks. + +## Step 8: Its Ready + + + + +Move your eyes left and right to visualize the EOG signals. Isn't it amazing? + +Now you can also try the same process for Option 2 (Vertical Movement) of electrode placements to visualize the up and down movements of eyes. + +Congratulations on making this project, seems like you are are all set to explore on your own and make amazing HCI projects at the comfort zone of your home. What are you gonna make using these EOG signals? + +Let us know your feedback in the comments and feel free to ask any questions. + +You can also mail us at support@upsidedownlabs.tech for any kind of support while you are making this project. \ No newline at end of file diff --git a/versioned_docs/version-1.1.1/Experiments/_category_.json b/versioned_docs/version-1.1.1/Experiments/_category_.json new file mode 100644 index 00000000..fa8e04ff --- /dev/null +++ b/versioned_docs/version-1.1.1/Experiments/_category_.json @@ -0,0 +1,9 @@ +{ + "label": "Experiments", + "position": 3, + "link": { + "type": "generated-index", + "description": "Building HCI & BCI projects ussing BioAmp Hardware" + } + } + \ No newline at end of file diff --git a/versioned_docs/version-1.1.1/Experiments/img/Skin_Prep.gif b/versioned_docs/version-1.1.1/Experiments/img/Skin_Prep.gif new file mode 100644 index 00000000..3de34ffc Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/Skin_Prep.gif differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/Skin_Prep2.gif b/versioned_docs/version-1.1.1/Experiments/img/Skin_Prep2.gif new file mode 100644 index 00000000..3b86273b Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/Skin_Prep2.gif differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/eeggif1.gif b/versioned_docs/version-1.1.1/Experiments/img/eeggif1.gif new file mode 100644 index 00000000..9d945df0 Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/eeggif1.gif differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/eeggif2.gif b/versioned_docs/version-1.1.1/Experiments/img/eeggif2.gif new file mode 100644 index 00000000..bd8c9386 Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/eeggif2.gif differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/eeggif3.gif b/versioned_docs/version-1.1.1/Experiments/img/eeggif3.gif new file mode 100644 index 00000000..c64bac11 Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/eeggif3.gif differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/eegimg1.png b/versioned_docs/version-1.1.1/Experiments/img/eegimg1.png new file mode 100644 index 00000000..a9df86f9 Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/eegimg1.png differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/eegimg2.jpg b/versioned_docs/version-1.1.1/Experiments/img/eegimg2.jpg new file mode 100644 index 00000000..0d178e5d Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/eegimg2.jpg differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/eegimg3.webp b/versioned_docs/version-1.1.1/Experiments/img/eegimg3.webp new file mode 100644 index 00000000..4660bf3f Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/eegimg3.webp differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/eegimg4.jpg b/versioned_docs/version-1.1.1/Experiments/img/eegimg4.jpg new file mode 100644 index 00000000..1ab5441b Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/eegimg4.jpg differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/emgimg1.jpg b/versioned_docs/version-1.1.1/Experiments/img/emgimg1.jpg new file mode 100644 index 00000000..fb574854 Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/emgimg1.jpg differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/emgimg2.jpg b/versioned_docs/version-1.1.1/Experiments/img/emgimg2.jpg new file mode 100644 index 00000000..c286c336 Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/emgimg2.jpg differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/emgimg3.jpg b/versioned_docs/version-1.1.1/Experiments/img/emgimg3.jpg new file mode 100644 index 00000000..0821599a Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/emgimg3.jpg differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/emgimg4.jpg b/versioned_docs/version-1.1.1/Experiments/img/emgimg4.jpg new file mode 100644 index 00000000..a86aa232 Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/emgimg4.jpg differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/emgimg5.jpg b/versioned_docs/version-1.1.1/Experiments/img/emgimg5.jpg new file mode 100644 index 00000000..c28a89f6 Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/emgimg5.jpg differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/emgimg6.jpg b/versioned_docs/version-1.1.1/Experiments/img/emgimg6.jpg new file mode 100644 index 00000000..873b2bf2 Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/emgimg6.jpg differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/emgimg7.jpg b/versioned_docs/version-1.1.1/Experiments/img/emgimg7.jpg new file mode 100644 index 00000000..0e9db8f5 Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/emgimg7.jpg differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/eog img1.webp b/versioned_docs/version-1.1.1/Experiments/img/eog img1.webp new file mode 100644 index 00000000..9e0ed1b0 Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/eog img1.webp differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/eog img2.webp b/versioned_docs/version-1.1.1/Experiments/img/eog img2.webp new file mode 100644 index 00000000..99ef476f Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/eog img2.webp differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/eog img5.webp b/versioned_docs/version-1.1.1/Experiments/img/eog img5.webp new file mode 100644 index 00000000..33e36be8 Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/eog img5.webp differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/eog img6.webp b/versioned_docs/version-1.1.1/Experiments/img/eog img6.webp new file mode 100644 index 00000000..4660bf3f Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/eog img6.webp differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/eogimg4.gif b/versioned_docs/version-1.1.1/Experiments/img/eogimg4.gif new file mode 100644 index 00000000..0c13a82b Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/eogimg4.gif differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/eogvid5.gif b/versioned_docs/version-1.1.1/Experiments/img/eogvid5.gif new file mode 100644 index 00000000..1c0364eb Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/eogvid5.gif differ diff --git a/versioned_docs/version-1.1.1/Experiments/img/eogvid6.gif b/versioned_docs/version-1.1.1/Experiments/img/eogvid6.gif new file mode 100644 index 00000000..19dd1ff7 Binary files /dev/null and b/versioned_docs/version-1.1.1/Experiments/img/eogvid6.gif differ diff --git a/versioned_docs/version-1.1.1/intro.md b/versioned_docs/version-1.1.1/intro.md new file mode 100644 index 00000000..841ab509 --- /dev/null +++ b/versioned_docs/version-1.1.1/intro.md @@ -0,0 +1,48 @@ +--- +sidebar_class_name: hidden +sidebar_position: 5 +--- + +# Tutorial Intro + +Let's discover **Docusaurus in less than 5 minutes**. + +## Getting Started + +Get started by **creating a new site**. + +Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**. + +### What you'll need + +- [Node.js](https://nodejs.org/en/download/) version 16.14 or above: + - When installing Node.js, you are recommended to check all checkboxes related to dependencies. + +## Generate a new site + +Generate a new Docusaurus site using the **classic template**. + +The classic template will automatically be added to your project after you run the command: + +```bash +npm init docusaurus@latest my-website classic +``` + +You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor. + +The command also installs all necessary dependencies you need to run Docusaurus. + +## Start your site + +Run the development server: + +```bash +cd my-website +npm run start +``` + +The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there. + +The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/. + +Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes. diff --git a/versioned_docs/version-1.1.1/tutorial-basics/_category_.json b/versioned_docs/version-1.1.1/tutorial-basics/_category_.json new file mode 100644 index 00000000..6fa196f3 --- /dev/null +++ b/versioned_docs/version-1.1.1/tutorial-basics/_category_.json @@ -0,0 +1,9 @@ +{ + "className": "hidden", + "label": "Tutorial - Basics", + "position": 4, + "link": { + "type": "generated-index", + "description": "5 minutes to learn the most important Docusaurus concepts." + } +} diff --git a/versioned_docs/version-1.1.1/tutorial-basics/congratulations.md b/versioned_docs/version-1.1.1/tutorial-basics/congratulations.md new file mode 100644 index 00000000..04771a00 --- /dev/null +++ b/versioned_docs/version-1.1.1/tutorial-basics/congratulations.md @@ -0,0 +1,23 @@ +--- +sidebar_position: 6 +--- + +# Congratulations! + +You have just learned the **basics of Docusaurus** and made some changes to the **initial template**. + +Docusaurus has **much more to offer**! + +Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.md)** and **[i18n](../tutorial-extras/translate-your-site.md)**. + +Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610) + +## What's next? + +- Read the [official documentation](https://docusaurus.io/) +- Modify your site configuration with [`docusaurus.config.js`](https://docusaurus.io/docs/api/docusaurus-config) +- Add navbar and footer items with [`themeConfig`](https://docusaurus.io/docs/api/themes/configuration) +- Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout) +- Add a [search bar](https://docusaurus.io/docs/search) +- Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase) +- Get involved in the [Docusaurus Community](https://docusaurus.io/community/support) diff --git a/versioned_docs/version-1.1.1/tutorial-basics/create-a-blog-post.md b/versioned_docs/version-1.1.1/tutorial-basics/create-a-blog-post.md new file mode 100644 index 00000000..ea472bba --- /dev/null +++ b/versioned_docs/version-1.1.1/tutorial-basics/create-a-blog-post.md @@ -0,0 +1,34 @@ +--- +sidebar_position: 3 +--- + +# Create a Blog Post + +Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed... + +## Create your first Post + +Create a file at `blog/2021-02-28-greetings.md`: + +```md title="blog/2021-02-28-greetings.md" +--- +slug: greetings +title: Greetings! +authors: + - name: Joel Marcey + title: Co-creator of Docusaurus 1 + url: https://github.com/JoelMarcey + image_url: https://github.com/JoelMarcey.png + - name: Sébastien Lorber + title: Docusaurus maintainer + url: https://sebastienlorber.com + image_url: https://github.com/slorber.png +tags: [greetings] +--- + +Congratulations, you have made your first post! + +Feel free to play around and edit this post as much you like. +``` + +A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings). diff --git a/versioned_docs/version-1.1.1/tutorial-basics/create-a-document.md b/versioned_docs/version-1.1.1/tutorial-basics/create-a-document.md new file mode 100644 index 00000000..ffddfa8e --- /dev/null +++ b/versioned_docs/version-1.1.1/tutorial-basics/create-a-document.md @@ -0,0 +1,57 @@ +--- +sidebar_position: 2 +--- + +# Create a Document + +Documents are **groups of pages** connected through: + +- a **sidebar** +- **previous/next navigation** +- **versioning** + +## Create your first Doc + +Create a Markdown file at `docs/hello.md`: + +```md title="docs/hello.md" +# Hello + +This is my **first Docusaurus document**! +``` + +A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello). + +## Configure the Sidebar + +Docusaurus automatically **creates a sidebar** from the `docs` folder. + +Add metadata to customize the sidebar label and position: + +```md title="docs/hello.md" {1-4} +--- +sidebar_label: 'Hi!' +sidebar_position: 3 +--- + +# Hello + +This is my **first Docusaurus document**! +``` + +It is also possible to create your sidebar explicitly in `sidebars.js`: + +```js title="sidebars.js" +module.exports = { + tutorialSidebar: [ + 'intro', + // highlight-next-line + 'hello', + { + type: 'category', + label: 'Tutorial', + items: ['tutorial-basics/create-a-document'], + }, + ], +}; +``` diff --git a/versioned_docs/version-1.1.1/tutorial-basics/create-a-page.md b/versioned_docs/version-1.1.1/tutorial-basics/create-a-page.md new file mode 100644 index 00000000..20e2ac30 --- /dev/null +++ b/versioned_docs/version-1.1.1/tutorial-basics/create-a-page.md @@ -0,0 +1,43 @@ +--- +sidebar_position: 1 +--- + +# Create a Page + +Add **Markdown or React** files to `src/pages` to create a **standalone page**: + +- `src/pages/index.js` → `localhost:3000/` +- `src/pages/foo.md` → `localhost:3000/foo` +- `src/pages/foo/bar.js` → `localhost:3000/foo/bar` + +## Create your first React Page + +Create a file at `src/pages/my-react-page.js`: + +```jsx title="src/pages/my-react-page.js" +import React from 'react'; +import Layout from '@theme/Layout'; + +export default function MyReactPage() { + return ( + +

My React page

+

This is a React page

+
+ ); +} +``` + +A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page). + +## Create your first Markdown Page + +Create a file at `src/pages/my-markdown-page.md`: + +```mdx title="src/pages/my-markdown-page.md" +# My Markdown page + +This is a Markdown page +``` + +A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page). diff --git a/versioned_docs/version-1.1.1/tutorial-basics/deploy-your-site.md b/versioned_docs/version-1.1.1/tutorial-basics/deploy-your-site.md new file mode 100644 index 00000000..1c50ee06 --- /dev/null +++ b/versioned_docs/version-1.1.1/tutorial-basics/deploy-your-site.md @@ -0,0 +1,31 @@ +--- +sidebar_position: 5 +--- + +# Deploy your site + +Docusaurus is a **static-site-generator** (also called **[Jamstack](https://jamstack.org/)**). + +It builds your site as simple **static HTML, JavaScript and CSS files**. + +## Build your site + +Build your site **for production**: + +```bash +npm run build +``` + +The static files are generated in the `build` folder. + +## Deploy your site + +Test your production build locally: + +```bash +npm run serve +``` + +The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/). + +You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**). diff --git a/versioned_docs/version-1.1.1/tutorial-basics/markdown-features.mdx b/versioned_docs/version-1.1.1/tutorial-basics/markdown-features.mdx new file mode 100644 index 00000000..0337f34d --- /dev/null +++ b/versioned_docs/version-1.1.1/tutorial-basics/markdown-features.mdx @@ -0,0 +1,150 @@ +--- +sidebar_position: 4 +--- + +# Markdown Features + +Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**. + +## Front Matter + +Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/): + +```text title="my-doc.md" +// highlight-start +--- +id: my-doc-id +title: My document title +description: My document description +slug: /my-custom-url +--- +// highlight-end + +## Markdown heading + +Markdown text with [links](./hello.md) +``` + +## Links + +Regular Markdown links are supported, using url paths or relative file paths. + +```md +Let's see how to [Create a page](/create-a-page). +``` + +```md +Let's see how to [Create a page](./create-a-page.md). +``` + +**Result:** Let's see how to [Create a page](./create-a-page.md). + +## Images + +Regular Markdown images are supported. + +You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`): + +```md +![Docusaurus logo](/img/docusaurus.png) +``` + +![Docusaurus logo](/img/docusaurus.png) + +You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them: + +```md +![Docusaurus logo](./img/docusaurus.png) +``` + +## Code Blocks + +Markdown code blocks are supported with Syntax highlighting. + + ```jsx title="src/components/HelloDocusaurus.js" + function HelloDocusaurus() { + return ( +

Hello, Docusaurus!

+ ) + } + ``` + +```jsx title="src/components/HelloDocusaurus.js" +function HelloDocusaurus() { + return

Hello, Docusaurus!

; +} +``` + +## Admonitions + +Docusaurus has a special syntax to create admonitions and callouts: + + :::tip My tip + + Use this awesome feature option + + ::: + + :::danger Take care + + This action is dangerous + + ::: + +:::tip My tip + +Use this awesome feature option + +::: + +:::danger Take care + +This action is dangerous + +::: + +## MDX and React Components + +[MDX](https://mdxjs.com/) can make your documentation more **interactive** and allows using any **React components inside Markdown**: + +```jsx +export const Highlight = ({children, color}) => ( + { + alert(`You clicked the color ${color} with label ${children}`) + }}> + {children} + +); + +This is Docusaurus green ! + +This is Facebook blue ! +``` + +export const Highlight = ({children, color}) => ( + { + alert(`You clicked the color ${color} with label ${children}`); + }}> + {children} + +); + +This is Docusaurus green ! + +This is Facebook blue ! diff --git a/versioned_docs/version-1.1.1/tutorial-extras/_category_.json b/versioned_docs/version-1.1.1/tutorial-extras/_category_.json new file mode 100644 index 00000000..2bdeed1a --- /dev/null +++ b/versioned_docs/version-1.1.1/tutorial-extras/_category_.json @@ -0,0 +1,8 @@ +{ + "className": "hidden", + "label": "Tutorial - Extras", + "position": 5, + "link": { + "type": "generated-index" + } +} diff --git a/versioned_docs/version-1.1.1/tutorial-extras/img/docsVersionDropdown.png b/versioned_docs/version-1.1.1/tutorial-extras/img/docsVersionDropdown.png new file mode 100644 index 00000000..97e41646 Binary files /dev/null and b/versioned_docs/version-1.1.1/tutorial-extras/img/docsVersionDropdown.png differ diff --git a/versioned_docs/version-1.1.1/tutorial-extras/img/localeDropdown.png b/versioned_docs/version-1.1.1/tutorial-extras/img/localeDropdown.png new file mode 100644 index 00000000..e257edc1 Binary files /dev/null and b/versioned_docs/version-1.1.1/tutorial-extras/img/localeDropdown.png differ diff --git a/versioned_docs/version-1.1.1/tutorial-extras/manage-docs-versions.md b/versioned_docs/version-1.1.1/tutorial-extras/manage-docs-versions.md new file mode 100644 index 00000000..e12c3f34 --- /dev/null +++ b/versioned_docs/version-1.1.1/tutorial-extras/manage-docs-versions.md @@ -0,0 +1,55 @@ +--- +sidebar_position: 1 +--- + +# Manage Docs Versions + +Docusaurus can manage multiple versions of your docs. + +## Create a docs version + +Release a version 1.0 of your project: + +```bash +npm run docusaurus docs:version 1.0 +``` + +The `docs` folder is copied into `versioned_docs/version-1.0` and `versions.json` is created. + +Your docs now have 2 versions: + +- `1.0` at `http://localhost:3000/docs/` for the version 1.0 docs +- `current` at `http://localhost:3000/docs/next/` for the **upcoming, unreleased docs** + +## Add a Version Dropdown + +To navigate seamlessly across versions, add a version dropdown. + +Modify the `docusaurus.config.js` file: + +```js title="docusaurus.config.js" +module.exports = { + themeConfig: { + navbar: { + items: [ + // highlight-start + { + type: 'docsVersionDropdown', + }, + // highlight-end + ], + }, + }, +}; +``` + +The docs version dropdown appears in your navbar: + +![Docs Version Dropdown](./img/docsVersionDropdown.png) + +## Update an existing version + +It is possible to edit versioned docs in their respective folder: + +- `versioned_docs/version-1.0/hello.md` updates `http://localhost:3000/docs/hello` +- `docs/hello.md` updates `http://localhost:3000/docs/next/hello` diff --git a/versioned_docs/version-1.1.1/tutorial-extras/translate-your-site.md b/versioned_docs/version-1.1.1/tutorial-extras/translate-your-site.md new file mode 100644 index 00000000..caeaffb0 --- /dev/null +++ b/versioned_docs/version-1.1.1/tutorial-extras/translate-your-site.md @@ -0,0 +1,88 @@ +--- +sidebar_position: 2 +--- + +# Translate your site + +Let's translate `docs/intro.md` to French. + +## Configure i18n + +Modify `docusaurus.config.js` to add support for the `fr` locale: + +```js title="docusaurus.config.js" +module.exports = { + i18n: { + defaultLocale: 'en', + locales: ['en', 'fr'], + }, +}; +``` + +## Translate a doc + +Copy the `docs/intro.md` file to the `i18n/fr` folder: + +```bash +mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/ + +cp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md +``` + +Translate `i18n/fr/docusaurus-plugin-content-docs/current/intro.md` in French. + +## Start your localized site + +Start your site on the French locale: + +```bash +npm run start -- --locale fr +``` + +Your localized site is accessible at [http://localhost:3000/fr/](http://localhost:3000/fr/) and the `Getting Started` page is translated. + +:::caution + +In development, you can only use one locale at a same time. + +::: + +## Add a Locale Dropdown + +To navigate seamlessly across languages, add a locale dropdown. + +Modify the `docusaurus.config.js` file: + +```js title="docusaurus.config.js" +module.exports = { + themeConfig: { + navbar: { + items: [ + // highlight-start + { + type: 'localeDropdown', + }, + // highlight-end + ], + }, + }, +}; +``` + +The locale dropdown now appears in your navbar: + +![Locale Dropdown](./img/localeDropdown.png) + +## Build your localized site + +Build your site for a specific locale: + +```bash +npm run build -- --locale fr +``` + +Or build your site to include all the locales at once: + +```bash +npm run build +``` diff --git a/versioned_sidebars/version-1.1.0-sidebars.json b/versioned_sidebars/version-1.1.0-sidebars.json new file mode 100644 index 00000000..caea0c03 --- /dev/null +++ b/versioned_sidebars/version-1.1.0-sidebars.json @@ -0,0 +1,8 @@ +{ + "tutorialSidebar": [ + { + "type": "autogenerated", + "dirName": "." + } + ] +} diff --git a/versioned_sidebars/version-1.1.1-sidebars.json b/versioned_sidebars/version-1.1.1-sidebars.json new file mode 100644 index 00000000..caea0c03 --- /dev/null +++ b/versioned_sidebars/version-1.1.1-sidebars.json @@ -0,0 +1,8 @@ +{ + "tutorialSidebar": [ + { + "type": "autogenerated", + "dirName": "." + } + ] +} diff --git a/versions.json b/versions.json new file mode 100644 index 00000000..f47a8508 --- /dev/null +++ b/versions.json @@ -0,0 +1,4 @@ +[ + "1.1.1", + "1.1.0" +]