{"id":1843,"date":"2020-03-23T20:50:54","date_gmt":"2020-03-23T19:50:54","guid":{"rendered":"http:\/\/tech4.pl\/SQ9MDD\/?p=1843"},"modified":"2020-03-23T20:50:54","modified_gmt":"2020-03-23T19:50:54","slug":"stacja-pogodowa","status":"publish","type":"post","link":"https:\/\/sq9mdd.hamspirit.pl\/?p=1843","title":{"rendered":"Stacja Pogodowa cz.1 Podstawowe Parametry."},"content":{"rendered":"<p>Poni\u017cej przedstawiam pierwsz\u0105 cz\u0119\u015b\u0107 opisu prostej stacji pogodowej, kt\u00f3ra jest dodatkiem do ju\u017c istniej\u0105cej instalacji Digi APRS opartego na oprogramowaniu APRX.<\/p>\n<p><!--more--><\/p>\n<h3>Dla kogo jest przeznaczona stacja pogody<\/h3>\n<p>Stacja pogodowa jest przeznaczona jako rozszerzenie funkcjonalno\u015bci ju\u017c istniej\u0105cej stacji domowej opartej o Raspberry Pi i APRX-a, kt\u00f3rej budow\u0119 opisywa\u0142em wcze\u015bniej w tych postach:<br \/>\n<a href=\"http:\/\/10.9.48.151\/?p=626\">http:\/\/10.9.48.151\/?p=626<\/a><br \/>\n<a href=\"http:\/\/10.9.48.151\/?p=559\">http:\/\/10.9.48.151\/?p=559<\/a><\/p>\n<h3><strong>Elektronika.<\/strong><\/h3>\n<p>Budow\u0119 podstawowej wersji stacji pogodowej rozpoczynamy od zakupu arduino nano, oraz czujnika temperatury, wilgotno\u015bci i ci\u015bnienia, BME280.<\/p>\n<div id=\"attachment_1863\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/10.9.48.151\/?attachment_id=1863\" rel=\"attachment wp-att-1863\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1863\" class=\"wp-image-1863 size-medium\" src=\"http:\/\/10.9.48.151\/wp-content\/uploads\/2020\/03\/bme280-2-300x150.jpg\" alt=\"\" width=\"300\" height=\"150\" srcset=\"https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/bme280-2-300x150.jpg 300w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/bme280-2-1024x512.jpg 1024w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/bme280-2-768x384.jpg 768w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/bme280-2-1536x768.jpg 1536w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/bme280-2.jpg 2048w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1863\" class=\"wp-caption-text\">Czujnik temperatury,wilgotno\u015bci i cisnienia.<\/p><\/div>\n<div id=\"attachment_1864\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/10.9.48.151\/?attachment_id=1864\" rel=\"attachment wp-att-1864\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1864\" class=\"wp-image-1864 size-medium\" src=\"http:\/\/10.9.48.151\/wp-content\/uploads\/2020\/03\/arduino-300x150.jpg\" alt=\"\" width=\"300\" height=\"150\" srcset=\"https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/arduino-300x150.jpg 300w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/arduino-1024x512.jpg 1024w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/arduino-768x384.jpg 768w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/arduino-1536x768.jpg 1536w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/arduino.jpg 2048w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1864\" class=\"wp-caption-text\">Arduino nano.<\/p><\/div>\n<p>Nast\u0119pnie \u0142\u0105czymy za pomoc\u0105 przewodu o d\u0142ugo\u015bci 15cm czujnik BME280 z arduino, wed\u0142ug schematu poni\u017cej.<\/p>\n<p><a href=\"http:\/\/10.9.48.151\/?attachment_id=1871\" rel=\"attachment wp-att-1871\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1871\" src=\"http:\/\/10.9.48.151\/wp-content\/uploads\/2020\/03\/bme280-arduino-nano-300x195.png\" alt=\"\" width=\"300\" height=\"195\" srcset=\"https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/bme280-arduino-nano-300x195.png 300w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/bme280-arduino-nano.png 544w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>\u0141\u0105czymy:<br \/>\n&#8211; zasilanie 3,3V do Vin czujnika,<br \/>\n&#8211; GND arduino z GND,<br \/>\n&#8211; pin A4 arduino z pinem SDA czujnika<br \/>\n&#8211; pin A5 arduino z pinem SCL czujnika<\/p>\n<h3><strong>Hardware.<\/strong><\/h3>\n<p>W serwisie thingiverse.com znalaz\u0142em \u015bwietn\u0105 <a href=\"https:\/\/www.thingiverse.com\/thing:1067700\">obudow\u0119 do czujnik\u00f3w<\/a>, kt\u00f3r\u0105 po wydrukowaniu montujemy, jak na zdj\u0119ciu poni\u017cej. Zamiennie mo\u017cna te\u017c u\u017cy\u0107 bia\u0142ych podstawek pod doniczk\u0119 o odpowiedniej \u015brednicy.<\/p>\n<div id=\"attachment_1865\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/10.9.48.151\/?attachment_id=1865\" rel=\"attachment wp-att-1865\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1865\" class=\"wp-image-1865 size-medium\" src=\"http:\/\/10.9.48.151\/wp-content\/uploads\/2020\/03\/elementy-300x150.jpg\" alt=\"\" width=\"300\" height=\"150\" srcset=\"https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/elementy-300x150.jpg 300w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/elementy-1024x512.jpg 1024w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/elementy-768x384.jpg 768w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/elementy-1536x768.jpg 1536w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/elementy.jpg 2048w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1865\" class=\"wp-caption-text\">Wydrukowane elementy os\u0142ony czujnika.<\/p><\/div>\n<div id=\"attachment_1866\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/10.9.48.151\/?attachment_id=1866\" rel=\"attachment wp-att-1866\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1866\" class=\"wp-image-1866 size-medium\" src=\"http:\/\/10.9.48.151\/wp-content\/uploads\/2020\/03\/elementy-2-300x150.jpg\" alt=\"\" width=\"300\" height=\"150\" srcset=\"https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/elementy-2-300x150.jpg 300w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/elementy-2-1024x512.jpg 1024w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/elementy-2-768x384.jpg 768w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/elementy-2-1536x768.jpg 1536w, https:\/\/sq9mdd.hamspirit.pl\/wp-content\/uploads\/2020\/03\/elementy-2.jpg 2048w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1866\" class=\"wp-caption-text\">Zmontowana os\u0142ona czujnika<\/p><\/div>\n<p>Wa\u017cne by czujnik by\u0142 oddalony od arduino tak by ciep\u0142o wydzielane przez pracuj\u0105cy uk\u0142ad nie podgrzewa\u0142o czujnika i nie powodowa\u0142o zafa\u0142szowania pomiar\u00f3w. Dlatego modu\u0142 arduino montujemy w ma\u0142ej wodoszczelnej puszce, w pewnym oddaleniu od os\u0142ony czujnika.<\/p>\n<h3>Programowanie arduino.<\/h3>\n<p>Program do arduino znajduje si\u0119 pod tym linkiem i jest to bardzo prosty skrypt, kt\u00f3ry po resecie urz\u0105dzenia wysy\u0142a odczytane dane. Dane s\u0105 wysy\u0142ane w formacie ascii na port szeregowy w postaci ci\u0105gu znak\u00f3w gdzie poszczeg\u00f3lne pola danych s\u0105 oddzielone symbolem &#8222;*&#8221;, co pozwoli na p\u00f3\u017aniejsz\u0105 \u0142atw\u0105 obr\u00f3bk\u0119 tych danych za pomoc\u0105 skryptu napisanego w Pythonie, kt\u00f3ry b\u0119dzie przygotowywa\u0142 zawarto\u015b\u0107 ramki pogodowej.<\/p>\n<p>Jako \u017ce w meteorologii u\u017cywamy odczyty ci\u015bnienia znormalizowane do poziomu morza to musimy jeszcze poprawnie skalibrowa\u0107 czujnik ci\u015bnienia.<br \/>\n<strong><font color=red>Przed wgraniem skryptu do arduino sprawdzamy na mapach wysoko\u015bci po\u0142o\u017cenie miejsca instalacji, dodajemy wysoko\u015b\u0107 monta\u017cu czujnika nad gruntem i ca\u0142\u0105 warto\u015b\u0107 w metrach wpisujemy w oznaczone miejsce w skrypcie. Mo\u017cemy te\u017c t\u0119 warto\u015b\u0107 wpisa\u0107 w pythonie wtedy warto\u015b\u0107 w skrypcie arduino powinna by\u0107 zero. Chodzi o to by nie powiela\u0107 informacji o wysoko\u015bci w dw\u00f3ch miejscach.<\/font><\/strong><\/p>\n<pre>#define above_sea_lvl 125 \/\/&lt;-- kalibracja wysokosci montazu czujnika n.p.m.<\/pre>\n<p>Do sprawdzania wysoko\u015bci n.p.m. u\u017cywa\u0142em mapy pod adresem: <a href=\"http:\/\/www.wysokosc.mapa.info.pl\">http:\/\/www.wysokosc.mapa.info.pl<\/a><\/p>\n<p>Poni\u017cej kompletny kod kt\u00f3ry nale\u017cy wgra\u0107 do arduino z pod\u0142\u0105czonym czujnikiem.<\/p>\n<pre>#include &lt;Wire.h&gt;\n#include &lt;Adafruit_Sensor.h&gt;\n#include &lt;Adafruit_BME280.h&gt;\n\n#define SEALEVELPRESSURE_HPA (1013.25)\n#define above_sea_lvl   125             \/\/&lt;-- kalibracja wysokosci montazu czujnika n.p.m.\nAdafruit_BME280 bme;\n\nvoid setup() {\n  Serial.begin(9600);\n\n  if (!bme.begin(0x76)) {\n    Serial.println(\"Could not find a valid BME280 sensor, check wiring!\");\n    while (1);\n  }\n  delay(1000);\n  Serial.print(\"WAAPS300\");\n  Serial.print(\"*\");\n  Serial.print(bme.readTemperature());\n  Serial.print(\"*\");\n  float hPa_offset = float(above_sea_lvl) * 0.10933;\n  Serial.print((bme.readPressure() \/ 100.0F) + hPa_offset );\n  Serial.print(\"*\");\n  Serial.print(bme.readHumidity());\n}\n\nvoid loop() {\n  delay(1000);\n}\n<\/pre>\n<h3>Konfiguracja APRX<\/h3>\n<p>Po pod\u0142\u0105czeniu za pomoc\u0105 USB arduino nano do Raspberry Pi, musimy zmusi\u0107 oprogramowanie APRX do wysy\u0142ki danych pogodowych. Jest to zadanie bardzo \u0142atwe. W pliku konfiguracyjnym programu (\/etc\/aprx.conf) musimy doda\u0107 sekcj\u0119 odpowiedzialn\u0105 za wysy\u0142k\u0119 danych przez radio. U\u017cywamy tutaj metody &#8222;beacon exec&#8221; co oznacza \u017ce APRX sam uruchamia wskazany skrypt co zadany interwa\u0142 czasu. Znak i SSID u\u017cyty do wys\u0142ania danych pogodowych definiujemy w tym miejscu.<\/p>\n<pre>&lt;beacon&gt;\n beacon mode APRSIS\n cycle-size 10m\n beacon srccall SQ9MDD-5 exec \/home\/pi\/wx.py\n&lt;\/beacon&gt;\n<\/pre>\n<h3>Programowanie w Pythonie<\/h3>\n<p>Po skonfigurowaniu APRX-a musimy \u015bci\u0105gn\u0105\u0107 skrypt pogodowy kt\u00f3ry znajdziemy w serwisie Github. Logujemy si\u0119 do raspberry pi za pomoc\u0105 protoko\u0142u ssh (programem putty) i u\u017cywamy do tego celu komendy wget b\u0119d\u0105c w katalogu domowym:<\/p>\n<pre>wget -t0 -c https:\/\/raw.githubusercontent.com\/SQ9MDD\/WAAPS\/master\/wx.py\n<\/pre>\n<p>Nast\u0119pnie musimy doda\u0107 atrybut wykonywalno\u015bci tak by skrypt dzia\u0142a\u0142 jak program:<\/p>\n<pre>sudo chmod +x wx.py\n<\/pre>\n<p>Aktualna wersja skryptu generuje ramk\u0119 zawieraj\u0105c\u0105 dane kt\u00f3re s\u0105 odczytywane z czujnika BME280 oraz koordynaty i komentarz.\u00a0 Konfigurujemy skrypt u\u017cywaj\u0105c edytora nano do edycji pliku:<\/p>\n<pre>sudo nano \/home\/pi\/wx.py\n<\/pre>\n<p>Po otwarciu pliku zobaczymy jego zawarto\u015b\u0107, skupiamy si\u0119 na sekcji konfiguracyjnej, gdzie edytujemy koordynaty geograficzne naszej stacji, oraz komentarze.<\/p>\n<pre>################################### CONFIGURATION #######################################################\n#                                                                                                   \t#\nwx_lat      \t        = '5215.01N'                     \t# coordinates APRS format           \t#\nwx_lon      \t        = '02055.58E'                    \t# coordinates APRS format           \t#\nwx_altitude             = '0'                                   # meeters above sea lvl                 #\nwx_comment  \t        = 'WAAPS300 WX station on tests'   \t# beacon comment\t\t        #\nwx_err_comment \t        = 'No WX data'\t\t\t\t# comment when no data avaiable\t\t#\nardu_wx_modell          = 'WAAPS300'                        \t# WAAPS300 - basic modell Temp.Rh.Baro  #\nardu_wx_seriall         = '\/dev\/ttyUSB0'                        # Where your WX is connected to         #\nardu_wx_speed           = 9600                              \t# Serial port speed                     #\n#\t\t\t\t\t\t\t\t\t\t      \t                #\n######################## DO NOTE EDIT BELLOW THIS LINE ##################################################\n<\/pre>\n<p>Nale\u017cy te\u017c wskaza\u0107 tutaj port szeregowy pod kt\u00f3rym znajdzie si\u0119 nasza stacja pogodowa po pod\u0142\u0105czeniu. Mo\u017cna to \u0142atwo sprawdzi\u0107 wydaj\u0105c przed i po po\u0142\u0105czeniu komend\u0119:<\/p>\n<pre>  ls -l \/dev\/tty*\n<\/pre>\n<p>B\u0119dzie wida\u0107 czy po pod\u0142\u0105czeniu pojawi\u0142 si\u0119 jaki\u015b nowy port.<\/p>\n<p>Po zapisaniu zmian mo\u017cemy wywo\u0142a\u0107 skrypt, by skontrolowa\u0107 jego dzia\u0142anie:<\/p>\n<pre>sudo \/home\/pi\/wx.py\n<\/pre>\n<p>Je\u015bli oka\u017ce si\u0119 \u017ce zamiast spodziewanego wyniku otrzymamy komunikaty b\u0142\u0119du to najprawdopodobniej nie mamy zainstalowanego pakietu pyserial. Aby to naprawi\u0107 nale\u017cy go doinstalowa\u0107 u\u017cywaj\u0105c komendy:<\/p>\n<pre>sudo pip install pyserial\n<\/pre>\n<p>Lub je\u015bli pip jest nie zainstalowany to mo\u017cemy u\u017cy\u0107 komendy:<\/p>\n<pre>sudo apt install python-seriall\n<\/pre>\n<p>Je\u015bli wszystko jest poprawnie zainstalowane to po uruchomieniu skryptu\u00a0 powinni\u015bmy zobaczy\u0107 co\u015b podobnego do tego poni\u017cej:<\/p>\n<p>!5215.01N\/02055.58E_&#8230;\/&#8230;g&#8230;t075h27b10110 WAAPS300 WX station on tests<\/p>\n<p>Stacja pogodowa, rozszerzenie do APRX dzia\u0142a poprawnie.<\/p>\n<p>r.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Poni\u017cej przedstawiam pierwsz\u0105 cz\u0119\u015b\u0107 opisu prostej stacji pogodowej, kt\u00f3ra jest dodatkiem do ju\u017c istniej\u0105cej instalacji Digi APRS opartego na oprogramowaniu APRX.<\/p>\n","protected":false},"author":2,"featured_media":1866,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,6,10],"tags":[],"class_list":["post-1843","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aprs","category-arduino","category-diy"],"_links":{"self":[{"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=\/wp\/v2\/posts\/1843","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1843"}],"version-history":[{"count":0,"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=\/wp\/v2\/posts\/1843\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=\/wp\/v2\/media\/1866"}],"wp:attachment":[{"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1843"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1843"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1843"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}