Mam na działce trzy raspberry pi, każde wyposażone w standardową kamerę oraz czujnik BME 280 (temperatura/ciśnienie/wilgotność/.)
Ponieważ czujnik czasami szwankował co być może było spowodowane kiepskim montażem, a kamera robiła zdjęcia kiepskiej jakości, to sobie wymyśliłem upgrade. Konkretnie, że zmienię kamerę na OV5647/5MP z szerokokątnym obiektywem (175 stopni), a do BME 280 dodam niezawodny DS18B20, który wprawdzie mierzy tylko temperaturę ale za to dokładnie.
Połączenia wtyki czujników/GPIO są następujące:
Podłączyłem wszystko tym razem porządniej (a przynajmniej tak mi się wydaje.) Nowa kamera wymagała większej dziury i innego sposobu umocowania na pokrywie obudowy.
Dla przypomnienia: BME 280 testuje się czy działa wydając polecenie:
i2cdetect -y 1
Co powinno skutkować wypisaniem kilkudziesięciu kresek i liczby 76. Jeżeli są same kreski coś nie działa.
Czujnik DS18B20 z kolei powinien być widoczny tutaj:
ls -l /sys/bus/w1/devices/w1_bus_master1/
Tam powinien być numer czujnika, moim przypadku
jest to 28-4680e30264ff
. Temperaturę się czyta
po prostu
#!/bin/bash # Odczyt temperatury z zapisem do loga LOG_DIR=/home/pi/Logs/Digitemp SENS="28-4680e30264ff" TIME="`date "+%Y%m%d%H%M%S"`" TEMP="`cat /sys/bus/w1/devices/${S1}/w1_slave | tr '\n' ' '`" echo "$TIME;$SENS;$TEMP" >> $LOG_DIR/digitemp.log
Przy okazji przetestowałem też AHT10 (temperatura/wilgotność), który
działa ale z obsługą jest już słabo.
Znalazłem mianowicie skrypt w Pythonie drukujący temperaturę
z dokładnością do stopnia a innych skryptów, które by podawały dokładniej, nie udało mi się
uruchomić. W google zresztą podejrzanie mało informacji na temat
AHT10+raspberry
.
Przy okazji też przetestowałem patent na skonfigurowanie rpi z wieloma sieciami WiFi:
/etc/wpa_supplicant/wpa_supplicant.conf ##==== ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="network1" psk="password1" id_str="id-string1" } network={ ssid="network2" psk="password2" id_str="id-string2" }
Teraz mogę sobie przynieść pi z działki, włączyć i mi się połączy z WiFi w domu też:-)
The following CSV (on-demand generated from raw data with simple Perl script) file contains outdoor temperature registred every hour starting from 2010 (with DS18B20 sensor):
dayhr;No;y2010;y2011;y2012;y2013;y2014;y2015;day30 d070100;001;14.6;17.5;14.9;10.1;12.9;12.2;0 d070101;002;13.4;16.7;14.1;10.1;12.8;12.5;3600 d070102;003;12.8;16.3;14.3;10.2;12.7;12.1;7200
dayhr
is a label and day30
denotes number
of seconds from
the beginning od the period (for the first observation day30
equals 0, for the second 3600 etc.) The chart was produced
with the following custom R script:
require(ggplot2) library(scales) number_ticks <- function(n) {function(limits) pretty(limits, n)} d <- read.csv("july-by-day.csv", sep = ';', header=T, na.string="NA"); datestart <- ISOdate(2015, 7, 1, tz = ""); d30 <- datestart + d$day30; d[,"d30"] <- d30; ggplot(d, aes(x = d30)) + geom_line(aes(y = y2015, colour = 'y2015'), size=.3) + geom_line(aes(y = y2014, colour = 'y2014'), size=.3) + geom_smooth(aes(y = y2015, colour = 'y2015'), size=1) + geom_smooth(aes(y = y2014, colour = "y2014"), size=1) + ylab(label="Temp [C]") + xlab(label="Observation") + scale_y_continuous(breaks=number_ticks(15)) + scale_x_datetime(breaks = date_breaks("5 days")) + theme(legend.title=element_blank()) + ggtitle("Temperature in July in Sopot") + theme(legend.position=c(.6, .9)) + theme(legend.text=element_text(size=12)); ggsave(file="Temp-M7-2015.pdf", width=15, height=8)