zarizeni:raspberry_pi
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verzePoslední revizeObě strany příští revize | ||
zarizeni:raspberry_pi [2017/01/13 21:09] – monkeytech | zarizeni:raspberry_pi [2022/12/15 23:01] – multitricker | ||
---|---|---|---|
Řádek 19: | Řádek 19: | ||
<code bash> | <code bash> | ||
- | #! /bin/bash | + | #!/bin/bash |
# This script reads the temperature from all connected 1-wire temperature | # This script reads the temperature from all connected 1-wire temperature | ||
Řádek 113: | Řádek 113: | ||
</ | </ | ||
<code bash> | <code bash> | ||
- | #! /bin/bash | + | #!/bin/bash |
# This script reads the temperature from all connected 1-wire temperature | # This script reads the temperature from all connected 1-wire temperature | ||
Řádek 181: | Řádek 181: | ||
# Write result of this sensor | # Write result of this sensor | ||
echo " | echo " | ||
- | curl -s -H " | + | curl -s -H " |
else | else | ||
# A CRC was found, show error message instead | # A CRC was found, show error message instead | ||
Řádek 192: | Řádek 192: | ||
\\ | \\ | ||
===== Raspberry PI + DHT22 ===== | ===== Raspberry PI + DHT22 ===== | ||
- | Čidlo DHT22 se též koupíte | + | Čidlo DHT22 též zakoupíte |
Následující návod počítá s čidlem DHT22 připojeným na GPIO22. | Následující návod počítá s čidlem DHT22 připojeným na GPIO22. | ||
{{ : | {{ : | ||
Řádek 231: | Řádek 231: | ||
temperature = round(temperature, | temperature = round(temperature, | ||
humidity = round(humidity, | humidity = round(humidity, | ||
- | url = ' | + | url = ' |
- | print url | + | print(url) |
urllib2.urlopen(url) | urllib2.urlopen(url) | ||
else: | else: | ||
Řádek 238: | Řádek 238: | ||
sys.exit(1) | sys.exit(1) | ||
</ | </ | ||
- | Změňte | + | Přidejte |
< | < | ||
chmod +x ./ | chmod +x ./ | ||
./ | ./ | ||
</ | </ | ||
- | Pravidelným spouštěním každou minutu prostřednictvím plánovače zajistíte automatické ukládání hodnot. | + | Pravidelným spouštěním každou minutu prostřednictvím plánovače zajistíte automatické ukládání hodnot: |
< | < | ||
crontab -e | crontab -e | ||
Řádek 250: | Řádek 250: | ||
* | * | ||
</ | </ | ||
+ | \\ | ||
+ | ===== Raspberry PI + SHT21 ===== | ||
+ | SHT21 je teplotní a vlhkostní čidlo o velikosti 3x3mm, které se obvykle prodává na osazené PCB. Komunikační rozhraní je sběrnice I2C. Čidlo vykazuje přesnější měření (především vlhkosti) než DHT22. Datová sběrnice I2C není vhodná pro delší vzdálenosti. | ||
+ | {{ : | ||
+ | Nejprve je nutné zprovoznit podporu I2C sběrnice. V souboru ''/ | ||
+ | < | ||
+ | Přidáme '' | ||
+ | < | ||
+ | sudo echo ' | ||
+ | sudo apt-get install i2c-tools | ||
+ | </ | ||
+ | Po restartu zařízení již bude funkční I2C sběrnice na pinech 2 a 3. Pokud máme připojeno čidlo, můžeme provést kontrolu: | ||
+ | < | ||
+ | sudo i2cdetect -y 1 | ||
+ | </ | ||
+ | Při přítomnosti čidla se zobrazí adresa 0x40: | ||
+ | < | ||
+ | | ||
+ | 00: -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
+ | 70: -- -- -- -- -- -- -- -- | ||
+ | </ | ||
+ | Prostřednictví těchto příkazů stáhněte knihovnu '' | ||
+ | < | ||
+ | sudo apt-get install git | ||
+ | cd ~ | ||
+ | git clone https:// | ||
+ | cd sht21_python | ||
+ | nano ./ | ||
+ | </ | ||
+ | Skript '' | ||
+ | <WRAP center round important 60%> | ||
+ | Nezapomeňte upravit proměnné GUID a SERVER dle aktuálního nastavení Tmep.cz | ||
+ | </ | ||
+ | <code python> | ||
+ | # | ||
+ | import sht21, socket, urllib2, sys | ||
+ | |||
+ | GUID = ' | ||
+ | SERVER = ' | ||
+ | |||
+ | try: | ||
+ | with sht21.SHT21(1) as sht21: | ||
+ | temperature = sht21.read_temperature() | ||
+ | humidity = sht21.read_humidity() | ||
+ | |||
+ | temperature = round(temperature, | ||
+ | humidity = round(humidity, | ||
+ | url = ' | ||
+ | print(url) | ||
+ | urllib2.urlopen(url) | ||
+ | |||
+ | except IOError, e: | ||
+ | print e | ||
+ | print "Error creating connection to i2c. This must be run as root" | ||
+ | sys.exit(1) | ||
+ | </ | ||
+ | Přidejte práva pro spouštění a můžete skript otestovat: | ||
+ | < | ||
+ | chmod +x ./ | ||
+ | ./ | ||
+ | </ | ||
+ | Pravidelným spouštěním každou minutu prostřednictvím plánovače zajistíte automatické ukládání hodnot: | ||
+ | < | ||
+ | sudo crontab -e | ||
+ | </ | ||
+ | < | ||
+ | * | ||
+ | </ | ||
+ | |||
+ | ===== Raspberry s HTU21DF a OLED displejem ===== | ||
+ | |||
+ | Příklad od '' | ||
+ | |||
+ | **Web autora příkladu: | ||
+ | **Kontakt na autora:** [[mikrom@mikrom.cz]] | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | <code python> | ||
+ | # | ||
+ | # -*- coding: utf-8 -*- | ||
+ | |||
+ | # Author: mikrom, 2018 | ||
+ | # | ||
+ | # Based on: | ||
+ | # https:// | ||
+ | # https:// | ||
+ | # https:// | ||
+ | # https:// | ||
+ | # | ||
+ | # HTU21DF needs to run $sudo pigpiod | ||
+ | # tmep.sh added to $sudo nano / | ||
+ | |||
+ | from oled.serial import i2c | ||
+ | from oled.device import sh1106 | ||
+ | from oled.render import canvas | ||
+ | from PIL import ImageFont, ImageDraw | ||
+ | import time #from time import sleep <- do not use this | ||
+ | import HTU21DF | ||
+ | import netifaces as ni | ||
+ | import httplib2 | ||
+ | |||
+ | # Settings | ||
+ | sleep = 5 # Time between two measuring cycles (seconds) | ||
+ | url = " | ||
+ | guid = " | ||
+ | rotation = 0 # Display rotation 0=no, 1=90, 2=180, 3=270 | ||
+ | fontname = " | ||
+ | fontsize = 18 # Font size | ||
+ | serial = i2c(port=1, address=0x3C) | ||
+ | device = sh1106(serial, | ||
+ | ni.ifaddresses(' | ||
+ | font = ImageFont.truetype("/ | ||
+ | |||
+ | # Run infinitely | ||
+ | while True: | ||
+ | # Get temperature and humidity from HTU21D | ||
+ | HTU21DF.htu_reset | ||
+ | temp = " | ||
+ | time.sleep(1) | ||
+ | hum = " | ||
+ | print(" | ||
+ | print(" | ||
+ | |||
+ | # Get IP address from netifaces | ||
+ | ip = ni.ifaddresses(' | ||
+ | print(" | ||
+ | |||
+ | # Display data on OLED | ||
+ | with canvas(device) as draw: | ||
+ | temperature = "Temp: " + temp + u" | ||
+ | w, h = font.getsize(temperature) | ||
+ | draw.text(((128-w)/ | ||
+ | humidity = "Hum: " + hum + " | ||
+ | w, h = font.getsize(humidity) | ||
+ | draw.text(((128-w)/ | ||
+ | w, h = font.getsize(ip) | ||
+ | draw.text(((128-w)/ | ||
+ | |||
+ | # Send data to tmep server | ||
+ | requesturl = url + guid + " | ||
+ | print(" | ||
+ | resp, content = httplib2.Http().request(requesturl) | ||
+ | if resp.status == 200: | ||
+ | print(" | ||
+ | else: | ||
+ | print(" | ||
+ | |||
+ | # Take a nap | ||
+ | print(" | ||
+ | time.sleep(sleep) | ||
+ | </ |