Bonjour, c'est @dz_ ceci et Ohira Kazumi de fan de chêne.
J'ai étudié comment gérer Bluetooth afin que le Raspberry Pi puisse utiliser Bluetooth pour récupérer des données à partir de capteurs.
Au début, j'ai commencé cet essai avec Raspberry Pi Zero, mais je n'ai pas pu installer les bibliothèques nécessaires en raison d'un manque de mémoire, j'ai donc décidé de continuer avec Raspberry Pi 2 Model B.
Le Raspberry Pi utilisé cette fois n'a pas de Bluetooth, utilisez donc un adaptateur USB.
Il semble que les produits PLANEX soient souvent utilisés. Quand je suis allé dans un certain magasin d'électricité, je n'avais pas de PLANEX, j'ai donc acheté le PRINCETON le moins cher (rires) .Il fonctionne sans aucun problème.
Utilisez SensorTag CC2650 équipé de 10 types de capteurs. Il peut être connecté via Bluetooth et semble facile à gérer car il existe des exemples de code et des informations utilisateur.
J'étudie toujours, mais il semble que le mécanisme suivant sera utilisé pour gérer Bluetooth sous Linux.
GATT (Generic Attribute Profile) --Un cadre normalisé pour le transfert et le stockage de données basé sur le protocole d'attribut (ATT)
Comme nous en apprendrons beaucoup sur les choses difficiles, reportez-vous d'abord à RPi Bluetooth LE --eLinux.org depuis la ligne de commande. J'ai essayé de vérifier l'opération.
#Vérifiez le périphérique USB connecté
$ lsusb
...
Bus 001 Device 011: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
...
#Vérifiez l'état de l'adaptateur Bluetooth
$ hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: XX:XX:XX:XX:XX:XX ACL MTU: 310:10 SCO MTU: 64:8
UP RUNNING
RX bytes:610 acl:0 sco:0 events:36 errors:0
TX bytes:942 acl:0 sco:0 commands:36 errors:0
#Si ci-dessus`DOWN`Est affiché, activez-le avec la commande suivante
$ sudo hciconfig hci0 up
#Analyser les appareils Bluetooth à proximité
$ sudo hcitool lescan
LE Scan ...
XX:XX:XX:XX:XX:XX (unknown)
XX:XX:XX:XX:XX:XX CC2650 SensorTag
...
Il y avait un affichage de SensorTag dans le résultat de l'analyse. Il semble que vous puissiez le reconnaître en toute sécurité.
Maintenant, essayons d'utiliser Bluetooth par programmation.
En ce qui concerne le langage, je vais essayer d'utiliser Python, qui est un langage majeur dans la zone Raspberry Pi, après l'avoir examiné. En tant que bibliothèque pour gérer Bluetooth, je présenterai pybluez
.
pybluez
Veuillez vous référer à ce qui suit pour l'installation elle-même. Puisque gattlib
est également nécessaire pour gérer les appareils compatibles BLE avec pybluez
, installez-le également.
#Installer les packages dépendants pour pyBluez
$ sudo apt-get install python-dev libbluetooth3-dev
#Installez pyBluez
$ sudo pip install pybluez
#Installer les packages dépendants de gattlib
$ sudo apt-get install libglib2.0 libboost-python-dev libboost-thread-dev
#Installer gattlib requis lors de l'utilisation de BLE
$ sudo pip install gattlib
Maintenant, recherchons SensorTag en python.
SensorTag est compatible BLE, vous pouvez donc numériser avec cet exemple de code.
En outre, pour obtenir les données, cet exemple de code sera utile.
Comme vous l'avez peut-être déjà remarqué, pybluez utilise en fait gattlib via pybluez lorsqu'il s'agit d'appareils compatibles BLE, donc la documentation de gattlib elle-même est également utile.
Dans le GATT, les données sont acquises et définies à l'aide d'une adresse (?) Appelée "handle". Le tableau GATT de SensorTag se trouve dans "Sensors and Services" de Disassemble | Simplelink Sensor Tag --TI Veuillez vous y référer tel qu'il est publié.
Vous pouvez maintenant obtenir vos données de capteur préférées! ??
(En fait, les données acquises doivent être converties en LSB, MSB, etc.)
C'est dommage que je ne puisse pas le faire fonctionner avec mon Raspberry Pi Zero préféré, mais maintenant je suis prêt à utiliser Bluetooth depuis mon Raspberry Pi 2!
Je continuerai d'avancer!
Ce qui suit concerne le dépannage.
pybluez
Python.h
n'est pas trouvéSi vous obtenez l'erreur erreur fatale: Python.h: aucun fichier ou répertoire de ce type
, vous devez installer python-dev
.
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno
-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-se
curity -fPIC -I./port3 -I/usr/include/python2.7 -c bluez/btmodule.c -o build/temp.linux-arm
v6l-2.7/bluez/btmodule.o
In file included from bluez/btmodule.c:20:0:
bluez/btmodule.h:4:20: fatal error: Python.h: No such file or directory
#include "Python.h"
^
compilation terminated.
error: command 'arm-linux-gnueabihf-gcc' failed with exit status 1
----------------------------------------
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-4nXTDu
/pybluez/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\
r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-fWWiRf-record/install-record.txt
--single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-
4nXTDu/pybluez/
$ sudo apt-get install python-dev
bluetooth / Bluetooth.h
n'est pas trouvéErreur fatale: bluetooth / bluetooth.h: aucun fichier ou répertoire comme ci-dessous Si vous obtenez l'erreur
, vous devez installer libbluetooth3-dev
.
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno
-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-se
curity -fPIC -I./port3 -I/usr/include/python2.7 -c bluez/btmodule.c -o build/temp.linux-arm
v6l-2.7/bluez/btmodule.o
In file included from bluez/btmodule.c:20:0:
bluez/btmodule.h:5:33: fatal error: bluetooth/bluetooth.h: No such file or directory
#include <bluetooth/bluetooth.h>
^
compilation terminated.
error: command 'arm-linux-gnueabihf-gcc' failed with exit status 1
----------------------------------------
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-OWwZct
/pybluez/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\
r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-_zZYsg-record/install-record.txt
--single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-
OWwZct/pybluez/
$ sudo apt-get install libbluetooth3-dev
gattlib
boost / python / list.php
n'est pas trouvéSi vous obtenez l'erreur erreur fatale: boost / python / list.hpp: aucun fichier ou répertoire de ce type
, vous devez installer libboost-python-dev
.
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno
-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-se
curity -fPIC -DVERSION="5.25" -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2
.0/include -Isrc/bluez -I/usr/include/python2.7 -c src/gattservices.cpp -o build/temp.linux
-armv6l-2.7/src/gattservices.o
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not
for C++
In file included from src/gattservices.cpp:12:0:
src/gattlib.h:11:33: fatal error: boost/python/list.hpp: No such file or directory
#include <boost/python/list.hpp>
^
compilation terminated.
error: command 'arm-linux-gnueabihf-gcc' failed with exit status 1
----------------------------------------
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-lIdNTN
/gattlib/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\
r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-h_pTpQ-record/install-record.txt
--single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-
lIdNTN/gattlib/
$ sudo apt-get install libboost-python-dev
Si vous obtenez l'erreur Aucun package'glib-2.0 'trouvé
, vous devez installer libglib2.0
, comme indiqué ci-dessous.
$ sudo pip install gattlib
Collecting gattlib
Downloading gattlib-0.20150805.tar.gz (1.7MB)
100% |████████████████████████████████| 1.7MB 86kB/s
Complete output from command python setup.py egg_info:
Package glib-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `glib-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'glib-2.0' found
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-ix7ocM/gattlib/setup.py", line 12, in <module>
"pkg-config --cflags glib-2.0".split()).decode('utf-8')
File "/usr/lib/python2.7/subprocess.py", line 573, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['pkg-config', '--cflags', 'glib-2.0']' returne
d non-zero exit status 1
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-ix7ocM/gattli
b/
$ sudo apt-get install libglib2.0
-lboost_thread
n'est pas trouvéSi vous obtenez l'erreur impossible de trouver -lboost_thread
, comme indiqué ci-dessous, vous devez installer libboost-thread-dev
.
c++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -
DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector-s
trong -Wformat -Werror=format-security -Wl,-z,relro -D_FORTIFY_SOURCE=2 -g -fstack-protecto
r-strong -Wformat -Werror=format-security build/temp.linux-armv7l-2.7/src/gattservices.o bu
ild/temp.linux-armv7l-2.7/src/beacon.o build/temp.linux-armv7l-2.7/src/bindings.o build/tem
p.linux-armv7l-2.7/src/gattlib.o build/temp.linux-armv7l-2.7/src/bluez/lib/uuid.o build/tem
p.linux-armv7l-2.7/src/bluez/attrib/gatt.o build/temp.linux-armv7l-2.7/src/bluez/attrib/gat
trib.o build/temp.linux-armv7l-2.7/src/bluez/attrib/utils.o build/temp.linux-armv7l-2.7/src
/bluez/attrib/att.o build/temp.linux-armv7l-2.7/src/bluez/src/shared/crypto.o build/temp.li
nux-armv7l-2.7/src/bluez/src/log.o build/temp.linux-armv7l-2.7/src/bluez/btio/btio.o -lglib
-2.0 -lboost_python -lboost_thread -lbluetooth -o build/lib.linux-armv7l-2.7/gattlib.so
/usr/bin/ld: cannot find -lboost_thread
collect2: error: ld returned 1 exit status
error: command 'c++' failed with exit status 1
$ sudo apt-get install libboost-thread-dev
Dans le cas de cette erreur, l'invite ne revient pas facilement, et si vous pensez qu'elle est revenue, cette erreur s'affiche.
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-s
trict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-secu
rity -fPIC -DVERSION="5.25" -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0
/include -Isrc/bluez -I/usr/include/python2.7 -c src/bindings.cpp -o build/temp.linux-armv6
l-2.7/src/bindings.o
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not f
or C++
arm-linux-gnueabihf-gcc: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.9/README.Bugs> for instructions.
error: command 'arm-linux-gnueabihf-gcc' failed with exit status 4
Cela semble être hors de mémoire. Le Raspberry Pi Zero que j'essayais ne me permettait plus d'installer gattlib, mais avec le Raspberry Pi 2 Model B, j'ai pu installer gattlib sans cette erreur.
Recommended Posts