diff --git a/404.html b/404.html index cbabcbe0..f275b9d8 100644 --- a/404.html +++ b/404.html @@ -4,14 +4,14 @@ Page Not Found | Upside Down Labs Docs - - - + + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - + + \ No newline at end of file diff --git a/Contributors.html b/Contributors.html index 5013b2a7..e2a7de32 100644 --- a/Contributors.html +++ b/Contributors.html @@ -4,15 +4,15 @@ EXPLORE AND CONTRIBUTE | Upside Down Labs Docs - - - + + +
Skip to main content

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.

If the forking is successful, it will create a new repo under your account.

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.

Run the clone command in your local environment:

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:

cd <new branch name>

Create a new feature branch with a name that identifies with the changes you are planning to do. For example:

git checkout -b new-user-contribution

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.

git add <filename>

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):

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.

git push origin fix-npe-issue

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.

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.

- - +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.

Run the clone command in your local environment:

git clone  https://github.com/upsidedownlabs/upsidedownlabs.github.io.git;

Step 3 - Download Node.js

Download Node to get started with npx tools

Node.js

Step 4 - Getting Started with npx

npm install npx

Step 5 - 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:

cd <new branch name>

Create a new feature branch with a name that identifies with the changes you are planning to do. For example:

git checkout -b new-user-contribution

Step 6-

Run the following command in the terminal

npm start

Step 7 - 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.

git add <filename>

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):

git commit -m "Add XYZ to filename"

Image description

Step 8 - 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.

git push origin fix-npe-issue

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 9 - 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.

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.

+ + \ No newline at end of file diff --git a/assets/css/styles.37845e76.css b/assets/css/styles.37845e76.css new file mode 100644 index 00000000..58a72a82 --- /dev/null +++ b/assets/css/styles.37845e76.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#2e8555;--ifm-color-primary-dark:#29784c;--ifm-color-primary-darker:#277148;--ifm-color-primary-darkest:#205d3b;--ifm-color-primary-light:#33925d;--ifm-color-primary-lighter:#359962;--ifm-color-primary-lightest:#3cad6e;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#0000001a;--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.list_eTzJ article:last-child,.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_LNqP{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList__CuJ{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_tbUL,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.sidebar_re4s,.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_S0QG>:last-child,.cardContainer_fWXF :last-child,.collapsibleContent_i85q>:last-child,.footer__items,.tabItem_Ymn6>:last-child{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,.title_f1Hy{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;content:"";filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover,.sidebarItemLink_mo7H:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.sidebarItemTitle_pO2u,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#25c2a0;--ifm-color-primary-dark:#21af90;--ifm-color-primary-darker:#1fa588;--ifm-color-primary-darkest:#1a8870;--ifm-color-primary-light:#29d5b0;--ifm-color-primary-lighter:#32d8b4;--ifm-color-primary-lightest:#4fddbf;--docusaurus-highlighted-code-line-bg:#0000004d}.hidden{display:none!important}.header-github-link:hover{opacity:.6}.header-github-link:before{background:url("data:image/svg+xml;charset=utf-8,%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;content:"";display:flex;height:24px;width:24px}html[data-theme=dark] .header-github-link:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' 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(90deg,#fc0,#f30);background-repeat:repeat-x}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_b6E3,.sidebarLogo_isFc,.themedImage_ToTc,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedImage--dark_i4oU,[data-theme=light] .themedImage--light_HNdA{display:initial}.iconExternalLink_nPIU{margin-left:.3rem}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.sidebar_re4s{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_pO2u{font-size:var(--ifm-h3-font-size)}.container_mt6G,.sidebarItemList_Yudw{font-size:.9rem}.sidebarItem__DBe{margin-top:.7rem}.sidebarItemLink_mo7H{color:var(--ifm-font-color-base);display:block}.sidebarItemLinkActive_I1ZP{color:var(--ifm-color-primary)!important}.cardContainer_fWXF{--ifm-link-color:var(--ifm-color-emphasis-800);--ifm-link-hover-color:var(--ifm-color-emphasis-700);--ifm-link-hover-decoration:none;border:1px solid var(--ifm-color-emphasis-200);box-shadow:0 1.5px 3px 0 #00000026;transition:all var(--ifm-transition-fast) ease;transition-property:border,box-shadow}.cardContainer_fWXF:hover{border-color:var(--ifm-color-primary);box-shadow:0 3px 6px 0 #0003}.cardTitle_rnsV{font-size:1.2rem}.cardDescription_PWke{font-size:.8rem}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.docMainContainer_gTbr,.docPage__5DB{display:flex;width:100%}.docPage__5DB{flex:1 0}.docsWrapper_BCFX{display:flex;flex:1 0 auto}.features_t9lD{align-items:center;display:flex;padding:2rem 0;width:100%}.featureSvg_GfXr{height:200px;width:200px}.heroBanner_qdFl{overflow:hidden;padding:4rem 0;position:relative;text-align:center}.buttons_AeoN{align-items:center;display:flex;justify-content:center}.authorCol_Hf19{flex-grow:1!important;max-width:inherit!important}.imageOnlyAuthorRow_pa_O{display:flex;flex-flow:row wrap}.imageOnlyAuthorCol_G86a{margin-left:.3rem;margin-right:.3rem}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tag_Nnez{display:inline-block;margin:.5rem .5rem 0 1rem}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.img_ev3q{height:auto}.admonition_LlT9{margin-bottom:1em}.admonitionHeading_tbUL{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem}.admonitionHeading_tbUL code{text-transform:none}.admonitionIcon_kALy{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_kALy svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.blogPostFooterDetailsFull_mRVl{flex-direction:column}.tableOfContents_bqdL{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.title_kItE{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-leading)*1.25)}.mdxPageWrapper_j9I6{justify-content:center}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_m80_{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.searchBox_ZlJk{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_BlDH,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_m80_:focus,.expandButton_m80_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_m80_{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_BlDH{transform:rotate(180deg)}.docSidebarContainer_b6E3{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_b3ry{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_Xe31{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_gTbr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Uz_u{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_czyv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn,.generatedIndexPage_vN6x{max-width:75%!important}.list_eTzJ article:nth-last-child(-n+2){margin-bottom:0!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.sidebar_re4s,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.searchBox_ZlJk{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media screen and (max-width:996px){.heroBanner_qdFl{padding:2rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}.title_f1Hy{font-size:2rem}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/css/styles.efb0ec77.css b/assets/css/styles.efb0ec77.css deleted file mode 100644 index d0ab6bec..00000000 --- a/assets/css/styles.efb0ec77.css +++ /dev/null @@ -1 +0,0 @@ -.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#2e8555;--ifm-color-primary-dark:#29784c;--ifm-color-primary-darker:#277148;--ifm-color-primary-darkest:#205d3b;--ifm-color-primary-light:#33925d;--ifm-color-primary-lighter:#359962;--ifm-color-primary-lightest:#3cad6e;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#0000001a;--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.list_eTzJ article:last-child,.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_tbUL,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.sidebar_re4s,.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_S0QG>:last-child,.cardContainer_fWXF :last-child,.collapsibleContent_i85q>:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,.title_f1Hy{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;content:"";filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover,.sidebarItemLink_mo7H:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.sidebarItemTitle_pO2u,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#25c2a0;--ifm-color-primary-dark:#21af90;--ifm-color-primary-darker:#1fa588;--ifm-color-primary-darkest:#1a8870;--ifm-color-primary-light:#29d5b0;--ifm-color-primary-lighter:#32d8b4;--ifm-color-primary-lightest:#4fddbf;--docusaurus-highlighted-code-line-bg:#0000004d}.hidden{display:none!important}.header-github-link:hover{opacity:.6}.header-github-link:before{background:url("data:image/svg+xml;charset=utf-8,%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;content:"";display:flex;height:24px;width:24px}html[data-theme=dark] .header-github-link:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' 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(90deg,#fc0,#f30);background-repeat:repeat-x}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_b6E3,.sidebarLogo_isFc,.themedImage_ToTc,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedImage--dark_i4oU,[data-theme=light] .themedImage--light_HNdA{display:initial}.iconExternalLink_nPIU{margin-left:.3rem}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.sidebar_re4s{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_pO2u{font-size:var(--ifm-h3-font-size)}.container_mt6G,.sidebarItemList_Yudw{font-size:.9rem}.sidebarItem__DBe{margin-top:.7rem}.sidebarItemLink_mo7H{color:var(--ifm-font-color-base);display:block}.sidebarItemLinkActive_I1ZP{color:var(--ifm-color-primary)!important}.cardContainer_fWXF{--ifm-link-color:var(--ifm-color-emphasis-800);--ifm-link-hover-color:var(--ifm-color-emphasis-700);--ifm-link-hover-decoration:none;border:1px solid var(--ifm-color-emphasis-200);box-shadow:0 1.5px 3px 0 #00000026;transition:all var(--ifm-transition-fast) ease;transition-property:border,box-shadow}.cardContainer_fWXF:hover{border-color:var(--ifm-color-primary);box-shadow:0 3px 6px 0 #0003}.cardTitle_rnsV{font-size:1.2rem}.cardDescription_PWke{font-size:.8rem}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.docMainContainer_gTbr,.docPage__5DB{display:flex;width:100%}.docPage__5DB{flex:1 0}.docsWrapper_BCFX{display:flex;flex:1 0 auto}.features_t9lD{align-items:center;display:flex;padding:2rem 0;width:100%}.featureSvg_GfXr{height:200px;width:200px}.heroBanner_qdFl{overflow:hidden;padding:4rem 0;position:relative;text-align:center}.buttons_AeoN{align-items:center;display:flex;justify-content:center}.authorCol_Hf19{flex-grow:1!important;max-width:inherit!important}.imageOnlyAuthorRow_pa_O{display:flex;flex-flow:row wrap}.imageOnlyAuthorCol_G86a{margin-left:.3rem;margin-right:.3rem}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tag_Nnez{display:inline-block;margin:.5rem .5rem 0 1rem}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.img_ev3q{height:auto}.admonition_LlT9{margin-bottom:1em}.admonitionHeading_tbUL{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem}.admonitionHeading_tbUL code{text-transform:none}.admonitionIcon_kALy{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_kALy svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.blogPostFooterDetailsFull_mRVl{flex-direction:column}.tableOfContents_bqdL{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.title_kItE{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-leading)*1.25)}.mdxPageWrapper_j9I6{justify-content:center}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_m80_{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.searchBox_ZlJk{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_BlDH,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_m80_:focus,.expandButton_m80_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_m80_{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_BlDH{transform:rotate(180deg)}.docSidebarContainer_b6E3{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_b3ry{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_Xe31{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_gTbr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Uz_u{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_czyv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn,.generatedIndexPage_vN6x{max-width:75%!important}.list_eTzJ article:nth-last-child(-n+2){margin-bottom:0!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.sidebar_re4s,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.searchBox_ZlJk{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media screen and (max-width:996px){.heroBanner_qdFl{padding:2rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}.title_f1Hy{font-size:2rem}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/images/Connecting Electrode Cable-443df7ac74b34f19a92befd17b1cc23c.gif b/assets/images/Connecting Electrode Cable-443df7ac74b34f19a92befd17b1cc23c.gif new file mode 100644 index 00000000..02b11cef Binary files /dev/null and b/assets/images/Connecting Electrode Cable-443df7ac74b34f19a92befd17b1cc23c.gif differ diff --git a/assets/images/Connecting Servo Motor-f53f24a599186b403c7a82f13bef1473.gif b/assets/images/Connecting Servo Motor-f53f24a599186b403c7a82f13bef1473.gif new file mode 100644 index 00000000..e39b841b Binary files /dev/null and b/assets/images/Connecting Servo Motor-f53f24a599186b403c7a82f13bef1473.gif differ diff --git a/assets/images/Connections-986e9f269b7810de64883bdaa9489737.jpg b/assets/images/Connections-986e9f269b7810de64883bdaa9489737.jpg new file mode 100644 index 00000000..568dfb9c Binary files /dev/null and b/assets/images/Connections-986e9f269b7810de64883bdaa9489737.jpg differ diff --git a/assets/images/Inside Photo-e50320e04e2a274124bf5109eb2ec28d.jpg b/assets/images/Inside Photo-e50320e04e2a274124bf5109eb2ec28d.jpg new file mode 100644 index 00000000..88730582 Binary files /dev/null and b/assets/images/Inside Photo-e50320e04e2a274124bf5109eb2ec28d.jpg differ diff --git a/assets/images/Skin Preparation-9d106109d489b99cfd84a63be0ffe0d3.gif b/assets/images/Skin Preparation-9d106109d489b99cfd84a63be0ffe0d3.gif new file mode 100644 index 00000000..a71529d0 Binary files /dev/null and b/assets/images/Skin Preparation-9d106109d489b99cfd84a63be0ffe0d3.gif differ diff --git a/assets/images/Solder Joint-3d4767b5960217bc887f5c7694f1d0d6.jpg b/assets/images/Solder Joint-3d4767b5960217bc887f5c7694f1d0d6.jpg new file mode 100644 index 00000000..b76f2ae1 Binary files /dev/null and b/assets/images/Solder Joint-3d4767b5960217bc887f5c7694f1d0d6.jpg differ diff --git a/assets/images/Thumbnail-21b341bb18c245dc76c43ac40b6b9e21.jpg b/assets/images/Thumbnail-21b341bb18c245dc76c43ac40b6b9e21.jpg new file mode 100644 index 00000000..cd315e29 Binary files /dev/null and b/assets/images/Thumbnail-21b341bb18c245dc76c43ac40b6b9e21.jpg differ diff --git a/assets/images/Thumbnail-940cd9231b57535ef495801a5669332a.jpg b/assets/images/Thumbnail-940cd9231b57535ef495801a5669332a.jpg new file mode 100644 index 00000000..23411673 Binary files /dev/null and b/assets/images/Thumbnail-940cd9231b57535ef495801a5669332a.jpg differ diff --git a/assets/images/Thumbnail-c347dbd3253a9a35379183d8bdfeb465.gif b/assets/images/Thumbnail-c347dbd3253a9a35379183d8bdfeb465.gif new file mode 100644 index 00000000..9c166acd Binary files /dev/null and b/assets/images/Thumbnail-c347dbd3253a9a35379183d8bdfeb465.gif differ diff --git a/assets/images/Thumbnail-ca1629002db0c0e72401032a4edba25b.jpg b/assets/images/Thumbnail-ca1629002db0c0e72401032a4edba25b.jpg new file mode 100644 index 00000000..45f41e44 Binary files /dev/null and b/assets/images/Thumbnail-ca1629002db0c0e72401032a4edba25b.jpg differ diff --git a/assets/images/Thumbnail1-3b9ce444c404ca1dbbd201a477469faa.jpg b/assets/images/Thumbnail1-3b9ce444c404ca1dbbd201a477469faa.jpg new file mode 100644 index 00000000..9280fcfb Binary files /dev/null and b/assets/images/Thumbnail1-3b9ce444c404ca1dbbd201a477469faa.jpg differ diff --git a/assets/images/Thumbnail2-2c335ee43bbd5a85cdfb33f4a97c5bc2.jpg b/assets/images/Thumbnail2-2c335ee43bbd5a85cdfb33f4a97c5bc2.jpg new file mode 100644 index 00000000..8105fcab Binary files /dev/null and b/assets/images/Thumbnail2-2c335ee43bbd5a85cdfb33f4a97c5bc2.jpg differ diff --git a/assets/images/Using ECG Band-5b77317a54e6c7b2740b40e4f066361c.gif b/assets/images/Using ECG Band-5b77317a54e6c7b2740b40e4f066361c.gif new file mode 100644 index 00000000..3b45ff4f Binary files /dev/null and b/assets/images/Using ECG Band-5b77317a54e6c7b2740b40e4f066361c.gif differ diff --git a/assets/images/Using Gel Electrodes-6b5d94aecafb01ac3eab7c7372954b67.gif b/assets/images/Using Gel Electrodes-6b5d94aecafb01ac3eab7c7372954b67.gif new file mode 100644 index 00000000..005ac6a7 Binary files /dev/null and b/assets/images/Using Gel Electrodes-6b5d94aecafb01ac3eab7c7372954b67.gif differ diff --git a/assets/js/14eb3368.eb6fffc9.js b/assets/js/14eb3368.70c3610b.js similarity index 98% rename from assets/js/14eb3368.eb6fffc9.js rename to assets/js/14eb3368.70c3610b.js index 36e92025..d6c55b5f 100644 --- a/assets/js/14eb3368.eb6fffc9.js +++ b/assets/js/14eb3368.70c3610b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9817],{1310:(e,t,a)=>{a.d(t,{Z:()=>E});var n=a(87462),r=a(67294),i=a(86010),l=a(35281),s=a(52802),c=a(48596),o=a(39960),m=a(95999),d=a(44996);function u(e){return r.createElement("svg",(0,n.Z)({viewBox:"0 0 24 24"},e),r.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"}))}const h={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function b(){const e=(0,d.Z)("/");return r.createElement("li",{className:"breadcrumbs__item"},r.createElement(o.Z,{"aria-label":(0,m.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e},r.createElement(u,{className:h.breadcrumbHomeIcon})))}const v={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function g(e){let{children:t,href:a,isLast:n}=e;const i="breadcrumbs__link";return n?r.createElement("span",{className:i,itemProp:"name"},t):a?r.createElement(o.Z,{className:i,href:a,itemProp:"item"},r.createElement("span",{itemProp:"name"},t)):r.createElement("span",{className:i},t)}function p(e){let{children:t,active:a,index:l,addMicrodata:s}=e;return r.createElement("li",(0,n.Z)({},s&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,i.Z)("breadcrumbs__item",{"breadcrumbs__item--active":a})}),t,r.createElement("meta",{itemProp:"position",content:String(l+1)}))}function E(){const e=(0,s.s1)(),t=(0,c.Ns)();return e?r.createElement("nav",{className:(0,i.Z)(l.k.docs.docBreadcrumbs,v.breadcrumbsContainer),"aria-label":(0,m.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},r.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&r.createElement(b,null),e.map(((t,a)=>{const n=a===e.length-1;return r.createElement(p,{key:a,active:n,index:a,addMicrodata:!!t.href},r.createElement(g,{href:t.href,isLast:n},t.label))})))):null}},34228:(e,t,a)=>{a.r(t),a.d(t,{default:()=>x});var n=a(67294),r=a(1944),i=a(52802),l=a(44996),s=a(86010),c=a(39960),o=a(13919),m=a(95999);const d={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){let{href:t,children:a}=e;return n.createElement(c.Z,{href:t,className:(0,s.Z)("card padding--lg",d.cardContainer)},a)}function h(e){let{href:t,icon:a,title:r,description:i}=e;return n.createElement(u,{href:t},n.createElement("h2",{className:(0,s.Z)("text--truncate",d.cardTitle),title:r},a," ",r),i&&n.createElement("p",{className:(0,s.Z)("text--truncate",d.cardDescription),title:i},i))}function b(e){let{item:t}=e;const a=(0,i.Wl)(t);return a?n.createElement(h,{href:a,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:t.description??(0,m.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function v(e){let{item:t}=e;const a=(0,o.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",r=(0,i.xz)(t.docId??void 0);return n.createElement(h,{href:t.href,icon:a,title:t.label,description:t.description??r?.description})}function g(e){let{item:t}=e;switch(t.type){case"link":return n.createElement(v,{item:t});case"category":return n.createElement(b,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function p(e){let{className:t}=e;const a=(0,i.jA)();return n.createElement(E,{items:a.items,className:t})}function E(e){const{items:t,className:a}=e;if(!t)return n.createElement(p,e);const r=(0,i.MN)(t);return n.createElement("section",{className:(0,s.Z)("row",a)},r.map(((e,t)=>n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(g,{item:e})))))}var f=a(80049),N=a(23120),Z=a(44364),k=a(1310),_=a(92503);const L={generatedIndexPage:"generatedIndexPage_vN6x",list:"list_eTzJ",title:"title_kItE"};function T(e){let{categoryGeneratedIndex:t}=e;return n.createElement(r.d,{title:t.title,description:t.description,keywords:t.keywords,image:(0,l.Z)(t.image)})}function y(e){let{categoryGeneratedIndex:t}=e;const a=(0,i.jA)();return n.createElement("div",{className:L.generatedIndexPage},n.createElement(N.Z,null),n.createElement(k.Z,null),n.createElement(Z.Z,null),n.createElement("header",null,n.createElement(_.Z,{as:"h1",className:L.title},t.title),t.description&&n.createElement("p",null,t.description)),n.createElement("article",{className:"margin-top--lg"},n.createElement(E,{items:a.items,className:L.list})),n.createElement("footer",{className:"margin-top--lg"},n.createElement(f.Z,{previous:t.navigation.previous,next:t.navigation.next})))}function x(e){return n.createElement(n.Fragment,null,n.createElement(T,e),n.createElement(y,e))}},80049:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(87462),r=a(67294),i=a(95999),l=a(32244);function s(e){const{previous:t,next:a}=e;return r.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,i.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"})},t&&r.createElement(l.Z,(0,n.Z)({},t,{subLabel:r.createElement(i.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),a&&r.createElement(l.Z,(0,n.Z)({},a,{subLabel:r.createElement(i.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}},44364:(e,t,a)=>{a.d(t,{Z:()=>c});var n=a(67294),r=a(86010),i=a(95999),l=a(35281),s=a(74477);function c(e){let{className:t}=e;const a=(0,s.E)();return a.badge?n.createElement("span",{className:(0,r.Z)(t,l.k.docs.docVersionBadge,"badge badge--secondary")},n.createElement(i.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:a.label}},"Version: {versionLabel}")):null}},23120:(e,t,a)=>{a.d(t,{Z:()=>g});var n=a(67294),r=a(86010),i=a(52263),l=a(39960),s=a(95999),c=a(80143),o=a(35281),m=a(60373),d=a(74477);const u={unreleased:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(s.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(s.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function h(e){const t=u[e.versionMetadata.banner];return n.createElement(t,e)}function b(e){let{versionLabel:t,to:a,onClick:r}=e;return n.createElement(s.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:n.createElement("b",null,n.createElement(l.Z,{to:a,onClick:r},n.createElement(s.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function v(e){let{className:t,versionMetadata:a}=e;const{siteConfig:{title:l}}=(0,i.Z)(),{pluginId:s}=(0,c.gA)({failfast:!0}),{savePreferredVersionName:d}=(0,m.J)(s),{latestDocSuggestion:u,latestVersionSuggestion:v}=(0,c.Jo)(s),g=u??(p=v).docs.find((e=>e.id===p.mainDocId));var p;return n.createElement("div",{className:(0,r.Z)(t,o.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},n.createElement("div",null,n.createElement(h,{siteTitle:l,versionMetadata:a})),n.createElement("div",{className:"margin-top--md"},n.createElement(b,{versionLabel:v.label,to:g.path,onClick:()=>d(v.name)})))}function g(e){let{className:t}=e;const a=(0,d.E)();return a.banner?n.createElement(v,{className:t,versionMetadata:a}):null}},92503:(e,t,a)=>{a.d(t,{Z:()=>m});var n=a(87462),r=a(67294),i=a(86010),l=a(95999),s=a(86668),c=a(39960);const o={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function m(e){let{as:t,id:a,...m}=e;const{navbar:{hideOnScroll:d}}=(0,s.L)();if("h1"===t||!a)return r.createElement(t,(0,n.Z)({},m,{id:void 0}));const u=(0,l.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof m.children?m.children:a});return r.createElement(t,(0,n.Z)({},m,{className:(0,i.Z)("anchor",d?o.anchorWithHideOnScrollNavbar:o.anchorWithStickyNavbar,m.className),id:a}),m.children,r.createElement(c.Z,{className:"hash-link",to:`#${a}`,"aria-label":u,title:u},"\u200b"))}},32244:(e,t,a)=>{a.d(t,{Z:()=>l});var n=a(67294),r=a(86010),i=a(39960);function l(e){const{permalink:t,title:a,subLabel:l,isNext:s}=e;return n.createElement(i.Z,{className:(0,r.Z)("pagination-nav__link",s?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},l&&n.createElement("div",{className:"pagination-nav__sublabel"},l),n.createElement("div",{className:"pagination-nav__label"},a))}}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9817],{1310:(e,t,a)=>{a.d(t,{Z:()=>E});var n=a(87462),r=a(67294),i=a(86010),l=a(35281),s=a(53438),c=a(48596),o=a(39960),m=a(95999),d=a(44996);function u(e){return r.createElement("svg",(0,n.Z)({viewBox:"0 0 24 24"},e),r.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"}))}const h={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function b(){const e=(0,d.Z)("/");return r.createElement("li",{className:"breadcrumbs__item"},r.createElement(o.Z,{"aria-label":(0,m.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e},r.createElement(u,{className:h.breadcrumbHomeIcon})))}const v={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function g(e){let{children:t,href:a,isLast:n}=e;const i="breadcrumbs__link";return n?r.createElement("span",{className:i,itemProp:"name"},t):a?r.createElement(o.Z,{className:i,href:a,itemProp:"item"},r.createElement("span",{itemProp:"name"},t)):r.createElement("span",{className:i},t)}function p(e){let{children:t,active:a,index:l,addMicrodata:s}=e;return r.createElement("li",(0,n.Z)({},s&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,i.Z)("breadcrumbs__item",{"breadcrumbs__item--active":a})}),t,r.createElement("meta",{itemProp:"position",content:String(l+1)}))}function E(){const e=(0,s.s1)(),t=(0,c.Ns)();return e?r.createElement("nav",{className:(0,i.Z)(l.k.docs.docBreadcrumbs,v.breadcrumbsContainer),"aria-label":(0,m.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},r.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&r.createElement(b,null),e.map(((t,a)=>{const n=a===e.length-1;return r.createElement(p,{key:a,active:n,index:a,addMicrodata:!!t.href},r.createElement(g,{href:t.href,isLast:n},t.label))})))):null}},34228:(e,t,a)=>{a.r(t),a.d(t,{default:()=>x});var n=a(67294),r=a(1944),i=a(53438),l=a(44996),s=a(86010),c=a(39960),o=a(13919),m=a(95999);const d={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){let{href:t,children:a}=e;return n.createElement(c.Z,{href:t,className:(0,s.Z)("card padding--lg",d.cardContainer)},a)}function h(e){let{href:t,icon:a,title:r,description:i}=e;return n.createElement(u,{href:t},n.createElement("h2",{className:(0,s.Z)("text--truncate",d.cardTitle),title:r},a," ",r),i&&n.createElement("p",{className:(0,s.Z)("text--truncate",d.cardDescription),title:i},i))}function b(e){let{item:t}=e;const a=(0,i.Wl)(t);return a?n.createElement(h,{href:a,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:t.description??(0,m.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function v(e){let{item:t}=e;const a=(0,o.Z)(t.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",r=(0,i.xz)(t.docId??void 0);return n.createElement(h,{href:t.href,icon:a,title:t.label,description:t.description??r?.description})}function g(e){let{item:t}=e;switch(t.type){case"link":return n.createElement(v,{item:t});case"category":return n.createElement(b,{item:t});default:throw new Error(`unknown item type ${JSON.stringify(t)}`)}}function p(e){let{className:t}=e;const a=(0,i.jA)();return n.createElement(E,{items:a.items,className:t})}function E(e){const{items:t,className:a}=e;if(!t)return n.createElement(p,e);const r=(0,i.MN)(t);return n.createElement("section",{className:(0,s.Z)("row",a)},r.map(((e,t)=>n.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},n.createElement(g,{item:e})))))}var f=a(80049),N=a(23120),Z=a(44364),k=a(1310),_=a(92503);const L={generatedIndexPage:"generatedIndexPage_vN6x",list:"list_eTzJ",title:"title_kItE"};function T(e){let{categoryGeneratedIndex:t}=e;return n.createElement(r.d,{title:t.title,description:t.description,keywords:t.keywords,image:(0,l.Z)(t.image)})}function y(e){let{categoryGeneratedIndex:t}=e;const a=(0,i.jA)();return n.createElement("div",{className:L.generatedIndexPage},n.createElement(N.Z,null),n.createElement(k.Z,null),n.createElement(Z.Z,null),n.createElement("header",null,n.createElement(_.Z,{as:"h1",className:L.title},t.title),t.description&&n.createElement("p",null,t.description)),n.createElement("article",{className:"margin-top--lg"},n.createElement(E,{items:a.items,className:L.list})),n.createElement("footer",{className:"margin-top--lg"},n.createElement(f.Z,{previous:t.navigation.previous,next:t.navigation.next})))}function x(e){return n.createElement(n.Fragment,null,n.createElement(T,e),n.createElement(y,e))}},80049:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(87462),r=a(67294),i=a(95999),l=a(32244);function s(e){const{previous:t,next:a}=e;return r.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,i.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"})},t&&r.createElement(l.Z,(0,n.Z)({},t,{subLabel:r.createElement(i.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),a&&r.createElement(l.Z,(0,n.Z)({},a,{subLabel:r.createElement(i.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}},44364:(e,t,a)=>{a.d(t,{Z:()=>c});var n=a(67294),r=a(86010),i=a(95999),l=a(35281),s=a(74477);function c(e){let{className:t}=e;const a=(0,s.E)();return a.badge?n.createElement("span",{className:(0,r.Z)(t,l.k.docs.docVersionBadge,"badge badge--secondary")},n.createElement(i.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:a.label}},"Version: {versionLabel}")):null}},23120:(e,t,a)=>{a.d(t,{Z:()=>g});var n=a(67294),r=a(86010),i=a(52263),l=a(39960),s=a(95999),c=a(80143),o=a(35281),m=a(60373),d=a(74477);const u={unreleased:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(s.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(s.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function h(e){const t=u[e.versionMetadata.banner];return n.createElement(t,e)}function b(e){let{versionLabel:t,to:a,onClick:r}=e;return n.createElement(s.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:n.createElement("b",null,n.createElement(l.Z,{to:a,onClick:r},n.createElement(s.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function v(e){let{className:t,versionMetadata:a}=e;const{siteConfig:{title:l}}=(0,i.Z)(),{pluginId:s}=(0,c.gA)({failfast:!0}),{savePreferredVersionName:d}=(0,m.J)(s),{latestDocSuggestion:u,latestVersionSuggestion:v}=(0,c.Jo)(s),g=u??(p=v).docs.find((e=>e.id===p.mainDocId));var p;return n.createElement("div",{className:(0,r.Z)(t,o.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},n.createElement("div",null,n.createElement(h,{siteTitle:l,versionMetadata:a})),n.createElement("div",{className:"margin-top--md"},n.createElement(b,{versionLabel:v.label,to:g.path,onClick:()=>d(v.name)})))}function g(e){let{className:t}=e;const a=(0,d.E)();return a.banner?n.createElement(v,{className:t,versionMetadata:a}):null}},92503:(e,t,a)=>{a.d(t,{Z:()=>m});var n=a(87462),r=a(67294),i=a(86010),l=a(95999),s=a(86668),c=a(39960);const o={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function m(e){let{as:t,id:a,...m}=e;const{navbar:{hideOnScroll:d}}=(0,s.L)();if("h1"===t||!a)return r.createElement(t,(0,n.Z)({},m,{id:void 0}));const u=(0,l.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof m.children?m.children:a});return r.createElement(t,(0,n.Z)({},m,{className:(0,i.Z)("anchor",d?o.anchorWithHideOnScrollNavbar:o.anchorWithStickyNavbar,m.className),id:a}),m.children,r.createElement(c.Z,{className:"hash-link",to:`#${a}`,"aria-label":u,title:u},"\u200b"))}},32244:(e,t,a)=>{a.d(t,{Z:()=>l});var n=a(67294),r=a(86010),i=a(39960);function l(e){const{permalink:t,title:a,subLabel:l,isNext:s}=e;return n.createElement(i.Z,{className:(0,r.Z)("pagination-nav__link",s?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},l&&n.createElement("div",{className:"pagination-nav__sublabel"},l),n.createElement("div",{className:"pagination-nav__label"},a))}}}]); \ No newline at end of file diff --git a/assets/js/17896441.2e968bee.js b/assets/js/17896441.f1943b0b.js similarity index 99% rename from assets/js/17896441.2e968bee.js rename to assets/js/17896441.f1943b0b.js index ccccf665..0c8e8bf7 100644 --- a/assets/js/17896441.2e968bee.js +++ b/assets/js/17896441.f1943b0b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7918],{1310:(e,t,n)=>{n.d(t,{Z:()=>E});var a=n(87462),l=n(67294),r=n(86010),o=n(35281),s=n(52802),c=n(48596),i=n(39960),d=n(95999),m=n(44996);function u(e){return l.createElement("svg",(0,a.Z)({viewBox:"0 0 24 24"},e),l.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"}))}const v={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function b(){const e=(0,m.Z)("/");return l.createElement("li",{className:"breadcrumbs__item"},l.createElement(i.Z,{"aria-label":(0,d.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e},l.createElement(u,{className:v.breadcrumbHomeIcon})))}const p={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function h(e){let{children:t,href:n,isLast:a}=e;const r="breadcrumbs__link";return a?l.createElement("span",{className:r,itemProp:"name"},t):n?l.createElement(i.Z,{className:r,href:n,itemProp:"item"},l.createElement("span",{itemProp:"name"},t)):l.createElement("span",{className:r},t)}function g(e){let{children:t,active:n,index:o,addMicrodata:s}=e;return l.createElement("li",(0,a.Z)({},s&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,r.Z)("breadcrumbs__item",{"breadcrumbs__item--active":n})}),t,l.createElement("meta",{itemProp:"position",content:String(o+1)}))}function E(){const e=(0,s.s1)(),t=(0,c.Ns)();return e?l.createElement("nav",{className:(0,r.Z)(o.k.docs.docBreadcrumbs,p.breadcrumbsContainer),"aria-label":(0,d.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},l.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&l.createElement(b,null),e.map(((t,n)=>{const a=n===e.length-1;return l.createElement(g,{key:n,active:a,index:n,addMicrodata:!!t.href},l.createElement(h,{href:t.href,isLast:a},t.label))})))):null}},15154:(e,t,n)=>{n.r(t),n.d(t,{default:()=>j});var a=n(67294),l=n(1944),r=n(902);const o=a.createContext(null);function s(e){let{children:t,content:n}=e;const l=function(e){return(0,a.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return a.createElement(o.Provider,{value:l},t)}function c(){const e=(0,a.useContext)(o);if(null===e)throw new r.i6("DocProvider");return e}function i(){const{metadata:e,frontMatter:t,assets:n}=c();return a.createElement(l.d,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var d=n(86010),m=n(87524),u=n(80049);function v(){const{metadata:e}=c();return a.createElement(u.Z,{previous:e.previous,next:e.next})}var b=n(23120),p=n(44364),h=n(35281),g=n(95999);function E(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n}=e;return a.createElement(g.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:a.createElement("b",null,a.createElement("time",{dateTime:new Date(1e3*t).toISOString()},n))}}," on {date}")}function f(e){let{lastUpdatedBy:t}=e;return a.createElement(g.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:a.createElement("b",null,t)}}," by {user}")}function L(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n,lastUpdatedBy:l}=e;return a.createElement("span",{className:h.k.common.lastUpdated},a.createElement(g.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&n?a.createElement(E,{lastUpdatedAt:t,formattedLastUpdatedAt:n}):"",byUser:l?a.createElement(f,{lastUpdatedBy:l}):""}},"Last updated{atDate}{byUser}"),!1)}var N=n(84881),Z=n(71526);const C={lastUpdated:"lastUpdated_vwxv"};function _(e){return a.createElement("div",{className:(0,d.Z)(h.k.docs.docFooterTagsRow,"row margin-bottom--sm")},a.createElement("div",{className:"col"},a.createElement(Z.Z,e)))}function k(e){let{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:l,formattedLastUpdatedAt:r}=e;return a.createElement("div",{className:(0,d.Z)(h.k.docs.docFooterEditMetaRow,"row")},a.createElement("div",{className:"col"},t&&a.createElement(N.Z,{editUrl:t})),a.createElement("div",{className:(0,d.Z)("col",C.lastUpdated)},(n||l)&&a.createElement(L,{lastUpdatedAt:n,formattedLastUpdatedAt:r,lastUpdatedBy:l})))}function x(){const{metadata:e}=c(),{editUrl:t,lastUpdatedAt:n,formattedLastUpdatedAt:l,lastUpdatedBy:r,tags:o}=e,s=o.length>0,i=!!(t||n||r);return s||i?a.createElement("footer",{className:(0,d.Z)(h.k.docs.docFooter,"docusaurus-mt-lg")},s&&a.createElement(_,{tags:o}),i&&a.createElement(k,{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:r,formattedLastUpdatedAt:l})):null}var T=n(86043),H=n(93743),U=n(87462);const y={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function w(e){let{collapsed:t,...n}=e;return a.createElement("button",(0,U.Z)({type:"button"},n,{className:(0,d.Z)("clean-btn",y.tocCollapsibleButton,!t&&y.tocCollapsibleButtonExpanded,n.className)}),a.createElement(g.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page"))}const A={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function M(e){let{toc:t,className:n,minHeadingLevel:l,maxHeadingLevel:r}=e;const{collapsed:o,toggleCollapsed:s}=(0,T.u)({initialState:!0});return a.createElement("div",{className:(0,d.Z)(A.tocCollapsible,!o&&A.tocCollapsibleExpanded,n)},a.createElement(w,{collapsed:o,onClick:s}),a.createElement(T.z,{lazy:!0,className:A.tocCollapsibleContent,collapsed:o},a.createElement(H.Z,{toc:t,minHeadingLevel:l,maxHeadingLevel:r})))}const I={tocMobile:"tocMobile_ITEo"};function B(){const{toc:e,frontMatter:t}=c();return a.createElement(M,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,d.Z)(h.k.docs.docTocMobile,I.tocMobile)})}var O=n(39407);function V(){const{toc:e,frontMatter:t}=c();return a.createElement(O.Z,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:h.k.docs.docTocDesktop})}var S=n(92503),P=n(21506);function R(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=c();return t.hide_title||void 0!==n?null:e.title}();return a.createElement("div",{className:(0,d.Z)(h.k.docs.docMarkdown,"markdown")},n&&a.createElement("header",null,a.createElement(S.Z,{as:"h1"},n)),a.createElement(P.Z,null,t))}var D=n(1310);const F={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function z(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=c(),n=(0,m.i)(),l=e.hide_table_of_contents,r=!l&&t.length>0;return{hidden:l,mobile:r?a.createElement(B,null):void 0,desktop:!r||"desktop"!==n&&"ssr"!==n?void 0:a.createElement(V,null)}}();return a.createElement("div",{className:"row"},a.createElement("div",{className:(0,d.Z)("col",!n.hidden&&F.docItemCol)},a.createElement(b.Z,null),a.createElement("div",{className:F.docItemContainer},a.createElement("article",null,a.createElement(D.Z,null),a.createElement(p.Z,null),n.mobile,a.createElement(R,null,t),a.createElement(x,null)),a.createElement(v,null))),n.desktop&&a.createElement("div",{className:"col col--3"},n.desktop))}function j(e){const t=`docs-doc-id-${e.content.metadata.unversionedId}`,n=e.content;return a.createElement(s,{content:e.content},a.createElement(l.FG,{className:t},a.createElement(i,null),a.createElement(z,null,a.createElement(n,null))))}},80049:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(87462),l=n(67294),r=n(95999),o=n(32244);function s(e){const{previous:t,next:n}=e;return l.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,r.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"})},t&&l.createElement(o.Z,(0,a.Z)({},t,{subLabel:l.createElement(r.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),n&&l.createElement(o.Z,(0,a.Z)({},n,{subLabel:l.createElement(r.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}},44364:(e,t,n)=>{n.d(t,{Z:()=>c});var a=n(67294),l=n(86010),r=n(95999),o=n(35281),s=n(74477);function c(e){let{className:t}=e;const n=(0,s.E)();return n.badge?a.createElement("span",{className:(0,l.Z)(t,o.k.docs.docVersionBadge,"badge badge--secondary")},a.createElement(r.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label}},"Version: {versionLabel}")):null}},23120:(e,t,n)=>{n.d(t,{Z:()=>h});var a=n(67294),l=n(86010),r=n(52263),o=n(39960),s=n(95999),c=n(80143),i=n(35281),d=n(60373),m=n(74477);const u={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(s.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(s.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function v(e){const t=u[e.versionMetadata.banner];return a.createElement(t,e)}function b(e){let{versionLabel:t,to:n,onClick:l}=e;return a.createElement(s.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:a.createElement("b",null,a.createElement(o.Z,{to:n,onClick:l},a.createElement(s.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function p(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:o}}=(0,r.Z)(),{pluginId:s}=(0,c.gA)({failfast:!0}),{savePreferredVersionName:m}=(0,d.J)(s),{latestDocSuggestion:u,latestVersionSuggestion:p}=(0,c.Jo)(s),h=u??(g=p).docs.find((e=>e.id===g.mainDocId));var g;return a.createElement("div",{className:(0,l.Z)(t,i.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},a.createElement("div",null,a.createElement(v,{siteTitle:o,versionMetadata:n})),a.createElement("div",{className:"margin-top--md"},a.createElement(b,{versionLabel:p.label,to:h.path,onClick:()=>m(p.name)})))}function h(e){let{className:t}=e;const n=(0,m.E)();return n.banner?a.createElement(p,{className:t,versionMetadata:n}):null}},84881:(e,t,n)=>{n.d(t,{Z:()=>d});var a=n(67294),l=n(95999),r=n(35281),o=n(87462),s=n(86010);const c={iconEdit:"iconEdit_Z9Sw"};function i(e){let{className:t,...n}=e;return a.createElement("svg",(0,o.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.Z)(c.iconEdit,t),"aria-hidden":"true"},n),a.createElement("g",null,a.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}function d(e){let{editUrl:t}=e;return a.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:r.k.common.editThisPage},a.createElement(i,null),a.createElement(l.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},32244:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(67294),l=n(86010),r=n(39960);function o(e){const{permalink:t,title:n,subLabel:o,isNext:s}=e;return a.createElement(r.Z,{className:(0,l.Z)("pagination-nav__link",s?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},o&&a.createElement("div",{className:"pagination-nav__sublabel"},o),a.createElement("div",{className:"pagination-nav__label"},n))}},39407:(e,t,n)=>{n.d(t,{Z:()=>d});var a=n(87462),l=n(67294),r=n(86010),o=n(93743);const s={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},c="table-of-contents__link toc-highlight",i="table-of-contents__link--active";function d(e){let{className:t,...n}=e;return l.createElement("div",{className:(0,r.Z)(s.tableOfContents,"thin-scrollbar",t)},l.createElement(o.Z,(0,a.Z)({},n,{linkClassName:c,linkActiveClassName:i})))}},93743:(e,t,n)=>{n.d(t,{Z:()=>b});var a=n(87462),l=n(67294),r=n(86668);function o(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const a=n.slice(2,e.level);e.parentIndex=Math.max(...a),n[e.level]=t}));const a=[];return t.forEach((e=>{const{parentIndex:n,...l}=e;n>=0?t[n].children.push(l):a.push(l)})),a}function s(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return t.flatMap((e=>{const t=s({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[{...e,children:t}]:t}))}function c(e){const t=e.getBoundingClientRect();return t.top===t.bottom?c(e.parentNode):t}function i(e,t){let{anchorTopOffset:n}=t;const a=e.find((e=>c(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function m(e){const t=(0,l.useRef)(void 0),n=d();(0,l.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:l,minHeadingLevel:r,maxHeadingLevel:o}=e;function s(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),s=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const a=[];for(let l=t;l<=n;l+=1)a.push(`h${l}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:o}),c=i(s,{anchorTopOffset:n.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(l),e.classList.add(l),t.current=e):e.classList.remove(l)}(e,e===d)}))}return document.addEventListener("scroll",s),document.addEventListener("resize",s),s(),()=>{document.removeEventListener("scroll",s),document.removeEventListener("resize",s)}}),[e,n])}function u(e){let{toc:t,className:n,linkClassName:a,isChild:r}=e;return t.length?l.createElement("ul",{className:r?void 0:n},t.map((e=>l.createElement("li",{key:e.id},l.createElement("a",{href:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),l.createElement(u,{isChild:!0,toc:e.children,className:n,linkClassName:a}))))):null}const v=l.memo(u);function b(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:c="table-of-contents__link",linkActiveClassName:i,minHeadingLevel:d,maxHeadingLevel:u,...b}=e;const p=(0,r.L)(),h=d??p.tableOfContents.minHeadingLevel,g=u??p.tableOfContents.maxHeadingLevel,E=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,l.useMemo)((()=>s({toc:o(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:h,maxHeadingLevel:g});return m((0,l.useMemo)((()=>{if(c&&i)return{linkClassName:c,linkActiveClassName:i,minHeadingLevel:h,maxHeadingLevel:g}}),[c,i,h,g])),l.createElement(v,(0,a.Z)({toc:E,className:n,linkClassName:c},b))}},13008:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(67294),l=n(86010),r=n(39960);const o={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function s(e){let{permalink:t,label:n,count:s}=e;return a.createElement(r.Z,{href:t,className:(0,l.Z)(o.tag,s?o.tagWithCount:o.tagRegular)},n,s&&a.createElement("span",null,s))}},71526:(e,t,n)=>{n.d(t,{Z:()=>c});var a=n(67294),l=n(86010),r=n(95999),o=n(13008);const s={tags:"tags_jXut",tag:"tag_QGVx"};function c(e){let{tags:t}=e;return a.createElement(a.Fragment,null,a.createElement("b",null,a.createElement(r.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),a.createElement("ul",{className:(0,l.Z)(s.tags,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:n}=e;return a.createElement("li",{key:n,className:s.tag},a.createElement(o.Z,{label:t,permalink:n}))}))))}}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7918],{1310:(e,t,n)=>{n.d(t,{Z:()=>E});var a=n(87462),l=n(67294),r=n(86010),o=n(35281),s=n(53438),c=n(48596),i=n(39960),d=n(95999),m=n(44996);function u(e){return l.createElement("svg",(0,a.Z)({viewBox:"0 0 24 24"},e),l.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"}))}const v={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function b(){const e=(0,m.Z)("/");return l.createElement("li",{className:"breadcrumbs__item"},l.createElement(i.Z,{"aria-label":(0,d.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e},l.createElement(u,{className:v.breadcrumbHomeIcon})))}const p={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function h(e){let{children:t,href:n,isLast:a}=e;const r="breadcrumbs__link";return a?l.createElement("span",{className:r,itemProp:"name"},t):n?l.createElement(i.Z,{className:r,href:n,itemProp:"item"},l.createElement("span",{itemProp:"name"},t)):l.createElement("span",{className:r},t)}function g(e){let{children:t,active:n,index:o,addMicrodata:s}=e;return l.createElement("li",(0,a.Z)({},s&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,r.Z)("breadcrumbs__item",{"breadcrumbs__item--active":n})}),t,l.createElement("meta",{itemProp:"position",content:String(o+1)}))}function E(){const e=(0,s.s1)(),t=(0,c.Ns)();return e?l.createElement("nav",{className:(0,r.Z)(o.k.docs.docBreadcrumbs,p.breadcrumbsContainer),"aria-label":(0,d.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},l.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&l.createElement(b,null),e.map(((t,n)=>{const a=n===e.length-1;return l.createElement(g,{key:n,active:a,index:n,addMicrodata:!!t.href},l.createElement(h,{href:t.href,isLast:a},t.label))})))):null}},15154:(e,t,n)=>{n.r(t),n.d(t,{default:()=>j});var a=n(67294),l=n(1944),r=n(902);const o=a.createContext(null);function s(e){let{children:t,content:n}=e;const l=function(e){return(0,a.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return a.createElement(o.Provider,{value:l},t)}function c(){const e=(0,a.useContext)(o);if(null===e)throw new r.i6("DocProvider");return e}function i(){const{metadata:e,frontMatter:t,assets:n}=c();return a.createElement(l.d,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var d=n(86010),m=n(87524),u=n(80049);function v(){const{metadata:e}=c();return a.createElement(u.Z,{previous:e.previous,next:e.next})}var b=n(23120),p=n(44364),h=n(35281),g=n(95999);function E(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n}=e;return a.createElement(g.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:a.createElement("b",null,a.createElement("time",{dateTime:new Date(1e3*t).toISOString()},n))}}," on {date}")}function f(e){let{lastUpdatedBy:t}=e;return a.createElement(g.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:a.createElement("b",null,t)}}," by {user}")}function L(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n,lastUpdatedBy:l}=e;return a.createElement("span",{className:h.k.common.lastUpdated},a.createElement(g.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&n?a.createElement(E,{lastUpdatedAt:t,formattedLastUpdatedAt:n}):"",byUser:l?a.createElement(f,{lastUpdatedBy:l}):""}},"Last updated{atDate}{byUser}"),!1)}var N=n(84881),Z=n(71526);const C={lastUpdated:"lastUpdated_vwxv"};function _(e){return a.createElement("div",{className:(0,d.Z)(h.k.docs.docFooterTagsRow,"row margin-bottom--sm")},a.createElement("div",{className:"col"},a.createElement(Z.Z,e)))}function k(e){let{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:l,formattedLastUpdatedAt:r}=e;return a.createElement("div",{className:(0,d.Z)(h.k.docs.docFooterEditMetaRow,"row")},a.createElement("div",{className:"col"},t&&a.createElement(N.Z,{editUrl:t})),a.createElement("div",{className:(0,d.Z)("col",C.lastUpdated)},(n||l)&&a.createElement(L,{lastUpdatedAt:n,formattedLastUpdatedAt:r,lastUpdatedBy:l})))}function x(){const{metadata:e}=c(),{editUrl:t,lastUpdatedAt:n,formattedLastUpdatedAt:l,lastUpdatedBy:r,tags:o}=e,s=o.length>0,i=!!(t||n||r);return s||i?a.createElement("footer",{className:(0,d.Z)(h.k.docs.docFooter,"docusaurus-mt-lg")},s&&a.createElement(_,{tags:o}),i&&a.createElement(k,{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:r,formattedLastUpdatedAt:l})):null}var T=n(86043),H=n(93743),U=n(87462);const y={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function w(e){let{collapsed:t,...n}=e;return a.createElement("button",(0,U.Z)({type:"button"},n,{className:(0,d.Z)("clean-btn",y.tocCollapsibleButton,!t&&y.tocCollapsibleButtonExpanded,n.className)}),a.createElement(g.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page"))}const A={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function M(e){let{toc:t,className:n,minHeadingLevel:l,maxHeadingLevel:r}=e;const{collapsed:o,toggleCollapsed:s}=(0,T.u)({initialState:!0});return a.createElement("div",{className:(0,d.Z)(A.tocCollapsible,!o&&A.tocCollapsibleExpanded,n)},a.createElement(w,{collapsed:o,onClick:s}),a.createElement(T.z,{lazy:!0,className:A.tocCollapsibleContent,collapsed:o},a.createElement(H.Z,{toc:t,minHeadingLevel:l,maxHeadingLevel:r})))}const I={tocMobile:"tocMobile_ITEo"};function B(){const{toc:e,frontMatter:t}=c();return a.createElement(M,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,d.Z)(h.k.docs.docTocMobile,I.tocMobile)})}var O=n(39407);function V(){const{toc:e,frontMatter:t}=c();return a.createElement(O.Z,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:h.k.docs.docTocDesktop})}var S=n(92503),P=n(21506);function R(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=c();return t.hide_title||void 0!==n?null:e.title}();return a.createElement("div",{className:(0,d.Z)(h.k.docs.docMarkdown,"markdown")},n&&a.createElement("header",null,a.createElement(S.Z,{as:"h1"},n)),a.createElement(P.Z,null,t))}var D=n(1310);const F={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function z(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=c(),n=(0,m.i)(),l=e.hide_table_of_contents,r=!l&&t.length>0;return{hidden:l,mobile:r?a.createElement(B,null):void 0,desktop:!r||"desktop"!==n&&"ssr"!==n?void 0:a.createElement(V,null)}}();return a.createElement("div",{className:"row"},a.createElement("div",{className:(0,d.Z)("col",!n.hidden&&F.docItemCol)},a.createElement(b.Z,null),a.createElement("div",{className:F.docItemContainer},a.createElement("article",null,a.createElement(D.Z,null),a.createElement(p.Z,null),n.mobile,a.createElement(R,null,t),a.createElement(x,null)),a.createElement(v,null))),n.desktop&&a.createElement("div",{className:"col col--3"},n.desktop))}function j(e){const t=`docs-doc-id-${e.content.metadata.unversionedId}`,n=e.content;return a.createElement(s,{content:e.content},a.createElement(l.FG,{className:t},a.createElement(i,null),a.createElement(z,null,a.createElement(n,null))))}},80049:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(87462),l=n(67294),r=n(95999),o=n(32244);function s(e){const{previous:t,next:n}=e;return l.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,r.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"})},t&&l.createElement(o.Z,(0,a.Z)({},t,{subLabel:l.createElement(r.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),n&&l.createElement(o.Z,(0,a.Z)({},n,{subLabel:l.createElement(r.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}},44364:(e,t,n)=>{n.d(t,{Z:()=>c});var a=n(67294),l=n(86010),r=n(95999),o=n(35281),s=n(74477);function c(e){let{className:t}=e;const n=(0,s.E)();return n.badge?a.createElement("span",{className:(0,l.Z)(t,o.k.docs.docVersionBadge,"badge badge--secondary")},a.createElement(r.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label}},"Version: {versionLabel}")):null}},23120:(e,t,n)=>{n.d(t,{Z:()=>h});var a=n(67294),l=n(86010),r=n(52263),o=n(39960),s=n(95999),c=n(80143),i=n(35281),d=n(60373),m=n(74477);const u={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(s.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return a.createElement(s.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:a.createElement("b",null,n.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function v(e){const t=u[e.versionMetadata.banner];return a.createElement(t,e)}function b(e){let{versionLabel:t,to:n,onClick:l}=e;return a.createElement(s.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:a.createElement("b",null,a.createElement(o.Z,{to:n,onClick:l},a.createElement(s.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function p(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:o}}=(0,r.Z)(),{pluginId:s}=(0,c.gA)({failfast:!0}),{savePreferredVersionName:m}=(0,d.J)(s),{latestDocSuggestion:u,latestVersionSuggestion:p}=(0,c.Jo)(s),h=u??(g=p).docs.find((e=>e.id===g.mainDocId));var g;return a.createElement("div",{className:(0,l.Z)(t,i.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},a.createElement("div",null,a.createElement(v,{siteTitle:o,versionMetadata:n})),a.createElement("div",{className:"margin-top--md"},a.createElement(b,{versionLabel:p.label,to:h.path,onClick:()=>m(p.name)})))}function h(e){let{className:t}=e;const n=(0,m.E)();return n.banner?a.createElement(p,{className:t,versionMetadata:n}):null}},84881:(e,t,n)=>{n.d(t,{Z:()=>d});var a=n(67294),l=n(95999),r=n(35281),o=n(87462),s=n(86010);const c={iconEdit:"iconEdit_Z9Sw"};function i(e){let{className:t,...n}=e;return a.createElement("svg",(0,o.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.Z)(c.iconEdit,t),"aria-hidden":"true"},n),a.createElement("g",null,a.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}function d(e){let{editUrl:t}=e;return a.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:r.k.common.editThisPage},a.createElement(i,null),a.createElement(l.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},32244:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(67294),l=n(86010),r=n(39960);function o(e){const{permalink:t,title:n,subLabel:o,isNext:s}=e;return a.createElement(r.Z,{className:(0,l.Z)("pagination-nav__link",s?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},o&&a.createElement("div",{className:"pagination-nav__sublabel"},o),a.createElement("div",{className:"pagination-nav__label"},n))}},39407:(e,t,n)=>{n.d(t,{Z:()=>d});var a=n(87462),l=n(67294),r=n(86010),o=n(93743);const s={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},c="table-of-contents__link toc-highlight",i="table-of-contents__link--active";function d(e){let{className:t,...n}=e;return l.createElement("div",{className:(0,r.Z)(s.tableOfContents,"thin-scrollbar",t)},l.createElement(o.Z,(0,a.Z)({},n,{linkClassName:c,linkActiveClassName:i})))}},93743:(e,t,n)=>{n.d(t,{Z:()=>b});var a=n(87462),l=n(67294),r=n(86668);function o(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const a=n.slice(2,e.level);e.parentIndex=Math.max(...a),n[e.level]=t}));const a=[];return t.forEach((e=>{const{parentIndex:n,...l}=e;n>=0?t[n].children.push(l):a.push(l)})),a}function s(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return t.flatMap((e=>{const t=s({toc:e.children,minHeadingLevel:n,maxHeadingLevel:a});return function(e){return e.level>=n&&e.level<=a}(e)?[{...e,children:t}]:t}))}function c(e){const t=e.getBoundingClientRect();return t.top===t.bottom?c(e.parentNode):t}function i(e,t){let{anchorTopOffset:n}=t;const a=e.find((e=>c(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function m(e){const t=(0,l.useRef)(void 0),n=d();(0,l.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:l,minHeadingLevel:r,maxHeadingLevel:o}=e;function s(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),s=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const a=[];for(let l=t;l<=n;l+=1)a.push(`h${l}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:r,maxHeadingLevel:o}),c=i(s,{anchorTopOffset:n.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(l),e.classList.add(l),t.current=e):e.classList.remove(l)}(e,e===d)}))}return document.addEventListener("scroll",s),document.addEventListener("resize",s),s(),()=>{document.removeEventListener("scroll",s),document.removeEventListener("resize",s)}}),[e,n])}function u(e){let{toc:t,className:n,linkClassName:a,isChild:r}=e;return t.length?l.createElement("ul",{className:r?void 0:n},t.map((e=>l.createElement("li",{key:e.id},l.createElement("a",{href:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),l.createElement(u,{isChild:!0,toc:e.children,className:n,linkClassName:a}))))):null}const v=l.memo(u);function b(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:c="table-of-contents__link",linkActiveClassName:i,minHeadingLevel:d,maxHeadingLevel:u,...b}=e;const p=(0,r.L)(),h=d??p.tableOfContents.minHeadingLevel,g=u??p.tableOfContents.maxHeadingLevel,E=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,l.useMemo)((()=>s({toc:o(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:h,maxHeadingLevel:g});return m((0,l.useMemo)((()=>{if(c&&i)return{linkClassName:c,linkActiveClassName:i,minHeadingLevel:h,maxHeadingLevel:g}}),[c,i,h,g])),l.createElement(v,(0,a.Z)({toc:E,className:n,linkClassName:c},b))}},13008:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(67294),l=n(86010),r=n(39960);const o={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function s(e){let{permalink:t,label:n,count:s}=e;return a.createElement(r.Z,{href:t,className:(0,l.Z)(o.tag,s?o.tagWithCount:o.tagRegular)},n,s&&a.createElement("span",null,s))}},71526:(e,t,n)=>{n.d(t,{Z:()=>c});var a=n(67294),l=n(86010),r=n(95999),o=n(13008);const s={tags:"tags_jXut",tag:"tag_QGVx"};function c(e){let{tags:t}=e;return a.createElement(a.Fragment,null,a.createElement("b",null,a.createElement(r.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),a.createElement("ul",{className:(0,l.Z)(s.tags,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:n}=e;return a.createElement("li",{key:n,className:s.tag},a.createElement(o.Z,{label:t,permalink:n}))}))))}}}]); \ No newline at end of file diff --git a/assets/js/1adb6239.d8667b99.js b/assets/js/1adb6239.d8667b99.js deleted file mode 100644 index 1e40c5e2..00000000 --- a/assets/js/1adb6239.d8667b99.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8138],{3905:(e,t,i)=>{i.d(t,{Zo:()=>c,kt:()=>h});var n=i(67294);function o(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function l(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function r(e){for(var t=1;t=0||(o[i]=e[i]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(o[i]=e[i])}return o}var s=n.createContext({}),p=function(e){var t=n.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},c=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var i=e.components,o=e.mdxType,l=e.originalType,s=e.parentName,c=a(e,["components","mdxType","originalType","parentName"]),d=p(i),m=o,h=d["".concat(s,".").concat(m)]||d[m]||u[m]||l;return i?n.createElement(h,r(r({ref:t},c),{},{components:i})):n.createElement(h,r({ref:t},c))}));function h(e,t){var i=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var l=i.length,r=new Array(l);r[0]=m;var a={};for(var s in t)hasOwnProperty.call(t,s)&&(a[s]=t[s]);a.originalType=e,a[d]="string"==typeof e?e:o,r[1]=a;for(var p=2;p{i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>u,frontMatter:()=>l,metadata:()=>a,toc:()=>p});var n=i(87462),o=(i(67294),i(3905));const l={},r="Eye Blink Detection by Recording EOG Using BioAmp EXG Pill",a={unversionedId:"Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection",id:"Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection",title:"Eye Blink Detection by Recording EOG Using BioAmp EXG Pill",description:"dodge gif",source:"@site/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection.md",sourceDirName:"Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection",slug:"/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/",permalink:"/docs/next/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield",permalink:"/docs/next/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/"},next:{title:"Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/"}},s={},p=[{value:"What is Electrooculography (EOG)?",id:"what-is-electrooculography-eog",level:2},{value:"About BioAmp EXG Pill:",id:"about-bioamp-exg-pill",level:3},{value:"Supplies",id:"supplies",level:2},{value:"Hardware:",id:"hardware",level:3},{value:"Software:",id:"software",level:3},{value:"Step1: Assembly",id:"step1-assembly",level:2},{value:"Step 2: Skin Preparation",id:"step-2-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 4: Electrode Placments",id:"step-4-electrode-placments",level:2},{value:"Step 5: Connections",id:"step-5-connections",level:2},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide",level:2},{value:"Step 7: Coding Time!",id:"step-7-coding-time",level:2},{value:"Step 8: Blink Your Eyes",id:"step-8-blink-your-eyes",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...l}=e;return(0,o.kt)(d,(0,n.Z)({},c,l,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"eye-blink-detection-by-recording-eog-using-bioamp-exg-pill"},"Eye Blink Detection by Recording EOG Using BioAmp EXG Pill"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(25165).Z,width:"768",height:"432"}),"\n",(0,o.kt)("img",{alt:"dodge gif",src:i(70684).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"In this project we will be recording electrical impulses of eyes (EOG) to detect eye blinks using Arduino Uno and BioAmp EXG Pill."),(0,o.kt)("h2",{id:"what-is-electrooculography-eog"},"What is Electrooculography (EOG)?"),(0,o.kt)("p",null,"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."),(0,o.kt)("h3",{id:"about-bioamp-exg-pill"},"About BioAmp EXG Pill:"),(0,o.kt)("p",null,"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)."),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"supplies"},"Supplies"),(0,o.kt)("h3",{id:"hardware"},"Hardware:"),(0,o.kt)("p",null,"1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin)"),(0,o.kt)("p",null,"1 x BioAmp Cable"),(0,o.kt)("p",null,"3 x Gel Electrodes"),(0,o.kt)("p",null,"3 x Jumper Cables"),(0,o.kt)("p",null,"1 x Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC)"),(0,o.kt)("p",null,"1 x Nuprep Skin Preparation Gel"),(0,o.kt)("p",null,"1 x Wet wipe"),(0,o.kt)("h3",{id:"software"},"Software:"),(0,o.kt)("p",null,"Arduino IDE"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Note:")," You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below:"),(0,o.kt)("p",null,"DIY Neuroscience Kit Basic (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ"},"Amazon India"),")"),(0,o.kt)("p",null,"BioAmp EXG Pill Pack (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-sensor-for-ecg-emg-eog-or-eeg/"},"Tindie Store"),")"),(0,o.kt)("p",null,"BioAmp EXG Pill - EXG Explorer Pack (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-x2-sensor-for-ecg-emg-eog-eeg/"},"Tindie Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1"},"Amazon India"),")"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"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."),(0,o.kt)("h2",{id:"step1-assembly"},"Step1: Assembly"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(60953).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-2-skin-preparation"},"Step 2: Skin Preparation"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(73191).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,o.kt)("p",null,"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."),(0,o.kt)("h1",{id:"step-3-connecting-electrode-cable"},"Step 3: Connecting Electrode Cable"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(9980).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-4-electrode-placments"},"Step 4: Electrode Placments"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(73315).Z,width:"1920",height:"1080"})),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,o.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,o.kt)("li",{parentName:"ol"},"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.")),(0,o.kt)("h2",{id:"step-5-connections"},"Step 5: Connections"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(52872).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"Connect BioAmp EXG Pill to Maker Uno using the jumper cables as directed below:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"VCC to 5V"),(0,o.kt)("li",{parentName:"ul"},"GND to GND"),(0,o.kt)("li",{parentName:"ul"},"OUT to A0")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"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."),(0,o.kt)("p",null,"We specifically chose Maker Uno for this experinment as it is Arduino compatible board but has onboard LEDs and a buzzer."),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-6-download-arduino-ide"},"Step 6: Download Arduino IDE"),(0,o.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,o.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,o.kt)("p",null,"After downloading, connect the Maker Uno to your laptop using the USB Cable"),(0,o.kt)("p",null,"Note: Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,o.kt)("h2",{id:"step-7-coding-time"},"Step 7: Coding Time!"),(0,o.kt)("p",null,"Copy paste the Arduino Sketch given below in Arduino IDE. "),(0,o.kt)("p",null,"Eye Blink Detection: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/Eye-BioAmp-Arduino-Firmware/blob/main/5_EyeBlinkDetection/5_EyeBlinkDetection.ino"},"https://github.com/upsidedownlabs/Eye-BioAmp-Arduino-Firmware/blob/main/5_EyeBlinkDetection/5_EyeBlinkDetection.ino")),(0,o.kt)("p",null,"After flashing the code, open the serial plotter to visualize the EOG signals and detect the eye blinks."),(0,o.kt)("h2",{id:"step-8-blink-your-eyes"},"Step 8: Blink Your Eyes"),(0,o.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/4dnCX3U7LS8?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,o.kt)("p",null,"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."),(0,o.kt)("p",null,"Now you are all set to explore on your own and make amazing HCI projects at the comfort zone of your home."),(0,o.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,o.kt)("p",null,"You can also mail us at ",(0,o.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}u.isMDXComponent=!0},60953:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Assembly-f327d906751232e9cb07ecfa7a773993.jpg"},9980:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connecting Electrode Cable-d79f3b2fc5071c89187b77177d54b847.gif"},52872:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connections with Maker Uno-338f82f2d079845995535477de607bde.jpg"},73315:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Electrode Placements-e622681b45c8626346e03c9f927fb557.jpg"},73191:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Skin Preparation-41d0adc3b736bc2d122993b98d6e9fbd.gif"},25165:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Thumbnail1-22df76cff924f5c42c9fdb224641bf40.gif"},70684:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Thumbnail2-4654ca99a5ddc6651cfedd9d039d2fee.jpg"}}]); \ No newline at end of file diff --git a/assets/js/1adb6239.e9bd2f9c.js b/assets/js/1adb6239.e9bd2f9c.js new file mode 100644 index 00000000..4474a7d5 --- /dev/null +++ b/assets/js/1adb6239.e9bd2f9c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8138],{3905:(e,t,i)=>{i.d(t,{Zo:()=>c,kt:()=>h});var n=i(67294);function o(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function l(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function r(e){for(var t=1;t=0||(o[i]=e[i]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(o[i]=e[i])}return o}var s=n.createContext({}),p=function(e){var t=n.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},c=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var i=e.components,o=e.mdxType,l=e.originalType,s=e.parentName,c=a(e,["components","mdxType","originalType","parentName"]),d=p(i),m=o,h=d["".concat(s,".").concat(m)]||d[m]||u[m]||l;return i?n.createElement(h,r(r({ref:t},c),{},{components:i})):n.createElement(h,r({ref:t},c))}));function h(e,t){var i=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var l=i.length,r=new Array(l);r[0]=m;var a={};for(var s in t)hasOwnProperty.call(t,s)&&(a[s]=t[s]);a.originalType=e,a[d]="string"==typeof e?e:o,r[1]=a;for(var p=2;p{i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>u,frontMatter:()=>l,metadata:()=>a,toc:()=>p});var n=i(87462),o=(i(67294),i(3905));const l={sidebar_position:2},r="Eye Blink Detection by Recording EOG Using BioAmp EXG Pill",a={unversionedId:"Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection",id:"Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection",title:"Eye Blink Detection by Recording EOG Using BioAmp EXG Pill",description:"dodge gif",source:"@site/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection.md",sourceDirName:"Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection",slug:"/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/",permalink:"/docs/next/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/EOG Experiments/EOG EXPERIMENT/"},next:{title:"Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/"}},s={},p=[{value:"What is Electrooculography (EOG)?",id:"what-is-electrooculography-eog",level:2},{value:"About BioAmp EXG Pill:",id:"about-bioamp-exg-pill",level:3},{value:"Supplies",id:"supplies",level:2},{value:"Hardware:",id:"hardware",level:3},{value:"Software:",id:"software",level:3},{value:"Step1: Assembly",id:"step1-assembly",level:2},{value:"Step 2: Skin Preparation",id:"step-2-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 4: Electrode Placments",id:"step-4-electrode-placments",level:2},{value:"Step 5: Connections",id:"step-5-connections",level:2},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide",level:2},{value:"Step 7: Coding Time!",id:"step-7-coding-time",level:2},{value:"Step 8: Blink Your Eyes",id:"step-8-blink-your-eyes",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...l}=e;return(0,o.kt)(d,(0,n.Z)({},c,l,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"eye-blink-detection-by-recording-eog-using-bioamp-exg-pill"},"Eye Blink Detection by Recording EOG Using BioAmp EXG Pill"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(25165).Z,width:"768",height:"432"}),"\n",(0,o.kt)("img",{alt:"dodge gif",src:i(70684).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"In this project we will be recording electrical impulses of eyes (EOG) to detect eye blinks using Arduino Uno and BioAmp EXG Pill."),(0,o.kt)("h2",{id:"what-is-electrooculography-eog"},"What is Electrooculography (EOG)?"),(0,o.kt)("p",null,"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."),(0,o.kt)("h3",{id:"about-bioamp-exg-pill"},"About BioAmp EXG Pill:"),(0,o.kt)("p",null,"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)."),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"supplies"},"Supplies"),(0,o.kt)("h3",{id:"hardware"},"Hardware:"),(0,o.kt)("p",null,"1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin)"),(0,o.kt)("p",null,"1 x BioAmp Cable"),(0,o.kt)("p",null,"3 x Gel Electrodes"),(0,o.kt)("p",null,"3 x Jumper Cables"),(0,o.kt)("p",null,"1 x Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC)"),(0,o.kt)("p",null,"1 x Nuprep Skin Preparation Gel"),(0,o.kt)("p",null,"1 x Wet wipe"),(0,o.kt)("h3",{id:"software"},"Software:"),(0,o.kt)("p",null,"Arduino IDE"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Note:")," You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below:"),(0,o.kt)("p",null,"DIY Neuroscience Kit Basic (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ"},"Amazon India"),")"),(0,o.kt)("p",null,"BioAmp EXG Pill Pack (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-sensor-for-ecg-emg-eog-or-eeg/"},"Tindie Store"),")"),(0,o.kt)("p",null,"BioAmp EXG Pill - EXG Explorer Pack (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-x2-sensor-for-ecg-emg-eog-eeg/"},"Tindie Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1"},"Amazon India"),")"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"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."),(0,o.kt)("h2",{id:"step1-assembly"},"Step1: Assembly"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(60953).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-2-skin-preparation"},"Step 2: Skin Preparation"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(73191).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,o.kt)("p",null,"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."),(0,o.kt)("h1",{id:"step-3-connecting-electrode-cable"},"Step 3: Connecting Electrode Cable"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(9980).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-4-electrode-placments"},"Step 4: Electrode Placments"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(73315).Z,width:"1920",height:"1080"})),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,o.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,o.kt)("li",{parentName:"ol"},"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.")),(0,o.kt)("h2",{id:"step-5-connections"},"Step 5: Connections"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(52872).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"Connect BioAmp EXG Pill to Maker Uno using the jumper cables as directed below:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"VCC to 5V"),(0,o.kt)("li",{parentName:"ul"},"GND to GND"),(0,o.kt)("li",{parentName:"ul"},"OUT to A0")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"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."),(0,o.kt)("p",null,"We specifically chose Maker Uno for this experinment as it is Arduino compatible board but has onboard LEDs and a buzzer."),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-6-download-arduino-ide"},"Step 6: Download Arduino IDE"),(0,o.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,o.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,o.kt)("p",null,"After downloading, connect the Maker Uno to your laptop using the USB Cable"),(0,o.kt)("p",null,"Note: Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,o.kt)("h2",{id:"step-7-coding-time"},"Step 7: Coding Time!"),(0,o.kt)("p",null,"Copy paste the Arduino Sketch given below in Arduino IDE. "),(0,o.kt)("p",null,"Eye Blink Detection: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/Eye-BioAmp-Arduino-Firmware/blob/main/5_EyeBlinkDetection/5_EyeBlinkDetection.ino"},"https://github.com/upsidedownlabs/Eye-BioAmp-Arduino-Firmware/blob/main/5_EyeBlinkDetection/5_EyeBlinkDetection.ino")),(0,o.kt)("p",null,"After flashing the code, open the serial plotter to visualize the EOG signals and detect the eye blinks."),(0,o.kt)("h2",{id:"step-8-blink-your-eyes"},"Step 8: Blink Your Eyes"),(0,o.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/4dnCX3U7LS8?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,o.kt)("p",null,"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."),(0,o.kt)("p",null,"Now you are all set to explore on your own and make amazing HCI projects at the comfort zone of your home."),(0,o.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,o.kt)("p",null,"You can also mail us at ",(0,o.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}u.isMDXComponent=!0},60953:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Assembly-f327d906751232e9cb07ecfa7a773993.jpg"},9980:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connecting Electrode Cable-d79f3b2fc5071c89187b77177d54b847.gif"},52872:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connections with Maker Uno-338f82f2d079845995535477de607bde.jpg"},73315:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Electrode Placements-e622681b45c8626346e03c9f927fb557.jpg"},73191:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Skin Preparation-41d0adc3b736bc2d122993b98d6e9fbd.gif"},25165:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Thumbnail1-22df76cff924f5c42c9fdb224641bf40.gif"},70684:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Thumbnail2-4654ca99a5ddc6651cfedd9d039d2fee.jpg"}}]); \ No newline at end of file diff --git a/assets/js/1be78505.a9c750a1.js b/assets/js/1be78505.fe38d96a.js similarity index 98% rename from assets/js/1be78505.a9c750a1.js rename to assets/js/1be78505.fe38d96a.js index 9c7f3613..50c1a47d 100644 --- a/assets/js/1be78505.a9c750a1.js +++ b/assets/js/1be78505.fe38d96a.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9514,4972],{19963:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ge});var a=n(67294),l=n(86010),o=n(1944),r=n(35281),c=n(43320),i=n(52802),s=n(74477),d=n(1116),m=n(7961),u=n(95999),b=n(12466),p=n(85936);const h={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};function E(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,l]=(0,a.useState)(!1),o=(0,a.useRef)(!1),{startScroll:r,cancelScroll:c}=(0,b.Ct)();return(0,b.RF)(((e,n)=>{let{scrollY:a}=e;const r=n?.scrollY;r&&(o.current?o.current=!1:a>=r?(c(),l(!1)):a{e.location.hash&&(o.current=!0,l(!1))})),{shown:n,scrollToTop:()=>r(0)}}({threshold:300});return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,l.Z)("clean-btn",r.k.common.backToTopButton,h.backToTopButton,e&&h.backToTopButtonShow),type:"button",onClick:t})}var f=n(91442),g=n(16550),k=n(87524),_=n(86668),v=n(21327),C=n(87462);function S(e){return a.createElement("svg",(0,C.Z)({width:"20",height:"20","aria-hidden":"true"},e),a.createElement("g",{fill:"#7a7a7a"},a.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),a.createElement("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})))}const I={collapseSidebarButton:"collapseSidebarButton_PEFL",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_kv0_"};function N(e){let{onClick:t}=e;return a.createElement("button",{type:"button",title:(0,u.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,l.Z)("button button--secondary button--outline",I.collapseSidebarButton),onClick:t},a.createElement(S,{className:I.collapseSidebarButtonIcon}))}var T=n(59689),Z=n(902);const x=Symbol("EmptyContext"),B=a.createContext(x);function y(e){let{children:t}=e;const[n,l]=(0,a.useState)(null),o=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:l})),[n]);return a.createElement(B.Provider,{value:o},t)}var w=n(86043),L=n(48596),A=n(39960),M=n(72389);function F(e){let{categoryLabel:t,onClick:n}=e;return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel",message:"Toggle the collapsible sidebar category '{label}'",description:"The ARIA label to toggle the collapsible sidebar category"},{label:t}),type:"button",className:"clean-btn menu__caret",onClick:n})}function H(e){let{item:t,onItemClick:n,activePath:o,level:c,index:s,...d}=e;const{items:m,label:u,collapsible:b,className:p,href:h}=t,{docs:{sidebar:{autoCollapseCategories:E}}}=(0,_.L)(),f=function(e){const t=(0,M.Z)();return(0,a.useMemo)((()=>e.href?e.href:!t&&e.collapsible?(0,i.Wl)(e):void 0),[e,t])}(t),g=(0,i._F)(t,o),k=(0,L.Mg)(h,o),{collapsed:v,setCollapsed:S}=(0,w.u)({initialState:()=>!!b&&(!g&&t.collapsed)}),{expandedItem:I,setExpandedItem:N}=function(){const e=(0,a.useContext)(B);if(e===x)throw new Z.i6("DocSidebarItemsExpandedStateProvider");return e}(),T=function(e){void 0===e&&(e=!v),N(e?null:s),S(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:l}=e;const o=(0,Z.D9)(t);(0,a.useEffect)((()=>{t&&!o&&n&&l(!1)}),[t,o,n,l])}({isActive:g,collapsed:v,updateCollapsed:T}),(0,a.useEffect)((()=>{b&&null!=I&&I!==s&&E&&S(!0)}),[b,I,s,S,E]),a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemCategory,r.k.docs.docSidebarItemCategoryLevel(c),"menu__list-item",{"menu__list-item--collapsed":v},p)},a.createElement("div",{className:(0,l.Z)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":k})},a.createElement(A.Z,(0,C.Z)({className:(0,l.Z)("menu__link",{"menu__link--sublist":b,"menu__link--sublist-caret":!h&&b,"menu__link--active":g}),onClick:b?e=>{n?.(t),h?T(!1):(e.preventDefault(),T())}:()=>{n?.(t)},"aria-current":k?"page":void 0,"aria-expanded":b?!v:void 0,href:b?f??"#":f},d),u),h&&b&&a.createElement(F,{categoryLabel:u,onClick:e=>{e.preventDefault(),T()}})),a.createElement(w.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:v},a.createElement(j,{items:m,tabIndex:v?-1:0,onItemClick:n,activePath:o,level:c+1})))}var P=n(13919),W=n(39471);const D={menuExternalLink:"menuExternalLink_NmtK"};function R(e){let{item:t,onItemClick:n,activePath:o,level:c,index:s,...d}=e;const{href:m,label:u,className:b,autoAddBaseUrl:p}=t,h=(0,i._F)(t,o),E=(0,P.Z)(m);return a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(c),"menu__list-item",b),key:u},a.createElement(A.Z,(0,C.Z)({className:(0,l.Z)("menu__link",!E&&D.menuExternalLink,{"menu__link--active":h}),autoAddBaseUrl:p,"aria-current":h?"page":void 0,to:m},E&&{onClick:n?()=>n(t):void 0},d),u,!E&&a.createElement(W.Z,null)))}const V={menuHtmlItem:"menuHtmlItem_M9Kj"};function z(e){let{item:t,level:n,index:o}=e;const{value:c,defaultStyle:i,className:s}=t;return a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(n),i&&[V.menuHtmlItem,"menu__list-item"],s),key:o,dangerouslySetInnerHTML:{__html:c}})}function U(e){let{item:t,...n}=e;switch(t.type){case"category":return a.createElement(H,(0,C.Z)({item:t},n));case"html":return a.createElement(z,(0,C.Z)({item:t},n));default:return a.createElement(R,(0,C.Z)({item:t},n))}}function K(e){let{items:t,...n}=e;return a.createElement(y,null,t.map(((e,t)=>a.createElement(U,(0,C.Z)({key:t,item:e,index:t},n)))))}const j=(0,a.memo)(K),G={menu:"menu_SIkG",menuWithAnnouncementBar:"menuWithAnnouncementBar_GW3s"};function Y(e){let{path:t,sidebar:n,className:o}=e;const c=function(){const{isActive:e}=(0,T.nT)(),[t,n]=(0,a.useState)(e);return(0,b.RF)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return a.createElement("nav",{"aria-label":(0,u.I)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,l.Z)("menu thin-scrollbar",G.menu,c&&G.menuWithAnnouncementBar,o)},a.createElement("ul",{className:(0,l.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(j,{items:n,activePath:t,level:1})))}const q="sidebar_njMd",O="sidebarWithHideableNavbar_wUlq",X="sidebarHidden_VK0M",J="sidebarLogo_isFc";function Q(e){let{path:t,sidebar:n,onCollapse:o,isHidden:r}=e;const{navbar:{hideOnScroll:c},docs:{sidebar:{hideable:i}}}=(0,_.L)();return a.createElement("div",{className:(0,l.Z)(q,c&&O,r&&X)},c&&a.createElement(v.Z,{tabIndex:-1,className:J}),a.createElement(Y,{path:t,sidebar:n}),i&&a.createElement(N,{onClick:o}))}const $=a.memo(Q);var ee=n(13102),te=n(72961);const ne=e=>{let{sidebar:t,path:n}=e;const o=(0,te.e)();return a.createElement("ul",{className:(0,l.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(j,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&o.toggle(),"link"===e.type&&o.toggle()},level:1}))};function ae(e){return a.createElement(ee.Zo,{component:ne,props:e})}const le=a.memo(ae);function oe(e){const t=(0,k.i)(),n="desktop"===t||"ssr"===t,l="mobile"===t;return a.createElement(a.Fragment,null,n&&a.createElement($,e),l&&a.createElement(le,e))}const re={expandButton:"expandButton_m80_",expandButtonIcon:"expandButtonIcon_BlDH"};function ce(e){let{toggleSidebar:t}=e;return a.createElement("div",{className:re.expandButton,title:(0,u.I)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t},a.createElement(S,{className:re.expandButtonIcon}))}const ie={docSidebarContainer:"docSidebarContainer_b6E3",docSidebarContainerHidden:"docSidebarContainerHidden_b3ry",sidebarViewport:"sidebarViewport_Xe31"};function se(e){let{children:t}=e;const n=(0,d.V)();return a.createElement(a.Fragment,{key:n?.name??"noSidebar"},t)}function de(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:o}=e;const{pathname:c}=(0,g.TH)(),[i,s]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{i&&s(!1),!i&&(0,f.n)()&&s(!0),o((e=>!e))}),[o,i]);return a.createElement("aside",{className:(0,l.Z)(r.k.docs.docSidebarContainer,ie.docSidebarContainer,n&&ie.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ie.docSidebarContainer)&&n&&s(!0)}},a.createElement(se,null,a.createElement("div",{className:(0,l.Z)(ie.sidebarViewport,i&&ie.sidebarViewportHidden)},a.createElement(oe,{sidebar:t,path:c,onCollapse:d,isHidden:i}),i&&a.createElement(ce,{toggleSidebar:d}))))}const me={docMainContainer:"docMainContainer_gTbr",docMainContainerEnhanced:"docMainContainerEnhanced_Uz_u",docItemWrapperEnhanced:"docItemWrapperEnhanced_czyv"};function ue(e){let{hiddenSidebarContainer:t,children:n}=e;const o=(0,d.V)();return a.createElement("main",{className:(0,l.Z)(me.docMainContainer,(t||!o)&&me.docMainContainerEnhanced)},a.createElement("div",{className:(0,l.Z)("container padding-top--md padding-bottom--lg",me.docItemWrapper,t&&me.docItemWrapperEnhanced)},n))}const be={docPage:"docPage__5DB",docsWrapper:"docsWrapper_BCFX"};function pe(e){let{children:t}=e;const n=(0,d.V)(),[l,o]=(0,a.useState)(!1);return a.createElement(m.Z,{wrapperClassName:be.docsWrapper},a.createElement(E,null),a.createElement("div",{className:be.docPage},n&&a.createElement(de,{sidebar:n.items,hiddenSidebarContainer:l,setHiddenSidebarContainer:o}),a.createElement(ue,{hiddenSidebarContainer:l},t)))}var he=n(4972),Ee=n(90197);function fe(e){const{versionMetadata:t}=e;return a.createElement(a.Fragment,null,a.createElement(Ee.Z,{version:t.version,tag:(0,c.os)(t.pluginId,t.version)}),a.createElement(o.d,null,t.noIndex&&a.createElement("meta",{name:"robots",content:"noindex, nofollow"})))}function ge(e){const{versionMetadata:t}=e,n=(0,i.hI)(e);if(!n)return a.createElement(he.default,null);const{docElement:c,sidebarName:m,sidebarItems:u}=n;return a.createElement(a.Fragment,null,a.createElement(fe,e),a.createElement(o.FG,{className:(0,l.Z)(r.k.wrapper.docsPages,r.k.page.docsDocPage,e.versionMetadata.className)},a.createElement(s.q,{version:t},a.createElement(d.b,{name:m,items:u},a.createElement(pe,null,c)))))}},4972:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var a=n(67294),l=n(95999),o=n(1944),r=n(7961);function c(){return a.createElement(a.Fragment,null,a.createElement(o.d,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.Z,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))))}}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9514,4972],{19963:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ge});var a=n(67294),l=n(86010),o=n(1944),r=n(35281),c=n(43320),i=n(53438),s=n(74477),d=n(1116),m=n(7961),u=n(95999),b=n(12466),p=n(85936);const h={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};function E(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,l]=(0,a.useState)(!1),o=(0,a.useRef)(!1),{startScroll:r,cancelScroll:c}=(0,b.Ct)();return(0,b.RF)(((e,n)=>{let{scrollY:a}=e;const r=n?.scrollY;r&&(o.current?o.current=!1:a>=r?(c(),l(!1)):a{e.location.hash&&(o.current=!0,l(!1))})),{shown:n,scrollToTop:()=>r(0)}}({threshold:300});return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,l.Z)("clean-btn",r.k.common.backToTopButton,h.backToTopButton,e&&h.backToTopButtonShow),type:"button",onClick:t})}var f=n(91442),g=n(16550),k=n(87524),_=n(86668),v=n(21327),C=n(87462);function S(e){return a.createElement("svg",(0,C.Z)({width:"20",height:"20","aria-hidden":"true"},e),a.createElement("g",{fill:"#7a7a7a"},a.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),a.createElement("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})))}const I={collapseSidebarButton:"collapseSidebarButton_PEFL",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_kv0_"};function N(e){let{onClick:t}=e;return a.createElement("button",{type:"button",title:(0,u.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,l.Z)("button button--secondary button--outline",I.collapseSidebarButton),onClick:t},a.createElement(S,{className:I.collapseSidebarButtonIcon}))}var T=n(59689),Z=n(902);const x=Symbol("EmptyContext"),B=a.createContext(x);function y(e){let{children:t}=e;const[n,l]=(0,a.useState)(null),o=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:l})),[n]);return a.createElement(B.Provider,{value:o},t)}var w=n(86043),L=n(48596),A=n(39960),M=n(72389);function F(e){let{categoryLabel:t,onClick:n}=e;return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel",message:"Toggle the collapsible sidebar category '{label}'",description:"The ARIA label to toggle the collapsible sidebar category"},{label:t}),type:"button",className:"clean-btn menu__caret",onClick:n})}function H(e){let{item:t,onItemClick:n,activePath:o,level:c,index:s,...d}=e;const{items:m,label:u,collapsible:b,className:p,href:h}=t,{docs:{sidebar:{autoCollapseCategories:E}}}=(0,_.L)(),f=function(e){const t=(0,M.Z)();return(0,a.useMemo)((()=>e.href?e.href:!t&&e.collapsible?(0,i.Wl)(e):void 0),[e,t])}(t),g=(0,i._F)(t,o),k=(0,L.Mg)(h,o),{collapsed:v,setCollapsed:S}=(0,w.u)({initialState:()=>!!b&&(!g&&t.collapsed)}),{expandedItem:I,setExpandedItem:N}=function(){const e=(0,a.useContext)(B);if(e===x)throw new Z.i6("DocSidebarItemsExpandedStateProvider");return e}(),T=function(e){void 0===e&&(e=!v),N(e?null:s),S(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:l}=e;const o=(0,Z.D9)(t);(0,a.useEffect)((()=>{t&&!o&&n&&l(!1)}),[t,o,n,l])}({isActive:g,collapsed:v,updateCollapsed:T}),(0,a.useEffect)((()=>{b&&null!=I&&I!==s&&E&&S(!0)}),[b,I,s,S,E]),a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemCategory,r.k.docs.docSidebarItemCategoryLevel(c),"menu__list-item",{"menu__list-item--collapsed":v},p)},a.createElement("div",{className:(0,l.Z)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":k})},a.createElement(A.Z,(0,C.Z)({className:(0,l.Z)("menu__link",{"menu__link--sublist":b,"menu__link--sublist-caret":!h&&b,"menu__link--active":g}),onClick:b?e=>{n?.(t),h?T(!1):(e.preventDefault(),T())}:()=>{n?.(t)},"aria-current":k?"page":void 0,"aria-expanded":b?!v:void 0,href:b?f??"#":f},d),u),h&&b&&a.createElement(F,{categoryLabel:u,onClick:e=>{e.preventDefault(),T()}})),a.createElement(w.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:v},a.createElement(j,{items:m,tabIndex:v?-1:0,onItemClick:n,activePath:o,level:c+1})))}var P=n(13919),W=n(39471);const D={menuExternalLink:"menuExternalLink_NmtK"};function R(e){let{item:t,onItemClick:n,activePath:o,level:c,index:s,...d}=e;const{href:m,label:u,className:b,autoAddBaseUrl:p}=t,h=(0,i._F)(t,o),E=(0,P.Z)(m);return a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(c),"menu__list-item",b),key:u},a.createElement(A.Z,(0,C.Z)({className:(0,l.Z)("menu__link",!E&&D.menuExternalLink,{"menu__link--active":h}),autoAddBaseUrl:p,"aria-current":h?"page":void 0,to:m},E&&{onClick:n?()=>n(t):void 0},d),u,!E&&a.createElement(W.Z,null)))}const V={menuHtmlItem:"menuHtmlItem_M9Kj"};function z(e){let{item:t,level:n,index:o}=e;const{value:c,defaultStyle:i,className:s}=t;return a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(n),i&&[V.menuHtmlItem,"menu__list-item"],s),key:o,dangerouslySetInnerHTML:{__html:c}})}function U(e){let{item:t,...n}=e;switch(t.type){case"category":return a.createElement(H,(0,C.Z)({item:t},n));case"html":return a.createElement(z,(0,C.Z)({item:t},n));default:return a.createElement(R,(0,C.Z)({item:t},n))}}function K(e){let{items:t,...n}=e;return a.createElement(y,null,t.map(((e,t)=>a.createElement(U,(0,C.Z)({key:t,item:e,index:t},n)))))}const j=(0,a.memo)(K),G={menu:"menu_SIkG",menuWithAnnouncementBar:"menuWithAnnouncementBar_GW3s"};function Y(e){let{path:t,sidebar:n,className:o}=e;const c=function(){const{isActive:e}=(0,T.nT)(),[t,n]=(0,a.useState)(e);return(0,b.RF)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return a.createElement("nav",{"aria-label":(0,u.I)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,l.Z)("menu thin-scrollbar",G.menu,c&&G.menuWithAnnouncementBar,o)},a.createElement("ul",{className:(0,l.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(j,{items:n,activePath:t,level:1})))}const q="sidebar_njMd",O="sidebarWithHideableNavbar_wUlq",X="sidebarHidden_VK0M",J="sidebarLogo_isFc";function Q(e){let{path:t,sidebar:n,onCollapse:o,isHidden:r}=e;const{navbar:{hideOnScroll:c},docs:{sidebar:{hideable:i}}}=(0,_.L)();return a.createElement("div",{className:(0,l.Z)(q,c&&O,r&&X)},c&&a.createElement(v.Z,{tabIndex:-1,className:J}),a.createElement(Y,{path:t,sidebar:n}),i&&a.createElement(N,{onClick:o}))}const $=a.memo(Q);var ee=n(13102),te=n(93163);const ne=e=>{let{sidebar:t,path:n}=e;const o=(0,te.e)();return a.createElement("ul",{className:(0,l.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(j,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&o.toggle(),"link"===e.type&&o.toggle()},level:1}))};function ae(e){return a.createElement(ee.Zo,{component:ne,props:e})}const le=a.memo(ae);function oe(e){const t=(0,k.i)(),n="desktop"===t||"ssr"===t,l="mobile"===t;return a.createElement(a.Fragment,null,n&&a.createElement($,e),l&&a.createElement(le,e))}const re={expandButton:"expandButton_m80_",expandButtonIcon:"expandButtonIcon_BlDH"};function ce(e){let{toggleSidebar:t}=e;return a.createElement("div",{className:re.expandButton,title:(0,u.I)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t},a.createElement(S,{className:re.expandButtonIcon}))}const ie={docSidebarContainer:"docSidebarContainer_b6E3",docSidebarContainerHidden:"docSidebarContainerHidden_b3ry",sidebarViewport:"sidebarViewport_Xe31"};function se(e){let{children:t}=e;const n=(0,d.V)();return a.createElement(a.Fragment,{key:n?.name??"noSidebar"},t)}function de(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:o}=e;const{pathname:c}=(0,g.TH)(),[i,s]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{i&&s(!1),!i&&(0,f.n)()&&s(!0),o((e=>!e))}),[o,i]);return a.createElement("aside",{className:(0,l.Z)(r.k.docs.docSidebarContainer,ie.docSidebarContainer,n&&ie.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ie.docSidebarContainer)&&n&&s(!0)}},a.createElement(se,null,a.createElement("div",{className:(0,l.Z)(ie.sidebarViewport,i&&ie.sidebarViewportHidden)},a.createElement(oe,{sidebar:t,path:c,onCollapse:d,isHidden:i}),i&&a.createElement(ce,{toggleSidebar:d}))))}const me={docMainContainer:"docMainContainer_gTbr",docMainContainerEnhanced:"docMainContainerEnhanced_Uz_u",docItemWrapperEnhanced:"docItemWrapperEnhanced_czyv"};function ue(e){let{hiddenSidebarContainer:t,children:n}=e;const o=(0,d.V)();return a.createElement("main",{className:(0,l.Z)(me.docMainContainer,(t||!o)&&me.docMainContainerEnhanced)},a.createElement("div",{className:(0,l.Z)("container padding-top--md padding-bottom--lg",me.docItemWrapper,t&&me.docItemWrapperEnhanced)},n))}const be={docPage:"docPage__5DB",docsWrapper:"docsWrapper_BCFX"};function pe(e){let{children:t}=e;const n=(0,d.V)(),[l,o]=(0,a.useState)(!1);return a.createElement(m.Z,{wrapperClassName:be.docsWrapper},a.createElement(E,null),a.createElement("div",{className:be.docPage},n&&a.createElement(de,{sidebar:n.items,hiddenSidebarContainer:l,setHiddenSidebarContainer:o}),a.createElement(ue,{hiddenSidebarContainer:l},t)))}var he=n(4972),Ee=n(90197);function fe(e){const{versionMetadata:t}=e;return a.createElement(a.Fragment,null,a.createElement(Ee.Z,{version:t.version,tag:(0,c.os)(t.pluginId,t.version)}),a.createElement(o.d,null,t.noIndex&&a.createElement("meta",{name:"robots",content:"noindex, nofollow"})))}function ge(e){const{versionMetadata:t}=e,n=(0,i.hI)(e);if(!n)return a.createElement(he.default,null);const{docElement:c,sidebarName:m,sidebarItems:u}=n;return a.createElement(a.Fragment,null,a.createElement(fe,e),a.createElement(o.FG,{className:(0,l.Z)(r.k.wrapper.docsPages,r.k.page.docsDocPage,e.versionMetadata.className)},a.createElement(s.q,{version:t},a.createElement(d.b,{name:m,items:u},a.createElement(pe,null,c)))))}},4972:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var a=n(67294),l=n(95999),o=n(1944),r=n(7961);function c(){return a.createElement(a.Fragment,null,a.createElement(o.d,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.Z,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))))}}}]); \ No newline at end of file diff --git a/assets/js/1f24e9ca.caacab12.js b/assets/js/1f24e9ca.caacab12.js deleted file mode 100644 index d4c1fd42..00000000 --- a/assets/js/1f24e9ca.caacab12.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4878],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},s="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),s=p(r),m=o,y=s["".concat(l,".").concat(m)]||s[m]||f[m]||a;return r?n.createElement(y,c(c({ref:t},u),{},{components:r})):n.createElement(y,c({ref:t},u))}));function y(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,c=new Array(a);c[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[s]="string"==typeof e?e:o,c[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>f,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var n=r(87462),o=(r(67294),r(3905));const a={},c=void 0,i={permalink:"/blog/2023/05/10/new-code",editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2023-05-10-new-code.md",source:"@site/blog/2023-05-10-new-code.md",title:"new-code",description:"",date:"2023-05-10T00:00:00.000Z",formattedDate:"May 10, 2023",tags:[],readingTime:0,hasTruncateMarker:!1,authors:[],frontMatter:{},nextItem:{title:"patchy-launch",permalink:"/blog/2023/05/10/patchy-launch"}},l={authorsImageUrls:[]},p=[],u={toc:p},s="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(s,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/278e11ab.da39be09.js b/assets/js/278e11ab.da39be09.js new file mode 100644 index 00000000..85734398 --- /dev/null +++ b/assets/js/278e11ab.da39be09.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4028],{3905:(e,t,o)=>{o.d(t,{Zo:()=>c,kt:()=>m});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function a(e){for(var t=1;t=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var s=n.createContext({}),p=function(e){var t=n.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):a(a({},t),e)),o},c=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=p(o),h=r,m=d["".concat(s,".").concat(h)]||d[h]||u[h]||i;return o?n.createElement(m,a(a({ref:t},c),{},{components:o})):n.createElement(m,a({ref:t},c))}));function m(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=o.length,a=new Array(i);a[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:r,a[1]=l;for(var p=2;p{o.r(t),o.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var n=o(87462),r=(o(67294),o(3905));const i={},a=void 0,l={unversionedId:"Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill",id:"Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill",title:"Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill",description:"In this project we will be recording brainwaves or EEG from visual cortex part of the brain using BioAmp EXG Pill and Maker Uno.",source:"@site/docs/Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill.md",sourceDirName:"Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill",slug:"/Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill/",permalink:"/docs/next/Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments"},next:{title:"Visualizing Muscle Signals (EMG)",permalink:"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/"}},s={},p=[{value:"What is Electroencephalography (EEG)?",id:"what-is-electroencephalography-eeg",level:2},{value:"About BioAmp EXG Pill:",id:"about-bioamp-exg-pill",level:3},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE:",id:"hardware",level:3},{value:"SOFTWARE:",id:"software",level:3},{value:"Step 1: Assembly",id:"step-1-assembly",level:2},{value:"Step 2: Skin Preparation",id:"step-2-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 3: Connecting Electrode Cable",id:"step-3-connecting-electrode-cable",level:2},{value:"Step 4: Electrode Placements",id:"step-4-electrode-placements",level:2},{value:"What is International 10-20 system for recording EEG?",id:"what-is-international-10-20-system-for-recording-eeg",level:3},{value:"Placement of Brain BioAmp Band and gel electrode:",id:"placement-of-brain-bioamp-band-and-gel-electrode",level:3},{value:"Step 5: Connections",id:"step-5-connections",level:2},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide",level:2},{value:"Step 7: Download Spike Recorder",id:"step-7-download-spike-recorder",level:2},{value:"Step 8: Configurations on Spike Recorder",id:"step-8-configurations-on-spike-recorder",level:2},{value:"Step 9: Visualizing EEG",id:"step-9-visualizing-eeg",level:2},{value:"Features of Spike Recorder that you can explore:",id:"features-of-spike-recorder-that-you-can-explore",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...o}=e;return(0,r.kt)(d,(0,n.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"In this project we will be recording brainwaves or EEG from visual cortex part of the brain using BioAmp EXG Pill and Maker Uno."),(0,r.kt)("h2",{id:"what-is-electroencephalography-eeg"},"What is Electroencephalography (EEG)?"),(0,r.kt)("p",null,"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."),(0,r.kt)("h3",{id:"about-bioamp-exg-pill"},"About BioAmp EXG Pill:"),(0,r.kt)("p",null,"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)."),(0,r.kt)("p",null,"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."),(0,r.kt)("h2",{id:"supplies"},"Supplies"),(0,r.kt)("h3",{id:"hardware"},"HARDWARE:"),(0,r.kt)("p",null,"1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin)"),(0,r.kt)("p",null,"1 x BioAmp Cable"),(0,r.kt)("p",null,"3 x Gel Electrodes"),(0,r.kt)("p",null,"3 x Jumper Cables"),(0,r.kt)("p",null,"1 x Arduino Uno / Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC)"),(0,r.kt)("p",null,"1 x Nuprep Skin Preparation Gel"),(0,r.kt)("p",null,"1 x Wet wipe"),(0,r.kt)("p",null,"1 x Brain BioAmp Band (optional)"),(0,r.kt)("p",null,"1 x Electrode Gel (only if using Brain BioAmp Band)"),(0,r.kt)("h3",{id:"software"},"SOFTWARE:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Arduino IDE"),(0,r.kt)("li",{parentName:"ol"},"Backyard Brains' Spike Recorder")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Note:")," You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below:"),(0,r.kt)("p",null,"DIY Neuroscience Kit Basic (",(0,r.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/"},"Upside Down Labs Store")," |\n",(0,r.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," | ",(0,r.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ"},"Amazon Store"),")"),(0,r.kt)("p",null,"BioAmp EXG Pill Pack (",(0,r.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," |\n",(0,r.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-sensor-for-ecg-emg-eog-or-eeg/"},"Tindie Store"),")"),(0,r.kt)("p",null,"BioAmp EXG Pill - EXG Explorer Pack (",(0,r.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," |\n",(0,r.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-x2-sensor-for-ecg-emg-eog-eeg/"},"Tindie Store")," | ",(0,r.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1&th=1"},"Amazon Store"),")"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"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."),(0,r.kt)("h2",{id:"step-1-assembly"},"Step 1: Assembly"),(0,r.kt)("p",null,"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."),(0,r.kt)("h2",{id:"step-2-skin-preparation"},"Step 2: Skin Preparation"),(0,r.kt)("p",null,"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."),(0,r.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,r.kt)("p",null,"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."),(0,r.kt)("h2",{id:"step-3-connecting-electrode-cable"},"Step 3: Connecting Electrode Cable"),(0,r.kt)("p",null,"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."),(0,r.kt)("h2",{id:"step-4-electrode-placements"},"Step 4: Electrode Placements"),(0,r.kt)("p",null,"Let's understand the electrode placements before moving forward in this project. For recording EEG from visual cortex part of brain, you have to place the electrodes on the back side of your head, specifically on O1 and O2 (refer International 10-20 system for recording EEG)"),(0,r.kt)("h3",{id:"what-is-international-10-20-system-for-recording-eeg"},"What is International 10-20 system for recording EEG?"),(0,r.kt)("p",null,"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."),(0,r.kt)("h3",{id:"placement-of-brain-bioamp-band-and-gel-electrode"},"Placement of Brain BioAmp Band and gel electrode:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Connect the BioAmp Cable to Brain BioAmp Band in a way such that IN+ and IN- are placed on the back side of head, exactly at O1 and O2 according to international 10-20 system for recording EEG.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"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.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"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."))),(0,r.kt)("h2",{id:"step-5-connections"},"Step 5: Connections"),(0,r.kt)("p",null,"Connect BioAmp EXG Pill to Maker Uno using the jumper cables as directed below:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"VCC to 5V"),(0,r.kt)("li",{parentName:"ul"},"GND to GND"),(0,r.kt)("li",{parentName:"ul"},"OUT to A0")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"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."),(0,r.kt)("h2",{id:"step-6-download-arduino-ide"},"Step 6: Download Arduino IDE"),(0,r.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,r.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,r.kt)("p",null,"After downloading, connect the Maker Uno to your laptop using the USB Cable (Type A to Type B)"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Note:")," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,r.kt)("h2",{id:"step-7-download-spike-recorder"},"Step 7: Download Spike Recorder"),(0,r.kt)("p",null,"Download Backyard Brains' Spike Recorder according to the operating system you are using (Windows, OSX, Linux) from the link given below:"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://backyardbrains.com/products/spikerecorder"},"https://backyardbrains.com/products/spikerecorder")),(0,r.kt)("p",null,"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 Maker Uno."),(0,r.kt)("p",null,"Spike Recorder Arduino Code: ",(0,r.kt)("a",{parentName:"p",href:"https://raw.githubusercontent.com/BackyardBrains/SpikerShield/master/Muscle/Arduino%20Code/SpikeRecorder/SpikeRecorderSpikerShield_V1_1.ino"},"https://raw.githubusercontent.com/BackyardBrains/SpikerShield/master/Muscle/Arduino%20Code/SpikeRecorder/SpikeRecorderSpikerShield_V1_1.ino")),(0,r.kt)("p",null,"Now start the Spike Recorder."),(0,r.kt)("h2",{id:"step-8-configurations-on-spike-recorder"},"Step 8: Configurations on Spike Recorder"),(0,r.kt)("p",null,"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."),(0,r.kt)("p",null,"Also mute the speakers and apply the 50Hz notch filter by clicking on the checkbox as shown in the screenshot above."),(0,r.kt)("p",null,"You should set the low band pass filter to ",(0,r.kt)("strong",{parentName:"p"},"1Hz and high bandpass filter to 40Hz")," as we are only recording the EEG signals which range between these frequencies."),(0,r.kt)("p",null,"Now everything is configured and connected. So close the settings window and start recording EEG signals."),(0,r.kt)("h2",{id:"step-9-visualizing-eeg"},"Step 9: Visualizing EEG"),(0,r.kt)("p",null,"The signals that you can see on the screen right now are originating from visual cortex part of your brain and propagating through all the layers to the surface of your skin/scalp."),(0,r.kt)("p",null,"To record these EEG signals, you have placed the electrodes on the back side of your head, 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 Maker Uno. Ultimately the signals are being visualized in Spike Recorder software."),(0,r.kt)("p",null,"We hope everything is clear now and you understand how the signals are propagating from your brain to the screen of the laptop."),(0,r.kt)("h2",{id:"features-of-spike-recorder-that-you-can-explore"},"Features of Spike Recorder that you can explore:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"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."),(0,r.kt)("li",{parentName:"ol"},"Increase or decrease the X axis timescale by sliding up and down on the scroll wheel of the mouse."),(0,r.kt)("li",{parentName:"ol"},"Visualize the FFT graph by clicking on the FFT icon on top left size of the screen."),(0,r.kt)("li",{parentName:"ol"},"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."),(0,r.kt)("li",{parentName:"ol"},"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")),(0,r.kt)("p",null,"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."),(0,r.kt)("p",null,"You can also mail us at ",(0,r.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/2f60ed54.a614ea8f.js b/assets/js/2f60ed54.a614ea8f.js deleted file mode 100644 index a4c814d6..00000000 --- a/assets/js/2f60ed54.a614ea8f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7304],{3905:(e,t,i)=>{i.d(t,{Zo:()=>c,kt:()=>h});var n=i(67294);function o(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function r(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function s(e){for(var t=1;t=0||(o[i]=e[i]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(o[i]=e[i])}return o}var a=n.createContext({}),p=function(e){var t=n.useContext(a),i=t;return e&&(i="function"==typeof e?e(t):s(s({},t),e)),i},c=function(e){var t=p(e.components);return n.createElement(a.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var i=e.components,o=e.mdxType,r=e.originalType,a=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=p(i),m=o,h=d["".concat(a,".").concat(m)]||d[m]||u[m]||r;return i?n.createElement(h,s(s({ref:t},c),{},{components:i})):n.createElement(h,s({ref:t},c))}));function h(e,t){var i=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=i.length,s=new Array(r);s[0]=m;var l={};for(var a in t)hasOwnProperty.call(t,a)&&(l[a]=t[a]);l.originalType=e,l[d]="string"==typeof e?e:o,s[1]=l;for(var p=2;p{i.r(t),i.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>p});var n=i(87462),o=(i(67294),i(3905));const r={},s="Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill",l={unversionedId:"Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill",id:"Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill",title:"Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill",description:"In this project we will be recording electrical impulses of eyes (EOG) to make a drowsiness detector using Maker Uno and BioAmp EXG Pill.",source:"@site/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",sourceDirName:"Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill",slug:"/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/",permalink:"/docs/next/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/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",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Eye Blink Detection by Recording EOG Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/"},next:{title:"Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/EOG Experiments/EOG EXPERIMENT/"}},a={},p=[{value:"What is Electrooculography (EOG)?",id:"what-is-electrooculography-eog",level:2},{value:"About BioAmp EXG Pill:",id:"about-bioamp-exg-pill",level:3},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE:",id:"hardware",level:3},{value:"SOFTWARE:",id:"software",level:3},{value:"Step 1: Assembly",id:"step-1-assembly",level:2},{value:"Step 2: Skin Preparation",id:"step-2-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 3: Connecting Electrode Cable",id:"step-3-connecting-electrode-cable",level:2},{value:"Step 4: Electrode Placements",id:"step-4-electrode-placements",level:2},{value:"Step 5: Connections",id:"step-5-connections",level:2},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide",level:2},{value:"Step 7: Coding Time!",id:"step-7-coding-time",level:2},{value:"Step 8: Its Ready",id:"step-8-its-ready",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...r}=e;return(0,o.kt)(d,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"drowsiness-detector-by-detecting-eog-signals-using-bioamp-exg-pill"},"Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(35583).Z,width:"1280",height:"720"}),"\n",(0,o.kt)("img",{src:i(83943).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"In this project we will be recording electrical impulses of eyes (EOG) to make a drowsiness detector using Maker Uno and BioAmp EXG Pill."),(0,o.kt)("h2",{id:"what-is-electrooculography-eog"},"What is Electrooculography (EOG)?"),(0,o.kt)("p",null,"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."),(0,o.kt)("h3",{id:"about-bioamp-exg-pill"},"About BioAmp EXG Pill:"),(0,o.kt)("p",null,"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)."),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"supplies"},"Supplies"),(0,o.kt)("h3",{id:"hardware"},"HARDWARE:"),(0,o.kt)("p",null,"1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin)"),(0,o.kt)("p",null,"1 x BioAmp Cable"),(0,o.kt)("p",null,"3 x Gel Electrodes"),(0,o.kt)("p",null,"3 x Jumper Cables"),(0,o.kt)("p",null,"1 x Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC)"),(0,o.kt)("p",null,"1 x Nuprep Skin Preparation Gel"),(0,o.kt)("p",null,"1 x Wet wipe"),(0,o.kt)("h3",{id:"software"},"SOFTWARE:"),(0,o.kt)("p",null,"Arduino IDE"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Note:")," You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below:"),(0,o.kt)("p",null,"DIY Neuroscience Kit Basic (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ"},"Amazon India"),")"),(0,o.kt)("p",null,"BioAmp EXG Pill Pack (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-sensor-for-ecg-emg-eog-or-eeg/"},"Tindie Store"),")"),(0,o.kt)("p",null,"BioAmp EXG Pill - EXG Explorer Pack (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-x2-sensor-for-ecg-emg-eog-eeg/"},"Tindie Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1&th=1"},"Amazon India"),")"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"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."),(0,o.kt)("h2",{id:"step-1-assembly"},"Step 1: Assembly"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(12981).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-2-skin-preparation"},"Step 2: Skin Preparation"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(94123).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-3-connecting-electrode-cable"},"Step 3: Connecting Electrode Cable"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(79111).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-4-electrode-placements"},"Step 4: Electrode Placements"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(58606).Z,width:"1920",height:"1080"})),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,o.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,o.kt)("li",{parentName:"ol"},"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.")),(0,o.kt)("h2",{id:"step-5-connections"},"Step 5: Connections"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(31137).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"Connect BioAmp EXG Pill to Maker Uno using the jumper cables as directed below:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"VCC to 5V"),(0,o.kt)("li",{parentName:"ul"},"GND to GND"),(0,o.kt)("li",{parentName:"ul"},"OUT to A0")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"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."),(0,o.kt)("p",null,"We specifically chose Maker Uno for this experinment as it is Arduino compatible board but has onboard LEDs and a buzzer."),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-6-download-arduino-ide"},"Step 6: Download Arduino IDE"),(0,o.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,o.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,o.kt)("p",null,"After downloading, connect the Maker Uno to your laptop using the USB Cable"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Note:")," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,o.kt)("h2",{id:"step-7-coding-time"},"Step 7: Coding Time!"),(0,o.kt)("p",null,"Copy paste the Arduino Sketch given below in Arduino IDE. "),(0,o.kt)("p",null,"Drowsiness Detection: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/Eye-BioAmp-Arduino-Firmware/blob/main/3_DrowsinessDetection/3_DrowsinessDetection.ino"},"https://github.com/upsidedownlabs/Eye-BioAmp-Arduino-Firmware/blob/main/3_DrowsinessDetection/3_DrowsinessDetection.ino")),(0,o.kt)("h2",{id:"step-8-its-ready"},"Step 8: Its Ready"),(0,o.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/h4F41mp4mWk?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,o.kt)("p",null,"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."),(0,o.kt)("p",null,"You can change this threshold according to your requirements or preferences."),(0,o.kt)("p",null,"Your drowsiness detector is now ready!!"),(0,o.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,o.kt)("p",null,"You can also mail us at ",(0,o.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}u.isMDXComponent=!0},12981:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Assembly-f327d906751232e9cb07ecfa7a773993.jpg"},79111:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connecting Electrode Cable-d79f3b2fc5071c89187b77177d54b847.gif"},31137:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connections with Maker Uno-338f82f2d079845995535477de607bde.jpg"},58606:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Electrode Placements-e622681b45c8626346e03c9f927fb557.jpg"},94123:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Skin Preparation-41d0adc3b736bc2d122993b98d6e9fbd.gif"},35583:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Thumbnail1-a6a9a5abee314cc7c332375f2f3659ac.jpg"},83943:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Thumbnail2-4654ca99a5ddc6651cfedd9d039d2fee.jpg"}}]); \ No newline at end of file diff --git a/assets/js/2f60ed54.f04dbc9f.js b/assets/js/2f60ed54.f04dbc9f.js new file mode 100644 index 00000000..3ac72151 --- /dev/null +++ b/assets/js/2f60ed54.f04dbc9f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7304],{3905:(e,t,i)=>{i.d(t,{Zo:()=>c,kt:()=>h});var n=i(67294);function o(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function r(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function s(e){for(var t=1;t=0||(o[i]=e[i]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(o[i]=e[i])}return o}var a=n.createContext({}),p=function(e){var t=n.useContext(a),i=t;return e&&(i="function"==typeof e?e(t):s(s({},t),e)),i},c=function(e){var t=p(e.components);return n.createElement(a.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var i=e.components,o=e.mdxType,r=e.originalType,a=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=p(i),m=o,h=d["".concat(a,".").concat(m)]||d[m]||u[m]||r;return i?n.createElement(h,s(s({ref:t},c),{},{components:i})):n.createElement(h,s({ref:t},c))}));function h(e,t){var i=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=i.length,s=new Array(r);s[0]=m;var l={};for(var a in t)hasOwnProperty.call(t,a)&&(l[a]=t[a]);l.originalType=e,l[d]="string"==typeof e?e:o,s[1]=l;for(var p=2;p{i.r(t),i.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>p});var n=i(87462),o=(i(67294),i(3905));const r={sidebar_position:3},s="Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill",l={unversionedId:"Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill",id:"Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill",title:"Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill",description:"In this project we will be recording electrical impulses of eyes (EOG) to make a drowsiness detector using Maker Uno and BioAmp EXG Pill.",source:"@site/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",sourceDirName:"Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill",slug:"/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/",permalink:"/docs/next/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/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",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Eye Blink Detection by Recording EOG Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/"},next:{title:"Tutorial - Basics",permalink:"/docs/next/category/tutorial---basics"}},a={},p=[{value:"What is Electrooculography (EOG)?",id:"what-is-electrooculography-eog",level:2},{value:"About BioAmp EXG Pill:",id:"about-bioamp-exg-pill",level:3},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE:",id:"hardware",level:3},{value:"SOFTWARE:",id:"software",level:3},{value:"Step 1: Assembly",id:"step-1-assembly",level:2},{value:"Step 2: Skin Preparation",id:"step-2-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 3: Connecting Electrode Cable",id:"step-3-connecting-electrode-cable",level:2},{value:"Step 4: Electrode Placements",id:"step-4-electrode-placements",level:2},{value:"Step 5: Connections",id:"step-5-connections",level:2},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide",level:2},{value:"Step 7: Coding Time!",id:"step-7-coding-time",level:2},{value:"Step 8: Its Ready",id:"step-8-its-ready",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...r}=e;return(0,o.kt)(d,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"drowsiness-detector-by-detecting-eog-signals-using-bioamp-exg-pill"},"Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(35583).Z,width:"1280",height:"720"}),"\n",(0,o.kt)("img",{src:i(83943).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"In this project we will be recording electrical impulses of eyes (EOG) to make a drowsiness detector using Maker Uno and BioAmp EXG Pill."),(0,o.kt)("h2",{id:"what-is-electrooculography-eog"},"What is Electrooculography (EOG)?"),(0,o.kt)("p",null,"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."),(0,o.kt)("h3",{id:"about-bioamp-exg-pill"},"About BioAmp EXG Pill:"),(0,o.kt)("p",null,"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)."),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"supplies"},"Supplies"),(0,o.kt)("h3",{id:"hardware"},"HARDWARE:"),(0,o.kt)("p",null,"1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin)"),(0,o.kt)("p",null,"1 x BioAmp Cable"),(0,o.kt)("p",null,"3 x Gel Electrodes"),(0,o.kt)("p",null,"3 x Jumper Cables"),(0,o.kt)("p",null,"1 x Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC)"),(0,o.kt)("p",null,"1 x Nuprep Skin Preparation Gel"),(0,o.kt)("p",null,"1 x Wet wipe"),(0,o.kt)("h3",{id:"software"},"SOFTWARE:"),(0,o.kt)("p",null,"Arduino IDE"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Note:")," You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below:"),(0,o.kt)("p",null,"DIY Neuroscience Kit Basic (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ"},"Amazon India"),")"),(0,o.kt)("p",null,"BioAmp EXG Pill Pack (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-sensor-for-ecg-emg-eog-or-eeg/"},"Tindie Store"),")"),(0,o.kt)("p",null,"BioAmp EXG Pill - EXG Explorer Pack (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-x2-sensor-for-ecg-emg-eog-eeg/"},"Tindie Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1&th=1"},"Amazon India"),")"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"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."),(0,o.kt)("h2",{id:"step-1-assembly"},"Step 1: Assembly"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(12981).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-2-skin-preparation"},"Step 2: Skin Preparation"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(94123).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-3-connecting-electrode-cable"},"Step 3: Connecting Electrode Cable"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(79111).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-4-electrode-placements"},"Step 4: Electrode Placements"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(58606).Z,width:"1920",height:"1080"})),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,o.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,o.kt)("li",{parentName:"ol"},"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.")),(0,o.kt)("h2",{id:"step-5-connections"},"Step 5: Connections"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(31137).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"Connect BioAmp EXG Pill to Maker Uno using the jumper cables as directed below:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"VCC to 5V"),(0,o.kt)("li",{parentName:"ul"},"GND to GND"),(0,o.kt)("li",{parentName:"ul"},"OUT to A0")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"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."),(0,o.kt)("p",null,"We specifically chose Maker Uno for this experinment as it is Arduino compatible board but has onboard LEDs and a buzzer."),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-6-download-arduino-ide"},"Step 6: Download Arduino IDE"),(0,o.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,o.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,o.kt)("p",null,"After downloading, connect the Maker Uno to your laptop using the USB Cable"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Note:")," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,o.kt)("h2",{id:"step-7-coding-time"},"Step 7: Coding Time!"),(0,o.kt)("p",null,"Copy paste the Arduino Sketch given below in Arduino IDE. "),(0,o.kt)("p",null,"Drowsiness Detection: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/Eye-BioAmp-Arduino-Firmware/blob/main/3_DrowsinessDetection/3_DrowsinessDetection.ino"},"https://github.com/upsidedownlabs/Eye-BioAmp-Arduino-Firmware/blob/main/3_DrowsinessDetection/3_DrowsinessDetection.ino")),(0,o.kt)("h2",{id:"step-8-its-ready"},"Step 8: Its Ready"),(0,o.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/h4F41mp4mWk?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,o.kt)("p",null,"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."),(0,o.kt)("p",null,"You can change this threshold according to your requirements or preferences."),(0,o.kt)("p",null,"Your drowsiness detector is now ready!!"),(0,o.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,o.kt)("p",null,"You can also mail us at ",(0,o.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}u.isMDXComponent=!0},12981:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Assembly-f327d906751232e9cb07ecfa7a773993.jpg"},79111:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connecting Electrode Cable-d79f3b2fc5071c89187b77177d54b847.gif"},31137:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connections with Maker Uno-338f82f2d079845995535477de607bde.jpg"},58606:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Electrode Placements-e622681b45c8626346e03c9f927fb557.jpg"},94123:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Skin Preparation-41d0adc3b736bc2d122993b98d6e9fbd.gif"},35583:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Thumbnail1-a6a9a5abee314cc7c332375f2f3659ac.jpg"},83943:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Thumbnail2-4654ca99a5ddc6651cfedd9d039d2fee.jpg"}}]); \ No newline at end of file diff --git a/assets/js/44241aa1.a5319d54.js b/assets/js/44241aa1.6c5b118c.js similarity index 50% rename from assets/js/44241aa1.a5319d54.js rename to assets/js/44241aa1.6c5b118c.js index 59faa100..1709283e 100644 --- a/assets/js/44241aa1.a5319d54.js +++ b/assets/js/44241aa1.6c5b118c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4241],{11870:e=>{e.exports=JSON.parse('{"title":"Tutorial - Basics","description":"5 minutes to learn the most important Docusaurus concepts.","slug":"/category/tutorial---basics","permalink":"/docs/next/category/tutorial---basics","navigation":{"previous":{"title":"Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill","permalink":"/docs/next/Experiments/EOG Experiments/EOG EXPERIMENT/"},"next":{"title":"Create a Page","permalink":"/docs/next/tutorial-basics/create-a-page"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4241],{11870:e=>{e.exports=JSON.parse('{"title":"Tutorial - Basics","description":"5 minutes to learn the most important Docusaurus concepts.","slug":"/category/tutorial---basics","permalink":"/docs/next/category/tutorial---basics","navigation":{"previous":{"title":"Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill","permalink":"/docs/next/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/"},"next":{"title":"Create a Page","permalink":"/docs/next/tutorial-basics/create-a-page"}}}')}}]); \ No newline at end of file diff --git a/assets/js/4577df0b.148f14d7.js b/assets/js/4577df0b.148f14d7.js deleted file mode 100644 index 77e116f2..00000000 --- a/assets/js/4577df0b.148f14d7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7349],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>m});var r=o(67294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function i(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var s=r.createContext({}),c=function(e){var t=r.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(o),d=n,m=p["".concat(s,".").concat(d)]||p[d]||h[d]||a;return o?r.createElement(m,i(i({ref:t},u),{},{components:o})):r.createElement(m,i({ref:t},u))}));function m(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=o.length,i=new Array(a);i[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,i[1]=l;for(var c=2;c{o.r(t),o.d(t,{contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var r=o(87462),n=(o(67294),o(3905));const a={},i="EXPLORE AND CONTRIBUTE",l={type:"mdx",permalink:"/Contributors",source:"@site/src/pages/Contributors.md",title:"EXPLORE AND CONTRIBUTE",description:"You can\u2019t 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.",frontMatter:{}},s=[{value:"Here, Are the Steps to contribute to the Repository",id:"here-are-the-steps-to-contribute-to-the-repository",level:2},{value:"Step 1: Fork the main repository",id:"step-1-fork-the-main-repository",level:2},{value:"Step 2 - Clone the forked repository to your machine",id:"step-2---clone-the-forked-repository-to-your-machine",level:2},{value:"Step 3 - Create A New Branch",id:"step-3---create-a-new-branch",level:2},{value:"Step 4 - Develop, Stage, and Commit",id:"step-4---develop-stage-and-commit",level:2},{value:"Step 5 - Push the Changes",id:"step-5---push-the-changes",level:2},{value:"Step 6 - Create a Pull Request",id:"step-6---create-a-pull-request",level:2}],c={toc:s},u="wrapper";function p(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"explore-and-contribute"},"EXPLORE AND CONTRIBUTE"),(0,n.kt)("p",null,"You can\u2019t 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."),(0,n.kt)("h2",{id:"here-are-the-steps-to-contribute-to-the-repository"},"Here, Are the Steps to contribute to the Repository"),(0,n.kt)("h2",{id:"step-1-fork-the-main-repository"},"Step 1: Fork the main repository"),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,(0,n.kt)("img",{src:o(44805).Z,width:"1796",height:"163"})),(0,n.kt)("p",null,"If the forking is successful, it will create a new repo under your account."),(0,n.kt)("p",null,(0,n.kt)("img",{src:o(60109).Z,width:"1717",height:"487"})),(0,n.kt)("h2",{id:"step-2---clone-the-forked-repository-to-your-machine"},"Step 2 - Clone the forked repository to your machine"),(0,n.kt)("p",null,"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.\nCloning 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."),(0,n.kt)("p",null,(0,n.kt)("img",{src:o(63900).Z,width:"1828",height:"586"})),(0,n.kt)("p",null,"Run the clone command in your local environment:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-js"},"git clone https://github.com/upsidedownlabs/upsidedownlabs.github.io.git;\n")),(0,n.kt)("h2",{id:"step-3---create-a-new-branch"},"Step 3 - Create A New Branch"),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,"Switch to the directory that was created after you cloned the forked repository:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-js"},"cd \n")),(0,n.kt)("p",null,"Create a new feature branch with a name that identifies with the changes you are planning to do. For example:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-js"},"git checkout -b new-user-contribution\n")),(0,n.kt)("p",null,(0,n.kt)("img",{src:o(69033).Z,width:"542",height:"48"})),(0,n.kt)("h2",{id:"step-4---develop-stage-and-commit"},"Step 4 - Develop, Stage, and Commit"),(0,n.kt)("p",null,"If you have created any new files as part of your change, you will need to add it to the branch you just created."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-js"},"git add \n")),(0,n.kt)("p",null,"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):"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-js"},'git commit -m "Add XYZ to filename"\n')),(0,n.kt)("p",null,"Image description"),(0,n.kt)("h2",{id:"step-5---push-the-changes"},"Step 5 - Push the Changes"),(0,n.kt)("p",null,"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."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-js"},"git push origin fix-npe-issue\n")),(0,n.kt)("p",null,(0,n.kt)("img",{src:o(44706).Z,width:"800",height:"296"})),(0,n.kt)("p",null,"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."),(0,n.kt)("h2",{id:"step-6---create-a-pull-request"},"Step 6 - Create a Pull Request"),(0,n.kt)("p",null,'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.'),(0,n.kt)("p",null,(0,n.kt)("img",{src:o(65914).Z,width:"1207",height:"392"})),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,"It's generally a good practice to leave a comment indicating the changes or the reason for the pull request."),(0,n.kt)("p",null,'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.'))}p.isMDXComponent=!0},44805:(e,t,o)=>{o.d(t,{Z:()=>r});const r=o.p+"assets/images/forkgit-5f998950ad857295079c60a1ce860f45.png"},60109:(e,t,o)=>{o.d(t,{Z:()=>r});const r=o.p+"assets/images/forkgit2-e15a136977c38e648059ce5fad1472f3.png"},69033:(e,t,o)=>{o.d(t,{Z:()=>r});const r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAh4AAAAwCAMAAABpJIMXAAAAUVBMVEUMDAzCwsJhYWF4eHiDg4Ojo6MxMjQjIyPMzMxUVFRtbW2urq6Li4uUlJSIAN23t7dFRUX58aVrZ0mnoXA2DCfRFkONEi+NiV/DvYLf2JRyB7aGsXbLAAAFWklEQVR42u1d23KjOhBs3WcELAh7c/v/Dz0PgBAIk/hsqrzrTD+kUkEjtVCbkch0GSjgKwTBX4yPj18fH7++EdcrrlcIBAKBQCAQCAQCwZNhSJfpl8vlRgtnb0cT375mb8UZ/9gp18QG1d6aTW48t/lhGEUeANPn8pjb/DQsa/WT5THfhFN5wP8cTVze01tII8aU0ggAKaWU0kYhuiHVBsDZqKgL819seQnEGFQEoHvq7aIl6wAiIqJDhZhBG8Nho8B2O4SzsOQQm51KrQMQe+o1Cj5EtqU+HpEviM1DZGI5iokmYZBxRF04mkVuU3f4hOpIr+PrJY0I4zjJYxzf3sax/IBosqwbBzhnWSsLaBVZN21xCcSTOqIyHFVb3FjmrmM+/MQZw36IupRHsxvCOrimn9Swl8dAkQ35gg93ynCnwgH5ldgyRCaWowLzLI885WoWuU3d4TPgZfOuPY0AXufnxnicXHoDwJOHcwCMA5oIwFNYL4GM6gBARQBMvviMnyQXBhDKFFMNERu4SJu8ti5ZP/eR+UwDlqkhM1yJLUOsxIqo+acF4Gk4nsXU5qjDJ5DH72u5HQWAcC4P8nPCdRYAq+VJS7xeAlGDZY0A4lN5aGOMznuPOOyWvhyCCcTknQEcEblSHqHpWzug4DMNNWBtvDDcEWO1kccStRVJE0/kcdjhP43r7wnXO+URAGBJxEwAGWZmDuslkCX9ZXl4773P8tCVPIohAnlCz8TAwMzDZu8BNlbpgk9x+pwbLwz3q0mVPPBn8qB/Xx4vLy8vL6U87kkuw3ofGgvAd8UlEEc1VMmluzu5VEMoS3CGwq5N54C2ndcuN66Hygy3xD6Txya5dJ8klyeRR51cpq3pexrhxzG9jgwAl7dxLCOiMsU+jQnQykxbwXwJxGibABgVWasWiEqz7acb2zHfkEe1Na2GcM6ha2jDZ+5Zk2Hdm7Vx4K7bbYIzw0yslEfHjCLKM5PhAaAub2j3s8htjjr897ErA7m8p3dOIy4ppZTepoyTEo4Ptst90D1Nrw7Lg+20R1uOe2iJ2umxrInoxnsPjvuD7X6IjhwsbTZ+ueeVxvQLHxyhDw62eTUnYmuUJZq2LMR2PqtWs8htjjp8TqQRAsHRq/RxHMfEciMEhw+OlFJ6l/sgEAgEAoFAIBAIBAKBQCAQCH4mbE9qVxWZy/L3/wu/VXi8LdO131tER/e83j9iyKQfcFu/2xDxkFnAqsi6aXZMnkoe8REug283RDxkFlPZTNhx9ngmeaAJf4M8/tQQ8YhZwLUA4IbVHbCW7me7wYltwfTUx3LKRdRS5rEgtIo6TZvV/NykkB0E2VyQ+9mGbxmWo3x5rL/ZEPGQwuZInfYTz9kdkMvyc6H+iW3BqMhRlfLIUbmqP6PrNdtNlddXTArZQZDNBbmfNbxiePBBEEPE/4B2inqNjTtgWe75oXdiW5irK4+SSy68zA9OYgDdRh5fMCnkIs/FXLD2k8NrhgfyEEPE3QgMwHfkC3dAJY8z20K4tffw1aWlWm+/VbhhUtjesSZmc8HazxpeMbyxLRFDxF2Y6yF7U7gDanl8Zlu4Rx5cy+PYpHBDHmU/a3jF8JY8xBBxD3x+mpXugOPkcmRbuC+5+Cq5fMGkUCQXu+snh9cMT+Qhhoivo1WR2amwugNyWX4u1D+xLVgVObY7eUxRuaq/2BxqNoqGgyU7MSksDoLVXJD7yeE1wxN5iCHivrem5IbCHbCW5We7wYltwfTkdq9NctTRwdYNyh0s2YlJYXEQrOaC3E8RXjG8LQ8xRAgEAoFAIBAIBALBM+LgCzt8CCHI93b8VPwHszh8nTPEkN8AAAAASUVORK5CYII="},44706:(e,t,o)=>{o.d(t,{Z:()=>r});const r=o.p+"assets/images/forkgit6-0f563d8503e06bc29151b22d9cef185e.png"},65914:(e,t,o)=>{o.d(t,{Z:()=>r});const r=o.p+"assets/images/forkgit7-3c3ce17270f890709cec4a04bc0c5132.png"},63900:(e,t,o)=>{o.d(t,{Z:()=>r});const r=o.p+"assets/images/newforkimg-eb54503bfb2d33cb2d00af29957856eb.png"}}]); \ No newline at end of file diff --git a/assets/js/4577df0b.dc4427e7.js b/assets/js/4577df0b.dc4427e7.js new file mode 100644 index 00000000..0807451e --- /dev/null +++ b/assets/js/4577df0b.dc4427e7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7349],{3905:(e,t,o)=>{o.d(t,{Zo:()=>p,kt:()=>g});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var s=n.createContext({}),c=function(e){var t=n.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},p=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(o),d=r,g=u["".concat(s,".").concat(d)]||u[d]||h[d]||a;return o?n.createElement(g,i(i({ref:t},p),{},{components:o})):n.createElement(g,i({ref:t},p))}));function g(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=o.length,i=new Array(a);i[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:r,i[1]=l;for(var c=2;c{o.r(t),o.d(t,{contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var n=o(87462),r=(o(67294),o(3905));const a={},i="EXPLORE AND CONTRIBUTE",l={type:"mdx",permalink:"/Contributors",source:"@site/src/pages/Contributors.md",title:"EXPLORE AND CONTRIBUTE",description:"You can\u2019t 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.",frontMatter:{}},s=[{value:"Here, Are the Steps to contribute to the Repository",id:"here-are-the-steps-to-contribute-to-the-repository",level:2},{value:"Step 1: Fork the main repository",id:"step-1-fork-the-main-repository",level:2},{value:"Step 2 - Clone the forked repository to your machine",id:"step-2---clone-the-forked-repository-to-your-machine",level:2},{value:"Step 3 - Download Node.js",id:"step-3---download-nodejs",level:2},{value:"Step 4 - Getting Started with npx",id:"step-4---getting-started-with-npx",level:2},{value:"Step 5 - Create A New Branch",id:"step-5---create-a-new-branch",level:2},{value:"Step 6-",id:"step-6-",level:2},{value:"Step 7 - Develop, Stage, and Commit",id:"step-7---develop-stage-and-commit",level:2},{value:"Step 8 - Push the Changes",id:"step-8---push-the-changes",level:2},{value:"Step 9 - Create a Pull Request",id:"step-9---create-a-pull-request",level:2}],c={toc:s},p="wrapper";function u(e){let{components:t,...a}=e;return(0,r.kt)(p,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"explore-and-contribute"},"EXPLORE AND CONTRIBUTE"),(0,r.kt)("p",null,"You can\u2019t 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."),(0,r.kt)("h2",{id:"here-are-the-steps-to-contribute-to-the-repository"},"Here, Are the Steps to contribute to the Repository"),(0,r.kt)("h2",{id:"step-1-fork-the-main-repository"},"Step 1: Fork the main repository"),(0,r.kt)("p",null,"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."),(0,r.kt)("p",null,(0,r.kt)("img",{src:o(44805).Z,width:"1796",height:"163"})),(0,r.kt)("p",null,"If the forking is successful, it will create a new repo under your account."),(0,r.kt)("p",null,(0,r.kt)("img",{src:o(60109).Z,width:"1717",height:"487"})),(0,r.kt)("h2",{id:"step-2---clone-the-forked-repository-to-your-machine"},"Step 2 - Clone the forked repository to your machine"),(0,r.kt)("p",null,"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.\nCloning 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."),(0,r.kt)("p",null,(0,r.kt)("img",{src:o(63900).Z,width:"1828",height:"586"})),(0,r.kt)("p",null,"Run the clone command in your local environment:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"git clone https://github.com/upsidedownlabs/upsidedownlabs.github.io.git;\n")),(0,r.kt)("h2",{id:"step-3---download-nodejs"},"Step 3 - Download Node.js"),(0,r.kt)("p",null,"Download Node to get started with npx tools"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://nodejs.org/en/download"},"Node.js")),(0,r.kt)("h2",{id:"step-4---getting-started-with-npx"},"Step 4 - Getting Started with npx"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"npm install npx\n")),(0,r.kt)("h2",{id:"step-5---create-a-new-branch"},"Step 5 - Create A New Branch"),(0,r.kt)("p",null,"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."),(0,r.kt)("p",null,"Switch to the directory that was created after you cloned the forked repository:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"cd \n")),(0,r.kt)("p",null,"Create a new feature branch with a name that identifies with the changes you are planning to do. For example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"git checkout -b new-user-contribution\n")),(0,r.kt)("p",null,(0,r.kt)("img",{src:o(69033).Z,width:"542",height:"48"})),(0,r.kt)("h2",{id:"step-6-"},"Step 6-"),(0,r.kt)("p",null,"Run the following command in the terminal "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"npm start\n")),(0,r.kt)("h2",{id:"step-7---develop-stage-and-commit"},"Step 7 - Develop, Stage, and Commit"),(0,r.kt)("p",null,"If you have created any new files as part of your change, you will need to add it to the branch you just created."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"git add \n")),(0,r.kt)("p",null,"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):"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},'git commit -m "Add XYZ to filename"\n')),(0,r.kt)("p",null,"Image description"),(0,r.kt)("h2",{id:"step-8---push-the-changes"},"Step 8 - Push the Changes"),(0,r.kt)("p",null,"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."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-js"},"git push origin fix-npe-issue\n")),(0,r.kt)("p",null,(0,r.kt)("img",{src:o(44706).Z,width:"800",height:"296"})),(0,r.kt)("p",null,"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."),(0,r.kt)("h2",{id:"step-9---create-a-pull-request"},"Step 9 - Create a Pull Request"),(0,r.kt)("p",null,'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.'),(0,r.kt)("p",null,(0,r.kt)("img",{src:o(65914).Z,width:"1207",height:"392"})),(0,r.kt)("p",null,"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."),(0,r.kt)("p",null,"It's generally a good practice to leave a comment indicating the changes or the reason for the pull request."),(0,r.kt)("p",null,'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.'))}u.isMDXComponent=!0},44805:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/forkgit-5f998950ad857295079c60a1ce860f45.png"},60109:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/forkgit2-e15a136977c38e648059ce5fad1472f3.png"},69033:(e,t,o)=>{o.d(t,{Z:()=>n});const n="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAh4AAAAwCAMAAABpJIMXAAAAUVBMVEUMDAzCwsJhYWF4eHiDg4Ojo6MxMjQjIyPMzMxUVFRtbW2urq6Li4uUlJSIAN23t7dFRUX58aVrZ0mnoXA2DCfRFkONEi+NiV/DvYLf2JRyB7aGsXbLAAAFWklEQVR42u1d23KjOhBs3WcELAh7c/v/Dz0PgBAIk/hsqrzrTD+kUkEjtVCbkch0GSjgKwTBX4yPj18fH7++EdcrrlcIBAKBQCAQCAQCwZNhSJfpl8vlRgtnb0cT375mb8UZ/9gp18QG1d6aTW48t/lhGEUeANPn8pjb/DQsa/WT5THfhFN5wP8cTVze01tII8aU0ggAKaWU0kYhuiHVBsDZqKgL819seQnEGFQEoHvq7aIl6wAiIqJDhZhBG8Nho8B2O4SzsOQQm51KrQMQe+o1Cj5EtqU+HpEviM1DZGI5iokmYZBxRF04mkVuU3f4hOpIr+PrJY0I4zjJYxzf3sax/IBosqwbBzhnWSsLaBVZN21xCcSTOqIyHFVb3FjmrmM+/MQZw36IupRHsxvCOrimn9Swl8dAkQ35gg93ynCnwgH5ldgyRCaWowLzLI885WoWuU3d4TPgZfOuPY0AXufnxnicXHoDwJOHcwCMA5oIwFNYL4GM6gBARQBMvviMnyQXBhDKFFMNERu4SJu8ti5ZP/eR+UwDlqkhM1yJLUOsxIqo+acF4Gk4nsXU5qjDJ5DH72u5HQWAcC4P8nPCdRYAq+VJS7xeAlGDZY0A4lN5aGOMznuPOOyWvhyCCcTknQEcEblSHqHpWzug4DMNNWBtvDDcEWO1kccStRVJE0/kcdjhP43r7wnXO+URAGBJxEwAGWZmDuslkCX9ZXl4773P8tCVPIohAnlCz8TAwMzDZu8BNlbpgk9x+pwbLwz3q0mVPPBn8qB/Xx4vLy8vL6U87kkuw3ofGgvAd8UlEEc1VMmluzu5VEMoS3CGwq5N54C2ndcuN66Hygy3xD6Txya5dJ8klyeRR51cpq3pexrhxzG9jgwAl7dxLCOiMsU+jQnQykxbwXwJxGibABgVWasWiEqz7acb2zHfkEe1Na2GcM6ha2jDZ+5Zk2Hdm7Vx4K7bbYIzw0yslEfHjCLKM5PhAaAub2j3s8htjjr897ErA7m8p3dOIy4ppZTepoyTEo4Ptst90D1Nrw7Lg+20R1uOe2iJ2umxrInoxnsPjvuD7X6IjhwsbTZ+ueeVxvQLHxyhDw62eTUnYmuUJZq2LMR2PqtWs8htjjp8TqQRAsHRq/RxHMfEciMEhw+OlFJ6l/sgEAgEAoFAIBAIBAKBQCAQCH4mbE9qVxWZy/L3/wu/VXi8LdO131tER/e83j9iyKQfcFu/2xDxkFnAqsi6aXZMnkoe8REug283RDxkFlPZTNhx9ngmeaAJf4M8/tQQ8YhZwLUA4IbVHbCW7me7wYltwfTUx3LKRdRS5rEgtIo6TZvV/NykkB0E2VyQ+9mGbxmWo3x5rL/ZEPGQwuZInfYTz9kdkMvyc6H+iW3BqMhRlfLIUbmqP6PrNdtNlddXTArZQZDNBbmfNbxiePBBEEPE/4B2inqNjTtgWe75oXdiW5irK4+SSy68zA9OYgDdRh5fMCnkIs/FXLD2k8NrhgfyEEPE3QgMwHfkC3dAJY8z20K4tffw1aWlWm+/VbhhUtjesSZmc8HazxpeMbyxLRFDxF2Y6yF7U7gDanl8Zlu4Rx5cy+PYpHBDHmU/a3jF8JY8xBBxD3x+mpXugOPkcmRbuC+5+Cq5fMGkUCQXu+snh9cMT+Qhhoivo1WR2amwugNyWX4u1D+xLVgVObY7eUxRuaq/2BxqNoqGgyU7MSksDoLVXJD7yeE1wxN5iCHivrem5IbCHbCW5We7wYltwfTkdq9NctTRwdYNyh0s2YlJYXEQrOaC3E8RXjG8LQ8xRAgEAoFAIBAIBALBM+LgCzt8CCHI93b8VPwHszh8nTPEkN8AAAAASUVORK5CYII="},44706:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/forkgit6-0f563d8503e06bc29151b22d9cef185e.png"},65914:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/forkgit7-3c3ce17270f890709cec4a04bc0c5132.png"},63900:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/newforkimg-eb54503bfb2d33cb2d00af29957856eb.png"}}]); \ No newline at end of file diff --git a/assets/js/4595e690.5fd0467b.js b/assets/js/4595e690.5fd0467b.js new file mode 100644 index 00000000..cf45f8fc --- /dev/null +++ b/assets/js/4595e690.5fd0467b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9944],{3905:(e,t,i)=>{i.d(t,{Zo:()=>c,kt:()=>h});var n=i(67294);function o(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function r(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function l(e){for(var t=1;t=0||(o[i]=e[i]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(o[i]=e[i])}return o}var s=n.createContext({}),p=function(e){var t=n.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):l(l({},t),e)),i},c=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var i=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,c=a(e,["components","mdxType","originalType","parentName"]),d=p(i),m=o,h=d["".concat(s,".").concat(m)]||d[m]||u[m]||r;return i?n.createElement(h,l(l({ref:t},c),{},{components:i})):n.createElement(h,l({ref:t},c))}));function h(e,t){var i=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=i.length,l=new Array(r);l[0]=m;var a={};for(var s in t)hasOwnProperty.call(t,s)&&(a[s]=t[s]);a.originalType=e,a[d]="string"==typeof e?e:o,l[1]=a;for(var p=2;p{i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>p});var n=i(87462),o=(i(67294),i(3905));const r={sidebar_position:1},l="Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill",a={unversionedId:"Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment",id:"Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment",title:"Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill",description:"In this project we will be recording electrical impulses of eyes (EOG) using BioAmp EXG Pill and Arduino Uno.",source:"@site/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment.md",sourceDirName:"Experiments/EOG Experiments/EOG EXPERIMENT",slug:"/Experiments/EOG Experiments/EOG EXPERIMENT/",permalink:"/docs/next/Experiments/EOG Experiments/EOG EXPERIMENT/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno",permalink:"/docs/next/Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno/"},next:{title:"Eye Blink Detection by Recording EOG Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/"}},s={},p=[{value:"What is Electrooculography (EOG)?",id:"what-is-electrooculography-eog",level:2},{value:"About BioAmp EXG Pill:",id:"about-bioamp-exg-pill",level:2},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE:",id:"hardware",level:2},{value:"SOFTWARE:",id:"software",level:2},{value:"Step 2: Skin Preparation",id:"step-2-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 3: Connecting Electrode Cable",id:"step-3-connecting-electrode-cable",level:2},{value:"Step 4: Electrode Placements",id:"step-4-electrode-placements",level:2},{value:"Step 5: Connections",id:"step-5-connections",level:2},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide",level:2},{value:"Step 7: Coding Time!",id:"step-7-coding-time",level:2},{value:"Step 8: Its Ready",id:"step-8-its-ready",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...r}=e;return(0,o.kt)(d,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"visualizing-electrical-impulses-of-eyes-eog-using-bioamp-exg-pill"},"Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(32935).Z,width:"696",height:"680"})),(0,o.kt)("p",null,"In this project we will be recording electrical impulses of eyes (EOG) using BioAmp EXG Pill and Arduino Uno."),(0,o.kt)("h2",{id:"what-is-electrooculography-eog"},"What is Electrooculography (EOG)?"),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"about-bioamp-exg-pill"},"About BioAmp EXG Pill:"),(0,o.kt)("p",null,"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)."),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"supplies"},"Supplies"),(0,o.kt)("h2",{id:"hardware"},"HARDWARE:"),(0,o.kt)("p",null,"1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin)"),(0,o.kt)("p",null,"1 x BioAmp Cable"),(0,o.kt)("p",null,"3 x Gel Electrodes"),(0,o.kt)("p",null,"3 x Jumper Cables"),(0,o.kt)("p",null,"1 x Arduino Uno / Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC)"),(0,o.kt)("p",null,"1 x Nuprep Skin Preparation Gel"),(0,o.kt)("p",null,"1 x Wet wipe"),(0,o.kt)("h2",{id:"software"},"SOFTWARE:"),(0,o.kt)("p",null,"Arduino IDE"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Note"),": You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below:"),(0,o.kt)("p",null,"DIY Neuroscience Kit Basic (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/"},"Upside Down Labs Store")," |\n",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ"},"Amazon Store"),")"),(0,o.kt)("p",null,"BioAmp EXG Pill Pack (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," )"),(0,o.kt)("p",null,"BioAmp EXG Pill - EXG Explorer Pack (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," |\n",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1"},"Amazon Store"),")"),(0,o.kt)("h1",{id:"step-1-assembly"},"Step 1: Assembly"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Img2",src:i(78973).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-2-skin-preparation"},"Step 2: Skin Preparation"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(9037).Z,width:"768",height:"432"})),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(77468).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-3-connecting-electrode-cable"},"Step 3: Connecting Electrode Cable"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(82939).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-4-electrode-placements"},"Step 4: Electrode Placements"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Img5",src:i(77071).Z,width:"1600",height:"900"})),(0,o.kt)("p",null,"Follow three simple steps to place the electrodes as given below:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Connect the BioAmp Cable to gel electrodes,")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Peel the plastic backing from electrodes")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"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."))),(0,o.kt)("p",null,"There are 2 options to place the electrodes:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Left and right side of eyes to record horizontal movement or"),(0,o.kt)("li",{parentName:"ol"},"Above & below your eye to record the vertical movement.")),(0,o.kt)("p",null,"You can try both the electrode placements one by one. Let's start with Option 1 (Horizontal movement)"),(0,o.kt)("h2",{id:"step-5-connections"},"Step 5: Connections"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Img6",src:i(91719).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"Connect BioAmp EXG Pill to Arduino Uno using the jumper cables as directed below:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"VCC to 5V"),(0,o.kt)("li",{parentName:"ol"},"GND to GND"),(0,o.kt)("li",{parentName:"ol"},"OUT to A0")),(0,o.kt)("h2",{id:"step-6-download-arduino-ide"},"Step 6: Download Arduino IDE"),(0,o.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"Ardiuno IDE")),(0,o.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,o.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Note"),": Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,o.kt)("h2",{id:"step-7-coding-time"},"Step 7: Coding Time!"),(0,o.kt)("p",null,"Copy paste the Arduino Sketch given below in Arduino IDE. "),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"EOG Filter"),": ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EOGFilter/EOGFilter.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EOGFilter/EOGFilter.ino")),(0,o.kt)("p",null,"After flashing the code, open the serial plotter to visualize the EOG signals and detect the eye blinks."),(0,o.kt)("h2",{id:"step-8-its-ready"},"Step 8: Its Ready"),(0,o.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/Txo7DjUr5Tk?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,o.kt)("p",null,"Move your eyes left and right to visualize the EOG signals. Isn't it amazing?"),(0,o.kt)("p",null,"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."),(0,o.kt)("p",null,"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?"),(0,o.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,o.kt)("p",null,"You can also mail us at ",(0,o.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}u.isMDXComponent=!0},78973:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Assembly-f327d906751232e9cb07ecfa7a773993.jpg"},82939:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connecting Electrode Cable-d79f3b2fc5071c89187b77177d54b847.gif"},91719:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connections-f8783853b80b561c932db891cc63751a.jpg"},77071:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/EOG Electrode Placements-d11b5a9b7e8fc47c492bec1add60cb25.jpg"},77468:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Skin Preparation Horizontal-4b7a58aed6c05d7bd81adc932cebdb36.gif"},9037:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Skin Preparation Vertical-6a5eeb52800c7d120148a7d445b66953.gif"},32935:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Thumbnail-25a72f3c5d79e264f885f686b58ee69d.jpg"}}]); \ No newline at end of file diff --git a/assets/js/4595e690.b756b9bf.js b/assets/js/4595e690.b756b9bf.js deleted file mode 100644 index fe9a7d47..00000000 --- a/assets/js/4595e690.b756b9bf.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9944],{3905:(e,t,i)=>{i.d(t,{Zo:()=>c,kt:()=>h});var n=i(67294);function o(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function r(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function l(e){for(var t=1;t=0||(o[i]=e[i]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(o[i]=e[i])}return o}var s=n.createContext({}),p=function(e){var t=n.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):l(l({},t),e)),i},c=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var i=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,c=a(e,["components","mdxType","originalType","parentName"]),d=p(i),m=o,h=d["".concat(s,".").concat(m)]||d[m]||u[m]||r;return i?n.createElement(h,l(l({ref:t},c),{},{components:i})):n.createElement(h,l({ref:t},c))}));function h(e,t){var i=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=i.length,l=new Array(r);l[0]=m;var a={};for(var s in t)hasOwnProperty.call(t,s)&&(a[s]=t[s]);a.originalType=e,a[d]="string"==typeof e?e:o,l[1]=a;for(var p=2;p{i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>p});var n=i(87462),o=(i(67294),i(3905));const r={},l="Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill",a={unversionedId:"Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment",id:"Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment",title:"Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill",description:"In this project we will be recording electrical impulses of eyes (EOG) using BioAmp EXG Pill and Arduino Uno.",source:"@site/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment.md",sourceDirName:"Experiments/EOG Experiments/EOG EXPERIMENT",slug:"/Experiments/EOG Experiments/EOG EXPERIMENT/",permalink:"/docs/next/Experiments/EOG Experiments/EOG EXPERIMENT/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/"},next:{title:"Tutorial - Basics",permalink:"/docs/next/category/tutorial---basics"}},s={},p=[{value:"What is Electrooculography (EOG)?",id:"what-is-electrooculography-eog",level:2},{value:"About BioAmp EXG Pill:",id:"about-bioamp-exg-pill",level:2},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE:",id:"hardware",level:2},{value:"SOFTWARE:",id:"software",level:2},{value:"Step 2: Skin Preparation",id:"step-2-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 3: Connecting Electrode Cable",id:"step-3-connecting-electrode-cable",level:2},{value:"Step 4: Electrode Placements",id:"step-4-electrode-placements",level:2},{value:"Step 5: Connections",id:"step-5-connections",level:2},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide",level:2},{value:"Step 7: Coding Time!",id:"step-7-coding-time",level:2},{value:"Step 8: Its Ready",id:"step-8-its-ready",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...r}=e;return(0,o.kt)(d,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"visualizing-electrical-impulses-of-eyes-eog-using-bioamp-exg-pill"},"Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(32935).Z,width:"696",height:"680"})),(0,o.kt)("p",null,"In this project we will be recording electrical impulses of eyes (EOG) using BioAmp EXG Pill and Arduino Uno."),(0,o.kt)("h2",{id:"what-is-electrooculography-eog"},"What is Electrooculography (EOG)?"),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"about-bioamp-exg-pill"},"About BioAmp EXG Pill:"),(0,o.kt)("p",null,"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)."),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"supplies"},"Supplies"),(0,o.kt)("h2",{id:"hardware"},"HARDWARE:"),(0,o.kt)("p",null,"1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin)"),(0,o.kt)("p",null,"1 x BioAmp Cable"),(0,o.kt)("p",null,"3 x Gel Electrodes"),(0,o.kt)("p",null,"3 x Jumper Cables"),(0,o.kt)("p",null,"1 x Arduino Uno / Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC)"),(0,o.kt)("p",null,"1 x Nuprep Skin Preparation Gel"),(0,o.kt)("p",null,"1 x Wet wipe"),(0,o.kt)("h2",{id:"software"},"SOFTWARE:"),(0,o.kt)("p",null,"Arduino IDE"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Note"),": You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below:"),(0,o.kt)("p",null,"DIY Neuroscience Kit Basic (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/"},"Upside Down Labs Store")," |\n",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ"},"Amazon Store"),")"),(0,o.kt)("p",null,"BioAmp EXG Pill Pack (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," )"),(0,o.kt)("p",null,"BioAmp EXG Pill - EXG Explorer Pack (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," |\n",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1"},"Amazon Store"),")"),(0,o.kt)("h1",{id:"step-1-assembly"},"Step 1: Assembly"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Img2",src:i(78973).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-2-skin-preparation"},"Step 2: Skin Preparation"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(9037).Z,width:"768",height:"432"})),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(77468).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-3-connecting-electrode-cable"},"Step 3: Connecting Electrode Cable"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(82939).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-4-electrode-placements"},"Step 4: Electrode Placements"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Img5",src:i(77071).Z,width:"1600",height:"900"})),(0,o.kt)("p",null,"Follow three simple steps to place the electrodes as given below:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Connect the BioAmp Cable to gel electrodes,")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Peel the plastic backing from electrodes")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"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."))),(0,o.kt)("p",null,"There are 2 options to place the electrodes:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Left and right side of eyes to record horizontal movement or"),(0,o.kt)("li",{parentName:"ol"},"Above & below your eye to record the vertical movement.")),(0,o.kt)("p",null,"You can try both the electrode placements one by one. Let's start with Option 1 (Horizontal movement)"),(0,o.kt)("h2",{id:"step-5-connections"},"Step 5: Connections"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Img6",src:i(91719).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"Connect BioAmp EXG Pill to Arduino Uno using the jumper cables as directed below:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"VCC to 5V"),(0,o.kt)("li",{parentName:"ol"},"GND to GND"),(0,o.kt)("li",{parentName:"ol"},"OUT to A0")),(0,o.kt)("h2",{id:"step-6-download-arduino-ide"},"Step 6: Download Arduino IDE"),(0,o.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"Ardiuno IDE")),(0,o.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,o.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Note"),": Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,o.kt)("h2",{id:"step-7-coding-time"},"Step 7: Coding Time!"),(0,o.kt)("p",null,"Copy paste the Arduino Sketch given below in Arduino IDE. "),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"EOG Filter"),": ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EOGFilter/EOGFilter.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EOGFilter/EOGFilter.ino")),(0,o.kt)("p",null,"After flashing the code, open the serial plotter to visualize the EOG signals and detect the eye blinks."),(0,o.kt)("h2",{id:"step-8-its-ready"},"Step 8: Its Ready"),(0,o.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/Txo7DjUr5Tk?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,o.kt)("p",null,"Move your eyes left and right to visualize the EOG signals. Isn't it amazing?"),(0,o.kt)("p",null,"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."),(0,o.kt)("p",null,"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?"),(0,o.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,o.kt)("p",null,"You can also mail us at ",(0,o.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}u.isMDXComponent=!0},78973:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Assembly-f327d906751232e9cb07ecfa7a773993.jpg"},82939:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connecting Electrode Cable-d79f3b2fc5071c89187b77177d54b847.gif"},91719:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connections-f8783853b80b561c932db891cc63751a.jpg"},77071:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/EOG Electrode Placements-d11b5a9b7e8fc47c492bec1add60cb25.jpg"},77468:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Skin Preparation Horizontal-4b7a58aed6c05d7bd81adc932cebdb36.gif"},9037:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Skin Preparation Vertical-6a5eeb52800c7d120148a7d445b66953.gif"},32935:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Thumbnail-25a72f3c5d79e264f885f686b58ee69d.jpg"}}]); \ No newline at end of file diff --git a/assets/js/53294ef6.99c47137.js b/assets/js/53294ef6.90a1f5b3.js similarity index 89% rename from assets/js/53294ef6.99c47137.js rename to assets/js/53294ef6.90a1f5b3.js index 9b02eae3..ece5065c 100644 --- a/assets/js/53294ef6.99c47137.js +++ b/assets/js/53294ef6.90a1f5b3.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8392],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},s="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),s=p(r),m=o,y=s["".concat(l,".").concat(m)]||s[m]||f[m]||a;return r?n.createElement(y,c(c({ref:t},u),{},{components:r})):n.createElement(y,c({ref:t},u))}));function y(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,c=new Array(a);c[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[s]="string"==typeof e?e:o,c[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>f,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var n=r(87462),o=(r(67294),r(3905));const a={},c=void 0,i={permalink:"/blog/2023/05/10/patchy-launch",editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2023-05-10-patchy-launch/index.md",source:"@site/blog/2023-05-10-patchy-launch/index.md",title:"patchy-launch",description:"",date:"2023-05-10T00:00:00.000Z",formattedDate:"May 10, 2023",tags:[],readingTime:0,hasTruncateMarker:!1,authors:[],frontMatter:{},prevItem:{title:"new-code",permalink:"/blog/2023/05/10/new-code"},nextItem:{title:"Welcome",permalink:"/blog/welcome"}},l={authorsImageUrls:[]},p=[],u={toc:p},s="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(s,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8392],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},s="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),s=p(r),m=o,y=s["".concat(l,".").concat(m)]||s[m]||f[m]||a;return r?n.createElement(y,c(c({ref:t},u),{},{components:r})):n.createElement(y,c({ref:t},u))}));function y(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,c=new Array(a);c[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[s]="string"==typeof e?e:o,c[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>f,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var n=r(87462),o=(r(67294),r(3905));const a={},c=void 0,i={permalink:"/blog/2023/05/10/patchy-launch",editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2023-05-10-patchy-launch/index.md",source:"@site/blog/2023-05-10-patchy-launch/index.md",title:"patchy-launch",description:"",date:"2023-05-10T00:00:00.000Z",formattedDate:"May 10, 2023",tags:[],readingTime:0,hasTruncateMarker:!1,authors:[],frontMatter:{},prevItem:{title:"Soldering",permalink:"/blog/2023/05/10/Soldering"},nextItem:{title:"Welcome",permalink:"/blog/welcome"}},l={authorsImageUrls:[]},p=[],u={toc:p},s="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(s,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5fdef1fc.540a9011.js b/assets/js/5fdef1fc.540a9011.js new file mode 100644 index 00000000..b9e2c8a9 --- /dev/null +++ b/assets/js/5fdef1fc.540a9011.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9989],{3905:(e,t,o)=>{o.d(t,{Zo:()=>c,kt:()=>m});var n=o(67294);function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function r(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function a(e){for(var t=1;t=0||(i[o]=e[o]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}var s=n.createContext({}),p=function(e){var t=n.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):a(a({},t),e)),o},c=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var o=e.components,i=e.mdxType,r=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=p(o),h=i,m=d["".concat(s,".").concat(h)]||d[h]||u[h]||r;return o?n.createElement(m,a(a({ref:t},c),{},{components:o})):n.createElement(m,a({ref:t},c))}));function m(e,t){var o=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=o.length,a=new Array(r);a[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:i,a[1]=l;for(var p=2;p{o.r(t),o.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>p});var n=o(87462),i=(o(67294),o(3905));const r={sidebar_position:2},a="Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill",l={unversionedId:"Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments",id:"Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments",title:"Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill",description:"In this project we will be recording brainwaves or EEG from prefrontal cortex part of the brain using Arduino Uno and BioAmp EXG Pill.",source:"@site/docs/Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments.md",sourceDirName:"Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill",slug:"/Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments",permalink:"/docs/next/Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Measuring Heart Rate Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill/"},next:{title:"Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill/"}},s={},p=[{value:"What is Electroencephalography (EEG)?",id:"what-is-electroencephalography-eeg",level:2},{value:"About BioAmp EXG Pill:",id:"about-bioamp-exg-pill",level:2},{value:"HARDWARE",id:"hardware",level:2},{value:"SOFTWARE",id:"software",level:2},{value:"Step 1: Assembly",id:"step-1-assembly",level:2},{value:"Step 2: Skin Preparation",id:"step-2-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 3: Connecting Electrode Cable",id:"step-3-connecting-electrode-cable",level:2},{value:"Step 4: Electrode Placements",id:"step-4-electrode-placements",level:2},{value:"What is International 10-20 system for recording EEG?",id:"what-is-international-10-20-system-for-recording-eeg",level:3},{value:"Options to measure EEG",id:"options-to-measure-eeg",level:3},{value:"Option 1 - Measuring EEG using Gel electrodes:",id:"option-1---measuring-eeg-using-gel-electrodes",level:3},{value:"Option 2 - Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band and gel electrode:",id:"option-2---measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band-and-gel-electrode",level:3},{value:"Step 5: Connections",id:"step-5-connections",level:2},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide",level:2},{value:"Step 7: Download Spike Recorder",id:"step-7-download-spike-recorder",level:2},{value:"Step 8: Configurations on Spike Recorder",id:"step-8-configurations-on-spike-recorder",level:2},{value:"Step 9: Visualizing EEG",id:"step-9-visualizing-eeg",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...r}=e;return(0,i.kt)(d,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"recording-eeg-from-pre-frontal-cortex-of-brain-using-bioamp-exg-pill"},"Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill"),(0,i.kt)("p",null,(0,i.kt)("img",{src:o(26316).Z,width:"3637",height:"1825"})),(0,i.kt)("p",null,"In this project we will be recording brainwaves or EEG from prefrontal cortex part of the brain using Arduino Uno and BioAmp EXG Pill."),(0,i.kt)("h2",{id:"what-is-electroencephalography-eeg"},"What is Electroencephalography (EEG)?"),(0,i.kt)("p",null,"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."),(0,i.kt)("h2",{id:"about-bioamp-exg-pill"},"About BioAmp EXG Pill:"),(0,i.kt)("p",null,"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)."),(0,i.kt)("p",null,"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."),(0,i.kt)("h1",{id:"supplies"},"Supplies"),(0,i.kt)("h2",{id:"hardware"},"HARDWARE"),(0,i.kt)("p",null,"1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin)"),(0,i.kt)("p",null,"1 x BioAmp Cable"),(0,i.kt)("p",null,"3 x Gel Electrodes"),(0,i.kt)("p",null,"3 x Jumper Cables"),(0,i.kt)("p",null,"1 x Arduino Uno / Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC)"),(0,i.kt)("p",null,"1 x Nuprep Skin Preparation Gel"),(0,i.kt)("p",null,"1 x Wet wipe"),(0,i.kt)("p",null,"1 x Brain BioAmp Band (optional)"),(0,i.kt)("p",null,"1 x Electrode Gel (only if using Brain BioAmp Band)"),(0,i.kt)("h2",{id:"software"},"SOFTWARE"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Arduino IDE"),(0,i.kt)("li",{parentName:"ol"},"Backyard Brains' Spike Recorder")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Note"),": You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below:"),(0,i.kt)("p",null,"DIY Neuroscience Kit Basic (",(0,i.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/"},"Upside Down Labs Store")," |\n",(0,i.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," | ",(0,i.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ"},"Amazon Store"),")"),(0,i.kt)("p",null,"BioAmp EXG Pill Pack (",(0,i.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," | ",(0,i.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," )"),(0,i.kt)("p",null,"BioAmp EXG Pill - EXG Explorer Pack (",(0,i.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," |\n",(0,i.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," | ",(0,i.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1"},"Amazon Store"),")"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"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."),(0,i.kt)("h2",{id:"step-1-assembly"},"Step 1: Assembly"),(0,i.kt)("p",null,(0,i.kt)("img",{src:o(29762).Z,width:"1920",height:"1080"})),(0,i.kt)("p",null,"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."),(0,i.kt)("h2",{id:"step-2-skin-preparation"},"Step 2: Skin Preparation"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"dodge gif",src:o(99690).Z,width:"1152",height:"648"})),(0,i.kt)("p",null,"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."),(0,i.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,i.kt)("p",null,"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."),(0,i.kt)("h2",{id:"step-3-connecting-electrode-cable"},"Step 3: Connecting Electrode Cable"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"dodge gif",src:o(7204).Z,width:"1152",height:"648"})),(0,i.kt)("p",null,"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."),(0,i.kt)("h2",{id:"step-4-electrode-placements"},"Step 4: Electrode Placements"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"dodge gif",src:o(79624).Z,width:"1152",height:"648"}),"\n",(0,i.kt)("img",{alt:"dodge gif",src:o(46785).Z,width:"1152",height:"648"})),(0,i.kt)("p",null,"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 "),(0,i.kt)("h3",{id:"what-is-international-10-20-system-for-recording-eeg"},"What is International 10-20 system for recording EEG?"),(0,i.kt)("p",null,"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."),(0,i.kt)("h3",{id:"options-to-measure-eeg"},"Options to measure EEG"),(0,i.kt)("p",null,"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."),(0,i.kt)("h3",{id:"option-1---measuring-eeg-using-gel-electrodes"},"Option 1 - Measuring EEG using Gel electrodes:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,i.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,i.kt)("li",{parentName:"ol"},"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.")),(0,i.kt)("h3",{id:"option-2---measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band-and-gel-electrode"},"Option 2 - Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band and gel electrode:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to Brain BioAmp Band in a way such that IN+ and IN- are placed on the forehead."),(0,i.kt)("li",{parentName:"ol"},"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."),(0,i.kt)("li",{parentName:"ol"},"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.")),(0,i.kt)("h2",{id:"step-5-connections"},"Step 5: Connections"),(0,i.kt)("p",null,(0,i.kt)("img",{src:o(59659).Z,width:"1024",height:"576"})),(0,i.kt)("p",null,"Connect BioAmp EXG Pill to Arduino Uno using the jumper cables as directed below:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"VCC to 5V"),(0,i.kt)("li",{parentName:"ol"},"GND to GND"),(0,i.kt)("li",{parentName:"ol"},"OUT to A0")),(0,i.kt)("h2",{id:"step-6-download-arduino-ide"},"Step 6: Download Arduino IDE"),(0,i.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"Ardiuno IDE")),(0,i.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,i.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Note"),": Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,i.kt)("h2",{id:"step-7-download-spike-recorder"},"Step 7: Download Spike Recorder"),(0,i.kt)("p",null,"Download Backyard Brains' Spike Recorder according to the operating system you are using (Windows, OSX, Linux) from the link given below:"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://backyardbrains.com/products/spikerecorder"},"https://backyardbrains.com/products/spikerecorder")),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,"Spike Recorder Arduino Code: ",(0,i.kt)("a",{parentName:"p",href:"https://raw.githubusercontent.com/BackyardBrains/SpikerShield/master/Muscle/Arduino%20Code/SpikeRecorder/SpikeRecorderSpikerShield_V1_1.ino"},"https://raw.githubusercontent.com/BackyardBrains/SpikerShield/master/Muscle/Arduino%20Code/SpikeRecorder/SpikeRecorderSpikerShield_V1_1.ino")),(0,i.kt)("p",null,"Now start the Spike Recorder."),(0,i.kt)("h2",{id:"step-8-configurations-on-spike-recorder"},"Step 8: Configurations on Spike Recorder"),(0,i.kt)("p",null,(0,i.kt)("img",{src:o(3485).Z,width:"1920",height:"1080"})),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,"Also mute the speakers and apply the 50Hz notch filter by clicking on the checkbox as shown in the screenshot above."),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,"Now everything is configured and connected. So close the settings window and start recording EEG signals."),(0,i.kt)("h2",{id:"step-9-visualizing-eeg"},"Step 9: Visualizing EEG"),(0,i.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/QzZh243-Ac8?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,"We hope everything is clear now and you understand how the signals are propagating from your brain to the screen of the laptop."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"}," Features of Spike Recorder that you can explore:")),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"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."),(0,i.kt)("li",{parentName:"ol"},"Increase or decrease the X axis timescale by sliding up and down on the scroll wheel of the mouse."),(0,i.kt)("li",{parentName:"ol"},"Visualize the FFT graph by clicking on the FFT icon on top left size of the screen."),(0,i.kt)("li",{parentName:"ol"},"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."),(0,i.kt)("li",{parentName:"ol"},"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\nIt 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.")),(0,i.kt)("p",null,"You can also mail us at ",(0,i.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}u.isMDXComponent=!0},99690:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/Skin_Prep2-f4487abe9092ef8283c9d233041ec065.gif"},7204:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/eeggif1-c3bb88585bf28390953331b327d89a82.gif"},79624:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/eeggif2-f4d681029cc7aa1c60c9626b698f9be0.gif"},46785:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/eeggif3-6ac2fe6bc1ecb5bf78e1b065b916e5a8.gif"},26316:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/eegimg1-99c76a9500dc08dd78f1a4f409cd6225.png"},29762:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/eegimg2-455608d34bd57aecb79e4eb8918a849c.jpg"},59659:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/eegimg3-cb7dbe6284ad865f5b1d73ced8fca3db.webp"},3485:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/eegimg4-e3d82289bd37d7da21b6a0df827e2e3e.jpg"}}]); \ No newline at end of file diff --git a/assets/js/6b00e7e9.22f1cc7a.js b/assets/js/6b00e7e9.22f1cc7a.js new file mode 100644 index 00000000..cb086d3e --- /dev/null +++ b/assets/js/6b00e7e9.22f1cc7a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5479],{3905:(e,t,i)=>{i.d(t,{Zo:()=>c,kt:()=>h});var n=i(67294);function o(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function a(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function r(e){for(var t=1;t=0||(o[i]=e[i]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(o[i]=e[i])}return o}var s=n.createContext({}),p=function(e){var t=n.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},c=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var i=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=p(i),m=o,h=d["".concat(s,".").concat(m)]||d[m]||u[m]||a;return i?n.createElement(h,r(r({ref:t},c),{},{components:i})):n.createElement(h,r({ref:t},c))}));function h(e,t){var i=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=i.length,r=new Array(a);r[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:o,r[1]=l;for(var p=2;p{i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var n=i(87462),o=(i(67294),i(3905));const a={},r="Detecting Heart Beats Using BioAmp EXG Pill",l={unversionedId:"Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill/Detecting Heart Beats Using BioAmp EXG Pill",id:"Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill/Detecting Heart Beats Using BioAmp EXG Pill",title:"Detecting Heart Beats Using BioAmp EXG Pill",description:"dodge gif",source:"@site/docs/Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill/Detecting Heart Beats Using BioAmp EXG Pill.md",sourceDirName:"Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill",slug:"/Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill/",permalink:"/docs/next/Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill/Detecting Heart Beats Using BioAmp EXG Pill.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Record Publication Grade ECG at Your Home Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill/"},next:{title:"Measuring Heart Rate Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill/"}},s={},p=[{value:"What is Electrocardiography (ECG)?",id:"what-is-electrocardiography-ecg",level:2},{value:"What is a heartbeat?",id:"what-is-a-heartbeat",level:2},{value:"About BioAmp EXG Pill:",id:"about-bioamp-exg-pill",level:3},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE:",id:"hardware",level:3},{value:"SOFTWARE:",id:"software",level:3},{value:"Step 1: Assembly",id:"step-1-assembly",level:2},{value:"Step 2: Configuration for ECG",id:"step-2-configuration-for-ecg",level:2},{value:"Step 3: Connecting Electrode Cable",id:"step-3-connecting-electrode-cable",level:2},{value:"Step 4: Skin Preparation",id:"step-4-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 5: Electrode Placements",id:"step-5-electrode-placements",level:2},{value:"Option 1 - Measuring ECG using Gel electrodes:",id:"option-1---measuring-ecg-using-gel-electrodes",level:3},{value:"Option 2 - Measuring ECG using Heart BioAmp Band, a dry electrode based ECG band:",id:"option-2---measuring-ecg-using-heart-bioamp-band-a-dry-electrode-based-ecg-band",level:3},{value:"Step 6: Connections",id:"step-6-connections",level:2},{value:"Step 7: Download Arduino IDE",id:"step-7-download-arduino-ide",level:2},{value:"Step 8: Coding Time!",id:"step-8-coding-time",level:2},{value:"Step 9: Enjoy",id:"step-9-enjoy",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...a}=e;return(0,o.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"detecting-heart-beats-using-bioamp-exg-pill"},"Detecting Heart Beats Using BioAmp EXG Pill"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(26207).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"In this project we will be recording Heart Beats using BioAmp EXG Pill."),(0,o.kt)("h2",{id:"what-is-electrocardiography-ecg"},"What is Electrocardiography (ECG)?"),(0,o.kt)("p",null,"Electrocardiography is the measurement of electrical activity in the heart."),(0,o.kt)("h2",{id:"what-is-a-heartbeat"},"What is a heartbeat?"),(0,o.kt)("p",null,"Heartbeat is the contraction of your heart to pump blood to your lungs and the rest of your body. Your heart's electrical system determines how fast your heart beats."),(0,o.kt)("h3",{id:"about-bioamp-exg-pill"},"About BioAmp EXG Pill:"),(0,o.kt)("p",null,"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)."),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"supplies"},"Supplies"),(0,o.kt)("h3",{id:"hardware"},"HARDWARE:"),(0,o.kt)("p",null,"1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin)"),(0,o.kt)("p",null,"1 x BioAmp Cable"),(0,o.kt)("p",null,"3 x Gel Electrodes"),(0,o.kt)("p",null,"3 x Jumper Cables"),(0,o.kt)("p",null,"1 x Arduino Uno / Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC)"),(0,o.kt)("p",null,"1 x Nuprep Skin Preparation Gel"),(0,o.kt)("p",null,"1 x Wet wipe"),(0,o.kt)("p",null,"1 x Heart BioAmp Band (optional)"),(0,o.kt)("p",null,"1 x Electrode Gel (only if using Heart BioAmp Band)"),(0,o.kt)("h3",{id:"software"},"SOFTWARE:"),(0,o.kt)("p",null,"Arduino IDE"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("em",{parentName:"strong"},"Note:"))," You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below:"),(0,o.kt)("p",null,"DIY Neuroscience Kit Basic (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/"},"Upside Down Labs Store")," |\n",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ"},"Amazon Store"),")"),(0,o.kt)("p",null,"BioAmp EXG Pill Pack (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-sensor-for-ecg-emg-eog-or-eeg/"},"Tindie Store")," )"),(0,o.kt)("p",null,"BioAmp EXG Pill - EXG Explorer Pack (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," |\n",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-x2-sensor-for-ecg-emg-eog-eeg/"},"Tindie Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1&th=1"},"Amazon Store"),")"),(0,o.kt)("h2",{id:"step-1-assembly"},"Step 1: Assembly"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(18344).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-2-configuration-for-ecg"},"Step 2: Configuration for ECG"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(59578).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"BioAmp EXG Pill is by default configured for recording EEG or EOG but if you want to record good quality ECG or EMG, then it is recommended to configure it by making a solder joint as shown in the image above."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("em",{parentName:"strong"},"Note:"))," Even without making the solder joint the BioAmp EXG Pill is capable of recording ECG or EMG as well but the signals would be more accurate if you configure it."),(0,o.kt)("h2",{id:"step-3-connecting-electrode-cable"},"Step 3: Connecting Electrode Cable"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(70068).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-4-skin-preparation"},"Step 4: Skin Preparation"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(70070).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-5-electrode-placements"},"Step 5: Electrode Placements"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(65316).Z,width:"768",height:"432"})),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(23661).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"So now we have 2 options to measure the ECG signals, either using the gel electrodes or using dry electrode based ECG band. You can try both of them one by one."),(0,o.kt)("h3",{id:"option-1---measuring-ecg-using-gel-electrodes"},"Option 1 - Measuring ECG using Gel electrodes:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,o.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,o.kt)("li",{parentName:"ol"},"Place the IN- cable on the left side, IN+ in the middle and REF (reference) on the far right side as shown above.")),(0,o.kt)("h3",{id:"option-2---measuring-ecg-using-heart-bioamp-band-a-dry-electrode-based-ecg-band"},"Option 2 - Measuring ECG using Heart BioAmp Band, a dry electrode based ECG band:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Place the IN- cable on the left side, IN+ in the middle and REF (reference) on the far right side as shown above."),(0,o.kt)("li",{parentName:"ol"},"Now put a small drop of electrode gel on the dry electrodes between the skin and metallic part of BioAmp Cable to get the best results.")),(0,o.kt)("h2",{id:"step-6-connections"},"Step 6: Connections"),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(43366).Z,width:"1920",height:"1080"})),(0,o.kt)("p",null,"Connect BioAmp EXG Pill to Maker Uno using the jumper cables as directed below:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"VCC to 5V"),(0,o.kt)("li",{parentName:"ul"},"GND to GND"),(0,o.kt)("li",{parentName:"ul"},"OUT to A0")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("em",{parentName:"strong"},"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."),(0,o.kt)("p",null,"We specifically chose Maker Uno for this experinment as it is Arduino compatible board but has onboard LEDs and a buzzer."),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-7-download-arduino-ide"},"Step 7: Download Arduino IDE"),(0,o.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,o.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,o.kt)("p",null,"After downloading, connect the Maker Uno to your laptop using the USB Cable (Type A to Type B)"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("em",{parentName:"strong"},"Note:"))," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,o.kt)("h2",{id:"step-8-coding-time"},"Step 8: Coding Time!"),(0,o.kt)("p",null,"Copy paste the Arduino Sketch given below in Arduino IDE. "),(0,o.kt)("p",null,"HeartBeat Detection: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/HeartBeatDetection/HeartBeatDetection.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/HeartBeatDetection/HeartBeatDetection.ino")),(0,o.kt)("p",null,"After flashing the code, open the serial plotter to visualize the ECG signals."),(0,o.kt)("h2",{id:"step-9-enjoy"},"Step 9: Enjoy"),(0,o.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/uB5R-vGJjJo?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,o.kt)("p",null,"The project is complete!!"),(0,o.kt)("p",null,"Now you will be able to detect the heart beats on the serial plotter of Arduino IDE, LED of Maker Uno and the buzzer as shown in the video above."),(0,o.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,o.kt)("p",null,"You can also mail us at ",(0,o.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}u.isMDXComponent=!0},18344:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Assembly-f327d906751232e9cb07ecfa7a773993.jpg"},70068:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connecting Electrode Cable-d79f3b2fc5071c89187b77177d54b847.gif"},43366:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connections with Maker Uno-338f82f2d079845995535477de607bde.jpg"},70070:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Skin Preparation-9d106109d489b99cfd84a63be0ffe0d3.gif"},59578:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Solder Joint-3d4767b5960217bc887f5c7694f1d0d6.jpg"},26207:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Thumbnail-ca1629002db0c0e72401032a4edba25b.jpg"},23661:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Using ECG Band-5b77317a54e6c7b2740b40e4f066361c.gif"},65316:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Using Gel Electrodes-6b5d94aecafb01ac3eab7c7372954b67.gif"}}]); \ No newline at end of file diff --git a/assets/js/6f7196d7.ae35e4fb.js b/assets/js/6f7196d7.ae35e4fb.js new file mode 100644 index 00000000..229d3d5e --- /dev/null +++ b/assets/js/6f7196d7.ae35e4fb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5308],{3905:(e,t,i)=>{i.d(t,{Zo:()=>d,kt:()=>g});var o=i(67294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function r(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,o)}return i}function a(e){for(var t=1;t=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var s=o.createContext({}),p=function(e){var t=o.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):a(a({},t),e)),i},d=function(e){var t=p(e.components);return o.createElement(s.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var i=e.components,n=e.mdxType,r=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=p(i),m=n,g=c["".concat(s,".").concat(m)]||c[m]||u[m]||r;return i?o.createElement(g,a(a({ref:t},d),{},{components:i})):o.createElement(g,a({ref:t},d))}));function g(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=i.length,a=new Array(r);a[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:n,a[1]=l;for(var p=2;p{i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>p});var o=i(87462),n=(i(67294),i(3905));const r={sidebar_position:4},a="Record Publication Grade ECG at Your Home Using BioAmp EXG Pill",l={unversionedId:"Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill",id:"Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill",title:"Record Publication Grade ECG at Your Home Using BioAmp EXG Pill",description:"dodge gif",source:"@site/docs/Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill.md",sourceDirName:"Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill",slug:"/Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill/",permalink:"/docs/next/Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Getting Started!!",permalink:"/docs/next/Experiments/Getting Started/"},next:{title:"Detecting Heart Beats Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill/"}},s={},p=[{value:"What is Electrocardiography (ECG)?",id:"what-is-electrocardiography-ecg",level:2},{value:"About BioAmp EXG Pill:",id:"about-bioamp-exg-pill",level:3},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE:",id:"hardware",level:3},{value:"SOFTWARE:",id:"software",level:3},{value:"Step 1: Assembly",id:"step-1-assembly",level:2},{value:"Step 2: Configuration for ECG",id:"step-2-configuration-for-ecg",level:2},{value:"Step 3: Connecting Electrode Cable",id:"step-3-connecting-electrode-cable",level:2},{value:"Step 4: Skin Preparation",id:"step-4-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 5: Electrode Placements",id:"step-5-electrode-placements",level:2},{value:"Option 1 - Measuring ECG using Gel electrodes:",id:"option-1---measuring-ecg-using-gel-electrodes",level:3},{value:"Option 2 - Measuring ECG using Heart BioAmp Band, a dry electrode based ECG band:",id:"option-2---measuring-ecg-using-heart-bioamp-band-a-dry-electrode-based-ecg-band",level:3},{value:"Step 6: Connections",id:"step-6-connections",level:2},{value:"Step 7: Download Arduino IDE",id:"step-7-download-arduino-ide",level:2},{value:"Step 8: Coding Time!",id:"step-8-coding-time",level:2},{value:"Step 9: Enjoy!",id:"step-9-enjoy",level:2}],d={toc:p},c="wrapper";function u(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,o.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"record-publication-grade-ecg-at-your-home-using-bioamp-exg-pill"},"Record Publication Grade ECG at Your Home Using BioAmp EXG Pill"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"dodge gif",src:i(30344).Z,width:"768",height:"432"})),(0,n.kt)("p",null,"In this project we will be recording ECG using BioAmp EXG Pill."),(0,n.kt)("h2",{id:"what-is-electrocardiography-ecg"},"What is Electrocardiography (ECG)?"),(0,n.kt)("p",null,"Electrocardiography is the measurement of electrical activity in the heart."),(0,n.kt)("h3",{id:"about-bioamp-exg-pill"},"About BioAmp EXG Pill:"),(0,n.kt)("p",null,"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)."),(0,n.kt)("p",null,"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."),(0,n.kt)("h2",{id:"supplies"},"Supplies"),(0,n.kt)("h3",{id:"hardware"},"HARDWARE:"),(0,n.kt)("p",null,"1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin)"),(0,n.kt)("p",null,"1 x BioAmp Cable"),(0,n.kt)("p",null,"3 x Gel Electrodes"),(0,n.kt)("p",null,"3 x Jumper Cables"),(0,n.kt)("p",null,"1 x Arduino Uno / Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC)"),(0,n.kt)("p",null,"1 x Nuprep Skin Preparation Gel"),(0,n.kt)("p",null,"1 x Wet wipe"),(0,n.kt)("p",null,"1 x Heart BioAmp Band (optional)"),(0,n.kt)("p",null,"1 x Electrode Gel (only if using Heart BioAmp Band)"),(0,n.kt)("h3",{id:"software"},"SOFTWARE:"),(0,n.kt)("p",null,"Arduino IDE"),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},(0,n.kt)("em",{parentName:"strong"},"Note:"))," You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below:"),(0,n.kt)("p",null,"DIY Neuroscience Kit Basic (",(0,n.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/"},"Upside Down Labs Store")," |\n",(0,n.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," | ",(0,n.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ"},"Amazon Store"),")"),(0,n.kt)("p",null,"BioAmp EXG Pill Pack (",(0,n.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," | ",(0,n.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-sensor-for-ecg-emg-eog-or-eeg/"},"Tindie Store")," )"),(0,n.kt)("p",null,"BioAmp EXG Pill - EXG Explorer Pack (",(0,n.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," |\n",(0,n.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-x2-sensor-for-ecg-emg-eog-eeg/"},"Tindie Store")," | ",(0,n.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1&th=1"},"Amazon Store"),")"),(0,n.kt)("h2",{id:"step-1-assembly"},"Step 1: Assembly"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(6359).Z,width:"1920",height:"1080"})),(0,n.kt)("p",null,"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."),(0,n.kt)("h2",{id:"step-2-configuration-for-ecg"},"Step 2: Configuration for ECG"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(40929).Z,width:"1920",height:"1080"}),"\nBioAmp EXG Pill is by default configured for recording EEG or EOG but if you want to record good quality ECG or EMG, then it is recommended to configure it by making a solder joint as shown in the image above."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},(0,n.kt)("em",{parentName:"strong"},"Note:"))," Even without making the solder joint the BioAmp EXG Pill is capable of recording ECG or EMG as well but the signals would be more accurate if you configure it."),(0,n.kt)("h2",{id:"step-3-connecting-electrode-cable"},"Step 3: Connecting Electrode Cable"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"dodge gif",src:i(45764).Z,width:"768",height:"432"})),(0,n.kt)("p",null,"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."),(0,n.kt)("h2",{id:"step-4-skin-preparation"},"Step 4: Skin Preparation"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"dodge gif",src:i(62360).Z,width:"768",height:"432"})),(0,n.kt)("p",null,"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."),(0,n.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,n.kt)("p",null,"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."),(0,n.kt)("h2",{id:"step-5-electrode-placements"},"Step 5: Electrode Placements"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"dodge gif",src:i(79126).Z,width:"768",height:"432"})),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"dodge gif",src:i(42852).Z,width:"768",height:"432"})),(0,n.kt)("p",null,"So now we have 2 options to measure the ECG signals, either using the gel electrodes or using dry electrode based ECG band. You can try both of them one by one."),(0,n.kt)("h3",{id:"option-1---measuring-ecg-using-gel-electrodes"},"Option 1 - Measuring ECG using Gel electrodes:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,n.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,n.kt)("li",{parentName:"ol"},"Place the IN- cable on the left side, IN+ in the middle and REF (reference) on the far right side as shown above.")),(0,n.kt)("h3",{id:"option-2---measuring-ecg-using-heart-bioamp-band-a-dry-electrode-based-ecg-band"},"Option 2 - Measuring ECG using Heart BioAmp Band, a dry electrode based ECG band:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Place the IN- cable on the left side, IN+ in the middle and REF (reference) on the far right side as shown above."),(0,n.kt)("li",{parentName:"ol"},"Now put a small drop of electrode gel on the dry electrodes between the skin and metallic part of BioAmp Cable to get the best results.")),(0,n.kt)("h2",{id:"step-6-connections"},"Step 6: Connections"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(32392).Z,width:"1920",height:"1080"}),"\nConnect BioAmp EXG Pill to Maker Uno using the jumper cables as directed below:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"VCC to 5V"),(0,n.kt)("li",{parentName:"ul"},"GND to GND"),(0,n.kt)("li",{parentName:"ul"},"OUT to A0")),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},(0,n.kt)("em",{parentName:"strong"},"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."),(0,n.kt)("h2",{id:"step-7-download-arduino-ide"},"Step 7: Download Arduino IDE"),(0,n.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,n.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,n.kt)("p",null,"After downloading, connect the Maker Uno to your laptop using the USB Cable (Type A to Type B)"),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},(0,n.kt)("em",{parentName:"strong"},"Note:"))," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,n.kt)("h2",{id:"step-8-coding-time"},"Step 8: Coding Time!"),(0,n.kt)("p",null,"Copy paste the Arduino Sketch given below in Arduino IDE. "),(0,n.kt)("p",null,"ECG Filter: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/ECGFilter/ECGFilter.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/ECGFilter/ECGFilter.ino")),(0,n.kt)("p",null,"After flashing the code, open the serial plotter to visualize the ECG signals."),(0,n.kt)("h2",{id:"step-9-enjoy"},"Step 9: Enjoy!"),(0,n.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/l1Z8S0pUAvY?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,n.kt)("p",null,"The project is complete!!"),(0,n.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,n.kt)("p",null,"You can also mail us at ",(0,n.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}u.isMDXComponent=!0},6359:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/Assembly-f327d906751232e9cb07ecfa7a773993.jpg"},45764:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/Connecting Electrode Cable-d79f3b2fc5071c89187b77177d54b847.gif"},32392:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/Connections with Maker Uno-338f82f2d079845995535477de607bde.jpg"},62360:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/Skin Preparation-9d106109d489b99cfd84a63be0ffe0d3.gif"},40929:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/Solder Joint-3d4767b5960217bc887f5c7694f1d0d6.jpg"},30344:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/Thumbnail-c347dbd3253a9a35379183d8bdfeb465.gif"},42852:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/Using ECG Band-5b77317a54e6c7b2740b40e4f066361c.gif"},79126:(e,t,i)=>{i.d(t,{Z:()=>o});const o=i.p+"assets/images/Using Gel Electrodes-6b5d94aecafb01ac3eab7c7372954b67.gif"}}]); \ No newline at end of file diff --git a/assets/js/762116ea.c8daf180.js b/assets/js/762116ea.32d31713.js similarity index 89% rename from assets/js/762116ea.c8daf180.js rename to assets/js/762116ea.32d31713.js index aeecfa10..908eb168 100644 --- a/assets/js/762116ea.c8daf180.js +++ b/assets/js/762116ea.32d31713.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7765],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},s="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),s=p(r),m=o,y=s["".concat(l,".").concat(m)]||s[m]||f[m]||a;return r?n.createElement(y,c(c({ref:t},u),{},{components:r})):n.createElement(y,c({ref:t},u))}));function y(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,c=new Array(a);c[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[s]="string"==typeof e?e:o,c[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>f,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var n=r(87462),o=(r(67294),r(3905));const a={},c=void 0,i={permalink:"/blog/2023/05/10/patchy-launch",editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2023-05-10-patchy-launch/index.md",source:"@site/blog/2023-05-10-patchy-launch/index.md",title:"patchy-launch",description:"",date:"2023-05-10T00:00:00.000Z",formattedDate:"May 10, 2023",tags:[],readingTime:0,hasTruncateMarker:!1,authors:[],frontMatter:{},prevItem:{title:"new-code",permalink:"/blog/2023/05/10/new-code"},nextItem:{title:"Welcome",permalink:"/blog/welcome"}},l={authorsImageUrls:[]},p=[],u={toc:p},s="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(s,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7765],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},s="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),s=p(r),m=o,y=s["".concat(l,".").concat(m)]||s[m]||f[m]||a;return r?n.createElement(y,c(c({ref:t},u),{},{components:r})):n.createElement(y,c({ref:t},u))}));function y(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,c=new Array(a);c[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[s]="string"==typeof e?e:o,c[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>f,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var n=r(87462),o=(r(67294),r(3905));const a={},c=void 0,i={permalink:"/blog/2023/05/10/patchy-launch",editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2023-05-10-patchy-launch/index.md",source:"@site/blog/2023-05-10-patchy-launch/index.md",title:"patchy-launch",description:"",date:"2023-05-10T00:00:00.000Z",formattedDate:"May 10, 2023",tags:[],readingTime:0,hasTruncateMarker:!1,authors:[],frontMatter:{},prevItem:{title:"Soldering",permalink:"/blog/2023/05/10/Soldering"},nextItem:{title:"Welcome",permalink:"/blog/welcome"}},l={authorsImageUrls:[]},p=[],u={toc:p},s="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(s,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/814f3328.22cbdffc.js b/assets/js/814f3328.22cbdffc.js deleted file mode 100644 index ebac8261..00000000 --- a/assets/js/814f3328.22cbdffc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2535],{45641:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"new-code","permalink":"/blog/2023/05/10/new-code"},{"title":"patchy-launch","permalink":"/blog/2023/05/10/patchy-launch"},{"title":"Welcome","permalink":"/blog/welcome"},{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post"},{"title":"Long Blog Post","permalink":"/blog/long-blog-post"}]}')}}]); \ No newline at end of file diff --git a/assets/js/814f3328.a8981e01.js b/assets/js/814f3328.a8981e01.js new file mode 100644 index 00000000..841434e2 --- /dev/null +++ b/assets/js/814f3328.a8981e01.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2535],{45641:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Soldering","permalink":"/blog/2023/05/10/Soldering"},{"title":"patchy-launch","permalink":"/blog/2023/05/10/patchy-launch"},{"title":"Welcome","permalink":"/blog/welcome"},{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post"},{"title":"Long Blog Post","permalink":"/blog/long-blog-post"}]}')}}]); \ No newline at end of file diff --git a/assets/js/8efef98a.3f21aae7.js b/assets/js/8efef98a.164594a3.js similarity index 71% rename from assets/js/8efef98a.3f21aae7.js rename to assets/js/8efef98a.164594a3.js index fb26c970..33e798ff 100644 --- a/assets/js/8efef98a.3f21aae7.js +++ b/assets/js/8efef98a.164594a3.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[976],{45806:e=>{e.exports=JSON.parse('{"title":"Experiments","description":"Building HCI & BCI projects ussing BioAmp Hardware","slug":"/category/experiments","permalink":"/docs/next/category/experiments","navigation":{"previous":{"title":"LEDBarGraph","permalink":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/LEDBarGraph/"},"next":{"title":"Let\'s Get Started with Experiments!!","permalink":"/docs/next/Experiments/Getting Started/"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[976],{45806:e=>{e.exports=JSON.parse('{"title":"Experiments","description":"Building HCI & BCI projects ussing BioAmp Hardware","slug":"/category/experiments","permalink":"/docs/next/category/experiments","navigation":{"previous":{"title":"LEDBarGraph","permalink":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/LEDBarGraph/"},"next":{"title":"Getting Started!!","permalink":"/docs/next/Experiments/Getting Started/"}}}')}}]); \ No newline at end of file diff --git a/assets/js/8f8c9819.34294bce.js b/assets/js/8f8c9819.34294bce.js new file mode 100644 index 00000000..0bc5638d --- /dev/null +++ b/assets/js/8f8c9819.34294bce.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9596],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),c=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return o.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(n),m=r,h=d["".concat(s,".").concat(m)]||d[m]||u[m]||a;return n?o.createElement(h,i(i({ref:t},p),{},{components:n})):o.createElement(h,i({ref:t},p))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var o=n(87462),r=(n(67294),n(3905));const a={},i=void 0,l={permalink:"/blog/2023/05/10/Soldering",editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2023-05-10-Soldering.md",source:"@site/blog/2023-05-10-Soldering.md",title:"Soldering",description:"Soldering is one of the most fundamental skills needed to dabble in the world of electronics. The two go together like peas and carrots. And, although it is possible to learn about and build electronics without needing to pick up a soldering iron, you'll soon discover that a whole new world is opened with this one simple skill.",date:"2023-05-10T00:00:00.000Z",formattedDate:"May 10, 2023",tags:[],readingTime:1.375,hasTruncateMarker:!1,authors:[],frontMatter:{},nextItem:{title:"patchy-launch",permalink:"/blog/2023/05/10/patchy-launch"}},s={authorsImageUrls:[]},c=[{value:"Here's how soldering typically works:",id:"heres-how-soldering-typically-works",level:3}],p={toc:c},d="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,o.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Soldering is one of the most fundamental skills needed to dabble in the world of electronics. The two go together like peas and carrots. And, although it is possible to learn about and build electronics without needing to pick up a soldering iron, you'll soon discover that a whole new world is opened with this one simple skill."),(0,r.kt)("p",null,"Soldering is a process used in electronics and metalwork to join two or more pieces of metal together by melting a filler metal, called solder, which has a lower melting point than the pieces being joined. "),(0,r.kt)("h3",{id:"heres-how-soldering-typically-works"},"Here's how soldering typically works:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},"Preparation")),": The surfaces to be joined are cleaned and prepared to ensure a good connection. This often involves removing any oxidation or contaminants from the metal.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},"Heating")),": A soldering iron or soldering gun is used to heat the metal parts to be joined. The soldering tool reaches a temperature high enough to melt the solder but not so high that it damages the components or materials being soldered.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},"Application of Solder")),": When the metal surfaces are hot enough, the solder is applied to the joint. The solder melts and flows into the gap between the metal parts, forming a strong and electrically conductive bond when it cools and solidifies.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},"Cooling")),": As the solder cools and solidifies, it forms a solid connection, effectively joining the pieces of metal together."))),(0,r.kt)("p",null,"Soldering is commonly used in various applications, including assembling electronic circuits, repairing electrical connections, plumbing, jewelry making, and more. It is a fundamental technique in many industries that require precise and reliable metal connections."),(0,r.kt)("p",null,"Checkout the article to know more about Soldering"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://learn.sparkfun.com/tutorials/how-to-solder-through-hole-soldering/all"},"https://learn.sparkfun.com/tutorials/how-to-solder-through-hole-soldering/all")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/91fefcce.4317d2de.js b/assets/js/91fefcce.4317d2de.js new file mode 100644 index 00000000..ac121ac7 --- /dev/null +++ b/assets/js/91fefcce.4317d2de.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[464],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var r=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var l=r.createContext({}),c=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var a=e.components,i=e.mdxType,n=e.originalType,l=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=c(a),g=i,h=d["".concat(l,".").concat(g)]||d[g]||m[g]||n;return a?r.createElement(h,s(s({ref:t},p),{},{components:a})):r.createElement(h,s({ref:t},p))}));function h(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=a.length,s=new Array(n);s[0]=g;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[d]="string"==typeof e?e:i,s[1]=o;for(var c=2;c{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>n,metadata:()=>o,toc:()=>c});var r=a(87462),i=(a(67294),a(3905));const n={sidebar_position:2},s="DIY Muscle BioAmp Shield",o={unversionedId:"BioAmp-Hardware/DIYMuscleBioAmpShield",id:"BioAmp-Hardware/DIYMuscleBioAmpShield",title:"DIY Muscle BioAmp Shield",description:"All-in-one Arduino Uno Shield for EMG (Electromyography).",source:"@site/docs/BioAmp-Hardware/DIYMuscleBioAmpShield.md",sourceDirName:"BioAmp-Hardware",slug:"/BioAmp-Hardware/DIYMuscleBioAmpShield",permalink:"/docs/next/BioAmp-Hardware/DIYMuscleBioAmpShield",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/BioAmp-Hardware/DIYMuscleBioAmpShield.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"BioAmp EXG Pill",permalink:"/docs/next/BioAmp-Hardware/BioAmpEXGPill"},next:{title:"Muscle BioAmp Patchy",permalink:"/docs/next/BioAmp-Hardware/MuscleBioAmpPatchy"}},l={},c=[{value:"Overview",id:"overview",level:2},{value:"Features & Specifications",id:"features--specifications",level:2},{value:"Hardware",id:"hardware",level:2},{value:"Assemblying he Kit",id:"assemblying-he-kit",level:2},{value:"Using the Sensor",id:"using-the-sensor",level:2},{value:"Some project ideas",id:"some-project-ideas",level:2}],p={toc:c},d="wrapper";function m(e){let{components:t,...n}=e;return(0,i.kt)(d,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"diy-muscle-bioamp-shield"},"DIY Muscle BioAmp Shield"),(0,i.kt)("p",null,"All-in-one Arduino Uno Shield for EMG (Electromyography)."),(0,i.kt)("h2",{id:"overview"},"Overview"),(0,i.kt)("p",null,"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)."),(0,i.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/w8yw12SUe6Q",title:"Muscle BioAmp Shield v0.3 Unboxing | @Arduino Shield for EMG | Muscle Sensor | DIY Neuroscience",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,i.kt)("h2",{id:"features--specifications"},"Features & Specifications"),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Muscle BioAmp Shield",src:a(34497).Z,width:"1414",height:"2000"})),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"left"}),(0,i.kt)("th",{parentName:"tr",align:"left"}))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"left"},"Input Voltage"),(0,i.kt)("td",{parentName:"tr",align:"left"},"5V")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"left"},"Input Impedance"),(0,i.kt)("td",{parentName:"tr",align:"left"},"10^11 \u03a9")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"left"},"Fixed Gain"),(0,i.kt)("td",{parentName:"tr",align:"left"},"x2420")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"left"},"Bandpass filter"),(0,i.kt)("td",{parentName:"tr",align:"left"},"72 \u2013 720 Hz")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"left"},"Compatible Hardware"),(0,i.kt)("td",{parentName:"tr",align:"left"},"Arduino UNO")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"left"},"BioPotentials"),(0,i.kt)("td",{parentName:"tr",align:"left"},"EMG (Electromyography)")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"left"},"No. of channels"),(0,i.kt)("td",{parentName:"tr",align:"left"},"1")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"left"},"Electrodes"),(0,i.kt)("td",{parentName:"tr",align:"left"},"3 (Positive, Negative, and Reference)")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"left"},"Dimensions"),(0,i.kt)("td",{parentName:"tr",align:"left"},"6.0 x 5.3 cm")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"left"},"Open Source"),(0,i.kt)("td",{parentName:"tr",align:"left"},"Hardware + Software")))),(0,i.kt)("h2",{id:"hardware"},"Hardware"),(0,i.kt)("p",null,"Images below shows a quick overview of the hardware design."),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"center"},"PCB front"),(0,i.kt)("th",{parentName:"tr",align:"center"},"PCB back"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{alt:"Muscle BioAmp Shield",src:a(12860).Z,width:"2538",height:"2245"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{alt:"Muscle BioAmp Shield",src:a(38717).Z,width:"2517",height:"2227"}))))),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"With wires",src:a(77370).Z,width:"6028",height:"4817"}),"\n",(0,i.kt)("img",{alt:"Dimensions",src:a(51608).Z,width:"1073",height:"501"}),"\n",(0,i.kt)("img",{alt:"Schematic",src:a(61620).Z,width:"3507",height:"2480"})),(0,i.kt)("h2",{id:"assemblying-he-kit"},"Assemblying he Kit"),(0,i.kt)("p",null,"You can get your own Muscle BioAmp Shield bag of parts from ",(0,i.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-shield-v0-3/"},"our store")," or ",(0,i.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-shield-v03-arduino-shield-for-emg/"},"Tindie")," and for assembling your shield you can take a look at ",(0,i.kt)("a",{parentName:"p",href:"https://upsidedownlabs.github.io/DIY-Muscle-BioAmp-Shield/"},"this interactive BOM")," or the step by step guide below. "),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 1 - Bare board"),(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 2 - 1M Resistors"),(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 3 - 330R Resistors"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(23296).Z,width:"900",height:"780"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(18619).Z,width:"900",height:"780"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(35160).Z,width:"900",height:"780"}))))),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 4 - 10K Resistors"),(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 5 - 22K Resistors"),(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 6 - 1K Resistors"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(8042).Z,width:"900",height:"780"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(55211).Z,width:"900",height:"780"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(37886).Z,width:"900",height:"780"}))))),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 7 - 220K Resistors"),(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 8 - 1nF Capacitors"),(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 9 - 100nF Capacitors"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(14371).Z,width:"900",height:"780"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(97655).Z,width:"900",height:"780"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(85290).Z,width:"900",height:"780"}))))),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 10 - 100pF Capacitors"),(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 11 - Servo Header Pin"),(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 12 - Buttons"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(61481).Z,width:"900",height:"780"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(81889).Z,width:"900",height:"780"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(39808).Z,width:"900",height:"780"}))))),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 13 - Optoisolator"),(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 14 - Angled JST Connectors"),(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 15 - Straight JST Connectors"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(70652).Z,width:"900",height:"780"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(76768).Z,width:"900",height:"780"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(50304).Z,width:"900",height:"780"}))))),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 16 - IC Socket"),(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 17 - IC"),(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 18 - LEDs"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(47987).Z,width:"900",height:"780"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(13582).Z,width:"900",height:"780"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(37662).Z,width:"900",height:"780"}))))),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 19 - 3.5mm Headphone Jack"),(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 20 - 2.2uF Capacitor"),(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 21 - 1uF Capacitor"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(20340).Z,width:"900",height:"780"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(86864).Z,width:"900",height:"780"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(66869).Z,width:"900",height:"780"}))))),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 22 - 470uF Capacitors"),(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 23 - Shield Header Pins"),(0,i.kt)("th",{parentName:"tr",align:"center"},"Step 24 - Shield Ready"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(84597).Z,width:"900",height:"780"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(67336).Z,width:"900",height:"780"})),(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("img",{src:a(64339).Z,width:"900",height:"780"}))))),(0,i.kt)("p",null,"Still can't figure out the assembly? You can follow the video provided below to assemble your Shield."),(0,i.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/dcuCihh3yn4",title:"Muscle BioAmp Shield v0.3: Assembly Guide | EMG Shield for @Arduino Uno | Muscle Sensor",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,i.kt)("h2",{id:"using-the-sensor"},"Using the Sensor"),(0,i.kt)("p",null,"The possibilities are endless as you can:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Visualize the EMG signals using the 6-onboard LEDs. The more you flex, the more LEDs will glow up.\n",(0,i.kt)("img",{alt:"LED bar graph",src:a(33705).Z,width:"768",height:"432"}))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Directly connect the servo motor via 3-pin angled header pins and control it using muscle signals (EMG).\n",(0,i.kt)("img",{alt:"Servo motor",src:a(24976).Z,width:"768",height:"432"}))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"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."),(0,i.kt)("p",{parentName:"li"},(0,i.kt)("img",{alt:"Listening signals",src:a(6118).Z,width:"768",height:"432"}))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Connect a 7V to 9V battery via snap cable.\n",(0,i.kt)("img",{alt:"9V snap",src:a(13811).Z,width:"768",height:"432"}))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"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.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Listen to your muscle signals using wired headphones/earphones connected to a 3.5mm headphone jack.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Connect hundreds of devices like OLED screens, character displays, temperature sensors, accelerometers, BioAmp Hardware, and much more using the two I2C interfaces.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Connect Arduino Uno's D6 digital I/O pins and A2 analog input pins using STEMMA digital and STEMMA analog connectors respectively.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Program the 2 user buttons according to your project requirements."))),(0,i.kt)("h2",{id:"some-project-ideas"},"Some project ideas"),(0,i.kt)("p",null,"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:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Controlling a Dino Game using your muscle signals (EMG)")),(0,i.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/66VOVqrFLoQ",title:"Controlling Dino Game using Muscle Signals (EMG) | Muscle BioAmp Shield v0.3 | DIY Neuroscience",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,i.kt)("ol",{start:2},(0,i.kt)("li",{parentName:"ol"},"Scrolling Instagram Reels/YouTube Shorts by using your muscle signals (EMG)")),(0,i.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/ZzhrNyndky4",title:"Scrolling Instagram Reels or YouTube Shorts using muscle signals (EMG) | BioAmp Hardware | @Arduino",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,i.kt)("ol",{start:3},(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/docs/next/Experiments/EMG%20Experiments/Making%20a%20Muscle%20Strength%20Game%20Using%20Muscle%20BioAmp%20Shield%20&%20Arduino%20Uno/"},"Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno"))),(0,i.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/bSfTnFcCHYM?feature=oembed&enablejsapi=1&origin=https://www.instructables.com",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,i.kt)("ol",{start:4},(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/docs/next/Experiments/EMG%20Experiments/BisCute%20Visualize%20EMG/Record,%20Visualize%20&%20Listen%20to%20Muscle%20Signals%20Using%20Muscle%20BioAmp%20Shield"},"Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield"))),(0,i.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/kgvK51UIXdo?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,i.kt)("ol",{start:5},(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/docs/next/Experiments/EMG%20Experiments/Controlling%20Servo%20Claw%20With%20Muscle%20Signals%20Using%20Muscle%20BioAmp%20Shield/"},"Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield"))),(0,i.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/kgvK51UIXdo?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}))}m.isMDXComponent=!0},13811:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/9V battery-0a125a82eee2db88d97d70c19ffb36a5.gif"},23296:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/01_Bare_Board-e9e8e44914188b2bdadccb79387fda9b.jpg"},18619:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/02_1M_Resistors-45da1d8481c5a1d3a59ccd360013c65b.jpg"},35160:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/03_330R_Resistors-2ea8a67a9c22133b3464e14c482a0aae.jpg"},8042:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/04_10K_Resistors-3595e7ef8f41333e796289f281b17309.jpg"},55211:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/05_22K_Resistors-0aede182eee80a66fbff058f3e54c5a9.jpg"},37886:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/06_1K_Resistors-8a8a4d3087b927031fbdccbd6cdc01f7.jpg"},14371:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/07_220K_Resistors-368671c7ec6f62df88e98b99037cc085.jpg"},97655:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/08_1nF_Capacitors-fa27452e37fb65fbc52e57704899f58b.jpg"},85290:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/09_100nF_Capacitors-325d549a987d61a98d12da5da119666f.jpg"},61481:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/10_100pF_Capacitors-80bbe935c46b78bc904492fb7b49eff3.jpg"},81889:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/11_Angled_Header_Pins-0ec84cdd2e5a2cfdf82bcd820ac3e025.jpg"},39808:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/12_5x5mm_Buttons-b1a37912cc71d30e647733f4ef8cd088.jpg"},70652:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/13_OptoIsolator-c4077e224d0cb5b0040d00e1d4eb15f9.jpg"},76768:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/14_JST_PH_Angled_Connectors-b38bc288469b8d170d2ca2ce5882e5d9.jpg"},50304:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/15_JST_PH_Straight_Connectors-5860b66f44183810458f35ecf68b781f.jpg"},47987:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/16_IC_Socket-bf3d93986f43d2ce6a91a5f8854e46f8.jpg"},13582:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/17_IC-c48f9d9298aaeda9246f6c9aecf2e59a.jpg"},37662:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/18_LEDs-dc84c481ed2ca32bba5a7798e5d0f2ed.jpg"},20340:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/19_3.5mm_Headphone_Jack-3e0384d77932f35b87cca83d45776450.jpg"},86864:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/20_2.2uF_Capacitor-5e5780180bb893ab5c8ab1ccacfbb722.jpg"},66869:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/21_1uF_Capacitor-fabfa7138b4223de62a98848f4c6453f.jpg"},84597:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/22_470uF_Capacitor-649a90e80f31994b7e0dd59dd74c1ae8.jpg"},67336:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/23_Header_Pins-a3ba782413ec3b1990af9517f36eb0d7.jpg"},64339:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/24_Assembled-430833215eda494f0827d8471ac14d5d.jpg"},33705:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/LEDGraph-7745bf991b68ded57273e56611984cc7.gif"},38717:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle-BioAmp-Shield-Back-1d6ae6f5d0c02b0c65f025b962cd1d27.png"},12860:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle-BioAmp-Shield-Front-4f2aa96bac687a3dfb4528d744207d39.png"},77370:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle-BioAmp-Shield-With-Wires-305842639c3e7eba195e343038212751.png"},61620:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Schematic-180460c89bfcea78dbf955e5a90245b5.png"},24976:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Servo control-a1c5791c4a3c448b19dcf8cb6d344e02.gif"},34497:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Shield v0.3 Pamphlet-ff6da385a97ce49c59095a6697f58e87.jpg"},51608:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/dimensions-3e892167e8bffbe8d09a8d9a2ce30eeb.png"},6118:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/listening muscle signals-66af3d0ca82d2f360f9700a89a5504ec.gif"}}]); \ No newline at end of file diff --git a/assets/js/91fefcce.f32009a2.js b/assets/js/91fefcce.f32009a2.js deleted file mode 100644 index 1a67d38e..00000000 --- a/assets/js/91fefcce.f32009a2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[464],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),p=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},c=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,l=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=p(a),g=n,h=d["".concat(l,".").concat(g)]||d[g]||m[g]||i;return a?r.createElement(h,s(s({ref:t},c),{},{components:a})):r.createElement(h,s({ref:t},c))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,s=new Array(i);s[0]=g;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[d]="string"==typeof e?e:n,s[1]=o;for(var p=2;p{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const i={sidebar_position:2},s="DIY Muscle BioAmp Shield",o={unversionedId:"BioAmp-Hardware/DIYMuscleBioAmpShield",id:"BioAmp-Hardware/DIYMuscleBioAmpShield",title:"DIY Muscle BioAmp Shield",description:"All-in-one Arduino Uno Shield for EMG (Electromyography).",source:"@site/docs/BioAmp-Hardware/DIYMuscleBioAmpShield.md",sourceDirName:"BioAmp-Hardware",slug:"/BioAmp-Hardware/DIYMuscleBioAmpShield",permalink:"/docs/next/BioAmp-Hardware/DIYMuscleBioAmpShield",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/BioAmp-Hardware/DIYMuscleBioAmpShield.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"BioAmp EXG Pill",permalink:"/docs/next/BioAmp-Hardware/BioAmpEXGPill"},next:{title:"Muscle BioAmp Patchy",permalink:"/docs/next/BioAmp-Hardware/MuscleBioAmpPatchy"}},l={},p=[{value:"Overview",id:"overview",level:2},{value:"Features & Specifications",id:"features--specifications",level:2},{value:"Hardware",id:"hardware",level:2},{value:"Assemblying he Kit",id:"assemblying-he-kit",level:2},{value:"Using the Sensor",id:"using-the-sensor",level:2},{value:"Some project ideas",id:"some-project-ideas",level:2}],c={toc:p},d="wrapper";function m(e){let{components:t,...i}=e;return(0,n.kt)(d,(0,r.Z)({},c,i,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"diy-muscle-bioamp-shield"},"DIY Muscle BioAmp Shield"),(0,n.kt)("p",null,"All-in-one Arduino Uno Shield for EMG (Electromyography)."),(0,n.kt)("h2",{id:"overview"},"Overview"),(0,n.kt)("p",null,"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)."),(0,n.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/w8yw12SUe6Q",title:"Muscle BioAmp Shield v0.3 Unboxing | @Arduino Shield for EMG | Muscle Sensor | DIY Neuroscience",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,n.kt)("h2",{id:"features--specifications"},"Features & Specifications"),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Muscle BioAmp Shield",src:a(34497).Z,width:"1414",height:"2000"})),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"}),(0,n.kt)("th",{parentName:"tr",align:"left"}))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Input Voltage"),(0,n.kt)("td",{parentName:"tr",align:"left"},"5V")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Input Impedance"),(0,n.kt)("td",{parentName:"tr",align:"left"},"10^11 \u03a9")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Fixed Gain"),(0,n.kt)("td",{parentName:"tr",align:"left"},"x2420")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Bandpass filter"),(0,n.kt)("td",{parentName:"tr",align:"left"},"72 \u2013 720 Hz")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Compatible Hardware"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Arduino UNO")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BioPotentials"),(0,n.kt)("td",{parentName:"tr",align:"left"},"EMG (Electromyography)")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"No. of channels"),(0,n.kt)("td",{parentName:"tr",align:"left"},"1")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Electrodes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"3 (Positive, Negative, and Reference)")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Dimensions"),(0,n.kt)("td",{parentName:"tr",align:"left"},"6.0 x 5.3 cm")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Open Source"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Hardware + Software")))),(0,n.kt)("h2",{id:"hardware"},"Hardware"),(0,n.kt)("p",null,"Images below shows a quick overview of the hardware design."),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"center"},"PCB front"),(0,n.kt)("th",{parentName:"tr",align:"center"},"PCB back"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{alt:"Muscle BioAmp Shield",src:a(12860).Z,width:"2538",height:"2245"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{alt:"Muscle BioAmp Shield",src:a(38717).Z,width:"2517",height:"2227"}))))),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"With wires",src:a(77370).Z,width:"6028",height:"4817"}),"\n",(0,n.kt)("img",{alt:"Dimensions",src:a(51608).Z,width:"1073",height:"501"}),"\n",(0,n.kt)("img",{alt:"Schematic",src:a(61620).Z,width:"3507",height:"2480"})),(0,n.kt)("h2",{id:"assemblying-he-kit"},"Assemblying he Kit"),(0,n.kt)("p",null,"You can get your own Muscle BioAmp Shield bag of parts from ",(0,n.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-shield-v0-3/"},"our store")," or ",(0,n.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-shield-v03-arduino-shield-for-emg/"},"Tindie")," and for assembling your shield you can take a look at ",(0,n.kt)("a",{parentName:"p",href:"https://upsidedownlabs.github.io/DIY-Muscle-BioAmp-Shield/"},"this interactive BOM")," or the step by step guide below. "),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 1 - Bare board"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 2 - 1M Resistors"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 3 - 330R Resistors"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(23296).Z,width:"900",height:"780"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(18619).Z,width:"900",height:"780"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(35160).Z,width:"900",height:"780"}))))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 4 - 10K Resistors"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 5 - 22K Resistors"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 6 - 1K Resistors"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(8042).Z,width:"900",height:"780"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(55211).Z,width:"900",height:"780"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(37886).Z,width:"900",height:"780"}))))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 7 - 220K Resistors"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 8 - 1nF Capacitors"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 9 - 100nF Capacitors"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(14371).Z,width:"900",height:"780"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(97655).Z,width:"900",height:"780"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(85290).Z,width:"900",height:"780"}))))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 10 - 100pF Capacitors"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 11 - Servo Header Pin"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 12 - Buttons"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(61481).Z,width:"900",height:"780"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(81889).Z,width:"900",height:"780"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(39808).Z,width:"900",height:"780"}))))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 13 - Optoisolator"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 14 - Angled JST Connectors"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 15 - Straight JST Connectors"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(70652).Z,width:"900",height:"780"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(76768).Z,width:"900",height:"780"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(50304).Z,width:"900",height:"780"}))))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 16 - IC Socket"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 17 - IC"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 18 - LEDs"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(47987).Z,width:"900",height:"780"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(13582).Z,width:"900",height:"780"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(37662).Z,width:"900",height:"780"}))))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 19 - 3.5mm Headphone Jack"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 20 - 2.2uF Capacitor"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 21 - 1uF Capacitor"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(20340).Z,width:"900",height:"780"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(86864).Z,width:"900",height:"780"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(66869).Z,width:"900",height:"780"}))))),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 22 - 470uF Capacitors"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 23 - Shield Header Pins"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Step 24 - Shield Ready"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(84597).Z,width:"900",height:"780"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(67336).Z,width:"900",height:"780"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{src:a(64339).Z,width:"900",height:"780"}))))),(0,n.kt)("p",null,"Still can't figure out the assembly? You can follow the video provided below to assemble your Shield."),(0,n.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/dcuCihh3yn4",title:"Muscle BioAmp Shield v0.3: Assembly Guide | EMG Shield for @Arduino Uno | Muscle Sensor",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,n.kt)("h2",{id:"using-the-sensor"},"Using the Sensor"),(0,n.kt)("p",null,"The possibilities are endless as you can:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Visualize the EMG signals using the 6-onboard LEDs. The more you flex, the more LEDs will glow up.\n",(0,n.kt)("img",{alt:"LED bar graph",src:a(33705).Z,width:"768",height:"432"}))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Directly connect the servo motor via 3-pin angled header pins and control it using muscle signals (EMG).\n",(0,n.kt)("img",{alt:"Servo motor",src:a(24976).Z,width:"768",height:"432"}))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"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."),(0,n.kt)("p",{parentName:"li"},(0,n.kt)("img",{alt:"Listening signals",src:a(6118).Z,width:"768",height:"432"}))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Connect a 7V to 9V battery via snap cable.\n",(0,n.kt)("img",{alt:"9V snap",src:a(13811).Z,width:"768",height:"432"}))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"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.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Listen to your muscle signals using wired headphones/earphones connected to a 3.5mm headphone jack.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Connect hundreds of devices like OLED screens, character displays, temperature sensors, accelerometers, BioAmp Hardware, and much more using the two I2C interfaces.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Connect Arduino Uno's D6 digital I/O pins and A2 analog input pins using STEMMA digital and STEMMA analog connectors respectively.")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Program the 2 user buttons according to your project requirements."))),(0,n.kt)("h2",{id:"some-project-ideas"},"Some project ideas"),(0,n.kt)("p",null,"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:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Controlling a Dino Game using your muscle signals (EMG)")),(0,n.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/66VOVqrFLoQ",title:"Controlling Dino Game using Muscle Signals (EMG) | Muscle BioAmp Shield v0.3 | DIY Neuroscience",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,n.kt)("ol",{start:2},(0,n.kt)("li",{parentName:"ol"},"Scrolling Instagram Reels/YouTube Shorts by using your muscle signals (EMG)")),(0,n.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/ZzhrNyndky4",title:"Scrolling Instagram Reels or YouTube Shorts using muscle signals (EMG) | BioAmp Hardware | @Arduino",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}))}m.isMDXComponent=!0},13811:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/9V battery-0a125a82eee2db88d97d70c19ffb36a5.gif"},23296:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/01_Bare_Board-e9e8e44914188b2bdadccb79387fda9b.jpg"},18619:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/02_1M_Resistors-45da1d8481c5a1d3a59ccd360013c65b.jpg"},35160:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/03_330R_Resistors-2ea8a67a9c22133b3464e14c482a0aae.jpg"},8042:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/04_10K_Resistors-3595e7ef8f41333e796289f281b17309.jpg"},55211:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/05_22K_Resistors-0aede182eee80a66fbff058f3e54c5a9.jpg"},37886:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/06_1K_Resistors-8a8a4d3087b927031fbdccbd6cdc01f7.jpg"},14371:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/07_220K_Resistors-368671c7ec6f62df88e98b99037cc085.jpg"},97655:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/08_1nF_Capacitors-fa27452e37fb65fbc52e57704899f58b.jpg"},85290:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/09_100nF_Capacitors-325d549a987d61a98d12da5da119666f.jpg"},61481:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/10_100pF_Capacitors-80bbe935c46b78bc904492fb7b49eff3.jpg"},81889:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/11_Angled_Header_Pins-0ec84cdd2e5a2cfdf82bcd820ac3e025.jpg"},39808:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/12_5x5mm_Buttons-b1a37912cc71d30e647733f4ef8cd088.jpg"},70652:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/13_OptoIsolator-c4077e224d0cb5b0040d00e1d4eb15f9.jpg"},76768:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/14_JST_PH_Angled_Connectors-b38bc288469b8d170d2ca2ce5882e5d9.jpg"},50304:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/15_JST_PH_Straight_Connectors-5860b66f44183810458f35ecf68b781f.jpg"},47987:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/16_IC_Socket-bf3d93986f43d2ce6a91a5f8854e46f8.jpg"},13582:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/17_IC-c48f9d9298aaeda9246f6c9aecf2e59a.jpg"},37662:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/18_LEDs-dc84c481ed2ca32bba5a7798e5d0f2ed.jpg"},20340:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/19_3.5mm_Headphone_Jack-3e0384d77932f35b87cca83d45776450.jpg"},86864:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/20_2.2uF_Capacitor-5e5780180bb893ab5c8ab1ccacfbb722.jpg"},66869:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/21_1uF_Capacitor-fabfa7138b4223de62a98848f4c6453f.jpg"},84597:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/22_470uF_Capacitor-649a90e80f31994b7e0dd59dd74c1ae8.jpg"},67336:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/23_Header_Pins-a3ba782413ec3b1990af9517f36eb0d7.jpg"},64339:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/24_Assembled-430833215eda494f0827d8471ac14d5d.jpg"},33705:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/LEDGraph-7745bf991b68ded57273e56611984cc7.gif"},38717:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle-BioAmp-Shield-Back-1d6ae6f5d0c02b0c65f025b962cd1d27.png"},12860:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle-BioAmp-Shield-Front-4f2aa96bac687a3dfb4528d744207d39.png"},77370:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle-BioAmp-Shield-With-Wires-305842639c3e7eba195e343038212751.png"},61620:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Schematic-180460c89bfcea78dbf955e5a90245b5.png"},24976:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Servo control-a1c5791c4a3c448b19dcf8cb6d344e02.gif"},34497:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Shield v0.3 Pamphlet-ff6da385a97ce49c59095a6697f58e87.jpg"},51608:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/dimensions-3e892167e8bffbe8d09a8d9a2ce30eeb.png"},6118:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/listening muscle signals-66af3d0ca82d2f360f9700a89a5504ec.gif"}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.a611b8e0.js b/assets/js/935f2afb.a611b8e0.js new file mode 100644 index 00000000..cfbd3411 --- /dev/null +++ b/assets/js/935f2afb.a611b8e0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":"unreleased","badge":true,"noIndex":false,"className":"docs-version-current","isLast":false,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"BioAmp Hardware","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"BioAmp EXG Pill","href":"/docs/next/BioAmp-Hardware/BioAmpEXGPill","docId":"BioAmp-Hardware/BioAmpEXGPill"},{"type":"link","label":"DIY Muscle BioAmp Shield","href":"/docs/next/BioAmp-Hardware/DIYMuscleBioAmpShield","docId":"BioAmp-Hardware/DIYMuscleBioAmpShield"},{"type":"link","label":"Muscle BioAmp Patchy","href":"/docs/next/BioAmp-Hardware/MuscleBioAmpPatchy","docId":"BioAmp-Hardware/MuscleBioAmpPatchy"},{"type":"link","label":"Muscle BioAmp Candy","href":"/docs/next/BioAmp-Hardware/MuscleBioAmpCandy","docId":"BioAmp-Hardware/MuscleBioAmpCandy"},{"type":"link","label":"Muscle BioAmp BisCute","href":"/docs/next/BioAmp-Hardware/MuscleBioAmpBisCute","docId":"BioAmp-Hardware/MuscleBioAmpBisCute"}],"href":"/docs/next/category/bioamp-hardware"},{"type":"category","label":"BioAmp Software","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"intro","href":"/docs/next/BioAmp-Software/intro","docId":"BioAmp-Software/intro"},{"type":"category","label":"Brain-BioAmp-Arduino-Firmware","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"FixedSampling","href":"/docs/next/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/FixedSampling/","docId":"BioAmp-Software/Brain-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling"},{"type":"link","label":"EEGFilter","href":"/docs/next/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/EEGFilter/","docId":"BioAmp-Software/Brain-BioAmp-Arduino-Firmware/EEGFilter/EEGFilter"}]},{"type":"category","label":"Eye-BioAmp-Arduino-Firmware","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"FixedSampling","href":"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/FixedSampling/","docId":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling"},{"type":"link","label":"EOGFilter","href":"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGFilter/","docId":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGFilter/EOGFilter"},{"type":"link","label":"DrowsinessDetection","href":"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/DrowsinessDetection/","docId":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/DrowsinessDetection/DrowsinessDetection"},{"type":"link","label":"EOGPhotoCaptureBLE","href":"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGPhotoCaptureBLE/","docId":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGPhotoCaptureBLE/EOGPhotoCaptureBLE"},{"type":"link","label":"EyeBlinkDetection","href":"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EyeBlinkDetection/","docId":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EyeBlinkDetection/EyeBlinkDetection"}]},{"type":"category","label":"Heart-BioAmp-Arduino-Firmware","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"FixedSampling","href":"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/FixedSampling/","docId":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling"},{"type":"link","label":"ECGFilter","href":"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/ECGFilter/","docId":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/ECGFilter/ECGFilter"},{"type":"link","label":"HeartRateDetection","href":"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartRateDetection/","docId":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartRateDetection/HeartRateDetection"},{"type":"category","label":"HeartBeatDetection","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"HeartBeatDetection","href":"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartBeatDetection/HeartBeatDetection","docId":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartBeatDetection/HeartBeatDetection"}]},{"type":"link","label":"BLEHeartRateDetection","href":"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/BLEHeartRateDetection/","docId":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/BLEHeartRateDetection/BLEHeartRateDetection"}]},{"type":"category","label":"Muscle-BioAmp-Arduino-Firmware","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"FixedSampling","href":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/FixedSampling/","docId":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling"},{"type":"link","label":"EMGFilter","href":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGFilter/","docId":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGFilter/EMGFilter"},{"type":"link","label":"EMGEnvelope","href":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGEnvelope/","docId":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGEnvelope/EMGEnvelope"},{"type":"link","label":"ClawController","href":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ClawController/","docId":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ClawController/ClawController"},{"type":"link","label":"ServoControl","href":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ServoControl/","docId":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ServoControl/ServoControl"},{"type":"link","label":"LEDBarGraph","href":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/LEDBarGraph/","docId":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/LEDBarGraph/LEDBarGraph"}]}],"href":"/docs/next/category/bioamp-software"},{"type":"category","label":"Experiments","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Getting Started!!","href":"/docs/next/Experiments/Getting Started/","docId":"Experiments/Getting Started/Getting Started"},{"type":"category","label":"ECG Experiments","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Record Publication Grade ECG at Your Home Using BioAmp EXG Pill","href":"/docs/next/Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill/","docId":"Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill"},{"type":"link","label":"Detecting Heart Beats Using BioAmp EXG Pill","href":"/docs/next/Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill/","docId":"Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill/Detecting Heart Beats Using BioAmp EXG Pill"},{"type":"link","label":"Measuring Heart Rate Using BioAmp EXG Pill","href":"/docs/next/Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill/","docId":"Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill/Measuring Heart Rate Using BioAmp EXG Pill"}]},{"type":"category","label":"EEG Experiments","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill","href":"/docs/next/Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments","docId":"Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments"}]},{"type":"link","label":"Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill","href":"/docs/next/Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill/","docId":"Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill"}]},{"type":"category","label":"EMG Experiments","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Visualizing Muscle Signals (EMG)","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Using Muscle BioAmp Patchy (wearable Muscle Sensor)","href":"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1","docId":"Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1"},{"type":"link","label":"Using Muscle BioAmp Candy (Candy Size Muscle Sensor)","href":"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG","docId":"Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG"},{"type":"link","label":"Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield","href":"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield","docId":"Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield"}],"href":"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/"},{"type":"link","label":"Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield","href":"/docs/next/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/","docId":"Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield"},{"type":"link","label":"Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno","href":"/docs/next/Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno/","docId":"Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno"}]},{"type":"category","label":"EOG Experiments","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill","href":"/docs/next/Experiments/EOG Experiments/EOG EXPERIMENT/","docId":"Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment"},{"type":"link","label":"Eye Blink Detection by Recording EOG Using BioAmp EXG Pill","href":"/docs/next/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/","docId":"Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection"},{"type":"link","label":"Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill","href":"/docs/next/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/","docId":"Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill"}]}],"href":"/docs/next/category/experiments"},{"type":"category","label":"Tutorial - Basics","collapsible":true,"collapsed":true,"className":"hidden","items":[{"type":"link","label":"Create a Page","href":"/docs/next/tutorial-basics/create-a-page","docId":"tutorial-basics/create-a-page"},{"type":"link","label":"Create a Document","href":"/docs/next/tutorial-basics/create-a-document","docId":"tutorial-basics/create-a-document"},{"type":"link","label":"Create a Blog Post","href":"/docs/next/tutorial-basics/create-a-blog-post","docId":"tutorial-basics/create-a-blog-post"},{"type":"link","label":"Markdown Features","href":"/docs/next/tutorial-basics/markdown-features","docId":"tutorial-basics/markdown-features"},{"type":"link","label":"Deploy your site","href":"/docs/next/tutorial-basics/deploy-your-site","docId":"tutorial-basics/deploy-your-site"},{"type":"link","label":"Congratulations!","href":"/docs/next/tutorial-basics/congratulations","docId":"tutorial-basics/congratulations"}],"href":"/docs/next/category/tutorial---basics"},{"type":"link","label":"Tutorial Intro","href":"/docs/next/intro","className":"hidden","docId":"intro"},{"type":"category","label":"Tutorial - Extras","collapsible":true,"collapsed":true,"className":"hidden","items":[{"type":"link","label":"Manage Docs Versions","href":"/docs/next/tutorial-extras/manage-docs-versions","docId":"tutorial-extras/manage-docs-versions"},{"type":"link","label":"Translate your site","href":"/docs/next/tutorial-extras/translate-your-site","docId":"tutorial-extras/translate-your-site"}],"href":"/docs/next/category/tutorial---extras"}]},"docs":{"BioAmp-Hardware/BioAmpEXGPill":{"id":"BioAmp-Hardware/BioAmpEXGPill","title":"BioAmp EXG Pill","description":"Professional-grade analog front-end amplification for ECG, EMG, EOG, and EEG biosensing on one tiny board","sidebar":"tutorialSidebar"},"BioAmp-Hardware/DIYMuscleBioAmpShield":{"id":"BioAmp-Hardware/DIYMuscleBioAmpShield","title":"DIY Muscle BioAmp Shield","description":"All-in-one Arduino Uno Shield for EMG (Electromyography).","sidebar":"tutorialSidebar"},"BioAmp-Hardware/MuscleBioAmpBisCute":{"id":"BioAmp-Hardware/MuscleBioAmpBisCute","title":"Muscle BioAmp BisCute","description":"Most affordable DIY Electromyography (EMG) sensor","sidebar":"tutorialSidebar"},"BioAmp-Hardware/MuscleBioAmpCandy":{"id":"BioAmp-Hardware/MuscleBioAmpCandy","title":"Muscle BioAmp Candy","description":"Candy-size affordable muscle sensor for precise EMG sensing","sidebar":"tutorialSidebar"},"BioAmp-Hardware/MuscleBioAmpPatchy":{"id":"BioAmp-Hardware/MuscleBioAmpPatchy","title":"Muscle BioAmp Patchy","description":"Wearable ElectroMyoGraphy (EMG) sensor","sidebar":"tutorialSidebar"},"BioAmp-Software/Brain-BioAmp-Arduino-Firmware/EEGFilter/EEGFilter":{"id":"BioAmp-Software/Brain-BioAmp-Arduino-Firmware/EEGFilter/EEGFilter","title":"EEGFilter","description":"EEG Filter - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Brain-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling":{"id":"BioAmp-Software/Brain-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling","title":"FixedSampling","description":"Fixed Sampling - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/DrowsinessDetection/DrowsinessDetection":{"id":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/DrowsinessDetection/DrowsinessDetection","title":"DrowsinessDetection","description":"Drowsiness Detection - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGFilter/EOGFilter":{"id":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGFilter/EOGFilter","title":"EOGFilter","description":"EOG Filter - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGPhotoCaptureBLE/EOGPhotoCaptureBLE":{"id":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGPhotoCaptureBLE/EOGPhotoCaptureBLE","title":"EOGPhotoCaptureBLE","description":"Eye Blink (EOG) Photo capture using ESP32 - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EyeBlinkDetection/EyeBlinkDetection":{"id":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EyeBlinkDetection/EyeBlinkDetection","title":"EyeBlinkDetection","description":"Eye Blink Detection (Experimental!) - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling":{"id":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling","title":"FixedSampling","description":"Fixed Sampling - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/BLEHeartRateDetection/BLEHeartRateDetection":{"id":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/BLEHeartRateDetection/BLEHeartRateDetection","title":"BLEHeartRateDetection","description":"HeartRateDetection","sidebar":"tutorialSidebar"},"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/ECGFilter/ECGFilter":{"id":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/ECGFilter/ECGFilter","title":"ECGFilter","description":"ECG Filter - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling":{"id":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling","title":"FixedSampling","description":"Fixed Sampling - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartBeatDetection/HeartBeatDetection":{"id":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartBeatDetection/HeartBeatDetection","title":"HeartBeatDetection","description":"Heart Beat Detection - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartRateDetection/HeartRateDetection":{"id":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartRateDetection/HeartRateDetection","title":"HeartRateDetection","description":"HeartRateDetection","sidebar":"tutorialSidebar"},"BioAmp-Software/intro":{"id":"BioAmp-Software/intro","title":"intro","description":"","sidebar":"tutorialSidebar"},"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ClawController/ClawController":{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ClawController/ClawController","title":"ClawController","description":"Claw Controller - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGEnvelope/EMGEnvelope":{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGEnvelope/EMGEnvelope","title":"EMGEnvelope","description":"EMG Envelop - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGFilter/EMGFilter":{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGFilter/EMGFilter","title":"EMGFilter","description":"EMG Filter - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling":{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling","title":"FixedSampling","description":"Fixed Sampling - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/LEDBarGraph/LEDBarGraph":{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/LEDBarGraph/LEDBarGraph","title":"LEDBarGraph","description":"LED Bar Graph - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ServoControl/ServoControl":{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ServoControl/ServoControl","title":"ServoControl","description":"Servo Control - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill/Detecting Heart Beats Using BioAmp EXG Pill":{"id":"Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill/Detecting Heart Beats Using BioAmp EXG Pill","title":"Detecting Heart Beats Using BioAmp EXG Pill","description":"dodge gif","sidebar":"tutorialSidebar"},"Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill/Measuring Heart Rate Using BioAmp EXG Pill":{"id":"Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill/Measuring Heart Rate Using BioAmp EXG Pill","title":"Measuring Heart Rate Using BioAmp EXG Pill","description":"In this project we will be measuring heart rate using BioAmp EXG Pill.","sidebar":"tutorialSidebar"},"Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill":{"id":"Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill","title":"Record Publication Grade ECG at Your Home Using BioAmp EXG Pill","description":"dodge gif","sidebar":"tutorialSidebar"},"Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments":{"id":"Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments","title":"Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill","description":"In this project we will be recording brainwaves or EEG from prefrontal cortex part of the brain using Arduino Uno and BioAmp EXG Pill.","sidebar":"tutorialSidebar"},"Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill":{"id":"Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill","title":"Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill","description":"In this project we will be recording brainwaves or EEG from visual cortex part of the brain using BioAmp EXG Pill and Maker Uno.","sidebar":"tutorialSidebar"},"Experiments/EMG Experiments/BisCute Visualize EMG/BisCute Visualize EMG":{"id":"Experiments/EMG Experiments/BisCute Visualize EMG/BisCute Visualize EMG","title":"Visualizing Muscle Signals (EMG)","description":"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.","sidebar":"tutorialSidebar"},"Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG":{"id":"Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG","title":"Using Muscle BioAmp Candy (Candy Size Muscle Sensor)","description":"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 Candy (candy-size EMG sensor) and Arduino Uno.","sidebar":"tutorialSidebar"},"Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1":{"id":"Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1","title":"Using Muscle BioAmp Patchy (wearable Muscle Sensor)","description":"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.","sidebar":"tutorialSidebar"},"Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield":{"id":"Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield","title":"Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield","description":"dodge gif","sidebar":"tutorialSidebar"},"Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield":{"id":"Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield","title":"Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield","description":"dodge gif","sidebar":"tutorialSidebar"},"Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno":{"id":"Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno","title":"Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno","description":"In this tutorial, you are going to make a muscle strength game at your home using the Arduino Uno shield for EMG, Muscle BioAmp Shield.","sidebar":"tutorialSidebar"},"Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection":{"id":"Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection","title":"Eye Blink Detection by Recording EOG Using BioAmp EXG Pill","description":"dodge gif","sidebar":"tutorialSidebar"},"Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill":{"id":"Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill","title":"Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill","description":"In this project we will be recording electrical impulses of eyes (EOG) to make a drowsiness detector using Maker Uno and BioAmp EXG Pill.","sidebar":"tutorialSidebar"},"Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment":{"id":"Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment","title":"Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill","description":"In this project we will be recording electrical impulses of eyes (EOG) using BioAmp EXG Pill and Arduino Uno.","sidebar":"tutorialSidebar"},"Experiments/Getting Started/Getting Started":{"id":"Experiments/Getting Started/Getting Started","title":"Getting Started!!","description":"","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"Tutorial Intro","description":"Let\'s discover Docusaurus in less than 5 minutes.","sidebar":"tutorialSidebar"},"tutorial-basics/congratulations":{"id":"tutorial-basics/congratulations","title":"Congratulations!","description":"You have just learned the basics of Docusaurus and made some changes to the initial template.","sidebar":"tutorialSidebar"},"tutorial-basics/create-a-blog-post":{"id":"tutorial-basics/create-a-blog-post","title":"Create a Blog Post","description":"Docusaurus creates a page for each blog post, but also a blog index page, a tag system, an RSS feed...","sidebar":"tutorialSidebar"},"tutorial-basics/create-a-document":{"id":"tutorial-basics/create-a-document","title":"Create a Document","description":"Documents are groups of pages connected through:","sidebar":"tutorialSidebar"},"tutorial-basics/create-a-page":{"id":"tutorial-basics/create-a-page","title":"Create a Page","description":"Add Markdown or React files to src/pages to create a standalone page:","sidebar":"tutorialSidebar"},"tutorial-basics/deploy-your-site":{"id":"tutorial-basics/deploy-your-site","title":"Deploy your site","description":"Docusaurus is a static-site-generator (also called Jamstack).","sidebar":"tutorialSidebar"},"tutorial-basics/markdown-features":{"id":"tutorial-basics/markdown-features","title":"Markdown Features","description":"Docusaurus supports Markdown and a few additional features.","sidebar":"tutorialSidebar"},"tutorial-extras/manage-docs-versions":{"id":"tutorial-extras/manage-docs-versions","title":"Manage Docs Versions","description":"Docusaurus can manage multiple versions of your docs.","sidebar":"tutorialSidebar"},"tutorial-extras/translate-your-site":{"id":"tutorial-extras/translate-your-site","title":"Translate your site","description":"Let\'s translate docs/intro.md to French.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.ff9f8dee.js b/assets/js/935f2afb.ff9f8dee.js deleted file mode 100644 index d1a39b24..00000000 --- a/assets/js/935f2afb.ff9f8dee.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":"unreleased","badge":true,"noIndex":false,"className":"docs-version-current","isLast":false,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"BioAmp Hardware","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"BioAmp EXG Pill","href":"/docs/next/BioAmp-Hardware/BioAmpEXGPill","docId":"BioAmp-Hardware/BioAmpEXGPill"},{"type":"link","label":"DIY Muscle BioAmp Shield","href":"/docs/next/BioAmp-Hardware/DIYMuscleBioAmpShield","docId":"BioAmp-Hardware/DIYMuscleBioAmpShield"},{"type":"link","label":"Muscle BioAmp Patchy","href":"/docs/next/BioAmp-Hardware/MuscleBioAmpPatchy","docId":"BioAmp-Hardware/MuscleBioAmpPatchy"},{"type":"link","label":"Muscle BioAmp Candy","href":"/docs/next/BioAmp-Hardware/MuscleBioAmpCandy","docId":"BioAmp-Hardware/MuscleBioAmpCandy"},{"type":"link","label":"Muscle BioAmp BisCute","href":"/docs/next/BioAmp-Hardware/MuscleBioAmpBisCute","docId":"BioAmp-Hardware/MuscleBioAmpBisCute"}],"href":"/docs/next/category/bioamp-hardware"},{"type":"category","label":"BioAmp Software","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"intro","href":"/docs/next/BioAmp-Software/intro","docId":"BioAmp-Software/intro"},{"type":"category","label":"Brain-BioAmp-Arduino-Firmware","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"FixedSampling","href":"/docs/next/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/FixedSampling/","docId":"BioAmp-Software/Brain-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling"},{"type":"link","label":"EEGFilter","href":"/docs/next/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/EEGFilter/","docId":"BioAmp-Software/Brain-BioAmp-Arduino-Firmware/EEGFilter/EEGFilter"}]},{"type":"category","label":"Eye-BioAmp-Arduino-Firmware","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"FixedSampling","href":"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/FixedSampling/","docId":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling"},{"type":"link","label":"EOGFilter","href":"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGFilter/","docId":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGFilter/EOGFilter"},{"type":"link","label":"DrowsinessDetection","href":"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/DrowsinessDetection/","docId":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/DrowsinessDetection/DrowsinessDetection"},{"type":"link","label":"EOGPhotoCaptureBLE","href":"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGPhotoCaptureBLE/","docId":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGPhotoCaptureBLE/EOGPhotoCaptureBLE"},{"type":"link","label":"EyeBlinkDetection","href":"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EyeBlinkDetection/","docId":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EyeBlinkDetection/EyeBlinkDetection"}]},{"type":"category","label":"Heart-BioAmp-Arduino-Firmware","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"FixedSampling","href":"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/FixedSampling/","docId":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling"},{"type":"link","label":"ECGFilter","href":"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/ECGFilter/","docId":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/ECGFilter/ECGFilter"},{"type":"link","label":"HeartRateDetection","href":"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartRateDetection/","docId":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartRateDetection/HeartRateDetection"},{"type":"category","label":"HeartBeatDetection","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"HeartBeatDetection","href":"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartBeatDetection/HeartBeatDetection","docId":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartBeatDetection/HeartBeatDetection"}]},{"type":"link","label":"BLEHeartRateDetection","href":"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/BLEHeartRateDetection/","docId":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/BLEHeartRateDetection/BLEHeartRateDetection"}]},{"type":"category","label":"Muscle-BioAmp-Arduino-Firmware","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"FixedSampling","href":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/FixedSampling/","docId":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling"},{"type":"link","label":"EMGFilter","href":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGFilter/","docId":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGFilter/EMGFilter"},{"type":"link","label":"EMGEnvelope","href":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGEnvelope/","docId":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGEnvelope/EMGEnvelope"},{"type":"link","label":"ClawController","href":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ClawController/","docId":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ClawController/ClawController"},{"type":"link","label":"ServoControl","href":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ServoControl/","docId":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ServoControl/ServoControl"},{"type":"link","label":"LEDBarGraph","href":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/LEDBarGraph/","docId":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/LEDBarGraph/LEDBarGraph"}]}],"href":"/docs/next/category/bioamp-software"},{"type":"category","label":"Experiments","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Let\'s Get Started with Experiments!!","href":"/docs/next/Experiments/Getting Started/","docId":"Experiments/Getting Started/Getting Started"},{"type":"category","label":"ECG Experiments","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"ECG Experiments","href":"/docs/next/Experiments/ECG Experiments/ECGExperiments","docId":"Experiments/ECG Experiments/ECGExperiments"}]},{"type":"category","label":"EEG Experiments","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"EEG Experiments","href":"/docs/next/Experiments/EEG Experiments/EEGExperiments","docId":"Experiments/EEG Experiments/EEGExperiments"}]},{"type":"category","label":"EMG Experiments","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Recording and Visualizing Muscle Signals (EMG) Using Muscle BioAmp Patchy (wearable Muscle Sensor)","href":"/docs/next/Experiments/EMG Experiments/EMGExperiment1/","docId":"Experiments/EMG Experiments/EMGExperiment1/EMGExperiment1"},{"type":"link","label":"Visualizing Muscle Signals (EMG)","href":"/docs/next/Experiments/EMG Experiments/BisCute_Visualize EMG/","docId":"Experiments/EMG Experiments/BisCute_Visualize EMG/BisCute_Visualize EMG"},{"type":"link","label":"Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield","href":"/docs/next/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/","docId":"Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield"},{"type":"link","label":"Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield","href":"/docs/next/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/","docId":"Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield"}]},{"type":"category","label":"EOG Experiments","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Eye Blink Detection by Recording EOG Using BioAmp EXG Pill","href":"/docs/next/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/","docId":"Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection"},{"type":"link","label":"Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill","href":"/docs/next/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/","docId":"Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill"},{"type":"link","label":"Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill","href":"/docs/next/Experiments/EOG Experiments/EOG EXPERIMENT/","docId":"Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment"}]}],"href":"/docs/next/category/experiments"},{"type":"category","label":"Tutorial - Basics","collapsible":true,"collapsed":true,"className":"hidden","items":[{"type":"link","label":"Create a Page","href":"/docs/next/tutorial-basics/create-a-page","docId":"tutorial-basics/create-a-page"},{"type":"link","label":"Create a Document","href":"/docs/next/tutorial-basics/create-a-document","docId":"tutorial-basics/create-a-document"},{"type":"link","label":"Create a Blog Post","href":"/docs/next/tutorial-basics/create-a-blog-post","docId":"tutorial-basics/create-a-blog-post"},{"type":"link","label":"Markdown Features","href":"/docs/next/tutorial-basics/markdown-features","docId":"tutorial-basics/markdown-features"},{"type":"link","label":"Deploy your site","href":"/docs/next/tutorial-basics/deploy-your-site","docId":"tutorial-basics/deploy-your-site"},{"type":"link","label":"Congratulations!","href":"/docs/next/tutorial-basics/congratulations","docId":"tutorial-basics/congratulations"}],"href":"/docs/next/category/tutorial---basics"},{"type":"link","label":"Tutorial Intro","href":"/docs/next/intro","className":"hidden","docId":"intro"},{"type":"category","label":"Tutorial - Extras","collapsible":true,"collapsed":true,"className":"hidden","items":[{"type":"link","label":"Manage Docs Versions","href":"/docs/next/tutorial-extras/manage-docs-versions","docId":"tutorial-extras/manage-docs-versions"},{"type":"link","label":"Translate your site","href":"/docs/next/tutorial-extras/translate-your-site","docId":"tutorial-extras/translate-your-site"}],"href":"/docs/next/category/tutorial---extras"}]},"docs":{"BioAmp-Hardware/BioAmpEXGPill":{"id":"BioAmp-Hardware/BioAmpEXGPill","title":"BioAmp EXG Pill","description":"Professional-grade analog front-end amplification for ECG, EMG, EOG, and EEG biosensing on one tiny board","sidebar":"tutorialSidebar"},"BioAmp-Hardware/DIYMuscleBioAmpShield":{"id":"BioAmp-Hardware/DIYMuscleBioAmpShield","title":"DIY Muscle BioAmp Shield","description":"All-in-one Arduino Uno Shield for EMG (Electromyography).","sidebar":"tutorialSidebar"},"BioAmp-Hardware/MuscleBioAmpBisCute":{"id":"BioAmp-Hardware/MuscleBioAmpBisCute","title":"Muscle BioAmp BisCute","description":"Most affordable DIY Electromyography (EMG) sensor","sidebar":"tutorialSidebar"},"BioAmp-Hardware/MuscleBioAmpCandy":{"id":"BioAmp-Hardware/MuscleBioAmpCandy","title":"Muscle BioAmp Candy","description":"Candy-size affordable muscle sensor for precise EMG sensing","sidebar":"tutorialSidebar"},"BioAmp-Hardware/MuscleBioAmpPatchy":{"id":"BioAmp-Hardware/MuscleBioAmpPatchy","title":"Muscle BioAmp Patchy","description":"Wearable ElectroMyoGraphy (EMG) sensor","sidebar":"tutorialSidebar"},"BioAmp-Software/Brain-BioAmp-Arduino-Firmware/EEGFilter/EEGFilter":{"id":"BioAmp-Software/Brain-BioAmp-Arduino-Firmware/EEGFilter/EEGFilter","title":"EEGFilter","description":"EEG Filter - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Brain-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling":{"id":"BioAmp-Software/Brain-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling","title":"FixedSampling","description":"Fixed Sampling - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/DrowsinessDetection/DrowsinessDetection":{"id":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/DrowsinessDetection/DrowsinessDetection","title":"DrowsinessDetection","description":"Drowsiness Detection - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGFilter/EOGFilter":{"id":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGFilter/EOGFilter","title":"EOGFilter","description":"EOG Filter - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGPhotoCaptureBLE/EOGPhotoCaptureBLE":{"id":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGPhotoCaptureBLE/EOGPhotoCaptureBLE","title":"EOGPhotoCaptureBLE","description":"Eye Blink (EOG) Photo capture using ESP32 - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EyeBlinkDetection/EyeBlinkDetection":{"id":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EyeBlinkDetection/EyeBlinkDetection","title":"EyeBlinkDetection","description":"Eye Blink Detection (Experimental!) - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling":{"id":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling","title":"FixedSampling","description":"Fixed Sampling - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/BLEHeartRateDetection/BLEHeartRateDetection":{"id":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/BLEHeartRateDetection/BLEHeartRateDetection","title":"BLEHeartRateDetection","description":"HeartRateDetection","sidebar":"tutorialSidebar"},"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/ECGFilter/ECGFilter":{"id":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/ECGFilter/ECGFilter","title":"ECGFilter","description":"ECG Filter - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling":{"id":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling","title":"FixedSampling","description":"Fixed Sampling - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartBeatDetection/HeartBeatDetection":{"id":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartBeatDetection/HeartBeatDetection","title":"HeartBeatDetection","description":"Heart Beat Detection - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartRateDetection/HeartRateDetection":{"id":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartRateDetection/HeartRateDetection","title":"HeartRateDetection","description":"HeartRateDetection","sidebar":"tutorialSidebar"},"BioAmp-Software/intro":{"id":"BioAmp-Software/intro","title":"intro","description":"","sidebar":"tutorialSidebar"},"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ClawController/ClawController":{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ClawController/ClawController","title":"ClawController","description":"Claw Controller - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGEnvelope/EMGEnvelope":{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGEnvelope/EMGEnvelope","title":"EMGEnvelope","description":"EMG Envelop - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGFilter/EMGFilter":{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGFilter/EMGFilter","title":"EMGFilter","description":"EMG Filter - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling":{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling","title":"FixedSampling","description":"Fixed Sampling - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/LEDBarGraph/LEDBarGraph":{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/LEDBarGraph/LEDBarGraph","title":"LEDBarGraph","description":"LED Bar Graph - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ServoControl/ServoControl":{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ServoControl/ServoControl","title":"ServoControl","description":"Servo Control - BioAmp EXG Pill","sidebar":"tutorialSidebar"},"Experiments/ECG Experiments/ECGExperiments":{"id":"Experiments/ECG Experiments/ECGExperiments","title":"ECG Experiments","description":"","sidebar":"tutorialSidebar"},"Experiments/EEG Experiments/EEGExperiments":{"id":"Experiments/EEG Experiments/EEGExperiments","title":"EEG Experiments","description":"In this project we will be recording brainwaves or EEG from prefrontal cortex part of the brain using Arduino Uno and BioAmp EXG Pill.","sidebar":"tutorialSidebar"},"Experiments/EMG Experiments/BisCute_Visualize EMG/BisCute_Visualize EMG":{"id":"Experiments/EMG Experiments/BisCute_Visualize EMG/BisCute_Visualize EMG","title":"Visualizing Muscle Signals (EMG)","description":"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.","sidebar":"tutorialSidebar"},"Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield":{"id":"Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield","title":"Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield","description":"dodge gif","sidebar":"tutorialSidebar"},"Experiments/EMG Experiments/EMGExperiment1/EMGExperiment1":{"id":"Experiments/EMG Experiments/EMGExperiment1/EMGExperiment1","title":"Recording and Visualizing Muscle Signals (EMG) Using Muscle BioAmp Patchy (wearable Muscle Sensor)","description":"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.","sidebar":"tutorialSidebar"},"Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield":{"id":"Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield","title":"Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield","description":"dodge gif","sidebar":"tutorialSidebar"},"Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection":{"id":"Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection","title":"Eye Blink Detection by Recording EOG Using BioAmp EXG Pill","description":"dodge gif","sidebar":"tutorialSidebar"},"Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill":{"id":"Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill","title":"Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill","description":"In this project we will be recording electrical impulses of eyes (EOG) to make a drowsiness detector using Maker Uno and BioAmp EXG Pill.","sidebar":"tutorialSidebar"},"Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment":{"id":"Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment","title":"Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill","description":"In this project we will be recording electrical impulses of eyes (EOG) using BioAmp EXG Pill and Arduino Uno.","sidebar":"tutorialSidebar"},"Experiments/Getting Started/Getting Started":{"id":"Experiments/Getting Started/Getting Started","title":"Let\'s Get Started with Experiments!!","description":"","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"Tutorial Intro","description":"Let\'s discover Docusaurus in less than 5 minutes.","sidebar":"tutorialSidebar"},"tutorial-basics/congratulations":{"id":"tutorial-basics/congratulations","title":"Congratulations!","description":"You have just learned the basics of Docusaurus and made some changes to the initial template.","sidebar":"tutorialSidebar"},"tutorial-basics/create-a-blog-post":{"id":"tutorial-basics/create-a-blog-post","title":"Create a Blog Post","description":"Docusaurus creates a page for each blog post, but also a blog index page, a tag system, an RSS feed...","sidebar":"tutorialSidebar"},"tutorial-basics/create-a-document":{"id":"tutorial-basics/create-a-document","title":"Create a Document","description":"Documents are groups of pages connected through:","sidebar":"tutorialSidebar"},"tutorial-basics/create-a-page":{"id":"tutorial-basics/create-a-page","title":"Create a Page","description":"Add Markdown or React files to src/pages to create a standalone page:","sidebar":"tutorialSidebar"},"tutorial-basics/deploy-your-site":{"id":"tutorial-basics/deploy-your-site","title":"Deploy your site","description":"Docusaurus is a static-site-generator (also called Jamstack).","sidebar":"tutorialSidebar"},"tutorial-basics/markdown-features":{"id":"tutorial-basics/markdown-features","title":"Markdown Features","description":"Docusaurus supports Markdown and a few additional features.","sidebar":"tutorialSidebar"},"tutorial-extras/manage-docs-versions":{"id":"tutorial-extras/manage-docs-versions","title":"Manage Docs Versions","description":"Docusaurus can manage multiple versions of your docs.","sidebar":"tutorialSidebar"},"tutorial-extras/translate-your-site":{"id":"tutorial-extras/translate-your-site","title":"Translate your site","description":"Let\'s translate docs/intro.md to French.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/a2512981.ef586fad.js b/assets/js/a2512981.b0d3940b.js similarity index 51% rename from assets/js/a2512981.ef586fad.js rename to assets/js/a2512981.b0d3940b.js index 23069e53..91007062 100644 --- a/assets/js/a2512981.ef586fad.js +++ b/assets/js/a2512981.b0d3940b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8046],{3905:(e,t,r)=>{r.d(t,{Zo:()=>l,kt:()=>f});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var p=n.createContext({}),c=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},l=function(e){var t=c(e.components);return n.createElement(p.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=c(r),m=i,f=u["".concat(p,".").concat(m)]||u[m]||d[m]||o;return r?n.createElement(f,a(a({ref:t},l),{},{components:r})):n.createElement(f,a({ref:t},l))}));function f(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=r.length,a=new Array(o);a[0]=m;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[u]="string"==typeof e?e:i,a[1]=s;for(var c=2;c{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var n=r(87462),i=(r(67294),r(3905));const o={sidebar_position:1},a="Let's Get Started with Experiments!!",s={unversionedId:"Experiments/Getting Started/Getting Started",id:"Experiments/Getting Started/Getting Started",title:"Let's Get Started with Experiments!!",description:"",source:"@site/docs/Experiments/Getting Started/Getting Started.md",sourceDirName:"Experiments/Getting Started",slug:"/Experiments/Getting Started/",permalink:"/docs/next/Experiments/Getting Started/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/Getting Started/Getting Started.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Experiments",permalink:"/docs/next/category/experiments"},next:{title:"ECG Experiments",permalink:"/docs/next/Experiments/ECG Experiments/ECGExperiments"}},p={},c=[],l={toc:c},u="wrapper";function d(e){let{components:t,...r}=e;return(0,i.kt)(u,(0,n.Z)({},l,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"lets-get-started-with-experiments"},"Let's Get Started with Experiments!!"))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8046],{3905:(e,t,r)=>{r.d(t,{Zo:()=>l,kt:()=>f});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var p=n.createContext({}),s=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},l=function(e){var t=s(e.components);return n.createElement(p.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),u=s(r),m=i,f=u["".concat(p,".").concat(m)]||u[m]||d[m]||o;return r?n.createElement(f,a(a({ref:t},l),{},{components:r})):n.createElement(f,a({ref:t},l))}));function f(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=r.length,a=new Array(o);a[0]=m;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c[u]="string"==typeof e?e:i,a[1]=c;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var n=r(87462),i=(r(67294),r(3905));const o={sidebar_position:1},a="Getting Started!!",c={unversionedId:"Experiments/Getting Started/Getting Started",id:"Experiments/Getting Started/Getting Started",title:"Getting Started!!",description:"",source:"@site/docs/Experiments/Getting Started/Getting Started.md",sourceDirName:"Experiments/Getting Started",slug:"/Experiments/Getting Started/",permalink:"/docs/next/Experiments/Getting Started/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/Getting Started/Getting Started.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Experiments",permalink:"/docs/next/category/experiments"},next:{title:"Record Publication Grade ECG at Your Home Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill/"}},p={},s=[],l={toc:s},u="wrapper";function d(e){let{components:t,...r}=e;return(0,i.kt)(u,(0,n.Z)({},l,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"getting-started"},"Getting Started!!"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a2f1a099.37b89392.js b/assets/js/a2f1a099.37b89392.js new file mode 100644 index 00000000..8b512a9a --- /dev/null +++ b/assets/js/a2f1a099.37b89392.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4612],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var i=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=i.createContext({}),p=function(e){var t=i.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,c=r(e,["components","mdxType","originalType","parentName"]),u=p(n),m=a,h=u["".concat(s,".").concat(m)]||u[m]||d[m]||o;return n?i.createElement(h,l(l({ref:t},c),{},{components:n})):i.createElement(h,l({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=m;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[u]="string"==typeof e?e:a,l[1]=r;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>r,toc:()=>p});var i=n(87462),a=(n(67294),n(3905));const o={sidebar_position:1},l="Using Muscle BioAmp Patchy (wearable Muscle Sensor)",r={unversionedId:"Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1",id:"Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1",title:"Using Muscle BioAmp Patchy (wearable Muscle Sensor)",description:"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.",source:"@site/docs/Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1.md",sourceDirName:"Experiments/EMG Experiments/BisCute Visualize EMG",slug:"/Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1",permalink:"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Visualizing Muscle Signals (EMG)",permalink:"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/"},next:{title:"Using Muscle BioAmp Candy (Candy Size Muscle Sensor)",permalink:"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG"}},s={},p=[{value:"What is Electromyography (EMG)?",id:"what-is-electromyography-emg",level:2},{value:"About Muscle BioAmp Patchy:",id:"about-muscle-bioamp-patchy",level:3},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE",id:"hardware",level:2},{value:"SOFTWARE:",id:"software",level:2},{value:"Step 1: Connecting Reference Cable",id:"step-1-connecting-reference-cable",level:2},{value:"Step 2: Connecting Muscle BioAmp Patchy to Gel Electrodes",id:"step-2-connecting-muscle-bioamp-patchy-to-gel-electrodes",level:2},{value:"Step 3: Skin Preparation",id:"step-3-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 4: Electrode Placements",id:"step-4-electrode-placements",level:2},{value:"Step 5: Connections",id:"step-5-connections",level:2},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide",level:2},{value:"Step 7: Check All the Conections",id:"step-7-check-all-the-conections",level:2},{value:"Step 8: Coding Time!",id:"step-8-coding-time",level:2},{value:"Step 9: Flex Your Muscle",id:"step-9-flex-your-muscle",level:2}],c={toc:p},u="wrapper";function d(e){let{components:t,...o}=e;return(0,a.kt)(u,(0,i.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"using-muscle-bioamp-patchy-wearable-muscle-sensor"},"Using Muscle BioAmp Patchy (wearable Muscle Sensor)"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(3426).Z,width:"1920",height:"1080"}),"\n",(0,a.kt)("img",{src:n(8098).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,"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."),(0,a.kt)("p",null,"But before moving forward, let's understand a brief about Electromyography."),(0,a.kt)("h2",{id:"what-is-electromyography-emg"},"What is Electromyography (EMG)?"),(0,a.kt)("p",null,"Electromyography (EMG) is a technique for evaluating and recording the electrical activity produced by skeletal muscles."),(0,a.kt)("p",null,"Some applications of EMG:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Prosthetic hands, "),(0,a.kt)("li",{parentName:"ol"},"Human augmentation, "),(0,a.kt)("li",{parentName:"ol"},"Games controllers, "),(0,a.kt)("li",{parentName:"ol"},"Rehabilitation and "),(0,a.kt)("li",{parentName:"ol"},"Physical therapy\nEven doctors are using them for the diagnosis of various neuromuscular ailments.")),(0,a.kt)("p",null,"Recently, it was in the news that ",(0,a.kt)("a",{parentName:"p",href:"https://tech.facebook.com/reality-labs/2021/03/inside-facebook-reality-labs-wrist-based-interaction-for-the-next-computing-platform/"},"Meta is working on wearable EMG sensors")," to track user movements in the metaverse."),(0,a.kt)("h3",{id:"about-muscle-bioamp-patchy"},"About Muscle BioAmp Patchy:"),(0,a.kt)("p",null,"Muscle BioAmp Patchy is a small ",(0,a.kt)("strong",{parentName:"p"},"wearable muscle sensor")," for precise EMG sensing. It can be snapped directly to the electrodes, eliminating electrode cables."),(0,a.kt)("h2",{id:"supplies"},"Supplies"),(0,a.kt)("h2",{id:"hardware"},"HARDWARE"),(0,a.kt)("p",null,"1 x Muscle BioAmp Patchy Kit (",(0,a.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-patchy-v0-2/"},"Upside Down Labs Store")," | ",(0,a.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0C4P2JB7J?ref=myi_title_dp&th=1"},"Amazon India")," | ",(0,a.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-patchy-wearable-muscle-sensor/"},"Tindie India"),")"),(0,a.kt)("p",null,"The kit will include:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"1 Muscle BioAmp Patchy,"),(0,a.kt)("li",{parentName:"ul"},"1 Reference Cable,"),(0,a.kt)("li",{parentName:"ul"},"3 Jumper Wires,"),(0,a.kt)("li",{parentName:"ul"},"3 Boxy Gel Electrodes")),(0,a.kt)("p",null,"1 x Arduino Uno with USB Cable"),(0,a.kt)("p",null,"1 x Nuprep Skin Preparation Gel (",(0,a.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/nuprep-gel/"},"Upside Down Labs Store")," | ",(0,a.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/"},"Tindie Store"),")"),(0,a.kt)("p",null,"1 x Wet wipe"),(0,a.kt)("h2",{id:"software"},"SOFTWARE:"),(0,a.kt)("p",null,"Ardiuno IDE"),(0,a.kt)("h2",{id:"step-1-connecting-reference-cable"},"Step 1: Connecting Reference Cable"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(48301).Z,width:"1920",height:"722"})),(0,a.kt)("p",null,"Connect the reference cable to the Muscle BioAmp Patchy as shown in the above diagram."),(0,a.kt)("h2",{id:"step-2-connecting-muscle-bioamp-patchy-to-gel-electrodes"},"Step 2: Connecting Muscle BioAmp Patchy to Gel Electrodes"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(6638).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,"Connect the Muscle BioAmp Patchy to gel electrodes (Don't peel the plastic from the electrodes at this moment)."),(0,a.kt)("h2",{id:"step-3-skin-preparation"},"Step 3: Skin Preparation"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:n(2477).Z,width:"1152",height:"648"})),(0,a.kt)("p",null,"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."),(0,a.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,a.kt)("p",null,"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."),(0,a.kt)("h2",{id:"step-4-electrode-placements"},"Step 4: Electrode Placements"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(12687).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,"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."),(0,a.kt)("h2",{id:"step-5-connections"},"Step 5: Connections"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(92647).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,"Connect the Muscle BioAmp Patchy to your Arduino Uno using jumper cables as directed below:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"OUT to A0"),(0,a.kt)("li",{parentName:"ol"},"GND to GND"),(0,a.kt)("li",{parentName:"ol"},"VCC to 5V")),(0,a.kt)("h2",{id:"step-6-download-arduino-ide"},"Step 6: Download Arduino IDE"),(0,a.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,a.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,a.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Note:")," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,a.kt)("h2",{id:"step-7-check-all-the-conections"},"Step 7: Check All the Conections"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(39562).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,"Now that you have made all the connections and downloaded the Arduino IDE. Once again check everything as shown in the diagram."),(0,a.kt)("h2",{id:"step-8-coding-time"},"Step 8: Coding Time!"),(0,a.kt)("p",null,"Copy paste any one of the Arduino Sketches given below in Arduino IDE:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"EMG Envelop: ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino")),(0,a.kt)("li",{parentName:"ol"},"EMG Filter: ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino"))),(0,a.kt)("p",null,"After flashing the code, open the serial plotter to visualize the EMG signals."),(0,a.kt)("h2",{id:"step-9-flex-your-muscle"},"Step 9: Flex Your Muscle"),(0,a.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/4dnCX3U7LS8?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,a.kt)("p",null,"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."),(0,a.kt)("p",null,"You are all set to explore on your own and make amazing HCI projects at the comfort zone of your home."),(0,a.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,a.kt)("p",null,"You can also mail us at ",(0,a.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}d.isMDXComponent=!0},2477:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Skin_Prep-b4d5612273462b52bb1603d108aba7c0.gif"},3426:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/emgimg1-0ee6de2145db2f2bdf0dd51bbac0d39d.jpg"},8098:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/emgimg2-4ff2a4c8bf17caac9535605a305cc9df.jpg"},48301:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/emgimg3-54c2a6705ba0a621ddd1b3c37b422787.jpg"},6638:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/emgimg4-9a22d8e62944934e54d5d7222c1d34d1.jpg"},12687:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/emgimg5-75632a1c1b5d514d0bb7a8509338c4ea.jpg"},92647:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/emgimg6-8d6a16809cefd082130e9f605676e5a7.jpg"},39562:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/emgimg7-3d538460e13eba32ea1f9883e6f86e1f.jpg"}}]); \ No newline at end of file diff --git a/assets/js/a5887c4a.7a1b45fe.js b/assets/js/a5887c4a.7a1b45fe.js deleted file mode 100644 index 91a457d8..00000000 --- a/assets/js/a5887c4a.7a1b45fe.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9016],{3905:(e,t,i)=>{i.d(t,{Zo:()=>u,kt:()=>h});var a=i(67294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function l(e){for(var t=1;t=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var s=a.createContext({}),p=function(e){var t=a.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):l(l({},t),e)),i},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var i=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,u=r(e,["components","mdxType","originalType","parentName"]),c=p(i),m=n,h=c["".concat(s,".").concat(m)]||c[m]||d[m]||o;return i?a.createElement(h,l(l({ref:t},u),{},{components:i})):a.createElement(h,l({ref:t},u))}));function h(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=i.length,l=new Array(o);l[0]=m;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[c]="string"==typeof e?e:n,l[1]=r;for(var p=2;p{i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>r,toc:()=>p});var a=i(87462),n=(i(67294),i(3905));const o={},l="Visualizing Muscle Signals (EMG)",r={unversionedId:"Experiments/EMG Experiments/BisCute_Visualize EMG/BisCute_Visualize EMG",id:"Experiments/EMG Experiments/BisCute_Visualize EMG/BisCute_Visualize EMG",title:"Visualizing Muscle Signals (EMG)",description:"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.",source:"@site/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/BisCute_Visualize EMG.md",sourceDirName:"Experiments/EMG Experiments/BisCute_Visualize EMG",slug:"/Experiments/EMG Experiments/BisCute_Visualize EMG/",permalink:"/docs/next/Experiments/EMG Experiments/BisCute_Visualize EMG/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/EMG Experiments/BisCute_Visualize EMG/BisCute_Visualize EMG.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Recording and Visualizing Muscle Signals (EMG) Using Muscle BioAmp Patchy (wearable Muscle Sensor)",permalink:"/docs/next/Experiments/EMG Experiments/EMGExperiment1/"},next:{title:"Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield",permalink:"/docs/next/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/"}},s={},p=[{value:"What is Electromyography (EMG)?",id:"what-is-electromyography-emg",level:2},{value:"About Muscle BioAmp BisCute:",id:"about-muscle-bioamp-biscute",level:3},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE:",id:"hardware",level:3},{value:"SKIN PREPARATION KIT & ELECTRODE GEL:",id:"skin-preparation-kit--electrode-gel",level:3},{value:"SOFTWARE:",id:"software",level:3},{value:"Step 1: Assembly",id:"step-1-assembly",level:2},{value:"Step 2: Connecting Electrode Cable",id:"step-2-connecting-electrode-cable",level:2},{value:"Step 3: Skin Preparation",id:"step-3-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 4: Electrode Placements",id:"step-4-electrode-placements",level:2},{value:"Measuring EMG using Gel electrodes:",id:"measuring-emg-using-gel-electrodes",level:3},{value:"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:",id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band",level:3},{value:"Step 5: Connections",id:"step-5-connections",level:2},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide",level:2},{value:"Step 7: Coding Time!",id:"step-7-coding-time",level:2},{value:"Step 8: Enjoy & Flex Your Arm",id:"step-8-enjoy--flex-your-arm",level:2},{value:"Step 9: Complete Video Guide",id:"step-9-complete-video-guide",level:2}],u={toc:p},c="wrapper";function d(e){let{components:t,...o}=e;return(0,n.kt)(c,(0,a.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"visualizing-muscle-signals-emg"},"Visualizing Muscle Signals (EMG)"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(89888).Z,width:"1920",height:"1080"}),"\n",(0,n.kt)("img",{src:i(45564).Z,width:"1920",height:"1080"})),(0,n.kt)("p",null,"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."),(0,n.kt)("h2",{id:"what-is-electromyography-emg"},"What is Electromyography (EMG)?"),(0,n.kt)("p",null,"Electromyography is a technique that measures muscle response or electrical activity in response to a nerve\u2019s 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."),(0,n.kt)("h3",{id:"about-muscle-bioamp-biscute"},"About Muscle BioAmp BisCute:"),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,"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."),(0,n.kt)("h2",{id:"supplies"},"Supplies"),(0,n.kt)("h3",{id:"hardware"},"HARDWARE:"),(0,n.kt)("p",null,"1 x Muscle BioAmp BisCute Kit (",(0,n.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-biscute-diy/"},"Upside Down Labs Store")," | ",(0,n.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0BDRFL2VY/ref=brnd_rev_mng"},"Amazon India")," | ",(0,n.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-biscute-diy-muscle-sensor/"},"Tindie Store"),")"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"The Kit includes:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Muscle BioAmp BisCute PCB x 1"),(0,n.kt)("li",{parentName:"ul"},"Passive Components",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Ceramic capacitors."),(0,n.kt)("li",{parentName:"ul"},"Electrolytic capacitors"),(0,n.kt)("li",{parentName:"ul"},"Resistors"),(0,n.kt)("li",{parentName:"ul"},"Quad OpAmp"))),(0,n.kt)("li",{parentName:"ul"},"BioAmp Cable (50cm) x 1"),(0,n.kt)("li",{parentName:"ul"},"Jumper Wires x 3"),(0,n.kt)("li",{parentName:"ul"},"Gel Electrodes x 3"),(0,n.kt)("li",{parentName:"ul"},"Muscle BioAmp Band x 1")))),(0,n.kt)("p",null,"1 x Arduino UNO with USB cable (Type A to Type B)"),(0,n.kt)("p",null,"Soldering iron and other equipments to solder the passive components on the PCB"),(0,n.kt)("h3",{id:"skin-preparation-kit--electrode-gel"},"SKIN PREPARATION KIT & ELECTRODE GEL:"),(0,n.kt)("p",null,"1 x NuPrep skin preparation gel (",(0,n.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/nuprep-gel/"},"Upside Down Labs Store")," | ",(0,n.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/"},"Tindie Store"),")"),(0,n.kt)("p",null,"1 x Wet wipe"),(0,n.kt)("p",null,"1 x Electrode Gel (only if using Muscle BioAmp Band) (",(0,n.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/electrode-gel/"},"Upside Down Labs Store")," | ",(0,n.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/electrode-gel-250ml/"},"Tindie Store"),")"),(0,n.kt)("h3",{id:"software"},"SOFTWARE:"),(0,n.kt)("p",null,"Arduino IDE"),(0,n.kt)("h2",{id:"step-1-assembly"},"Step 1: Assembly"),(0,n.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/2dzW6pVT1L8?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,n.kt)("p",null,"As Muscle BioAmp BisCute is a DIY muscle sensor, so first of all you have to assemble all the passive components on the PCB."),(0,n.kt)("p",null,"The interactive BOM can be found on the link below:"),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://upsidedownlabs.github.io/Muscle-BioAmp-BisCute/"},"https://upsidedownlabs.github.io/Muscle-BioAmp-BisCute/")),(0,n.kt)("p",null,"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 (",(0,n.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-candy/"},"Upside Down Labs Store")," | ",(0,n.kt)("a",{parentName:"p",href:"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"},"Amazon India")," | ",(0,n.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-candy/"},"Tindie Store"),")"),(0,n.kt)("h2",{id:"step-2-connecting-electrode-cable"},"Step 2: Connecting Electrode Cable"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"dodge gif",src:i(5287).Z,width:"768",height:"432"})),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," Don't place the electrodes on the skin at this moment."),(0,n.kt)("h2",{id:"step-3-skin-preparation"},"Step 3: Skin Preparation"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"dodge gif",src:i(44677).Z,width:"768",height:"432"})),(0,n.kt)("p",null,"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."),(0,n.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,n.kt)("p",null,"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."),(0,n.kt)("h2",{id:"step-4-electrode-placements"},"Step 4: Electrode Placements"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"dodge gif",src:i(43138).Z,width:"768",height:"432"})),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"dodge gif",src:i(93553).Z,width:"768",height:"432"})),(0,n.kt)("p",null,"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."),(0,n.kt)("h3",{id:"measuring-emg-using-gel-electrodes"},"Measuring EMG using Gel electrodes:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,n.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,n.kt)("li",{parentName:"ol"},"Place the IN+ and IN- cables on the arm near the ulnar nerve & REF (reference) at the back of your hand.")),(0,n.kt)("h3",{id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band"},"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"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."),(0,n.kt)("li",{parentName:"ol"},"Wear the band on your arm as shown in the gif above."),(0,n.kt)("li",{parentName:"ol"},"Now put a small drop of electrode gel between the skin and metallic part of BioAmp Cable to get the best results.")),(0,n.kt)("h2",{id:"step-5-connections"},"Step 5: Connections"),(0,n.kt)("p",null,(0,n.kt)("img",{src:i(97468).Z,width:"1920",height:"1080"})),(0,n.kt)("p",null,"Connect Muscle BioAmp BisCute to Arduino Uno using the jumper cables as directed below:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"VCC to 5V"),(0,n.kt)("li",{parentName:"ul"},"GND to GND"),(0,n.kt)("li",{parentName:"ul"},"OUT to A0\n",(0,n.kt)("strong",{parentName:"li"},"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.")),(0,n.kt)("h2",{id:"step-6-download-arduino-ide"},"Step 6: Download Arduino IDE"),(0,n.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,n.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,n.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Note:")," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,n.kt)("h2",{id:"step-7-coding-time"},"Step 7: Coding Time!"),(0,n.kt)("p",null,"Copy paste any one of the Arduino Sketches given below in Arduino IDE:"),(0,n.kt)("p",null,"EMG Envelop: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino")),(0,n.kt)("p",null,"EMG Filter: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino")),(0,n.kt)("p",null,"After flashing the code, open the serial plotter to visualize the EMG signals."),(0,n.kt)("h2",{id:"step-8-enjoy--flex-your-arm"},"Step 8: Enjoy & Flex Your Arm"),(0,n.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/yWej1uOHFiA?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,"You are all set to explore on your own and make amazing HCI projects at the comfort zone of your home."),(0,n.kt)("h2",{id:"step-9-complete-video-guide"},"Step 9: Complete Video Guide"),(0,n.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/ujFsAE0E0nk?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,n.kt)("p",null,"You can also watch this complete video guide of this project."),(0,n.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,n.kt)("p",null,"You can also mail us at ",(0,n.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}d.isMDXComponent=!0},5287:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/Connecting Electrode Cable-6a141a10cff7281ae4c698e1da9c1e3b.gif"},97468:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/Connections with Arduino Uno-b3dd8e6eee72bcc7ca7ac0aaf7b5016c.jpg"},44677:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/Skin Preparation-cf8d399e35186ce01c8576e34794b995.gif"},45564:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/Thumbnail1-d99aa9767e8815996435b386db7be73b.jpg"},89888:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/Thumbnail2-8a06c74fc3eb0ef53d85e27d1e27a0fc.jpg"},93553:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/Using EMG Band-def7f5f26a1bf88379bc3881df4a7934.gif"},43138:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/Using Gel Electrodes-0c104176787c59335e79ed7bbaf3bab1.gif"}}]); \ No newline at end of file diff --git a/assets/js/a625387d.6f96c02f.js b/assets/js/a625387d.6f96c02f.js new file mode 100644 index 00000000..48221867 --- /dev/null +++ b/assets/js/a625387d.6f96c02f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8042],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var i=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=i.createContext({}),c=function(e){var t=i.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},p=function(e){var t=c(e.components);return i.createElement(s.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},u=i.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,p=n(e,["components","mdxType","originalType","parentName"]),d=c(a),u=r,h=d["".concat(s,".").concat(u)]||d[u]||m[u]||o;return a?i.createElement(h,l(l({ref:t},p),{},{components:a})):i.createElement(h,l({ref:t},p))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=u;var n={};for(var s in t)hasOwnProperty.call(t,s)&&(n[s]=t[s]);n.originalType=e,n[d]="string"==typeof e?e:r,l[1]=n;for(var c=2;c{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>n,toc:()=>c});var i=a(87462),r=(a(67294),a(3905));const o={sidebar_position:1},l="BioAmp EXG Pill",n={unversionedId:"BioAmp-Hardware/BioAmpEXGPill",id:"BioAmp-Hardware/BioAmpEXGPill",title:"BioAmp EXG Pill",description:"Professional-grade analog front-end amplification for ECG, EMG, EOG, and EEG biosensing on one tiny board",source:"@site/docs/BioAmp-Hardware/BioAmpEXGPill.md",sourceDirName:"BioAmp-Hardware",slug:"/BioAmp-Hardware/BioAmpEXGPill",permalink:"/docs/next/BioAmp-Hardware/BioAmpEXGPill",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/BioAmp-Hardware/BioAmpEXGPill.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"BioAmp Hardware",permalink:"/docs/next/category/bioamp-hardware"},next:{title:"DIY Muscle BioAmp Shield",permalink:"/docs/next/BioAmp-Hardware/DIYMuscleBioAmpShield"}},s={},c=[{value:"Overview",id:"overview",level:2},{value:"Features & Specifications",id:"features--specifications",level:2},{value:"Board layout",id:"board-layout",level:2},{value:"ElectroMyoGraphy (EMG)",id:"electromyography-emg",level:2},{value:"ElectroCardioGraphy (ECG)",id:"electrocardiography-ecg",level:2},{value:"Electrooculography (EOG)",id:"electrooculography-eog",level:2},{value:"Electroencephalography (EEG)",id:"electroencephalography-eeg",level:2},{value:"Glimpses of previous versions",id:"glimpses-of-previous-versions",level:2},{value:"Real-world Applications",id:"real-world-applications",level:2},{value:"Some project ideas",id:"some-project-ideas",level:2}],p={toc:c},d="wrapper";function m(e){let{components:t,...o}=e;return(0,r.kt)(d,(0,i.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"bioamp-exg-pill"},"BioAmp EXG Pill"),(0,r.kt)("p",null,"Professional-grade analog front-end amplification for ECG, EMG, EOG, and EEG biosensing on one tiny board"),(0,r.kt)("h2",{id:"overview"},"Overview"),(0,r.kt)("p",null,"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."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(78693).Z,width:"1920",height:"1080"})),(0,r.kt)("p",null,"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."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(24926).Z,width:"1920",height:"1080"}),"\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(85605).Z,width:"1920",height:"1080"})),(0,r.kt)("h2",{id:"features--specifications"},"Features & Specifications"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Features & Specifications"),(0,r.kt)("th",{parentName:"tr",align:"left"}))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Minimum Input Voltage"),(0,r.kt)("td",{parentName:"tr",align:"left"},"4.5-40 V")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input Impedance"),(0,r.kt)("td",{parentName:"tr",align:"left"},"10^12 \u03a9")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Compatible Hardware"),(0,r.kt)("td",{parentName:"tr",align:"left"},"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)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BioPotentials"),(0,r.kt)("td",{parentName:"tr",align:"left"},"EMG, ECG, EOG, EEG (configurable band-pass)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"No. of channels"),(0,r.kt)("td",{parentName:"tr",align:"left"},"1")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Electrodes"),(0,r.kt)("td",{parentName:"tr",align:"left"},"2 or 3 (configurable)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Dimensions"),(0,r.kt)("td",{parentName:"tr",align:"left"},"25.4 x 10 mm")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Designed for use with carrier board"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Yes")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Open Source"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Hardware + Software")))),(0,r.kt)("h2",{id:"board-layout"},"Board layout"),(0,r.kt)("p",null,"Images below shows a quick overview of the BioAmp EXG Pill hardware design."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"center"},"PCB Front"),(0,r.kt)("th",{parentName:"tr",align:"center"},"PCB Back"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},(0,r.kt)("img",{alt:"BioAMp EXG Pill",src:a(83430).Z,width:"4000",height:"1575"})),(0,r.kt)("td",{parentName:"tr",align:"center"},(0,r.kt)("img",{alt:"BioAMp EXG Pill",src:a(3671).Z,width:"4000",height:"1575"}))))),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(73927).Z,width:"1920",height:"1080"}),"\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(88179).Z,width:"1920",height:"1080"})),(0,r.kt)("h2",{id:"electromyography-emg"},"ElectroMyoGraphy (EMG)"),(0,r.kt)("p",null,"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.\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(78700).Z,width:"1366",height:"550"}),"\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(67241).Z,width:"1920",height:"1080"})),(0,r.kt)("h2",{id:"electrocardiography-ecg"},"ElectroCardioGraphy (ECG)"),(0,r.kt)("p",null,"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.\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(1086).Z,width:"1920",height:"1080"}),"\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(6501).Z,width:"1600",height:"694"}),"\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(71852).Z,width:"1920",height:"1080"})),(0,r.kt)("h2",{id:"electrooculography-eog"},"Electrooculography (EOG)"),(0,r.kt)("p",null,"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.\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(38541).Z,width:"1600",height:"900"})),(0,r.kt)("p",null,'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\u2019s 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.\n',(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(49093).Z,width:"1920",height:"1080"}),"\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(77416).Z,width:"1598",height:"527"}),"\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(83574).Z,width:"1920",height:"1080"})),(0,r.kt)("h2",{id:"electroencephalography-eeg"},"Electroencephalography (EEG)"),(0,r.kt)("p",null,"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.\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(10458).Z,width:"1600",height:"699"}),"\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(58078).Z,width:"1920",height:"1080"})),(0,r.kt)("h2",{id:"glimpses-of-previous-versions"},"Glimpses of previous versions"),(0,r.kt)("p",null,"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."),(0,r.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/-G3z9fvQnuw",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,r.kt)("p",null,"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."),(0,r.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/z9-B9bHWuhg",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,r.kt)("h2",{id:"real-world-applications"},"Real-world Applications"),(0,r.kt)("p",null,"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:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"AI-assisted detection of congestive heart failure using CNN (ECG)"),(0,r.kt)("li",{parentName:"ul"},"Heart-rate variability calculation to detect heart ailments (ECG)"),(0,r.kt)("li",{parentName:"ul"},"Prosthetic arm (servo) control (EMG)"),(0,r.kt)("li",{parentName:"ul"},"Controlling a 3DOF robotic arm (EMG)"),(0,r.kt)("li",{parentName:"ul"},"Quantitative analysis of physical therapy for palsy (EMG)"),(0,r.kt)("li",{parentName:"ul"},"Real-time game controllers (EOG)"),(0,r.kt)("li",{parentName:"ul"},"Blink detection (EOG)"),(0,r.kt)("li",{parentName:"ul"},"Capturing photos with a blink of an eye (EOG)"),(0,r.kt)("li",{parentName:"ul"},"Controlling LEDs via brain waves (EEG)"),(0,r.kt)("li",{parentName:"ul"},"Patient monitoring\nand many more examples.")),(0,r.kt)("h2",{id:"some-project-ideas"},"Some project ideas"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"/docs/next/Experiments/ECG%20Experiments/Record%20Publication%20Grade%20ECG%20at%20Your%20Home%20Using%20BioAmp%20EXG%20Pill/"},"Record Publication Grade ECG at Your Home Using BioAmp EXG Pill"))),(0,r.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/l1Z8S0pUAvY?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,r.kt)("ol",{start:2},(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"/docs/next/Experiments/ECG%20Experiments/Detecting%20Heart%20Beats%20Using%20BioAmp%20EXG%20Pill/"},"Detecting Heart Beats Using BioAmp EXG Pill"))),(0,r.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/uB5R-vGJjJo?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,r.kt)("ol",{start:3},(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"/docs/next/Experiments/ECG%20Experiments/Measuring%20Heart%20Rate%20Using%20BioAmp%20EXG%20Pill/"},"Measuring Heart Rate Using BioAmp EXG Pill"))),(0,r.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/PvWtCFNK3_s?si=Q9RoDCHXmS4lJy4F&autoplay='0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,r.kt)("ol",{start:4},(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"/docs/next/Experiments/EEG%20Experiments/Recording%20EEG%20From%20Pre%20Frontal%20Cortex%20of%20Brain%20Using%20BioAmp%20EXG%20Pill/EEGExperiments"},"Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill"))),(0,r.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/QzZh243-Ac8?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,r.kt)("ol",{start:5},(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"/docs/next/Experiments/EOG%20Experiments/EOG%20EXPERIMENT/"},"Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill"))),(0,r.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/Txo7DjUr5Tk?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,r.kt)("ol",{start:6},(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"/docs/next/Experiments/EOG%20Experiments/BioAmp%20EXG%20Pill_Eye%20Blink%20Detection/"},"Eye Blink Detection by Recording EOG Using BioAmp EXG Pill"))),(0,r.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/4dnCX3U7LS8?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,r.kt)("ol",{start:7},(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"/docs/next/Experiments/EOG%20Experiments/Drowsiness%20Detector%20by%20Detecting%20EOG%20Signals%20Using%20BioAmp%20EXG%20Pill/"},"Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill"))),(0,r.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/h4F41mp4mWk?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}))}m.isMDXComponent=!0},88179:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/Back_Specifications-178846353b8a8651ee55b1e7b5857217.jpg"},24926:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/Basic-Circuit-3c557c14e703b44478416b4cf2de0fde.jpg"},78693:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/BioAmp_EXG_Pill-30c8452dde40eabb5ff4962b59ffdf7e.jpg"},1086:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/ECG-271d69a4e6385679e740c5df5610dc3b.jpg"},58078:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/EEG-7d3d0b900f9b4d049b65f94f1f8b38d4.jpg"},71852:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/EKG-9e75708af5c69465f18464d81cdaee88.jpg"},67241:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/EMG-8836017c790e8a9bd58c55ffb1b18696.jpg"},78700:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/EMGEnvelop-a01d3e7532496b847616b18c7998197d.jpg"},49093:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/EOG-Horizontal-c96c462f446e62d456d1ab0067e5ee2d.jpg"},83574:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/EOG-Vertical-9aad604e73ec578b4f0c79129a9e4bad.jpg"},85605:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/EXG_Recording-587360e7357d78a16f279325330eea66.jpg"},73927:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/Front_Specifications-ff99bd7457799bd7cc464ef5ccee72bc.jpg"},3671:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/PCB_Back-f354b2fc81a10d0fcd5205f1ea7119e4.png"},83430:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/PCB_Front-a77e35f0088a5ad5a3f64278fe073287.png"},6501:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/bioamp-Exg-Pill-ECG-0a043a7019c4dbe583be3b24579eeb70.jpg"},10458:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/bioamp-exg-pill-eeg-0f2e6e7fdf8b745ea003c7d667ac9931.jpg"},38541:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/bioamp-exg-pill-eog-electrode-placement-0768789c586ec2ae4f639365903d10d2.jpg"},77416:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/bioamp-exg-pill-eog-d10da240ce994bae59a9a60013b182d9.jpg"}}]); \ No newline at end of file diff --git a/assets/js/a625387d.7d2ad794.js b/assets/js/a625387d.7d2ad794.js deleted file mode 100644 index c67f02a0..00000000 --- a/assets/js/a625387d.7d2ad794.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8042],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>g});var i=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=i.createContext({}),c=function(e){var t=i.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},p=function(e){var t=c(e.components);return i.createElement(s.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},h=i.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,p=n(e,["components","mdxType","originalType","parentName"]),d=c(a),h=r,g=d["".concat(s,".").concat(h)]||d[h]||m[h]||o;return a?i.createElement(g,l(l({ref:t},p),{},{components:a})):i.createElement(g,l({ref:t},p))}));function g(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=h;var n={};for(var s in t)hasOwnProperty.call(t,s)&&(n[s]=t[s]);n.originalType=e,n[d]="string"==typeof e?e:r,l[1]=n;for(var c=2;c{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>n,toc:()=>c});var i=a(87462),r=(a(67294),a(3905));const o={sidebar_position:1},l="BioAmp EXG Pill",n={unversionedId:"BioAmp-Hardware/BioAmpEXGPill",id:"BioAmp-Hardware/BioAmpEXGPill",title:"BioAmp EXG Pill",description:"Professional-grade analog front-end amplification for ECG, EMG, EOG, and EEG biosensing on one tiny board",source:"@site/docs/BioAmp-Hardware/BioAmpEXGPill.md",sourceDirName:"BioAmp-Hardware",slug:"/BioAmp-Hardware/BioAmpEXGPill",permalink:"/docs/next/BioAmp-Hardware/BioAmpEXGPill",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/BioAmp-Hardware/BioAmpEXGPill.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"BioAmp Hardware",permalink:"/docs/next/category/bioamp-hardware"},next:{title:"DIY Muscle BioAmp Shield",permalink:"/docs/next/BioAmp-Hardware/DIYMuscleBioAmpShield"}},s={},c=[{value:"Overview",id:"overview",level:2},{value:"Features & Specifications",id:"features--specifications",level:2},{value:"Board layout",id:"board-layout",level:2},{value:"ElectroMyoGraphy (EMG)",id:"electromyography-emg",level:2},{value:"ElectroCardioGraphy (ECG)",id:"electrocardiography-ecg",level:2},{value:"Electrooculography (EOG)",id:"electrooculography-eog",level:2},{value:"Electroencephalography (EEG)",id:"electroencephalography-eeg",level:2},{value:"Glimpses of previous versions",id:"glimpses-of-previous-versions",level:2},{value:"Real-world Applications",id:"real-world-applications",level:2}],p={toc:c},d="wrapper";function m(e){let{components:t,...o}=e;return(0,r.kt)(d,(0,i.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"bioamp-exg-pill"},"BioAmp EXG Pill"),(0,r.kt)("p",null,"Professional-grade analog front-end amplification for ECG, EMG, EOG, and EEG biosensing on one tiny board"),(0,r.kt)("h2",{id:"overview"},"Overview"),(0,r.kt)("p",null,"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."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(78693).Z,width:"1920",height:"1080"})),(0,r.kt)("p",null,"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."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(24926).Z,width:"1920",height:"1080"}),"\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(85605).Z,width:"1920",height:"1080"})),(0,r.kt)("h2",{id:"features--specifications"},"Features & Specifications"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Features & Specifications"),(0,r.kt)("th",{parentName:"tr",align:"left"}))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Minimum Input Voltage"),(0,r.kt)("td",{parentName:"tr",align:"left"},"4.5-40 V")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Input Impedance"),(0,r.kt)("td",{parentName:"tr",align:"left"},"10^12 \u03a9")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Compatible Hardware"),(0,r.kt)("td",{parentName:"tr",align:"left"},"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)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"BioPotentials"),(0,r.kt)("td",{parentName:"tr",align:"left"},"EMG, ECG, EOG, EEG (configurable band-pass)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"No. of channels"),(0,r.kt)("td",{parentName:"tr",align:"left"},"1")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Electrodes"),(0,r.kt)("td",{parentName:"tr",align:"left"},"2 or 3 (configurable)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Dimensions"),(0,r.kt)("td",{parentName:"tr",align:"left"},"25.4 x 10 mm")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Designed for use with carrier board"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Yes")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Open Source"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Hardware + Software")))),(0,r.kt)("h2",{id:"board-layout"},"Board layout"),(0,r.kt)("p",null,"Images below shows a quick overview of the BioAmp EXG Pill hardware design."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"center"},"PCB Front"),(0,r.kt)("th",{parentName:"tr",align:"center"},"PCB Back"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},(0,r.kt)("img",{alt:"BioAMp EXG Pill",src:a(83430).Z,width:"4000",height:"1575"})),(0,r.kt)("td",{parentName:"tr",align:"center"},(0,r.kt)("img",{alt:"BioAMp EXG Pill",src:a(3671).Z,width:"4000",height:"1575"}))))),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(73927).Z,width:"1920",height:"1080"}),"\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(88179).Z,width:"1920",height:"1080"})),(0,r.kt)("h2",{id:"electromyography-emg"},"ElectroMyoGraphy (EMG)"),(0,r.kt)("p",null,"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.\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(78700).Z,width:"1366",height:"550"}),"\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(67241).Z,width:"1920",height:"1080"})),(0,r.kt)("h2",{id:"electrocardiography-ecg"},"ElectroCardioGraphy (ECG)"),(0,r.kt)("p",null,"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.\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(1086).Z,width:"1920",height:"1080"}),"\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(6501).Z,width:"1600",height:"694"}),"\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(71852).Z,width:"1920",height:"1080"})),(0,r.kt)("h2",{id:"electrooculography-eog"},"Electrooculography (EOG)"),(0,r.kt)("p",null,"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.\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(38541).Z,width:"1600",height:"900"})),(0,r.kt)("p",null,'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\u2019s 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.\n',(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(49093).Z,width:"1920",height:"1080"}),"\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(77416).Z,width:"1598",height:"527"}),"\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(83574).Z,width:"1920",height:"1080"})),(0,r.kt)("h2",{id:"electroencephalography-eeg"},"Electroencephalography (EEG)"),(0,r.kt)("p",null,"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.\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(10458).Z,width:"1600",height:"699"}),"\n",(0,r.kt)("img",{alt:"BioAmp EXG Pill",src:a(58078).Z,width:"1920",height:"1080"})),(0,r.kt)("h2",{id:"glimpses-of-previous-versions"},"Glimpses of previous versions"),(0,r.kt)("p",null,"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."),(0,r.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/-G3z9fvQnuw",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,r.kt)("p",null,"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."),(0,r.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/z9-B9bHWuhg",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,r.kt)("h2",{id:"real-world-applications"},"Real-world Applications"),(0,r.kt)("p",null,"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:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"AI-assisted detection of congestive heart failure using CNN (ECG)"),(0,r.kt)("li",{parentName:"ul"},"Heart-rate variability calculation to detect heart ailments (ECG)"),(0,r.kt)("li",{parentName:"ul"},"Prosthetic arm (servo) control (EMG)"),(0,r.kt)("li",{parentName:"ul"},"Controlling a 3DOF robotic arm (EMG)"),(0,r.kt)("li",{parentName:"ul"},"Quantitative analysis of physical therapy for palsy (EMG)"),(0,r.kt)("li",{parentName:"ul"},"Real-time game controllers (EOG)"),(0,r.kt)("li",{parentName:"ul"},"Blink detection (EOG)"),(0,r.kt)("li",{parentName:"ul"},"Capturing photos with a blink of an eye (EOG)"),(0,r.kt)("li",{parentName:"ul"},"Controlling LEDs via brain waves (EEG)"),(0,r.kt)("li",{parentName:"ul"},"Patient monitoring\nand many more examples.")))}m.isMDXComponent=!0},88179:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/Back_Specifications-178846353b8a8651ee55b1e7b5857217.jpg"},24926:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/Basic-Circuit-3c557c14e703b44478416b4cf2de0fde.jpg"},78693:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/BioAmp_EXG_Pill-30c8452dde40eabb5ff4962b59ffdf7e.jpg"},1086:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/ECG-271d69a4e6385679e740c5df5610dc3b.jpg"},58078:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/EEG-7d3d0b900f9b4d049b65f94f1f8b38d4.jpg"},71852:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/EKG-9e75708af5c69465f18464d81cdaee88.jpg"},67241:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/EMG-8836017c790e8a9bd58c55ffb1b18696.jpg"},78700:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/EMGEnvelop-a01d3e7532496b847616b18c7998197d.jpg"},49093:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/EOG-Horizontal-c96c462f446e62d456d1ab0067e5ee2d.jpg"},83574:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/EOG-Vertical-9aad604e73ec578b4f0c79129a9e4bad.jpg"},85605:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/EXG_Recording-587360e7357d78a16f279325330eea66.jpg"},73927:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/Front_Specifications-ff99bd7457799bd7cc464ef5ccee72bc.jpg"},3671:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/PCB_Back-f354b2fc81a10d0fcd5205f1ea7119e4.png"},83430:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/PCB_Front-a77e35f0088a5ad5a3f64278fe073287.png"},6501:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/bioamp-Exg-Pill-ECG-0a043a7019c4dbe583be3b24579eeb70.jpg"},10458:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/bioamp-exg-pill-eeg-0f2e6e7fdf8b745ea003c7d667ac9931.jpg"},38541:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/bioamp-exg-pill-eog-electrode-placement-0768789c586ec2ae4f639365903d10d2.jpg"},77416:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/bioamp-exg-pill-eog-d10da240ce994bae59a9a60013b182d9.jpg"}}]); \ No newline at end of file diff --git a/assets/js/a802568d.0768c241.js b/assets/js/a802568d.0768c241.js deleted file mode 100644 index 60320794..00000000 --- a/assets/js/a802568d.0768c241.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8373],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),p=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=p(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),d=p(a),u=n,h=d["".concat(c,".").concat(u)]||d[u]||m[u]||o;return a?r.createElement(h,i(i({ref:t},s),{},{components:a})):r.createElement(h,i({ref:t},s))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=u;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={sidebar_position:3},i="Muscle BioAmp Patchy",l={unversionedId:"BioAmp-Hardware/MuscleBioAmpPatchy",id:"BioAmp-Hardware/MuscleBioAmpPatchy",title:"Muscle BioAmp Patchy",description:"Wearable ElectroMyoGraphy (EMG) sensor",source:"@site/docs/BioAmp-Hardware/MuscleBioAmpPatchy.md",sourceDirName:"BioAmp-Hardware",slug:"/BioAmp-Hardware/MuscleBioAmpPatchy",permalink:"/docs/next/BioAmp-Hardware/MuscleBioAmpPatchy",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/BioAmp-Hardware/MuscleBioAmpPatchy.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"DIY Muscle BioAmp Shield",permalink:"/docs/next/BioAmp-Hardware/DIYMuscleBioAmpShield"},next:{title:"Muscle BioAmp Candy",permalink:"/docs/next/BioAmp-Hardware/MuscleBioAmpCandy"}},c={},p=[{value:"Overview",id:"overview",level:2},{value:"Hardware",id:"hardware",level:2},{value:"Connecting with Arduino",id:"connecting-with-arduino",level:2},{value:"Demonstration",id:"demonstration",level:2}],s={toc:p},d="wrapper";function m(e){let{components:t,...o}=e;return(0,n.kt)(d,(0,r.Z)({},s,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"muscle-bioamp-patchy"},"Muscle BioAmp Patchy"),(0,n.kt)("p",null,"Wearable ElectroMyoGraphy (EMG) sensor"),(0,n.kt)("h2",{id:"overview"},"Overview"),(0,n.kt)("p",null,"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)."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Muscle BioAmp Patchy",src:a(6939).Z,width:"1920",height:"1080"})," "),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Features & Specifications"),(0,n.kt)("th",{parentName:"tr",align:"left"}))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Minimum Input Voltage"),(0,n.kt)("td",{parentName:"tr",align:"left"},"4.5 V")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Input Impedance"),(0,n.kt)("td",{parentName:"tr",align:"left"},"10^12 \u03a9")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Fixed Gain"),(0,n.kt)("td",{parentName:"tr",align:"left"},"x2420")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Bandpass filter"),(0,n.kt)("td",{parentName:"tr",align:"left"},"72 \u2013 720 Hz")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Wearable"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Yes")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Compatible Hardware"),(0,n.kt)("td",{parentName:"tr",align:"left"},"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)")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BioPotentials"),(0,n.kt)("td",{parentName:"tr",align:"left"},"EMG (Electromyography)")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"No. of channels"),(0,n.kt)("td",{parentName:"tr",align:"left"},"1")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Electrodes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"3 (Positive, Negative, and Reference)")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Dimensions"),(0,n.kt)("td",{parentName:"tr",align:"left"},"47 x 14 mm")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Open Source"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Hardware + Software")))),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=qRKU_HvapDE&"},(0,n.kt)("img",{alt:"Muscle BioAmp Patchy",src:a(99901).Z,width:"1280",height:"720"}))),(0,n.kt)("h2",{id:"hardware"},"Hardware"),(0,n.kt)("p",null,"Images below shows a quick overview of the hardware design."),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"center"},"PCB front"),(0,n.kt)("th",{parentName:"tr",align:"center"},"PCB back"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{alt:"Muscle BioAmp Patchy",src:a(36501).Z,width:"3826",height:"1140"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{alt:"Muscle BioAmp Patchy",src:a(8110).Z,width:"3826",height:"1140"}))))),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Muscle BioAmp Patchy",src:a(27167).Z,width:"3826",height:"1381"})),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Muscle BioAmp Patchy",src:a(82245).Z,width:"3826",height:"1140"})," "),(0,n.kt)("h2",{id:"connecting-with-arduino"},"Connecting with Arduino"),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,"For the connections and electrode placements, you can follow the diagram given below:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Muscle BioAmp Patchy Connections",src:a(62556).Z,width:"1920",height:"1080"})),(0,n.kt)("h2",{id:"demonstration"},"Demonstration"),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=4dnCX3U7LS8&"},(0,n.kt)("img",{alt:"Muscle BioAmp Patchy",src:a(26500).Z,width:"1280",height:"720"}))))}m.isMDXComponent=!0},82245:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle-BioAmp-Patchy-Assembled-Back-00fcb0de46fea3effe273a89f7ec5d68.png"},27167:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle-BioAmp-Patchy-Assembled-Front-e4d1af3e45bc52f2b345302fd8a490f2.png"},8110:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/PCB-Back-87a1df2eee5ba0d4e990196f297d99ac.png"},36501:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/PCB-Front-9990912e834a6e4ef54bcca586a0cd37.png"},6939:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Patchy-All-Colors-8a5699d32b5d98fdc07fda581e955b69.jpg"},62556:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Patchy-Arduino-Connections-0c7032afaf57481e9ee8610cdb978a46.jpg"},99901:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/patchy_Intro_YT-a9e5cb968970868abaff0e44b55adabb.jpg"},26500:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/patchy_demo_thumbnail-a79b320aef6496b7db79f8f6064ef0bf.jpg"}}]); \ No newline at end of file diff --git a/assets/js/a802568d.a39102d4.js b/assets/js/a802568d.a39102d4.js new file mode 100644 index 00000000..d3b4fdfa --- /dev/null +++ b/assets/js/a802568d.a39102d4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8373],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),s=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(a),u=n,h=d["".concat(c,".").concat(u)]||d[u]||m[u]||o;return a?r.createElement(h,i(i({ref:t},p),{},{components:a})):r.createElement(h,i({ref:t},p))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=u;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var s=2;s{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const o={sidebar_position:3},i="Muscle BioAmp Patchy",l={unversionedId:"BioAmp-Hardware/MuscleBioAmpPatchy",id:"BioAmp-Hardware/MuscleBioAmpPatchy",title:"Muscle BioAmp Patchy",description:"Wearable ElectroMyoGraphy (EMG) sensor",source:"@site/docs/BioAmp-Hardware/MuscleBioAmpPatchy.md",sourceDirName:"BioAmp-Hardware",slug:"/BioAmp-Hardware/MuscleBioAmpPatchy",permalink:"/docs/next/BioAmp-Hardware/MuscleBioAmpPatchy",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/BioAmp-Hardware/MuscleBioAmpPatchy.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"DIY Muscle BioAmp Shield",permalink:"/docs/next/BioAmp-Hardware/DIYMuscleBioAmpShield"},next:{title:"Muscle BioAmp Candy",permalink:"/docs/next/BioAmp-Hardware/MuscleBioAmpCandy"}},c={},s=[{value:"Overview",id:"overview",level:2},{value:"Hardware",id:"hardware",level:2},{value:"Connecting with Arduino",id:"connecting-with-arduino",level:2},{value:"Demonstration",id:"demonstration",level:2},{value:"Some project ideas",id:"some-project-ideas",level:2}],p={toc:s},d="wrapper";function m(e){let{components:t,...o}=e;return(0,n.kt)(d,(0,r.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"muscle-bioamp-patchy"},"Muscle BioAmp Patchy"),(0,n.kt)("p",null,"Wearable ElectroMyoGraphy (EMG) sensor"),(0,n.kt)("h2",{id:"overview"},"Overview"),(0,n.kt)("p",null,"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)."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Muscle BioAmp Patchy",src:a(6939).Z,width:"1920",height:"1080"})," "),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"},"Features & Specifications"),(0,n.kt)("th",{parentName:"tr",align:"left"}))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Minimum Input Voltage"),(0,n.kt)("td",{parentName:"tr",align:"left"},"4.5 V")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Input Impedance"),(0,n.kt)("td",{parentName:"tr",align:"left"},"10^12 \u03a9")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Fixed Gain"),(0,n.kt)("td",{parentName:"tr",align:"left"},"x2420")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Bandpass filter"),(0,n.kt)("td",{parentName:"tr",align:"left"},"72 \u2013 720 Hz")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Wearable"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Yes")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Compatible Hardware"),(0,n.kt)("td",{parentName:"tr",align:"left"},"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)")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BioPotentials"),(0,n.kt)("td",{parentName:"tr",align:"left"},"EMG (Electromyography)")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"No. of channels"),(0,n.kt)("td",{parentName:"tr",align:"left"},"1")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Electrodes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"3 (Positive, Negative, and Reference)")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Dimensions"),(0,n.kt)("td",{parentName:"tr",align:"left"},"47 x 14 mm")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Open Source"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Hardware + Software")))),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=qRKU_HvapDE&"},(0,n.kt)("img",{alt:"Muscle BioAmp Patchy",src:a(99901).Z,width:"1280",height:"720"}))),(0,n.kt)("h2",{id:"hardware"},"Hardware"),(0,n.kt)("p",null,"Images below shows a quick overview of the hardware design."),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"center"},"PCB front"),(0,n.kt)("th",{parentName:"tr",align:"center"},"PCB back"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{alt:"Muscle BioAmp Patchy",src:a(36501).Z,width:"3826",height:"1140"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{alt:"Muscle BioAmp Patchy",src:a(8110).Z,width:"3826",height:"1140"}))))),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Muscle BioAmp Patchy",src:a(27167).Z,width:"3826",height:"1381"})),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Muscle BioAmp Patchy",src:a(82245).Z,width:"3826",height:"1140"})," "),(0,n.kt)("h2",{id:"connecting-with-arduino"},"Connecting with Arduino"),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,"For the connections and electrode placements, you can follow the diagram given below:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Muscle BioAmp Patchy Connections",src:a(62556).Z,width:"1920",height:"1080"})),(0,n.kt)("h2",{id:"demonstration"},"Demonstration"),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=4dnCX3U7LS8&"},(0,n.kt)("img",{alt:"Muscle BioAmp Patchy",src:a(26500).Z,width:"1280",height:"720"}))),(0,n.kt)("h2",{id:"some-project-ideas"},"Some project ideas"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("a",{parentName:"li",href:"/docs/next/Experiments/EMG%20Experiments/BisCute%20Visualize%20EMG/EMGExperiment1"},"Recording and Visualizing Muscle Signals (EMG) Using Muscle BioAmp Patchy (wearable Muscle Sensor)"))),(0,n.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/4dnCX3U7LS8?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}))}m.isMDXComponent=!0},82245:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle-BioAmp-Patchy-Assembled-Back-00fcb0de46fea3effe273a89f7ec5d68.png"},27167:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle-BioAmp-Patchy-Assembled-Front-e4d1af3e45bc52f2b345302fd8a490f2.png"},8110:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/PCB-Back-87a1df2eee5ba0d4e990196f297d99ac.png"},36501:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/PCB-Front-9990912e834a6e4ef54bcca586a0cd37.png"},6939:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Patchy-All-Colors-8a5699d32b5d98fdc07fda581e955b69.jpg"},62556:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Patchy-Arduino-Connections-0c7032afaf57481e9ee8610cdb978a46.jpg"},99901:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/patchy_Intro_YT-a9e5cb968970868abaff0e44b55adabb.jpg"},26500:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/patchy_demo_thumbnail-a79b320aef6496b7db79f8f6064ef0bf.jpg"}}]); \ No newline at end of file diff --git a/assets/js/b20c8343.ac26fba6.js b/assets/js/b20c8343.ac26fba6.js deleted file mode 100644 index fd8977c3..00000000 --- a/assets/js/b20c8343.ac26fba6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3066],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var i=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function r(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=i.createContext({}),p=function(e){var t=i.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},c=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(n),m=a,h=u["".concat(s,".").concat(m)]||u[m]||d[m]||o;return n?i.createElement(h,r(r({ref:t},c),{},{components:n})):i.createElement(h,r({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,r=new Array(o);r[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:a,r[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var i=n(87462),a=(n(67294),n(3905));const o={sidebar_position:1},r="Recording and Visualizing Muscle Signals (EMG) Using Muscle BioAmp Patchy (wearable Muscle Sensor)",l={unversionedId:"Experiments/EMG Experiments/EMGExperiment1/EMGExperiment1",id:"Experiments/EMG Experiments/EMGExperiment1/EMGExperiment1",title:"Recording and Visualizing Muscle Signals (EMG) Using Muscle BioAmp Patchy (wearable Muscle Sensor)",description:"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.",source:"@site/docs/Experiments/EMG Experiments/EMGExperiment1/EMGExperiment1.md",sourceDirName:"Experiments/EMG Experiments/EMGExperiment1",slug:"/Experiments/EMG Experiments/EMGExperiment1/",permalink:"/docs/next/Experiments/EMG Experiments/EMGExperiment1/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/EMG Experiments/EMGExperiment1/EMGExperiment1.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"EEG Experiments",permalink:"/docs/next/Experiments/EEG Experiments/EEGExperiments"},next:{title:"Visualizing Muscle Signals (EMG)",permalink:"/docs/next/Experiments/EMG Experiments/BisCute_Visualize EMG/"}},s={},p=[{value:"What is Electromyography (EMG)?",id:"what-is-electromyography-emg",level:2},{value:"About Muscle BioAmp Patchy:",id:"about-muscle-bioamp-patchy",level:3},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE",id:"hardware",level:2},{value:"SOFTWARE:",id:"software",level:2},{value:"Step 1: Connecting Reference Cable",id:"step-1-connecting-reference-cable",level:2},{value:"Step 2: Connecting Muscle BioAmp Patchy to Gel Electrodes",id:"step-2-connecting-muscle-bioamp-patchy-to-gel-electrodes",level:2},{value:"Step 3: Skin Preparation",id:"step-3-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 4: Electrode Placements",id:"step-4-electrode-placements",level:2},{value:"Step 5: Connections",id:"step-5-connections",level:2},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide",level:2},{value:"Step 7: Check All the Conections",id:"step-7-check-all-the-conections",level:2},{value:"Step 8: Coding Time!",id:"step-8-coding-time",level:2},{value:"Step 9: Flex Your Muscle",id:"step-9-flex-your-muscle",level:2}],c={toc:p},u="wrapper";function d(e){let{components:t,...o}=e;return(0,a.kt)(u,(0,i.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"recording-and-visualizing-muscle-signals-emg-using-muscle-bioamp-patchy-wearable-muscle-sensor"},"Recording and Visualizing Muscle Signals (EMG) Using Muscle BioAmp Patchy (wearable Muscle Sensor)"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(5709).Z,width:"1920",height:"1080"}),"\n",(0,a.kt)("img",{src:n(58323).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,"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."),(0,a.kt)("p",null,"But before moving forward, let's understand a brief about Electromyography."),(0,a.kt)("h2",{id:"what-is-electromyography-emg"},"What is Electromyography (EMG)?"),(0,a.kt)("p",null,"Electromyography (EMG) is a technique for evaluating and recording the electrical activity produced by skeletal muscles."),(0,a.kt)("p",null,"Some applications of EMG:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Prosthetic hands, "),(0,a.kt)("li",{parentName:"ol"},"Human augmentation, "),(0,a.kt)("li",{parentName:"ol"},"Games controllers, "),(0,a.kt)("li",{parentName:"ol"},"Rehabilitation and "),(0,a.kt)("li",{parentName:"ol"},"Physical therapy\nEven doctors are using them for the diagnosis of various neuromuscular ailments.")),(0,a.kt)("p",null,"Recently, it was in the news that ",(0,a.kt)("a",{parentName:"p",href:"https://tech.facebook.com/reality-labs/2021/03/inside-facebook-reality-labs-wrist-based-interaction-for-the-next-computing-platform/"},"Meta is working on wearable EMG sensors")," to track user movements in the metaverse."),(0,a.kt)("h3",{id:"about-muscle-bioamp-patchy"},"About Muscle BioAmp Patchy:"),(0,a.kt)("p",null,"Muscle BioAmp Patchy is a small ",(0,a.kt)("strong",{parentName:"p"},"wearable muscle sensor")," for precise EMG sensing. It can be snapped directly to the electrodes, eliminating electrode cables."),(0,a.kt)("h2",{id:"supplies"},"Supplies"),(0,a.kt)("h2",{id:"hardware"},"HARDWARE"),(0,a.kt)("p",null,"1 x Muscle BioAmp Patchy Kit (",(0,a.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-patchy-v0-2/"},"Upside Down Labs Store")," | ",(0,a.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0C4P2JB7J?ref=myi_title_dp&th=1"},"Amazon India")," | ",(0,a.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-patchy-wearable-muscle-sensor/"},"Tindie India"),")"),(0,a.kt)("p",null,"The kit will include:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"1 Muscle BioAmp Patchy,"),(0,a.kt)("li",{parentName:"ul"},"1 Reference Cable,"),(0,a.kt)("li",{parentName:"ul"},"3 Jumper Wires,"),(0,a.kt)("li",{parentName:"ul"},"3 Boxy Gel Electrodes")),(0,a.kt)("p",null,"1 x Arduino Uno with USB Cable"),(0,a.kt)("p",null,"1 x Nuprep Skin Preparation Gel (",(0,a.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/nuprep-gel/"},"Upside Down Labs Store")," | ",(0,a.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/"},"Tindie Store"),")"),(0,a.kt)("p",null,"1 x Wet wipe"),(0,a.kt)("h2",{id:"software"},"SOFTWARE:"),(0,a.kt)("p",null,"Ardiuno IDE"),(0,a.kt)("h2",{id:"step-1-connecting-reference-cable"},"Step 1: Connecting Reference Cable"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(83508).Z,width:"1920",height:"722"})),(0,a.kt)("p",null,"Connect the reference cable to the Muscle BioAmp Patchy as shown in the above diagram."),(0,a.kt)("h2",{id:"step-2-connecting-muscle-bioamp-patchy-to-gel-electrodes"},"Step 2: Connecting Muscle BioAmp Patchy to Gel Electrodes"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(51405).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,"Connect the Muscle BioAmp Patchy to gel electrodes (Don't peel the plastic from the electrodes at this moment)."),(0,a.kt)("h2",{id:"step-3-skin-preparation"},"Step 3: Skin Preparation"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:n(78782).Z,width:"1152",height:"648"})),(0,a.kt)("p",null,"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."),(0,a.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,a.kt)("p",null,"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."),(0,a.kt)("h2",{id:"step-4-electrode-placements"},"Step 4: Electrode Placements"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(98131).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,"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."),(0,a.kt)("h2",{id:"step-5-connections"},"Step 5: Connections"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(73491).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,"Connect the Muscle BioAmp Patchy to your Arduino Uno using jumper cables as directed below:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"OUT to A0"),(0,a.kt)("li",{parentName:"ol"},"GND to GND"),(0,a.kt)("li",{parentName:"ol"},"VCC to 5V")),(0,a.kt)("h2",{id:"step-6-download-arduino-ide"},"Step 6: Download Arduino IDE"),(0,a.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,a.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,a.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Note:")," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,a.kt)("h2",{id:"step-7-check-all-the-conections"},"Step 7: Check All the Conections"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(37828).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,"Now that you have made all the connections and downloaded the Arduino IDE. Once again check everything as shown in the diagram."),(0,a.kt)("h2",{id:"step-8-coding-time"},"Step 8: Coding Time!"),(0,a.kt)("p",null,"Copy paste any one of the Arduino Sketches given below in Arduino IDE:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"EMG Envelop: ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino")),(0,a.kt)("li",{parentName:"ol"},"EMG Filter: ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino"))),(0,a.kt)("p",null,"After flashing the code, open the serial plotter to visualize the EMG signals."),(0,a.kt)("h2",{id:"step-9-flex-your-muscle"},"Step 9: Flex Your Muscle"),(0,a.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/4dnCX3U7LS8?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,a.kt)("p",null,"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."),(0,a.kt)("p",null,"You are all set to explore on your own and make amazing HCI projects at the comfort zone of your home."),(0,a.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,a.kt)("p",null,"You can also mail us at ",(0,a.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}d.isMDXComponent=!0},78782:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Skin_Prep-b4d5612273462b52bb1603d108aba7c0.gif"},5709:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/emgimg1-0ee6de2145db2f2bdf0dd51bbac0d39d.jpg"},58323:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/emgimg2-4ff2a4c8bf17caac9535605a305cc9df.jpg"},83508:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/emgimg3-54c2a6705ba0a621ddd1b3c37b422787.jpg"},51405:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/emgimg4-9a22d8e62944934e54d5d7222c1d34d1.jpg"},98131:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/emgimg5-75632a1c1b5d514d0bb7a8509338c4ea.jpg"},73491:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/emgimg6-8d6a16809cefd082130e9f605676e5a7.jpg"},37828:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/emgimg7-3d538460e13eba32ea1f9883e6f86e1f.jpg"}}]); \ No newline at end of file diff --git a/assets/js/b2f554cd.09736b46.js b/assets/js/b2f554cd.09736b46.js deleted file mode 100644 index e2260cbb..00000000 --- a/assets/js/b2f554cd.09736b46.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1477],{30010:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"/2023/05/10/new-code","metadata":{"permalink":"/blog/2023/05/10/new-code","editUrl":"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2023-05-10-new-code.md","source":"@site/blog/2023-05-10-new-code.md","title":"new-code","description":"","date":"2023-05-10T00:00:00.000Z","formattedDate":"May 10, 2023","tags":[],"readingTime":0,"hasTruncateMarker":false,"authors":[],"frontMatter":{},"nextItem":{"title":"patchy-launch","permalink":"/blog/2023/05/10/patchy-launch"}},"content":""},{"id":"/2023/05/10/patchy-launch","metadata":{"permalink":"/blog/2023/05/10/patchy-launch","editUrl":"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2023-05-10-patchy-launch/index.md","source":"@site/blog/2023-05-10-patchy-launch/index.md","title":"patchy-launch","description":"","date":"2023-05-10T00:00:00.000Z","formattedDate":"May 10, 2023","tags":[],"readingTime":0,"hasTruncateMarker":false,"authors":[],"frontMatter":{},"prevItem":{"title":"new-code","permalink":"/blog/2023/05/10/new-code"},"nextItem":{"title":"Welcome","permalink":"/blog/welcome"}},"content":""},{"id":"welcome","metadata":{"permalink":"/blog/welcome","editUrl":"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2021-08-26-welcome/index.md","source":"@site/blog/2021-08-26-welcome/index.md","title":"Welcome","description":"Docusaurus blogging features are powered by the blog plugin.","date":"2021-08-26T00:00:00.000Z","formattedDate":"August 26, 2021","tags":[{"label":"facebook","permalink":"/blog/tags/facebook"},{"label":"hello","permalink":"/blog/tags/hello"},{"label":"docusaurus","permalink":"/blog/tags/docusaurus"}],"readingTime":0.405,"hasTruncateMarker":false,"authors":[{"name":"Deepak Khatri","title":"Head of Engineering","url":"https://github.com/lorforlinux","imageURL":"https://github.com/lorforlinux.png","key":"lorforlinux"}],"frontMatter":{"slug":"welcome","title":"Welcome","authors":["lorforlinux"],"tags":["facebook","hello","docusaurus"]},"prevItem":{"title":"patchy-launch","permalink":"/blog/2023/05/10/patchy-launch"},"nextItem":{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post"}},"content":"[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).\\n\\nSimply add Markdown files (or folders) to the `blog` directory.\\n\\nRegular blog authors can be added to `authors.yml`.\\n\\nThe blog post date can be extracted from filenames, such as:\\n\\n- `2019-05-30-welcome.md`\\n- `2019-05-30-welcome/index.md`\\n\\nA blog post folder can be convenient to co-locate blog post images:\\n\\n![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg)\\n\\nThe blog supports tags as well!\\n\\n**And if you don\'t want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config."},{"id":"mdx-blog-post","metadata":{"permalink":"/blog/mdx-blog-post","editUrl":"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2021-08-01-mdx-blog-post.mdx","source":"@site/blog/2021-08-01-mdx-blog-post.mdx","title":"MDX Blog Post","description":"Blog posts support Docusaurus Markdown features, such as MDX.","date":"2021-08-01T00:00:00.000Z","formattedDate":"August 1, 2021","tags":[{"label":"docusaurus","permalink":"/blog/tags/docusaurus"}],"readingTime":0.205,"hasTruncateMarker":false,"authors":[{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"}],"frontMatter":{"slug":"mdx-blog-post","title":"MDX Blog Post","authors":{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"},"tags":["docusaurus"]},"prevItem":{"title":"Welcome","permalink":"/blog/welcome"},"nextItem":{"title":"Long Blog Post","permalink":"/blog/long-blog-post"}},"content":"Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).\\n\\n:::tip\\n\\nUse the power of React to create interactive blog posts.\\n\\n```js\\n\\n```\\n\\n\\n\\n:::\\n\\n``` python live\\n\\nmy code\\n\\n```"},{"id":"long-blog-post","metadata":{"permalink":"/blog/long-blog-post","editUrl":"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2019-05-29-long-blog-post.md","source":"@site/blog/2019-05-29-long-blog-post.md","title":"Long Blog Post","description":"This is the summary of a very long blog post,","date":"2019-05-29T00:00:00.000Z","formattedDate":"May 29, 2019","tags":[{"label":"hello","permalink":"/blog/tags/hello"},{"label":"docusaurus","permalink":"/blog/tags/docusaurus"}],"readingTime":2.05,"hasTruncateMarker":true,"authors":[{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"}],"frontMatter":{"slug":"long-blog-post","title":"Long Blog Post","authors":{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"},"tags":["hello","docusaurus"]},"prevItem":{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post"},"nextItem":{"title":"First Blog Post","permalink":"/blog/first-blog-post"}},"content":"This is the summary of a very long blog post,\\n\\nUse a `\x3c!--` `truncate` `--\x3e` comment to limit blog post size in the list view.\\n\\n\x3c!--truncate--\x3e\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"},{"id":"first-blog-post","metadata":{"permalink":"/blog/first-blog-post","editUrl":"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2019-05-28-first-blog-post.md","source":"@site/blog/2019-05-28-first-blog-post.md","title":"First Blog Post","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet","date":"2019-05-28T00:00:00.000Z","formattedDate":"May 28, 2019","tags":[{"label":"hola","permalink":"/blog/tags/hola"},{"label":"docusaurus","permalink":"/blog/tags/docusaurus"}],"readingTime":0.12,"hasTruncateMarker":false,"authors":[{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"}],"frontMatter":{"slug":"first-blog-post","title":"First Blog Post","authors":{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"},"tags":["hola","docusaurus"]},"prevItem":{"title":"Long Blog Post","permalink":"/blog/long-blog-post"}},"content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}]}')}}]); \ No newline at end of file diff --git a/assets/js/b2f554cd.20362417.js b/assets/js/b2f554cd.20362417.js new file mode 100644 index 00000000..9ba4591e --- /dev/null +++ b/assets/js/b2f554cd.20362417.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1477],{30010:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"/2023/05/10/Soldering","metadata":{"permalink":"/blog/2023/05/10/Soldering","editUrl":"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2023-05-10-Soldering.md","source":"@site/blog/2023-05-10-Soldering.md","title":"Soldering","description":"Soldering is one of the most fundamental skills needed to dabble in the world of electronics. The two go together like peas and carrots. And, although it is possible to learn about and build electronics without needing to pick up a soldering iron, you\'ll soon discover that a whole new world is opened with this one simple skill.","date":"2023-05-10T00:00:00.000Z","formattedDate":"May 10, 2023","tags":[],"readingTime":1.375,"hasTruncateMarker":false,"authors":[],"frontMatter":{},"nextItem":{"title":"patchy-launch","permalink":"/blog/2023/05/10/patchy-launch"}},"content":"Soldering is one of the most fundamental skills needed to dabble in the world of electronics. The two go together like peas and carrots. And, although it is possible to learn about and build electronics without needing to pick up a soldering iron, you\'ll soon discover that a whole new world is opened with this one simple skill.\\n\\nSoldering is a process used in electronics and metalwork to join two or more pieces of metal together by melting a filler metal, called solder, which has a lower melting point than the pieces being joined. \\n\\n### Here\'s how soldering typically works:\\n\\n1. ***Preparation***: The surfaces to be joined are cleaned and prepared to ensure a good connection. This often involves removing any oxidation or contaminants from the metal.\\n\\n2. ***Heating***: A soldering iron or soldering gun is used to heat the metal parts to be joined. The soldering tool reaches a temperature high enough to melt the solder but not so high that it damages the components or materials being soldered.\\n\\n3. ***Application of Solder***: When the metal surfaces are hot enough, the solder is applied to the joint. The solder melts and flows into the gap between the metal parts, forming a strong and electrically conductive bond when it cools and solidifies.\\n\\n4. ***Cooling***: As the solder cools and solidifies, it forms a solid connection, effectively joining the pieces of metal together.\\n\\nSoldering is commonly used in various applications, including assembling electronic circuits, repairing electrical connections, plumbing, jewelry making, and more. It is a fundamental technique in many industries that require precise and reliable metal connections.\\n\\nCheckout the article to know more about Soldering\\n\\nhttps://learn.sparkfun.com/tutorials/how-to-solder-through-hole-soldering/all"},{"id":"/2023/05/10/patchy-launch","metadata":{"permalink":"/blog/2023/05/10/patchy-launch","editUrl":"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2023-05-10-patchy-launch/index.md","source":"@site/blog/2023-05-10-patchy-launch/index.md","title":"patchy-launch","description":"","date":"2023-05-10T00:00:00.000Z","formattedDate":"May 10, 2023","tags":[],"readingTime":0,"hasTruncateMarker":false,"authors":[],"frontMatter":{},"prevItem":{"title":"Soldering","permalink":"/blog/2023/05/10/Soldering"},"nextItem":{"title":"Welcome","permalink":"/blog/welcome"}},"content":""},{"id":"welcome","metadata":{"permalink":"/blog/welcome","editUrl":"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2021-08-26-welcome/index.md","source":"@site/blog/2021-08-26-welcome/index.md","title":"Welcome","description":"Docusaurus blogging features are powered by the blog plugin.","date":"2021-08-26T00:00:00.000Z","formattedDate":"August 26, 2021","tags":[{"label":"facebook","permalink":"/blog/tags/facebook"},{"label":"hello","permalink":"/blog/tags/hello"},{"label":"docusaurus","permalink":"/blog/tags/docusaurus"}],"readingTime":0.405,"hasTruncateMarker":false,"authors":[{"name":"Deepak Khatri","title":"Head of Engineering","url":"https://github.com/lorforlinux","imageURL":"https://github.com/lorforlinux.png","key":"lorforlinux"}],"frontMatter":{"slug":"welcome","title":"Welcome","authors":["lorforlinux"],"tags":["facebook","hello","docusaurus"]},"prevItem":{"title":"patchy-launch","permalink":"/blog/2023/05/10/patchy-launch"},"nextItem":{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post"}},"content":"[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).\\n\\nSimply add Markdown files (or folders) to the `blog` directory.\\n\\nRegular blog authors can be added to `authors.yml`.\\n\\nThe blog post date can be extracted from filenames, such as:\\n\\n- `2019-05-30-welcome.md`\\n- `2019-05-30-welcome/index.md`\\n\\nA blog post folder can be convenient to co-locate blog post images:\\n\\n![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg)\\n\\nThe blog supports tags as well!\\n\\n**And if you don\'t want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config."},{"id":"mdx-blog-post","metadata":{"permalink":"/blog/mdx-blog-post","editUrl":"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2021-08-01-mdx-blog-post.mdx","source":"@site/blog/2021-08-01-mdx-blog-post.mdx","title":"MDX Blog Post","description":"Blog posts support Docusaurus Markdown features, such as MDX.","date":"2021-08-01T00:00:00.000Z","formattedDate":"August 1, 2021","tags":[{"label":"docusaurus","permalink":"/blog/tags/docusaurus"}],"readingTime":0.205,"hasTruncateMarker":false,"authors":[{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"}],"frontMatter":{"slug":"mdx-blog-post","title":"MDX Blog Post","authors":{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"},"tags":["docusaurus"]},"prevItem":{"title":"Welcome","permalink":"/blog/welcome"},"nextItem":{"title":"Long Blog Post","permalink":"/blog/long-blog-post"}},"content":"Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).\\n\\n:::tip\\n\\nUse the power of React to create interactive blog posts.\\n\\n```js\\n\\n```\\n\\n\\n\\n:::\\n\\n``` python live\\n\\nmy code\\n\\n```"},{"id":"long-blog-post","metadata":{"permalink":"/blog/long-blog-post","editUrl":"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2019-05-29-long-blog-post.md","source":"@site/blog/2019-05-29-long-blog-post.md","title":"Long Blog Post","description":"This is the summary of a very long blog post,","date":"2019-05-29T00:00:00.000Z","formattedDate":"May 29, 2019","tags":[{"label":"hello","permalink":"/blog/tags/hello"},{"label":"docusaurus","permalink":"/blog/tags/docusaurus"}],"readingTime":2.05,"hasTruncateMarker":true,"authors":[{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"}],"frontMatter":{"slug":"long-blog-post","title":"Long Blog Post","authors":{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"},"tags":["hello","docusaurus"]},"prevItem":{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post"},"nextItem":{"title":"First Blog Post","permalink":"/blog/first-blog-post"}},"content":"This is the summary of a very long blog post,\\n\\nUse a `\x3c!--` `truncate` `--\x3e` comment to limit blog post size in the list view.\\n\\n\x3c!--truncate--\x3e\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"},{"id":"first-blog-post","metadata":{"permalink":"/blog/first-blog-post","editUrl":"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2019-05-28-first-blog-post.md","source":"@site/blog/2019-05-28-first-blog-post.md","title":"First Blog Post","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet","date":"2019-05-28T00:00:00.000Z","formattedDate":"May 28, 2019","tags":[{"label":"hola","permalink":"/blog/tags/hola"},{"label":"docusaurus","permalink":"/blog/tags/docusaurus"}],"readingTime":0.12,"hasTruncateMarker":false,"authors":[{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"}],"frontMatter":{"slug":"first-blog-post","title":"First Blog Post","authors":{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"},"tags":["hola","docusaurus"]},"prevItem":{"title":"Long Blog Post","permalink":"/blog/long-blog-post"}},"content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}]}')}}]); \ No newline at end of file diff --git a/assets/js/c35ecb69.d8d24f89.js b/assets/js/c35ecb69.d8d24f89.js deleted file mode 100644 index ece8c26b..00000000 --- a/assets/js/c35ecb69.d8d24f89.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[7127],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>y});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},s="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),s=p(r),m=o,y=s["".concat(l,".").concat(m)]||s[m]||f[m]||a;return r?n.createElement(y,c(c({ref:t},u),{},{components:r})):n.createElement(y,c({ref:t},u))}));function y(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,c=new Array(a);c[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[s]="string"==typeof e?e:o,c[1]=i;for(var p=2;p{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>f,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var n=r(87462),o=(r(67294),r(3905));const a={},c=void 0,i={permalink:"/blog/2023/05/10/new-code",editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2023-05-10-new-code.md",source:"@site/blog/2023-05-10-new-code.md",title:"new-code",description:"",date:"2023-05-10T00:00:00.000Z",formattedDate:"May 10, 2023",tags:[],readingTime:0,hasTruncateMarker:!1,authors:[],frontMatter:{},nextItem:{title:"patchy-launch",permalink:"/blog/2023/05/10/patchy-launch"}},l={authorsImageUrls:[]},p=[],u={toc:p},s="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(s,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c60df31a.176cbc28.js b/assets/js/c60df31a.176cbc28.js new file mode 100644 index 00000000..3efccc7e --- /dev/null +++ b/assets/js/c60df31a.176cbc28.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9756],{3905:(e,t,i)=>{i.d(t,{Zo:()=>d,kt:()=>g});var n=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function r(e){for(var t=1;t=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var s=n.createContext({}),p=function(e){var t=n.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},d=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var i=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=p(i),m=a,g=c["".concat(s,".").concat(m)]||c[m]||u[m]||o;return i?n.createElement(g,r(r({ref:t},d),{},{components:i})):n.createElement(g,r({ref:t},d))}));function g(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=i.length,r=new Array(o);r[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:a,r[1]=l;for(var p=2;p{i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var n=i(87462),a=(i(67294),i(3905));const o={},r="Measuring Heart Rate Using BioAmp EXG Pill",l={unversionedId:"Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill/Measuring Heart Rate Using BioAmp EXG Pill",id:"Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill/Measuring Heart Rate Using BioAmp EXG Pill",title:"Measuring Heart Rate Using BioAmp EXG Pill",description:"In this project we will be measuring heart rate using BioAmp EXG Pill.",source:"@site/docs/Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill/Measuring Heart Rate Using BioAmp EXG Pill.md",sourceDirName:"Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill",slug:"/Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill/",permalink:"/docs/next/Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill/Measuring Heart Rate Using BioAmp EXG Pill.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Detecting Heart Beats Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill/"},next:{title:"Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments"}},s={},p=[{value:"What is Electrocardiography (ECG)?",id:"what-is-electrocardiography-ecg",level:2},{value:"What is a heartrate?",id:"what-is-a-heartrate",level:2},{value:"About BioAmp EXG Pill:",id:"about-bioamp-exg-pill",level:3},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE:",id:"hardware",level:3},{value:"SOFTWARE:",id:"software",level:3},{value:"Step 1: Assembly",id:"step-1-assembly",level:2},{value:"Step 2: Configuration for ECG",id:"step-2-configuration-for-ecg",level:2},{value:"Step 3: Connecting Electrode Cable",id:"step-3-connecting-electrode-cable",level:2},{value:"Step 4: Skin Preparation",id:"step-4-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 5: Electrode Placements",id:"step-5-electrode-placements",level:2},{value:"Option 1 - Measuring ECG using Gel electrodes:",id:"option-1---measuring-ecg-using-gel-electrodes",level:3},{value:"Option 2 - Measuring ECG using Heart BioAmp Band, a dry electrode based ECG band:",id:"option-2---measuring-ecg-using-heart-bioamp-band-a-dry-electrode-based-ecg-band",level:3},{value:"Step 6: Connections",id:"step-6-connections",level:2},{value:"Step 7: Download Arduino IDE",id:"step-7-download-arduino-ide",level:2},{value:"Step 8: Coding Time!",id:"step-8-coding-time",level:2},{value:"Step 9: Enjoy",id:"step-9-enjoy",level:2}],d={toc:p},c="wrapper";function u(e){let{components:t,...o}=e;return(0,a.kt)(c,(0,n.Z)({},d,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"measuring-heart-rate-using-bioamp-exg-pill"},"Measuring Heart Rate Using BioAmp EXG Pill"),(0,a.kt)("p",null,(0,a.kt)("img",{src:i(39986).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,"In this project we will be measuring heart rate using BioAmp EXG Pill."),(0,a.kt)("h2",{id:"what-is-electrocardiography-ecg"},"What is Electrocardiography (ECG)?"),(0,a.kt)("p",null,"Electrocardiography is the measurement of electrical activity in the heart."),(0,a.kt)("h2",{id:"what-is-a-heartrate"},"What is a heartrate?"),(0,a.kt)("p",null,"Heartbeat is the number of times per minute that the heart contracts or beats. For most adults, a target resting heart rate is between 60 and 100 beats per minute."),(0,a.kt)("h3",{id:"about-bioamp-exg-pill"},"About BioAmp EXG Pill:"),(0,a.kt)("p",null,"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)."),(0,a.kt)("p",null,"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."),(0,a.kt)("h2",{id:"supplies"},"Supplies"),(0,a.kt)("h3",{id:"hardware"},"HARDWARE:"),(0,a.kt)("p",null,"1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin)"),(0,a.kt)("p",null,"1 x BioAmp Cable"),(0,a.kt)("p",null,"3 x Gel Electrodes"),(0,a.kt)("p",null,"3 x Jumper Cables"),(0,a.kt)("p",null,"1 x Arduino Uno / Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC)"),(0,a.kt)("p",null,"1 x Nuprep Skin Preparation Gel"),(0,a.kt)("p",null,"1 x Wet wipe"),(0,a.kt)("p",null,"1 x Heart BioAmp Band (optional)"),(0,a.kt)("p",null,"1 x Electrode Gel (only if using Heart BioAmp Band)"),(0,a.kt)("h3",{id:"software"},"SOFTWARE:"),(0,a.kt)("p",null,"Arduino IDE"),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Note:")," You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below:"),(0,a.kt)("p",null,"DIY Neuroscience Kit Basic (",(0,a.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/"},"Upside Down Labs Store")," |\n",(0,a.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," | ",(0,a.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ"},"Amazon Store"),")"),(0,a.kt)("p",null,"BioAmp EXG Pill Pack (",(0,a.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," | ",(0,a.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-sensor-for-ecg-emg-eog-or-eeg/"},"Tindie Store")," )"),(0,a.kt)("p",null,"BioAmp EXG Pill - EXG Explorer Pack (",(0,a.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," |\n",(0,a.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/bioamp-exg-pill-x2-sensor-for-ecg-emg-eog-eeg/"},"Tindie Store")," | ",(0,a.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1&th=1"},"Amazon Store"),")"),(0,a.kt)("h2",{id:"step-1-assembly"},"Step 1: Assembly"),(0,a.kt)("p",null,(0,a.kt)("img",{src:i(58711).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,"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."),(0,a.kt)("h2",{id:"step-2-configuration-for-ecg"},"Step 2: Configuration for ECG"),(0,a.kt)("p",null,(0,a.kt)("img",{src:i(66370).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,"BioAmp EXG Pill is by default configured for recording EEG or EOG but if you want to record good quality ECG or EMG, then it is recommended to configure it by making a solder joint as shown in the image above."),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("em",{parentName:"strong"},"Note:"))," Even without making the solder joint the BioAmp EXG Pill is capable of recording ECG or EMG as well but the signals would be more accurate if you configure it."),(0,a.kt)("h2",{id:"step-3-connecting-electrode-cable"},"Step 3: Connecting Electrode Cable"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:i(88253).Z,width:"768",height:"432"})),(0,a.kt)("p",null,"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."),(0,a.kt)("h2",{id:"step-4-skin-preparation"},"Step 4: Skin Preparation"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:i(9219).Z,width:"768",height:"432"})),(0,a.kt)("p",null,"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."),(0,a.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,a.kt)("p",null,"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."),(0,a.kt)("h2",{id:"step-5-electrode-placements"},"Step 5: Electrode Placements"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:i(15689).Z,width:"768",height:"432"}),"\n",(0,a.kt)("img",{alt:"dodge gif",src:i(92140).Z,width:"768",height:"432"})),(0,a.kt)("p",null,"So now we have 2 options to measure the ECG signals, either using the gel electrodes or using dry electrode based ECG band. You can try both of them one by one."),(0,a.kt)("h3",{id:"option-1---measuring-ecg-using-gel-electrodes"},"Option 1 - Measuring ECG using Gel electrodes:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,a.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,a.kt)("li",{parentName:"ol"},"Place the IN- cable on the left side, IN+ in the middle and REF (reference) on the far right side as shown above.")),(0,a.kt)("h3",{id:"option-2---measuring-ecg-using-heart-bioamp-band-a-dry-electrode-based-ecg-band"},"Option 2 - Measuring ECG using Heart BioAmp Band, a dry electrode based ECG band:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Place the IN- cable on the left side, IN+ in the middle and REF (reference) on the far right side as shown above."),(0,a.kt)("li",{parentName:"ol"},"Now put a small drop of electrode gel on the dry electrodes between the skin and metallic part of BioAmp Cable to get the best results.")),(0,a.kt)("h2",{id:"step-6-connections"},"Step 6: Connections"),(0,a.kt)("p",null,(0,a.kt)("img",{src:i(97773).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,"Connect BioAmp EXG Pill to Maker Uno using the jumper cables as directed below:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"VCC to 5V"),(0,a.kt)("li",{parentName:"ul"},"GND to GND"),(0,a.kt)("li",{parentName:"ul"},"OUT to A0")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("em",{parentName:"strong"},"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."),(0,a.kt)("h2",{id:"step-7-download-arduino-ide"},"Step 7: Download Arduino IDE"),(0,a.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,a.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,a.kt)("p",null,"After downloading, connect the Maker Uno to your laptop using the USB Cable (Type A to Type B)"),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},(0,a.kt)("em",{parentName:"strong"},"Note:"))," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,a.kt)("h2",{id:"step-8-coding-time"},"Step 8: Coding Time!"),(0,a.kt)("p",null,"Copy paste the Arduino Sketch given below in Arduino IDE. "),(0,a.kt)("p",null,"HeartRate Detection: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/Heart-BioAmp-Arduino-Firmware/blob/main/3_HeartRateDetection/3_HeartRateDetection.ino"},"https://github.com/upsidedownlabs/Heart-BioAmp-Arduino-Firmware/blob/main/3_HeartRateDetection/3_HeartRateDetection.ino")),(0,a.kt)("p",null,"After flashing the code, open the serial monitor and wait for 22 seconds to see the value of heart rate."),(0,a.kt)("h2",{id:"step-9-enjoy"},"Step 9: Enjoy"),(0,a.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/PvWtCFNK3_s?si=Q9RoDCHXmS4lJy4F&autoplay='0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,a.kt)("p",null,"The project is complete!!"),(0,a.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,a.kt)("p",null,"You can also mail us at ",(0,a.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}u.isMDXComponent=!0},58711:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Assembly-f327d906751232e9cb07ecfa7a773993.jpg"},88253:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connecting Electrode Cable-d79f3b2fc5071c89187b77177d54b847.gif"},97773:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connections with Maker Uno-338f82f2d079845995535477de607bde.jpg"},9219:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Skin Preparation-9d106109d489b99cfd84a63be0ffe0d3.gif"},66370:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Solder Joint-3d4767b5960217bc887f5c7694f1d0d6.jpg"},39986:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Thumbnail-940cd9231b57535ef495801a5669332a.jpg"},92140:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Using ECG Band-5b77317a54e6c7b2740b40e4f066361c.gif"},15689:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Using Gel Electrodes-6b5d94aecafb01ac3eab7c7372954b67.gif"}}]); \ No newline at end of file diff --git a/assets/js/c72f7d14.4816c63c.js b/assets/js/c72f7d14.4816c63c.js new file mode 100644 index 00000000..c5fc2de0 --- /dev/null +++ b/assets/js/c72f7d14.4816c63c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5424],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var o=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=o.createContext({}),p=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},u=function(e){var t=p(e.components);return o.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=p(n),m=i,h=c["".concat(s,".").concat(m)]||c[m]||d[m]||a;return n?o.createElement(h,r(r({ref:t},u),{},{components:n})):o.createElement(h,r({ref:t},u))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,r=new Array(a);r[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:i,r[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var o=n(87462),i=(n(67294),n(3905));const a={},r="Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno",l={unversionedId:"Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno",id:"Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno",title:"Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno",description:"In this tutorial, you are going to make a muscle strength game at your home using the Arduino Uno shield for EMG, Muscle BioAmp Shield.",source:"@site/docs/Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno.md",sourceDirName:"Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno",slug:"/Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno/",permalink:"/docs/next/Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield",permalink:"/docs/next/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/"},next:{title:"Visualizing Electrical Impulses of Eyes (EOG) Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/EOG Experiments/EOG EXPERIMENT/"}},s={},p=[{value:"What is Electromyography (EMG)?",id:"what-is-electromyography-emg",level:2},{value:"About Muscle BioAmp Shield:",id:"about-muscle-bioamp-shield",level:3},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE:",id:"hardware",level:3},{value:"SOFTWARE:",id:"software",level:3},{value:"OTHER MATERIALS:",id:"other-materials",level:3},{value:"SKIN PREPARATION KIT & ELECTRODE GEL:",id:"skin-preparation-kit--electrode-gel",level:3},{value:"Step 1: Assembly",id:"step-1-assembly",level:2},{value:"Step 2: Stacking on Arduino Uno",id:"step-2-stacking-on-arduino-uno",level:2},{value:"Step 3: Connecting Electrode Cable",id:"step-3-connecting-electrode-cable",level:2},{value:"Step 4: Connecting Servo Motor",id:"step-4-connecting-servo-motor",level:2},{value:"Step 5: Downloading Arduino IDE",id:"step-5-downloading-arduino-ide",level:2},{value:"Step 6: Coding Time!",id:"step-6-coding-time",level:2},{value:"Step 7: Preparing the Box",id:"step-7-preparing-the-box",level:2},{value:"Step 8: 3D Printing Servo Pointer",id:"step-8-3d-printing-servo-pointer",level:2},{value:"Step 9: Electrode Placements",id:"step-9-electrode-placements",level:2},{value:"Measuring EMG using Gel electrodes:",id:"measuring-emg-using-gel-electrodes",level:3},{value:"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:",id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band",level:3},{value:"Step 10: Connect to Power Bank",id:"step-10-connect-to-power-bank",level:2},{value:"Step 11: Measure Your Muscle Strength and Become Thanos",id:"step-11-measure-your-muscle-strength-and-become-thanos",level:2}],u={toc:p},c="wrapper";function d(e){let{components:t,...a}=e;return(0,i.kt)(c,(0,o.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"making-a-muscle-strength-game-using-muscle-bioamp-shield--arduino-uno"},"Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno"),(0,i.kt)("p",null,(0,i.kt)("img",{src:n(38277).Z,width:"1920",height:"1080"})),(0,i.kt)("p",null,"In this tutorial, you are going to make a muscle strength game at your home using the Arduino Uno shield for EMG, Muscle BioAmp Shield."),(0,i.kt)("p",null,"But before moving forward, let's understand a brief about Electromyography."),(0,i.kt)("h2",{id:"what-is-electromyography-emg"},"What is Electromyography (EMG)?"),(0,i.kt)("p",null,"Electromyography is a technique that measures muscle response or electrical activity in response to a nerve\u2019s 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."),(0,i.kt)("h3",{id:"about-muscle-bioamp-shield"},"About Muscle BioAmp Shield:"),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,(0,i.kt)("img",{src:n(44938).Z,width:"1414",height:"2000"})),(0,i.kt)("h2",{id:"supplies"},"Supplies"),(0,i.kt)("h3",{id:"hardware"},"HARDWARE:"),(0,i.kt)("p",null,"1 x Muscle BioAmp Shield Kit (",(0,i.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-shield-v0-3/"},"Upside Down Labs Store")," | ",(0,i.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B09Z32M3PP?ref_=cm_sw_r_cp_ud_dp_N6R5671596GFW0C3JAF0"},"Amazon India")," | ",(0,i.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-shield-v03-arduino-shield-for-emg/"},"Tindie India"),")"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"The Kit includes:",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Muscle BioAmp Shield PCB x 1"),(0,i.kt)("li",{parentName:"ul"},"Components",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Ceramic capacitors."),(0,i.kt)("li",{parentName:"ul"},"Electrolytic capacitors"),(0,i.kt)("li",{parentName:"ul"},"Resistors"),(0,i.kt)("li",{parentName:"ul"},"LEDs"),(0,i.kt)("li",{parentName:"ul"},"Audio Jack"),(0,i.kt)("li",{parentName:"ul"},"Connectors"),(0,i.kt)("li",{parentName:"ul"},"Tactical Switch"),(0,i.kt)("li",{parentName:"ul"},"Optocoupler"),(0,i.kt)("li",{parentName:"ul"},"Quad OpAmp, etc."))),(0,i.kt)("li",{parentName:"ul"},"BioAmp Cable (100cm) x 1"),(0,i.kt)("li",{parentName:"ul"},"Gel Electrodes x 24"),(0,i.kt)("li",{parentName:"ul"},"Muscle BioAmp Band x 1"),(0,i.kt)("li",{parentName:"ul"},"BioAmp AUX Cable x 1"),(0,i.kt)("li",{parentName:"ul"},"9V Snap Cable x 1"),(0,i.kt)("li",{parentName:"ul"},"STEMMA Cables x 6")))),(0,i.kt)("p",null,"1 x Arduino uno with USB cable (Type A to Type B)"),(0,i.kt)("p",null,"1 x Servo Motor (SG90)"),(0,i.kt)("p",null,"1 x Servo Pointer (3D Printed)"),(0,i.kt)("p",null,"Glue Gun"),(0,i.kt)("p",null,"Soldering iron and other equipments to solder the components on the PCB"),(0,i.kt)("h3",{id:"software"},"SOFTWARE:"),(0,i.kt)("p",null,"Arduino IDE"),(0,i.kt)("h3",{id:"other-materials"},"OTHER MATERIALS:"),(0,i.kt)("p",null,"Cardboard box (15 x 13 x 4cm)"),(0,i.kt)("h3",{id:"skin-preparation-kit--electrode-gel"},"SKIN PREPARATION KIT & ELECTRODE GEL:"),(0,i.kt)("p",null,"1 x NuPrep skin preparation gel (",(0,i.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/nuprep-gel/"},"Upside Down Labs Store")," | ",(0,i.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/"},"Tindie India"),")"),(0,i.kt)("p",null,"1 x Wet wipe"),(0,i.kt)("p",null,"1 x Electrode Gel (only if using Muscle BioAmp Band) (",(0,i.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/electrode-gel/"},"Upside Down Labs Store")," | ",(0,i.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/electrode-gel-250ml/"},"Tindie India"),")"),(0,i.kt)("h2",{id:"step-1-assembly"},"Step 1: Assembly"),(0,i.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/eaIDXosPSbs?feature=oembed&autoplay=",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,i.kt)("p",null,"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 ",(0,i.kt)("a",{parentName:"p",href:"https://docs.upsidedownlabs.tech/DIY-Muscle-BioAmp-Shield/ibom.html"},"interactive BOM")),(0,i.kt)("h2",{id:"step-2-stacking-on-arduino-uno"},"Step 2: Stacking on Arduino Uno"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"dodge gif",src:n(39159).Z,width:"768",height:"432"})),(0,i.kt)("p",null,"Stack the Muscle BioAmp Shield on top of Arduino Uno properly."),(0,i.kt)("h2",{id:"step-3-connecting-electrode-cable"},"Step 3: Connecting Electrode Cable"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"dodge gif",src:n(77026).Z,width:"768",height:"432"})),(0,i.kt)("p",null,"Connect the BioAmp Cable to Muscle BioAmp Shield as shown above."),(0,i.kt)("h2",{id:"step-4-connecting-servo-motor"},"Step 4: Connecting Servo Motor"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"dodge gif",src:n(28662).Z,width:"768",height:"432"})),(0,i.kt)("p",null,"Connect the servo motor to Muscle BioAmp Shield as shown above."),(0,i.kt)("h2",{id:"step-5-downloading-arduino-ide"},"Step 5: Downloading Arduino IDE"),(0,i.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,i.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,i.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("em",{parentName:"strong"},"Note:"))," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,i.kt)("h2",{id:"step-6-coding-time"},"Step 6: Coding Time!"),(0,i.kt)("p",null,"We lost the Arduino Sketch and seems like we will have to write it all over again. So give us just 2-3 days and we will update the code here."),(0,i.kt)("h2",{id:"step-7-preparing-the-box"},"Step 7: Preparing the Box"),(0,i.kt)("p",null,(0,i.kt)("img",{src:n(38277).Z,width:"1920",height:"1080"})),(0,i.kt)("p",null,(0,i.kt)("img",{src:n(14262).Z,width:"1920",height:"1080"})),(0,i.kt)("p",null,"The dimensions of the cardboard box we chose is 15 x 13 x 4 cm which gives perfect space for the Muscle BioAmp Shield and servo motor to be placed inside the enclosure/box."),(0,i.kt)("p",null,"After selecting the cardboard box, now it's time to design a dashboard or muscle strength bar. To make this game a bit interesting, we have made the bar which features Starlord, Antman, Hulk, Thor, IronMan and Thanos. So the ultimate goal of the game would be to become Thanos."),(0,i.kt)("p",null,"Now you need to make 2 holes in the box, one in the front ane one in back side for USB cable of Arduino Uno and the BioAmp Cable respectively."),(0,i.kt)("p",null,"The front part of the servo motor should be outside the box where the servo pointer will be assembled. To do that you can cut the cardboard box as shown in the photos above and use glue gun to fix it properly."),(0,i.kt)("h2",{id:"step-8-3d-printing-servo-pointer"},"Step 8: 3D Printing Servo Pointer"),(0,i.kt)("p",null,"Now you need to 3D print the servo pointer by using the file given below and then assemble it on top of servo motor."),(0,i.kt)("h2",{id:"step-9-electrode-placements"},"Step 9: Electrode Placements"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"dodge gif",src:n(85137).Z,width:"768",height:"432"})),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"dodge gif",src:n(94867).Z,width:"768",height:"432"})),(0,i.kt)("p",null,"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."),(0,i.kt)("h3",{id:"measuring-emg-using-gel-electrodes"},"Measuring EMG using Gel electrodes:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,i.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,i.kt)("li",{parentName:"ol"},"Place the IN+ and IN- cables on the arm near the ulnar nerve & REF (reference) at the back of your hand.")),(0,i.kt)("h3",{id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band"},"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"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."),(0,i.kt)("li",{parentName:"ol"},"Now put a small drop of electrode gel between the skin and metallic part of BioAmp Cable to get the best results.")),(0,i.kt)("h2",{id:"step-10-connect-to-power-bank"},"Step 10: Connect to Power Bank"),(0,i.kt)("p",null,"To make it a portable game, you can use power bank. To power the game, just connect the USB cable of Arduino Uno to Power Bank and you are good to go."),(0,i.kt)("p",null,"If you don't want to use the power bank, then directly plug the USB cable of Arduino Uno to your laptop which is not connected to any charger."),(0,i.kt)("h2",{id:"step-11-measure-your-muscle-strength-and-become-thanos"},"Step 11: Measure Your Muscle Strength and Become Thanos"),(0,i.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/bSfTnFcCHYM?feature=oembed&enablejsapi=1&origin=https://www.instructables.com",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,i.kt)("p",null,"The game is ready!!"),(0,i.kt)("p",null,"Flex your muscles as much as you can to move the servo pointer from Starlord to Thanos. The more powerful you flex, the more the bar will move."),(0,i.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,i.kt)("p",null,"You can also mail us at ",(0,i.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}d.isMDXComponent=!0},77026:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Connecting Electrode Cable-7a205ffb00859df201b1c946b22ec73b.gif"},28662:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Connecting Servo Motor-f53f24a599186b403c7a82f13bef1473.gif"},14262:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Inside Photo-e50320e04e2a274124bf5109eb2ec28d.jpg"},44938:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Muscle BioAmp Shield Infographic-4340b76b8874aa773668c6cb3e7e07ca.jpg"},39159:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Stacking on Arduino Uno-99a27d290d02161f66b0c83c2de90e79.gif"},38277:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Thumbnail-21b341bb18c245dc76c43ac40b6b9e21.jpg"},94867:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Using EMG Band-def7f5f26a1bf88379bc3881df4a7934.gif"},85137:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Using Gel Electrodes-0c104176787c59335e79ed7bbaf3bab1.gif"}}]); \ No newline at end of file diff --git a/assets/js/c7f046bd.899ca163.js b/assets/js/c7f046bd.899ca163.js deleted file mode 100644 index 228a8443..00000000 --- a/assets/js/c7f046bd.899ca163.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6213],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>f});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var a=n.createContext({}),c=function(e){var t=n.useContext(a),r=t;return e&&(r="function"==typeof e?e(t):p(p({},t),e)),r},m=function(e){var t=c(e.components);return n.createElement(a.Provider,{value:t},e.children)},l="mdxType",E={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,o=e.originalType,a=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),l=c(r),u=i,f=l["".concat(a,".").concat(u)]||l[u]||E[u]||o;return r?n.createElement(f,p(p({ref:t},m),{},{components:r})):n.createElement(f,p({ref:t},m))}));function f(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=r.length,p=new Array(o);p[0]=u;var s={};for(var a in t)hasOwnProperty.call(t,a)&&(s[a]=t[a]);s.originalType=e,s[l]="string"==typeof e?e:i,p[1]=s;for(var c=2;c{r.r(t),r.d(t,{assets:()=>a,contentTitle:()=>p,default:()=>E,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var n=r(87462),i=(r(67294),r(3905));const o={sidebar_position:4},p="ECG Experiments",s={unversionedId:"Experiments/ECG Experiments/ECGExperiments",id:"Experiments/ECG Experiments/ECGExperiments",title:"ECG Experiments",description:"",source:"@site/docs/Experiments/ECG Experiments/ECGExperiments.md",sourceDirName:"Experiments/ECG Experiments",slug:"/Experiments/ECG Experiments/ECGExperiments",permalink:"/docs/next/Experiments/ECG Experiments/ECGExperiments",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/ECG Experiments/ECGExperiments.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Let's Get Started with Experiments!!",permalink:"/docs/next/Experiments/Getting Started/"},next:{title:"EEG Experiments",permalink:"/docs/next/Experiments/EEG Experiments/EEGExperiments"}},a={},c=[],m={toc:c},l="wrapper";function E(e){let{components:t,...r}=e;return(0,i.kt)(l,(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"ecg-experiments"},"ECG Experiments"))}E.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d2f015a5.afe9b4c8.js b/assets/js/d2f015a5.afe9b4c8.js deleted file mode 100644 index b4a79eb9..00000000 --- a/assets/js/d2f015a5.afe9b4c8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2310],{3905:(e,t,i)=>{i.d(t,{Zo:()=>u,kt:()=>h});var n=i(67294);function l(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function a(e){for(var t=1;t=0||(l[i]=e[i]);return l}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(l[i]=e[i])}return l}var r=n.createContext({}),p=function(e){var t=n.useContext(r),i=t;return e&&(i="function"==typeof e?e(t):a(a({},t),e)),i},u=function(e){var t=p(e.components);return n.createElement(r.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var i=e.components,l=e.mdxType,o=e.originalType,r=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),c=p(i),m=l,h=c["".concat(r,".").concat(m)]||c[m]||d[m]||o;return i?n.createElement(h,a(a({ref:t},u),{},{components:i})):n.createElement(h,a({ref:t},u))}));function h(e,t){var i=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var o=i.length,a=new Array(o);a[0]=m;var s={};for(var r in t)hasOwnProperty.call(t,r)&&(s[r]=t[r]);s.originalType=e,s[c]="string"==typeof e?e:l,a[1]=s;for(var p=2;p{i.r(t),i.d(t,{assets:()=>r,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var n=i(87462),l=(i(67294),i(3905));const o={},a="Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield",s={unversionedId:"Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield",id:"Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield",title:"Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield",description:"dodge gif",source:"@site/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",sourceDirName:"Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield",slug:"/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/",permalink:"/docs/next/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/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",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield",permalink:"/docs/next/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/"},next:{title:"Eye Blink Detection by Recording EOG Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/"}},r={},p=[{value:"What is Electromyography (EMG)?",id:"what-is-electromyography-emg",level:2},{value:"About Muscle BioAmp Shield:",id:"about-muscle-bioamp-shield",level:3},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE:",id:"hardware",level:3},{value:"SKIN PREPARATION KIT & ELECTRODE GEL:",id:"skin-preparation-kit--electrode-gel",level:3},{value:"SOFTWARE:",id:"software",level:3},{value:"Step 1: Assembly",id:"step-1-assembly",level:2},{value:"Step 2: Stacking on Arduino Uno",id:"step-2-stacking-on-arduino-uno",level:2},{value:"Step 3: Connecting Electrode Cable",id:"step-3-connecting-electrode-cable",level:2},{value:"Step 4: Skin Preparation",id:"step-4-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 5: Electrode Placements",id:"step-5-electrode-placements",level:2},{value:"Measuring EMG using Gel electrodes:",id:"measuring-emg-using-gel-electrodes",level:3},{value:"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:",id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band",level:3},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide",level:2},{value:"Step 7: Coding Time!",id:"step-7-coding-time",level:2},{value:"Step 8: Enjoy & Flex Your Arm",id:"step-8-enjoy--flex-your-arm",level:2},{value:"Step 9: Listen to Your Muscles",id:"step-9-listen-to-your-muscles",level:2},{value:"Listening on a wired earphones/headphones:",id:"listening-on-a-wired-earphonesheadphones",level:3},{value:"Listening on a speaker using BioAmp AUX Cable:",id:"listening-on-a-speaker-using-bioamp-aux-cable",level:3},{value:"Step 10: Make It Portable",id:"step-10-make-it-portable",level:2},{value:"Step 11: Some Other Projects",id:"step-11-some-other-projects",level:2}],u={toc:p},c="wrapper";function d(e){let{components:t,...o}=e;return(0,l.kt)(c,(0,n.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h1",{id:"record-visualize--listen-to-muscle-signals-using-muscle-bioamp-shield"},"Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:i(90402).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"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."),(0,l.kt)("p",null,"But before moving forward, let's understand a brief about Electromyography."),(0,l.kt)("h2",{id:"what-is-electromyography-emg"},"What is Electromyography (EMG)?"),(0,l.kt)("p",null,"Electromyography is a technique that measures muscle response or electrical activity in response to a nerve\u2019s 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."),(0,l.kt)("p",null,(0,l.kt)("img",{src:i(17195).Z,width:"1366",height:"603"})),(0,l.kt)("h3",{id:"about-muscle-bioamp-shield"},"About Muscle BioAmp Shield:"),(0,l.kt)("p",null,"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."),(0,l.kt)("p",null,"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."),(0,l.kt)("p",null,(0,l.kt)("img",{src:i(27928).Z,width:"1414",height:"2000"})),(0,l.kt)("h2",{id:"supplies"},"Supplies"),(0,l.kt)("h3",{id:"hardware"},"HARDWARE:"),(0,l.kt)("p",null,"1 x Muscle BioAmp Shield Kit (",(0,l.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-shield-v0-3/"},"Upside Down Labs Store")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B09Z32M3PP?ref_=cm_sw_r_cp_ud_dp_N6R5671596GFW0C3JAF0"},"Amazon India")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-shield-v03-arduino-shield-for-emg/"},"Tindie India"),")"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"The Kit includes:",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Muscle BioAmp Shield PCB x 1"),(0,l.kt)("li",{parentName:"ul"},"Components",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Ceramic capacitors."),(0,l.kt)("li",{parentName:"ul"},"Electrolytic capacitors"),(0,l.kt)("li",{parentName:"ul"},"Resistors"),(0,l.kt)("li",{parentName:"ul"},"LEDs"),(0,l.kt)("li",{parentName:"ul"},"Audio Jack"),(0,l.kt)("li",{parentName:"ul"},"Connectors"),(0,l.kt)("li",{parentName:"ul"},"Tactical Switch"),(0,l.kt)("li",{parentName:"ul"},"Optocoupler"),(0,l.kt)("li",{parentName:"ul"},"Quad OpAmp, etc."))),(0,l.kt)("li",{parentName:"ul"},"BioAmp Cable (100cm) x 1"),(0,l.kt)("li",{parentName:"ul"},"Gel Electrodes x 24"),(0,l.kt)("li",{parentName:"ul"},"Muscle BioAmp Band x 1"),(0,l.kt)("li",{parentName:"ul"},"BioAmp AUX Cable x 1"),(0,l.kt)("li",{parentName:"ul"},"9V Snap Cable x 1"),(0,l.kt)("li",{parentName:"ul"},"STEMMA Cables x 6")))),(0,l.kt)("p",null,"1 x Arduino uno with USB cable (Type A to Type B)"),(0,l.kt)("p",null,"1 x 9V Battery (Optional, only if you want to make the system portable)"),(0,l.kt)("p",null,"Soldering iron and other equipments to solder the components on the PCB"),(0,l.kt)("h3",{id:"skin-preparation-kit--electrode-gel"},"SKIN PREPARATION KIT & ELECTRODE GEL:"),(0,l.kt)("p",null,"1 x NuPrep skin preparation gel (",(0,l.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/nuprep-gel/"},"Upside Down Labs Store")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/"},"Tindie India"),")"),(0,l.kt)("p",null,"1 x Wet wipe"),(0,l.kt)("p",null,"1 x Electrode Gel (only if using Muscle BioAmp Band) (",(0,l.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/electrode-gel/"},"Upside Down Labs Store")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/electrode-gel-250ml/"},"Tindie India"),")"),(0,l.kt)("h3",{id:"software"},"SOFTWARE:"),(0,l.kt)("p",null,"Arduino IDE"),(0,l.kt)("h2",{id:"step-1-assembly"},"Step 1: Assembly"),(0,l.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/eaIDXosPSbs?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,l.kt)("p",null,"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 (",(0,l.kt)("a",{parentName:"p",href:"https://docs.upsidedownlabs.tech/DIY-Muscle-BioAmp-Shield/ibom.html"},"interactive BOM"),")"),(0,l.kt)("h2",{id:"step-2-stacking-on-arduino-uno"},"Step 2: Stacking on Arduino Uno"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:i(67439).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"Stack the Muscle BioAmp Shield on top of Arduino Uno properly."),(0,l.kt)("h2",{id:"step-3-connecting-electrode-cable"},"Step 3: Connecting Electrode Cable"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:i(28271).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"Connect the BioAmp Cable to Muscle BioAmp Shield as shown in the connection diagram."),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Note:")," Don't place the electrodes on the skin at this moment."),(0,l.kt)("h2",{id:"step-4-skin-preparation"},"Step 4: Skin Preparation"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:i(98403).Z,width:"768",height:"432"}),"\nApply 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."),(0,l.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,l.kt)("p",null,"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."),(0,l.kt)("h2",{id:"step-5-electrode-placements"},"Step 5: Electrode Placements"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:i(67919).Z,width:"768",height:"432"}),"\n",(0,l.kt)("img",{alt:"dodge gif",src:i(90126).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"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."),(0,l.kt)("h3",{id:"measuring-emg-using-gel-electrodes"},"Measuring EMG using Gel electrodes:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,l.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,l.kt)("li",{parentName:"ol"},"Place the IN+ and IN- cables on the arm near the ulnar nerve & REF (reference) at the back of your hand.")),(0,l.kt)("h3",{id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band"},"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"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."),(0,l.kt)("li",{parentName:"ol"},"Now put a small drop of electrode gel between the skin and metallic part of BioAmp Cable to get the best results.")),(0,l.kt)("h2",{id:"step-6-download-arduino-ide"},"Step 6: Download Arduino IDE"),(0,l.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,l.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,l.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Note:")," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,l.kt)("h2",{id:"step-7-coding-time"},"Step 7: Coding Time!"),(0,l.kt)("p",null,"Copy paste the Arduino Sketch given below in Arduino IDE:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"LED Bar Graph: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/LEDBarGraph/LEDBarGraph.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/LEDBarGraph/LEDBarGraph.ino"))),(0,l.kt)("p",null,"After flashing the code, open the serial plotter to visualize the EMG signals."),(0,l.kt)("h2",{id:"step-8-enjoy--flex-your-arm"},"Step 8: Enjoy & Flex Your Arm"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:i(318).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"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."),(0,l.kt)("p",null,"More strength you apply, more the LED bar goes up."),(0,l.kt)("p",null,"Similarly you can try to record EMG from other parts of your body like biceps, triceps, cheeks, thighs, etc."),(0,l.kt)("h2",{id:"step-9-listen-to-your-muscles"},"Step 9: Listen to Your Muscles"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:i(97758).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"Here comes the most interesting part of the project which is listening to your muscles."),(0,l.kt)("p",null,"You can either listen it on a speaker or wired earphones/headphones. Let's try both of them."),(0,l.kt)("h3",{id:"listening-on-a-wired-earphonesheadphones"},"Listening on a wired earphones/headphones:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Plug your wired earphones or headphones on the 3.5mm jack of Muscle BioAmp Shield"),(0,l.kt)("li",{parentName:"ol"},"Plug it in your ears"),(0,l.kt)("li",{parentName:"ol"},"Flex and listen to your muscles")),(0,l.kt)("h3",{id:"listening-on-a-speaker-using-bioamp-aux-cable"},"Listening on a speaker using BioAmp AUX Cable:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Plug the BioAmp AUX Cable on Muscle BioAmp Shield"),(0,l.kt)("li",{parentName:"ol"},"Connect the BioAmp AUX cable on the speaker"),(0,l.kt)("li",{parentName:"ol"},"Flex and listen to your muscles.\nIsn't it AMAZING? How did you feel?")),(0,l.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,l.kt)("p",null,"You can also mail us at ",(0,l.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."),(0,l.kt)("h2",{id:"step-10-make-it-portable"},"Step 10: Make It Portable"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:i(36918).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"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:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},(0,l.kt)("p",{parentName:"li"},"Using 9V battery: Directly connect a 9V battery to Muscle BioAmp Shield using a 9V snap cable.")),(0,l.kt)("li",{parentName:"ol"},(0,l.kt)("p",{parentName:"li"},"Using Power Bank: Instead of connecting the USB cable of Arduino Uno to laptop, you can directly connect it to power bank."))),(0,l.kt)("h2",{id:"step-11-some-other-projects"},"Step 11: Some Other Projects"),(0,l.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/kgvK51UIXdo?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,l.kt)("p",null,"You can also make various other projects using Muscle BioAmp Shield like:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Controlling a servo claw by muscle signals (EMG): ",(0,l.kt)("a",{parentName:"li",href:"https://www.instructables.com/Controlling-a-Servo-Claw-With-Muscle-Signals-EMG-U/"},"https://www.instructables.com/Controlling-a-Servo-Claw-With-Muscle-Signals-EMG-U/"))))}d.isMDXComponent=!0},36918:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connecting 9V battery-0a125a82eee2db88d97d70c19ffb36a5.gif"},28271:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connecting Electrode Cable-7a205ffb00859df201b1c946b22ec73b.gif"},17195:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/EMGEnvelop-d34ecf470c414769dc0b18b6fb7f0e9d.png"},318:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/LED Bar Graph-7745bf991b68ded57273e56611984cc7.gif"},97758:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Listening music-8f70d7402f262a307453af2151b02070.gif"},27928:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Muscle BioAmp Shield-4340b76b8874aa773668c6cb3e7e07ca.jpg"},98403:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Skin Preparation-cf8d399e35186ce01c8576e34794b995.gif"},67439:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Stacking on Arduino Uno-99a27d290d02161f66b0c83c2de90e79.gif"},90402:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Thumbnail-ca400f68ef4bd2cf67861fcd2a8cf587.gif"},90126:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Using EMG Band-def7f5f26a1bf88379bc3881df4a7934.gif"},67919:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Using Gel Electrodes-0c104176787c59335e79ed7bbaf3bab1.gif"}}]); \ No newline at end of file diff --git a/assets/js/e5d61e0e.a1c18208.js b/assets/js/e5d61e0e.a1c18208.js new file mode 100644 index 00000000..e0c6b7e9 --- /dev/null +++ b/assets/js/e5d61e0e.a1c18208.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4743],{3905:(e,t,i)=>{i.d(t,{Zo:()=>u,kt:()=>h});var n=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function l(e){for(var t=1;t=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var r=n.createContext({}),p=function(e){var t=n.useContext(r),i=t;return e&&(i="function"==typeof e?e(t):l(l({},t),e)),i},u=function(e){var t=p(e.components);return n.createElement(r.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var i=e.components,a=e.mdxType,o=e.originalType,r=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),c=p(i),m=a,h=c["".concat(r,".").concat(m)]||c[m]||d[m]||o;return i?n.createElement(h,l(l({ref:t},u),{},{components:i})):n.createElement(h,l({ref:t},u))}));function h(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=i.length,l=new Array(o);l[0]=m;var s={};for(var r in t)hasOwnProperty.call(t,r)&&(s[r]=t[r]);s.originalType=e,s[c]="string"==typeof e?e:a,l[1]=s;for(var p=2;p{i.r(t),i.d(t,{assets:()=>r,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var n=i(87462),a=(i(67294),i(3905));const o={},l="Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield",s={unversionedId:"Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield",id:"Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield",title:"Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield",description:"dodge gif",source:"@site/docs/Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield.md",sourceDirName:"Experiments/EMG Experiments/BisCute Visualize EMG",slug:"/Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield",permalink:"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Using Muscle BioAmp Candy (Candy Size Muscle Sensor)",permalink:"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG"},next:{title:"Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield",permalink:"/docs/next/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/"}},r={},p=[{value:"What is Electromyography (EMG)?",id:"what-is-electromyography-emg",level:2},{value:"About Muscle BioAmp Shield:",id:"about-muscle-bioamp-shield",level:3},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE:",id:"hardware",level:3},{value:"SKIN PREPARATION KIT & ELECTRODE GEL:",id:"skin-preparation-kit--electrode-gel",level:3},{value:"SOFTWARE:",id:"software",level:3},{value:"Step 1: Assembly",id:"step-1-assembly",level:2},{value:"Step 2: Stacking on Arduino Uno",id:"step-2-stacking-on-arduino-uno",level:2},{value:"Step 3: Connecting Electrode Cable",id:"step-3-connecting-electrode-cable",level:2},{value:"Step 4: Skin Preparation",id:"step-4-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 5: Electrode Placements",id:"step-5-electrode-placements",level:2},{value:"Measuring EMG using Gel electrodes:",id:"measuring-emg-using-gel-electrodes",level:3},{value:"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:",id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band",level:3},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide",level:2},{value:"Step 7: Coding Time!",id:"step-7-coding-time",level:2},{value:"Step 8: Enjoy & Flex Your Arm",id:"step-8-enjoy--flex-your-arm",level:2},{value:"Step 9: Listen to Your Muscles",id:"step-9-listen-to-your-muscles",level:2},{value:"Listening on a wired earphones/headphones:",id:"listening-on-a-wired-earphonesheadphones",level:3},{value:"Listening on a speaker using BioAmp AUX Cable:",id:"listening-on-a-speaker-using-bioamp-aux-cable",level:3},{value:"Step 10: Make It Portable",id:"step-10-make-it-portable",level:2},{value:"Step 11: Some Other Projects",id:"step-11-some-other-projects",level:2}],u={toc:p},c="wrapper";function d(e){let{components:t,...o}=e;return(0,a.kt)(c,(0,n.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"record-visualize--listen-to-muscle-signals-using-muscle-bioamp-shield"},"Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:i(36462).Z,width:"768",height:"432"})),(0,a.kt)("p",null,"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."),(0,a.kt)("p",null,"But before moving forward, let's understand a brief about Electromyography."),(0,a.kt)("h2",{id:"what-is-electromyography-emg"},"What is Electromyography (EMG)?"),(0,a.kt)("p",null,"Electromyography is a technique that measures muscle response or electrical activity in response to a nerve\u2019s 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."),(0,a.kt)("p",null,(0,a.kt)("img",{src:i(12966).Z,width:"1366",height:"603"})),(0,a.kt)("h3",{id:"about-muscle-bioamp-shield"},"About Muscle BioAmp Shield:"),(0,a.kt)("p",null,"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."),(0,a.kt)("p",null,"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."),(0,a.kt)("p",null,(0,a.kt)("img",{src:i(38659).Z,width:"1414",height:"2000"})),(0,a.kt)("h2",{id:"supplies"},"Supplies"),(0,a.kt)("h3",{id:"hardware"},"HARDWARE:"),(0,a.kt)("p",null,"1 x Muscle BioAmp Shield Kit (",(0,a.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-shield-v0-3/"},"Upside Down Labs Store")," | ",(0,a.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B09Z32M3PP?ref_=cm_sw_r_cp_ud_dp_N6R5671596GFW0C3JAF0"},"Amazon India")," | ",(0,a.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-shield-v03-arduino-shield-for-emg/"},"Tindie India"),")"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"The Kit includes:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Muscle BioAmp Shield PCB x 1"),(0,a.kt)("li",{parentName:"ul"},"Components",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Ceramic capacitors."),(0,a.kt)("li",{parentName:"ul"},"Electrolytic capacitors"),(0,a.kt)("li",{parentName:"ul"},"Resistors"),(0,a.kt)("li",{parentName:"ul"},"LEDs"),(0,a.kt)("li",{parentName:"ul"},"Audio Jack"),(0,a.kt)("li",{parentName:"ul"},"Connectors"),(0,a.kt)("li",{parentName:"ul"},"Tactical Switch"),(0,a.kt)("li",{parentName:"ul"},"Optocoupler"),(0,a.kt)("li",{parentName:"ul"},"Quad OpAmp, etc."))),(0,a.kt)("li",{parentName:"ul"},"BioAmp Cable (100cm) x 1"),(0,a.kt)("li",{parentName:"ul"},"Gel Electrodes x 24"),(0,a.kt)("li",{parentName:"ul"},"Muscle BioAmp Band x 1"),(0,a.kt)("li",{parentName:"ul"},"BioAmp AUX Cable x 1"),(0,a.kt)("li",{parentName:"ul"},"9V Snap Cable x 1"),(0,a.kt)("li",{parentName:"ul"},"STEMMA Cables x 6")))),(0,a.kt)("p",null,"1 x Arduino uno with USB cable (Type A to Type B)"),(0,a.kt)("p",null,"1 x 9V Battery (Optional, only if you want to make the system portable)"),(0,a.kt)("p",null,"Soldering iron and other equipments to solder the components on the PCB"),(0,a.kt)("h3",{id:"skin-preparation-kit--electrode-gel"},"SKIN PREPARATION KIT & ELECTRODE GEL:"),(0,a.kt)("p",null,"1 x NuPrep skin preparation gel (",(0,a.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/nuprep-gel/"},"Upside Down Labs Store")," | ",(0,a.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/"},"Tindie India"),")"),(0,a.kt)("p",null,"1 x Wet wipe"),(0,a.kt)("p",null,"1 x Electrode Gel (only if using Muscle BioAmp Band) (",(0,a.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/electrode-gel/"},"Upside Down Labs Store")," | ",(0,a.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/electrode-gel-250ml/"},"Tindie India"),")"),(0,a.kt)("h3",{id:"software"},"SOFTWARE:"),(0,a.kt)("p",null,"Arduino IDE"),(0,a.kt)("h2",{id:"step-1-assembly"},"Step 1: Assembly"),(0,a.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/eaIDXosPSbs?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,a.kt)("p",null,"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 (",(0,a.kt)("a",{parentName:"p",href:"https://docs.upsidedownlabs.tech/DIY-Muscle-BioAmp-Shield/ibom.html"},"interactive BOM"),")"),(0,a.kt)("h2",{id:"step-2-stacking-on-arduino-uno"},"Step 2: Stacking on Arduino Uno"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:i(75435).Z,width:"768",height:"432"})),(0,a.kt)("p",null,"Stack the Muscle BioAmp Shield on top of Arduino Uno properly."),(0,a.kt)("h2",{id:"step-3-connecting-electrode-cable"},"Step 3: Connecting Electrode Cable"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:i(70538).Z,width:"768",height:"432"})),(0,a.kt)("p",null,"Connect the BioAmp Cable to Muscle BioAmp Shield as shown in the connection diagram."),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Note:")," Don't place the electrodes on the skin at this moment."),(0,a.kt)("h2",{id:"step-4-skin-preparation"},"Step 4: Skin Preparation"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:i(32965).Z,width:"768",height:"432"}),"\nApply 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."),(0,a.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,a.kt)("p",null,"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."),(0,a.kt)("h2",{id:"step-5-electrode-placements"},"Step 5: Electrode Placements"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:i(20076).Z,width:"768",height:"432"}),"\n",(0,a.kt)("img",{alt:"dodge gif",src:i(90030).Z,width:"768",height:"432"})),(0,a.kt)("p",null,"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."),(0,a.kt)("h3",{id:"measuring-emg-using-gel-electrodes"},"Measuring EMG using Gel electrodes:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,a.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,a.kt)("li",{parentName:"ol"},"Place the IN+ and IN- cables on the arm near the ulnar nerve & REF (reference) at the back of your hand.")),(0,a.kt)("h3",{id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band"},"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"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."),(0,a.kt)("li",{parentName:"ol"},"Now put a small drop of electrode gel between the skin and metallic part of BioAmp Cable to get the best results.")),(0,a.kt)("h2",{id:"step-6-download-arduino-ide"},"Step 6: Download Arduino IDE"),(0,a.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,a.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,a.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Note:")," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,a.kt)("h2",{id:"step-7-coding-time"},"Step 7: Coding Time!"),(0,a.kt)("p",null,"Copy paste the Arduino Sketch given below in Arduino IDE:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"LED Bar Graph: ",(0,a.kt)("a",{parentName:"li",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/LEDBarGraph/LEDBarGraph.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/LEDBarGraph/LEDBarGraph.ino"))),(0,a.kt)("p",null,"After flashing the code, open the serial plotter to visualize the EMG signals."),(0,a.kt)("h2",{id:"step-8-enjoy--flex-your-arm"},"Step 8: Enjoy & Flex Your Arm"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:i(32360).Z,width:"768",height:"432"})),(0,a.kt)("p",null,"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."),(0,a.kt)("p",null,"More strength you apply, more the LED bar goes up."),(0,a.kt)("p",null,"Similarly you can try to record EMG from other parts of your body like biceps, triceps, cheeks, thighs, etc."),(0,a.kt)("h2",{id:"step-9-listen-to-your-muscles"},"Step 9: Listen to Your Muscles"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:i(16149).Z,width:"768",height:"432"})),(0,a.kt)("p",null,"Here comes the most interesting part of the project which is listening to your muscles."),(0,a.kt)("p",null,"You can either listen it on a speaker or wired earphones/headphones. Let's try both of them."),(0,a.kt)("h3",{id:"listening-on-a-wired-earphonesheadphones"},"Listening on a wired earphones/headphones:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Plug your wired earphones or headphones on the 3.5mm jack of Muscle BioAmp Shield"),(0,a.kt)("li",{parentName:"ol"},"Plug it in your ears"),(0,a.kt)("li",{parentName:"ol"},"Flex and listen to your muscles")),(0,a.kt)("h3",{id:"listening-on-a-speaker-using-bioamp-aux-cable"},"Listening on a speaker using BioAmp AUX Cable:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Plug the BioAmp AUX Cable on Muscle BioAmp Shield"),(0,a.kt)("li",{parentName:"ol"},"Connect the BioAmp AUX cable on the speaker"),(0,a.kt)("li",{parentName:"ol"},"Flex and listen to your muscles.\nIsn't it AMAZING? How did you feel?")),(0,a.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,a.kt)("p",null,"You can also mail us at ",(0,a.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."),(0,a.kt)("h2",{id:"step-10-make-it-portable"},"Step 10: Make It Portable"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:i(54097).Z,width:"768",height:"432"})),(0,a.kt)("p",null,"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:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"Using 9V battery: Directly connect a 9V battery to Muscle BioAmp Shield using a 9V snap cable.")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"Using Power Bank: Instead of connecting the USB cable of Arduino Uno to laptop, you can directly connect it to power bank."))),(0,a.kt)("h2",{id:"step-11-some-other-projects"},"Step 11: Some Other Projects"),(0,a.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/kgvK51UIXdo?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,a.kt)("p",null,"You can also make various other projects using Muscle BioAmp Shield like:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Controlling a servo claw by muscle signals (EMG): ",(0,a.kt)("a",{parentName:"li",href:"https://www.instructables.com/Controlling-a-Servo-Claw-With-Muscle-Signals-EMG-U/"},"https://www.instructables.com/Controlling-a-Servo-Claw-With-Muscle-Signals-EMG-U/"))))}d.isMDXComponent=!0},54097:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connecting 9V battery-0a125a82eee2db88d97d70c19ffb36a5.gif"},70538:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Connecting Electrode Cable-7a205ffb00859df201b1c946b22ec73b.gif"},12966:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/EMGEnvelop-d34ecf470c414769dc0b18b6fb7f0e9d.png"},32360:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/LED Bar Graph-7745bf991b68ded57273e56611984cc7.gif"},16149:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Listening music-8f70d7402f262a307453af2151b02070.gif"},38659:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Muscle BioAmp Shield-4340b76b8874aa773668c6cb3e7e07ca.jpg"},32965:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Skin Preparation-cf8d399e35186ce01c8576e34794b995.gif"},75435:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Stacking on Arduino Uno-99a27d290d02161f66b0c83c2de90e79.gif"},36462:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Thumbnail-ca400f68ef4bd2cf67861fcd2a8cf587.gif"},90030:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Using EMG Band-def7f5f26a1bf88379bc3881df4a7934.gif"},20076:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/Using Gel Electrodes-0c104176787c59335e79ed7bbaf3bab1.gif"}}]); \ No newline at end of file diff --git a/assets/js/e9164146.3877a6f0.js b/assets/js/e9164146.3877a6f0.js new file mode 100644 index 00000000..52545b44 --- /dev/null +++ b/assets/js/e9164146.3877a6f0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8259],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var i=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=i.createContext({}),p=function(e){var t=i.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=r(e,["components","mdxType","originalType","parentName"]),c=p(n),m=a,h=c["".concat(s,".").concat(m)]||c[m]||d[m]||o;return n?i.createElement(h,l(l({ref:t},u),{},{components:n})):i.createElement(h,l({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,l=new Array(o);l[0]=m;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[c]="string"==typeof e?e:a,l[1]=r;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>r,toc:()=>p});var i=n(87462),a=(n(67294),n(3905));const o={},l="Using Muscle BioAmp Candy (Candy Size Muscle Sensor)",r={unversionedId:"Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG",id:"Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG",title:"Using Muscle BioAmp Candy (Candy Size Muscle Sensor)",description:"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 Candy (candy-size EMG sensor) and Arduino Uno.",source:"@site/docs/Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG.md",sourceDirName:"Experiments/EMG Experiments/BisCute Visualize EMG",slug:"/Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG",permalink:"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Using Muscle BioAmp Patchy (wearable Muscle Sensor)",permalink:"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1"},next:{title:"Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield",permalink:"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield"}},s={},p=[{value:"What is Electromyography (EMG)?",id:"what-is-electromyography-emg",level:2},{value:"About Muscle BioAmp Candy:",id:"about-muscle-bioamp-candy",level:3},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE:",id:"hardware",level:3},{value:"SKIN PREPARATION KIT & ELECTRODE GEL:",id:"skin-preparation-kit--electrode-gel",level:3},{value:"SOFTWARE:",id:"software",level:3},{value:"Step 1: Connecting Electrode Cable",id:"step-1-connecting-electrode-cable",level:2},{value:"Step 2: Skin Preparation",id:"step-2-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 3: Electrode Placements",id:"step-3-electrode-placements",level:2},{value:"Measuring EMG using Gel electrodes:",id:"measuring-emg-using-gel-electrodes",level:3},{value:"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:",id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band",level:3},{value:"Step 4: Connections",id:"step-4-connections",level:2},{value:"Step 5: Download Arduino IDE",id:"step-5-download-arduino-ide",level:2},{value:"Step 6: Coding Time!",id:"step-6-coding-time",level:2},{value:"Step 7: Enjoy & Flex Your Arm",id:"step-7-enjoy--flex-your-arm",level:2},{value:"Step 8: Complete Video Guide",id:"step-8-complete-video-guide",level:2}],u={toc:p},c="wrapper";function d(e){let{components:t,...o}=e;return(0,a.kt)(c,(0,i.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"using-muscle-bioamp-candy-candy-size-muscle-sensor"},"Using Muscle BioAmp Candy (Candy Size Muscle Sensor)"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(59233).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(33157).Z,width:"1920",height:"1080"}),"\nIn 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 Candy (candy-size EMG sensor) and Arduino Uno."),(0,a.kt)("p",null,"But before moving forward, let's understand a brief about Electromyography."),(0,a.kt)("h2",{id:"what-is-electromyography-emg"},"What is Electromyography (EMG)?"),(0,a.kt)("p",null,"Electromyography is a technique that measures muscle response or electrical activity in response to a nerve\u2019s 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."),(0,a.kt)("h3",{id:"about-muscle-bioamp-candy"},"About Muscle BioAmp Candy:"),(0,a.kt)("p",null,"Muscle BioAmp Candy is a candy-size EMG sensor that can record minute electrical signals from the surface of our muscles and amplify them to a level a microcontroller unit (MCU) can understand."),(0,a.kt)("p",null,"The entire BioAmp series of sensors from Upside Down Labs is designed to teach you the basics of the instrumentation amplifier, active bandpass filtering, soldering, programming, neuroscience, HCI, and BCI to name a few concepts."),(0,a.kt)("h2",{id:"supplies"},"Supplies"),(0,a.kt)("h3",{id:"hardware"},"HARDWARE:"),(0,a.kt)("p",null,"1 x Muscle BioAmp Candy Kit (",(0,a.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-candy/"},"Upside Down Labs Store")," |\n",(0,a.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B09ZDZVCT7?ref=myi_title_dp"},"Amazon Store")," | ",(0,a.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-candy/"},"Tindie Store"),")"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"The Kit includes:",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"Muscle BioAmp Candy x 1"),(0,a.kt)("li",{parentName:"ul"},"BioAmp Cable (50cm) x 1"),(0,a.kt)("li",{parentName:"ul"},"Jumper Wires x 3"),(0,a.kt)("li",{parentName:"ul"},"Gel Electrodes x 3"),(0,a.kt)("li",{parentName:"ul"},"Muscle BioAmp Band x 1")))),(0,a.kt)("p",null,"1 x Arduino uno with USB cable (Type A to Type B)"),(0,a.kt)("h3",{id:"skin-preparation-kit--electrode-gel"},"SKIN PREPARATION KIT & ELECTRODE GEL:"),(0,a.kt)("p",null,"1 x NuPrep skin preparation gel (",(0,a.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/nuprep-gel/"},"Upside Down Labs Store")," | ",(0,a.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/"},"Tindie Store"),")"),(0,a.kt)("p",null,"1 x Wet wipe"),(0,a.kt)("p",null,"1 x Electrode Gel (",(0,a.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/electrode-gel/"},"Upside Down Labs Store")," | ",(0,a.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/electrode-gel-250ml/"},"Tindie Store"),")"),(0,a.kt)("h3",{id:"software"},"SOFTWARE:"),(0,a.kt)("p",null,"Arduino IDE"),(0,a.kt)("h2",{id:"step-1-connecting-electrode-cable"},"Step 1: Connecting Electrode Cable"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:n(39943).Z,width:"768",height:"432"})),(0,a.kt)("p",null,"Connect the BioAmp Cable to Muscle BioAmp BisCute 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 Muscle BioAmp BisCute."),(0,a.kt)("h2",{id:"step-2-skin-preparation"},"Step 2: Skin Preparation"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:n(22720).Z,width:"768",height:"432"})),(0,a.kt)("p",null,"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."),(0,a.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,a.kt)("p",null,"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."),(0,a.kt)("h2",{id:"step-3-electrode-placements"},"Step 3: Electrode Placements"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:n(70883).Z,width:"768",height:"432"})),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"dodge gif",src:n(45154).Z,width:"768",height:"432"})),(0,a.kt)("p",null,"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."),(0,a.kt)("h3",{id:"measuring-emg-using-gel-electrodes"},"Measuring EMG using Gel electrodes:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,a.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,a.kt)("li",{parentName:"ol"},"Place the IN+ and IN- cables on the arm near the ulnar nerve & REF (reference) at the back of your hand as shown in the connection diagram.")),(0,a.kt)("h3",{id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band"},"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"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."),(0,a.kt)("li",{parentName:"ol"},"Now put a small drop of electrode gel between the skin and metallic part of BioAmp Cable to get the best results.")),(0,a.kt)("h2",{id:"step-4-connections"},"Step 4: Connections"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(25216).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,"Connect Muscle BioAmp Candy to Arduino Uno using the jumper cables as directed below:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"VCC to 5V"),(0,a.kt)("li",{parentName:"ul"},"GND to GND"),(0,a.kt)("li",{parentName:"ul"},"OUT to A0")),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Note:")," BE VERY CAREFUL and follow the above diagram while making the connections between your Muscle BioAmp Candy & Arduino Uno, especially the GND and VCC else it may damage the sensor."),(0,a.kt)("h2",{id:"step-5-download-arduino-ide"},"Step 5: Download Arduino IDE"),(0,a.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,a.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,a.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"Note:")," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,a.kt)("h2",{id:"step-6-coding-time"},"Step 6: Coding Time!"),(0,a.kt)("p",null,"Copy paste any one of the Arduino Sketches given below in Arduino IDE:"),(0,a.kt)("p",null,"EMG Envelop: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino")),(0,a.kt)("p",null,"EMG Filter: ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino")),(0,a.kt)("p",null,"After flashing the code, open the serial plotter to visualize the EMG signals."),(0,a.kt)("h2",{id:"step-7-enjoy--flex-your-arm"},"Step 7: Enjoy & Flex Your Arm"),(0,a.kt)("p",null,(0,a.kt)("img",{src:n(59233).Z,width:"1920",height:"1080"})),(0,a.kt)("p",null,"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."),(0,a.kt)("p",null,"You are all set to explore on your own and make amazing HCI projects at the comfort zone of your home."),(0,a.kt)("h2",{id:"step-8-complete-video-guide"},"Step 8: Complete Video Guide"),(0,a.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/lPX2TGBcHOA?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,a.kt)("p",null,"You can also watch this complete video guide of this project."),(0,a.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,a.kt)("p",null,"You can also mail us at ",(0,a.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}d.isMDXComponent=!0},39943:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Connecting Electrode Cable-443df7ac74b34f19a92befd17b1cc23c.gif"},25216:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Connections-986e9f269b7810de64883bdaa9489737.jpg"},22720:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Skin Preparation-cf8d399e35186ce01c8576e34794b995.gif"},59233:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Thumbnail1-3b9ce444c404ca1dbbd201a477469faa.jpg"},33157:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Thumbnail2-2c335ee43bbd5a85cdfb33f4a97c5bc2.jpg"},45154:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Using EMG Band-def7f5f26a1bf88379bc3881df4a7934.gif"},70883:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/Using Gel Electrodes-0c104176787c59335e79ed7bbaf3bab1.gif"}}]); \ No newline at end of file diff --git a/assets/js/e96c2486.8c2bbe73.js b/assets/js/e96c2486.8c2bbe73.js deleted file mode 100644 index 8ce7c9d0..00000000 --- a/assets/js/e96c2486.8c2bbe73.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1420],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var o=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=o.createContext({}),p=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=p(e.components);return o.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=p(n),h=i,m=d["".concat(s,".").concat(h)]||d[h]||u[h]||r;return n?o.createElement(m,a(a({ref:t},c),{},{components:n})):o.createElement(m,a({ref:t},c))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,a=new Array(r);a[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:i,a[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>p});var o=n(87462),i=(n(67294),n(3905));const r={sidebar_position:2},a="EEG Experiments",l={unversionedId:"Experiments/EEG Experiments/EEGExperiments",id:"Experiments/EEG Experiments/EEGExperiments",title:"EEG Experiments",description:"In this project we will be recording brainwaves or EEG from prefrontal cortex part of the brain using Arduino Uno and BioAmp EXG Pill.",source:"@site/docs/Experiments/EEG Experiments/EEGExperiments.md",sourceDirName:"Experiments/EEG Experiments",slug:"/Experiments/EEG Experiments/EEGExperiments",permalink:"/docs/next/Experiments/EEG Experiments/EEGExperiments",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/EEG Experiments/EEGExperiments.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"ECG Experiments",permalink:"/docs/next/Experiments/ECG Experiments/ECGExperiments"},next:{title:"Recording and Visualizing Muscle Signals (EMG) Using Muscle BioAmp Patchy (wearable Muscle Sensor)",permalink:"/docs/next/Experiments/EMG Experiments/EMGExperiment1/"}},s={},p=[{value:"What is Electroencephalography (EEG)?",id:"what-is-electroencephalography-eeg",level:2},{value:"About BioAmp EXG Pill:",id:"about-bioamp-exg-pill",level:2},{value:"HARDWARE",id:"hardware",level:2},{value:"SOFTWARE",id:"software",level:2},{value:"Step 1: Assembly",id:"step-1-assembly",level:2},{value:"Step 2: Skin Preparation",id:"step-2-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 3: Connecting Electrode Cable",id:"step-3-connecting-electrode-cable",level:2},{value:"Step 4: Electrode Placements",id:"step-4-electrode-placements",level:2},{value:"What is International 10-20 system for recording EEG?",id:"what-is-international-10-20-system-for-recording-eeg",level:3},{value:"Options to measure EEG",id:"options-to-measure-eeg",level:3},{value:"Option 1 - Measuring EEG using Gel electrodes:",id:"option-1---measuring-eeg-using-gel-electrodes",level:3},{value:"Option 2 - Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band and gel electrode:",id:"option-2---measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band-and-gel-electrode",level:3},{value:"Step 5: Connections",id:"step-5-connections",level:2},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide",level:2},{value:"Step 7: Download Spike Recorder",id:"step-7-download-spike-recorder",level:2},{value:"Step 8: Configurations on Spike Recorder",id:"step-8-configurations-on-spike-recorder",level:2},{value:"Step 9: Visualizing EEG",id:"step-9-visualizing-eeg",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...r}=e;return(0,i.kt)(d,(0,o.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"eeg-experiments"},"EEG Experiments"),(0,i.kt)("h1",{id:"recording-eeg-from-pre-frontal-cortex-of-brain-using-bioamp-exg-pill"},"Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill"),(0,i.kt)("p",null,(0,i.kt)("img",{src:n(14982).Z,width:"3637",height:"1825"})),(0,i.kt)("p",null,"In this project we will be recording brainwaves or EEG from prefrontal cortex part of the brain using Arduino Uno and BioAmp EXG Pill."),(0,i.kt)("h2",{id:"what-is-electroencephalography-eeg"},"What is Electroencephalography (EEG)?"),(0,i.kt)("p",null,"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."),(0,i.kt)("h2",{id:"about-bioamp-exg-pill"},"About BioAmp EXG Pill:"),(0,i.kt)("p",null,"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)."),(0,i.kt)("p",null,"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."),(0,i.kt)("h1",{id:"supplies"},"Supplies"),(0,i.kt)("h2",{id:"hardware"},"HARDWARE"),(0,i.kt)("p",null,"1 x BioAmp EXG Pill (with JST PH 2.0 connector and a header pin)"),(0,i.kt)("p",null,"1 x BioAmp Cable"),(0,i.kt)("p",null,"3 x Gel Electrodes"),(0,i.kt)("p",null,"3 x Jumper Cables"),(0,i.kt)("p",null,"1 x Arduino Uno / Maker Uno with USB Cable (You can also use any other microcontroller board with an ADC)"),(0,i.kt)("p",null,"1 x Nuprep Skin Preparation Gel"),(0,i.kt)("p",null,"1 x Wet wipe"),(0,i.kt)("p",null,"1 x Brain BioAmp Band (optional)"),(0,i.kt)("p",null,"1 x Electrode Gel (only if using Brain BioAmp Band)"),(0,i.kt)("h2",{id:"software"},"SOFTWARE"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Arduino IDE"),(0,i.kt)("li",{parentName:"ol"},"Backyard Brains' Spike Recorder")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Note"),": You can either get DIY Neuroscience Kit Basic or BioAmp EXG Pill Packs by clicking the links below:"),(0,i.kt)("p",null,"DIY Neuroscience Kit Basic (",(0,i.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/diy-neuroscience-kit-basic/"},"Upside Down Labs Store")," |\n",(0,i.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," | ",(0,i.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0CBMTHLDJ?ref_=cm_sw_r_cp_ud_dp_E2A1CNJXN6ACZ4THA5ZQ"},"Amazon Store"),")"),(0,i.kt)("p",null,"BioAmp EXG Pill Pack (",(0,i.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," | ",(0,i.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," )"),(0,i.kt)("p",null,"BioAmp EXG Pill - EXG Explorer Pack (",(0,i.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/bioamp-exg-pill/"},"Upside Down Labs Store")," |\n",(0,i.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/diy-neuroscience-kit-basic/"},"Tindie Store")," | ",(0,i.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0B29CCPQB?ref_=cm_sw_r_cp_ud_dp_4D6ZTBD5RRASS5QM6HK1"},"Amazon Store"),")"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"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."),(0,i.kt)("h2",{id:"step-1-assembly"},"Step 1: Assembly"),(0,i.kt)("p",null,(0,i.kt)("img",{src:n(84465).Z,width:"1920",height:"1080"})),(0,i.kt)("p",null,"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."),(0,i.kt)("h2",{id:"step-2-skin-preparation"},"Step 2: Skin Preparation"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"dodge gif",src:n(10460).Z,width:"1152",height:"648"})),(0,i.kt)("p",null,"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."),(0,i.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,i.kt)("p",null,"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."),(0,i.kt)("h2",{id:"step-3-connecting-electrode-cable"},"Step 3: Connecting Electrode Cable"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"dodge gif",src:n(82629).Z,width:"1152",height:"648"})),(0,i.kt)("p",null,"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."),(0,i.kt)("h2",{id:"step-4-electrode-placements"},"Step 4: Electrode Placements"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"dodge gif",src:n(45015).Z,width:"1152",height:"648"}),"\n",(0,i.kt)("img",{alt:"dodge gif",src:n(7106).Z,width:"1152",height:"648"})),(0,i.kt)("p",null,"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 "),(0,i.kt)("h3",{id:"what-is-international-10-20-system-for-recording-eeg"},"What is International 10-20 system for recording EEG?"),(0,i.kt)("p",null,"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."),(0,i.kt)("h3",{id:"options-to-measure-eeg"},"Options to measure EEG"),(0,i.kt)("p",null,"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."),(0,i.kt)("h3",{id:"option-1---measuring-eeg-using-gel-electrodes"},"Option 1 - Measuring EEG using Gel electrodes:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,i.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,i.kt)("li",{parentName:"ol"},"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.")),(0,i.kt)("h3",{id:"option-2---measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band-and-gel-electrode"},"Option 2 - Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band and gel electrode:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to Brain BioAmp Band in a way such that IN+ and IN- are placed on the forehead."),(0,i.kt)("li",{parentName:"ol"},"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."),(0,i.kt)("li",{parentName:"ol"},"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.")),(0,i.kt)("h2",{id:"step-5-connections"},"Step 5: Connections"),(0,i.kt)("p",null,(0,i.kt)("img",{src:n(61892).Z,width:"1024",height:"576"})),(0,i.kt)("p",null,"Connect BioAmp EXG Pill to Arduino Uno using the jumper cables as directed below:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"VCC to 5V"),(0,i.kt)("li",{parentName:"ol"},"GND to GND"),(0,i.kt)("li",{parentName:"ol"},"OUT to A0")),(0,i.kt)("h2",{id:"step-6-download-arduino-ide"},"Step 6: Download Arduino IDE"),(0,i.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"Ardiuno IDE")),(0,i.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,i.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Note"),": Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,i.kt)("h2",{id:"step-7-download-spike-recorder"},"Step 7: Download Spike Recorder"),(0,i.kt)("p",null,"Download Backyard Brains' Spike Recorder according to the operating system you are using (Windows, OSX, Linux) from the link given below:"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://backyardbrains.com/products/spikerecorder"},"https://backyardbrains.com/products/spikerecorder")),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,"Spike Recorder Arduino Code: ",(0,i.kt)("a",{parentName:"p",href:"https://raw.githubusercontent.com/BackyardBrains/SpikerShield/master/Muscle/Arduino%20Code/SpikeRecorder/SpikeRecorderSpikerShield_V1_1.ino"},"https://raw.githubusercontent.com/BackyardBrains/SpikerShield/master/Muscle/Arduino%20Code/SpikeRecorder/SpikeRecorderSpikerShield_V1_1.ino")),(0,i.kt)("p",null,"Now start the Spike Recorder."),(0,i.kt)("h2",{id:"step-8-configurations-on-spike-recorder"},"Step 8: Configurations on Spike Recorder"),(0,i.kt)("p",null,(0,i.kt)("img",{src:n(49159).Z,width:"1920",height:"1080"})),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,"Also mute the speakers and apply the 50Hz notch filter by clicking on the checkbox as shown in the screenshot above."),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,"Now everything is configured and connected. So close the settings window and start recording EEG signals."),(0,i.kt)("h2",{id:"step-9-visualizing-eeg"},"Step 9: Visualizing EEG"),(0,i.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/QzZh243-Ac8?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,"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."),(0,i.kt)("p",null,"We hope everything is clear now and you understand how the signals are propagating from your brain to the screen of the laptop."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"}," Features of Spike Recorder that you can explore:")),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"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."),(0,i.kt)("li",{parentName:"ol"},"Increase or decrease the X axis timescale by sliding up and down on the scroll wheel of the mouse."),(0,i.kt)("li",{parentName:"ol"},"Visualize the FFT graph by clicking on the FFT icon on top left size of the screen."),(0,i.kt)("li",{parentName:"ol"},"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."),(0,i.kt)("li",{parentName:"ol"},"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\nIt 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.")),(0,i.kt)("p",null,"You can also mail us at ",(0,i.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."))}u.isMDXComponent=!0},10460:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/Skin_Prep2-f4487abe9092ef8283c9d233041ec065.gif"},82629:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/eeggif1-c3bb88585bf28390953331b327d89a82.gif"},45015:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/eeggif2-f4d681029cc7aa1c60c9626b698f9be0.gif"},7106:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/eeggif3-6ac2fe6bc1ecb5bf78e1b065b916e5a8.gif"},14982:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/eegimg1-99c76a9500dc08dd78f1a4f409cd6225.png"},84465:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/eegimg2-455608d34bd57aecb79e4eb8918a849c.jpg"},61892:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/eegimg3-cb7dbe6284ad865f5b1d73ced8fca3db.webp"},49159:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/eegimg4-e3d82289bd37d7da21b6a0df827e2e3e.jpg"}}]); \ No newline at end of file diff --git a/assets/js/eed5333f.e77bbabe.js b/assets/js/eed5333f.e77bbabe.js new file mode 100644 index 00000000..3a71fc7b --- /dev/null +++ b/assets/js/eed5333f.e77bbabe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9612],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var o=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function n(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var s=o.createContext({}),p=function(e){var t=o.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):n(n({},t),e)),a},u=function(e){var t=p(e.components);return o.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var a=e.components,i=e.mdxType,l=e.originalType,s=e.parentName,u=r(e,["components","mdxType","originalType","parentName"]),c=p(a),m=i,h=c["".concat(s,".").concat(m)]||c[m]||d[m]||l;return a?o.createElement(h,n(n({ref:t},u),{},{components:a})):o.createElement(h,n({ref:t},u))}));function h(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var l=a.length,n=new Array(l);n[0]=m;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[c]="string"==typeof e?e:i,n[1]=r;for(var p=2;p{a.r(t),a.d(t,{assets:()=>S,contentTitle:()=>B,default:()=>x,frontMatter:()=>N,metadata:()=>C,toc:()=>G});var o=a(87462),i=a(67294),l=a(3905),n=a(86010),r=a(12466),s=a(16550),p=a(91980),u=a(67392),c=a(50012);function d(e){return function(e){return i.Children.map(e,(e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:o,default:i}}=e;return{value:t,label:a,attributes:o,default:i}}))}function m(e){const{values:t,children:a}=e;return(0,i.useMemo)((()=>{const e=t??d(a);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,a])}function h(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function g(e){let{queryString:t=!1,groupId:a}=e;const o=(0,s.k6)(),l=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,p._X)(l),(0,i.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(o.location.search);t.set(l,e),o.replace({...o.location,search:t.toString()})}),[l,o])]}function b(e){const{defaultValue:t,queryString:a=!1,groupId:o}=e,l=m(e),[n,r]=(0,i.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!h({value:t,tabValues:a}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const o=a.find((e=>e.default))??a[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:t,tabValues:l}))),[s,p]=g({queryString:a,groupId:o}),[u,d]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[o,l]=(0,c.Nk)(a);return[o,(0,i.useCallback)((e=>{a&&l.set(e)}),[a,l])]}({groupId:o}),b=(()=>{const e=s??u;return h({value:e,tabValues:l})?e:null})();(0,i.useLayoutEffect)((()=>{b&&r(b)}),[b]);return{selectedValue:n,selectValue:(0,i.useCallback)((e=>{if(!h({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);r(e),p(e),d(e)}),[p,d,l]),tabValues:l}}var k=a(72389);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function w(e){let{className:t,block:a,selectedValue:l,selectValue:s,tabValues:p}=e;const u=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.o5)(),d=e=>{const t=e.currentTarget,a=u.indexOf(t),o=p[a].value;o!==l&&(c(t),s(o))},m=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const a=u.indexOf(e.currentTarget)+1;t=u[a]??u[0];break}case"ArrowLeft":{const a=u.indexOf(e.currentTarget)-1;t=u[a]??u[u.length-1];break}}t?.focus()};return i.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,n.Z)("tabs",{"tabs--block":a},t)},p.map((e=>{let{value:t,label:a,attributes:r}=e;return i.createElement("li",(0,o.Z)({role:"tab",tabIndex:l===t?0:-1,"aria-selected":l===t,key:t,ref:e=>u.push(e),onKeyDown:m,onClick:d},r,{className:(0,n.Z)("tabs__item",f.tabItem,r?.className,{"tabs__item--active":l===t})}),a??t)})))}function y(e){let{lazy:t,children:a,selectedValue:o}=e;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===o));return e?(0,i.cloneElement)(e,{className:"margin-top--md"}):null}return i.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,i.cloneElement)(e,{key:t,hidden:e.props.value!==o}))))}function E(e){const t=b(e);return i.createElement("div",{className:(0,n.Z)("tabs-container",f.tabList)},i.createElement(w,(0,o.Z)({},e,t)),i.createElement(y,(0,o.Z)({},e,t)))}function v(e){const t=(0,k.Z)();return i.createElement(E,(0,o.Z)({key:String(t)},e))}const A={tabItem:"tabItem_Ymn6"};function M(e){let{children:t,hidden:a,className:o}=e;return i.createElement("div",{role:"tabpanel",className:(0,n.Z)(A.tabItem,o),hidden:a},t)}const N={},B="Visualizing Muscle Signals (EMG)",C={unversionedId:"Experiments/EMG Experiments/BisCute Visualize EMG/BisCute Visualize EMG",id:"Experiments/EMG Experiments/BisCute Visualize EMG/BisCute Visualize EMG",title:"Visualizing Muscle Signals (EMG)",description:"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.",source:"@site/docs/Experiments/EMG Experiments/BisCute Visualize EMG/BisCute Visualize EMG.md",sourceDirName:"Experiments/EMG Experiments/BisCute Visualize EMG",slug:"/Experiments/EMG Experiments/BisCute Visualize EMG/",permalink:"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/Experiments/EMG Experiments/BisCute Visualize EMG/BisCute Visualize EMG.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill",permalink:"/docs/next/Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill/"},next:{title:"Using Muscle BioAmp Patchy (wearable Muscle Sensor)",permalink:"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1"}},S={},G=[{value:"What is Electromyography (EMG)?",id:"what-is-electromyography-emg",level:2},{value:"About Muscle BioAmp BisCute:",id:"about-muscle-bioamp-biscute",level:3},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE:",id:"hardware",level:3},{value:"SKIN PREPARATION KIT & ELECTRODE GEL:",id:"skin-preparation-kit--electrode-gel",level:3},{value:"SOFTWARE:",id:"software",level:3},{value:"Step 1: Assembly",id:"step-1-assembly",level:2},{value:"Step 2: Connecting Electrode Cable",id:"step-2-connecting-electrode-cable",level:2},{value:"Step 3: Skin Preparation",id:"step-3-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 4: Electrode Placements",id:"step-4-electrode-placements",level:2},{value:"Measuring EMG using Gel electrodes:",id:"measuring-emg-using-gel-electrodes",level:3},{value:"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:",id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band",level:3},{value:"Step 5: Connections",id:"step-5-connections",level:2},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide",level:2},{value:"Step 7: Coding Time!",id:"step-7-coding-time",level:2},{value:"Step 8: Enjoy & Flex Your Arm",id:"step-8-enjoy--flex-your-arm",level:2},{value:"Step 9: Complete Video Guide",id:"step-9-complete-video-guide",level:2},{value:"What is Electromyography (EMG)?",id:"what-is-electromyography-emg-1",level:2},{value:"About Muscle BioAmp Candy:",id:"about-muscle-bioamp-candy",level:3},{value:"Supplies",id:"supplies-1",level:2},{value:"HARDWARE:",id:"hardware-1",level:3},{value:"SKIN PREPARATION KIT & ELECTRODE GEL:",id:"skin-preparation-kit--electrode-gel-1",level:3},{value:"SOFTWARE:",id:"software-1",level:3},{value:"Step 1: Connecting Electrode Cable",id:"step-1-connecting-electrode-cable",level:2},{value:"Step 2: Skin Preparation",id:"step-2-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel-1",level:3},{value:"Step 3: Electrode Placements",id:"step-3-electrode-placements",level:2},{value:"Measuring EMG using Gel electrodes:",id:"measuring-emg-using-gel-electrodes-1",level:3},{value:"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:",id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band-1",level:3},{value:"Step 4: Connections",id:"step-4-connections",level:2},{value:"Step 5: Download Arduino IDE",id:"step-5-download-arduino-ide",level:2},{value:"Step 6: Coding Time!",id:"step-6-coding-time",level:2},{value:"Step 7: Enjoy & Flex Your Arm",id:"step-7-enjoy--flex-your-arm",level:2},{value:"Step 8: Complete Video Guide",id:"step-8-complete-video-guide",level:2},{value:"What is Electromyography (EMG)?",id:"what-is-electromyography-emg-2",level:2},{value:"About Muscle BioAmp Patchy:",id:"about-muscle-bioamp-patchy",level:3},{value:"Supplies",id:"supplies-2",level:2},{value:"HARDWARE",id:"hardware-2",level:2},{value:"SOFTWARE:",id:"software-2",level:2},{value:"Step 1: Connecting Reference Cable",id:"step-1-connecting-reference-cable",level:2},{value:"Step 2: Connecting Muscle BioAmp Patchy to Gel Electrodes",id:"step-2-connecting-muscle-bioamp-patchy-to-gel-electrodes",level:2},{value:"Step 3: Skin Preparation",id:"step-3-skin-preparation-1",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel-2",level:3},{value:"Step 4: Electrode Placements",id:"step-4-electrode-placements-1",level:2},{value:"Step 5: Connections",id:"step-5-connections-1",level:2},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide-1",level:2},{value:"Step 7: Check All the Conections",id:"step-7-check-all-the-conections",level:2},{value:"Step 8: Coding Time!",id:"step-8-coding-time",level:2},{value:"Step 9: Flex Your Muscle",id:"step-9-flex-your-muscle",level:2},{value:"What is Electromyography (EMG)?",id:"what-is-electromyography-emg-3",level:2},{value:"About Muscle BioAmp Shield:",id:"about-muscle-bioamp-shield",level:3},{value:"Supplies",id:"supplies-3",level:2},{value:"HARDWARE:",id:"hardware-3",level:3},{value:"SKIN PREPARATION KIT & ELECTRODE GEL:",id:"skin-preparation-kit--electrode-gel-2",level:3},{value:"SOFTWARE:",id:"software-3",level:3},{value:"Step 1: Assembly",id:"step-1-assembly-1",level:2},{value:"Step 2: Stacking on Arduino Uno",id:"step-2-stacking-on-arduino-uno",level:2},{value:"Step 3: Connecting Electrode Cable",id:"step-3-connecting-electrode-cable",level:2},{value:"Step 4: Skin Preparation",id:"step-4-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel-3",level:3},{value:"Step 5: Electrode Placements",id:"step-5-electrode-placements",level:2},{value:"Measuring EMG using Gel electrodes:",id:"measuring-emg-using-gel-electrodes-2",level:3},{value:"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:",id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band-2",level:3},{value:"Step 6: Download Arduino IDE",id:"step-6-download-arduino-ide-2",level:2},{value:"Step 7: Coding Time!",id:"step-7-coding-time-1",level:2},{value:"Step 8: Enjoy & Flex Your Arm",id:"step-8-enjoy--flex-your-arm-1",level:2},{value:"Step 9: Listen to Your Muscles",id:"step-9-listen-to-your-muscles",level:2},{value:"Listening on a wired earphones/headphones:",id:"listening-on-a-wired-earphonesheadphones",level:3},{value:"Listening on a speaker using BioAmp AUX Cable:",id:"listening-on-a-speaker-using-bioamp-aux-cable",level:3},{value:"Step 10: Make It Portable",id:"step-10-make-it-portable",level:2},{value:"Step 11: Some Other Projects",id:"step-11-some-other-projects",level:2}],I={toc:G},T="wrapper";function x(e){let{components:t,...i}=e;return(0,l.kt)(T,(0,o.Z)({},I,i,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h1",{id:"visualizing-muscle-signals-emg"},"Visualizing Muscle Signals (EMG)"),(0,l.kt)(v,{mdxType:"Tabs"},(0,l.kt)(M,{value:"Muscle BioAmp BisCute",label:"Muscle BioAmp BisCute",default:!0,mdxType:"TabItem"},(0,l.kt)("p",null,(0,l.kt)("img",{src:a(5202).Z,width:"1920",height:"1080"}),"\n",(0,l.kt)("img",{src:a(304).Z,width:"1920",height:"1080"})),(0,l.kt)("p",null,"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."),(0,l.kt)("h2",{id:"what-is-electromyography-emg"},"What is Electromyography (EMG)?"),(0,l.kt)("p",null,"Electromyography is a technique that measures muscle response or electrical activity in response to a nerve\u2019s 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."),(0,l.kt)("h3",{id:"about-muscle-bioamp-biscute"},"About Muscle BioAmp BisCute:"),(0,l.kt)("p",null,"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."),(0,l.kt)("p",null,"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."),(0,l.kt)("h2",{id:"supplies"},"Supplies"),(0,l.kt)("h3",{id:"hardware"},"HARDWARE:"),(0,l.kt)("p",null,"1 x Muscle BioAmp BisCute Kit (",(0,l.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-biscute-diy/"},"Upside Down Labs Store")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0BDRFL2VY/ref=brnd_rev_mng"},"Amazon India")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-biscute-diy-muscle-sensor/"},"Tindie Store"),")"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"The Kit includes:",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Muscle BioAmp BisCute PCB x 1"),(0,l.kt)("li",{parentName:"ul"},"Passive Components",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Ceramic capacitors."),(0,l.kt)("li",{parentName:"ul"},"Electrolytic capacitors"),(0,l.kt)("li",{parentName:"ul"},"Resistors"),(0,l.kt)("li",{parentName:"ul"},"Quad OpAmp"))),(0,l.kt)("li",{parentName:"ul"},"BioAmp Cable (50cm) x 1"),(0,l.kt)("li",{parentName:"ul"},"Jumper Wires x 3"),(0,l.kt)("li",{parentName:"ul"},"Gel Electrodes x 3"),(0,l.kt)("li",{parentName:"ul"},"Muscle BioAmp Band x 1")))),(0,l.kt)("p",null,"1 x Arduino UNO with USB cable (Type A to Type B)"),(0,l.kt)("p",null,"Soldering iron and other equipments to solder the passive components on the PCB"),(0,l.kt)("h3",{id:"skin-preparation-kit--electrode-gel"},"SKIN PREPARATION KIT & ELECTRODE GEL:"),(0,l.kt)("p",null,"1 x NuPrep skin preparation gel (",(0,l.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/nuprep-gel/"},"Upside Down Labs Store")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/"},"Tindie Store"),")"),(0,l.kt)("p",null,"1 x Wet wipe"),(0,l.kt)("p",null,"1 x Electrode Gel (only if using Muscle BioAmp Band) (",(0,l.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/electrode-gel/"},"Upside Down Labs Store")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/electrode-gel-250ml/"},"Tindie Store"),")"),(0,l.kt)("h3",{id:"software"},"SOFTWARE:"),(0,l.kt)("p",null,"Arduino IDE"),(0,l.kt)("h2",{id:"step-1-assembly"},"Step 1: Assembly"),(0,l.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/2dzW6pVT1L8?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,l.kt)("p",null,"As Muscle BioAmp BisCute is a DIY muscle sensor, so first of all you have to assemble all the passive components on the PCB."),(0,l.kt)("p",null,"The interactive BOM can be found on the link below:"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"https://upsidedownlabs.github.io/Muscle-BioAmp-BisCute/"},"https://upsidedownlabs.github.io/Muscle-BioAmp-BisCute/")),(0,l.kt)("p",null,"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 (",(0,l.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-candy/"},"Upside Down Labs Store")," | ",(0,l.kt)("a",{parentName:"p",href:"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"},"Amazon India")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-candy/"},"Tindie Store"),")"),(0,l.kt)("h2",{id:"step-2-connecting-electrode-cable"},"Step 2: Connecting Electrode Cable"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(36596).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"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."),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Note:")," Don't place the electrodes on the skin at this moment."),(0,l.kt)("h2",{id:"step-3-skin-preparation"},"Step 3: Skin Preparation"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(11568).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"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."),(0,l.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,l.kt)("p",null,"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."),(0,l.kt)("h2",{id:"step-4-electrode-placements"},"Step 4: Electrode Placements"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(69412).Z,width:"768",height:"432"})),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(46200).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"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."),(0,l.kt)("h3",{id:"measuring-emg-using-gel-electrodes"},"Measuring EMG using Gel electrodes:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,l.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,l.kt)("li",{parentName:"ol"},"Place the IN+ and IN- cables on the arm near the ulnar nerve & REF (reference) at the back of your hand.")),(0,l.kt)("h3",{id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band"},"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"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."),(0,l.kt)("li",{parentName:"ol"},"Wear the band on your arm as shown in the gif above."),(0,l.kt)("li",{parentName:"ol"},"Now put a small drop of electrode gel between the skin and metallic part of BioAmp Cable to get the best results.")),(0,l.kt)("h2",{id:"step-5-connections"},"Step 5: Connections"),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(29712).Z,width:"1920",height:"1080"})),(0,l.kt)("p",null,"Connect Muscle BioAmp BisCute to Arduino Uno using the jumper cables as directed below:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"VCC to 5V"),(0,l.kt)("li",{parentName:"ul"},"GND to GND"),(0,l.kt)("li",{parentName:"ul"},"OUT to A0\n",(0,l.kt)("strong",{parentName:"li"},"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.")),(0,l.kt)("h2",{id:"step-6-download-arduino-ide"},"Step 6: Download Arduino IDE"),(0,l.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,l.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,l.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Note:")," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,l.kt)("h2",{id:"step-7-coding-time"},"Step 7: Coding Time!"),(0,l.kt)("p",null,"Copy paste any one of the Arduino Sketches given below in Arduino IDE:"),(0,l.kt)("p",null,"EMG Envelop: ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino")),(0,l.kt)("p",null,"EMG Filter: ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino")),(0,l.kt)("p",null,"After flashing the code, open the serial plotter to visualize the EMG signals."),(0,l.kt)("h2",{id:"step-8-enjoy--flex-your-arm"},"Step 8: Enjoy & Flex Your Arm"),(0,l.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/yWej1uOHFiA?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,l.kt)("p",null,"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."),(0,l.kt)("p",null,"You are all set to explore on your own and make amazing HCI projects at the comfort zone of your home."),(0,l.kt)("h2",{id:"step-9-complete-video-guide"},"Step 9: Complete Video Guide"),(0,l.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/ujFsAE0E0nk?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,l.kt)("p",null,"You can also watch this complete video guide of this project."),(0,l.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,l.kt)("p",null,"You can also mail us at ",(0,l.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project.")),(0,l.kt)(M,{value:"Muscle BioAmp Candy",label:"Muscle BioAmp Candy",mdxType:"TabItem"},(0,l.kt)("p",null,(0,l.kt)("img",{src:a(59233).Z,width:"1920",height:"1080"})),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(33157).Z,width:"1920",height:"1080"})),(0,l.kt)("p",null,"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 Candy (candy-size EMG sensor) and Arduino Uno."),(0,l.kt)("p",null,"But before moving forward, let's understand a brief about Electromyography."),(0,l.kt)("h2",{id:"what-is-electromyography-emg-1"},"What is Electromyography (EMG)?"),(0,l.kt)("p",null,"Electromyography is a technique that measures muscle response or electrical activity in response to a nerve\u2019s 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."),(0,l.kt)("h3",{id:"about-muscle-bioamp-candy"},"About Muscle BioAmp Candy:"),(0,l.kt)("p",null,"Muscle BioAmp Candy is a candy-size EMG sensor that can record minute electrical signals from the surface of our muscles and amplify them to a level a microcontroller unit (MCU) can understand."),(0,l.kt)("p",null,"The entire BioAmp series of sensors from Upside Down Labs is designed to teach you the basics of the instrumentation amplifier, active bandpass filtering, soldering, programming, neuroscience, HCI, and BCI to name a few concepts."),(0,l.kt)("h2",{id:"supplies-1"},"Supplies"),(0,l.kt)("h3",{id:"hardware-1"},"HARDWARE:"),(0,l.kt)("p",null,"1 x Muscle BioAmp Candy Kit (",(0,l.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-candy/"},"Upside Down Labs Store")," |\n",(0,l.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B09ZDZVCT7?ref=myi_title_dp"},"Amazon Store")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-candy/"},"Tindie Store"),")"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"The Kit includes:",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Muscle BioAmp Candy x 1"),(0,l.kt)("li",{parentName:"ul"},"BioAmp Cable (50cm) x 1"),(0,l.kt)("li",{parentName:"ul"},"Jumper Wires x 3"),(0,l.kt)("li",{parentName:"ul"},"Gel Electrodes x 3"),(0,l.kt)("li",{parentName:"ul"},"Muscle BioAmp Band x 1")))),(0,l.kt)("p",null,"1 x Arduino uno with USB cable (Type A to Type B)"),(0,l.kt)("h3",{id:"skin-preparation-kit--electrode-gel-1"},"SKIN PREPARATION KIT & ELECTRODE GEL:"),(0,l.kt)("p",null,"1 x NuPrep skin preparation gel (",(0,l.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/nuprep-gel/"},"Upside Down Labs Store")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/"},"Tindie Store"),")"),(0,l.kt)("p",null,"1 x Wet wipe"),(0,l.kt)("p",null,"1 x Electrode Gel (",(0,l.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/electrode-gel/"},"Upside Down Labs Store")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/electrode-gel-250ml/"},"Tindie Store"),")"),(0,l.kt)("h3",{id:"software-1"},"SOFTWARE:"),(0,l.kt)("p",null,"Arduino IDE"),(0,l.kt)("h2",{id:"step-1-connecting-electrode-cable"},"Step 1: Connecting Electrode Cable"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(39943).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"Connect the BioAmp Cable to Muscle BioAmp BisCute 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 Muscle BioAmp BisCute."),(0,l.kt)("h2",{id:"step-2-skin-preparation"},"Step 2: Skin Preparation"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(22720).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"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."),(0,l.kt)("h3",{id:"about-nuprep-gel-1"},"About Nuprep Gel:"),(0,l.kt)("p",null,"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."),(0,l.kt)("h2",{id:"step-3-electrode-placements"},"Step 3: Electrode Placements"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(70883).Z,width:"768",height:"432"})),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(45154).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"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."),(0,l.kt)("h3",{id:"measuring-emg-using-gel-electrodes-1"},"Measuring EMG using Gel electrodes:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,l.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,l.kt)("li",{parentName:"ol"},"Place the IN+ and IN- cables on the arm near the ulnar nerve & REF (reference) at the back of your hand as shown in the connection diagram.")),(0,l.kt)("h3",{id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band-1"},"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"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."),(0,l.kt)("li",{parentName:"ol"},"Now put a small drop of electrode gel between the skin and metallic part of BioAmp Cable to get the best results.")),(0,l.kt)("h2",{id:"step-4-connections"},"Step 4: Connections"),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(25216).Z,width:"1920",height:"1080"})),(0,l.kt)("p",null,"Connect Muscle BioAmp Candy to Arduino Uno using the jumper cables as directed below:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"VCC to 5V"),(0,l.kt)("li",{parentName:"ul"},"GND to GND"),(0,l.kt)("li",{parentName:"ul"},"OUT to A0")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Note:")," BE VERY CAREFUL and follow the above diagram while making the connections between your Muscle BioAmp Candy & Arduino Uno, especially the GND and VCC else it may damage the sensor."),(0,l.kt)("h2",{id:"step-5-download-arduino-ide"},"Step 5: Download Arduino IDE"),(0,l.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,l.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,l.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Note:")," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,l.kt)("h2",{id:"step-6-coding-time"},"Step 6: Coding Time!"),(0,l.kt)("p",null,"Copy paste any one of the Arduino Sketches given below in Arduino IDE:"),(0,l.kt)("p",null,"EMG Envelop: ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino")),(0,l.kt)("p",null,"EMG Filter: ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino")),(0,l.kt)("p",null,"After flashing the code, open the serial plotter to visualize the EMG signals."),(0,l.kt)("h2",{id:"step-7-enjoy--flex-your-arm"},"Step 7: Enjoy & Flex Your Arm"),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(59233).Z,width:"1920",height:"1080"})),(0,l.kt)("p",null,"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."),(0,l.kt)("p",null,"You are all set to explore on your own and make amazing HCI projects at the comfort zone of your home."),(0,l.kt)("h2",{id:"step-8-complete-video-guide"},"Step 8: Complete Video Guide"),(0,l.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/lPX2TGBcHOA?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,l.kt)("p",null,"You can also watch this complete video guide of this project."),(0,l.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,l.kt)("p",null,"You can also mail us at ",(0,l.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project.")),(0,l.kt)(M,{value:"Muscle BioAmp Patchy",label:"Muscle BioAmp Patchy",mdxType:"TabItem"},(0,l.kt)("p",null,(0,l.kt)("img",{src:a(3426).Z,width:"1920",height:"1080"}),"\n",(0,l.kt)("img",{src:a(8098).Z,width:"1920",height:"1080"})),(0,l.kt)("p",null,"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."),(0,l.kt)("p",null,"But before moving forward, let's understand a brief about Electromyography."),(0,l.kt)("h2",{id:"what-is-electromyography-emg-2"},"What is Electromyography (EMG)?"),(0,l.kt)("p",null,"Electromyography (EMG) is a technique for evaluating and recording the electrical activity produced by skeletal muscles."),(0,l.kt)("p",null,"Some applications of EMG:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Prosthetic hands, "),(0,l.kt)("li",{parentName:"ol"},"Human augmentation, "),(0,l.kt)("li",{parentName:"ol"},"Games controllers, "),(0,l.kt)("li",{parentName:"ol"},"Rehabilitation and "),(0,l.kt)("li",{parentName:"ol"},"Physical therapy\nEven doctors are using them for the diagnosis of various neuromuscular ailments.")),(0,l.kt)("p",null,"Recently, it was in the news that ",(0,l.kt)("a",{parentName:"p",href:"https://tech.facebook.com/reality-labs/2021/03/inside-facebook-reality-labs-wrist-based-interaction-for-the-next-computing-platform/"},"Meta is working on wearable EMG sensors")," to track user movements in the metaverse."),(0,l.kt)("h3",{id:"about-muscle-bioamp-patchy"},"About Muscle BioAmp Patchy:"),(0,l.kt)("p",null,"Muscle BioAmp Patchy is a small ",(0,l.kt)("strong",{parentName:"p"},"wearable muscle sensor")," for precise EMG sensing. It can be snapped directly to the electrodes, eliminating electrode cables."),(0,l.kt)("h2",{id:"supplies-2"},"Supplies"),(0,l.kt)("h2",{id:"hardware-2"},"HARDWARE"),(0,l.kt)("p",null,"1 x Muscle BioAmp Patchy Kit (",(0,l.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-patchy-v0-2/"},"Upside Down Labs Store")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B0C4P2JB7J?ref=myi_title_dp&th=1"},"Amazon India")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-patchy-wearable-muscle-sensor/"},"Tindie India"),")"),(0,l.kt)("p",null,"The kit will include:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"1 Muscle BioAmp Patchy,"),(0,l.kt)("li",{parentName:"ul"},"1 Reference Cable,"),(0,l.kt)("li",{parentName:"ul"},"3 Jumper Wires,"),(0,l.kt)("li",{parentName:"ul"},"3 Boxy Gel Electrodes")),(0,l.kt)("p",null,"1 x Arduino Uno with USB Cable"),(0,l.kt)("p",null,"1 x Nuprep Skin Preparation Gel (",(0,l.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/nuprep-gel/"},"Upside Down Labs Store")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/"},"Tindie Store"),")"),(0,l.kt)("p",null,"1 x Wet wipe"),(0,l.kt)("h2",{id:"software-2"},"SOFTWARE:"),(0,l.kt)("p",null,"Ardiuno IDE"),(0,l.kt)("h2",{id:"step-1-connecting-reference-cable"},"Step 1: Connecting Reference Cable"),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(48301).Z,width:"1920",height:"722"})),(0,l.kt)("p",null,"Connect the reference cable to the Muscle BioAmp Patchy as shown in the above diagram."),(0,l.kt)("h2",{id:"step-2-connecting-muscle-bioamp-patchy-to-gel-electrodes"},"Step 2: Connecting Muscle BioAmp Patchy to Gel Electrodes"),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(6638).Z,width:"1920",height:"1080"})),(0,l.kt)("p",null,"Connect the Muscle BioAmp Patchy to gel electrodes (Don't peel the plastic from the electrodes at this moment)."),(0,l.kt)("h2",{id:"step-3-skin-preparation-1"},"Step 3: Skin Preparation"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(2477).Z,width:"1152",height:"648"})),(0,l.kt)("p",null,"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."),(0,l.kt)("h3",{id:"about-nuprep-gel-2"},"About Nuprep Gel:"),(0,l.kt)("p",null,"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."),(0,l.kt)("h2",{id:"step-4-electrode-placements-1"},"Step 4: Electrode Placements"),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(12687).Z,width:"1920",height:"1080"})),(0,l.kt)("p",null,"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."),(0,l.kt)("h2",{id:"step-5-connections-1"},"Step 5: Connections"),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(92647).Z,width:"1920",height:"1080"})),(0,l.kt)("p",null,"Connect the Muscle BioAmp Patchy to your Arduino Uno using jumper cables as directed below:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"OUT to A0"),(0,l.kt)("li",{parentName:"ol"},"GND to GND"),(0,l.kt)("li",{parentName:"ol"},"VCC to 5V")),(0,l.kt)("h2",{id:"step-6-download-arduino-ide-1"},"Step 6: Download Arduino IDE"),(0,l.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,l.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,l.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Note:")," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,l.kt)("h2",{id:"step-7-check-all-the-conections"},"Step 7: Check All the Conections"),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(39562).Z,width:"1920",height:"1080"})),(0,l.kt)("p",null,"Now that you have made all the connections and downloaded the Arduino IDE. Once again check everything as shown in the diagram."),(0,l.kt)("h2",{id:"step-8-coding-time"},"Step 8: Coding Time!"),(0,l.kt)("p",null,"Copy paste any one of the Arduino Sketches given below in Arduino IDE:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"EMG Envelop: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGEnvelop/EMGEnvelop.ino")),(0,l.kt)("li",{parentName:"ol"},"EMG Filter: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/EMGFilter/EMGFilter.ino"))),(0,l.kt)("p",null,"After flashing the code, open the serial plotter to visualize the EMG signals."),(0,l.kt)("h2",{id:"step-9-flex-your-muscle"},"Step 9: Flex Your Muscle"),(0,l.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/4dnCX3U7LS8?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,l.kt)("p",null,"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."),(0,l.kt)("p",null,"You are all set to explore on your own and make amazing HCI projects at the comfort zone of your home."),(0,l.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,l.kt)("p",null,"You can also mail us at ",(0,l.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project.")),(0,l.kt)(M,{value:"Muscle BioAmp Shield",label:"Muscle BioAmp Shield",mdxType:"TabItem"},(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(36462).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"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."),(0,l.kt)("p",null,"But before moving forward, let's understand a brief about Electromyography."),(0,l.kt)("h2",{id:"what-is-electromyography-emg-3"},"What is Electromyography (EMG)?"),(0,l.kt)("p",null,"Electromyography is a technique that measures muscle response or electrical activity in response to a nerve\u2019s 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."),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(12966).Z,width:"1366",height:"603"})),(0,l.kt)("h3",{id:"about-muscle-bioamp-shield"},"About Muscle BioAmp Shield:"),(0,l.kt)("p",null,"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."),(0,l.kt)("p",null,"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."),(0,l.kt)("p",null,(0,l.kt)("img",{src:a(38659).Z,width:"1414",height:"2000"})),(0,l.kt)("h2",{id:"supplies-3"},"Supplies"),(0,l.kt)("h3",{id:"hardware-3"},"HARDWARE:"),(0,l.kt)("p",null,"1 x Muscle BioAmp Shield Kit (",(0,l.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-shield-v0-3/"},"Upside Down Labs Store")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B09Z32M3PP?ref_=cm_sw_r_cp_ud_dp_N6R5671596GFW0C3JAF0"},"Amazon India")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-shield-v03-arduino-shield-for-emg/"},"Tindie India"),")"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"The Kit includes:",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Muscle BioAmp Shield PCB x 1"),(0,l.kt)("li",{parentName:"ul"},"Components",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Ceramic capacitors."),(0,l.kt)("li",{parentName:"ul"},"Electrolytic capacitors"),(0,l.kt)("li",{parentName:"ul"},"Resistors"),(0,l.kt)("li",{parentName:"ul"},"LEDs"),(0,l.kt)("li",{parentName:"ul"},"Audio Jack"),(0,l.kt)("li",{parentName:"ul"},"Connectors"),(0,l.kt)("li",{parentName:"ul"},"Tactical Switch"),(0,l.kt)("li",{parentName:"ul"},"Optocoupler"),(0,l.kt)("li",{parentName:"ul"},"Quad OpAmp, etc."))),(0,l.kt)("li",{parentName:"ul"},"BioAmp Cable (100cm) x 1"),(0,l.kt)("li",{parentName:"ul"},"Gel Electrodes x 24"),(0,l.kt)("li",{parentName:"ul"},"Muscle BioAmp Band x 1"),(0,l.kt)("li",{parentName:"ul"},"BioAmp AUX Cable x 1"),(0,l.kt)("li",{parentName:"ul"},"9V Snap Cable x 1"),(0,l.kt)("li",{parentName:"ul"},"STEMMA Cables x 6")))),(0,l.kt)("p",null,"1 x Arduino uno with USB cable (Type A to Type B)"),(0,l.kt)("p",null,"1 x 9V Battery (Optional, only if you want to make the system portable)"),(0,l.kt)("p",null,"Soldering iron and other equipments to solder the components on the PCB"),(0,l.kt)("h3",{id:"skin-preparation-kit--electrode-gel-2"},"SKIN PREPARATION KIT & ELECTRODE GEL:"),(0,l.kt)("p",null,"1 x NuPrep skin preparation gel (",(0,l.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/nuprep-gel/"},"Upside Down Labs Store")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/"},"Tindie India"),")"),(0,l.kt)("p",null,"1 x Wet wipe"),(0,l.kt)("p",null,"1 x Electrode Gel (only if using Muscle BioAmp Band) (",(0,l.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/electrode-gel/"},"Upside Down Labs Store")," | ",(0,l.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/electrode-gel-250ml/"},"Tindie India"),")"),(0,l.kt)("h3",{id:"software-3"},"SOFTWARE:"),(0,l.kt)("p",null,"Arduino IDE"),(0,l.kt)("h2",{id:"step-1-assembly-1"},"Step 1: Assembly"),(0,l.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/eaIDXosPSbs?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,l.kt)("p",null,"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 (",(0,l.kt)("a",{parentName:"p",href:"https://docs.upsidedownlabs.tech/DIY-Muscle-BioAmp-Shield/ibom.html"},"interactive BOM"),")"),(0,l.kt)("h2",{id:"step-2-stacking-on-arduino-uno"},"Step 2: Stacking on Arduino Uno"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(75435).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"Stack the Muscle BioAmp Shield on top of Arduino Uno properly."),(0,l.kt)("h2",{id:"step-3-connecting-electrode-cable"},"Step 3: Connecting Electrode Cable"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(70538).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"Connect the BioAmp Cable to Muscle BioAmp Shield as shown in the connection diagram."),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Note:")," Don't place the electrodes on the skin at this moment."),(0,l.kt)("h2",{id:"step-4-skin-preparation"},"Step 4: Skin Preparation"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(32965).Z,width:"768",height:"432"}),"\nApply 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."),(0,l.kt)("h3",{id:"about-nuprep-gel-3"},"About Nuprep Gel:"),(0,l.kt)("p",null,"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."),(0,l.kt)("h2",{id:"step-5-electrode-placements"},"Step 5: Electrode Placements"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(20076).Z,width:"768",height:"432"}),"\n",(0,l.kt)("img",{alt:"dodge gif",src:a(90030).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"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."),(0,l.kt)("h3",{id:"measuring-emg-using-gel-electrodes-2"},"Measuring EMG using Gel electrodes:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,l.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,l.kt)("li",{parentName:"ol"},"Place the IN+ and IN- cables on the arm near the ulnar nerve & REF (reference) at the back of your hand.")),(0,l.kt)("h3",{id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band-2"},"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"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."),(0,l.kt)("li",{parentName:"ol"},"Now put a small drop of electrode gel between the skin and metallic part of BioAmp Cable to get the best results.")),(0,l.kt)("h2",{id:"step-6-download-arduino-ide-2"},"Step 6: Download Arduino IDE"),(0,l.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,l.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,l.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"Note:")," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,l.kt)("h2",{id:"step-7-coding-time-1"},"Step 7: Coding Time!"),(0,l.kt)("p",null,"Copy paste the Arduino Sketch given below in Arduino IDE:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"LED Bar Graph: ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/LEDBarGraph/LEDBarGraph.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/LEDBarGraph/LEDBarGraph.ino"))),(0,l.kt)("p",null,"After flashing the code, open the serial plotter to visualize the EMG signals."),(0,l.kt)("h2",{id:"step-8-enjoy--flex-your-arm-1"},"Step 8: Enjoy & Flex Your Arm"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(32360).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"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."),(0,l.kt)("p",null,"More strength you apply, more the LED bar goes up."),(0,l.kt)("p",null,"Similarly you can try to record EMG from other parts of your body like biceps, triceps, cheeks, thighs, etc."),(0,l.kt)("h2",{id:"step-9-listen-to-your-muscles"},"Step 9: Listen to Your Muscles"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(16149).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"Here comes the most interesting part of the project which is listening to your muscles."),(0,l.kt)("p",null,"You can either listen it on a speaker or wired earphones/headphones. Let's try both of them."),(0,l.kt)("h3",{id:"listening-on-a-wired-earphonesheadphones"},"Listening on a wired earphones/headphones:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Plug your wired earphones or headphones on the 3.5mm jack of Muscle BioAmp Shield"),(0,l.kt)("li",{parentName:"ol"},"Plug it in your ears"),(0,l.kt)("li",{parentName:"ol"},"Flex and listen to your muscles")),(0,l.kt)("h3",{id:"listening-on-a-speaker-using-bioamp-aux-cable"},"Listening on a speaker using BioAmp AUX Cable:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Plug the BioAmp AUX Cable on Muscle BioAmp Shield"),(0,l.kt)("li",{parentName:"ol"},"Connect the BioAmp AUX cable on the speaker"),(0,l.kt)("li",{parentName:"ol"},"Flex and listen to your muscles.\nIsn't it AMAZING? How did you feel?")),(0,l.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,l.kt)("p",null,"You can also mail us at ",(0,l.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."),(0,l.kt)("h2",{id:"step-10-make-it-portable"},"Step 10: Make It Portable"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"dodge gif",src:a(54097).Z,width:"768",height:"432"})),(0,l.kt)("p",null,"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:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},(0,l.kt)("p",{parentName:"li"},"Using 9V battery: Directly connect a 9V battery to Muscle BioAmp Shield using a 9V snap cable.")),(0,l.kt)("li",{parentName:"ol"},(0,l.kt)("p",{parentName:"li"},"Using Power Bank: Instead of connecting the USB cable of Arduino Uno to laptop, you can directly connect it to power bank."))),(0,l.kt)("h2",{id:"step-11-some-other-projects"},"Step 11: Some Other Projects"),(0,l.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/kgvK51UIXdo?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,l.kt)("p",null,"You can also make various other projects using Muscle BioAmp Shield like:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Controlling a servo claw by muscle signals (EMG): ",(0,l.kt)("a",{parentName:"li",href:"https://www.instructables.com/Controlling-a-Servo-Claw-With-Muscle-Signals-EMG-U/"},"https://www.instructables.com/Controlling-a-Servo-Claw-With-Muscle-Signals-EMG-U/")))),(0,l.kt)(M,{value:"BioAmp Exg Pill",label:"BioAmp EXG Pill",mdxType:"TabItem"})))}x.isMDXComponent=!0},2477:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Skin_Prep-b4d5612273462b52bb1603d108aba7c0.gif"},3426:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/emgimg1-0ee6de2145db2f2bdf0dd51bbac0d39d.jpg"},8098:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/emgimg2-4ff2a4c8bf17caac9535605a305cc9df.jpg"},48301:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/emgimg3-54c2a6705ba0a621ddd1b3c37b422787.jpg"},6638:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/emgimg4-9a22d8e62944934e54d5d7222c1d34d1.jpg"},12687:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/emgimg5-75632a1c1b5d514d0bb7a8509338c4ea.jpg"},92647:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/emgimg6-8d6a16809cefd082130e9f605676e5a7.jpg"},39562:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/emgimg7-3d538460e13eba32ea1f9883e6f86e1f.jpg"},36596:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Connecting Electrode Cable-6a141a10cff7281ae4c698e1da9c1e3b.gif"},29712:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Connections with Arduino Uno-b3dd8e6eee72bcc7ca7ac0aaf7b5016c.jpg"},11568:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Skin Preparation-cf8d399e35186ce01c8576e34794b995.gif"},304:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Thumbnail1-d99aa9767e8815996435b386db7be73b.jpg"},5202:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Thumbnail2-8a06c74fc3eb0ef53d85e27d1e27a0fc.jpg"},46200:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Using EMG Band-def7f5f26a1bf88379bc3881df4a7934.gif"},69412:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Using Gel Electrodes-0c104176787c59335e79ed7bbaf3bab1.gif"},54097:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Connecting 9V battery-0a125a82eee2db88d97d70c19ffb36a5.gif"},70538:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Connecting Electrode Cable-7a205ffb00859df201b1c946b22ec73b.gif"},12966:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/EMGEnvelop-d34ecf470c414769dc0b18b6fb7f0e9d.png"},32360:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/LED Bar Graph-7745bf991b68ded57273e56611984cc7.gif"},16149:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Listening music-8f70d7402f262a307453af2151b02070.gif"},38659:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Muscle BioAmp Shield-4340b76b8874aa773668c6cb3e7e07ca.jpg"},32965:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Skin Preparation-cf8d399e35186ce01c8576e34794b995.gif"},75435:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Stacking on Arduino Uno-99a27d290d02161f66b0c83c2de90e79.gif"},36462:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Thumbnail-ca400f68ef4bd2cf67861fcd2a8cf587.gif"},90030:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Using EMG Band-def7f5f26a1bf88379bc3881df4a7934.gif"},20076:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Using Gel Electrodes-0c104176787c59335e79ed7bbaf3bab1.gif"},39943:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Connecting Electrode Cable-443df7ac74b34f19a92befd17b1cc23c.gif"},25216:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Connections-986e9f269b7810de64883bdaa9489737.jpg"},22720:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Skin Preparation-cf8d399e35186ce01c8576e34794b995.gif"},59233:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Thumbnail1-3b9ce444c404ca1dbbd201a477469faa.jpg"},33157:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Thumbnail2-2c335ee43bbd5a85cdfb33f4a97c5bc2.jpg"},45154:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Using EMG Band-def7f5f26a1bf88379bc3881df4a7934.gif"},70883:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/Using Gel Electrodes-0c104176787c59335e79ed7bbaf3bab1.gif"}}]); \ No newline at end of file diff --git a/assets/js/f31b4887.4f8a64f4.js b/assets/js/f31b4887.efdcf8db.js similarity index 84% rename from assets/js/f31b4887.4f8a64f4.js rename to assets/js/f31b4887.efdcf8db.js index 96992e4d..4ed60caa 100644 --- a/assets/js/f31b4887.4f8a64f4.js +++ b/assets/js/f31b4887.efdcf8db.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4713],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>f});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),c=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=c(a),u=n,f=p["".concat(s,".").concat(u)]||p[u]||m[u]||i;return a?r.createElement(f,o(o({ref:t},d),{},{components:a})):r.createElement(f,o({ref:t},d))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,o[1]=l;for(var c=2;c{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=a(87462),n=(a(67294),a(3905));const i={sidebar_position:4},o="Muscle BioAmp Candy",l={unversionedId:"BioAmp-Hardware/MuscleBioAmpCandy",id:"BioAmp-Hardware/MuscleBioAmpCandy",title:"Muscle BioAmp Candy",description:"Candy-size affordable muscle sensor for precise EMG sensing",source:"@site/docs/BioAmp-Hardware/MuscleBioAmpCandy.md",sourceDirName:"BioAmp-Hardware",slug:"/BioAmp-Hardware/MuscleBioAmpCandy",permalink:"/docs/next/BioAmp-Hardware/MuscleBioAmpCandy",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/BioAmp-Hardware/MuscleBioAmpCandy.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Muscle BioAmp Patchy",permalink:"/docs/next/BioAmp-Hardware/MuscleBioAmpPatchy"},next:{title:"Muscle BioAmp BisCute",permalink:"/docs/next/BioAmp-Hardware/MuscleBioAmpBisCute"}},s={},c=[{value:"Overview",id:"overview",level:2},{value:"Features & Specifications",id:"features--specifications",level:2},{value:"Hardware",id:"hardware",level:2},{value:"Connecting with Arduino",id:"connecting-with-arduino",level:2},{value:"Using the sensor",id:"using-the-sensor",level:2},{value:"Some project ideas",id:"some-project-ideas",level:2}],d={toc:c},p="wrapper";function m(e){let{components:t,...i}=e;return(0,n.kt)(p,(0,r.Z)({},d,i,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"muscle-bioamp-candy"},"Muscle BioAmp Candy"),(0,n.kt)("p",null,"Candy-size affordable muscle sensor for precise EMG sensing"),(0,n.kt)("h2",{id:"overview"},"Overview"),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Muscle BioAmp Candy",src:a(11432).Z,width:"768",height:"576"})," "),(0,n.kt)("h2",{id:"features--specifications"},"Features & Specifications"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"}),(0,n.kt)("th",{parentName:"tr",align:"left"}))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Minimum Input Voltage"),(0,n.kt)("td",{parentName:"tr",align:"left"},"3.3-30 V")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Input Impedance"),(0,n.kt)("td",{parentName:"tr",align:"left"},"10^11 \u03a9")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Fixed Gain"),(0,n.kt)("td",{parentName:"tr",align:"left"},"x2420")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Bandpass filter"),(0,n.kt)("td",{parentName:"tr",align:"left"},"72 \u2013 720 Hz")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Compatible Hardware"),(0,n.kt)("td",{parentName:"tr",align:"left"},"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)")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BioPotentials"),(0,n.kt)("td",{parentName:"tr",align:"left"},"EMG (Electromyography)")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"No. of channels"),(0,n.kt)("td",{parentName:"tr",align:"left"},"1")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Electrodes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"3 (Positive, Negative, and Reference)")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Dimensions"),(0,n.kt)("td",{parentName:"tr",align:"left"},"3.5 x 1.5 cm")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Open Source"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Hardware + Software")))),(0,n.kt)("h2",{id:"hardware"},"Hardware"),(0,n.kt)("p",null,"Images below shows a quick overview of the hardware design."),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"center"},"PCB front"),(0,n.kt)("th",{parentName:"tr",align:"center"},"PCB back"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{alt:"Muscle BioAmp Candy",src:a(80841).Z,width:"1960",height:"840"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{alt:"Muscle BioAmp Candy",src:a(52267).Z,width:"1899",height:"814"}))))),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Muscle BioAmp Candy",src:a(41715).Z,width:"1960",height:"840"}),"\n",(0,n.kt)("img",{alt:"Muscle BioAmp Candy",src:a(14145).Z,width:"4059",height:"1663"}),"\n",(0,n.kt)("img",{alt:"Muscle BioAmp Candy",src:a(84567).Z,width:"1073",height:"491"}),"\n",(0,n.kt)("img",{alt:"Muscle BioAmp Candy",src:a(60166).Z,width:"3507",height:"2480"})),(0,n.kt)("h2",{id:"connecting-with-arduino"},"Connecting with Arduino"),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,"To measure the EMG signals, connect BioAmp Cable v3 with your muscle sensor as shown in the image below:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Muscle BioAmp Candy",src:a(26192).Z,width:"1920",height:"1080"})),(0,n.kt)("p",null,"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."),(0,n.kt)("h2",{id:"using-the-sensor"},"Using the sensor"),(0,n.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/lPX2TGBcHOA",title:"How to use Muscle BioAmp Candy? | Muscle Sensor (EMG) | @Arduino | Upside Down Labs",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,n.kt)("h2",{id:"some-project-ideas"},"Some project ideas"),(0,n.kt)("p",null,"We have curated a playlist for you which consists some awesome project ideas for you to get started with your next HCI project."),(0,n.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/videoseries?list=PLtkEloJ7UnkQIoz1HK4IXWujCB8hKdiKU",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}))}m.isMDXComponent=!0},14145:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle BioAmp Candy_back-82e07e68af9e29ec006dab1ecdb9c597.png"},41715:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle BioAmp Candy_front-22c85c0abaa3e5b0e80d1ee0956cb330.png"},26192:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle-BioAmp-Candy-Arduino-EMG-Recording-010c0cbd295a6c1fc40e51e84e261f03.jpg"},11432:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle-BioAmp-Candy-front-d631b0ba3080831a332e8e2bf1ab238f.jpg"},52267:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/PCBback-da2bd1c8235453de9e7c8b71cd8d00cd.png"},80841:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/PCBfront-f54060efef9723d3b56f713654c7c269.png"},84567:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/dimensions-53d20aeb46b936f26c749c4cbea83aa8.png"},60166:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/schematic-f81272a9916802d5e81a8d1be6fa3e41.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4713],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>f});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),c=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=c(a),u=n,f=p["".concat(s,".").concat(u)]||p[u]||m[u]||i;return a?r.createElement(f,o(o({ref:t},d),{},{components:a})):r.createElement(f,o({ref:t},d))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:n,o[1]=l;for(var c=2;c{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=a(87462),n=(a(67294),a(3905));const i={sidebar_position:4},o="Muscle BioAmp Candy",l={unversionedId:"BioAmp-Hardware/MuscleBioAmpCandy",id:"BioAmp-Hardware/MuscleBioAmpCandy",title:"Muscle BioAmp Candy",description:"Candy-size affordable muscle sensor for precise EMG sensing",source:"@site/docs/BioAmp-Hardware/MuscleBioAmpCandy.md",sourceDirName:"BioAmp-Hardware",slug:"/BioAmp-Hardware/MuscleBioAmpCandy",permalink:"/docs/next/BioAmp-Hardware/MuscleBioAmpCandy",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/docs/BioAmp-Hardware/MuscleBioAmpCandy.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Muscle BioAmp Patchy",permalink:"/docs/next/BioAmp-Hardware/MuscleBioAmpPatchy"},next:{title:"Muscle BioAmp BisCute",permalink:"/docs/next/BioAmp-Hardware/MuscleBioAmpBisCute"}},s={},c=[{value:"Overview",id:"overview",level:2},{value:"Features & Specifications",id:"features--specifications",level:2},{value:"Hardware",id:"hardware",level:2},{value:"Connecting with Arduino",id:"connecting-with-arduino",level:2},{value:"Using the sensor",id:"using-the-sensor",level:2},{value:"Some project ideas",id:"some-project-ideas",level:2}],d={toc:c},p="wrapper";function m(e){let{components:t,...i}=e;return(0,n.kt)(p,(0,r.Z)({},d,i,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"muscle-bioamp-candy"},"Muscle BioAmp Candy"),(0,n.kt)("p",null,"Candy-size affordable muscle sensor for precise EMG sensing"),(0,n.kt)("h2",{id:"overview"},"Overview"),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Muscle BioAmp Candy",src:a(11432).Z,width:"768",height:"576"})," "),(0,n.kt)("h2",{id:"features--specifications"},"Features & Specifications"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"left"}),(0,n.kt)("th",{parentName:"tr",align:"left"}))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Minimum Input Voltage"),(0,n.kt)("td",{parentName:"tr",align:"left"},"3.3-30 V")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Input Impedance"),(0,n.kt)("td",{parentName:"tr",align:"left"},"10^11 \u03a9")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Fixed Gain"),(0,n.kt)("td",{parentName:"tr",align:"left"},"x2420")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Bandpass filter"),(0,n.kt)("td",{parentName:"tr",align:"left"},"72 \u2013 720 Hz")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Compatible Hardware"),(0,n.kt)("td",{parentName:"tr",align:"left"},"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)")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"BioPotentials"),(0,n.kt)("td",{parentName:"tr",align:"left"},"EMG (Electromyography)")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"No. of channels"),(0,n.kt)("td",{parentName:"tr",align:"left"},"1")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Electrodes"),(0,n.kt)("td",{parentName:"tr",align:"left"},"3 (Positive, Negative, and Reference)")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Dimensions"),(0,n.kt)("td",{parentName:"tr",align:"left"},"3.5 x 1.5 cm")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"left"},"Open Source"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Hardware + Software")))),(0,n.kt)("h2",{id:"hardware"},"Hardware"),(0,n.kt)("p",null,"Images below shows a quick overview of the hardware design."),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"center"},"PCB front"),(0,n.kt)("th",{parentName:"tr",align:"center"},"PCB back"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{alt:"Muscle BioAmp Candy",src:a(80841).Z,width:"1960",height:"840"})),(0,n.kt)("td",{parentName:"tr",align:"center"},(0,n.kt)("img",{alt:"Muscle BioAmp Candy",src:a(52267).Z,width:"1899",height:"814"}))))),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Muscle BioAmp Candy",src:a(41715).Z,width:"1960",height:"840"}),"\n",(0,n.kt)("img",{alt:"Muscle BioAmp Candy",src:a(14145).Z,width:"4059",height:"1663"}),"\n",(0,n.kt)("img",{alt:"Muscle BioAmp Candy",src:a(84567).Z,width:"1073",height:"491"}),"\n",(0,n.kt)("img",{alt:"Muscle BioAmp Candy",src:a(60166).Z,width:"3507",height:"2480"})),(0,n.kt)("h2",{id:"connecting-with-arduino"},"Connecting with Arduino"),(0,n.kt)("p",null,"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."),(0,n.kt)("p",null,"To measure the EMG signals, connect BioAmp Cable v3 with your muscle sensor as shown in the image below:"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Muscle BioAmp Candy",src:a(26192).Z,width:"1920",height:"1080"})),(0,n.kt)("p",null,"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."),(0,n.kt)("h2",{id:"using-the-sensor"},"Using the sensor"),(0,n.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/lPX2TGBcHOA",title:"How to use Muscle BioAmp Candy? | Muscle Sensor (EMG) | @Arduino | Upside Down Labs",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,n.kt)("h2",{id:"some-project-ideas"},"Some project ideas"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"We have curated a playlist for you which consists some awesome project ideas for you to get started with your next HCI project."),(0,n.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/videoseries?list=PLtkEloJ7UnkQIoz1HK4IXWujCB8hKdiKU",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0})),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("a",{parentName:"p",href:"/docs/next/Experiments/EMG%20Experiments/BisCute%20Visualize%20EMG/Candy_Visualize%20EMG"},"Measuring Muscle Signals Using Candy Size Muscle Sensor (EMG)")))),(0,n.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/lPX2TGBcHOA?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}))}m.isMDXComponent=!0},14145:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle BioAmp Candy_back-82e07e68af9e29ec006dab1ecdb9c597.png"},41715:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle BioAmp Candy_front-22c85c0abaa3e5b0e80d1ee0956cb330.png"},26192:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle-BioAmp-Candy-Arduino-EMG-Recording-010c0cbd295a6c1fc40e51e84e261f03.jpg"},11432:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/Muscle-BioAmp-Candy-front-d631b0ba3080831a332e8e2bf1ab238f.jpg"},52267:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/PCBback-da2bd1c8235453de9e7c8b71cd8d00cd.png"},80841:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/PCBfront-f54060efef9723d3b56f713654c7c269.png"},84567:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/dimensions-53d20aeb46b936f26c749c4cbea83aa8.png"},60166:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/schematic-f81272a9916802d5e81a8d1be6fa3e41.png"}}]); \ No newline at end of file diff --git a/assets/js/f72e5956.d3e454b2.js b/assets/js/f72e5956.d3e454b2.js new file mode 100644 index 00000000..e6f21131 --- /dev/null +++ b/assets/js/f72e5956.d3e454b2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4207],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),c=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return o.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(n),m=r,h=d["".concat(s,".").concat(m)]||d[m]||u[m]||a;return n?o.createElement(h,i(i({ref:t},p),{},{components:n})):o.createElement(h,i({ref:t},p))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var o=n(87462),r=(n(67294),n(3905));const a={},i=void 0,l={permalink:"/blog/2023/05/10/Soldering",editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/blog/2023-05-10-Soldering.md",source:"@site/blog/2023-05-10-Soldering.md",title:"Soldering",description:"Soldering is one of the most fundamental skills needed to dabble in the world of electronics. The two go together like peas and carrots. And, although it is possible to learn about and build electronics without needing to pick up a soldering iron, you'll soon discover that a whole new world is opened with this one simple skill.",date:"2023-05-10T00:00:00.000Z",formattedDate:"May 10, 2023",tags:[],readingTime:1.375,hasTruncateMarker:!1,authors:[],frontMatter:{},nextItem:{title:"patchy-launch",permalink:"/blog/2023/05/10/patchy-launch"}},s={authorsImageUrls:[]},c=[{value:"Here's how soldering typically works:",id:"heres-how-soldering-typically-works",level:3}],p={toc:c},d="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,o.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Soldering is one of the most fundamental skills needed to dabble in the world of electronics. The two go together like peas and carrots. And, although it is possible to learn about and build electronics without needing to pick up a soldering iron, you'll soon discover that a whole new world is opened with this one simple skill."),(0,r.kt)("p",null,"Soldering is a process used in electronics and metalwork to join two or more pieces of metal together by melting a filler metal, called solder, which has a lower melting point than the pieces being joined. "),(0,r.kt)("h3",{id:"heres-how-soldering-typically-works"},"Here's how soldering typically works:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},"Preparation")),": The surfaces to be joined are cleaned and prepared to ensure a good connection. This often involves removing any oxidation or contaminants from the metal.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},"Heating")),": A soldering iron or soldering gun is used to heat the metal parts to be joined. The soldering tool reaches a temperature high enough to melt the solder but not so high that it damages the components or materials being soldered.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},"Application of Solder")),": When the metal surfaces are hot enough, the solder is applied to the joint. The solder melts and flows into the gap between the metal parts, forming a strong and electrically conductive bond when it cools and solidifies.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("em",{parentName:"strong"},"Cooling")),": As the solder cools and solidifies, it forms a solid connection, effectively joining the pieces of metal together."))),(0,r.kt)("p",null,"Soldering is commonly used in various applications, including assembling electronic circuits, repairing electrical connections, plumbing, jewelry making, and more. It is a fundamental technique in many industries that require precise and reliable metal connections."),(0,r.kt)("p",null,"Checkout the article to know more about Soldering"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://learn.sparkfun.com/tutorials/how-to-solder-through-hole-soldering/all"},"https://learn.sparkfun.com/tutorials/how-to-solder-through-hole-soldering/all")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/fcaffae2.07bb96d5.js b/assets/js/fcaffae2.07bb96d5.js deleted file mode 100644 index 2e965a25..00000000 --- a/assets/js/fcaffae2.07bb96d5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6390],{3905:(e,t,i)=>{i.d(t,{Zo:()=>c,kt:()=>h});var l=i(67294);function o(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,l)}return i}function a(e){for(var t=1;t=0||(o[i]=e[i]);return o}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(o[i]=e[i])}return o}var s=l.createContext({}),p=function(e){var t=l.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):a(a({},t),e)),i},c=function(e){var t=p(e.components);return l.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},m=l.forwardRef((function(e,t){var i=e.components,o=e.mdxType,n=e.originalType,s=e.parentName,c=r(e,["components","mdxType","originalType","parentName"]),u=p(i),m=o,h=u["".concat(s,".").concat(m)]||u[m]||d[m]||n;return i?l.createElement(h,a(a({ref:t},c),{},{components:i})):l.createElement(h,a({ref:t},c))}));function h(e,t){var i=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var n=i.length,a=new Array(n);a[0]=m;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[u]="string"==typeof e?e:o,a[1]=r;for(var p=2;p{i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>d,frontMatter:()=>n,metadata:()=>r,toc:()=>p});var l=i(87462),o=(i(67294),i(3905));const n={},a="Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield",r={unversionedId:"Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield",id:"Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield",title:"Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield",description:"dodge gif",source:"@site/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",sourceDirName:"Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield",slug:"/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/",permalink:"/docs/next/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/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",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Visualizing Muscle Signals (EMG)",permalink:"/docs/next/Experiments/EMG Experiments/BisCute_Visualize EMG/"},next:{title:"Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield",permalink:"/docs/next/Experiments/EMG Experiments/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield/"}},s={},p=[{value:"What is Electromyography (EMG)?",id:"what-is-electromyography-emg",level:2},{value:"About Muscle BioAmp Shield:",id:"about-muscle-bioamp-shield",level:3},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE:",id:"hardware",level:3},{value:"SKIN PREPARATION KIT & ELECTRODE GEL:",id:"skin-preparation-kit--electrode-gel",level:2},{value:"SOFTWARE:",id:"software",level:3},{value:"Step 1: Assembly",id:"step-1-assembly",level:2},{value:"Step 2: Stacking on Arduino Uno",id:"step-2-stacking-on-arduino-uno",level:2},{value:"Step 3: Skin Preparation",id:"step-3-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 4: Connecting Electrode Cable",id:"step-4-connecting-electrode-cable",level:2},{value:"Step 5: Electrode Placements",id:"step-5-electrode-placements",level:2},{value:"Measuring EMG using Gel electrodes:",id:"measuring-emg-using-gel-electrodes",level:3},{value:"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:",id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band",level:3},{value:"Step 6: Connect Servo Claw",id:"step-6-connect-servo-claw",level:2},{value:"Step 7: Download Arduino IDE",id:"step-7-download-arduino-ide",level:2},{value:"Step 8: Coding Time!",id:"step-8-coding-time",level:2},{value:"Step 9: Control Servo Claw by Flexing Your Muscles",id:"step-9-control-servo-claw-by-flexing-your-muscles",level:2},{value:"Step 10: Some Other Projects",id:"step-10-some-other-projects",level:2}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,l.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"controlling-servo-claw-with-muscle-signals-using-muscle-bioamp-shield"},"Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(56027).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("p",null,"But before moving forward, let's understand a brief about Electromyography."),(0,o.kt)("h2",{id:"what-is-electromyography-emg"},"What is Electromyography (EMG)?"),(0,o.kt)("p",null,"Electromyography is a technique that measures muscle response or electrical activity in response to a nerve\u2019s 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."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(62840).Z,width:"1366",height:"603"})),(0,o.kt)("h3",{id:"about-muscle-bioamp-shield"},"About Muscle BioAmp Shield:"),(0,o.kt)("p",null,"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."),(0,o.kt)("p",null,"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."),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(35226).Z,width:"1414",height:"2000"})),(0,o.kt)("h2",{id:"supplies"},"Supplies"),(0,o.kt)("h3",{id:"hardware"},"HARDWARE:"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"1 x Muscle BioAmp Shield Kit")," (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-shield-v0-3/"},"Upside Down Labs Store")," |\n",(0,o.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B09Z32M3PP?ref_=cm_sw_r_cp_ud_dp_N6R5671596GFW0C3JAF0"},"Amazon Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-shield-v03-arduino-shield-for-emg/"},"Tindie Store"),")"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"The Kit includes:",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Muscle BioAmp Shield PCB x 1"),(0,o.kt)("li",{parentName:"ul"},"Components",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Ceramic capacitors."),(0,o.kt)("li",{parentName:"ul"},"Electrolytic capacitors"),(0,o.kt)("li",{parentName:"ul"},"Resistors"),(0,o.kt)("li",{parentName:"ul"},"LEDs"),(0,o.kt)("li",{parentName:"ul"},"Audio Jack"),(0,o.kt)("li",{parentName:"ul"},"Connectors"),(0,o.kt)("li",{parentName:"ul"},"Tactical Switch"),(0,o.kt)("li",{parentName:"ul"},"Optocoupler"),(0,o.kt)("li",{parentName:"ul"},"Quad OpAmp, etc."))),(0,o.kt)("li",{parentName:"ul"},"BioAmp Cable (100cm) x 1"),(0,o.kt)("li",{parentName:"ul"},"Gel Electrodes x 24"),(0,o.kt)("li",{parentName:"ul"},"Muscle BioAmp Band x 1"),(0,o.kt)("li",{parentName:"ul"},"BioAmp AUX Cable x 1"),(0,o.kt)("li",{parentName:"ul"},"9V Snap Cable x 1"),(0,o.kt)("li",{parentName:"ul"},"STEMMA Cables x 6")))),(0,o.kt)("p",null,"1 x Arduino uno with USB cable (Type A to Type B)"),(0,o.kt)("p",null,"Soldering iron and other equipments to solder the components on the PCB"),(0,o.kt)("h2",{id:"skin-preparation-kit--electrode-gel"},"SKIN PREPARATION KIT & ELECTRODE GEL:"),(0,o.kt)("p",null,"1 x NuPrep skin preparation gel (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/nuprep-gel/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/"},"Tindie Store"),")"),(0,o.kt)("p",null,"1 x Wet wipe\n(",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/electrode-gel/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/electrode-gel-250ml/"},"Tindie Store"),")"),(0,o.kt)("h3",{id:"software"},"SOFTWARE:"),(0,o.kt)("p",null,"Arduino IDE"),(0,o.kt)("h2",{id:"step-1-assembly"},"Step 1: Assembly"),(0,o.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/eaIDXosPSbs?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,o.kt)("p",null,"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 ",(0,o.kt)("a",{parentName:"p",href:"https://docs.upsidedownlabs.tech/DIY-Muscle-BioAmp-Shield/ibom.html"},"interactive BOM"),"."),(0,o.kt)("h2",{id:"step-2-stacking-on-arduino-uno"},"Step 2: Stacking on Arduino Uno"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(72894).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"Stack the Muscle BioAmp Shield on top of Arduino Uno properly."),(0,o.kt)("h2",{id:"step-3-skin-preparation"},"Step 3: Skin Preparation"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(22257).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-4-connecting-electrode-cable"},"Step 4: Connecting Electrode Cable"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(25686).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"Connect the BioAmp Cable to Muscle BioAmp Shield as shown in the connection diagram."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Note:")," Don't place the electrodes on the skin at this moment."),(0,o.kt)("h2",{id:"step-5-electrode-placements"},"Step 5: Electrode Placements"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(30199).Z,width:"768",height:"432"})),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(477).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h3",{id:"measuring-emg-using-gel-electrodes"},"Measuring EMG using Gel electrodes:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,o.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,o.kt)("li",{parentName:"ol"},"Place the IN+ and IN- cables on the arm near the ulnar nerve & REF (reference) at the back of your hand.")),(0,o.kt)("h3",{id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band"},"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"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."),(0,o.kt)("li",{parentName:"ol"},"Now put a small drop of electrode gel between the skin and metallic part of BioAmp Cable to get the best results.")),(0,o.kt)("h2",{id:"step-6-connect-servo-claw"},"Step 6: Connect Servo Claw"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(39234).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"Connect the servo claw to Muscle BioAmp Shield as shown in the video above."),(0,o.kt)("h2",{id:"step-7-download-arduino-ide"},"Step 7: Download Arduino IDE"),(0,o.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,o.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,o.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Note:")," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,o.kt)("h2",{id:"step-8-coding-time"},"Step 8: Coding Time!"),(0,o.kt)("p",null,"Copy paste the Arduino Sketch given below in Arduino IDE:"),(0,o.kt)("p",null,"Claw Controller: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/ClawController/ClawController.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/ClawController/ClawController.ino")),(0,o.kt)("h2",{id:"step-9-control-servo-claw-by-flexing-your-muscles"},"Step 9: Control Servo Claw by Flexing Your Muscles"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(69942).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"Now flex your arm to control the servo claw in real time."),(0,o.kt)("p",null,"This is the same mechanism/working of how EMG controlled prosthetics work."),(0,o.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,o.kt)("p",null,"You can also mail us at ",(0,o.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."),(0,o.kt)("h2",{id:"step-10-some-other-projects"},"Step 10: Some Other Projects"),(0,o.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/kgvK51UIXdo?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,o.kt)("p",null,"You can also make various other projects using Muscle BioAmp Shield like:"),(0,o.kt)("p",null,"Recording, visualizing and listenting to muscle signals (EMG): ",(0,o.kt)("a",{parentName:"p",href:"https://www.instructables.com/Record-Visualize-Listen-to-Muscle-Signals-Using-Mu/"},"https://www.instructables.com/Record-Visualize-Listen-to-Muscle-Signals-Using-Mu/")))}d.isMDXComponent=!0},25686:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/Connecting Electrode Cable-7a205ffb00859df201b1c946b22ec73b.gif"},39234:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/Connecting Servo Claw-3798243e402dec5c2f8573cb786c9ff1.gif"},62840:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/EMGEnvelop-d34ecf470c414769dc0b18b6fb7f0e9d.png"},35226:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/Muscle BioAmp Shield Infographic-4340b76b8874aa773668c6cb3e7e07ca.jpg"},22257:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/Skin Preparation-cf8d399e35186ce01c8576e34794b995.gif"},72894:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/Stacking on Arduino Uno-99a27d290d02161f66b0c83c2de90e79.gif"},56027:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/Thumbnail-2b5860d44d38362364db1a3f572e9acd.gif"},477:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/Using EMG Band-def7f5f26a1bf88379bc3881df4a7934.gif"},30199:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/Using Gel Electrodes-0c104176787c59335e79ed7bbaf3bab1.gif"},69942:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/control servo claw-c745260245bac0ede519879694293955.gif"}}]); \ No newline at end of file diff --git a/assets/js/fcaffae2.26c43953.js b/assets/js/fcaffae2.26c43953.js new file mode 100644 index 00000000..31d73852 --- /dev/null +++ b/assets/js/fcaffae2.26c43953.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6390],{3905:(e,t,i)=>{i.d(t,{Zo:()=>c,kt:()=>h});var l=i(67294);function o(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,l)}return i}function a(e){for(var t=1;t=0||(o[i]=e[i]);return o}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(o[i]=e[i])}return o}var s=l.createContext({}),p=function(e){var t=l.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):a(a({},t),e)),i},c=function(e){var t=p(e.components);return l.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},m=l.forwardRef((function(e,t){var i=e.components,o=e.mdxType,n=e.originalType,s=e.parentName,c=r(e,["components","mdxType","originalType","parentName"]),u=p(i),m=o,h=u["".concat(s,".").concat(m)]||u[m]||d[m]||n;return i?l.createElement(h,a(a({ref:t},c),{},{components:i})):l.createElement(h,a({ref:t},c))}));function h(e,t){var i=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var n=i.length,a=new Array(n);a[0]=m;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[u]="string"==typeof e?e:o,a[1]=r;for(var p=2;p{i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>d,frontMatter:()=>n,metadata:()=>r,toc:()=>p});var l=i(87462),o=(i(67294),i(3905));const n={},a="Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield",r={unversionedId:"Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield",id:"Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield",title:"Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield",description:"dodge gif",source:"@site/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",sourceDirName:"Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield",slug:"/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/",permalink:"/docs/next/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/",draft:!1,editUrl:"https://github.com/upsidedownlabs/upsidedownlabs.github.io/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",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield",permalink:"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield"},next:{title:"Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno",permalink:"/docs/next/Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno/"}},s={},p=[{value:"What is Electromyography (EMG)?",id:"what-is-electromyography-emg",level:2},{value:"About Muscle BioAmp Shield:",id:"about-muscle-bioamp-shield",level:3},{value:"Supplies",id:"supplies",level:2},{value:"HARDWARE:",id:"hardware",level:3},{value:"SKIN PREPARATION KIT & ELECTRODE GEL:",id:"skin-preparation-kit--electrode-gel",level:2},{value:"SOFTWARE:",id:"software",level:3},{value:"Step 1: Assembly",id:"step-1-assembly",level:2},{value:"Step 2: Stacking on Arduino Uno",id:"step-2-stacking-on-arduino-uno",level:2},{value:"Step 3: Skin Preparation",id:"step-3-skin-preparation",level:2},{value:"About Nuprep Gel:",id:"about-nuprep-gel",level:3},{value:"Step 4: Connecting Electrode Cable",id:"step-4-connecting-electrode-cable",level:2},{value:"Step 5: Electrode Placements",id:"step-5-electrode-placements",level:2},{value:"Measuring EMG using Gel electrodes:",id:"measuring-emg-using-gel-electrodes",level:3},{value:"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:",id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band",level:3},{value:"Step 6: Connect Servo Claw",id:"step-6-connect-servo-claw",level:2},{value:"Step 7: Download Arduino IDE",id:"step-7-download-arduino-ide",level:2},{value:"Step 8: Coding Time!",id:"step-8-coding-time",level:2},{value:"Step 9: Control Servo Claw by Flexing Your Muscles",id:"step-9-control-servo-claw-by-flexing-your-muscles",level:2},{value:"Step 10: Some Other Projects",id:"step-10-some-other-projects",level:2}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,l.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"controlling-servo-claw-with-muscle-signals-using-muscle-bioamp-shield"},"Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(56027).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("p",null,"But before moving forward, let's understand a brief about Electromyography."),(0,o.kt)("h2",{id:"what-is-electromyography-emg"},"What is Electromyography (EMG)?"),(0,o.kt)("p",null,"Electromyography is a technique that measures muscle response or electrical activity in response to a nerve\u2019s 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."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(62840).Z,width:"1366",height:"603"})),(0,o.kt)("h3",{id:"about-muscle-bioamp-shield"},"About Muscle BioAmp Shield:"),(0,o.kt)("p",null,"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."),(0,o.kt)("p",null,"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."),(0,o.kt)("p",null,(0,o.kt)("img",{src:i(35226).Z,width:"1414",height:"2000"})),(0,o.kt)("h2",{id:"supplies"},"Supplies"),(0,o.kt)("h3",{id:"hardware"},"HARDWARE:"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"1 x Muscle BioAmp Shield Kit")," (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/muscle-bioamp-shield-v0-3/"},"Upside Down Labs Store")," |\n",(0,o.kt)("a",{parentName:"p",href:"https://www.amazon.in/dp/B09Z32M3PP?ref_=cm_sw_r_cp_ud_dp_N6R5671596GFW0C3JAF0"},"Amazon Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/muscle-bioamp-shield-v03-arduino-shield-for-emg/"},"Tindie Store"),")"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"The Kit includes:",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Muscle BioAmp Shield PCB x 1"),(0,o.kt)("li",{parentName:"ul"},"Components",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Ceramic capacitors."),(0,o.kt)("li",{parentName:"ul"},"Electrolytic capacitors"),(0,o.kt)("li",{parentName:"ul"},"Resistors"),(0,o.kt)("li",{parentName:"ul"},"LEDs"),(0,o.kt)("li",{parentName:"ul"},"Audio Jack"),(0,o.kt)("li",{parentName:"ul"},"Connectors"),(0,o.kt)("li",{parentName:"ul"},"Tactical Switch"),(0,o.kt)("li",{parentName:"ul"},"Optocoupler"),(0,o.kt)("li",{parentName:"ul"},"Quad OpAmp, etc."))),(0,o.kt)("li",{parentName:"ul"},"BioAmp Cable (100cm) x 1"),(0,o.kt)("li",{parentName:"ul"},"Gel Electrodes x 24"),(0,o.kt)("li",{parentName:"ul"},"Muscle BioAmp Band x 1"),(0,o.kt)("li",{parentName:"ul"},"BioAmp AUX Cable x 1"),(0,o.kt)("li",{parentName:"ul"},"9V Snap Cable x 1"),(0,o.kt)("li",{parentName:"ul"},"STEMMA Cables x 6")))),(0,o.kt)("p",null,"1 x Arduino uno with USB cable (Type A to Type B)"),(0,o.kt)("p",null,"Soldering iron and other equipments to solder the components on the PCB"),(0,o.kt)("h2",{id:"skin-preparation-kit--electrode-gel"},"SKIN PREPARATION KIT & ELECTRODE GEL:"),(0,o.kt)("p",null,"1 x NuPrep skin preparation gel (",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/nuprep-gel/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/nuprep-skin-preparation-gel/"},"Tindie Store"),")"),(0,o.kt)("p",null,"1 x Wet wipe\n(",(0,o.kt)("a",{parentName:"p",href:"https://store.upsidedownlabs.tech/product/electrode-gel/"},"Upside Down Labs Store")," | ",(0,o.kt)("a",{parentName:"p",href:"https://www.tindie.com/products/upsidedownlabs/electrode-gel-250ml/"},"Tindie Store"),")"),(0,o.kt)("h3",{id:"software"},"SOFTWARE:"),(0,o.kt)("p",null,"Arduino IDE"),(0,o.kt)("h2",{id:"step-1-assembly"},"Step 1: Assembly"),(0,o.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/eaIDXosPSbs?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,o.kt)("p",null,"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 ",(0,o.kt)("a",{parentName:"p",href:"https://docs.upsidedownlabs.tech/DIY-Muscle-BioAmp-Shield/ibom.html"},"interactive BOM"),"."),(0,o.kt)("h2",{id:"step-2-stacking-on-arduino-uno"},"Step 2: Stacking on Arduino Uno"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(72894).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"Stack the Muscle BioAmp Shield on top of Arduino Uno properly."),(0,o.kt)("h2",{id:"step-3-skin-preparation"},"Step 3: Skin Preparation"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(22257).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h3",{id:"about-nuprep-gel"},"About Nuprep Gel:"),(0,o.kt)("p",null,"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."),(0,o.kt)("h2",{id:"step-4-connecting-electrode-cable"},"Step 4: Connecting Electrode Cable"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(25686).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"Connect the BioAmp Cable to Muscle BioAmp Shield as shown in the connection diagram."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Note:")," Don't place the electrodes on the skin at this moment."),(0,o.kt)("h2",{id:"step-5-electrode-placements"},"Step 5: Electrode Placements"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(30199).Z,width:"768",height:"432"})),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(477).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"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."),(0,o.kt)("h3",{id:"measuring-emg-using-gel-electrodes"},"Measuring EMG using Gel electrodes:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Connect the BioAmp Cable to gel electrodes,"),(0,o.kt)("li",{parentName:"ol"},"Peel the plastic backing from electrodes"),(0,o.kt)("li",{parentName:"ol"},"Place the IN+ and IN- cables on the arm near the ulnar nerve & REF (reference) at the back of your hand.")),(0,o.kt)("h3",{id:"measuring-emg-using-muscle-bioamp-band-a-dry-electrode-based-emg-band"},"Measuring EMG using Muscle BioAmp Band, a dry electrode based EMG band:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"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."),(0,o.kt)("li",{parentName:"ol"},"Now put a small drop of electrode gel between the skin and metallic part of BioAmp Cable to get the best results.")),(0,o.kt)("h2",{id:"step-6-connect-servo-claw"},"Step 6: Connect Servo Claw"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(39234).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"Connect the servo claw to Muscle BioAmp Shield as shown in the video above."),(0,o.kt)("h2",{id:"step-7-download-arduino-ide"},"Step 7: Download Arduino IDE"),(0,o.kt)("p",null,"Download the Arduino IDE from the link given below:"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://www.arduino.cc/en/software"},"https://www.arduino.cc/en/software")),(0,o.kt)("p",null,"(We have used Arduino IDE version 1.8.19 for this project)"),(0,o.kt)("p",null,"After downloading, connect the Arduino Uno to your laptop using the USB Cable (Type A to Type B)"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Note:")," Make sure your laptop is not connected to a charger and sit 5m away from any AC appliances for best signal acquisition."),(0,o.kt)("h2",{id:"step-8-coding-time"},"Step 8: Coding Time!"),(0,o.kt)("p",null,"Copy paste the Arduino Sketch given below in Arduino IDE:"),(0,o.kt)("p",null,"Claw Controller: ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/ClawController/ClawController.ino"},"https://github.com/upsidedownlabs/BioAmp-EXG-Pill/blob/main/software/ClawController/ClawController.ino")),(0,o.kt)("h2",{id:"step-9-control-servo-claw-by-flexing-your-muscles"},"Step 9: Control Servo Claw by Flexing Your Muscles"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"dodge gif",src:i(69942).Z,width:"768",height:"432"})),(0,o.kt)("p",null,"Now flex your arm to control the servo claw in real time."),(0,o.kt)("p",null,"This is the same mechanism/working of how EMG controlled prosthetics work."),(0,o.kt)("p",null,"Let us know your feedback in the comments and feel free to ask any questions."),(0,o.kt)("p",null,"You can also mail us at ",(0,o.kt)("a",{parentName:"p",href:"mailto:support@upsidedownlabs.tech"},"support@upsidedownlabs.tech")," for any kind of support while you are making this project."),(0,o.kt)("h2",{id:"step-10-some-other-projects"},"Step 10: Some Other Projects"),(0,o.kt)("iframe",{width:"100%",height:"444",src:"https://www.youtube.com/embed/kgvK51UIXdo?feature=oembed&autoplay=0",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}),(0,o.kt)("p",null,"You can also make various other projects using Muscle BioAmp Shield like:"),(0,o.kt)("p",null,"Recording, visualizing and listenting to muscle signals (EMG): ",(0,o.kt)("a",{parentName:"p",href:"https://www.instructables.com/Record-Visualize-Listen-to-Muscle-Signals-Using-Mu/"},"https://www.instructables.com/Record-Visualize-Listen-to-Muscle-Signals-Using-Mu/")))}d.isMDXComponent=!0},25686:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/Connecting Electrode Cable-7a205ffb00859df201b1c946b22ec73b.gif"},39234:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/Connecting Servo Claw-3798243e402dec5c2f8573cb786c9ff1.gif"},62840:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/EMGEnvelop-d34ecf470c414769dc0b18b6fb7f0e9d.png"},35226:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/Muscle BioAmp Shield Infographic-4340b76b8874aa773668c6cb3e7e07ca.jpg"},22257:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/Skin Preparation-cf8d399e35186ce01c8576e34794b995.gif"},72894:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/Stacking on Arduino Uno-99a27d290d02161f66b0c83c2de90e79.gif"},56027:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/Thumbnail-2b5860d44d38362364db1a3f572e9acd.gif"},477:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/Using EMG Band-def7f5f26a1bf88379bc3881df4a7934.gif"},30199:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/Using Gel Electrodes-0c104176787c59335e79ed7bbaf3bab1.gif"},69942:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/control servo claw-c745260245bac0ede519879694293955.gif"}}]); \ No newline at end of file diff --git a/assets/js/main.2a5db870.js b/assets/js/main.2a5db870.js new file mode 100644 index 00000000..75ede18e --- /dev/null +++ b/assets/js/main.2a5db870.js @@ -0,0 +1,2 @@ +/*! For license information please see main.2a5db870.js.LICENSE.txt */ +(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(67294),a=n(87462),o=n(68356),i=n.n(o),l=n(16887);const s={"00397b50":[()=>n.e(6761).then(n.bind(n,25617)),"@site/versioned_docs/version-1.1.1/intro.md",25617],"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,91223)),"@theme/BlogTagsListPage",91223],"031793e1":[()=>n.e(1633).then(n.t.bind(n,62511,19)),"~blog/default/blog-tags-facebook-038.json",62511],"04ee2260":[()=>n.e(5984).then(n.bind(n,81246)),"@site/versioned_docs/version-1.1.0/BioAmp-Hardware/MuscleBioAmpPatchy.md",81246],"065b38a5":[()=>n.e(3793).then(n.t.bind(n,16794,19)),"~docs/default/category-docsnext-tutorialsidebar-category-bioamp-software-701.json",16794],"07da67c4":[()=>n.e(9741).then(n.bind(n,90356)),"@site/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/3_HeartRateDetection/3_HeartRateDetection.md",90356],"0904a743":[()=>n.e(942).then(n.bind(n,72567)),"@site/versioned_docs/version-1.1.0/Experiments/EOGExperiments.md",72567],"096bfee4":[()=>n.e(7178).then(n.t.bind(n,85010,19)),"~blog/default/blog-tags-facebook-038-list.json",85010],"0bf87510":[()=>n.e(8889).then(n.bind(n,54198)),"@site/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/3_DrowsinessDetection/3_DrowsinessDetection.md",54198],"0e384e19":[()=>n.e(9671).then(n.bind(n,59881)),"@site/docs/intro.md",59881],"0e91f78a":[()=>n.e(4264).then(n.t.bind(n,61142,19)),"~docs/default/category-docs-110-tutorialsidebar-category-experiments-57f.json",61142],"12fb27c4":[()=>n.e(8901).then(n.bind(n,46546)),"@site/versioned_docs/version-1.1.0/tutorial-basics/markdown-features.mdx",46546],"1341cb08":[()=>n.e(1500).then(n.bind(n,31923)),"@site/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/6_LEDBarGraph/6_LEDBarGraph.md",31923],"13c42b0f":[()=>n.e(9690).then(n.bind(n,91289)),"@site/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/4_ClawController/4_ClawController.md",91289],"14eb3368":[()=>Promise.all([n.e(532),n.e(9817)]).then(n.bind(n,34228)),"@theme/DocCategoryGeneratedIndexPage",34228],17896441:[()=>Promise.all([n.e(532),n.e(1506),n.e(7918)]).then(n.bind(n,15154)),"@theme/DocItem",15154],"18c41134":[()=>n.e(2859).then(n.bind(n,43494)),"@site/docs/tutorial-basics/markdown-features.mdx",43494],"19f33708":[()=>n.e(7624).then(n.bind(n,37237)),"@site/versioned_docs/version-1.1.0/tutorial-extras/manage-docs-versions.md",37237],"1a866a7d":[()=>n.e(241).then(n.bind(n,63725)),"@site/versioned_docs/version-1.1.0/tutorial-basics/congratulations.md",63725],"1adb6239":[()=>n.e(8138).then(n.bind(n,74199)),"@site/docs/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection.md",74199],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,19963)),"@theme/DocPage",19963],"1cbbcd94":[()=>n.e(3477).then(n.bind(n,87010)),"@site/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/2_EOGFilter/2_EOGFilter.md",87010],"1df93b7f":[()=>Promise.all([n.e(532),n.e(3237)]).then(n.bind(n,78391)),"@site/src/pages/index.tsx",78391],"1e4232ab":[()=>n.e(8818).then(n.bind(n,6193)),"@site/docs/tutorial-basics/create-a-document.md",6193],"1f391b9e":[()=>Promise.all([n.e(532),n.e(1506),n.e(3085)]).then(n.bind(n,14247)),"@theme/MDXPage",14247],"278e11ab":[()=>n.e(4028).then(n.bind(n,35885)),"@site/docs/Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill.md",35885],"280ec97f":[()=>n.e(7455).then(n.bind(n,71210)),"@site/versioned_docs/version-1.1.0/BioAmp-Software/intro.md",71210],"2c8522e6":[()=>n.e(7499).then(n.t.bind(n,50712,19)),"~docs/default/category-docs-tutorialsidebar-category-experiments-7d0.json",50712],"2e5d13ec":[()=>n.e(1137).then(n.bind(n,85534)),"@site/versioned_docs/version-1.1.1/Experiments/EOGExperiments.md",85534],"2f60ed54":[()=>n.e(7304).then(n.bind(n,15905)),"@site/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",15905],"30a24c52":[()=>n.e(453).then(n.t.bind(n,98605,19)),"~blog/default/blog-tags-hello-039.json",98605],"38088dac":[()=>n.e(4978).then(n.bind(n,10568)),"@site/versioned_docs/version-1.1.0/BioAmp-Hardware/MuscleBioAmpCandy.md",10568],"393be207":[()=>n.e(7414).then(n.bind(n,53123)),"@site/src/pages/markdown-page.md",53123],"3d784fcf":[()=>n.e(8527).then(n.bind(n,71541)),"@site/docs/BioAmp-Software/intro.md",71541],"3e416112":[()=>n.e(2545).then(n.t.bind(n,62433,19)),"~docs/default/category-docs-110-tutorialsidebar-category-tutorial-extras-1be.json",62433],"3efdd3b5":[()=>n.e(2896).then(n.bind(n,74344)),"@site/versioned_docs/version-1.1.0/Experiments/ECGExperiments.md",74344],"44241aa1":[()=>n.e(4241).then(n.t.bind(n,11870,19)),"~docs/default/category-docsnext-tutorialsidebar-category-tutorial-basics-252.json",11870],"4577df0b":[()=>n.e(7349).then(n.bind(n,29980)),"@site/src/pages/Contributors.md",29980],"4595e690":[()=>n.e(9944).then(n.bind(n,31573)),"@site/docs/Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment.md",31573],"4c9e35b1":[()=>n.e(9035).then(n.t.bind(n,50499,19)),"~blog/default/blog-tags-hola-ea2-list.json",50499],"4de42213":[()=>n.e(4038).then(n.bind(n,66264)),"@site/docs/BioAmp-Hardware/MuscleBioAmpBisCute.md",66264],"4e3ac086":[()=>n.e(9350).then(n.bind(n,37455)),"@site/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/1_FixedSampling/1_FixedSampling.md",37455],"50a1c39b":[()=>n.e(8514).then(n.bind(n,49213)),"@site/versioned_docs/version-1.1.0/intro.md",49213],"52c7ba77":[()=>n.e(612).then(n.bind(n,58695)),"@site/versioned_docs/version-1.1.0/Experiments/EEGExperiments.md",58695],"53294ef6":[()=>n.e(8392).then(n.bind(n,35205)),"@site/blog/2023-05-10-patchy-launch/index.md?truncated=true",35205],"533a09ca":[()=>n.e(4607).then(n.bind(n,95802)),"@site/docs/tutorial-basics/create-a-blog-post.md",95802],"54eb2a45":[()=>n.e(1095).then(n.bind(n,9255)),"@site/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/2_EMGFilter/2_EMGFilter.md",9255],"57bf4c5f":[()=>n.e(9714).then(n.bind(n,44186)),"@site/versioned_docs/version-1.1.1/tutorial-extras/translate-your-site.md",44186],59362658:[()=>n.e(2267).then(n.bind(n,88642)),"@site/blog/2021-08-01-mdx-blog-post.mdx",88642],"5c868d36":[()=>n.e(5589).then(n.bind(n,90187)),"@site/docs/tutorial-basics/create-a-page.md",90187],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,36809)),"@generated/docusaurus.config",36809],"5fdef1fc":[()=>n.e(9989).then(n.bind(n,69468)),"@site/docs/Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments.md",69468],"608ae6a4":[()=>n.e(6938).then(n.t.bind(n,84545,19)),"~blog/default/blog-tags-docusaurus-0e0-list.json",84545],"60f2ebb8":[()=>n.e(4823).then(n.bind(n,81830)),"@site/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/2_ECGFilter/2_ECGFilter.md",81830],"61b63987":[()=>n.e(4889).then(n.bind(n,89921)),"@site/versioned_docs/version-1.1.0/tutorial-basics/create-a-page.md",89921],"620b65bb":[()=>n.e(124).then(n.bind(n,61549)),"@site/versioned_docs/version-1.1.0/tutorial-basics/create-a-blog-post.md",61549],66406991:[()=>n.e(110).then(n.t.bind(n,70711,19)),"~blog/default/blog-tags-hello-039-list.json",70711],"6875c492":[()=>Promise.all([n.e(532),n.e(1506),n.e(2529),n.e(8610)]).then(n.bind(n,41714)),"@theme/BlogTagsPostsPage",41714],"68ec6bdb":[()=>n.e(3076).then(n.bind(n,10028)),"@site/versioned_docs/version-1.1.1/tutorial-basics/create-a-document.md",10028],"6a2e0576":[()=>n.e(2989).then(n.t.bind(n,80421,19)),"~docs/default/version-1-1-1-metadata-prop-b60.json",80421],"6b00e7e9":[()=>n.e(5479).then(n.bind(n,12631)),"@site/docs/Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill/Detecting Heart Beats Using BioAmp EXG Pill.md",12631],"6bc85dd6":[()=>n.e(2196).then(n.bind(n,76029)),"@site/versioned_docs/version-1.1.0/BioAmp-Hardware/DIYMuscleBioAmpShield.md",76029],"6c6a0970":[()=>n.e(4710).then(n.bind(n,65494)),"@site/versioned_docs/version-1.1.1/tutorial-basics/create-a-blog-post.md",65494],"6dec27fc":[()=>n.e(6431).then(n.bind(n,41545)),"@site/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/4_EOGPhotoCaptureBLE/4_EOGPhotoCaptureBLE.md",41545],"6f7196d7":[()=>n.e(5308).then(n.bind(n,93342)),"@site/docs/Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill.md",93342],"73664a40":[()=>n.e(3514).then(n.bind(n,1976)),"@site/blog/2019-05-29-long-blog-post.md",1976],"762116ea":[()=>n.e(7765).then(n.bind(n,78397)),"@site/blog/2023-05-10-patchy-launch/index.md",78397],"7661071f":[()=>n.e(9642).then(n.bind(n,36911)),"@site/blog/2021-08-26-welcome/index.md?truncated=true",36911],"78a01f9b":[()=>n.e(9510).then(n.bind(n,48559)),"@site/versioned_docs/version-1.1.0/BioAmp-Hardware/MuscleBioAmpBisCute.md",48559],"78f7c126":[()=>n.e(4119).then(n.bind(n,19722)),"@site/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/3_EMGEnvelope/3_EMGEnvelope.md",19722],"7ab30032":[()=>n.e(7284).then(n.t.bind(n,23981,19)),"~docs/default/category-docsnext-tutorialsidebar-category-bioamp-hardware-0ed.json",23981],"7f95363e":[()=>n.e(151).then(n.bind(n,65073)),"@site/versioned_docs/version-1.1.1/tutorial-basics/congratulations.md",65073],"814f3328":[()=>n.e(2535).then(n.t.bind(n,45641,19)),"~blog/default/blog-post-list-prop-default.json",45641],"822bd8ab":[()=>n.e(6504).then(n.bind(n,27428)),"@site/docs/tutorial-basics/congratulations.md",27428],"85dec7f4":[()=>n.e(5478).then(n.bind(n,98866)),"@site/docs/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/1_FixedSampling/1_FixedSampling.md",98866],"8717b14a":[()=>n.e(948).then(n.bind(n,63352)),"@site/blog/2019-05-29-long-blog-post.md?truncated=true",63352],"8765126f":[()=>n.e(321).then(n.bind(n,73792)),"@site/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/5_BLEHeartRateDetection/5_BLEHeartRateDetection.md",73792],"87e3dfcd":[()=>n.e(2314).then(n.t.bind(n,15745,19)),"/home/runner/work/upsidedownlabs.github.io/upsidedownlabs.github.io/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",15745],"8b5af354":[()=>n.e(6919).then(n.bind(n,29524)),"@site/versioned_docs/version-1.1.1/Experiments/EMGExperiments.md",29524],"8df18fbe":[()=>n.e(4046).then(n.t.bind(n,93022,19)),"~docs/default/category-docs-tutorialsidebar-category-bioamp-hardware-ded.json",93022],"8efef98a":[()=>n.e(976).then(n.t.bind(n,45806,19)),"~docs/default/category-docsnext-tutorialsidebar-category-experiments-538.json",45806],"8f8c9819":[()=>n.e(9596).then(n.bind(n,92848)),"@site/blog/2023-05-10-Soldering.md",92848],"91fefcce":[()=>n.e(464).then(n.bind(n,6082)),"@site/docs/BioAmp-Hardware/DIYMuscleBioAmpShield.md",6082],"920eec01":[()=>n.e(2669).then(n.t.bind(n,24469,19)),"/home/runner/work/upsidedownlabs.github.io/upsidedownlabs.github.io/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",24469],"925b3f96":[()=>n.e(9003).then(n.bind(n,8856)),"@site/blog/2019-05-28-first-blog-post.md?truncated=true",8856],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"94ff5c21":[()=>n.e(7884).then(n.t.bind(n,83769,19)),"/home/runner/work/upsidedownlabs.github.io/upsidedownlabs.github.io/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",83769],"987c480f":[()=>n.e(7941).then(n.bind(n,37356)),"@site/versioned_docs/version-1.1.1/BioAmp-Software/intro.md",37356],"98c2c489":[()=>n.e(1016).then(n.bind(n,11689)),"@site/versioned_docs/version-1.1.1/tutorial-extras/manage-docs-versions.md",11689],"9a12303c":[()=>n.e(6870).then(n.bind(n,43739)),"@site/versioned_docs/version-1.1.1/tutorial-basics/deploy-your-site.md",43739],"9bf6c186":[()=>n.e(159).then(n.bind(n,27422)),"@site/versioned_docs/version-1.1.1/Experiments/EEGExperiments.md",27422],"9dc6aba9":[()=>n.e(6646).then(n.bind(n,33869)),"@site/docs/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/2_EEGFilter/2_EEGFilter.md",33869],"9e4087bc":[()=>n.e(3608).then(n.bind(n,63169)),"@theme/BlogArchivePage",63169],"9f2d2e58":[()=>n.e(1873).then(n.bind(n,57016)),"@site/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/1_FixedSampling/1_FixedSampling.md",57016],a2512981:[()=>n.e(8046).then(n.bind(n,34138)),"@site/docs/Experiments/Getting Started/Getting Started.md",34138],a2ad2f66:[()=>n.e(9759).then(n.bind(n,81289)),"@site/versioned_docs/version-1.1.1/BioAmp-Hardware/DIYMuscleBioAmpShield.md",81289],a2f1a099:[()=>n.e(4612).then(n.bind(n,81788)),"@site/docs/Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1.md",81788],a510732e:[()=>n.e(3754).then(n.bind(n,85056)),"@site/versioned_docs/version-1.1.0/tutorial-basics/create-a-document.md",85056],a625387d:[()=>n.e(8042).then(n.bind(n,44165)),"@site/docs/BioAmp-Hardware/BioAmpEXGPill.md",44165],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(1506),n.e(2529),n.e(3089)]).then(n.bind(n,80046)),"@theme/BlogListPage",80046],a7023ddc:[()=>n.e(1713).then(n.t.bind(n,53457,19)),"~blog/default/blog-tags-tags-4c2.json",53457],a802568d:[()=>n.e(8373).then(n.bind(n,40001)),"@site/docs/BioAmp-Hardware/MuscleBioAmpPatchy.md",40001],a8085572:[()=>n.e(4152).then(n.t.bind(n,92234,19)),"~docs/default/category-docs-110-tutorialsidebar-category-tutorial-basics-634.json",92234],a80da1cf:[()=>n.e(3205).then(n.t.bind(n,24863,19)),"~blog/default/blog-tags-docusaurus-0e0.json",24863],a975f2ce:[()=>n.e(4401).then(n.t.bind(n,68255,19)),"~docs/default/category-docs-110-tutorialsidebar-category-bioamp-software-bba.json",68255],ac441560:[()=>n.e(8728).then(n.bind(n,69814)),"@site/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/4_HeartBeatDetection/HeartBeatDetection.md",69814],b13df9ec:[()=>n.e(5078).then(n.bind(n,98045)),"@site/versioned_docs/version-1.1.1/Experiments/ECGExperiments.md",98045],b2b675dd:[()=>n.e(533).then(n.t.bind(n,28017,19)),"~blog/default/blog-c06.json",28017],b2c166a1:[()=>n.e(5189).then(n.bind(n,63197)),"@site/versioned_docs/version-1.1.0/tutorial-basics/deploy-your-site.md",63197],b2f554cd:[()=>n.e(1477).then(n.t.bind(n,30010,19)),"~blog/default/blog-archive-80c.json",30010],bc935061:[()=>n.e(562).then(n.bind(n,73403)),"@site/versioned_docs/version-1.1.1/tutorial-basics/markdown-features.mdx",73403],c0c82494:[()=>n.e(9804).then(n.bind(n,89679)),"@site/versioned_docs/version-1.1.1/BioAmp-Hardware/BioAmpEXGPill.md",89679],c321efbb:[()=>n.e(5023).then(n.bind(n,12347)),"@site/versioned_docs/version-1.1.1/BioAmp-Hardware/MuscleBioAmpBisCute.md",12347],c4463ba4:[()=>n.e(2154).then(n.bind(n,45263)),"@site/versioned_docs/version-1.1.1/BioAmp-Hardware/MuscleBioAmpCandy.md",45263],c60df31a:[()=>n.e(9756).then(n.bind(n,56832)),"@site/docs/Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill/Measuring Heart Rate Using BioAmp EXG Pill.md",56832],c72f7d14:[()=>n.e(5424).then(n.bind(n,33774)),"@site/docs/Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno.md",33774],c7fb81cc:[()=>n.e(2925).then(n.bind(n,12695)),"@site/docs/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/1_FixedSampling/1_FixedSampling.md",12695],c844b82d:[()=>n.e(9326).then(n.t.bind(n,55262,19)),"~docs/default/category-docs-tutorialsidebar-category-tutorial-extras-3e4.json",55262],ccc49370:[()=>Promise.all([n.e(532),n.e(1506),n.e(2529),n.e(6103)]).then(n.bind(n,65203)),"@theme/BlogPostPage",65203],d9f32620:[()=>n.e(1914).then(n.bind(n,62900)),"@site/blog/2021-08-26-welcome/index.md",62900],dc2fe34e:[()=>n.e(4903).then(n.bind(n,22741)),"@site/docs/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/5_EyeBlinkDetection/5_EyeBlinkDetection.md",22741],dea8abc4:[()=>n.e(9275).then(n.bind(n,69977)),"@site/versioned_docs/version-1.1.1/tutorial-basics/create-a-page.md",69977],df21e914:[()=>n.e(9129).then(n.bind(n,42065)),"@site/versioned_docs/version-1.1.0/tutorial-extras/translate-your-site.md",42065],dff1c289:[()=>n.e(3792).then(n.bind(n,30089)),"@site/docs/tutorial-extras/manage-docs-versions.md",30089],e15bcb33:[()=>n.e(8326).then(n.t.bind(n,25374,19)),"~docs/default/version-1-1-0-metadata-prop-2f9.json",25374],e16015ca:[()=>n.e(9700).then(n.t.bind(n,5688,19)),"~blog/default/blog-tags-hola-ea2.json",5688],e163c9cd:[()=>n.e(6460).then(n.bind(n,8578)),"@site/docs/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/5_ServoControl/5_ServoControl.md",8578],e273c56f:[()=>n.e(2362).then(n.bind(n,81947)),"@site/blog/2019-05-28-first-blog-post.md",81947],e44a2883:[()=>n.e(6755).then(n.bind(n,80740)),"@site/docs/tutorial-extras/translate-your-site.md",80740],e5d61e0e:[()=>n.e(4743).then(n.bind(n,36926)),"@site/docs/Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield.md",36926],e90f38a3:[()=>n.e(1650).then(n.t.bind(n,97700,19)),"~docs/default/category-docs-tutorialsidebar-category-bioamp-software-334.json",97700],e9164146:[()=>n.e(8259).then(n.bind(n,61816)),"@site/docs/Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG.md",61816],ea88f2a1:[()=>n.e(6525).then(n.t.bind(n,80123,19)),"~docs/default/category-docs-tutorialsidebar-category-tutorial-basics-918.json",80123],ee46b7cd:[()=>n.e(4025).then(n.bind(n,34312)),"@site/versioned_docs/version-1.1.1/BioAmp-Hardware/MuscleBioAmpPatchy.md",34312],eed5333f:[()=>Promise.all([n.e(532),n.e(9612)]).then(n.bind(n,39499)),"@site/docs/Experiments/EMG Experiments/BisCute Visualize EMG/BisCute Visualize EMG.md",39499],f0eaf209:[()=>n.e(6304).then(n.t.bind(n,36682,19)),"~docs/default/category-docsnext-tutorialsidebar-category-tutorial-extras-2b5.json",36682],f31b4887:[()=>n.e(4713).then(n.bind(n,59276)),"@site/docs/BioAmp-Hardware/MuscleBioAmpCandy.md",59276],f4f34a3a:[()=>n.e(8636).then(n.bind(n,55145)),"@site/blog/2021-08-01-mdx-blog-post.mdx?truncated=true",55145],f55d3e7a:[()=>n.e(4193).then(n.bind(n,78030)),"@site/docs/tutorial-basics/deploy-your-site.md",78030],f72e5956:[()=>n.e(4207).then(n.bind(n,24271)),"@site/blog/2023-05-10-Soldering.md?truncated=true",24271],f76c04c1:[()=>n.e(1719).then(n.bind(n,42519)),"@site/versioned_docs/version-1.1.0/BioAmp-Hardware/BioAmpEXGPill.md",42519],fbe504e6:[()=>n.e(5930).then(n.t.bind(n,97025,19)),"~docs/default/category-docs-110-tutorialsidebar-category-bioamp-hardware-feb.json",97025],fcaffae2:[()=>n.e(6390).then(n.bind(n,79982)),"@site/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",79982],fd039224:[()=>n.e(4234).then(n.bind(n,89283)),"@site/versioned_docs/version-1.1.0/Experiments/EMGExperiments.md",89283]};function c(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var u=n(99670),d=n(30226);function p(e,t){if("*"===e)return i()({loading:c,loader:()=>n.e(4972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],p={},f=[],m=[],g=(0,u.Z)(o);return Object.entries(g).forEach((e=>{let[t,n]=e;const r=s[n];r&&(p[t]=r[0],f.push(r[1]),m.push(r[2]))})),i().Map({loading:c,loader:p,modules:f,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const f=[{path:"/blog",component:p("/blog","15a"),exact:!0},{path:"/blog/2023/05/10/patchy-launch",component:p("/blog/2023/05/10/patchy-launch","556"),exact:!0},{path:"/blog/2023/05/10/Soldering",component:p("/blog/2023/05/10/Soldering","4b3"),exact:!0},{path:"/blog/archive",component:p("/blog/archive","be2"),exact:!0},{path:"/blog/first-blog-post",component:p("/blog/first-blog-post","457"),exact:!0},{path:"/blog/long-blog-post",component:p("/blog/long-blog-post","e78"),exact:!0},{path:"/blog/mdx-blog-post",component:p("/blog/mdx-blog-post","a9e"),exact:!0},{path:"/blog/tags",component:p("/blog/tags","c59"),exact:!0},{path:"/blog/tags/docusaurus",component:p("/blog/tags/docusaurus","812"),exact:!0},{path:"/blog/tags/facebook",component:p("/blog/tags/facebook","3a3"),exact:!0},{path:"/blog/tags/hello",component:p("/blog/tags/hello","077"),exact:!0},{path:"/blog/tags/hola",component:p("/blog/tags/hola","0fc"),exact:!0},{path:"/blog/welcome",component:p("/blog/welcome","cb7"),exact:!0},{path:"/Contributors",component:p("/Contributors","a0b"),exact:!0},{path:"/markdown-page",component:p("/markdown-page","ba3"),exact:!0},{path:"/docs/1.1.0",component:p("/docs/1.1.0","2f7"),routes:[{path:"/docs/1.1.0/BioAmp-Hardware/BioAmpEXGPill",component:p("/docs/1.1.0/BioAmp-Hardware/BioAmpEXGPill","78b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/BioAmp-Hardware/DIYMuscleBioAmpShield",component:p("/docs/1.1.0/BioAmp-Hardware/DIYMuscleBioAmpShield","7b8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/BioAmp-Hardware/MuscleBioAmpBisCute",component:p("/docs/1.1.0/BioAmp-Hardware/MuscleBioAmpBisCute","8fa"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/BioAmp-Hardware/MuscleBioAmpCandy",component:p("/docs/1.1.0/BioAmp-Hardware/MuscleBioAmpCandy","422"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/BioAmp-Hardware/MuscleBioAmpPatchy",component:p("/docs/1.1.0/BioAmp-Hardware/MuscleBioAmpPatchy","173"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/BioAmp-Software/intro",component:p("/docs/1.1.0/BioAmp-Software/intro","728"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/category/bioamp-hardware",component:p("/docs/1.1.0/category/bioamp-hardware","d76"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/category/bioamp-software",component:p("/docs/1.1.0/category/bioamp-software","719"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/category/experiments",component:p("/docs/1.1.0/category/experiments","654"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/category/tutorial---basics",component:p("/docs/1.1.0/category/tutorial---basics","98a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/category/tutorial---extras",component:p("/docs/1.1.0/category/tutorial---extras","805"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/Experiments/ECGExperiments",component:p("/docs/1.1.0/Experiments/ECGExperiments","f8b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/Experiments/EEGExperiments",component:p("/docs/1.1.0/Experiments/EEGExperiments","c8c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/Experiments/EMGExperiments",component:p("/docs/1.1.0/Experiments/EMGExperiments","36f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/Experiments/EOGExperiments",component:p("/docs/1.1.0/Experiments/EOGExperiments","5ac"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/intro",component:p("/docs/1.1.0/intro","fc3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/tutorial-basics/congratulations",component:p("/docs/1.1.0/tutorial-basics/congratulations","01a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/tutorial-basics/create-a-blog-post",component:p("/docs/1.1.0/tutorial-basics/create-a-blog-post","54d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/tutorial-basics/create-a-document",component:p("/docs/1.1.0/tutorial-basics/create-a-document","79c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/tutorial-basics/create-a-page",component:p("/docs/1.1.0/tutorial-basics/create-a-page","665"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/tutorial-basics/deploy-your-site",component:p("/docs/1.1.0/tutorial-basics/deploy-your-site","676"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/tutorial-basics/markdown-features",component:p("/docs/1.1.0/tutorial-basics/markdown-features","4da"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/tutorial-extras/manage-docs-versions",component:p("/docs/1.1.0/tutorial-extras/manage-docs-versions","c95"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/1.1.0/tutorial-extras/translate-your-site",component:p("/docs/1.1.0/tutorial-extras/translate-your-site","8a5"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/docs/next",component:p("/docs/next","1dd"),routes:[{path:"/docs/next/BioAmp-Hardware/BioAmpEXGPill",component:p("/docs/next/BioAmp-Hardware/BioAmpEXGPill","d26"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Hardware/DIYMuscleBioAmpShield",component:p("/docs/next/BioAmp-Hardware/DIYMuscleBioAmpShield","dd1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Hardware/MuscleBioAmpBisCute",component:p("/docs/next/BioAmp-Hardware/MuscleBioAmpBisCute","ee0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Hardware/MuscleBioAmpCandy",component:p("/docs/next/BioAmp-Hardware/MuscleBioAmpCandy","691"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Hardware/MuscleBioAmpPatchy",component:p("/docs/next/BioAmp-Hardware/MuscleBioAmpPatchy","c20"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/EEGFilter",component:p("/docs/next/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/EEGFilter","f4b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/FixedSampling",component:p("/docs/next/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/FixedSampling","abf"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/DrowsinessDetection",component:p("/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/DrowsinessDetection","f9f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGFilter",component:p("/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGFilter","dd1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGPhotoCaptureBLE",component:p("/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGPhotoCaptureBLE","8cc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EyeBlinkDetection",component:p("/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EyeBlinkDetection","9b7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/FixedSampling",component:p("/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/FixedSampling","d6d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/BLEHeartRateDetection",component:p("/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/BLEHeartRateDetection","086"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/ECGFilter",component:p("/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/ECGFilter","5b1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/FixedSampling",component:p("/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/FixedSampling","102"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartBeatDetection/HeartBeatDetection",component:p("/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartBeatDetection/HeartBeatDetection","82d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartRateDetection",component:p("/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartRateDetection","181"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/intro",component:p("/docs/next/BioAmp-Software/intro","821"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ClawController",component:p("/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ClawController","648"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGEnvelope",component:p("/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGEnvelope","44e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGFilter",component:p("/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGFilter","c20"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/FixedSampling",component:p("/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/FixedSampling","7b1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/LEDBarGraph",component:p("/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/LEDBarGraph","9e2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ServoControl",component:p("/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ServoControl","ad4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/category/bioamp-hardware",component:p("/docs/next/category/bioamp-hardware","cb1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/category/bioamp-software",component:p("/docs/next/category/bioamp-software","97d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/category/experiments",component:p("/docs/next/category/experiments","8d3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/category/tutorial---basics",component:p("/docs/next/category/tutorial---basics","aad"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/category/tutorial---extras",component:p("/docs/next/category/tutorial---extras","591"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill",component:p("/docs/next/Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill","35d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill",component:p("/docs/next/Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill","e7d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill",component:p("/docs/next/Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill","63a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments",component:p("/docs/next/Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments","573"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill",component:p("/docs/next/Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill","9ce"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG",component:p("/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG","5e9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG",component:p("/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG","de4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1",component:p("/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1","bb9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield",component:p("/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield","f16"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield",component:p("/docs/next/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield","680"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno",component:p("/docs/next/Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno","952"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection",component:p("/docs/next/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection","a53"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill",component:p("/docs/next/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill","7de"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/Experiments/EOG Experiments/EOG EXPERIMENT",component:p("/docs/next/Experiments/EOG Experiments/EOG EXPERIMENT","6d9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/Experiments/Getting Started",component:p("/docs/next/Experiments/Getting Started","e2c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/intro",component:p("/docs/next/intro","8d4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/tutorial-basics/congratulations",component:p("/docs/next/tutorial-basics/congratulations","942"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/tutorial-basics/create-a-blog-post",component:p("/docs/next/tutorial-basics/create-a-blog-post","fbe"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/tutorial-basics/create-a-document",component:p("/docs/next/tutorial-basics/create-a-document","32a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/tutorial-basics/create-a-page",component:p("/docs/next/tutorial-basics/create-a-page","24b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/tutorial-basics/deploy-your-site",component:p("/docs/next/tutorial-basics/deploy-your-site","49e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/tutorial-basics/markdown-features",component:p("/docs/next/tutorial-basics/markdown-features","bca"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/tutorial-extras/manage-docs-versions",component:p("/docs/next/tutorial-extras/manage-docs-versions","a0f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/next/tutorial-extras/translate-your-site",component:p("/docs/next/tutorial-extras/translate-your-site","84b"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/docs",component:p("/docs","698"),routes:[{path:"/docs/BioAmp-Hardware/BioAmpEXGPill",component:p("/docs/BioAmp-Hardware/BioAmpEXGPill","a8e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/BioAmp-Hardware/DIYMuscleBioAmpShield",component:p("/docs/BioAmp-Hardware/DIYMuscleBioAmpShield","db5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/BioAmp-Hardware/MuscleBioAmpBisCute",component:p("/docs/BioAmp-Hardware/MuscleBioAmpBisCute","f1f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/BioAmp-Hardware/MuscleBioAmpCandy",component:p("/docs/BioAmp-Hardware/MuscleBioAmpCandy","49e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/BioAmp-Hardware/MuscleBioAmpPatchy",component:p("/docs/BioAmp-Hardware/MuscleBioAmpPatchy","658"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/BioAmp-Software/intro",component:p("/docs/BioAmp-Software/intro","ee4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/bioamp-hardware",component:p("/docs/category/bioamp-hardware","ad8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/bioamp-software",component:p("/docs/category/bioamp-software","a09"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/experiments",component:p("/docs/category/experiments","151"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/tutorial---basics",component:p("/docs/category/tutorial---basics","d44"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/tutorial---extras",component:p("/docs/category/tutorial---extras","f09"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Experiments/ECGExperiments",component:p("/docs/Experiments/ECGExperiments","817"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Experiments/EEGExperiments",component:p("/docs/Experiments/EEGExperiments","5bf"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Experiments/EMGExperiments",component:p("/docs/Experiments/EMGExperiments","c8b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Experiments/EOGExperiments",component:p("/docs/Experiments/EOGExperiments","ce3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/intro",component:p("/docs/intro","ed7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/tutorial-basics/congratulations",component:p("/docs/tutorial-basics/congratulations","51d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/tutorial-basics/create-a-blog-post",component:p("/docs/tutorial-basics/create-a-blog-post","aa8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/tutorial-basics/create-a-document",component:p("/docs/tutorial-basics/create-a-document","99a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/tutorial-basics/create-a-page",component:p("/docs/tutorial-basics/create-a-page","8e4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/tutorial-basics/deploy-your-site",component:p("/docs/tutorial-basics/deploy-your-site","5e2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/tutorial-basics/markdown-features",component:p("/docs/tutorial-basics/markdown-features","fc8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/tutorial-extras/manage-docs-versions",component:p("/docs/tutorial-extras/manage-docs-versions","cbd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/tutorial-extras/translate-your-site",component:p("/docs/tutorial-extras/translate-your-site","cea"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/",component:p("/","f07"),exact:!0},{path:"*",component:p("*")}]},98934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(67294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},49383:(e,t,n)=>{"use strict";var r=n(67294),a=n(73935),o=n(73727),i=n(70405),l=n(10412);const s=[n(32497),n(3310),n(18320),n(52295)];var c=n(723),u=n(16550),d=n(18790);function p(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var f=n(87462),m=n(35742),g=n(52263),h=n(44996),b=n(86668),v=n(1944),y=n(94711),w=n(19727),E=n(43320),x=n(90197);function S(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,g.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function k(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,g.Z)(),a=function(){const{siteConfig:{url:e}}=(0,g.Z)(),{pathname:t}=(0,u.TH)();return e+(0,h.Z)(t)}(),o=t?`${n}${t}`:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function A(){const{i18n:{currentLocale:e}}=(0,g.Z)(),{metadata:t,image:n}=(0,b.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(v.d,{image:n}),r.createElement(k,null),r.createElement(S,null),r.createElement(x.Z,{tag:E.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,f.Z)({key:t},e))))))}const _=new Map;function C(e){if(_.has(e.pathname))return{...e,pathname:_.get(e.pathname)};if((0,d.f)(c.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return _.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return _.set(e.pathname,t),{...e,pathname:t}}var B=n(98934),T=n(58940);function M(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),M("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function L(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(c.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class R extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?M("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=M("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),L(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(P,{previousLocation:this.previousLocation,location:t},r.createElement(u.AW,{location:t,render:()=>e}))}}const O=R,D="__docusaurus-base-url-issue-banner-container",N="__docusaurus-base-url-issue-banner",I="__docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function G(e){return`\nwindow['${F}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${F}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${D}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{window[F]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,G(e))),r.createElement("div",{id:D}))}function j(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,g.Z)(),{pathname:n}=(0,u.TH)();return t&&n===e?r.createElement(H,null):null}function U(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,g.Z)(),i=(0,h.Z)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(m.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var z=n(44763);function $(){const e=(0,d.H)(c.Z),t=(0,u.TH)();return r.createElement(z.Z,null,r.createElement(T.M,null,r.createElement(B.t,null,r.createElement(p,null,r.createElement(U,null),r.createElement(A,null),r.createElement(j,null),r.createElement(O,{location:C(t)},e)))))}var q=n(16887);const Z=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var V=n(99670);const W=new Set,X=new Set,Y=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,K={prefetch(e){if(!(e=>!Y()&&!X.has(e)&&!W.has(e))(e))return!1;W.add(e);const t=(0,d.f)(c.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,V.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Z(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!Y()&&!X.has(e))(e)&&(X.add(e),L(e))},Q=Object.freeze(K);if(l.Z.canUseDOM){window.docusaurus=Q;const e=a.hydrate;L(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement($,null))),document.getElementById("__docusaurus"))}))}},58940:(e,t,n)=>{"use strict";n.d(t,{_:()=>u,M:()=>d});var r=n(67294),a=n(36809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":false,"path":"/docs/next","mainDocId":"BioAmp-Hardware/BioAmpEXGPill","docs":[{"id":"BioAmp-Hardware/BioAmpEXGPill","path":"/docs/next/BioAmp-Hardware/BioAmpEXGPill","sidebar":"tutorialSidebar"},{"id":"BioAmp-Hardware/DIYMuscleBioAmpShield","path":"/docs/next/BioAmp-Hardware/DIYMuscleBioAmpShield","sidebar":"tutorialSidebar"},{"id":"BioAmp-Hardware/MuscleBioAmpBisCute","path":"/docs/next/BioAmp-Hardware/MuscleBioAmpBisCute","sidebar":"tutorialSidebar"},{"id":"BioAmp-Hardware/MuscleBioAmpCandy","path":"/docs/next/BioAmp-Hardware/MuscleBioAmpCandy","sidebar":"tutorialSidebar"},{"id":"BioAmp-Hardware/MuscleBioAmpPatchy","path":"/docs/next/BioAmp-Hardware/MuscleBioAmpPatchy","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Brain-BioAmp-Arduino-Firmware/EEGFilter/EEGFilter","path":"/docs/next/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/EEGFilter/","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Brain-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling","path":"/docs/next/BioAmp-Software/Brain-BioAmp-Arduino-Firmware/FixedSampling/","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/DrowsinessDetection/DrowsinessDetection","path":"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/DrowsinessDetection/","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGFilter/EOGFilter","path":"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGFilter/","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGPhotoCaptureBLE/EOGPhotoCaptureBLE","path":"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EOGPhotoCaptureBLE/","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EyeBlinkDetection/EyeBlinkDetection","path":"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/EyeBlinkDetection/","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Eye-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling","path":"/docs/next/BioAmp-Software/Eye-BioAmp-Arduino-Firmware/FixedSampling/","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/BLEHeartRateDetection/BLEHeartRateDetection","path":"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/BLEHeartRateDetection/","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/ECGFilter/ECGFilter","path":"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/ECGFilter/","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling","path":"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/FixedSampling/","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartBeatDetection/HeartBeatDetection","path":"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartBeatDetection/HeartBeatDetection","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartRateDetection/HeartRateDetection","path":"/docs/next/BioAmp-Software/Heart-BioAmp-Arduino-Firmware/HeartRateDetection/","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/intro","path":"/docs/next/BioAmp-Software/intro","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ClawController/ClawController","path":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ClawController/","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGEnvelope/EMGEnvelope","path":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGEnvelope/","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGFilter/EMGFilter","path":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/EMGFilter/","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/FixedSampling/FixedSampling","path":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/FixedSampling/","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/LEDBarGraph/LEDBarGraph","path":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/LEDBarGraph/","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ServoControl/ServoControl","path":"/docs/next/BioAmp-Software/Muscle-BioAmp-Arduino-Firmware/ServoControl/","sidebar":"tutorialSidebar"},{"id":"Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill/Detecting Heart Beats Using BioAmp EXG Pill","path":"/docs/next/Experiments/ECG Experiments/Detecting Heart Beats Using BioAmp EXG Pill/","sidebar":"tutorialSidebar"},{"id":"Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill/Measuring Heart Rate Using BioAmp EXG Pill","path":"/docs/next/Experiments/ECG Experiments/Measuring Heart Rate Using BioAmp EXG Pill/","sidebar":"tutorialSidebar"},{"id":"Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill","path":"/docs/next/Experiments/ECG Experiments/Record Publication Grade ECG at Your Home Using BioAmp EXG Pill/","sidebar":"tutorialSidebar"},{"id":"Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments","path":"/docs/next/Experiments/EEG Experiments/Recording EEG From Pre Frontal Cortex of Brain Using BioAmp EXG Pill/EEGExperiments","sidebar":"tutorialSidebar"},{"id":"Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill","path":"/docs/next/Experiments/EEG Experiments/Recording EEG From Visual Cortex of Brain Using BioAmp EXG Pill/","sidebar":"tutorialSidebar"},{"id":"Experiments/EMG Experiments/BisCute Visualize EMG/BisCute Visualize EMG","path":"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/","sidebar":"tutorialSidebar"},{"id":"Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG","path":"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/Candy_Visualize EMG","sidebar":"tutorialSidebar"},{"id":"Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1","path":"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/EMGExperiment1","sidebar":"tutorialSidebar"},{"id":"Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield","path":"/docs/next/Experiments/EMG Experiments/BisCute Visualize EMG/Record, Visualize & Listen to Muscle Signals Using Muscle BioAmp Shield","sidebar":"tutorialSidebar"},{"id":"Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield","path":"/docs/next/Experiments/EMG Experiments/Controlling Servo Claw With Muscle Signals Using Muscle BioAmp Shield/","sidebar":"tutorialSidebar"},{"id":"Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno","path":"/docs/next/Experiments/EMG Experiments/Making a Muscle Strength Game Using Muscle BioAmp Shield & Arduino Uno/","sidebar":"tutorialSidebar"},{"id":"Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/BioAmp EXG Pill_Eye Blink Detection","path":"/docs/next/Experiments/EOG Experiments/BioAmp EXG Pill_Eye Blink Detection/","sidebar":"tutorialSidebar"},{"id":"Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill","path":"/docs/next/Experiments/EOG Experiments/Drowsiness Detector by Detecting EOG Signals Using BioAmp EXG Pill/","sidebar":"tutorialSidebar"},{"id":"Experiments/EOG Experiments/EOG EXPERIMENT/EOG Experiment","path":"/docs/next/Experiments/EOG Experiments/EOG EXPERIMENT/","sidebar":"tutorialSidebar"},{"id":"Experiments/Getting Started/Getting Started","path":"/docs/next/Experiments/Getting Started/","sidebar":"tutorialSidebar"},{"id":"intro","path":"/docs/next/intro","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/congratulations","path":"/docs/next/tutorial-basics/congratulations","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/create-a-blog-post","path":"/docs/next/tutorial-basics/create-a-blog-post","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/create-a-document","path":"/docs/next/tutorial-basics/create-a-document","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/create-a-page","path":"/docs/next/tutorial-basics/create-a-page","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/deploy-your-site","path":"/docs/next/tutorial-basics/deploy-your-site","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/markdown-features","path":"/docs/next/tutorial-basics/markdown-features","sidebar":"tutorialSidebar"},{"id":"tutorial-extras/manage-docs-versions","path":"/docs/next/tutorial-extras/manage-docs-versions","sidebar":"tutorialSidebar"},{"id":"tutorial-extras/translate-your-site","path":"/docs/next/tutorial-extras/translate-your-site","sidebar":"tutorialSidebar"},{"id":"/category/bioamp-hardware","path":"/docs/next/category/bioamp-hardware","sidebar":"tutorialSidebar"},{"id":"/category/bioamp-software","path":"/docs/next/category/bioamp-software","sidebar":"tutorialSidebar"},{"id":"/category/experiments","path":"/docs/next/category/experiments","sidebar":"tutorialSidebar"},{"id":"/category/tutorial---basics","path":"/docs/next/category/tutorial---basics","sidebar":"tutorialSidebar"},{"id":"/category/tutorial---extras","path":"/docs/next/category/tutorial---extras","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/next/category/bioamp-hardware","label":"BioAmp Hardware"}}}},{"name":"1.1.1","label":"1.1.1","isLast":true,"path":"/docs","mainDocId":"BioAmp-Hardware/BioAmpEXGPill","docs":[{"id":"BioAmp-Hardware/BioAmpEXGPill","path":"/docs/BioAmp-Hardware/BioAmpEXGPill","sidebar":"tutorialSidebar"},{"id":"BioAmp-Hardware/DIYMuscleBioAmpShield","path":"/docs/BioAmp-Hardware/DIYMuscleBioAmpShield","sidebar":"tutorialSidebar"},{"id":"BioAmp-Hardware/MuscleBioAmpBisCute","path":"/docs/BioAmp-Hardware/MuscleBioAmpBisCute","sidebar":"tutorialSidebar"},{"id":"BioAmp-Hardware/MuscleBioAmpCandy","path":"/docs/BioAmp-Hardware/MuscleBioAmpCandy","sidebar":"tutorialSidebar"},{"id":"BioAmp-Hardware/MuscleBioAmpPatchy","path":"/docs/BioAmp-Hardware/MuscleBioAmpPatchy","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/intro","path":"/docs/BioAmp-Software/intro","sidebar":"tutorialSidebar"},{"id":"Experiments/ECGExperiments","path":"/docs/Experiments/ECGExperiments","sidebar":"tutorialSidebar"},{"id":"Experiments/EEGExperiments","path":"/docs/Experiments/EEGExperiments","sidebar":"tutorialSidebar"},{"id":"Experiments/EMGExperiments","path":"/docs/Experiments/EMGExperiments","sidebar":"tutorialSidebar"},{"id":"Experiments/EOGExperiments","path":"/docs/Experiments/EOGExperiments","sidebar":"tutorialSidebar"},{"id":"intro","path":"/docs/intro","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/congratulations","path":"/docs/tutorial-basics/congratulations","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/create-a-blog-post","path":"/docs/tutorial-basics/create-a-blog-post","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/create-a-document","path":"/docs/tutorial-basics/create-a-document","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/create-a-page","path":"/docs/tutorial-basics/create-a-page","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/deploy-your-site","path":"/docs/tutorial-basics/deploy-your-site","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/markdown-features","path":"/docs/tutorial-basics/markdown-features","sidebar":"tutorialSidebar"},{"id":"tutorial-extras/manage-docs-versions","path":"/docs/tutorial-extras/manage-docs-versions","sidebar":"tutorialSidebar"},{"id":"tutorial-extras/translate-your-site","path":"/docs/tutorial-extras/translate-your-site","sidebar":"tutorialSidebar"},{"id":"/category/bioamp-hardware","path":"/docs/category/bioamp-hardware","sidebar":"tutorialSidebar"},{"id":"/category/bioamp-software","path":"/docs/category/bioamp-software","sidebar":"tutorialSidebar"},{"id":"/category/experiments","path":"/docs/category/experiments","sidebar":"tutorialSidebar"},{"id":"/category/tutorial---basics","path":"/docs/category/tutorial---basics","sidebar":"tutorialSidebar"},{"id":"/category/tutorial---extras","path":"/docs/category/tutorial---extras","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/category/bioamp-hardware","label":"BioAmp Hardware"}}}},{"name":"1.1.0","label":"1.1.0","isLast":false,"path":"/docs/1.1.0","mainDocId":"BioAmp-Hardware/BioAmpEXGPill","docs":[{"id":"BioAmp-Hardware/BioAmpEXGPill","path":"/docs/1.1.0/BioAmp-Hardware/BioAmpEXGPill","sidebar":"tutorialSidebar"},{"id":"BioAmp-Hardware/DIYMuscleBioAmpShield","path":"/docs/1.1.0/BioAmp-Hardware/DIYMuscleBioAmpShield","sidebar":"tutorialSidebar"},{"id":"BioAmp-Hardware/MuscleBioAmpBisCute","path":"/docs/1.1.0/BioAmp-Hardware/MuscleBioAmpBisCute","sidebar":"tutorialSidebar"},{"id":"BioAmp-Hardware/MuscleBioAmpCandy","path":"/docs/1.1.0/BioAmp-Hardware/MuscleBioAmpCandy","sidebar":"tutorialSidebar"},{"id":"BioAmp-Hardware/MuscleBioAmpPatchy","path":"/docs/1.1.0/BioAmp-Hardware/MuscleBioAmpPatchy","sidebar":"tutorialSidebar"},{"id":"BioAmp-Software/intro","path":"/docs/1.1.0/BioAmp-Software/intro","sidebar":"tutorialSidebar"},{"id":"Experiments/ECGExperiments","path":"/docs/1.1.0/Experiments/ECGExperiments","sidebar":"tutorialSidebar"},{"id":"Experiments/EEGExperiments","path":"/docs/1.1.0/Experiments/EEGExperiments","sidebar":"tutorialSidebar"},{"id":"Experiments/EMGExperiments","path":"/docs/1.1.0/Experiments/EMGExperiments","sidebar":"tutorialSidebar"},{"id":"Experiments/EOGExperiments","path":"/docs/1.1.0/Experiments/EOGExperiments","sidebar":"tutorialSidebar"},{"id":"intro","path":"/docs/1.1.0/intro","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/congratulations","path":"/docs/1.1.0/tutorial-basics/congratulations","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/create-a-blog-post","path":"/docs/1.1.0/tutorial-basics/create-a-blog-post","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/create-a-document","path":"/docs/1.1.0/tutorial-basics/create-a-document","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/create-a-page","path":"/docs/1.1.0/tutorial-basics/create-a-page","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/deploy-your-site","path":"/docs/1.1.0/tutorial-basics/deploy-your-site","sidebar":"tutorialSidebar"},{"id":"tutorial-basics/markdown-features","path":"/docs/1.1.0/tutorial-basics/markdown-features","sidebar":"tutorialSidebar"},{"id":"tutorial-extras/manage-docs-versions","path":"/docs/1.1.0/tutorial-extras/manage-docs-versions","sidebar":"tutorialSidebar"},{"id":"tutorial-extras/translate-your-site","path":"/docs/1.1.0/tutorial-extras/translate-your-site","sidebar":"tutorialSidebar"},{"id":"/category/bioamp-hardware","path":"/docs/1.1.0/category/bioamp-hardware","sidebar":"tutorialSidebar"},{"id":"/category/bioamp-software","path":"/docs/1.1.0/category/bioamp-software","sidebar":"tutorialSidebar"},{"id":"/category/experiments","path":"/docs/1.1.0/category/experiments","sidebar":"tutorialSidebar"},{"id":"/category/tutorial---basics","path":"/docs/1.1.0/category/tutorial---basics","sidebar":"tutorialSidebar"},{"id":"/category/tutorial---extras","path":"/docs/1.1.0/category/tutorial---extras","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/1.1.0/category/bioamp-hardware","label":"BioAmp Hardware"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(57529);const s=JSON.parse('{"docusaurusVersion":"2.4.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.1"}}}'),c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},u=r.createContext(c);function d(e){let{children:t}=e;return r.createElement(u.Provider,{value:c},t)}},44763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(67294),a=n(10412),o=n(35742),i=n(18780),l=n(7961);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(c,{error:t}))}function c(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function u(e){let{error:t,tryAgain:n}=e;return r.createElement(p,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(u,e);class p extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??d)(e)}return e??null}}},10412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},35742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(70405);function o(e){return r.createElement(a.ql,e)}},39960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(87462),a=n(67294),o=n(73727),i=n(18780),l=n(52263),s=n(13919),c=n(10412);const u=a.createContext({collectLink:()=>{}});var d=n(44996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":h,autoAddBaseUrl:b=!0,...v}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,l.Z)(),{withBaseUrl:E}=(0,d.C)(),x=(0,a.useContext)(u),S=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>S.current));const k=p||f;const A=(0,s.Z)(k),_=k?.replace("pathname://","");let C=void 0!==_?(B=_,b&&(e=>e.startsWith("/"))(B)?E(B):B):void 0;var B;C&&A&&(C=(0,i.applyTrailingSlash)(C,{trailingSlash:y,baseUrl:w}));const T=(0,a.useRef)(!1),M=n?o.OL:o.rU,P=c.Z.canUseIntersectionObserver,L=(0,a.useRef)(),R=()=>{T.current||null==C||(window.docusaurus.preload(C),T.current=!0)};(0,a.useEffect)((()=>(!P&&A&&null!=C&&window.docusaurus.prefetch(C),()=>{P&&L.current&&L.current.disconnect()})),[L,C,P,A]);const O=C?.startsWith("#")??!1,D=!C||!A||O;return D||h||x.collectLink(C),D?a.createElement("a",(0,r.Z)({ref:S,href:C},k&&!A&&{target:"_blank",rel:"noopener noreferrer"},v)):a.createElement(M,(0,r.Z)({},v,{onMouseEnter:R,onTouchStart:R,innerRef:e=>{S.current=e,P&&e&&A&&(L.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(L.current.unobserve(e),L.current.disconnect(),null!=C&&window.docusaurus.prefetch(C))}))})),L.current.observe(e))},to:C},n&&{isActive:g,activeClassName:m}))}const f=a.forwardRef(p)},11875:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=()=>null},95999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(67294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(57529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},29935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},13919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},44996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(67294),a=n(52263),o=n(13919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},52263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(58940);function o(){return(0,r.useContext)(a._)}},72389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(98934);function o(){return(0,r.useContext)(a._)}},99670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},30226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(67294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},80143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>g,gA:()=>p,_r:()=>u,Jo:()=>h,zh:()=>d,yW:()=>m,gB:()=>f});var r=n(16550),a=n(52263),o=n(29935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const c={},u=()=>i("docusaurus-plugin-content-docs")??c,d=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function p(e){void 0===e&&(e={});const t=u(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function f(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function g(e){const t=d(e),{pathname:n}=(0,r.TH)();return s(t,n)}function h(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},18320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(74865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(87410),a=n(36809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},39471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},7961:(e,t,n)=>{"use strict";n.d(t,{Z:()=>dt});var r=n(67294),a=n(86010),o=n(44763),i=n(1944),l=n(87462),s=n(16550),c=n(95999),u=n(85936);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,c.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??m,{containerRef:n,onClick:a}=f();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,l.Z)({},e,{href:`#${d}`,onClick:a}),t))}var h=n(35281),b=n(19727);const v={skipToContent:"skipToContent_fXgn"};function y(){return r.createElement(g,{className:v.skipToContent})}var w=n(86668),E=n(59689);function x(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...s}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S={closeButton:"closeButton_CVFx"};function k(e){return r.createElement("button",(0,l.Z)({type:"button","aria-label":(0,c.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",S.closeButton,e.className)}),r.createElement(x,{width:14,height:14,strokeWidth:3.1}))}const A={content:"content_knG7"};function _(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,l.Z)({},e,{className:(0,a.Z)(A.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const C={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function B(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,E.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:C.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:C.announcementBarPlaceholder}),r.createElement(_,{className:C.announcementBarContent}),i&&r.createElement(k,{onClick:n,className:C.announcementBarClose}))}var T=n(93163),M=n(12466);var P=n(902),L=n(13102);const R=r.createContext(null);function O(e){let{children:t}=e;const n=function(){const e=(0,T.e)(),t=(0,L.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,P.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(R.Provider,{value:n},t)}function D(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function N(){const e=(0,r.useContext)(R);if(!e)throw new P.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,L.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:D(o)})),[a,o,t])}function I(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=N();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var F=n(92949),G=n(72389);function H(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function j(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function z(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const l=(0,G.Z)(),s=(0,c.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===o?(0,c.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,c.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)(U.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",U.toggleButton,!l&&U.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(H,{className:(0,a.Z)(U.toggleIcon,U.lightToggleIcon)}),r.createElement(j,{className:(0,a.Z)(U.toggleIcon,U.darkToggleIcon)})))}const $=r.memo(z),q={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function Z(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,F.I)();return a?null:r.createElement($,{className:t,buttonClassName:"dark"===n?q.darkNavbarColorModeToggle:void 0,value:o,onChange:i})}var V=n(21327);function W(){return r.createElement(V.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function X(){const e=(0,T.e)();return r.createElement("button",{type:"button","aria-label":(0,c.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(x,{color:"var(--ifm-color-emphasis-600)"}))}function Y(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(W,null),r.createElement(Z,{className:"margin-right--md"}),r.createElement(X,null))}var K=n(39960),Q=n(44996),J=n(13919);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(39471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:i,html:s,isDropdownLink:c,prependBaseUrlToHref:u,...d}=e;const p=(0,Q.Z)(a),f=(0,Q.Z)(t),m=(0,Q.Z)(o,{forcePrependBaseUrl:!0}),g=i&&o&&!(0,J.Z)(o),h=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,g&&r.createElement(te.Z,c&&{width:12,height:12}))};return o?r.createElement(K.Z,(0,l.Z)({href:u?m:o},d,h)):r.createElement(K.Z,(0,l.Z)({to:p,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(f)},d,h))}function re(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ne,(0,l.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ae(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ne,(0,l.Z)({className:(0,a.Z)("menu__link",t)},o)))}function oe(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ae:re;return r.createElement(o,(0,l.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ie=n(86043),le=n(48596),se=n(52263);function ce(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ue(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const c=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{c.current&&!c.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[c]),r.createElement("div",{ref:c,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u})},r.createElement(ne,(0,l.Z)({"aria-haspopup":"true","aria-expanded":u,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(ke,(0,l.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function de(e){let{items:t,className:n,position:o,onClick:i,...c}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[u,d,m]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":p})},r.createElement(ne,(0,l.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},c,{onClick:e=>{e.preventDefault(),f()}}),c.children??c.label),r.createElement(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p},t.map(((e,t)=>r.createElement(ke,(0,l.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function pe(e){let{mobile:t=!1,...n}=e;const a=t?de:ue;return r.createElement(a,n)}var fe=n(94711);function me(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const ge="iconLanguage_nlXk";var he=n(11875);const be={searchBox:"searchBox_ZlJk"};function ve(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,be.searchBox)},t)}var ye=n(80143),we=n(53438);var Ee=n(60373);const xe=e=>e.docs.find((t=>t.id===e.mainDocId));const Se={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,se.Z)(),p=(0,fe.l)(),{search:f,hash:m}=(0,s.TH)(),g=[...n,...u.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...a],h=t?(0,c.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(pe,(0,l.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(me,{className:ge}),h),items:g}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(ve,{className:n},r.createElement(he.Z,null))},dropdown:pe,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,ye.Iw)(a),s=(0,we.vY)(t,a);return null===s?null:r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.path===s.path||!!i?.sidebar&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,ye.Iw)(a),s=(0,we.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,we.lO)(a)[0],s=t??i.label,c=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(oe,(0,l.Z)({},o,{label:s,to:c}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...u}=e;const{search:d,hash:p}=(0,s.TH)(),f=(0,ye.Iw)(n),m=(0,ye.gB)(n),{savePreferredVersionName:g}=(0,Ee.J)(n),h=[...o,...m.map((e=>{const t=f.alternateDocVersions[e.name]??xe(e);return{label:e.label,to:`${t.path}${d}${p}`,isActive:()=>e===f.activeVersion,onClick:()=>g(e.name)}})),...i],b=(0,we.lO)(n)[0],v=t&&h.length>1?(0,c.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):b.label,y=t&&h.length>1?void 0:xe(b).path;return h.length<=1?r.createElement(oe,(0,l.Z)({},u,{mobile:t,label:v,to:y,isActive:a?()=>!1:void 0})):r.createElement(pe,(0,l.Z)({},u,{mobile:t,label:v,to:y,items:h,isActive:a?()=>!1:void 0}))}};function ke(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Se[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function Ae(){const e=(0,T.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(ke,(0,l.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function _e(e){return r.createElement("button",(0,l.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(c.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function Ce(){const e=0===(0,w.L)().navbar.items.length,t=N();return r.createElement(r.Fragment,null,!e&&r.createElement(_e,{onClick:()=>t.hide()}),t.content)}function Be(){const e=(0,T.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(I,{header:r.createElement(Y,null),primaryMenu:r.createElement(Ae,null),secondaryMenu:r.createElement(Ce,null)}):null}const Te={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Me(e){return r.createElement("div",(0,l.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function Pe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,T.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,M.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+c{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,c.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Te.navbarHideable,!s&&Te.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Me,{onClick:i.toggle}),r.createElement(Be,null))}var Le=n(18780);const Re={errorBoundaryError:"errorBoundaryError_a6uf"};function Oe(e){return r.createElement("button",(0,l.Z)({type:"button"},e),r.createElement(c.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function De(e){let{error:t}=e;const n=(0,Le.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:Re.errorBoundaryError},n)}class Ne extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Ie="right";function Fe(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,l.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function Ge(){const{toggle:e,shown:t}=(0,T.e)();return r.createElement("button",{onClick:e,"aria-label":(0,c.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(Fe,null))}const He={colorModeToggle:"colorModeToggle_DEke"};function je(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(Ne,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},r.createElement(ke,e)))))}function Ue(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function ze(){const e=(0,T.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??Ie)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(Ue,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(Ge,null),r.createElement(W,null),r.createElement(je,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(je,{items:a}),r.createElement(Z,{className:He.colorModeToggle}),!o&&r.createElement(ve,null,r.createElement(he.Z,null)))})}function $e(){return r.createElement(Pe,null,r.createElement(ze,null))}function qe(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...s}=t,c=(0,Q.Z)(n),u=(0,Q.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(K.Z,(0,l.Z)({className:"footer__link-item"},a?{href:i?u:a}:{to:c},s),o,a&&!(0,J.Z)(a)&&r.createElement(te.Z,null))}function Ze(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(qe,{item:t}))}function Ve(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(Ze,{key:t,item:e})))))}function We(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(Ve,{key:t,column:e}))))}function Xe(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function Ye(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(qe,{item:t})}function Ke(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(Ye,{item:e}),t.length!==n+1&&r.createElement(Xe,null))))))}function Qe(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(We,{columns:t}):r.createElement(Ke,{links:t})}var Je=n(50941);const et={footerLogoLink:"footerLogoLink_BH7S"};function tt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,Q.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(Je.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function nt(e){let{logo:t}=e;return t.href?r.createElement(K.Z,{href:t.href,className:et.footerLogoLink,target:t.target},r.createElement(tt,{logo:t})):r.createElement(tt,{logo:t})}function rt(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function at(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function ot(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(at,{style:o,links:n&&n.length>0&&r.createElement(Qe,{links:n}),logo:a&&r.createElement(nt,{logo:a}),copyright:t&&r.createElement(rt,{copyright:t})})}const it=r.memo(ot),lt=(0,P.Qc)([F.S,E.pl,M.OC,Ee.L5,i.VC,function(e){let{children:t}=e;return r.createElement(L.n2,null,r.createElement(T.M,null,r.createElement(O,null,t)))}]);function st(e){let{children:t}=e;return r.createElement(lt,null,t)}function ct(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(c.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(Oe,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(De,{error:t})))))}const ut={mainWrapper:"mainWrapper_z2l0"};function dt(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:c}=e;return(0,b.t)(),r.createElement(st,null,r.createElement(i.d,{title:s,description:c}),r.createElement(y,null),r.createElement(B,null),r.createElement($e,null),r.createElement("div",{id:d,className:(0,a.Z)(h.k.wrapper.main,ut.mainWrapper,l)},r.createElement(o.Z,{fallback:e=>r.createElement(ct,e)},t)),!n&&r.createElement(it,null))}},21327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(87462),a=n(67294),o=n(39960),i=n(44996),l=n(52263),s=n(86668),c=n(50941);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(c.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:c}}=(0,s.L)(),{imageClassName:d,titleClassName:p,...f}=e,m=(0,i.Z)(c?.href||"/"),g=n?"":t,h=c?.alt??g;return a.createElement(o.Z,(0,r.Z)({to:m},f,c?.target&&{target:c.target}),c&&a.createElement(u,{logo:c,alt:h,imageClassName:d}),null!=n&&a.createElement("b",{className:p},n))}},90197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(35742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},50941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(87462),a=n(67294),o=n(86010),i=n(72389),l=n(92949);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function c(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:c,className:u,alt:d,...p}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,f.map((e=>a.createElement("img",(0,r.Z)({key:e,src:c[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],u)},p)))))}},86043:(e,t,n)=>{"use strict";n.d(t,{u:()=>s,z:()=>h});var r=n(87462),a=n(67294),o=n(10412),i=n(91442);const l="ease-in-out";function s(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},u={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?c:u;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function p(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=e.scrollHeight,n=r?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??l}`,height:`${t}px`}}function s(){const t=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return d(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function f(e){if(!o.Z.canUseDOM)return e?c:u}function m(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const c=(0,a.useRef)(null);return p({collapsibleRef:c,collapsed:n,animation:o}),a.createElement(t,{ref:c,style:s?void 0:f(n),onTransitionEnd:e=>{"height"===e.propertyName&&(d(c.current,n),i?.(n))},className:l},r)}function g(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(m,(0,r.Z)({},n,{collapsed:l})):null}function h(e){let{lazy:t,...n}=e;const r=t?g:m;return a.createElement(r,n)}},59689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>f});var r=n(67294),a=n(72389),o=n(50012),i=n(902),l=n(86668);const s=(0,o.WA)("docusaurus.announcement.dismiss"),c=(0,o.WA)("docusaurus.announcement.id"),u=()=>"true"===s.get(),d=e=>s.set(String(e)),p=r.createContext(null);function f(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&u()));(0,r.useEffect)((()=>{o(u())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&d(!1),!r&&u()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(p.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(p);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},92949:(e,t,n)=>{"use strict";n.d(t,{I:()=>h,S:()=>g});var r=n(67294),a=n(10412),o=n(902),i=n(50012),l=n(86668);const s=r.createContext(void 0),c="theme",u=(0,i.WA)(c),d={light:"light",dark:"dark"},p=e=>e===d.dark?d.dark:d.light,f=e=>a.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),m=e=>{u.set(p(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(f(e));(0,r.useEffect)((()=>{t&&u.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&m(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),u.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=u.get();null!==t&&i(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function h(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},60373:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>h});var r=n(67294),a=n(80143),o=n(29935),i=n(86668),l=n(53438),s=n(902),c=n(50012);const u=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,c.WA)(u(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.WA)(u(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.WA)(u(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const f=r.createContext(null);function m(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>p(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=m();return r.createElement(f.Provider,{value:n},t)}function h(e){let{children:t}=e;return l.cE?r.createElement(g,null,t):r.createElement(r.Fragment,null,t)}function b(){const e=(0,r.useContext)(f);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(67294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},74477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>i});var r=n(67294),a=n(902);const o=r.createContext(null);function i(e){let{children:t,version:n}=e;return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocsVersionProvider");return e}},93163:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,e:()=>p});var r=n(67294),a=n(13102),o=n(87524),i=n(91980),l=n(86668),s=n(902);const c=r.createContext(void 0);function u(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,l.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[s,c]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(s)return c(!1),!1}));const u=(0,r.useCallback)((()=>{c((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&c(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:s})),[e,n,u,s])}function d(e){let{children:t}=e;const n=u();return r.createElement(c.Provider,{value:n},t)}function p(){const e=r.useContext(c);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},13102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(67294),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},19727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(67294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},87524:(e,t,n)=>{"use strict";n.d(t,{i:()=>c});var r=n(67294),a=n(10412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.Z.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const s=!1;function c(){const[e,t]=(0,r.useState)((()=>s?"ssr":l()));return(0,r.useEffect)((()=>{function e(){t(l())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},35281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},91442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},53438:(e,t,n)=>{"use strict";n.d(t,{MN:()=>A,Wl:()=>m,_F:()=>v,cE:()=>p,hI:()=>k,jA:()=>g,lO:()=>E,oz:()=>x,s1:()=>w,vY:()=>S,xz:()=>f});var r=n(67294),a=n(16550),o=n(18790),i=n(80143),l=n(60373),s=n(74477),c=n(1116),u=n(67392),d=n(48596);const p=!!i._r;function f(e){const t=(0,s.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function m(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=m(t);if(e)return e}}}function g(){const{pathname:e}=(0,a.TH)(),t=(0,c.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=y({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const h=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),b=(e,t)=>e.some((e=>v(e,t)));function v(e,t){return"link"===e.type?h(e.href,t):"category"===e.type&&(h(e.href,t)||b(e.items,t))}function y(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function w(){const e=(0,c.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?y({sidebarItems:e.items,pathname:t}):null}function E(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>(0,u.j)([t,n,a].filter(Boolean))),[t,n,a])}function x(e,t){const n=E(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=E(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,u.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function k(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,c=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:c}}function A(e){return e.filter((e=>"category"!==e.type||!!m(e)))}},91980:(e,t,n)=>{"use strict";n.d(t,{Rb:()=>l,_X:()=>s});var r=n(67294),a=n(16550),o=n(61688),i=n(902);function l(e){!function(e){const t=(0,a.k6)(),n=(0,i.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function s(e){return function(e){const t=(0,a.k6)();return(0,o.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}},67392:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>p,d:()=>u,VC:()=>f});var r=n(67294),a=n(86010),o=n(35742),i=n(30226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(44996),c=n(52263);function u(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const u=function(e){const{siteConfig:t}=(0,c.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),p=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,u),t&&r.createElement("meta",{property:"og:title",content:u}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),p&&r.createElement("meta",{property:"og:image",content:p}),p&&r.createElement("meta",{name:"twitter:image",content:p}),l)}const d=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function f(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(p,{className:(0,a.Z)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>c,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(67294);const a=n(10412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},48596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(67294),a=n(723),o=n(52263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},12466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>s,RF:()=>d,o5:()=>p});var r=n(67294),a=n(10412),o=n(72389),i=n(902);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function c(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const u=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),a=(0,r.useRef)(u()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=u();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function p(){const e=c(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,r.useLayoutEffect)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function f(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},43320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(52263);const r="default";function a(e,t){return`docs-${e}-${t}`}},50012:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>d,WA:()=>u});var r=n(67294),a=n(61688);const o="localStorage";function i(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function l(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,s||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),s=!0),null}var t}let s=!1;const c={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=l(t?.persistence);return null===n?c:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),i({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),i({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?c:u(e,t))).current(),o=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,a.useSyncExternalStore)(o,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},94711:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});var r=n(52263),a=n(16550);function o(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:o}}=(0,r.Z)(),{pathname:i}=(0,a.TH)(),l=o===n?e:e.replace(`/${o}/`,"/"),s=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:a}=e;return`${a?t:""}${function(e){return e===n?`${l}`:`${l}${e}/`}(r)}${s}`}}}},85936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(67294),a=n(16550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},86668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(52263);function a(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},54143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},18780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(54143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},86010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,n=0,a="";n{"use strict";n.d(t,{lX:()=>w,q_:()=>_,ob:()=>f,PP:()=>B,Ep:()=>p});var r=n(87462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(38776);function s(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,g(),w.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(59864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var l=s(t),g=s(n),h=0;h{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,a,o,i,l],u=0;(s=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},32497:(e,t,n)=>{"use strict";n.r(t)},52295:(e,t,n)=>{"use strict";n.r(t)},74865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},27418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);S+=x.value.length,x=x.next){var k=x.value;if(t.length>e.length)return;if(!(k instanceof a)){var A,_=1;if(v){if(!(A=o(E,S,e,b))||A.index>=e.length)break;var C=A.index,B=A.index+A[0].length,T=S;for(T+=x.value.length;C>=T;)T+=(x=x.next).value.length;if(S=T-=x.value.length,x.value instanceof a)continue;for(var M=x;M!==t.tail&&(Td.reach&&(d.reach=O);var D=x.prev;if(L&&(D=s(t,D,L),S+=L.length),c(t,D,_),x=s(t,D,new a(p,h?r.tokenize(P,h):P,y,P)),R&&s(t,x,R),_>1){var N={cause:p+","+m,reach:O};i(e,t,n,x.prev,S,N),d&&N.reach>d.reach&&(d.reach=N.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function c(e,t,n){for(var r=t.next,a=0;a"+o.content+""},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n0)){var l=p(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s=0&&f(c,"variable-input")}}}}function u(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function c(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function u(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,u={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return u[n]=a,n})).join(""),n,r),p=Object.keys(u);return i=0,function e(t){for(var n=0;n=p.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=p[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=c(u[a]),f=o.substring(l+a.length),m=[];if(s&&m.push(s),m.push(d),f){var g=[f];e(g),m.push.apply(m,g)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var h=r.content;Array.isArray(h)?e(h):e([h])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function o(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++a;var g=p.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),v=[];g&&v.push.apply(v,i([g])),v.push(h),b&&v.push.apply(v,i([b])),"string"==typeof c?l.splice.apply(l,[s,1].concat(v)):c.content=v}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},29901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(29901),a=n(39642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(16500).resolve(t)],delete Prism.languages[e],n(16500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},16500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=16500},39642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var l={},s=e[r];if(s){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,c),t(s.optional,c),t(s.modify,c)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(c),l=(l||[]).map(c);var u=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(s),m=u;a(m);){for(var g in p={},m){var h=s[g];t(h&&h.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in u))for(var v in f(b))if(v in u){p[b]=!0;break}for(var y in m=p)u[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function c(e){if(e in l)return l[e];s[e]=!0;var a,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)a=r(e);else{var p=i(u.map((function(e){var t=c(e);return delete s[e],t})));o?a=o(p,(function(){return r(e)})):r(e)}return l[e]=a}for(var u in n)c(u);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},92703:(e,t,n)=>{"use strict";var r=n(50414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},45697:(e,t,n)=>{e.exports=n(92703)()},50414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},64448:(e,t,n)=>{"use strict";var r=n(67294),a=n(27418),o=n(63840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n