Hoe SPI / I2C op Raspberry Pi in te schakelen (en waarvoor deze te gebruiken)

U kent waarschijnlijk de GPIO-pinnen op de Raspberry Pi, maar hoe zit het met de SPI- en I2C-connectoren? Waar zijn ze voor en hoe kun je er gebruik van maken?

U kent waarschijnlijk de GPIO-pinnen op de Raspberry Pi, maar hoe zit het met de SPI- en I2C-connectoren?  Waar zijn ze voor en hoe kun je er gebruik van maken?
Advertentie

De Raspberry Pi kan voor bijna alles worden gebruikt. Van thuismediacenters tot aangepaste retro gaming-setups, het is veilig om te zeggen dat de Pi en vergelijkbare computers met één board alomtegenwoordig worden.

Wanneer je begint te experimenteren met de GPIO-pinnen op Raspberry Pi, wordt het nog interessanter. We hebben al besproken wat al die pins doen, dus laten we nu kijken naar hoe je de SPI- en I2C-protocollen op je Pi kunt inschakelen en waarom.

Wat is SPI op Raspberry Pi?

Voordat we gaan duiken, laten we kort zien wat deze twee protocollen doen.

SPI (of seriële perifere interface) stelt een microcontroller zoals de Pi in staat om tegelijkertijd met meer dan 100 randapparatuur te communiceren. De microcontroller werkt als een "master" voor alle "slave" -componenten en kan met hoge snelheid communiceren. Dit diagram schetst een eenvoudige SPI-verbinding:

SPI en I2C op de Raspberry Pi
Beeldcredits: Cburnett / wikipedia.org

Als dit de eerste keer is dat je over SPI leest, kan het behoorlijk intimiderend lijken, maar blijf erbij! SCLK is de kloksnelheid die door de master is ingesteld en die de snelheid bepaalt waarmee informatie tussen de apparaten wordt gedeeld.

Bij elke cyclus (of "vinkje") van de klok zenden zowel meester als slaaf één bit informatie. Dit is waar de pins voor MOSI (Master Out Slave In) en MISO (Master In Slave Out) voor zijn.

De SS- of Slave Select-pin (met CE0 of CE1 op de Pi) wordt gebruikt om een ​​slave-apparaat te laten communiceren met de master - of niet - op een gegeven moment. In de meeste gevallen heeft elk slave-apparaat een eigen SS-pin nodig, maar het kan de SCLK-, MOSI- en MISO-pinnen delen.

Sommige apparaten kunnen "doorgelust" worden om een ​​SS-pin te delen, waarbij de totale pinnen tot vier worden gehouden, plus twee voor stroom en aarde. SPI staat bekend als ongelooflijk snel en wordt veel gebruikt in schuifregisters of ADC's (Analoog naar Digitaal converters) om gegevens tussen apparaten door te geven.

Augmented Startups YouTube-kanaal heeft een eenvoudig te volgen primer voor SPI die het protocol verder uitlegt:

Hoe SPI op Raspberry Pi in te schakelen

Om SPI op uw Raspberry Pi in te schakelen, opent u raspi-config vanaf de terminal door het volgende in te voeren:

sudo raspi-config 

Navigeer naar interface-opties en selecteer in het volgende menu P4 SPI Automatisch laden van SPI-kernelmodule inschakelen / uitschakelen . Selecteer Ja bij de prompt van het venster. SPI is nu ingeschakeld!

SPI en I2C op de Raspberry Pi

U kunt ook SPI inschakelen vanuit het bestand /boot/config.txt . Open een terminalvenster en voer het volgende in:

 sudo nano /boot/config.txt 

Zoek naar een regel met # dtparam = spi = aan en verwijder het # -symbool. Welke manier u ook SPI inschakelt, herstart uw Pi en SPI worden ingeschakeld.

Wat kunt u doen met SPI op Raspberry Pi?

Hoewel er honderden verschillende projecten zijn die gebruikmaken van veel verschillende SPI-randapparatuur, is een goed startersproject het programmeren van uw eigen RFID-lezer.

We gebruikten de MFRC-522-lezer in onze DIY Smart Lock met Arduino en RFID-zelfstudie DIY Smart Lock met Arduino en RFID DIY Smart Lock met Arduino en RFID Hier is hoe een eenvoudig op RFID gebaseerd slim slot te bouwen met een Arduino als de backbone en een paar goedkope componenten. Lees verder . Voor een Raspberry Pi-gearomatiseerde introductie tot RFID, bekijk piddlerintheroot's grondige Instructable.

