- Хардуерни изисквания
- Конфигуриране на XBee модули с помощта на XCTU
- Електрическа схема за част на приемника
- Настройте Raspberry Pi за серийна комуникация
- Програмиране на Raspberry Pi за XBee комуникация
- Тестване на безжичната XBee комуникация с помощта на Raspberry Pi
В предишния урок ние свързахме модула XBee с Arduino Uno и ги накарахме да комуникират безжично с помощта на модула XBee. Сега ще свържем модула XBee с Raspberry Pi, който ще действа като приемник и ще го накара да комуникира безжично с друг модул XBee (платка XBee explorer), който е последователно свързан с лаптопа.
Хардуерни изисквания
- 1 x Raspberry Pi с инсталиран Raspbian в него
- 2 x XBee Pro S2C модула (може да се използва всеки друг модел)
- 1 x XBee изследователска платка (по избор)
- 1 x Xbee Breakout дъска (по избор)
- USB кабели
- Светодиоди
Предполага се, че вашият Raspberry Pi вече е флаширан с операционна система. Ако не, следвайте урока Първи стъпки с Raspberry Pi, преди да продължите. Тук използваме инсталираната от Rasbian Jessie Raspberry Pi 3.
Тук външният монитор с помощта на HDMI кабел се използва като дисплей за свързване с Raspberry Pi. Ако нямате монитор, можете да използвате SSH клиент (Putty) или VNC сървър, за да се свържете с Raspberry pi с помощта на лаптоп или компютър. Научете повече за настройването на Raspberry Pi без глава тук.
Конфигуриране на XBee модули с помощта на XCTU
Както разбрахме в предишния урок на ZigBee Introduction, че модулът XBee може да действа като координатор, рутер или крайно устройство, но трябва да бъде конфигуриран да работи в желания режим. И така, преди да използваме модулите XBee с Raspberry Pi, трябва да конфигурираме тези модули с помощта на софтуера XCTU.
За свързване на XBee модул с лаптопа се използва USB към сериен конвертор или специално проектирана платка за изследовател. Просто свържете модула XBee към платката на Explorer и го включете с лаптопа с помощта на USB кабел.
Ако нямате конвертор или изследователска платка, тогава платка Arduino може да се използва като USB към серийно устройство, което лесно може да комуникира с XBee и лаптоп. Просто качете празна скица в дъската на Arduino и сега тя може да се държи като USB към сериен конвертор.
Конфигуриране на модули XBee:
Тук в този урок се използва дъска на Explorer за конфигуриране на модулите XBee.
Изтеглете софтуера XCTU от тази връзка и го инсталирайте. След като изтеглите и инсталирате софтуера XCTU, отворете го и се уверете, че вашият XBee модул е правилно свързан. Проверете COM порта на платката Arduino в диспечера на устройствата.
1. Сега кликнете върху бутона за търсене. Това ще ви покаже всички RF устройства, свързани с вашия лаптоп. В нашия случай той ще покаже само един XBee модул.
2. Изберете серийния порт на платката Explorer / Arduino и щракнете върху Напред.
3. В следващия прозорец задайте параметрите на USB порта, както е показано по-долу, и кликнете върху Finish.
4. Изберете откритото устройство и кликнете върху Добавяне на избрано устройство . Този процес ще добави вашия модул XBee към таблото за управление на XCTU.
5. Сега можете да конфигурирате вашия XBee модул в този прозорец. Можете да използвате AT команди или да поставите данните ръчно. Както можете да видите, в левия панел има R, което означава, че XBee е в режим на рутер. Трябва да го направим координатор за предавателната част.
Първо актуализирайте фърмуера, като кликнете върху Актуализиране на фърмуера.
6. Изберете семейството продукти на вашето устройство, което се предлага на гърба на вашия модул XBee. Изберете набора от функции и версията на фърмуера, както е подчертано по-долу, и кликнете върху Актуализиране.
7. Сега трябва да дадете ID, MY и DL данни, за да осъществите връзка с други XBee. Идентификаторът остава същият и за двата модула. Само обменът на данни MY и DL, т.е. MY за приемника XBee, става DL на предавателя XBee (координатор), а DL за приемника XBee става MY на предавателя XBee. Направете CE като координатор и след това натиснете бутона Write. Както е показано по-долу.
ATDL |
В МОЯ |
||
Координатор на XBee 1 |
|||
XBee 2 крайно устройство |
8. След като запишете горните данни към предавателната част, извадете ги от платката на изследователя и включете втория модул XBee в нея. Повторете същия процес, както по-горе, само промените са DL, MY и CE. Тъй като ще направим втория XBee като крайно устройство, така че в падащото меню на CE изберете крайното устройство и натиснете бутона Write.
9. Сега нашите модули XBee са готови за интерфейс с Raspberry Pi. Ще свържем предавателя XBee с лаптопа и приемника XBee с Raspberry Pi. След това дайте команди на частта на приемника с помощта на лаптоп. лаптоп.
Електрическа схема за част на приемника
Връзките за свързване на ZigBee модул с Raspberry PI са показани на електрическата схема.
Връзки:
- Tx (pin2) на XBee -> Tx на pin Raspberry Pi
- Rx (pin3) на XBee -> Rx на pin Raspberry Pi
- Gnd (pin10) на XBee -> GND на pin Raspberry Pi
- Vcc (Pin1) на XBee -> 3.3v на pin Raspberry Pi
- Led е свързан с GPIO 23
Настройте Raspberry Pi за серийна комуникация
Сега ще настроим Raspberry Pi за серийна комуникация. По подразбиране хардуерният сериен порт на Pi е деактивиран. И така, трябва да го активираме, преди да стартираме връзката.
1. В терминала изпълнете командата raspi-config .
2. Отидете на опция 5 Опции за свързване и натиснете Enter. Сега изберете опцията P6 Serial и го активирайте и след това запазете.
Излезте от терминала и сте готови да установите връзка между Raspberry Pi и XBee. GPIO14 и 15 ще действат съответно като Tx и Rx и те са достъпни на / dev / ttyS0 порт на малинов пи.
Сега ще напишем python скрипт, за да включи светодиода, когато получим 'a' от страната на предавателя XBee.
Програмиране на Raspberry Pi за XBee комуникация
Пълната програма на python за свързване на XBee с Raspberry Pi е дадена в края.
Първо, трябва да импортираме библиотеките за време, сериал и RPi.GPIO, използвайки функцията за импортиране.
време за импортиране сериен импорт RPi.GPIO като GPIO…
Сега напишете свойствата на серийната връзка, дефинирайте порт, скорост на предаване и паритети, както по-долу.
ser = serial.Serial ( port = '/ dev / ttyS0', baudrate = 9600, parity = serial.PARITY_NONE, stopbits = serial.STOPBITS_ONE, bytesize = serial.EIGHTBITS, timeout = 1 )
Запишете всички изпращащи и получаващи елементи в цикъл while .
докато 1:
Можете да използвате функцията ser.write, за да изпращате съобщенията до страната на предавателя. Разкоментирайте долните редове, за да изпратите преброяване.
# ser.write (str.encode ('Запис на брояч:% d \ n'% (брояч))) # time.sleep (1) #counter + = 1
За получаване на съобщенията трябва да използваме функцията ser.readline () . Съхранявайте входящото съобщение в променлива и проверявайте състоянието. Ако входящото съобщение е „а“, включете светодиода за 3 секунди и след това изключете светодиода.
x = ser.readline (). strip () print (x), ако x == 'a': GPIO.output (23, GPIO.HIGH) time.sleep (3)….
Пълният код на Python с демонстрационно видео е даден в края на урока. Поставете кода във всеки текстов редактор на Pi и го запазете. Стартирайте скрипта в терминала, използвайки sudo python script_name.py ИЛИ можете да използвате Python IDE и Shell за изпълнение на скрипта.
Тестване на безжичната XBee комуникация с помощта на Raspberry Pi
Сега всички сме готови да тестваме нашия XBee предавател и приемник. За да дадем команда на предавателната част, ще използваме конзолния терминал на XCTU. Щракнете върху иконата на конзолата близо до опцията за настройки. След това кликнете върху бутона Open, за да свържете XBee към лаптопа.
Въведете „a“ в дневника на конзолата. Ще видите, че светодиодът ще се включи за 3 секунди и след това ще се изключи.
По този начин можете също да свържете предавателя XBee към платката Arduino, както е описано в предишния урок, и да накарате Raspberry Pi и Arduino да комуникират помежду си.