- Hardwarevereisten
- XBee-modules configureren met XCTU
- Schakelschema voor ontvangerdeel
- Stel Raspberry Pi in voor seriële communicatie
- Raspberry Pi programmeren voor XBee-communicatie
- Testen van de draadloze XBee-communicatie met Raspberry Pi
In de vorige tutorial hebben we de XBee-module gekoppeld aan Arduino Uno en ze draadloos laten communiceren met behulp van de XBee-module. Nu gaan we de XBee-module koppelen aan de Raspberry Pi, die als ontvanger zal fungeren en deze draadloos laten communiceren met een andere XBee-module (XBee Explorer-bord) die serieel is verbonden met de laptop.
Hardwarevereisten
- 1 x Raspberry Pi met Raspbian erin geïnstalleerd
- 2 x XBee Pro S2C-modules (elk ander model kan worden gebruikt)
- 1 x XBee Explorer-bord (optioneel)
- 1 x Xbee Breakout-bord (optioneel)
- USB-kabels
- Leds
Aangenomen wordt dat uw Raspberry Pi al is geflitst met een besturingssysteem. Als dit niet het geval is, volgt u de handleiding Aan de slag met Raspberry Pi voordat u verder gaat. Hier gebruiken we Rasbian Jessie geïnstalleerde Raspberry Pi 3.
Hier wordt een externe monitor met behulp van een HDMI-kabel gebruikt als display om verbinding te maken met Raspberry Pi. Als u geen monitor heeft, kunt u SSH-client (Putty) of VNC-server gebruiken om verbinding te maken met Raspberry pi met behulp van een laptop of computer. Lees hier meer over het headless instellen van Raspberry Pi.
XBee-modules configureren met XCTU
Zoals we hebben geleerd in de vorige tutorial van ZigBee Introductie dat de XBee-module kan fungeren als een coördinator, router of een eindapparaat, maar het moet worden geconfigureerd om in de gewenste modus te werken. Dus voordat we de XBee-modules met Raspberry Pi gebruiken, moeten we deze modules configureren met XCTU-software.
Om de XBee-module met de laptop te verbinden, wordt een USB naar serieel converter of een speciaal ontworpen explorer board gebruikt. Sluit gewoon de XBee-module aan op het Explorer-bord en sluit hem met een USB-kabel aan op de laptop.
Als je geen converter of explorer board hebt, dan kan een Arduino board worden gebruikt als een USB naar serieel apparaat dat gemakkelijk kan communiceren met de XBee en laptop. Upload gewoon een lege schets in het Arduino-bord en nu kan het zich gedragen als een USB naar serieel converter.
XBee-modules configureren:
Hier in deze tutorial wordt een Explorer-bord gebruikt om de XBee-modules te configureren.
Download de XCTU-software via deze link en installeer deze. Na het downloaden en installeren van de XCTU-software, opent u deze en controleert u of uw XBee-module correct is aangesloten. Controleer de COM-poort van het Arduino-bord in apparaatbeheer.
1. Klik nu op de zoekknop. Dit toont u alle RF-apparaten die op uw laptop zijn aangesloten. In ons geval wordt er slechts één XBee-module weergegeven.
2. Selecteer de seriële poort van het Explorer-bord / Arduino-bord en klik op Volgende.
3. Stel in het volgende venster de USB-poortparameters in zoals hieronder weergegeven en klik op Voltooien.
4. Selecteer het gevonden apparaat en klik op Geselecteerd apparaat toevoegen . Met dit proces wordt uw XBee-module toegevoegd aan het XCTU-dashboard.
5. Nu kunt u uw XBee-module in dit venster configureren. U kunt AT-opdrachten gebruiken of de gegevens handmatig plaatsen. Zoals u kunt zien, wordt er R weergegeven op het linkerpaneel, wat betekent dat XBee zich in de routermodus bevindt. We moeten het coördinator maken voor het zendergedeelte.
Werk eerst de firmware bij door op Update firmware te klikken.
6. Kies de productfamilie van uw apparaat die beschikbaar is op de achterkant van uw XBee-module. Selecteer functieset en firmwareversie zoals hieronder aangegeven en klik op Update.
7. Nu moet u ID-, MY- en DL-gegevens opgeven om verbinding te maken met andere XBee. ID blijft hetzelfde voor beide modules. Alleen MY- en DL-gegevensuitwisseling, dwz MY voor de ontvanger XBee wordt DL van de zender XBee (coördinator) en DL voor de ontvanger XBee wordt MY van de zender XBee. Maak CE als coördinator en druk vervolgens op de knop Schrijven. Zoals hieronder getoond.
ATDL |
OP MIJN |
||
XBee 1 coördinator |
|||
XBee 2-eindapparaat |
8. Nadat u de bovenstaande gegevens naar het zendergedeelte hebt geschreven, steekt u deze uit het verkenningsbord en sluit u de tweede XBee-module erop aan. Herhaal hetzelfde proces als hierboven, alleen wijzigingen zijn de DL, MY en CE. Omdat we de tweede XBee als eindapparaat zullen maken, selecteert u in het vervolgkeuzemenu CE het eindapparaat en drukt u op de knop Schrijven.
9. Nu zijn onze XBee-modules klaar om te communiceren met de Raspberry Pi. We gaan de zender XBee verbinden met de laptop en ontvanger XBee met de Raspberry Pi. Geef vervolgens met de laptop opdrachten aan het ontvangendeel. laptop.
Schakelschema voor ontvangerdeel
Verbindingen voor de koppeling van de ZigBee-module met Raspberry PI worden weergegeven in het schakelschema.
Verbindingen:
- Tx (pin2) van XBee -> Tx van pin Raspberry Pi
- Rx (pin3) van XBee -> Rx van pin Raspberry Pi
- GND (pin10) van XBee -> GND van pin Raspberry Pi
- Vcc (Pin1) van XBee -> 3.3v van pin Raspberry Pi
- Led is verbonden met GPIO 23
Stel Raspberry Pi in voor seriële communicatie
Nu gaan we de Raspberry Pi instellen voor de seriële communicatie. Standaard is de hardware seriële poort van Pi uitgeschakeld. We moeten het dus inschakelen voordat we de verbinding starten.
1. Voer in de terminal het commando raspi-config uit .
2. Ga naar optie 5 Interfacing-opties en druk op enter. Nu, selecteer de Serial P6 -optie en in staat te stellen en vervolgens op te slaan.
Verlaat de terminal en je bent helemaal klaar om de verbinding tussen Raspberry Pi en XBee te maken. GPIO14 en 15 zullen respectievelijk fungeren als Tx en Rx en deze zijn beschikbaar op / dev / ttyS0-poort van Raspberry Pi.
Nu zullen we een python-script schrijven naar ON the LED wanneer we 'a' ontvangen van de zenderzijde XBee.
Raspberry Pi programmeren voor XBee-communicatie
Het volledige python-programma voor het koppelen van XBee met Raspberry Pi wordt aan het einde gegeven.
Eerst moeten we de tijd-, serie- en RPi.GPIO-bibliotheken importeren met de importfunctie.
import tijd import seriële import RPi.GPIO als GPIO…
Schrijf nu de eigenschappen van de seriële verbinding, definieer poort, baudrate en pariteiten zoals hieronder.
ser = serial.Serial ( port = '/ dev / ttyS0', baudrate = 9600, parity = serial.PARITY_NONE, stopbits = serial.STOPBITS_ONE, bytesize = serieel.EIGHTBITS, time-out = 1 )
Schrijf alle verzendende en ontvangende elementen in de while- lus.
terwijl 1:
U kunt de ser.write- functie gebruiken om de berichten naar de zenderzijde te sturen. Verwijder commentaar op de onderstaande regels om tellingen te verzenden.
# ser.write (str.encode ('Schrijfteller:% d \ n'% (teller))) # time.sleep (1) #counter + = 1
Voor het ontvangen van de berichten moeten we de functie ser.readline () gebruiken . Sla het inkomende bericht op in een variabele en controleer de toestand. Als het binnenkomende bericht 'a' is, zet dan de LED 3 seconden AAN en vervolgens UIT.
x = ser.readline (). strip () print (x) if x == 'a': GPIO.output (23, GPIO.HIGH) time.sleep (3)….
Volledige Python-code met een demonstratievideo wordt aan het einde van de tutorial gegeven. Plak de code in een teksteditor van de Pi en sla deze op. Voer het script in de terminal uit met sudo python script_name.py OF je kunt Python IDE en Shell gebruiken om het script uit te voeren.
Testen van de draadloze XBee-communicatie met Raspberry Pi
Nu zijn we klaar om onze XBee-zender en -ontvanger te testen. Om het zendergedeelte een commando te geven, gebruiken we de console-terminal van XCTU. Klik op het consolepictogram naast de instellingenoptie. Klik vervolgens op de knop Openen om de XBee met de laptop te verbinden.
Voer 'a' in het consolelogboek in. U zult zien dat de LED 3 seconden AAN gaat en daarna UIT gaat.
Op deze manier kun je ook de zender XBee op het Arduino board aansluiten zoals beschreven in de vorige tutorial, en de Raspberry Pi en Arduino met elkaar laten communiceren.