grovepi/docs/site/quickstart/index.html
2025-03-21 16:04:17 +01:00

721 lines
No EOL
22 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="description" content="Python documentation for the GrovePi">
<link rel="canonical" href="https://dexterind.github.io/GrovePi/quickstart/">
<meta name="author" content="DexterInd Team">
<meta name="lang:clipboard.copy" content="Copy to clipboard">
<meta name="lang:clipboard.copied" content="Copied to clipboard">
<meta name="lang:search.language" content="en">
<meta name="lang:search.pipeline.stopwords" content="True">
<meta name="lang:search.pipeline.trimmer" content="True">
<meta name="lang:search.result.none" content="No matching documents">
<meta name="lang:search.result.one" content="1 matching document">
<meta name="lang:search.result.other" content="# matching documents">
<meta name="lang:search.tokenizer" content="[\s\-]+">
<link rel="shortcut icon" href="../img/favicon.ico">
<meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.1.2">
<title>Getting Started - GrovePi Documentation</title>
<link rel="stylesheet" href="../assets/stylesheets/application.3020aac5.css">
<script src="../assets/javascripts/modernizr.01ccdecf.js"></script>
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono">
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
<link rel="stylesheet" href="../assets/fonts/material-icons.css">
</head>
<body dir="ltr">
<svg class="md-svg">
<defs>
<svg xmlns="http://www.w3.org/2000/svg" width="416" height="448"
viewBox="0 0 416 448" id="__github">
<path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19-18.125
8.5-18.125-8.5-10.75-19-3.125-20.5 3.125-20.5 10.75-19 18.125-8.5
18.125 8.5 10.75 19 3.125 20.5zM320 304q0 10-3.125 20.5t-10.75
19-18.125 8.5-18.125-8.5-10.75-19-3.125-20.5 3.125-20.5 10.75-19
18.125-8.5 18.125 8.5 10.75 19 3.125 20.5zM360
304q0-30-17.25-51t-46.75-21q-10.25 0-48.75 5.25-17.75 2.75-39.25
2.75t-39.25-2.75q-38-5.25-48.75-5.25-29.5 0-46.75 21t-17.25 51q0 22 8
38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0
37.25-1.75t35-7.375 30.5-15 20.25-25.75 8-38.375zM416 260q0 51.75-15.25
82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5-41.75
1.125q-19.5 0-35.5-0.75t-36.875-3.125-38.125-7.5-34.25-12.875-30.25-20.25-21.5-28.75q-15.5-30.75-15.5-82.75
0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25
30.875q36.75-8.75 77.25-8.75 37 0 70 8 26.25-20.5
46.75-30.25t47.25-9.75q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34
99.5z" />
</svg>
</defs>
</svg>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" data-md-component="overlay" for="__drawer"></label>
<a href="#stacking-it" tabindex="1" class="md-skip">
Skip to content
</a>
<header class="md-header" data-md-component="header">
<nav class="md-header-nav md-grid">
<div class="md-flex">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="https://dexterind.github.io/GrovePi" title="GrovePi Documentation" class="md-header-nav__button md-logo">
<i class="md-icon"></i>
</a>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label>
</div>
<div class="md-flex__cell md-flex__cell--stretch">
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
<span class="md-header-nav__topic">
GrovePi Documentation
</span>
<span class="md-header-nav__topic">
Getting Started
</span>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--search md-header-nav__button" for="__search"></label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active">
<label class="md-icon md-search__icon" for="__search"></label>
<button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">
&#xE5CD;
</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="result">
<div class="md-search-result__meta">
Type to start searching
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<div class="md-header-nav__source">
<a href="https://github.com/DexterInd/GrovePi/" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#__github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
DexterInd/GrovePi
</div>
</a>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container">
<main class="md-main">
<div class="md-main__inner md-grid" data-md-component="container">
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="__drawer">
<a href="https://dexterind.github.io/GrovePi" title="GrovePi Documentation" class="md-nav__button md-logo">
<i class="md-icon"></i>
</a>
GrovePi Documentation
</label>
<div class="md-nav__source">
<a href="https://github.com/DexterInd/GrovePi/" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#__github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
DexterInd/GrovePi
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." title="About" class="md-nav__link">
About
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
Getting Started
</label>
<a href="./" title="Getting Started" class="md-nav__link md-nav__link--active">
Getting Started
</a>
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#stacking-it" title="Stacking It" class="md-nav__link">
Stacking It
</a>
</li>
<li class="md-nav__item">
<a href="#how-to-install" title="How to Install" class="md-nav__link">
How to Install
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#for-raspbian-for-robots-image" title="For Raspbian For Robots Image" class="md-nav__link">
For Raspbian For Robots Image
</a>
</li>
<li class="md-nav__item">
<a href="#for-manual-installation" title="For Manual Installation" class="md-nav__link">
For Manual Installation
</a>
</li>
<li class="md-nav__item">
<a href="#how-to-update-to-a-newer-version" title="How to Update to a Newer Version" class="md-nav__link">
How to Update to a Newer Version
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#where-is-it-installed" title="Where Is It Installed" class="md-nav__link">
Where Is It Installed
</a>
</li>
<li class="md-nav__item">
<a href="#what-i2c-bus-to-use" title="What I2C Bus to Use" class="md-nav__link">
What I2C Bus to Use
</a>
</li>
<li class="md-nav__item">
<a href="#scratch-support" title="Scratch Support" class="md-nav__link">
Scratch Support
</a>
</li>
<li class="md-nav__item">
<a href="#community-support" title="Community Support" class="md-nav__link">
Community Support
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../fw/" title="Firmware Stuff" class="md-nav__link">
Firmware Stuff
</a>
</li>
<li class="md-nav__item">
<a href="../hw/" title="Hardware Ports" class="md-nav__link">
Hardware Ports
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5">
<label class="md-nav__link" for="nav-5">
API Reference
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-5">
API Reference
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../api/gpio/" title="GPIO Functions" class="md-nav__link">
GPIO Functions
</a>
</li>
<li class="md-nav__item">
<a href="../api/general/" title="General Sensors" class="md-nav__link">
General Sensors
</a>
</li>
<li class="md-nav__item">
<a href="../api/complex/" title="Complex Devices" class="md-nav__link">
Complex Devices
</a>
</li>
<li class="md-nav__item">
<a href="../api/interrupt/" title="Interrupt-Based Devices" class="md-nav__link">
Interrupt-Based Devices
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../supported/" title="Supported Modules" class="md-nav__link">
Supported Modules
</a>
</li>
<li class="md-nav__item">
<a href="../release-notes/" title="Release Notes" class="md-nav__link">
Release Notes
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#stacking-it" title="Stacking It" class="md-nav__link">
Stacking It
</a>
</li>
<li class="md-nav__item">
<a href="#how-to-install" title="How to Install" class="md-nav__link">
How to Install
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#for-raspbian-for-robots-image" title="For Raspbian For Robots Image" class="md-nav__link">
For Raspbian For Robots Image
</a>
</li>
<li class="md-nav__item">
<a href="#for-manual-installation" title="For Manual Installation" class="md-nav__link">
For Manual Installation
</a>
</li>
<li class="md-nav__item">
<a href="#how-to-update-to-a-newer-version" title="How to Update to a Newer Version" class="md-nav__link">
How to Update to a Newer Version
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#where-is-it-installed" title="Where Is It Installed" class="md-nav__link">
Where Is It Installed
</a>
</li>
<li class="md-nav__item">
<a href="#what-i2c-bus-to-use" title="What I2C Bus to Use" class="md-nav__link">
What I2C Bus to Use
</a>
</li>
<li class="md-nav__item">
<a href="#scratch-support" title="Scratch Support" class="md-nav__link">
Scratch Support
</a>
</li>
<li class="md-nav__item">
<a href="#community-support" title="Community Support" class="md-nav__link">
Community Support
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/DexterInd/GrovePi/edit/master/docs/quickstart.md" title="Edit this page" class="md-icon md-content__icon">&#xE3C9;</a>
<h1>Getting Started</h1>
<h2 id="stacking-it">Stacking It<a class="headerlink" href="#stacking-it" title="Permanent link">&para;</a></h2>
<p>To get the GrovePi up and running we first need to attach the GrovePi to the RaspberryPi. It's
a very simple process where it only needs to be stacked on top the GrovePi just like with any other hat.</p>
<p>Before powering the Pi up, you need to make sure there's no foam sticked to the headers as that
can trigger the Raspberry Pi to reboot. That's because the foam is electrically conductive and it
basically shorts the pins.</p>
<p>In the end the GrovePi will sit on the Raspberry Pi like in the following photo.</p>
<p><img alt="Stacked GrovePi" src="../img/stackedgrovepi.jpg" /></p>
<h2 id="how-to-install">How to Install<a class="headerlink" href="#how-to-install" title="Permanent link">&para;</a></h2>
<p>When it comes to installation there are 2 ways to do it:</p>
<ol>
<li>By using our pre-made image called <a href="https://sourceforge.net/projects/dexterindustriesraspbianflavor/">Raspbian For Robots</a>.</li>
<li>By using a fresh Raspbian image and running our install command.</li>
</ol>
<h4 id="for-raspbian-for-robots-image">For Raspbian For Robots Image<a class="headerlink" href="#for-raspbian-for-robots-image" title="Permanent link">&para;</a></h4>
<p>The benefit of using our image is that you don't have to worry about installing the GrovePi - because it's already on it.
Still after a while you will be required to run updates via the console or via our GUI app in order to get the latest.</p>
<h4 id="for-manual-installation">For Manual Installation<a class="headerlink" href="#for-manual-installation" title="Permanent link">&para;</a></h4>
<p>On the other hand, when using a fresh Raspbian image the initial installation takes some time, but subsequent updates take
way less. The disadvantage with method is that you don't get the other robots installed too, so if you don't want to use
other robots from our family then this method is the preferred one.</p>
<p>To install the GrovePi on a fresh image of Raspbian, run the following command:</p>
<div class="codehilite"><pre><span></span>curl -kL dexterindustries.com/update_grovepi <span class="p">|</span> bash
</pre></div>
<h4 id="how-to-update-to-a-newer-version">How to Update to a Newer Version<a class="headerlink" href="#how-to-update-to-a-newer-version" title="Permanent link">&para;</a></h4>
<p>Regardless of how you got the GrovePi installed (manually or by getting the Raspbian For Robots image), there's only one way to update
to the latest version:</p>
<div class="codehilite"><pre><span></span>curl -kL dexterindustries.com/update_grovepi <span class="p">|</span> bash
</pre></div>
<p>As you can see it's basically the same command used for installing the library on a fresh Raspbian image.</p>
<h2 id="where-is-it-installed">Where Is It Installed<a class="headerlink" href="#where-is-it-installed" title="Permanent link">&para;</a></h2>
<p>Upon installing the GrovePi or getting our flavored image the GrovePi library can be found in <code>/home/pi/Dexter/GrovePi</code> directory.</p>
<p>The <code>/home/pi/Dexter/GrovePi</code> is a mirrored version of <a href="https://github.com/DexterInd/GrovePi/tree/master">our GitHub repository</a> of the master branch.</p>
<h2 id="what-i2c-bus-to-use">What I2C Bus to Use<a class="headerlink" href="#what-i2c-bus-to-use" title="Permanent link">&para;</a></h2>
<p>By default, the GrovePi library is set to use the <code>RPI_1SW</code> bus, which is a software implementation of the I2C specifically built to circumvent
the issues with the hardware I2C of the Raspberry Pi. It's very fast and it doesn't use much CPU time at all. We recommend using this bus, thus,
when importing the <code>grovepi</code> module, you don't have to do anything.</p>
<p>There's also the <code>RPI_1</code>, the classic HW I2C of the Raspberry Pi, which is buggy and unreliable. We don't see any reason in using this one in any scenario. Period.</p>
<p>In order to change the bus, presumably to <code>RPI_1</code> bus, call <code>grovepi.set_bus("RPI_1")</code> or <code>grovepi.set_bus("RPI_1SW")</code> in case you've changed the default one.</p>
<h2 id="scratch-support">Scratch Support<a class="headerlink" href="#scratch-support" title="Permanent link">&para;</a></h2>
<p>Scratch support comes by default with our flavored image, Raspbian For Robots, but if you find yourself to be using the classic Raspbian then
you also need to run the following command after you have installed the GrovePi:</p>
<div class="codehilite"><pre><span></span>sudo bash /home/pi/Dexter/GrovePi/Script/install_scratch.sh
</pre></div>
<h2 id="community-support">Community Support<a class="headerlink" href="#community-support" title="Permanent link">&para;</a></h2>
<p>To find out more on the GrovePi you can visit our forum and check for threads with the <a href="https://forum.dexterindustries.com/tags/grovepi">grovepi tag</a>
or by going to the <a href="https://forum.dexterindustries.com/c/grovepi">GrovePi category</a>.</p>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href=".." title="About" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
</div>
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Previous
</span>
About
</span>
</div>
</a>
<a href="../fw/" title="Firmware Stuff" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Next
</span>
Firmware Stuff
</span>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
</div>
</a>
</nav>
</div>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Maintained by the <a href="/release-notes/#maintenance-team">DexterInd Team</a>.
</div>
powered by
<a href="https://www.mkdocs.org">MkDocs</a>
and
<a href="https://squidfunk.github.io/mkdocs-material/">
Material for MkDocs</a>
</div>
<div class="md-footer-social">
<link rel="stylesheet" href="../assets/fonts/font-awesome.css">
<a href="https://github.com/DexterInd" class="md-footer-social__link fa fa-github"></a>
<a href="https://twitter.com/dexterind" class="md-footer-social__link fa fa-twitter"></a>
</div>
</div>
</div>
</footer>
</div>
<script src="../assets/javascripts/application.267712eb.js"></script>
<script>app.initialize({version:"1.0.4",url:{base:".."}})</script>
</body>
</html>