O koupelně - Strop. Koupelny. Dlaždice. Zařízení. Opravit. Instalatérství

Jak vyrobit meteorologickou stanici vlastníma rukama. DIY meteorologická stanice (Meteostanice). Obecné schéma meteorologické stanice

Dívat se skrz různé projekty meteostanice, zaznamenal jsem jeden trend. Jedná se buď o senzor teploty a vlhkosti, nejčastěji milovaný čínský DHT-11 nebo DHT-22, ke kterému přidávají buď světelný senzor (Meteostanice na Arduinu s vizualizací dat) nebo tlakový senzor (Ethernetová meteostanice), popř. luxusní koupený za mnoho stovek dolarů (automatická meteorologická stanice na chatě)

Jelikož pro mě osobně není meteostanice bez měření směru a rychlosti větru meteostanicí a nejsem připraven utratit cca 700USD v podstatě za hračku, bylo rozhodnuto vyrobit něco podobného jako „drahé a sofistikovaný“, ale za nízkou cenu.

Elektronika


Nyní o měření směru větru. Bylo mnoho možností, od optických kodérů - tovární (drahé) nebo domácí výroby ve formě několika párů LED a fotodiod a disku s Grayovým kódem (složitý a mnoho komponent), až po magnet a 4-8 jazýčkové spínače (příliš jednoduché a nepřesné). Ve výsledku padla volba na AS5040 – magnetický enkodér. Protože není potřeba zvláštní přesnosti, je analogový výstup kodéru připojen k ADC mikrokontroléru.

Mikrokontrolér - PIC16F88. Výstup - RS485 do vnitřní sítě chytrý domov, o kterém je tato série článků. Celá elektronická část je sestavena na třech deskách.

To je vše s elektronikou, žádné nuance, nic zajímavého, vše je podle datových listů. Pojďme k mechanice.

Mechanika

Bohužel není možné pouzdro vytisknout na 3D tiskárně a téměř všechna tovární pouzdra mají problémy s voděodolností. Ložiska a vše ostatní jsou navíc rotační tělesa, což znamená, že kruhové pouzdro by bylo nejlogičtější volbou. Musel jsem obrátit svou pozornost na jiné oblasti – na zásobování vodou. Vzato jako tělo spojka„32“ pro kanalizaci a dvě trubky pro umístění ložiskových jednotek v nich. Z mosazi byly opracovány dvě zátky, do kterých byla zalisována dvě ložiska 626.

Magnety... Postačí skoro každý magnet na snímač rychlosti, ale se snímačem směru to bylo složitější. Potřebuje kulatý magnet s magnetizací od okraje k okraji

Zatímco většina těch, kteří prodávají, mají různé póly na různých stranách.

Ukázalo se ale, že potřebné magnety jsou umístěny na vřetenech motorů CD/DVD mechaniky.

Po sestavení vypadají ložiskové jednotky takto:

Po výrobě a montáži desek získávají snímače rychlosti a směru větru svou konečnou podobu

Vzhledem k tomu, že meteostanice je stále vyrobena z odpadových materiálů, řežeme tenisové míčky na oběžné kolo a vyrábíme také korouhvičku ze všeho, co nám přijde pod ruku. Natřeme to radikálně černě a dopadne to takhle.

Jako dešťový senzor používáme také polovinu tenisového míčku, ve kterém jsou dva kontakty umístěny mezi dvěma vrstvami geotextilie

Sestavíme, spojíme a přišroubujeme výš

Rozhraní

Jak jsem vám již řekl (Další chytrá domácnost, ve třech částech. Část třetí, uživatelské rozhraní), existují dva typy rozhraní. První pohled, ve kterém se na obrazovce zobrazují téměř všechna data ze zařízení, vypadá takto

Aktuální teplota, minimum, maximum, směr změny. Tlak je stejný. Vlhkost vzduchu. Vítr - směr a větrná růžice. Čísla jsou potřebnější pro ladění, ukazují, jak dlouho byla korouhvička v kterém sektoru. Rychlost větru, čas, hodnoty světelného senzoru (bez kalibrace, co naměřil ADC) a dešťový senzor. Všechna data a zpracování se provádí v mikrokontroléru meteostanice.

Druhý typ rozhraní je založen na widgetech. Zde je méně údajů: teplota, vlhkost, tlak, rychlost a směr větru

A kde bychom byli bez Android Wear – na hodinkách?

Vzhledem k tomu, že jednou za minutu jsou všechny regulátory dotazovány a zaznamenávány do databáze, všechna data o počasí jsou k dispozici pro analýzu nebo zobrazení ve formě grafů

Ve volném čase jsem si vzpomněl na jednoduchý domácí výrobek, který jsem viděl v časopise „Mladý přírodovědec“ a vyrobený v osmdesátých letech minulého století.

S jeho pomocí bylo zajímavé předpovídat počasí a druhý den pozorovat přesnost odečtů.

Toto provedení se samozřejmě nevyplatí srovnávat s metrologickými přístroji, ale jako hrubá předpověď je vcelku funkční.

Navíc takový systém umožňuje dětem rozvíjet dovednosti v pozorování a analýze přírodních jevů.

Proto to v článku popisuji jako radu domácí kutil o zhotovení jednoduchého barometru z žárovky a způsobech dešifrování přijatých informací. Textový materiál je doplněn vysvětlujícími obrázky, fotografiemi a videem.


Jak funguje domácí barometr

K předpovědi počasí se používá prostor krytý sklem žárovky s malým otvorem nahoře. Tato nádoba je naplněna čistou vodou. Je ovlivněno:

  • atmosférický tlak skrz štěrbinu ve skle;
  • vlhkost vzduchu;
  • teplota okolí.

Při komplexním působení těchto faktorů se povrchová vrstva vypařuje s kondenzací páry uvnitř skleněné baňky, aniž by vycházela otvorem. Na základě charakteru vzniklého kondenzátu, jeho tvaru a hustoty usuzují na nadcházející počasí a předpovídají stav atmosféry na příštích 12–24 hodin nebo o něco déle.

Požadované nástroje

Určitě budete potřebovat:

  • spálená nebo celá žárovka;
  • ochranné rukavice;
  • jehlový pilník nebo diamantovým vrtákem;
  • jeden krystal manganistanu draselného nebo kousek olova z chemické tužky - ne vždy.

K výrobě držáku barometru budete potřebovat buď lepidlo se stojanem.

Technologie výroby

Na ruce se nasazují ochranné rukavice. Budou chránit pokožku před řezy a malými úlomky skla. Žárovka je křehká, při náhodné nadměrné síle se může rozpadnout na malé úlomky. Měli byste s tím pracovat velmi opatrně.

V horní části baňky u základny je nutné vytvořit průchozí otvor o průřezu od jednoho do několika mm čtverečních, ne více. Bude komunikovat vnitřní dutinu válce s atmosférickým vzduchem.

Způsoby, jak vytvořit díru

Práce se soubory

Boční okraj ostří Do sklenice baňky opatrně vyřízněte otvor.

Je nutné kontrolovat množství síly: je velmi snadné vybrousit velkou mezeru nebo poškodit křehké sklo. Práci provádějte nad nádobou, do které budou padat skleněné piliny. Úklid na pracovišti tak bude bezpečnější.

Vrtání otvoru do skla

Tato metoda umožňuje vytvořit přísně kalibrovaný otvor kulatý tvar. Vyžaduje však praktické dovednosti při zpracování skla vrtáky malých průměrů. Můžete pracovat s vrtačkou nebo šroubovákem.

Běžný kovový vrták by měl být dobře naostřený a oblast vrtání označena a vyčištěna. Žárovka musí být bezpečně upevněna a vrtačka musí být používána při středních otáčkách a postupně snižovat jejich hodnotu. Odchylka vrtáku od svislice, stejně jako tlak, nejsou povoleny. I když jsou tyto požadavky splněny, existuje vysoká pravděpodobnost poškození baňky.

Pro vrtání otvorů se proto volí speciální vrtáky s diamantově potaženými hroty. Pracují s nimi velmi pečlivě.

Naplnění baňky vodou

Vyříznutým otvorem se do žárovky musí nalít o něco méně než třetina jejího vnitřního objemu.

