Studna: Difference between revisions
| (43 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
Hlavní funkcí popisované konstrukce je měření objemu vody ve studni. Principem je měření výšky hladiny ultrazvukovým čidlem a přepočet na litry. Spolu s tím je možné měřit teplotu a vlhkost ze dvou čidel - vnitřního a vnějšího. Hodnoty se spolu s aktuálním časaem zobrazují na malém OLED displeji, zapisují do vnitřní databáze a je možné je posílat přes WiFi na internetový server a zobrazovat v grafech.  | |||
[[Image:StudnaFotka.png|thumb|none|400px|Měření v akci]]  | |||
=Základní popis=  | |||
Jádrem je Orange Pi Zero. Ze SDHC karty na něm běží Linux (Armbian).   | |||
Ultrazvukové čidlo je připojeno přes převodník 5V/3.3V na GPIO piny Orange. Čidlo umí být ovládáno i po sériové lince, ale to se mi neosvědčilo, výstup měl příliš nízké rozlišení. Proto jsem použil tradiční rozhraní - Orange pošle startovací puls a měří délku přijatého pulzu, která odpovídá době šíření ultrazvuku (asi 33cm/ms).  | |||
=Komponenty=  | =Komponenty=  | ||
{{AliSearch|orangepi zero h2+ 512mb|OrangePi Zero H2+ 512MB}}  | Pokud se chcete pustit do stavby, je dobré začít objednáním komponent, protože jejich dodání zabere nějaký ten týden. Celkově vyjdou komponenty kolem 1000 Kč.  | ||
* {{AliSearch|orangepi+zero+h2+512mb|OrangePi Zero H2+ 512MB}}  | |||
* {{AliSearch|OLED+0.96+SSD1306|OLED displej 0.96" 128x64}}  | |||
* {{AliSearch|JSN-SR04T|Vodotěsné ultrazvukové čislo JSN-SR04T}}  | |||
* {{AliSearch|dupont+female+to+female+10cm|Propojovací kablíky female-female}}  | |||
* {{AliSearch|logic+level+converter+3.3v+5v|Převodník úrovní}}  | |||
* [https://www.alza.cz/raspberry-pi-2-5a-d4191252.htm Napájecí zdroj 5V 2.5A USBµB]  | |||
* [https://www.alza.cz/sandisk-micro-sdhc-16gb-ultra-android-class-10-a1-uhs-i-sd-adapter-d5102729.htm SDHC karta SanDisk 16GB A1]  | |||
* [https://www.tme.eu/cz/katalog/?search=B2.5X6%2FBN82428 Vruty do plastu]  | |||
* Stíněný kablík pro prodloužení kablíku k čidlu  | |||
=Nástroje=  | |||
* Čtečka mikro SDHC (SD) karet nebo notebook s integrovanou čtečkou  | |||
* Volitelně {{AliSearch|CP2102 MICRO USB to UART TTL Module|USB->TTL převodník}}  | |||
=Sestavení=  | |||
# Stáhněte si [obraz Armbianu pro Orange Pi Zero]. Můj obraz už má nainstalovaný balíček '''ziautils''' který některé kroky zjednoduší.  | |||
# Rozpakujte jej, výsledkem musí být soubor '''.img'''  | |||
# Nahrajte ho na kartu.   | |||
#* Pod Linuxem (X je písmeno, pod kterým se karta nadetekuje, zjistíte například příkazem '''dmesg'''):<br/> cat Armbian.img > /dev/sdX  | |||
#* Po Windows se mi osvědčil program Etcher, ale určitě lze použít i jiné  | |||
# Zasuňte kartu do soketu Orange.  | |||
Teď je potřeba rozhodnout se, zda budete prvotní konfiguraci provádět přes sériovou konzoli USB, přes sériovou konzoli TTL nebo přes ethernet. Výběr bude vycházet z toho, co máte k dispozici a s čím máte zkušenosti.  | |||
==Prvotní konfigurace přes sériovou konzoli USB==  | |||
Budete potřebovat kvalitní USB kabel s konektorem mikro-B. Ideální je od telefonu, který umí rychlé nabíjení proudem alespoň 2A. POZOR, Orange může ve špičkách překračovat maximální povolený odběr USB portu. Proto k němu nic dalšího nepřipojujte. Bude-li se Orange chovat divně, použijte jinou metodu konfigurace.  | |||
# Připojte Orange přes kvalitní USB kabel do mikro-B konektoru.  | |||
# Na počítači se objeví další sériový port:  | |||
#* Pod Linuxem to bude /dev/ttyUSBn, kde n je číslo od nuly výše  | |||
#* Pod Windows to bude COM3 a výše  | |||
# Spusťte sériový emulátor terminálu (putty, minicom) a připojte se na port (115200 baud bez parity)  | |||
# Pokud Orange naběhne rychleji, než se připojíte, přijdete o počáteční texty. Zkuste stisknout Enter, zobrazí se výzva k přihlášení.  | |||
==Prvotní kongiruace přes sáriovou konzoli TTL==  | |||
# Připojte Orange k napájecímu zdroji  | |||
# Použijte převodník USB->TTL (3V). Mě se osvědčily převodníky s čipem CP2102. Odkaz viz výše.  | |||
# Propojte převodník a Orange (třípinový header vedle ethernet portu). Nejprve GND, pak křížem RXD s TXD. [[File:OrangePiConsolePinout.jpg]]  | |||
# Pripojte převodník přes USB do PC  | |||
# Na počítači se objeví další sériový port:  | |||
#* Pod Linuxem to bude /dev/ttyUSBn, kde n je číslo od nuly výše  | |||
#* Pod Windows to bude COM3 a výše  | |||
# Spusťte sériový emulátor terminálu (putty, minicom) a připojte se na port (115200 baud bez parity)  | |||
# Připojte napájecí zdroj. Nic dalšího nepřipojujte.  | |||
==Prvotní konfigurace přes ethernet==  | |||
# Připojte Orange ethernetem k hubu. Na síti musí být DHCP server  | |||
# Připojte napájecí zdroj. Nic dalšího nepřipojujte.  | |||
# Počkejte cca 1-2 minuty, než Orange naběhne  | |||
# Podívejte se do seznamu klientů (leases) DHCP serveru a najděte Orange. Patrně bude mít MAC adresu začínající '''12:42'''. Alternativně můžete použít skener sítě (např. nmap)  | |||
# Spusťte SSH klienta (ssh, putty) a připojte se k Orange na standardní TCP port 22  | |||
=Společná část konfigurace=  | |||
Po připojení se objeví výzva k přihlášení.   | |||
Zadejte uživatelské jméno '''root''' a heslo '''1234'''.  | |||
[[Image:orangepi_setup1.png|thumb|none|755px]]   | |||
Ihned budete vyzváni ke změně hesla. Zadejte '''1234''' a pak 2x nové heslo, které se pokuste nezapomenout.  | |||
[[Image:orangepi_setup2.png|thumb|none|755px]]   | |||
Pak zadejte uživatelské jméno neprovilegovaného uživatele. Toho pro tento projekt nebudete potřebovat.  | |||
[[Image:orangepi_setup3.png|thumb|none|755px]]   | |||
=Nastavení wifi=  | |||
Spusťte příkaz '''armbian-config'''. Varování o nedostupné síti ignorujte.  | |||
[[Image:orangepi_wifi1.png|thumb|none|755px]]   | |||
Vyberte '''Network''', '''wlan0''', '''WiFi'''.  | |||
[[Image:orangepi_wifi2.png|thumb|none|755px]]   | |||
Vyberte vaši WiFi síť a zadejte heslo.  | |||
Opusťte nastavení '''Quit''' a 2x '''Cancel'''.  | |||
V příkazové řádce spusťte příkaz:  | |||
 ifconfig wlan0  | |||
Vypíše se něco takového:  | |||
 wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500  | |||
         inet '''xxx.xxx.xxx.xxx'''  netmask 255.255.255.0  broadcast 192.168.1.255  | |||
         inet6 fe80::27cd:xxxx:xxxx:xxxx  prefixlen 64  scopeid 0x20<link>  | |||
         ether 12:42:ad:xx:xx:xx  txqueuelen 1000  (Ethernet)  | |||
Zapamatujte si IP adresu pro pozdější připojení přes WiFi.  | |||
=Aktualizace a nastavení Armbianu=  | |||
V příkazové řádce spusťte:  | |||
 apt update  | |||
a pak   | |||
 apt upgrade  | |||
Pokud bude tvrdit '''...is another process using it?''', tak se spustila automatická aktualizace a musíte nějaký čas počkat. Můžete spustit příkaz '''top''' a jednou za čas se podívat, jestli '''load average''' klesne k nule. Pak ho ukončete '''Ctrl+C'''.  | |||
Nastavte lokální časovou zónu:  | |||
 dpkg-reconfigure tzdata  | |||
A vyberte nejlépe Europe/Prague.  | |||
Přidejte I2C sběrníci na PA11 a PA12 a restartujte.  | |||
 zaddoverlay i2c0  | |||
 shutdown -r now  | |||
=Instalace software=  | |||
 apt-get install studna  | |||
Upravte konfiguraci  | |||
 nano /etc/studnarc  | |||
Pokud nemáte připojená čidla, přepište hodnoty u řádek '''DHTIN''' či '''DHTOUT''' na '''0'''. Uložte stiskem '''Ctrl+X'''.  | |||
Zapněte autostart démona studna a spusťte jej:  | |||
 systemctl enable studna  | |||
 systemctl start studna  | |||
=Konfigurace Apache=  | |||
Co přesně znemená první řádka, nevím, nejsem tu od toho, abych všechno věděl :-) Následuje povolení PHP modulu v apache a následný restart.  | |||
 a2dismod mpm_event  | |||
 a2enmod php7.0  | |||
 systemctl restart apache2  | |||
=Předlohy pro 3D tiskárnu=  | |||
[[Image:Studna.png|thumb|none|900px|Krabička]]   | |||
[[:File:Studna.stl|Předloha Studna.STL]] Doporučuji PETG, vrstva 0.2mm. Doba tisku asi 5.5h.  | |||
[[Image:Cidlo.png|thumb|none|900px|Držák čidla]]  | |||
[[:File:Cidlo.stl|Předloha Cidlo.STL]]  | |||
Latest revision as of 18:58, 28 September 2019
Hlavní funkcí popisované konstrukce je měření objemu vody ve studni. Principem je měření výšky hladiny ultrazvukovým čidlem a přepočet na litry. Spolu s tím je možné měřit teplotu a vlhkost ze dvou čidel - vnitřního a vnějšího. Hodnoty se spolu s aktuálním časaem zobrazují na malém OLED displeji, zapisují do vnitřní databáze a je možné je posílat přes WiFi na internetový server a zobrazovat v grafech.

Základní popis
Jádrem je Orange Pi Zero. Ze SDHC karty na něm běží Linux (Armbian).
Ultrazvukové čidlo je připojeno přes převodník 5V/3.3V na GPIO piny Orange. Čidlo umí být ovládáno i po sériové lince, ale to se mi neosvědčilo, výstup měl příliš nízké rozlišení. Proto jsem použil tradiční rozhraní - Orange pošle startovací puls a měří délku přijatého pulzu, která odpovídá době šíření ultrazvuku (asi 33cm/ms).
Komponenty
Pokud se chcete pustit do stavby, je dobré začít objednáním komponent, protože jejich dodání zabere nějaký ten týden. Celkově vyjdou komponenty kolem 1000 Kč.
- OrangePi Zero H2+ 512MB
 - OLED displej 0.96" 128x64
 - Vodotěsné ultrazvukové čislo JSN-SR04T
 - Propojovací kablíky female-female
 - Převodník úrovní
 - Napájecí zdroj 5V 2.5A USBµB
 - SDHC karta SanDisk 16GB A1
 - Vruty do plastu
 - Stíněný kablík pro prodloužení kablíku k čidlu
 
Nástroje
- Čtečka mikro SDHC (SD) karet nebo notebook s integrovanou čtečkou
 - Volitelně MICRO USB to UART TTL Module USB->TTL převodník
 
Sestavení
- Stáhněte si [obraz Armbianu pro Orange Pi Zero]. Můj obraz už má nainstalovaný balíček ziautils který některé kroky zjednoduší.
 - Rozpakujte jej, výsledkem musí být soubor .img
 - Nahrajte ho na kartu.
- Pod Linuxem (X je písmeno, pod kterým se karta nadetekuje, zjistíte například příkazem dmesg):
cat Armbian.img > /dev/sdX - Po Windows se mi osvědčil program Etcher, ale určitě lze použít i jiné
 
 - Pod Linuxem (X je písmeno, pod kterým se karta nadetekuje, zjistíte například příkazem dmesg):
 - Zasuňte kartu do soketu Orange.
 
Teď je potřeba rozhodnout se, zda budete prvotní konfiguraci provádět přes sériovou konzoli USB, přes sériovou konzoli TTL nebo přes ethernet. Výběr bude vycházet z toho, co máte k dispozici a s čím máte zkušenosti.
Prvotní konfigurace přes sériovou konzoli USB
Budete potřebovat kvalitní USB kabel s konektorem mikro-B. Ideální je od telefonu, který umí rychlé nabíjení proudem alespoň 2A. POZOR, Orange může ve špičkách překračovat maximální povolený odběr USB portu. Proto k němu nic dalšího nepřipojujte. Bude-li se Orange chovat divně, použijte jinou metodu konfigurace.
- Připojte Orange přes kvalitní USB kabel do mikro-B konektoru.
 - Na počítači se objeví další sériový port:
- Pod Linuxem to bude /dev/ttyUSBn, kde n je číslo od nuly výše
 - Pod Windows to bude COM3 a výše
 
 - Spusťte sériový emulátor terminálu (putty, minicom) a připojte se na port (115200 baud bez parity)
 - Pokud Orange naběhne rychleji, než se připojíte, přijdete o počáteční texty. Zkuste stisknout Enter, zobrazí se výzva k přihlášení.
 
Prvotní kongiruace přes sáriovou konzoli TTL
- Připojte Orange k napájecímu zdroji
 - Použijte převodník USB->TTL (3V). Mě se osvědčily převodníky s čipem CP2102. Odkaz viz výše.
 - Propojte převodník a Orange (třípinový header vedle ethernet portu). Nejprve GND, pak křížem RXD s TXD. 

 - Pripojte převodník přes USB do PC
 - Na počítači se objeví další sériový port:
- Pod Linuxem to bude /dev/ttyUSBn, kde n je číslo od nuly výše
 - Pod Windows to bude COM3 a výše
 
 - Spusťte sériový emulátor terminálu (putty, minicom) a připojte se na port (115200 baud bez parity)
 - Připojte napájecí zdroj. Nic dalšího nepřipojujte.
 
Prvotní konfigurace přes ethernet
- Připojte Orange ethernetem k hubu. Na síti musí být DHCP server
 - Připojte napájecí zdroj. Nic dalšího nepřipojujte.
 - Počkejte cca 1-2 minuty, než Orange naběhne
 - Podívejte se do seznamu klientů (leases) DHCP serveru a najděte Orange. Patrně bude mít MAC adresu začínající 12:42. Alternativně můžete použít skener sítě (např. nmap)
 - Spusťte SSH klienta (ssh, putty) a připojte se k Orange na standardní TCP port 22
 
Společná část konfigurace
Po připojení se objeví výzva k přihlášení.
Zadejte uživatelské jméno root a heslo 1234.

Ihned budete vyzváni ke změně hesla. Zadejte 1234 a pak 2x nové heslo, které se pokuste nezapomenout.

Pak zadejte uživatelské jméno neprovilegovaného uživatele. Toho pro tento projekt nebudete potřebovat.

Nastavení wifi
Spusťte příkaz armbian-config. Varování o nedostupné síti ignorujte.

Vyberte Network, wlan0, WiFi.

Vyberte vaši WiFi síť a zadejte heslo.
Opusťte nastavení Quit a 2x Cancel.
V příkazové řádce spusťte příkaz:
ifconfig wlan0
Vypíše se něco takového:
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet xxx.xxx.xxx.xxx  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::27cd:xxxx:xxxx:xxxx  prefixlen 64  scopeid 0x20<link>
        ether 12:42:ad:xx:xx:xx  txqueuelen 1000  (Ethernet)
Zapamatujte si IP adresu pro pozdější připojení přes WiFi.
Aktualizace a nastavení Armbianu
V příkazové řádce spusťte:
apt update
a pak
apt upgrade
Pokud bude tvrdit ...is another process using it?, tak se spustila automatická aktualizace a musíte nějaký čas počkat. Můžete spustit příkaz top a jednou za čas se podívat, jestli load average klesne k nule. Pak ho ukončete Ctrl+C.
Nastavte lokální časovou zónu:
dpkg-reconfigure tzdata
A vyberte nejlépe Europe/Prague.
Přidejte I2C sběrníci na PA11 a PA12 a restartujte.
zaddoverlay i2c0 shutdown -r now
Instalace software
apt-get install studna
Upravte konfiguraci
nano /etc/studnarc
Pokud nemáte připojená čidla, přepište hodnoty u řádek DHTIN či DHTOUT na 0. Uložte stiskem Ctrl+X.
Zapněte autostart démona studna a spusťte jej:
systemctl enable studna systemctl start studna
Konfigurace Apache
Co přesně znemená první řádka, nevím, nejsem tu od toho, abych všechno věděl :-) Následuje povolení PHP modulu v apache a následný restart.
a2dismod mpm_event a2enmod php7.0 systemctl restart apache2
Předlohy pro 3D tiskárnu

Předloha Studna.STL Doporučuji PETG, vrstva 0.2mm. Doba tisku asi 5.5h.
