Że pi zdrożało nieprzyzwoicie przypomniałem sobie, że mam jeszcze trzy egzemplarze modelu zero w wersji bez wbudowanego w płytkę Wi-Fi
Pi ma mieć tylko kamerę i termometr DS18B20, ale karta Wi-Fi wymaga przejściówki USB-Mini USB żeby ją wsadzić. Kupiłem coś takiego za 3 PLN na Allegro. Teraz mogą instalować system:
snap install rpi-imager
Instaluje program do instalowania systemu na kartach SD. Instalacja idzie błyskiem.
W /boot
dodaję plik ssh (może być pusty)
żeby przy starcie uruchomił się demon SSH
Podobnie żeby przy starcie system połączył się z siecią Wi-FI
plik /etc/wpa_supplicant/wpa_supplicant.conf
powinien zawierać coś w rodzaju:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=US network={ ssid="NETWORK_NAME" psk="password" key_mgmt=WPA-PSK }
Teraz się okazało, że i tak się nie połączy,
bo nie ma normalnego użytkownika w systemie. Takiego użytkownika można
utworzyć na etapie tworzenia karty systemowej (czyli
za pomocą rpi-imager
; tam zresztą też można podać
namiary na sieć WiFi a nie grzebać w pliku
wpa_supplicant.conf
.) No ale ja tego nie zrobiłem.
Na szczęście nie trzeba uruchamiać rpi-imager
powtórnie. Wystarczy znowu dłubnąć w plikach konfiguracyjnych, konkretnie
Należy utworzyć plik
userconf.txt
w katalogu /boot
.
W tym pliku wpisać (jeden wiersz):
pi:$6$/XOZsG1X0IAbhXB0$wYZHRkvib0SUKQA3KVAxofPR.JsFAbI2NCue2znGvhRsQobVdllFXyQZ7fMSvAoyEj8MfHtkMeSZT7IRIixg01
No to jest hasło raspberry
dla użytkownika pi
Teraz już zadziała
ssh -l pi 192.168.1.cośtam
Teraz:
sudo raspi-config ## uaktywniam kamerę i 1Wire sudo apt update sudo apt upgrade
Kamera działa. Termometr działa
Dodaję niezbędne pakiety. Nie za dużo bo to wolny komputer. Ma robić zdjęcia, mierzyć temperaturę i wysyłać na Twittera i githuba.
apt -y install ncftp sshfs vim mc \ imagemagick imagemagick-6-common imagemagick-6.q16 \ python3-tweepy
Kopiuję niezbędne skrypty konfiguracyjne .netrc
oraz .gitconfig
żeby móc zapisywać do repozytoriów githuba.
## .netrc machine github.com login hrpunio password ghp_###### ## .gitconfig [user] name = tomasz przechlewski email = rudolf.von.ems@gmail.com [github] user = hrpunio token = 650000000000000000000000 [credential] helper = cache
Ten pierwszy to chyba niepotrzebny.
Wszystko zamykam w puszce pn Puszka elektryczna natynkowa Elektro-Plast 0251-00 135x135x42mm, która mieści płytkę, i kamerę. Robię w niej dziurę na kamerę oraz drugą na przewody. Dla Rpi-Zero jest miejsca aż nadto; Rpi-3 też się zmieści BTW, nawet z kamerą OV5647/5MP/175 stopni, która ma znacznie większy obiektyw (wystaje z puszki.)
Czujnik ten jest fragmentem większej całości, że tak powiem tajemniczo.
Do jego uruchomienia wykorzystałem doskonały opis ze strony
https://twojpomyslna.wordpress.com/2019/02/18/raspberry-pi-bme280-i2c-domoticz/
.
Zresztą jest to ekstremalnie proste...
BME 280 występuje w kilku wariantach. Na stronie
twojpomyslna.wordpress.com
pokazany jest czujnik
z czterema stykami, a ja kupiłem z sześcioma i też działa.
Styki podłączamy następująco: VCC→#P1, GND→#P6, SCL→#P5,
SDA→#P3.
Potem należy zainstalować stosowny software:
sudo apt-get install -y python-smbus i2c-tools ## Sprawdzamy czy działa ## ls -l /dev/i2c* ## crw-rw---- 1 root i2c 89, 1 mar 29 15:41 /dev/i2c-1 i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Teraz ściągam/uruchamiam skrypt bme280.py
:
wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/bme280.py python bme280.py
Wydruk jest dość rozwlekły i bez daty/czasu więc modyfikuję skrypt, tak aby całość była drukowana w jednym wierszu. Dodaję stosowany wpis do crontaba.
Czujnik jest lepszy od DHT22 nie tylko dlatego, że oprócz temperatury/wilgotności, jeszcze mierzy ciśnienie, ale także działa podłączony kilkumetrowym przewodem a DHT22 odmawiał wtedy współpracy.
Stare Pi usiłuję zamienić na kamerę w ogródku:
## co to za wersja Pi? less /proc/cpuinfo ... Model : Raspberry Pi Model A Rev 2
Problemem jest zasięg WiFi (od routera do kamery jest jakieś 8 metrów przez szybę, żadnych murów). Do tego Pi ma tylko jedno złącze USB co utrudnia sprawę, bo ujawnia się złośliwość przedmiotów martwych (ZPM): z dwóch moich rezerwowych hubów żaden nie działa z tym konkretnym RPi. Podłączam hub z PCeta--ten działa...
Żeby było lepiej (z łącznością) zakupiłem TP-Link TL-WN722N (v2), ale okazało się że akurat wersja 2 nie jest rozpoznawana przez fabryczny Raspbian. Pech albo ZPM2.
Najpierw usiłowałem zainstalować stosowny sterownik
wg wskazówek ze strony https://github.com/lwfinger/rtl8188eu
:
git clone https://github.com/lwfinger/rtl8188eu.git sudo apt-get install raspberrypi-kernel-headers sudo ln -s /usr/src/linux-headers-$(uname -r) /lib/modules/$(uname -r)/build cd rtl8188eu/ make all sudo make install sudo reboot
Nie działa dalej, a moduł się skompilował, zainstalował i nawet jest ładowany...
Zadziałał ten przepis (https://www.raspberrypi.org/forums/viewtopic.php?t=250911#p1532103
):
You can download the driver from http://downloads.fars-robotics.net/wifi-drivers/8188eu-drivers/
.
Choose the driver that matches the output of command uname -a
for the correct kernel version:
uname -a # Linux aisara 4.19.97+ #1294 Thu Jan 30 13:10:54 GMT 2020 armv6l GNU/Linux mkdir Temp && cd Temp wget http://downloads.fars-robotics.net/wifi-drivers/8188eu-drivers/8188eu-4.19.97-1294.tar.gz tar -zxvf 8188eu-4.19.97-1294.tar.gz ./install.sh
BTW Installing my driver will disable the built in r8188eu driver. To re-enable the built in driver you will need to run the following commands:
sudo rm /etc/modprobe.d/8188eu.conf sudo rm /lib/modules/4.19.69-v7l+/kernel/drivers/net/wireless/8188eu.ko sudo depmod -a
Miałem już ze starych czasów puszkę z Raspberry w środku, z kamerą przyczepioną do ścianki, zrobioną dziurą na obiektyw i kablem doprowadzającym zasilanie przez piny P2+P6 (też tak można). Zasilacz w domu, poza oknem już 5V. Na wszelki wypadek -- żeby mi kogoś nie zabiło przez przypadek (a nawet czegoś, bo teraz czasy takie że jakby dzika poraziło, to też by była afera) -- wolałem nie ciągnąć 230V z mieszkania. Dlatego też zasilanie jest po zwykłym dwużyłowym kablu a nie przez USB (bo tak mi się wydawało prościej).
Znowu coś nie tak od pierwszego strzału (ZPM3):
mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (1)
Ze starych czasów pamiętam, że problem może być z połączeniem/uszkodzeniem (taśmy na przykład). Zmieniłem kamerę i taśmę na inną. Działa. Musiała być uszkodzone widocznie.
Kamerą będę fotografował mój blok od tyłu, że tak powiem. Z drzewkiem brzoskiwni na pierwszym planie. Zdjęcia wysyłał na Twittera co 3 godziny na przykład:
0 6,9,12,15,18,21 * * * /home/pi/bin/mk1photo.sh
Na zdjęciu widać czujnik ruchu, bo faktycznie takowy też dokleiłem do obudowy. Że niby miał zdjęcia robić jak ruch wykryje, ale ponieważ to w zasadzie nie działało, więc teraz ten czujnik wprawdzie jest, ale nie podłączony. Atrapa...
W moim rpi mam Debiana w wersji Buster:
$sudo apt install python-selenium python3-selenium chromium-browser
Uruchamiam prosty skrypt, którego używam do pobierania zasobów z Internetu:
$selenium_get_www_page.py https://www.google.pl chrome not reachable
Po konsultacji z google znalazłem (radykalne) rozwiązanie. Należy zrobić downgrade relewantnych pakietów:
# Jakie są wersje dostępne: apt-cache madison chromium-chromedriver chromium-browser
Nie ma żadnych innych poza tymi, które mam zainstalowane, więc trzeba doinstalować z wersji Stretch:
# Należy dodać deb http://archive.raspberrypi.org/debian/ stretch main # do /etc/apt/sources.list apt-get update # Jakie są wersje dostępne teraz: apt-cache madison chromium-chromedriver chromium-browser chromium-chromedriver | 74.0.3729.157-rpt5 | \ http://archive.raspberrypi.org/debian buster/main armhf Packages ...
Instaluję stare wersje:
apt-get install chromium-chromedriver=72.0.3626.121-0+rpt4 chromium-browser=72.0.3626.121-0+rpt4 chromium-codecs-ffmpeg-extra=72.0.3626.121-0+rpt4 chromium-browser-l10n=72.0.3626.121-0+rpt4 apt-mark hold chromium-chromedriver chromium-browser chromium-codecs-ffmpeg-extra chromium-browser-l10n
Teraz skrypt selenium_get_www_page.py
działa.