Podomácku vyrobený barometr vyrobený z žárovky je v podstatě připraven k použití. Ale pro snadné použití můžete:

  • obarvte vodu v přístroji např. roztokem manganistanu draselného. Kondenzace bude lépe viditelná;
  • Poskytněte závěsné zařízení nebo stojan.

O montáži podomácku vyrobeného barometru

Montážní jednotka zařízení je vyrobena pro provoz v jedné ze dvou možností:

  1. zavěšení na rukojeti nebo háku;
  2. trvalá instalace na parapet.

Očko na zavěšení

Použijte kus měděného drátu, ohněte jej do smyčky a připájejte volné konce uvnitř kontaktu základny.

Zbývá už jen pověsit domácí barometr na připravený háček nebo rukojeť.

Vydržet

Můžete použít uzávěr vhodného průměru z lahvičky s kosmetikou nebo pracími prostředky.

Vlepí se do něj žárovka nebo se přichytí jiným přístupným způsobem, například na plastelínu nebo tmel. takhle domácí design Zařízení je vhodné umístit na parapet na libovolné volné místo.

Hlavní bezpečnostní podmínkou je omezení přístupu k zařízení pro malé děti a domácí mazlíčky, kteří mohou skleněnou baňku snadno převrhnout nebo rozbít.

Jak dešifrovat informace a používat zařízení

Monitorování kondenzace

Následující tabulka vám pomůže analyzovat stav vlhkosti v baňce a pomocí ní předpovídat počasí.

Stav kondenzátuPředpověď počasí
Tvorba malých kapek kondenzátu na vnitřních stěnách baňky.Bude zataženo. Neočekávají se žádné srážky.
Středně velké kapky kondenzátu ulpívají na stěnách. Mezi nimi jsou jasně viditelné suché pruhy umístěné svisle.Předpovídá se polojasno.
Na stěnách baňky zůstávají velké kapky kondenzátu.Očekávají se krátká období dešťů.
Ze stěn stékají velké kapky kondenzátu.Budou déšť a bouřky.
Horní polovina baňky barometru je suchá a velké kapky kondenzátu se shromáždily poblíž vody pod ní.Dešťová fronta přejde s odstupem bez vlivu na naše území.
Stěny žárovky jsou suché, ale venku prší.Zítra nás čeká změna počasí s krásnou slunečnou oblohou.
Vlhké kapky kondenzace se soustředily na severní stěnu barometru.Odpoledne se očekávají srážky.

Tuto tabulku lze vytisknout na tiskárně a umístit ji poblíž domácího zařízení. Není nutné si všechny tyto informace pamatovat. Děti, když jsou zapojeny do meteorologické hry, začnou velmi rychle uchovávat všechny informace ve své mysli.

Vlastnosti provozu

Podomácku vyrobený barometr budete muset používat pouze ve vytopené místnosti. Při záporných teplotách voda a kondenzát jednoduše zamrznou. Umístěte jej na okno nebo parapet. Je vhodné, aby byl instalován na severní straně budovy. Předpokládá se, že to poskytuje přesnější údaje.

To lze vysvětlit pouze tím, že takové okno je méně vystaveno teplu ze slunečních paprsků, funguje v chladnější části domu a přesněji modeluje povětrnostní podmínky venku.

O přesnosti odečtů

Naše tělo, stejně jako všechno živé, reaguje na změny počasí. Je ovlivněn zejména tlakem vzduchu a vlhkostí. Protože se nemění okamžitě, ale postupně, je možné to předvídat.

K jejich sledování meteorologové používají:


Všechny tyto procesy výrazně deformujeme.

Historicky lidé začali chápat pojem „barometr“ jako zařízení, které umožňuje předpovídat počasí změnou atmosférický tlak. To bylo usnadněno aplikací na aneroidní stupnici takových označení jako „jasno“, „sucho“, „déšť“ a další přírodní jevy.

Toto je poněkud zjednodušená představa předpovědí meteorologických událostí, ale ani tuto úroveň naše domácí zařízení nebude schopno plně pokrýt:

  • atmosférický tlak v baňce se při průchodu mírně mění stavba budovy a díry;
  • Odečty jsou ovlivněny podmínkami vlhkého prostředí místnosti, které vytváří ventilační systém.

Kromě toho se v poslední době široce používají v každodenním životě. A také regulují vnitřní vlhkost a ovlivňují činnost podomácku vyrobeného barometru.

I při zohlednění těchto podmínek v létě je však možné s jistotou předpovídat chování počasí s přesností až 70 %. V zimě vlivem vytápění toto číslo klesá, ale ne kriticky.

V každém případě se dá vždy srovnat s profesionálními výpočty meteorologických programů zveřejněnými na internetu a lze s nimi vštípit dětem pozorovací schopnosti a rozvíjet zálibu v analýze složitých přírodních jevů.

To by se nemělo zanedbávat, protože vyrobit domácí barometr není nic složitého, zabere to asi deset minut. Děti vaši práci ocení, když dostanou vzdělávací základnu hraček v podobě domácí meteostanice rozvíjející pozornost.

Nyní doporučuji zhlédnout video majitele MrSam0delkina „Barometr ze žárovky“.

Sledování počasí je velmi vzrušující činností. Rozhodl jsem se postavit vlastní meteostanici na základě populární .

Prototyp meteostanice vypadá takto:

Funkce mé meteostanice:

  • měření a zobrazení pokojové a venkovní teploty;
  • zobrazení aktuálního času (hodiny a minuty);
  • zobrazení aktuálních fází měsíce a lunárního dne;
  • přenos výsledků měření do počítače přes sériové připojení;
  • přenos výsledků měření protokolem MQTT pomocí aplikace na vašem počítači.


Hex
-soubor
firmware pro (verze z 9. května 2018) - .
Jak blikat hex- soubor na palubu Arduino, popsal jsem.

Mikrokontrolér Arduino Nano 3.0

„Srdcem“ mé meteostanice je mikrokontrolér eBay):

Pro ovládání zobrazení a dotazování senzorů používám časovač 1 Arduino, což způsobuje přerušení s frekvencí 200 Hz (perioda - 5 ms).

Indikátor

Pro zobrazení naměřených hodnot senzoru a aktuálního času jsem se připojil k Arduinočtyřmístný LED indikátor Foryard FYQ-5643BH se společnými anodami (jsou spojeny anody identických segmentů všech výbojů).
Indikátor obsahuje čtyři sedmisegmentové číslice a dvě oddělovací (hodinové) tečky:

Anody indikátoru jsou připojeny přes proud omezující odpory na svorky Arduino:

vybít 1 2 3 4
závěr A3 A2 D3 D9

Katody segmentů jsou spojeny s kolíky Arduino:

segment A b C d E F G p
závěr D7 D12 D4 D5 D6 D11 D8 D13

Indikátorový segment se rozsvítí, pokud je vysoký potenciál na anodě příslušného výboje (1) a nízký potenciál na katodě (0).

Pro zobrazení informací na indikátoru používám dynamické zobrazení - vždy je aktivní pouze jedna číslice. Aktivní výboje se střídají s frekvencí 200 Hz (doba zobrazení 5 ms). Blikání segmentů je přitom okem neviditelné.

Teplotní čidlo DS18x20

Abych mohl měřit teplotu na dálku, připojil jsem čidlo , která poskytuje měření venkovní teploty v širokém rozsahu. Snímač je připojen ke sběrnici 1-Drát a má tři výstupy - napájení ( VCC), údaje ( DAT), Země ( GND):

výstup senzoru VCC DAT GND
závěr Arduino 5V A1 GND

Mezi kolíky VCC A DAT Přiložil jsem 4,7 kOhm pull-up rezistor.

Pro převod mezi stupni Celsia a Fahrenheita můžete použít následující tabulku:

Senzor jsem umístil mimo okno domu do plastového pouzdra na kuličkové pero:

\

Profesionální meteostanice používají Stevensonovu clonu, která chrání teploměr před přímým slunečním zářením a zajišťuje cirkulaci vzduchu. Obrazovka Stevenson):

Senzor tlaku a teploty BMP280

Rtuťové barometry a aneroidní barometry se tradičně používají k měření atmosférického tlaku.

V rtuťový barometr atmosférický tlak je vyvážen hmotností sloupce rtuti, jehož výška se používá k měření tlaku:

V aneroidní barometr používá se komprese a expanze krabice za atmosférického tlaku:

