poniedziałek, 30 stycznia 2023

Aktualizacja raspberry na Zawodziu

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:

  • BME280: Vcc--01, SDA--03, SCL--05, Gnd---06.
  • DS18B20: Vcc--17, SDA--07 oraz Gnd--09.

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ż:-)

4 komentarze:

  1. Takie informacje są niezwykle cenne.

    OdpowiedzUsuń
  2. Wiele tutaj interesujących i ważnych informacji.

    OdpowiedzUsuń
  3. Świetny i bardzo wartościowy wpis. Podoba mi się.

    OdpowiedzUsuń
  4. Dobrze jest to wszystko wiedzieć. Rewelacyjny wpis.

    OdpowiedzUsuń