Dans cette série, nous obtiendrons les données d'environnement de SensorTag de Raspberry Pi 3. Après cela, j'écrirai le code de Python pour l'analyse du vent avec Spark Streaming via Kafka. Il existe de nombreux exemples sur la configuration de Raspberry Pi 3. Ici, nous allons nous préparer à acquérir facilement les données d'environnement de SensorTag.
Le Raspberry Pi 3 dispose du Wi-Fi et du Bluetooth intégrés. Le dongle n'est plus nécessaire et moins d'articles sont nécessaires. Dans cet exemple, un ancien MacBook Pro (macOS Sierra 10.12.6) avec un terminal USB-A est utilisé comme terminal de développement. Préparez un périphérique qui se connecte à Raspberry Pi 3 via Ethernet.
Le SensorTag Texas Instruments peut être connecté au Raspberry Pi 3 via Bluetooth pour obtenir facilement des données environnementales telles que la température et l'humidité.
Suivez la procédure officielle Installation des images du système d'exploitation sur Mac OS. Vérifiez le nom de l'appareil de la carte SD et démontez-la. Dans cet exemple, il s'agit de / dev / disk2.
$ diskutil list
...
/dev/disk2 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *15.6 GB disk2
1: Windows_FAT_32 NO NAME 15.6 GB disk2s1
$ diskutil unmountDisk /dev/disk2
Téléchargez Raspbian Jessie Lite (https://www.raspberrypi.org/downloads/raspbian/) et gravez-le sur votre carte SD. N'oubliez pas d'activer SSH également.
$ cd ~/Downloads
$ wget http://director.downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2017-07-05/2017-07-05-raspbian-jessie-lite.zip
$ unzip 2017-07-05-raspbian-jessie-lite.zip
$ sudo dd bs=1m if=2017-07-05-raspbian-jessie-lite.img of=/dev/rdisk2
$ touch /Volumes/boot/ssh
$ diskutil unmountDisk /dev/disk2
macOS peut être facilement SSH en connectant le Raspberry Pi 3 avec un câble Ethernet. Par défaut, les utilisateurs suivants sont définis.
$ ssh [email protected]
Copiez la clé publique macOS dans `~ / .ssh / allowed_keys 'sur Raspberry Pi 3.
$ mkdir -p -m 700 ~/.ssh
$ cat << EOF > ~/.ssh/authorized_keys
ssh-rsa AAAA...
EOF
$ chmod 600 ~/.ssh/authorized_keys
Connectez-vous à nouveau.
$ exit
Configurez le point d'accès LAN sans fil (ESSID) et redémarrez le réseau. Vérifiez votre connexion Internet à partir de «ping».
$ sudo sh -c 'wpa_passphrase [ESSID] [mot de passe] >> /etc/wpa_supplicant/wpa_supplicant.conf'
$ sudo ifdown wlan0
$ sudo ifup wlan0
$ ping -c 1 www.yahoo.co.jp
raspi-config
Changez le mot de passe et le fuseau horaire avec raspi-config
.
$ sudo raspi-config
apt-get
Passez à un site miroir japonais et mettez à jour le package. Installez vim pour modifier le fichier.
$ sudo sed -i".bak" -e "s/mirrordirector.raspbian.org/ftp.jaist.ac.jp/g" /etc/apt/sources.list
$ sudo apt-get update && sudo apt-get dist-upgrade -y
$ sudo apt-get install vim -y
Allumez le SensorTag et numérisez à partir du Raspberry Pi 3. Vérifiez l'adresse BD.
$ sudo hcitool lescan
...
B0:B4:48:BE:5E:00 CC2650 SensorTag
...
gatttool
Connectez-vous au SensorTag de l'adresse BD confirmée dans le mode interactif de la commande gatttool
.
$ gatttool -b B0:B4:48:BE:5E:00 --interactive
[B0:B4:48:BE:5E:00][LE]> connect
Attempting to connect to B0:B4:48:BE:5E:00
Connection successful
[B0:B4:48:BE:5E:00][LE]>
Obtenez la valeur du capteur en vous reportant à Obtenir la valeur du tag de capteur TI (CC2650) avec Raspberry Pi Je vais.
[B0:B4:48:BE:5E:00][LE]> char-write-cmd 0x24 01
[B0:B4:48:BE:5E:00][LE]> char-read-hnd 0x21
Characteristic value/descriptor: 94 0b f0 0d
Vous obtiendrez une valeur de 4 octets. Selon le Guide de l'utilisateur SensorTag, les données suivantes seront affichées dans l'ordre.
ObjLSB ObjMSB AmbLSB AmbMSB
Convertit 4 octets obtenus à partir de Python REPL en degrés Celsius et génère la température ambiante et la température de l'objet.
>>> raw_data = '94 0b f0 0d'
>>> rval = raw_data.split()
>>> obj_temp = int(rval[1] + rval[0], 16) / 4
>>> amb_temp = int(rval[3] + rval[2], 16) / 4
>>> obj_temp_celcius = obj_temp * 0.03125
>>> amb_temp_celcius = amb_temp * 0.03125
>>> print("Température ambiante: {:.2f} ℃".format(amb_temp_celcius))
Température ambiante: 27.88 ℃
>>> print("Température de l'objet: {:.2f} ℃".format(obj_temp_celcius))
Température de l'objet: 23.16 ℃
Installez bluepy pour faire fonctionner les appareils Bluetooth LE depuis Python.
$ sudo apt-get install python-pip libglib2.0-dev -y
$ sudo pip install bluepy
Vous pourrez utiliser la commande sensortag
. Exécutez avec l'indicateur -T
et l'adresse BD comme argument.
$ sensortag -T B0:B4:48:BE:5E:00
Si vous spécifiez l'indicateur -T
, vous pouvez obtenir la température ambiante et la température de l'objet dans cet ordre.
Connecting to B0:B4:48:BE:5E:00
('Temp: ', (28.34375, 24.25))
('Temp: ', (28.375, 23.28125))
...
SensorTag
Écrivez un script Python pour obtenir l'ambiance, l'objet et l'humidité.
~/python_apps/temp.py
# -*- coding: utf-8 -*-
from bluepy.sensortag import SensorTag
import sys
import time
def main():
argvs = sys.argv
argc = len(argvs)
if (argc != 2):
print 'Usage: # python {0} bd_address'.format(argvs[0])
quit()
host = argvs[1]
print('Connecting to ' + host)
timeout = 5.0
count = 3
tag = SensorTag(host)
tag.IRtemperature.enable()
tag.humidity.enable()
time.sleep(1.0)
counter = 0
while True:
counter += 1
tAmb, tObj = tag.IRtemperature.read()
print("Température:Alentours: {0:.2f},objet: {1:.2f}".format(tAmb, tObj) )
humidy, RH = tag.humidity.read()
print("Humidité: humidy: {0:.2f}, RH: {1:.2f}".format(humidy, RH))
if counter >= count:
break
tag.waitForNotifications(timeout)
tag.disconnect()
del tag
if __name__ == '__main__':
main()
Exécutez le script avec l'adresse BD de SensorTag comme argument.
$ python temp.py B0:B4:48:BE:5E:00
Le résultat de la mesure 3 fois à des intervalles de 5 secondes est émis. Le climatiseur fonctionne, donc c'est confortable.
Connecting to B0:B4:48:BE:5E:00
Température:Alentours: 25.03,objet: 19.94
Humidité: humidy: 25.25, RH: 69.47
Température:Alentours: 25.06,objet: 20.69
Humidité: humidy: 25.25, RH: 69.37
Température:Alentours: 25.06,objet: 20.69
Humidité: humidy: 25.25, RH: 69.37
Recommended Posts