K měření atmosférického tlaku a pokojové teploty v mé domácí meteostanici používám senzor - malý SMD-velikost snímače 2 x 2,5 mm, založené na piezorezistivní technologii:

Šátek se senzorem byl zakoupen na obchodní platformě eBay:

Snímač je připojen ke sběrnici I2C(kontaktní údaje - SDA/SDI, synchronizační kontakt - SCL/SCK):

výstup senzoru VCC GND SDI SCK
závěr Arduino 3V3 GND A4 A5

Adafruit- soubory Adafruit_Sensor.h, Adafruit_BMP280.h, Adafruit_BMP280.cpp.

Jednotky atmosférického tlaku

Funkce senzoru čístTlak zobrazuje atmosférický tlak v pascalech. Základní jednotkou měření atmosférického tlaku je hektopascal(hPa) (1 hPa = 100 Pa), jehož analogem je nesystémová jednotka " milibar" (mbar) (1 mbar = 100Pa = 1hPa). Pro převod mezi běžně používanými jednotkami tlaku mimo systém " milimetr rtuť " (mmHg) a hektopascaly se používají následující poměry:
1 hPa = 0,75006 mm Hg. Umění. ≈ 3/4 mmHg; 1 mmHg =1,3332 hPa ≈ 4/3 hPa.

Závislost atmosférického tlaku na nadmořské výšce

Atmosférický tlak může být prezentován v absolutní i relativní formě.
Absolutní tlak QFE(Angličtina) absolutní tlak) je aktuální atmosférický tlak, který nezohledňuje korekci nad hladinou moře.
Atmosférický tlak klesá přibližně o 1 hPa se zvýšením výšky o 1 m:

Barometrický vzorec vám umožňuje určit korekci hodnot barometru pro získání relativního tlaku (v mmHg):
$\Delta P = 760 \cdot (1 - (1 \over (10^ ( (0,0081350 \cdot H) \over (T + 0,00178308 \cdot H) ))))$ ,
kde $T$ je průměrná teplota vzduchu na Rankinově stupnici, ° Ra, $H$ - výška nad hladinou moře, stopy.
Převod stupňů Celsia na stupně Rankina:
$^(\circ)Ra = (^(\circ)C \cdot 1,8) + 491,67 $
Barometrický vzorec se používá pro barometrickou nivelaci - stanovení výšek (s chybou 0,1 - 0,5%). Vzorec nebere v úvahu vlhkost vzduchu a změnu gravitačního zrychlení s výškou. Pro malé rozdíly ve výšce lze tuto exponenciální závislost aproximovat s dostatečnou přesností lineární závislostí.
Relativní tlak QNH(Angličtina) relativní tlak, Q-kód Námořní výška) je atmosférický tlak upravený na střední hladinu moře. střední hladina moře, MSL) (Pro JE a teplota 15 stupňů Celsia) a je zpočátku nastaven s ohledem na nadmořskou výšku, ve které se meteorologická stanice nachází. Lze to zjistit z dat meteorologické služby, odečtů z kalibrovaných přístrojů na veřejných místech, letištích (ze zpráv METAR), z internetu.
Například pro nedaleké letiště Gomel ( UMGG) Vidím aktuální předpověď počasí METAR na ru.allmetsat.com/metar-taf/russia.php?icao=UMGG:
UMGG 191800Z 16003MPS CAVOK M06/M15 Q1014 R28/CLRD//NOSIG ,
Kde Q1014- tlak QNH na letišti je to 1014 hPa.
Historie zpráv METAR k dispozici na adrese aviationwxchartsarchive.com/product/metar.
Pro normální relativní tlak vzduchu QNH předpokládá se tlak 760 mm Hg. Umění. nebo 1013,25 hPa (při teplotě 0ºС, v zeměpisné šířce 45º severní nebo jižní polokoule).
Nastavil jsem tlak pro aneroidní barometr QNH pomocí nastavovacího šroubu citlivosti:

Předpověď počasí

Analýza změn tlaku umožňuje sestavit předpověď počasí a její přesnost je tím vyšší, čím prudčeji se tlak mění. Například staré pravidlo pro námořníky říká, že pokles tlaku o 10 hPa (7,5 mm Hg) po dobu 8 hodin ukazuje na příchod silného větru.

Odkud se bere vítr? Vzduch proudí do středu oblasti nízkého tlaku a vytváří vítr- horizontální pohyb vzduchu z oblastí vysokého tlaku do oblastí nízkého tlaku (vysoký atmosférický tlak stlačuje vzduchové hmoty do oblastí nízkého atmosférického tlaku). Pokud je tlak velmi nízký, může vítr dosáhnout silného bouřky. Přitom v oblasti snížena tlak (tlaková deprese nebo cyklóna), teplý vzduch stoupá a tvoří oblačnost, která často přináší déšť nebo sníh.

V meteorologii se za směr větru považuje směr, ze kterého vítr fouká:

Tento směr se snižuje na osm bodů.

Algoritmus se často používá k předpovědi počasí na základě barometrického tlaku a směru větru. Zambretti.

Senzor vlhkosti

Pro stanovení relativní vlhkosti vzduchu používám modul DHT11(zakoupeno na tržišti eBay):

Senzor vlhkosti DHT11 má tři výstupy - napájení ( + ), údaje ( ven), Země ( - ):

výstup senzoru + ven -
závěr Arduino 5V D10 GND

Pro práci se senzorem používám knihovnu Adafruit- soubory DHT.h, DHT.cpp.

Vlhkost vzduchu charakterizuje množství vodní páry obsažené ve vzduchu. Relativní vlhkost ukazuje procento vlhkosti ve vzduchu vzhledem k maximálnímu možnému množství při aktuální teplotě. Používá se k měření relativní vlhkosti :

Pro člověka je optimální rozsah vlhkosti vzduchu 40 ... 60 %.

Hodiny reálného času

Modul jsem použil jako hodiny reálného času RTC DS1302(šátek s hodinkami byl zakoupen na obchodní platformě eBay):

Modul DS1302 napojuje na autobus 3-drát. Chcete-li použít tento modul ve spojení s Arduino knihovna vyvinuta iarduino_RTC ( z iarduino.ru).

Deska s modulem DS1302 má pět pinů, které jsem připojil k pinům desky Arduino Nano:

závěr RTC VCC GND RST CLK DAT
závěr Arduino 5V GND D2 D1 D0

Abychom zachovali správné hodnoty hodin při vypnutém napájení, vložil jsem do slotu na desce baterii CR2032.

Přesnost mého hodinového modulu se ukázala jako nepříliš vysoká - hodiny jsou rychlé asi o jednu minutu za čtyři dny. Proto jsem po zapnutí napájení meteostanice resetoval minuty na „nulu“ a hodiny na nejbližší podržením tlačítka připojeného na pin A0 Arduina. Po inicializaci se pin A0 používá k přenosu dat přes sériové připojení.

Přenos dat do počítače a práce přes protokol MQTT

Pro přenos dat přes sériové připojení do Arduino spojuje USB-UART konvertor:

Závěr Arduino slouží k přenosu dat ve formátu 8N1(8 datových bitů, žádná parita, 1 stop bit) při 9600 bps. Data jsou přenášena v paketech, přičemž délka paketu je 4 znaky. Přenos dat se provádí v " bit-bang", bez použití hardwarového sériového portu Arduino.

Formát přenášených dat:

Parametr 1. bajt 2. bajt 3. bajt 4. bajt
venkovní teplota Ó prostor nebo mínus desítky stupňů nebo prostor jednotky stupňů
pokojová teplota i prostor nebo mínus desítky stupňů nebo prostor jednotky stupňů
Atmosférický tlak p stovky mm r. Umění. desítky mmHg jednotky mmHg S.
relativní vlhkost h prostor desítky procent nebo prostor jednotky procent
aktuální čas desítky hodin jednotky hodin desítky minut jednotky minut

MQTT

Golang protokolová klientská aplikace MQTT, odesílání informací přijatých z meteorologické stanice na server ( MQTT-makléř) :

Servis umožňuje vytvořit účet s bezplatným tarifem“ " (limit: 10 připojení, 10 Kb/s):

Pro sledování odečtů meteostanice můžete použít Android-aplikace :

Výživa

