――Das Jahr wird es heiß, aber wie heiß solltest du den Kühler benutzen? ――Es wäre einfacher, wenn Sie den Unbehaglichkeitsindex messen und eine Benachrichtigung erhalten, die besagt: "Verwenden Sie den Kühler, weil er gefährlich ist!" ...
――Daher dieser Artikel auf der Grundlage eines durch Versuch und Irrtum erstellten Memos verfasst wurde, kann es zu Auslassungen im Verfahren kommen ...
-Download und Installation von Raspberry Pi Imager --Starten und Ausführen durch Angabe des Betriebssystems und der zu schreibenden SD-Karte
ssh Leere Datei ist 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="Verschlüsselungsschlüssel"
}
Sie können eine Verbindung von Win10 mit Teraterm usw. herstellen, aber da die Programmierung grundsätzlich unter Linux erfolgte Ich bereite mich auf die Arbeit vor, indem ich mit ssh eine Verbindung zu Raspai von Linux (Ubuntu) herstelle.
linux
ssh [email protected]
# pass:raspberry
raspberrypi
#Sudo-Benutzererstellung
sudo adduser kabu0404
sudo usermod -aG sudo kabu0404
su kabu0404
#Verschiedene Updates
sudo apt update
sudo apt upgrade
#Zeitzone/Lokalisierungseinstellungen
sudo timedatectl set-timezone Asia/Tokyo
sudo localectl set-locale ja_JP.UTF-8
#Endlich Sudo Raspi-Vielleicht habe ich mit config rumgespielt
linux
#Ssh in der Vergangenheit-keygen -Da ich trsa war, werde ich den vorhandenen öffentlichen Schlüssel senden
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
BME280 Seite | PIN Nummer |
---|---|
VDD | 1(3.3V) |
GND | 9(GND) |
CSB | --- |
SDI | 3(I2C1_SDA1) |
SDO | 9(GND) |
SCK | 5(I2C1_SCL1) |
raspberrypi
# spi/Aktivieren Sie i2c & fix locale
sudo raspi-config
sudo chmod 666 /dev/i2c-1
#Überprüfen Sie den Verbindungsstatus
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 --
#Stellen Sie sicher, dass Sie mit 76 verbunden sind
#Überprüfen Sie den Inhalt des Registers
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 .......?..?..?.?
#Registrieren Sie die Einstellungen
#Überprüfen Sie den Wert des Betriebseinstellungssystemregisters
echo -n '0xF5:' ; i2cget -y 1 0x76 0xF5 ; \
echo -n '0xF4:' ; i2cget -y 1 0x76 0xF4 ; \
echo -n '0xF2:' ; i2cget -y 1 0x76 0xF2
#Werteinstellung des Betriebseinstellungssystemregisters
# i2cset -y 1 0x76 [Interne Adresse] [Wert]
i2cset -y 1 0x76 0xF5 0xA0 ; \
i2cset -y 1 0x76 0xF4 0x27 ; \
i2cset -y 1 0x76 0xF2 0x01
#Wenn Sie nichts Besonderes tun möchten, sollten die obigen Einstellungen in Ordnung sein
#Erfassung von Temperatur- / Feuchtigkeits- / Druckwerten
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
#Es sollte in Ordnung sein, wenn Sie den Wert so erhalten können
#Es scheint, dass Daten sauber ausgegeben werden können, wenn Sie die Werte anderer Register gut verwenden.
Das Kit ist ein Produkt von Akizuki Electronics, aber da der Sensor selbst derselbe ist, verwende ich SWITCH SCIENCE-Beispielcode.
raspberrypi
mkdir i2ctest
cd i2ctest/
wget https://github.com/SWITCHSCIENCE/samplecodes/archive/master.zip
unzip master.zip
#Was Sie nach der Bereitstellung benötigen
# i2ctest/BME280/Python27/bme280_sample.Weil es nur py ist
#Das Kopieren des Code-Inhalts in die Datei, die unter einem beliebigen Verzeichnis berührt wird, reicht aus
cd BME280/Python27/
sudo python bme280_sample.py
temp : 28.37 ℃
pressure : 1003.83 hPa
hum : 51.99 %
-Ich habe das Token erhalten, indem ich auf LINE-Nachricht mit Python senden verwiesen habe.
bme280_sample.py
#Funktion für Temperatur
def compensate_T(adc_T):
#Unterlassung
# print "temp : %-6.2f ℃" % (temperature)
return temperature
#Feuchtigkeitsfunktion
def compensate_H(adc_H):
#Unterlassung
# print "hum : %6.2f %" % (var_h)
return var_h
bme280_sample.py
def readData():
#Unterlassung
temp = compensate_T(temp_raw)
#Verwenden Sie keinen Druck
# compensate_P(pres_raw)
hum = compensate_H(hum_raw)
#Berechnen Sie den Unbehaglichkeitsindex und senden Sie eine Benachrichtigung, wenn Sie über 80 Jahre alt sind
discomfortIndex = 0.81 * temp + 0.01 * hum * ( 0.99 * temp - 14.3 ) + 46.3
if discomfortIndex > 80:
sendNotice(temp, hum, discomfortIndex)
-Codierung mit Bezug auf LINE-Nachricht mit Python senden
bme280_sample.py
def sendNotice(temp, hum, discomfortIndex):
url = 'https://notify-api.line.me/api/notify'
token = #Legen Sie ein Token für die Benachrichtigung fest
headers = {'Authorization' : 'Bearer ' + token}
now = datetime.datetime.now()
message = \
'\r\n Datum:' + now.strftime('%Y/%m/%d') + \
'\r\n Zeit:' + now.strftime('%H:%M:%S') + \
'\r\n Index:%5.2f' % (discomfortIndex) + \
'\r\n Temperatur:%5.2f ℃' % (temp) + \
'\r\n Luftfeuchtigkeit:%5.2f %' % (hum)
payload = {'message' : message}
r = requests.post(url, headers=headers, params=payload)
Stellen Sie die regelmäßige Ausführung mit cron ein, indem Sie auf [Vor der ersten Verwendung von crontab mit RaspberryPi3] verweisen (https://qiita.com/Higemal/items/5a579b2701ef7c473062).
lineNoticeCron
#Beispiel für das Laufen alle 5 Minuten
*/5 * * * * kabu0404 sudo python /home/kabu0404/i2ctest/BME280/Python27/bme280_sample.py
LINE Nortify
――I2C? SPI? Was war das? Ich hatte es schwer, weil es ein Level war. Ich verstehe immer noch nicht. ――Es scheint, dass Sie etwas mehr lernen sollten, da dies ein Teil ist, der unverzichtbar zu sein scheint, wenn Sie versuchen, etwas mit Razzpie zu tun.
»Es war ein Teil, den ich überspringen konnte, aber ich war ein wenig festgefahren, wie ich ihn lesen sollte.
――Das aktuelle Verständnis ist unten angegeben. Bitte weisen Sie darauf hin, wenn Sie einen Fehler machen
--hoge <n: m>
undfuga [n: m]
bedeuten, die Werte von nbit zu mbit zu verwenden.
--hoge <0>
undfuga [0]
werden weggelassen, da das Schreiben von 0: 0 redundant ist, wenn der verwendete Wert nur eine Ziffer ist.
Python ――Einfach nicht genug studieren
――Stellen Sie es in das Haus einer Familie, die Kühler nicht mag, und teilen Sie der Gruppenleitung mit, dass "es heiß sein kann, aber Sie möglicherweise keinen Kühler haben!" ――Stellen Sie es vor das Fenster und benachrichtigen Sie, dass "es kühl genug ist, um den Kühler auszuschalten".
――Es sieht interessant aus, IFTTT- oder Smart Home-Geräte zu kombinieren (obwohl ich keine habe) ――Ich frage mich, ob Sie in Kombination mit dem angeschlossenen GPS nichts Interessantes tun können.