Sarjaperifeerinen rajapinta (SPI) on synkroninen sarjaviestintäprotokolla, jota käytetään laajasti lyhyen matkan viestinnässä, pääasiassa sulautetuissa järjestelmissä. Yhdistämällä Arduinon monipuolisuus Raspberry Pi: n laskennalliseen voimaan SPI: n kautta voi avata joukon projektimahdollisuuksia. Tässä blogiviestissä tutkimme, kuinka SPI -viestintä Arduinon ja Raspberry Pi: n välillä voidaan asentaa ja käyttää.
SPI: n ymmärtäminen
SPI on koko duplex-viestintäprotokolla, joka toimii master-orjatilassa. Se käyttää neljä päälinjaa:
- Mosi (Master Out Slave in): Siirtää tietoja päälliköstä orjalle.
- MISO (Mestari Slave Out): Siirtää tietoja orjasta mestariin.
- SCLK (sarjakello): Synkronoi päällikön luoman tiedonsiirron.
- SS/CS (Slave Select/Chip Select): Valitsee orjalaitteen.
SPI on suosittu sen yksinkertaisuudesta ja nopeudesta, joten se on ihanteellinen sovelluksille, jotka vaativat nopean tiedonvaihtoa laitteiden välillä.
Miksi käyttää SPI: tä Arduinon ja Raspberry Pi: n kanssa?
Arduinon yhdistäminen Raspberry PI: n kanssa hyödyntää molempien alustojen vahvuuksia. Arduino on erinomainen reaaliaikaisessa, matalan tason laitteistohallinnassa, kun taas Raspberry PI tarjoaa korkean tason käsittelyominaisuuksia, verkkoyhteyksiä ja rikkaan käyttöjärjestelmäympäristön. SPI: n käyttö antaa näiden kahden laitteen kommunikoida tehokkaasti, mahdollistaen monimutkaiset projektit, kuten kodin automaatiojärjestelmät, robotiikka ja tiedon kirjaussovellukset.
Laitteiden asettaminen
SPI -viestinnän luomiseksi Arduinon ja Raspberry PI: n välillä tarvitset seuraavat komponentit:
- Arduino UNO (tai mikä tahansa yhteensopiva Arduino Board)
- Raspberry Pi (mikä tahansa malli, jolla on GPIO -nastat)
- Hyppyjohdot
- Leipälevy (valinnainen)
Arduino ja Raspberry Pi SPI: lle
Huolellinen johdotus on ratkaisevan tärkeää asianmukaisen viestinnän varmistamiseksi. Näin yhdistää Arduino ja Raspberry Pi SPI: n avulla:
Raspberry Pi GPIO -tappi | Arduino -nasta | Kuvaus |
---|---|---|
GPIO10 (MOSI) | Tappi 11 (mosi) | Hallita orja |
GPIO9 (MISO) | Tappi 12 (MISO) | Mestarina |
GPIO11 (SCLK) | Tappi 13 (SCLK) | Sarjakello |
GPIO8 (CE0) | Tappi 10 (SS) | Slave Select |
Hölynpöly | Hölynpöly | Yhteinen kanta |
3,3 V | 5V | Virtalähde (käytä tarvittaessa tasonsiirtoa) |
Huomaa: Raspberry PI toimii 3,3 V: n logiikkatasoilla, kun taas Arduino UNO käyttää 5 V. On suositeltavaa käyttää logiikkatason muunninta, jotta vadelma PI: n mahdolliset vauriot estävät.
Arduinon määrittäminen
Arduino toimii SPI -orjana. Alla on näyte Arduino -luonnos sen asettamiseksi:
Selitys:
- Spi.attachInterrupt (); Mahdollistaa SPI -keskeytyksen, jolloin Arduino pystyy käsittelemään saapuvia tietoja.
- Keskeytyspalvelun rutiinissa
ISR(SPI_STC_vect)
, Vastaanotetut tiedot tallennetaan käsittelyyn. - Se
loop()
Toiminto tarkistaa vastaanotetut tiedot ja tulostaa sen sarjamonitorille.
Raspberry Pi -sovelluksen määrittäminen
Raspberry Pi toimii SPI -päälaitteena. Käytämme pythonia spidev
Kirjasto käsittelee SPI -viestintää. Varmista ensin, että SPI on käytössä:
- Avaa Raspberry Pi -määritystyökalu:
- Siirtyä jhk Käyttöliittymävaihtoehdot > SPI > Ottaa käyttöön
- Käynnistä Raspberry Pi uudelleen, jos sitä pyydetään.
Asenna spidev
Kirjasto, jos sitä ei ole vielä asennettu:
Tässä on näyte Python -käsikirjoitus Raspberry Pi:
Selitys:
- Spi.Open (0, 0) Avaa SPI -väylä 0, laite 0 (CE0).
- Spi.xfer2 ([data]) lähettää datatavut ja vastaanottaa samanaikaisesti tietoja orjalta.
- Käsikirjoitus lähettää tavun (esim. 42) joka sekunti ja tulostaa vastauksen Arduinosta.
Viestintä
Kun olet asettanut sekä Arduino että Raspberry Pi:
- Lataa Arduino -luonnos Arduino -levylle.
- Kytke Arduino Raspberry Pi: hen SPI -johdotuksen kautta.
- Suorita python -käsikirjoitus Raspberry Pi:
- Avaa Arduino -sarjamonitori katsomaan vastaanotettuja tietoja:
Sinun pitäisi nähdä Arduinon vastaanottava Raspberry PI: n lähettämät tiedot ja näyttää sen sarjamonitorissa. Samoin Raspberry Pi näyttää lähettämänsä tiedot ja sen vastaanottaman vastauksen.
Vianetsintävinkit
- Tarkista johdotus: Varmista, että kaikki Arduinon ja Raspberry Pi: n väliset yhteydet ovat turvallisia ja kartoitettuja oikein.
- Jännitetasot: Käytä logiikkatason muunninta vastaamaan Raspberry Pi: n 3,3 V: n Arduinon 5 V: n kanssa.
-
Ota SPI käyttöön: Varmista, että SPI on käytössä Raspberry Pi: ssä
raspi-config
. -
Käyttöoikeudet: Varmista, että käyttäjälläsi on tarvittavat käyttöoikeudet käyttää SPI -laitteita. Saatat joutua suorittamaan python -komentosarjan kanssa
sudo
. - Baud -arvo: Varmista, että sarjamonitori ja Arduino -luonnos käyttävät samaa baudia.
- SPI -asetukset: Varmista, että sekä isäntä että orja on määritetty samalla SPI -tilalla ja nopeudella.
Johtopäätös
SPI -viestintä Arduinon ja Raspberry PI: n välillä antaa sinun hyödyntää molempien alustojen voimakkuutta tehokkaasti. Rakennatko monimutkaista robottijärjestelmää, anturiverkon kehittäminen tai tiedon kirjaamisen kokeileminen, SPI: n ymmärtäminen on korvaamatonta. Seuraamalla tässä oppaassa hahmoteltuja vaiheita voit asettaa luotettavan SPI -viestinnän ja aloittaa jännittäviä sulautettuja projekteja, jotka hyödyntävät sekä Arduinon että Raspberry Pi: n voimaa.Hyvää tinking!