K napájení meteostanice, kterou používám Nabíječka ze starého mobilní telefon Motorola, produkující napětí 5 V s proudem až 0,55 A a připojené ke kontaktům 5V(+) a GND (-):

Pro napájení můžete použít i 9V baterii připojenou na kontakty. VIN(+) a GND (-).

Provoz meteostanice

Při spuštění jsou senzory inicializovány a testovány.

Při absenci senzoru DS18x20 chyba "E1" se zobrazí, když není k dispozici žádný senzor - chyba "E3".

Poté se spustí pracovní cyklus meteostanice:

  • měření a zobrazení venkovní teploty;
  • měření a zobrazení pokojové teploty;
  • měření a zobrazování atmosférického tlaku a jeho trendu;
  • měření a zobrazení relativní vlhkosti vzduchu;
  • zobrazení aktuálního času;
  • zobrazení měsíční fáze a lunárního dne.


Video mé meteorologické stanice v provozu je k dispozici na mém -kanál: https://youtu.be/vVLbirO-FVU

Zobrazení teploty

Při měření teploty se zobrazují dvě číslice teploty a pro zápornou teplotu znaménko mínus (se symbolem stupně na číslici úplně vpravo);
pro venkovní teplotu se nahoře zobrazuje znak stupně:


pro pokojovou teplotu - níže:

Zobrazení tlaku

Při měření tlaku se zobrazují tři číslice tlaku v mmHg (se symbolem " P"na zcela správném místě):

Pokud tlak prudce klesne, pak místo symbolu " P„symbol“ se zobrazí číslicí úplně vpravo L"Pokud prudce vzrostla, pak" H". Kritérium pro ostrost změny je 8 mm Hg za 8 hodin:

Protože moje meteorologická stanice zobrazuje absolutní tlak ( QFE), pak se hodnoty ukazují jako poněkud podhodnocené ve srovnání s informacemi ve zprávě METAR(který poskytuje QNH) (14 UTC, 28. března 2018):

Tlakový poměr (podle ATIS) činil $(1015 \nad 998) = 1,017 $. Nadmořská výška letiště Gomel (kód ICAO UMGG) nad mořem je 143,6 m. Teplota podle ATIS byla 1 ° C.

Údaje z mé meteorologické stanice se téměř shodovaly s absolutním tlakem QFE podle informací ATIS!

Maximální/minimální tlak ( QFE), zaznamenané mou meteorologickou stanicí za celou dobu pozorování:

Zobrazení relativní vlhkosti

Relativní vlhkost vzduchu se zobrazuje v procentech (symbol procent je zobrazen ve dvou pravých číslicích):

Zobrazení aktuálního času

Aktuální čas se zobrazuje na indikátoru ve formátu „HH:MM“, přičemž oddělovací dvojtečka bliká jednou za sekundu:

Zobrazení měsíčních fází a lunárního dne

První dvě číslice indikátoru zobrazují aktuální lunární fázi a další dvě - aktuální lunární den:

Měsíc má osm fází (jsou uvedeny anglické a ruské názvy (modře - nepřesné)):

Fáze jsou na indikátoru zobrazeny pomocí piktogramů:

fáze piktogram
rostoucí srp (půlměsíc)
ubývající srp (půlměsíc)

Přenos dat do počítače

Pokud připojíte meteorologickou stanici s USB-UART převodník (například na bázi mikroobvodu CP2102), připojen k USB- počítačový port, můžete použít terminálový program pro sledování dat přenášených meteorologickou stanicí:

Vyvíjel jsem v programovacím jazyce golang program, který zaznamenává pozorování počasí a odesílá data službě , a lze si je prohlédnout na Android-smartphone pomocí aplikace :

Podle deníku pozorování počasí můžete například sestavit graf změn atmosférického tlaku:
příklad grafu se znatelným minimálním tlakem


příklad grafu s mírným zvýšením tlaku

Plánovaná vylepšení:

  • přidání senzorů směru a rychlosti větru

V meteorologických stanicích se k měření rychlosti větru používá anemometr na tři šálky (1) a k určení směru větru se používá korouhvička (2):

Používá se také k měření rychlosti větru horkovodičové anemometry(Angličtina) anemometr s horkým drátem). Jako vyhřívaný drát můžete použít wolframové vlákno ze žárovky s rozbité sklo. U průmyslově vyráběných horkovodičových anemometrů je snímač obvykle umístěn na teleskopické trubici:

Princip činnosti tohoto zařízení spočívá v tom, že teplo je odváděno z topného tělesa v důsledku konvekce prouděním vzduchu – větrem. V tomto případě je odpor vlákna určen teplotou vlákna. Zákon změny odporu vlákna $R_T$ v závislosti na teplotě $T$ má tvar:
$R_T = R_0 \cdot (1 + (\alpha \cdot (T - T_0)))$ ,
kde $R_0$ je odpor vlákna při teplotě $T_0$, $\alpha$ je teplotní koeficient odporu (pro wolfram $\alpha = 4,5\cdot(10^(-3) (^(\circ)( C^( -1))))$).

Se změnou rychlosti proudění vzduchu se teplota mění při konstantním proudu vlákna (anemometr konstantního proudu, anem. CCA). Pokud je teplota topného tělesa udržována konstantní, pak proud skrz těleso bude úměrný rychlosti proudění vzduchu (anemometr konstantní teploty, anglicky). CTA).

Pokračování příště

PRŮVODCE, KTERÝ SI VLASTNÍM VYTVOŘENÍM JEDNODUCHÉ DOMÁCÍ METEOSTANICE

Pokud je váš počítač zapnutý celý den nebo dokonce nepřetržitě, můžete jej použít k ovládání domácí meteostanice. Cílem je vytvořit jednoduchou a levnou meteorologickou stanici, která bude využívat osobní počítač (PC). PC funguje jako čtečka, zpracovatel a odesílatel naměřených meteorologických dat na web Meteopost. Komunikace mezi počítačem a měřicí jednotkou bude probíhat prostřednictvím 1-Wire sítě.

Složení měřicího komplexu
1. Osobní počítač s operačním systémem Windows XP nebo vyšším a volným COM portem.
2. Adaptér pro COM port (1drát - převodník RS232)
3. 4-žilový kroucený ethernetový kabel, délka by měla být dostatečná od COM portu k měřicí jednotce
4. Napájecí zdroj 5V DC s dobrou regulací napětí
5. Měřicí jednotka (instalovaná venku)
6. PC software - aplikace "Meteostanice".

VARIANTA č. 1 - JEDEN SNÍMAČ

Nejprve se podívejme na nejjednodušší možnost - meteostanici s jedním teplotním čidlem. To nevyžaduje další napájení (položka 4). A systém je velmi zjednodušený. Adaptér pro port COM (položka 2) lze vyrobit podle tohoto schématu. Adaptér se skládá ze dvou zenerových diod na 3,9V a 6,2V, dvou Schottkyho diod a jednoho rezistoru.

Schéma adaptéru pro COM port


Adaptér v pouzdře D-SUB

Místo pájení kabelu a teplotního čidla včetně svorek čidla musí být dobře chráněno před vlhkostí. Nejlepší je použít lepidlo na bázi polyuretanu.


Vodotěsné vodiče senzorů

Tento systém zajistí sledování teploty s přesností na desetiny stupně. V tomto případě bude v okně aplikace viditelný graf závislosti teploty vzduchu na čase a ikona na hlavním panelu bude vždy zobrazovat aktuální teplotu. Aplikace umožňuje nastavit interval měření.

NÁKLADY NA RÁDIOVÉ DÍLY - ne více než 50 UAH.

VARIANTA č. 2 - ČTYŘI SNÍMAČE

Složitější meteostanice se čtyřmi senzory: teplota, vlhkost, světlo, tlak. Protože pouze teplotní senzor bude digitální a zbytek bude analogový, systém používá čtyřkanálový ds2450 ADC. Tento ADC podporuje 1-wire protokol. Obvod vyžaduje další zdroj energie. Napájecí zdroj musí poskytovat stabilitu vysokého napětí. Ale protože výše popsaný obvod adaptéru má nevýhodu - nemožnost připojení k senzorům vnější zdroj napájení kvůli nedostatku skutečné hmoty (-), používáme jiný obvod adaptéru. Tento adaptér také pasuje do pouzdra konektoru D-SUB COM portu. Nyní jsou v kabelu tři vodiče: zem (-), +5V a datový.


