――Il fait chaud cette année, mais à quelle température devriez-vous utiliser la glacière? ――Ce serait plus facile si vous mesurez l'indice d'inconfort et recevez une notification disant "utilisez la glacière car c'est dangereux!" ... --Un système qui peut sauver des vies en été au Japon, où il y a un risque de coup de chaleur même à l'intérieur ... Je le faisais si je connectais simplement le capteur à la tarte à la râpe et que je communiquais, alors pourquoi ne pas le faire?
―― Étant donné que cet article a été écrit sur la base d'une note de service faite par essais et erreurs, il peut y avoir des omissions dans la procédure ...
-Téléchargez et installez Raspberry Pi Imager --Démarrez et exécutez en spécifiant le système d'exploitation et la carte SD à écrire
ssh Le fichier vide est OK wpa_supplicant.conf
wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="SSID"
psk="Clé de cryptage"
}
Vous pouvez vous connecter depuis Win10 avec teraterm etc., mais comme la programmation a été essentiellement faite avec Linux Je me prépare à travailler en me connectant à Raspai depuis Linux (Ubuntu) avec ssh.
linux
ssh [email protected]
# pass:raspberry
raspberrypi
#création d'utilisateur sudo
sudo adduser kabu0404
sudo usermod -aG sudo kabu0404
su kabu0404
#Diverses mises à jour
sudo apt update
sudo apt upgrade
#Fuseau horaire/Paramètres de localisation
sudo timedatectl set-timezone Asia/Tokyo
sudo localectl set-locale ja_JP.UTF-8
#Enfin sudo raspi-Peut-être que j'ai dérangé la configuration
linux
#Ssh dans le passé-keygen -Depuis que je suis trsa, envoyez la clé publique existante
cd ~/.ssh
scp ./id_rsa.pub [email protected]:~/.ssh/
raspberrypi
cd ~
chmod 700 .ssh
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
rm -fv ~/.ssh/id_rsa.pub
--Connectez-vous via la maquette comme indiqué dans le tableau ci-dessous
Côté BME280 | Code PIN |
---|---|
VDD | 1(3.3V) |
GND | 9(GND) |
CSB | --- |
SDI | 3(I2C1_SDA1) |
SDO | 9(GND) |
SCK | 5(I2C1_SCL1) |
raspberrypi
# spi/Activer i2c et corriger les paramètres régionaux
sudo raspi-config
sudo chmod 666 /dev/i2c-1
#Vérifiez l'état de la connexion
i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --
#Assurez-vous que vous êtes connecté à 76
#Vérifiez le contenu du registre
i2cdump -y 1 0x76
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
80: 8a 70 89 8e 83 0f fc 06 34 6e 56 66 32 00 8a 8e ?p??????4nVf2.??
90: 17 d6 d0 0b 5e 1d f0 ff f9 ff ac 26 0a d8 bd 10 ????^??.?.?&????
a0: 00 4b 40 00 00 00 00 00 00 00 00 00 33 00 00 c0 [email protected]..?
b0: 00 54 00 00 00 00 60 02 00 01 ff ff 1f 60 03 00 .T....`?.?..?`?.
c0: 00 00 00 ff 00 00 00 00 00 00 00 00 00 00 00 00 ................
d0: 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 `...............
e0: 00 67 01 00 14 05 00 1e 57 41 ff ff ff ff ff ff .g?.??.?WA......
f0: ff 00 00 00 00 00 00 80 00 00 80 00 00 80 00 80 .......?..?..?.?
#Enregistrer les paramètres
#Vérifiez la valeur du registre système de réglage de fonctionnement
echo -n '0xF5:' ; i2cget -y 1 0x76 0xF5 ; \
echo -n '0xF4:' ; i2cget -y 1 0x76 0xF4 ; \
echo -n '0xF2:' ; i2cget -y 1 0x76 0xF2
#Réglage de la valeur du registre système de réglage de fonctionnement
# i2cset -y 1 0x76 [Adresse interne] [valeur]
i2cset -y 1 0x76 0xF5 0xA0 ; \
i2cset -y 1 0x76 0xF4 0x27 ; \
i2cset -y 1 0x76 0xF2 0x01
#Si vous ne voulez rien faire de spécial, les paramètres ci-dessus devraient être OK
#Acquisition des valeurs de température / humidité / pression
i2cdump -r 0xF7-0xFE -y 1 0x76
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
f0: 54 0b 00 84 00 00 74 62 T?.?..tb
#Cela devrait être OK si vous pouvez obtenir la valeur comme celle-ci
#Il semble que les données peuvent être sorties proprement si vous utilisez bien les valeurs d'autres registres.
Le kit est un produit d'Akizuki Denshi, mais comme le capteur lui-même est le même, j'utilise SWITCH SCIENCE sample code.
raspberrypi
mkdir i2ctest
cd i2ctest/
wget https://github.com/SWITCHSCIENCE/samplecodes/archive/master.zip
unzip master.zip
#Ce dont vous avez besoin après le déploiement
# i2ctest/BME280/Python27/bme280_sample.Parce que ce n'est que py
#Copier le contenu du code dans le fichier touché sous n'importe quel Dir suffit
cd BME280/Python27/
sudo python bme280_sample.py
temp : 28.37 ℃
pressure : 1003.83 hPa
hum : 51.99 %
-J'ai obtenu le jeton en me référant à Envoyer un message LINE avec Python
bme280_sample.py
#Fonction pour la température
def compensate_T(adc_T):
#Omission
# print "temp : %-6.2f ℃" % (temperature)
return temperature
#Fonction humidité
def compensate_H(adc_H):
#Omission
# print "hum : %6.2f %" % (var_h)
return var_h
bme280_sample.py
def readData():
#Omission
temp = compensate_T(temp_raw)
#N'utilisez pas de pression
# compensate_P(pres_raw)
hum = compensate_H(hum_raw)
#Calculer l'indice d'inconfort et envoyer une notification si plus de 80 ans
discomfortIndex = 0.81 * temp + 0.01 * hum * ( 0.99 * temp - 14.3 ) + 46.3
if discomfortIndex > 80:
sendNotice(temp, hum, discomfortIndex)
-Codage avec référence à Envoyer un message LINE avec Python
bme280_sample.py
def sendNotice(temp, hum, discomfortIndex):
url = 'https://notify-api.line.me/api/notify'
token = #Définir un jeton pour la notification
headers = {'Authorization' : 'Bearer ' + token}
now = datetime.datetime.now()
message = \
'\r\n Date:' + now.strftime('%Y/%m/%d') + \
'\r\n temps:' + now.strftime('%H:%M:%S') + \
'\r\indice n:%5.2f' % (discomfortIndex) + \
'\r\n Température:%5.2f ℃' % (temp) + \
'\r\n Humidité:%5.2f %' % (hum)
payload = {'message' : message}
r = requests.post(url, headers=headers, params=payload)
Définissez l'exécution périodique avec cron en vous reportant à Avant d'utiliser crontab pour la première fois avec RaspberryPi3
lineNoticeCron
#Exemple d'exécution toutes les 5 minutes
*/5 * * * * kabu0404 sudo python /home/kabu0404/i2ctest/BME280/Python27/bme280_sample.py
LINE Nortify
――I2C? SPI? Qu'est-ce que c'était? J'ai eu du mal parce que c'était un niveau. Je ne comprends toujours pas. «Il semble que vous devriez étudier un peu plus car c'est une partie qui est pratiquement essentielle lorsque vous essayez de faire quelque chose avec Raspeye.
«C'était une partie que je pouvais sauter, mais j'étais un peu coincé dans la façon de le lire.
――La compréhension actuelle est ci-dessous, veuillez indiquer si vous faites une erreur
--hoge <n: m>
etfuga [n: m]
signifient utiliser les valeurs du nbit à mbit.
--hoge <0>
etfuga [0]
sont omis car il est redondant d'écrire 0: 0 si la valeur utilisée n'est qu'un chiffre.
Python ――Tout simplement pas assez d'étude
――Placez-le dans la maison d'une famille qui n'aime pas les glacières et informez la ligne du groupe que "il peut faire chaud mais vous n'avez peut-être pas de glacière!" ――Placez-le à l'extérieur de la fenêtre et notifiez que "il fait assez froid pour éteindre la glacière"
――Il semble intéressant de combiner IFTTT ou des appareils électroménagers intelligents (même si je n'en ai pas) ――Je me demande si vous ne pouvez rien faire d'intéressant en combinaison avec le GPS connecté.
Recommended Posts