Dit soort setup is niet alleen voor hobby-elektronica. In onze verzameling van de beste Raspberry Pi-projecten De 13 beste Raspberry Pi-projecten van 2017 De 13 beste Raspberry Pi-projecten van 2017 U zult versteld staan ​​van deze indrukwekkend creatieve projecten van Raspberry Pi. Meer lezen, we hadden een volledig MES-systeem dat werkt met Raspberry Pi en RFID, als onderdeel van een grootschalige fabrieksoperatie in Europa.

Wat is I2C op Raspberry Pi?

I2C is een communicatieprotocol gemaakt door Phillips Electronics, dat een golf van gebruik heeft gezien in op microcontrollers gebaseerde hobbyprojecten. De reden hiervoor is duidelijk - het gebruikt slechts twee draden in plaats van SPI's minimum vier. Het wordt ook goed ondersteund door zelfgemaakte bibliotheken. Er zijn veel componenten ontworpen voor gebruik met I2C op Raspberry Pi. Hoewel het langzamer is dan SPI, werkt het nog steeds snel genoeg voor de meeste dagelijkse toepassingen.

Net als bij SPI heeft het protocol een master- apparaat, zoals de Pi, en een slave- apparaat, zoals een scherm, schuifregister of motorstuurprogramma.

De eerste verbinding tussen de apparaten is de SCL (Serial Clock) die door de master is ingesteld om de overdracht van gegevens te synchroniseren. De tweede regel is de SDA (Serial Data) die de gegevens heen en weer overbrengt tussen alle apparaten op de I2C-bus.

Het masterapparaat begint de communicatie met een startbit en een zeven bits hexadecimaal adres . Dit moet overeenkomen met het slave-apparaat zodat ze kunnen communiceren. Dit is hoe zoveel apparaten kunnen worden gebruikt met slechts twee draden.

Het masterapparaat geeft vervolgens aan of het de slave wil lezen of schrijven ( R / W ), voordat een bevestiging of ACK terug wordt ontvangen.

Een eenvoudig te volgen en diepgaande blik op I2C wordt nog een keer gegeven door YouTuber Augmented Startups:

Hoe I2C op Raspberry Pi in te schakelen

I2C is ook ingeschakeld op de Pi via het raspi-config- menu. Open de terminal en voer het volgende in:

 sudo raspi-config 

Gebruik de pijltjestoetsen om interface-opties te selecteren, gevolgd door P5 I2C Activeren / deactiveren automatisch laden van de I2C-kernelmodule . Bevestig dat je het protocol wilt inschakelen en je zou een bevestigingsscherm moeten zien.

SPI en I2C op de Raspberry Pi

Net als bij SPI kunt u I2C ook inschakelen door uw config.txt-bestand aan te passen. Open een terminal en voer het volgende in:

 sudo nano /boot/config.txt 

Wijzig # dtparam = i2c_arm = aan en verwijder het # -symbool.

SPI en I2C op de Raspberry Pi

Start je Pi opnieuw op en I2C is klaar voor gebruik!

Wat kun je doen met I2C op Raspberry Pi?

I2C is geweldig voor elk project dat een groot aantal uitgangen vereist. Een typisch gebruik is voor LCD-schermen, die tot 16 pins nodig hebben om te gebruiken. I2C brengt dit terug naar slechts twee voor communicatie en twee voor kracht en aarde.

Veel LCD-schermen worden geleverd met een I2C "rugzak" bevestigd, waardoor ze veel eenvoudiger zijn in te stellen en de rest van je Pi-pinnen vrij te maken voor andere sensoren en randapparatuur.

TheRaspberryPiGuy heeft een gedetailleerde YouTube-tutorial over het instellen en gebruiken van een LCD-scherm met I2C op Raspberry Pi

SPI en I2C gebruiken bespaart spelden!

SPI en I2C op Raspberry Pi zijn zeker niet voor complete beginners voor hobbyelektronica, maar ze zijn ook niets om bang voor te zijn.

Voordat je gaat duiken, is het een goed idee om onze beginnershandleiding voor Raspberry Pi te volgen om de basis te leren.

Het werken met enkele voorbeeldprojecten is de beste manier om te leren en we zien ernaar uit om te zien wat je bedacht! Wie weet wat rare en prachtige creaties van Raspberry Pi 10 Weirdest Raspberry Pi-projecten 10 Weirdest Raspberry Pi-projecten Er is een gekke wetenschapper in ieder van ons, en de Raspberry Pi laat je innerlijke loon naar buiten komen en spelen. Soms worden dingen raar. Echt raar. Meer lezen dat je gaat maken?

In this article