Obvod adaptéru pro COM port s externím napájením

Obvod měřicí jednotky lze snadno vytvořit i na prkénku. Jen je třeba věnovat zvláštní pozornost hydroizolaci kontaktů. Nejjednodušší je rozpustit parafín a nanést jej štětcem na všechna holá místa na desce. Pokud deska není chráněna před vodou, bude docházet k únikům napětí a k mnoha chybám měření. V našem případě i setiny Voltu výrazně ovlivňují výsledky.


Blokové schéma měření

Měřicí jednotka musí být umístěna v krytu tak, aby byla deska a snímače chráněny před přímým vystavením srážkám a slunečnímu záření. Pro tyto účely se dobře hodí krabice z hustého pěnového plastu. Ve stěnách krabice (dno a stěna na straně stínu) musíte udělat více otvorů pro ventilaci. Vnitřní stěny boxu je vhodné pokrýt hliníkovou fólií pro dodatečnou ochranu před infračerveným zářením, jinak dojde k chybě v měření teploty. Všechny senzory, kromě světla, jsou umístěny přímo na desce. Světelný senzor (fotorezistor) je vyjmut z desky na vodičích a instalován do otvoru ve spodní části pěnového pouzdra. Tak, aby povrch snímače směřoval dolů. V tomto případě nebudou na snímač padat srážky a zejména v zimě jej to ochrání před námrazou. Pro hydroizolaci je třeba světelný senzor ošetřit např. transparentním lepidlem na bázi polyuretanu ( silikonový tmel test selhal, unikal proud). Ošetřete včetně (!) fotocitlivou zónu fotorezistoru. Naplňte vodiče snímače lepidlem a vložte je do izolační trubice. Konce vývodů připájejte na malou desku. A na tuto desku připájejte vodiče z měřicí jednotky. Naplňte místa pájení parafínem. V opačném případě při silném dešti a větru může dojít k nefunkčnosti meteostanice a vy ji budete muset rozebrat a vše vysušit. Jednotku lze připojit ke kabelu pomocí konektoru. Musíte však použít speciální konektor odolný proti vlhkosti - systém bude fungovat v obtížných povětrnostních podmínkách.

Pokud musíte pouzdro umístit mimo okno výškové budovy (není možné jej instalovat na stojan u země), pak je nutné krabici co nejvíce odstranit ze stěny domu, na držák. Jinak ohřívání vzduchu od stěny dává velmi zkreslené údaje o teplotě. V soukromém domě je samozřejmě lepší vyrobit stánek s opravdovým počasím. Musíme dbát na to, aby bylo pouzdro bezpečně upevněno, jinak mohou silné poryvy větru strhnout naši konstrukci.


Měřicí jednotka na držáku

Výstupní napětí napájecího zdroje (PSU) by mělo být v rozmezí 4,8-5,3V. Fungovat bude i nabíjení ze starého telefonu. Pokud však zdroj nemá stabilizátor, je potřeba jej přidat do zdroje, protože Pro přesnost měření je velmi důležitá přítomnost stabilního napětí. Zda se na výstupu zdroje mění desetiny nebo setiny voltu, si můžete alespoň ověřit testerem. Skoky o desetiny voltu nejsou povoleny. Jednoduché schéma 5V stabilizátor je zobrazen níže. Vstup napájení může být od 7 do 17V. Výstup bude asi 5V. Poté musíme připojit náš kabel (který jde do měřicí jednotka) k napájecímu zdroji a změřte napětí zkoušečkou na druhém konci kabelu. Toto napětí může být o něco nižší než přímo na výstupu napájecího zdroje kvůli odporu kabelu. Toto naměřené napětí je nutné zadat v nastavení aplikace jako "Napájecí napětí snímače".


Typický obvod regulátoru napětí

NÁKLADY NA KOMPONENTY METEOSTANICE

Přibližné náklady na rádiové komponenty (ceny 2015 v obchodě).
1. Snímač teploty ds18b20 - 25 UAH
2. ADC ds2450 – 120 UAH
3. Fotorezistor LDR07 - 6 UAH
4. Čidlo vlhkosti HIH-5030 - 180 UAH
5. Snímač tlaku MPX4115A - 520 UAH.
CELKEM: 850 UAH nebo 37 $

Zbývající prvky dohromady nestojí více než 50 UAH, napájení lze vzít například ze staré „nabíječky“ pro váš telefon.


Označení rádiových prvků

SOFTWARE PRO METROSTANICE

Vyvinuli jsme aplikaci pro Windows, kterou zdarma poskytneme každému, kdo si chce takovou meteostanici postavit. Umožní vám sledovat počasí na vašem PC.


Okno PC aplikace

Na systémové liště se zobrazuje teplota vzduchu

Aplikace umí posílat všechna naměřená data na náš server „Meteopost“ a na speciální stránce (příklad) si můžete všechna data počasí prohlížet z prohlížeče na PC. Stránka je přizpůsobena i pro prohlížeč mobilního telefonu.


Snímek obrazovky prohlížeče mobilního telefonu

ZÁVĚR
Můžete ušetřit na nákladech na díly, pokud je koupíte od Číňanů na AliExpress. Meteostanici je možné sestavit bez jakéhokoli čidla, s výjimkou čidla teploty. Našemu ADC zbývá jeden volný vstup, takže může přijímat i signál z větrného senzoru. Ale jelikož jsme ve městě, tak takový senzor prostě nemáme kam nainstalovat a otestovat. V městských oblastech nebude adekvátní měření rychlosti a směru větru. Metody vlastní výroby Senzory rychlosti větru jsou podrobně popsány mnoha nadšenci na netu. Tovární čidlo je dost drahé.

Sestavit takovou meteostanici zvládne i radioamatér s průměrnými dovednostmi. Aby to bylo ještě jednodušší, nemusíte ředit tištěný spoj a sestavte namontovanou montáží na prkénko na krájení. Vyzkoušeno - funguje.

Snažili jsme se vytvořit dostupnou a levnou meteostanici. K tomuto účelu se v systému používá zejména počítač. Pokud to vyloučíte, tak je potřeba vyrobit přídavnou zobrazovací jednotku, jednotku přenosu dat do sítě atd., což výrazně navýší cenu. Například nyní populární „Meteostanice Netatmo“ s podobnými měřenými parametry stojí asi 4 000 UAH (200 $).

Jsme připraveni pomoci konzultacemi každému, kdo si takovou meteostanici chce vyrobit. Poskytneme také potřebný software a připojíme vaši stanici k našemu webu.

DIY meteostanice.

Byl večer, po Novém roce se nedalo nic dělat. Jako obvykle chci během zimních novoročních svátků zaměstnat hlavu a ruce něčím užitečným a kreativním. Během těchto novoročních svátků jsem se rozhodl vyrobit meteorologickou stanici vlastníma rukama. Začal jsem se s předstihem připravovat, před Novým rokem nakoupil a smontoval všechny komponenty a o prázdninách dělal hlavní programování.

(pod řezem je spousta fotek!)

Nejprve projdu komponenty; nebudu dávat odkazy, protože produkty na eBay (v mém osobním účtu) byly archivovány. Na eBay jsem nakoupil mnoho komponentů. Vyzkoušel jsem aukci poprvé, předtím jsem vždy kupoval „kup teď“. Co mohu říci, pokud se do nakupování nehrnete, můžete některé komponenty pořídit levněji (rozdíl je někdy dvojnásobný).

Snímač tlaku VMR085
Toto je hlavní senzor. Když jsem to viděl na eBay, věděl jsem, že si chci postavit domácí meteostanici.
Senzor dorazil v obyčejné obálce, uvnitř překrytý bublinkovou fólií.

Uvnitř obálky byla vizitka prodejce a senzor, zabalený v antistatickém sáčku a zabalený do další vrstvy bublinkové fólie.

Antistatický vak byl utěsněn, aby vlhkost během letu neohrožovala senzor

Vyjmeme senzor. Na jedné straně je připájená řada kontaktů, které byly vloženy do pěny, aby se zabránilo jejich ohýbání. Na druhé straně je samotný senzor a označení kontaktů.




Všechno by bylo v pořádku, ale označení kontaktů je aplikováno zrcadlově.
Senzor je připojen přes sběrnici I2C a je napájen 3,3 V. Tzn., že pro normální provoz potřebujete 4 vodiče (+, -, SDA, SCL)
Senzor můžete dotazovat 2 způsoby: buď prostřednictvím knihovny, nebo pomocí funkcí přímo ve skice.
Příklad programu:

#zahrnout

#define BMP085_ADDRESS 0x77 // I2C adresa BMP085

Const unsigned char OSS = 0; // Nastavení převzorkování

// Kalibrační hodnoty
int acl;
int ac2;
int ac3;
unsigned int ac4;
unsigned int ac5;
unsigned int ac6;
int bl;
int b2;
int mb;
int mc;
int md;

Krátká teplota;
dlouhý tlak;

Void setup()
{
Serial.begin(9600);
Wire.begin();
bmp085Calibration();
}

void loop()
{
teplota = bmp085GetTemperature(bmp085ReadUT());
tlak = bmp085GetPressure(bmp085ReadUP());
Serial.print("Teplota: ");
Serial.print(teplota/10,0, DEC);
Serial.println("C");
Serial.print("Tlak: ");
Serial.print(tlak/133.322, DEC);
Serial.println(“mm Hg”);
Serial.println();
zpoždění(1000);
}

Void bmp085Calibration()
{
ac1 = bmp085ReadInt(0xAA);
ac2 = bmp085ReadInt(0xAC);
ac3 = bmp085ReadInt(0xAE);
ac4 = bmp085ReadInt(0xB0);
ac5 = bmp085ReadInt(0xB2);
ac6 = bmp085ReadInt(0xB4);
b1 = bmp085ReadInt(0xB6);
b2 = bmp085ReadInt(0xB8);
mb = bmp085ReadInt(0xBA);
mc = bmp085ReadInt(0xBC);
md = bmp085ReadInt(0xBE);
}

Krátké bmp085GetTemperature (nepodepsané int ut)
{
dlouhé x1, x2;
x1 = (((long)ut - (long)ac6)*(long)ac5) >> 15;
x2 = ((dlouhý)mc<< 11)/(x1 + md);
b5 = x1 + x2;

Návrat ((b5 + 8)>>4);
}

Long bmp085GetPressure (nepodepsané dlouho nahoru)
{
dlouhé x1, x2, x3, b3, b6, p;
bez znaménka dlouhé b4, b7;
b6 = b5 - 4000;
// Vypočítejte B3
x1 = (b2 * (b6 * b6)>>12)>>11;
x2 = (ac2 * b6)>>11;
x3 = x1 + x2;
b3 = (((((dlouhé)ac1)*4 + x3)<>2;
// Vypočítejte B4
x1 = (ac3 * b6)>>13;
x2 = (bl * ((b6 * b6)>>12))>>16;
x3 = ((x1 + x2) + 2)>>2;
b4 = (ac4 * (dlouhé bez znaménka)(x3 + 32768))>>15;
b7 = ((dlouhé bez znaménka)(nahoru - b3) * (50000>>OSS));
pokud (b7< 0x80000000)
p = (b7<<1)/b4;
jiný
p = (b7/b4)<<1;
x1 = (p>>8) * (p>>8);
x1 = (x1 * 3038)>>16;
x2 = (-7357 * p)>>16;
p += (x1 + x2 + 3791)>>4;
vrátit p;
}

// Načtení 1 bajtu z BMP085 na "adrese"
char bmp085Read (nepodepsaná char adresa)
{
nepodepsané char data;

Wire.write(adresa);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 1);
while(!Wire.available())
;
return Wire.read();
}

Int bmp085ReadInt (nepodepsaná char adresa)
{
unsigned char msb, lsb;
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(adresa);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 2);
while(Wire.available()<2)
;
msb = Wire.read();
lsb = Wire.read();
vrátit (int) msb<<8 | lsb;
}

// Přečtěte si nekompenzovanou hodnotu teploty
unsigned int bmp085ReadUT()
{
unsigned int ut;
// Zapište 0x2E do registru 0xF4
// Toto vyžaduje čtení teploty
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(0xF4);
Wire.write(0x2E);
Wire.endTransmission();
// Počkejte alespoň 4,5 ms
zpoždění(5);
// Přečte dva bajty z registrů 0xF6 a 0xF7
ut = bmp085ReadInt(0xF6);
vrátit ut;
}

// Odečtěte hodnotu nekompenzovaného tlaku
nepodepsané dlouhé bmp085ReadUP()
{
unsigned char msb, lsb, xlsb;
unsigned long up = 0;
// Zápis 0x34+(OSS<<6) into register 0xF4
// Žádost o odečet tlaku s nastavením převzorkování
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(0xF4);
Wire.write(0x34 + (OSS<<6));
Wire.endTransmission();
// Čekání na konverzi, doba zpoždění závisí na OSS
zpoždění (2 + (3<// Čtení registru 0xF6 (MSB), 0xF7 (LSB) a 0xF8 (XLSB)
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(0xF6);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 3);
// Počkejte, až budou data dostupná
while(Wire.available()< 3)
;
msb = Wire.read();
lsb = Wire.read();
xlsb = Wire.read();
up = (((dlouhé bez znaménka) msb<< 16) | ((unsigned long) lsb << 8) | (unsigned long) xlsb) >> (8-OSS);
vrátit se nahoru;
}


Senzor má navíc vlastní teplotní senzor pro kompenzaci tlaku a výškoměr

Arduino Nano v3.0
To je srdce celé meteostanice. Jednoduše řečeno, ovladač je rozměrově miniaturní.
koupil jsem
Nebudu mluvit podrobně o ovladači, protože to již bylo provedeno přede mnou:


Lightake balení bylo prefabrikované, ovladač přišel v balení obsahujícím USB kabel a Arduino v uzavřeném antistatickém sáčku.

Abych odhadl velikost, umístil jsem vedle Arduina minci 1 rubl.

Deska ovladače zblízka



USB kabel je dobrý, s feritovým kroužkem. Arduino je napájeno přes USB kabel. Vývojové prostředí je ke stažení (stránka ke stažení). Jazyk je podobný „C“, s jeho ovládáním nebyly žádné problémy, jelikož v něm hodně programuji v práci.

LCD obrazovka
V práci jsem našel v popelnicích kompatibilní LCD 1602 obrazovku. Musel jsem si pohrát s připojením, protože jsem k němu nemohl najít datový list. V důsledku toho začal LCD fungovat.

Po krátké době používání jsem si ale všiml, že mi tato obrazovka nestačí a více dat nebude možné zobrazit, jelikož má pouze 2 řádky po 16 znacích. Zpočátku se zdá, že tyto parametry jsou dostačující, ale když začnete programovat, zjistíte, že maximum, které můžete vmáčknout, jsou 3-4 parametry. A pokud uděláte menu (přemýšlel jsem o vytvoření menu na této obrazovce), pak zbývá jen 1-2 parametry volného místa.
V důsledku toho jsem začal hledat jinou obrazovku. Nejprve jsem si pozorně prohlížel grafickou obrazovku z Nokie 3310 a dokonce jsem se zúčastnil aukce na eBay, abych ji koupil, ale nevyšlo to (za což jsem velmi rád), takže jsem se musel této obrazovky vzdát. Teď chápu, že by to bylo pro mé účely příliš malé, protože je s čím porovnávat.
Při náhodném prohlížení štítů na Arduinu jsem narazil na grafickou obrazovku 12864 na ovladači ST7920. Tato obrazovka má správnou velikost a dobré rozlišení pro mé potřeby (128x64). To znamená, že můžete snadno umístit 6-7 řádků po 20 znacích do běžně čitelného písma. Vzhledem k tomu, že obrazovka je grafická, kromě textu lze grafiku umístit v různých fontech. Zkrátka přesně tohle jsem potřeboval, na této obrazovce bylo všechno, tak jsem neodolal a objednal.
Zásilka dorazila rychle a byla standardně zabalena: bublinková obálka, uvnitř byla další vrstva bublinkové fólie a zástěna v antistatickém sáčku:






Abych odhadl velikost, umístil jsem vedle LCD minci 1 rubl.




Pro rychlé připojení obrazovky k Arduinu jsem na piny LCD připájel řadu kontaktů. LCD lze připojit přes sériovou sběrnici nebo paralelní sběrnici. Zvolil jsem první možnost, protože již existuje několik volných Arduino kontaktů.
Připojení (převzato z webu):

- Pin 1 (GND) je připojen ke společné sběrnici
- Pin 2 (VCC) je připojen k napájecí sběrnici +5V a proudový odběr je relativně malý a displej lze napájet z vestavěného stabilizátoru Arduino.
- Piny 4, 5 a 6 se připojují k digitálním výstupům Arduino a tvoří sériové rozhraní SPI:
pin 4 – (RS) – odpovídá linii CS (například 7)
pin 5 – (RW) – odpovídá lince MOSI (například 8)
pin 6 – (E) – odpovídá linii SCK (například 3)
Kontaktní čísla Arduina mohou být jakákoli, hlavní je nezapomenout je správně uvést v textu programu při inicializaci displeje.
- Pin 15 (PSB) je připojen ke společné sběrnici.
- Kontakty 19 (A) a 20 (K) jsou napájení podsvícení (+5V, resp. GND). Pro nastavení jasu podsvícení můžete použít 10 kOhm proměnný odpor zapojený mezi napájecí sběrnici a GND. Napětí z jeho motoru je přiváděno na kolík 19 displeje.
Podle tohoto návodu jsem zapojil vše kromě podsvícení. Pro napájení podsvícení jsem použil Arduino PWM.
Aby bylo možné programově připojit LCD k Arduinu, používá se knihovna u8glib. Můžete si jej stáhnout. Pokud se vyskytnou problémy se stahováním, mohu knihovnu nahrát na narod.ru.
Samotná knihovna není složitá a umožňuje zobrazovat text v různých fontech, kreslit čáru, kreslit jednoduché geometrické tvary (obdélník, kruh) a zobrazovat vlastní obrázky připravené speciálním způsobem. V zásadě je tento nástroj dostačující pro většinu úkolů.
Zde je výsledek jednoduchého programu:

Samotný program:

#include "U8glib.h"

U8GLIB_ST7920_128X64 u8g(3, 9, 8, U8G_PIN_NONE); // SPI E = 3, RW = 9, RS = 8

// Podprogram pro určení volné paměti
int freeRam() (
extern int __heap_start, *__brkval;
int v;
return (int) &v - (__brkval == 0? (int) &__heap_start: (int) __brkval);
}

Void setup(void) (
u8g.setFont(u8g_font_6x10); // písmo
u8g.setRot180(); //Otočte obrazovku
analogWrite(6, 115); // Nastavení jasu obrazovky (anoda podsvícení na 6 pinech)
}

Prázdná smyčka (prázdná) (
u8g.firstPage();
dělat (

u8g.setPrintPos(1, 12); // pozice
u8g.print("Ahoj!!!"); // výstupní text
u8g.drawBox(0,22,128,9); // Natřete obdélník bílou barvou
u8g.setColorIndex(0); // bílý inkoust, černé pozadí
u8g.setPrintPos(1, 30); // pozice
u8g.print("Slovo..."); // výstupní text

U8g.setColorIndex(1); // bílý inkoust, černé pozadí
u8g.setPrintPos(1, 50); // pozice
u8g.print("Po spuštění ="); // výstupní text
u8g.setPrintPos(85, 50); // pozice
u8g.print(millis() / 1000); // vypíše počet sekund po startu
u8g.setPrintPos(1, 64); // pozice
u8g.print(freeRam()); // vypíše, kolik paměti je obsazeno
) while(u8g.nextPage());

Zpoždění(200);
}

Hodiny reálného času DS1307
Další součástka pro moji meteostanici. Tento štít implementuje hodiny reálného času. Objednal jsem je na eBay. Prodejce poslal šátek na hodinky v nereálně velké krabici


Uvnitř krabice byly dva reklamní listy A4 a kapesník na hodinky zabalený v celofánu


Chtěl bych poznamenat, že poplatek nepřesahuje 2 rubly. mince a krabička měla rozměry 13x15x5 cm.
Deska byla zabalena v antistatickém sáčku

Šátek zblízka



Musel jsem si pohrát s tímto modulem. Za prvé, tam byly potíže s připojením. A za druhé, na této desce není žádný křemen. Kdybych věděl, že na modulu strávím tolik času, s největší pravděpodobností bych si ho sestavil sám, protože internet je plný schémat. Nejjednodušší obvod obsahuje 4-5 součástek.
Ohledně připojení. Našel jsem knihovnu, která říkala, že rozhraní I2C lze připojit nikoli k obvyklým analogovým vstupům Arduino (A4 a A5), ale k jakýmkoliv diskrétním. Udělal jsem to, jak bylo napsáno. Zpočátku nic nefungovalo, ale po dlouhém tanci s tamburínou se hodiny spustily. No, pomyslel jsem si, to je ono, problémy jsou pryč, ale poté, co jsem se pokusil připojit stejný modul k jinému Arduinu, tanec s tamburínou pokračoval. Strávil jsem spoustu času hledáním řešení tohoto problému a téměř všude bylo indikováno buď nesprávné zapojení, nebo absence pull-up rezistorů na kontaktech SCL a SDA. Už jsem se chtěl dostat do desky páječkou, ale na jednom fóru jsem náhodou narazil na kód, kde se říkalo, že se má připojit SCL a SDA na standardní I2C porty na Arduinu. Po standardním připojení vše fungovalo okamžitě.
Nyní o křemeni. Nevím, jaký druh křemene tam Číňané dali, ale hodinky s takovým křemenem utekly o 10-11 sekund za den. Tato chyba je 5 minut za měsíc a 1 hodina za rok. Takové hodinky nejsou potřeba. Musel jsem se znovu připojit k internetu a hledat, jak tuto chybu opravit. První řešení, které přichází, říká, že musíte křemen uzemnit. Udělal jsem to - výsledek byl nula. Někde jsem také našel, že potřebuji najít starou základní desku a odstranit odtud hodinový quartz. Udělal jsem to - je tu výsledek. Nyní hodiny neutečou o 10-11 sekund, ale o 1,5 sekundy za den. Řekněme, že se to zlepšilo, ale k ideálu to má daleko. Protože už mě nebaví se šťourat s páječkou, bylo rozhodnuto hodiny seřídit programově, tedy jednou denně seřídit hodiny na požadovanou hodnotu. Po 10 dnech hodiny zhasly maximálně o sekundu. Metoda je dobrá, ale pouze když je synchronizační zařízení Arduino připojeno k napájení, jinak hodiny běží na baterii a stále utíkají.
Malý testovací program:

#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68 // SDA A4, SCL A5

Byte decToBcd (byte val)
{
návrat ((val/10*16) + (val%10));
}

Bajt bcdToDec(byte val)
{
návrat ((val/16*10) + (val%16));
}

Void setDateDs1307(byte sekunda, // 0-59
bajt minuta, // 0-59
byte hour) // 0-99
{

Wire.write(0);
Wire.write(decToBcd(sekunda));
Wire.write(decToBcd(minuta));
Wire.write(decToBcd(hodina));
Wire.endTransmission();
}

Void getDateDs1307(bajt *sekunda,
byte *minuta,
byte *hodina)
{

Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();

Wire.requestFrom(DS1307_I2C_ADDRESS, 3);

*sekunda = bcdToDec(Wire.read());
*minuta = bcdToDec(Wire.read());
*hodina = bcdToDec(Wire.read());
}

Void setup()
{
byte sekunda, minuta, hodina;
Wire.begin();
Serial.begin(9600);

Druhý = 45;
minuta = 5;
hodina = 16;

SetDateDs1307(sekunda, minuta, hodina);
}

void loop()
{
byte sekunda, minuta, hodina;

GetDateDs1307(&sekunda, &minuta, &hodina);
Serial.print(hodina, DEC);
Serial.print(":");
Serial.print(minuta, DEC);
Serial.print(":");
Serial.println(druhý, DEC);

Zpoždění(1000);
}


Knihovna se zde nepoužívá a funkce pro čas čtení a zápisu jsou zkráceny.

Čidlo teploty a vlhkosti DHT11
O tomto senzoru není co říct. Ani bych to nepoužíval, kdyby vlhkost nebyla potřeba. Bohužel jsem to při příjmu nevyfotil, takže fotky nebudou. Fotografie snímače jsou k vidění níže, kde jsem jej připojil k Arduinu. Připojení snímače je jednoduché (+, digitální výstup, -). Typicky jsou snímače vyrobeny se čtyřmi kolíky. S tímto tvarovým faktorem není třetí kolík s ničím spojen.
Knihovnu můžete použít pro připojení k Arduinu. Můžete si jej stáhnout.
Malý testovací program s výstupem informací na LCD displeji 1602:

// zahrňte kód knihovny:
#zahrnout
#zahrnout

// Deklarace objektů
dht11 DHT11;
LiquidCrystal lcd(12, 11, 6, 5, 4, 3);

#define DHT11PIN 7
int i;

Void setup()
{
lcd.begin(16, 2);
lcd.print("Stav: ");
i=0;
}

void loop()
{
int chk = DHT11.read(DHT11PIN);
lcd.setCursor(8, 0);
spínač (chk)
{
případ 0: lcd.print(“OK “); break;// lcd.setCursor(11, 0); lcd.print(millis()/2000); přestávka;
case -1: lcd.print(“Chyba kontrolního součtu”); mErr(); přestávka;
case -2: lcd.print("Chyba vypršení časového limitu"); mErr(); přestávka;
výchozí: lcd.print("Neznámá chyba"); mErr(); přestávka;
}
zpoždění(500);
lcd.setCursor(15, 0);
přepínač (i)
{
případ 0: lcd.print("^"); lcd.setCursor(15, 1); lcd.print(" ");break;
případ 1: lcd.print("v"); lcd.setCursor(15, 1); lcd.print(" ");break;
výchozí: lcd.setCursor(15, 1); lcd.print("E"); přestávka;
}
i=i+1;
jestliže (i>1) i=0;
lcd.setCursor(0, 1);
lcd.print("H=");
lcd.setCursor(2, 1);
lcd.print((float)DHT11.vlhkost, 0);
lcd.setCursor(4, 1);
lcd.print("%");
lcd.setCursor(8, 1);
lcd.print("T=");
lcd.setCursor(10, 1);
lcd.print((float)DHT11.teplota, 0);
lcd.setCursor(12, 1);
lcd.print("C");

Void mErr()
{
lcd.setCursor(2, 1);
lcd.print("**");
lcd.setCursor(10, 1);
lcd.print("**");
i=5;
}


Snímač má některé nevýhody – údaje ze snímače jsou pouze v celých číslech a dosah je slabý.

Zdá se, že jsem psal o všech komponentách. Nezbývá než vše posbírat do jediného celku.
Jejda, málem bych zapomněl! K sestavení zařízení potřebujete pouzdro. Pouzdro jsem objednal i na Ebay. Ukázalo se, že prodejce je z Anglie. Balíček dorazil rychle, ale nevyfotila jsem ho. Všechny fotografie pouzdra jsou níže.

Nejprve jsem vše na stole sestavil pomocí speciální elektroinstalace. Napsal jsem testovací program a nahrál ho do ovladače.



Ve skutečnosti je modrá barva podsvícení mnohem jasnější. I při minimálním jasu (Bright=5) je rám osvětlen.

Aby bylo možné vše sestavit bezdrátově, bylo rozhodnuto vyrobit mini základní desku a na konektory byly umístěny desky a štíty Arduino. Pokud se něco stane, lze je rychle a snadno odstranit. Také jsem se rozhodl připevnit LCD obrazovku a ovládací tlačítka ke konektorům, pouze zapájet teplotní čidlo na vodiče.
Takhle vyšel šátek



Na poslední fotce jsem tavidlo úplně nesmyl. Pod štíty vedle konektorů jsem nalepil porézní gumu, aby tam byla alespoň nějaká opora. I když ve skutečnosti stínění v konektorech na kontaktech drží v pohodě.

Základní deska s nainstalovanými štíty a deskou Arduino.

Takto vypadá kompletní připojení k základní desce


Místo knoflíků jsem použil domácí štít připájený na prkénku. Jako tlačítka jsem použil tlačítka ze starých myší.
Jak vidíte, počet drátů se snížil.

Hlavním problémem umístění v pouzdře je vyříznutí hladké drážky pro LCD obrazovku. Ať jsem se snažil sebevíc, stále to nevyšlo dokonale. Mezery byly na některých místech o něco více než 1 mm. Aby vše vypadalo úhledně, vzal jsem černý akvarijní tmel a vyplnil všechny praskliny, zároveň jsem na tento tmel připevnil clonu. Po zaschnutí tmelu jsem přebytek z vnější strany odřízl. V ostrém světle je tmel vidět, ale v normálním světle vše splyne s karoserií.
Takto vypadá skříň zevnitř s nainstalovanou LCD obrazovkou a základní deskou.

Takhle to vypadá z venku na ostrém světle (omlouvám se za otisky prstů, viděl jsem je, když jsem třídil fotky).

Dlouho jsem přemýšlel, jak tlačítka do pouzdra vměstnat a hlavně jaká tlačítka použít...
V obchodech s radioelektronikou se jim líbilo tlačítko s dlouhým kolíčkem a hroty, které na tento kolík pasují. Tato tlačítka slouží k připájení k desce. Všechno by bylo v pořádku, ale mají mínus - zdvih stisknutí je velmi malý a hlasitý.
Tlačítka jsme museli umístit ve dvou fázích: první bylo umístit tlačítka na desku, druhou bylo namontovat tuto desku na jinou desku. A to vše pak dát do těla na vodítkách.

Takto vypadá šátek s knoflíky:



Takto vypadá deska držáku:


Zde vidíte vodítka, do kterých se deska s tlačítky vkládá. Některé prvky byly připájeny, aby poskytly desce tuhost.

Nyní dáme vše do těla
Bez propojovacích tlačítek:


S připojením pomocí tlačítka:

Zavřete pouzdro a zapněte jej. Vše funguje skvěle, tlačítka fungují jak mají.

Na závěr zveřejňuji krátké video, jak zařízení pracuje v různých režimech:
http://www.youtube.com/watch?v=KsiVaUWkXNA&feature=youtu.be
Pro ty, kteří zde video neviděli, zde je odkaz

Je čas recenzi ukončit.
Napíšu něco málo o programu a pak nějaké krátké závěry. Když jsem program psal, nemyslel jsem si, že velmi rychle dosáhnu limitu 30 720 bajtů.


Musel jsem optimalizovat kód. Přesunul jsem mnoho kusů kódu do podprogramů. Nikdy by mě nenapadlo, že příkaz switch...case v kompilované podobě zabírá více místa než několik příkazů if...else. Správná deklarace proměnných také šetří místo. Pokud deklarujete dlouhé pole, ačkoli je docela možné získat po bytech, přetečení paměti dosáhne 500 bajtů, v závislosti na velikosti pole. Když píšete program, nepřemýšlíte o tom a až později, když program analyzujete, zjistíte, že jste udělali některé věci špatně, a začnete optimalizovat kód. Po vyřešení problémů s velikostí programu jsem narazil na omezení RAM. To se projevilo tím, že program po načtení začal zamrzat. Musel jsem zavést podprogram pro výpočet volné RAM. V důsledku toho jsem byl nucen opustit jeden algoritmus předpovědi počasí, protože musí zobrazovat ikony na obrazovce. Algoritmus sám funguje, ale výstup ikon musel být zaznamenán. Stále mám nápady, jak kód optimalizovat, ale v blízké budoucnosti nechám zařízení běžet tak, jak je, abych vyhodnotil jeho výkon a identifikoval všechny chyby.

Nyní nějaké závěry
Mínusy
1) Cena. Zdůvodněním této nevýhody je, že koníček není nikdy levný.

klady
1) Skvělá funkčnost zařízení
2) Zvyšování funkcí je omezeno pouze použitým ovladačem a vaším vlastním přáním
3) Estetické potěšení z rozjímání a morální uspokojení z toho, že jsem toto zařízení nakonec sestavil a dokončil

Mám v plánu koupit +86 Přidat k oblíbeným Recenze se mi líbila +137 +304

Líbil se vám článek? Sdílej se svými přáteli!
Byl tento článek užitečný?
Ano
Ne
Děkujeme za vaši odezvu!
Něco se pokazilo a váš hlas nebyl započítán.
Děkuji. Vaše zpráva byla odeslána
Našli jste chybu v textu?
Vyberte jej, klikněte Ctrl + Enter a my vše napravíme!