Stacja METEO v1 (ver.M1.3)

Co moduł potrafi zmierzyć/odczytać

  • Ilość opadu deszczu
  • 0-65535mm/m2
  • Prędkość wiatru
  • 0-255km/h
  • Kierunek wiatru
  • 16 kierunków świata
  • Temperatura zewnętrzna (BME280)
  • -40 +85°C
  • Temperatura do słońca (DS18B20)
  • -55 +125°C
  • Temperatura przy gruncie +15cm (DS18B20)
  • -55 +125°C
  • Temperatura gruntu -10cm (DS18B20)
  • -55 +125°C
  • Temperatura gruntu -25cm (DS18B20)
  • -55 +125°C
  • Temperatura gruntu -50cm (DS18B20)
  • -55 +125°C
  • Temperatura gruntu -100cm (DS18B20)
  • -55 +125°C
  • Wilgotność (BME280)
  • 0-100%
  • Napięcie solar 1
  • 0-6,8V
  • Napięcie solar 2
  • 0-6,8V
  • Napięcie turbina wiatrowa
  • 0-6,8V
  • Napięcie akumulatora
  • 0-4,5V
  • Promieniowanie UV
  • 0-11 INDEX UV
  • Natężenie światła (BH1750)
  • 0-65535lux
  • Odległość burzy od nas (AS3935)
  • 0-40km
  • Ciśnienie (BME280)
  • 300-1100hPa
  • Procentowy stan akumulatora
  • 0-100%

Działanie

  • AVR robi pomiary co minutę za wszystkich czujników/sensorów
  • AVR budzi ESP
  • ESP łączy się z siecią WiFi
  • *jeżeli ESP w ciągu 10 sekund nie połączy się z siecią przechodzi w stan uśpienia
  • AVR przesyła dane do ESP
  • ESP „sortuje” dane
  • ESP przesyła dane do NetTemp
  • gdy wszystko zostanie wysłane do NetTemp to ESP przechodzi w stan uśpienia

Wykaz elementów

Oznaczenie Wartość Opis
C1 100nF Montujemy gdy jest akumulator
C2 100nF Montujemy gdy jest sensor UV
C3 100nF Montujemy gdy jest turbina
C4 100nF Montujemy gdy jest panel solarny #2
C5 100nF Montujemy gdy jest panel solarny #1
C6 100nF Montujemy gdy jest sensor kierunku wiatru
C7 100nF Obowiązkowy
C8 100nF Montujemy gdy jest sensor prędkości wiatru
C9 100nF Montujemy gdy jest sensor opadów deszczu
C10 100uF Obowiązkowy
C11 100nF Obowiązkowy
C12 100nF Obowiązkowy
C13 100nF Obowiązkowy
C14 22pF Obowiązkowy
C15 22pF Obowiązkowy
C16 10uF Obowiązkowy
C17 100nF Obowiązkowy
C18 100nF Montujemy gdy używamy czujników i2c
C19 10uF Montujemy gdy zasilanie sieciowe
C20 100nF Montujemy gdy zasilanie sieciowe
C21 100nF Montujemy gdy zasilanie sieciowe
C22 100uF Montujemy gdy zasilanie sieciowe
C23 100nF Montujemy gdy zasilanie akumulatorowe
C24 33uF Montujemy gdy zasilanie akumulatorowe
C25 100nF Montujemy gdy jest sensor burzy
C26 100nF Montujemy gdy robimy odczyt temp przy gruncie i/lub do słońca
D1 1N5819 Montujemy gdy podwójne zasilanie
D2 1N5819 Montujemy gdy jest panel solarny #1
D3 1N5819 Montujemy gdy jest panel solarny #2
D4 1N5819 Montujemy gdy jest turbina
Q1 11.0592MHz Obowiązkowy
F1 1A Montujemy F1 lub F2 gdy zasilanie akumulatorowe
F2 1A Montujemy F1 lub F2 gdy zasilanie akumulatorowe
F3 2A Montujemy F3 lub F4 gdy zasilanie sieciowe
F4 2A Montujemy F3 lub F4 gdy zasilanie sieciowe
L1 10uH Montujemy gdy jest sensor kierunku wiatru
L2 10uH Montujemy gdy jest sensor burzy
BC1 BC337 Obowiązkowy
R1 10k Obowiązkowy
R2 4k7 Obowiązkowy
R3 47k 1% Montujemy gdy zasilanie akumulatorowe
R4 4k7 Obowiązkowy
R5 4k7 Obowiązkowy
R6 15k 1% Montujemy gdy zasilanie akumulatorowe
R7 4k7 Obowiązkowy
R8 4k7 Obowiązkowy
R9 1k Obowiązkowy
R10 4k7 Montujemy gdy używamy czujników i2c
R11 4k7 Montujemy gdy używamy czujników i2c
R12 220 Montujemy gdy zasilanie sieciowe
R13 Warystor Opcja przy zasilaniu sieciowym (zalecany)
R14 4k7 Montujemy gdy jest sensor opadów deszczu
R15 240k 1% Montujemy gdy jest sensor kierunku wiatru
R16 47k 1% Montujemy gdy jest sensor UV
R17 36k 1% Montujemy gdy zasilanie akumulatorowe
R18 36k 1% Montujemy gdy zasilanie akumulatorowe
R19 36k 1% Montujemy gdy zasilanie akumulatorowe
R20 6k8 1% Montujemy gdy zasilanie akumulatorowe
R21 6k8 1% Montujemy gdy zasilanie akumulatorowe
R22 6k8 1% Montujemy gdy zasilanie akumulatorowe
R23 4k7 Montujemy gdy jest sensor prędkości wiatru
4k7 Drabinka 6x 4k7 Montujemy gdy robimy odczyt temp przy gruncie i/lub do słońca
RED LED 3mm Montujemy gdy zasilanie sieciowe
BME280 RJ11 6p4c Montujemy gdy jest czujnik BME280
K.WIATR RJ11 6p4c Montujemy gdy jest sensor kierunku wiatru
P.WIATR RJ11 6p4c Montujemy gdy jest sensor prędkości wiatru
SLONCE RJ11 6p4c Montujemy gdy robimy odczyt temp. Do słońca
DESZCZ RJ11 6p4c Montujemy gdy jest sensor opadów deszczu
GRUNT RJ45 8p8c Montujemy gdy robimy odczyt temp przy gruncie i/lub do słońca
BH1750 goldpin 1×4 Montujemy gdy jest czujnik natężenia światła
UV goldpin 1×3 Montujemy gdy jest sensor UV
UART goldpin 2×3 Obowiązkowy
ISP_1-2 goldpin 1×2 Obowiązkowy
ISP_2-2 goldpin 2×3 Obowiązkowy
UC1 goldpin 1×2 Montujemy gdy jest sensor prędkości wiatru i/lub sensor opadów deszczu
UC2 goldpin 1×2 Montujemy gdy jest sensor prędkości wiatru i/lub sensor opadów deszczu
SEMAFOR goldpin 1×3 Obowiązkowy
AKU1 goldpin 1×2 Opcjonalne złącze akumulatora
AKU2 goldpin 1×2 Opcjonalne złącze akumulatora
AKU3 goldpin 1×2 Opcjonalne złącze akumulatora
AKU4 goldpin 1×2 Opcjonalne złącze akumulatora
IN+ goldpin 1×1 Montujemy gdy zasilanie akumulatorowe (TP4056)
IN- goldpin 1×1 Montujemy gdy zasilanie akumulatorowe (TP4056)
OUT+ goldpin 1×1 Montujemy gdy zasilanie akumulatorowe (TP4056)
OUT- goldpin 1×1 Montujemy gdy zasilanie akumulatorowe (TP4056)
B+ goldpin 1×1 Montujemy gdy zasilanie akumulatorowe (TP4056)
B- goldpin 1×1 Montujemy gdy zasilanie akumulatorowe (TP4056)
U$1 USBLC-2SC6 Montujemy gdy używamy czujników i2c
U$2 USBLC-2SC6 Montujemy gdy robimy odczyt temp przy gruncie i/lub do słońca
U$3 USBLC-2SC6 Montujemy gdy robimy odczyt temp. gruntu
U$4 USBLC-2SC6 Montujemy gdy robimy odczyt temp. gruntu
ESP ESP8266 Dobry zasięg WiFi: ESP8266-12
- - Słaby zasięg WiFi: ESP8266-07+antena „patyk”
ATmega328p ATmega328p Obowiązkowy
AMS1117-3.3 AMS1117-3.3 Montujemy gdy zasilanie sieciowe
S7V8F3 goldpin 1×4 Montujemy gdy zasilanie akumulatorowe
FLASH tact switch Obowiązkowy
RESET tact switch Obowiązkowy
MOD-1016 goldpin 1×7 (Ż) Montujemy gdy jest sensor burzy
DC_5V phoenix 2 pin 5.08 Montujemy gdy zasilanie sieciowe
SOLAR1 phoenix 2 pin 5.08 Montujemy gdy zasilanie akumulatorowe
SOLAR2 phoenix 2 pin 5.08 Montujemy gdy zasilanie akumulatorowe
TURBINA phoenix 2 pin 5.08 Montujemy gdy zasilanie akumulatorowe
  • wszystkie rezystory o mocy 1/4W
  • wszystkie kondensatory mają napięcie min 10V

Montaż

  • Montaż należy rozpocząć od wlutowania wszystkich zworek.
  • W dalszej kolejności należy zamontować wszystkie rezystory i małe elementy, a kończyć lutowanie na dużych złączach przy krawędzi płytki.
  • Przed uruchomieniem płytki należy sprawdzić czy nie ma zwarć (za pomocą miernika) szczególnie chodzi tutaj o zwarcia między GND, a VCC

Zasilanie

Stację można używać i zasilać na dwa sposoby:

  • zasilanie sieciowe (zewnetrzny zasilacz 5V DC)
  • zasilanie akumulatorowe (akumulatory Li-Ion 3,7V)

Programowanie

  • Aby zaprogramować AVR musimy się zaopatrzyć w programator USBasp.

Programator podłączamy pod złącza: „ISP_1-2” i „ISP_2-2” mamy tam wyprowadzone: MISO, MOSI, SCK, RESET i GND

  • Aby zaprogramować ESP musimy się zaopatrzyć w konwerter USB-UART (3V3)

Konwerter podłączamy pod złącze „UART” mamy tam wyprowadzone: TX, RX i GND

  • Kod dla AVR został napisany w BASCOM
  • Kod dla ESP8266 zasłał napisany w LUA

Programowanie AVR w systemie Linux

Programator USBasp należy podłączyć zgodnie z opisem na PCB.

Na początek sprawdzamy komunikację USBasp → AVR

sudo avrdude -c usbasp -p m328p

Jeżeli dostaniemy komunikat:

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f

avrdude: safemode: Fuses OK (H:07, E:D9, L:FF)

avrdude done.  Thank you.

to oznacza, że wszystko jest OK.

Jeżeli dostaniemy komunikat o treści:

avrdude: error: programm enable: target doesn't answer. 1
avrdude: AVR device initialized and ready to accept instructions
 
Reading | ################################################## | 100% 0.02s
 
avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.

to oznacza, że jest problem z komunikacją.

Jeżeli dostaniemy komunikat o treści:

avrdude: error: programm enable: target doesn't answer. 1 
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

to oznacza, że mamy problem z połączeniem. Trzeba sprawdzić wszystkie kabelki.

Aby zaprogramować nasze METEO:

- pobieramy plik meteo.hex i wrzucamy na pulpit

- przechodzimy na pulpit poleceniem:

cd /home/nasz_użytkownik/Pulpit

- aby wrzucić program do AVR i zmienić fusebity na zewnętrzny kwarc należy użyć komendy:

sudo avrdude -c usbasp -p m328p -U flash:w:meteo.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m

Aby sprawdzić czy wszystko jest OK i czy AVR coś nadaje to podłączamy się:

  • METEO GND → konwerter GND
  • METEO AVR-TX → konwerter RX
  • METEO AVR-RX → konwerter TX

wpisujemy komendę:

sudo minicom -D /dev/ttyUSB0 -b 115200

powinniśmy otrzymać:

0.00 0.0 270 0.3 -0.8 .15 .0 .0 0.0 0.0 0.0 0.0 0.0 0.0 0.01 0.02 0.06 3.75 68 20 21

Programowanie AVR w systemie Windows

*(opis przygotowany przez @jon123456

Poniżej przedstawiam poradnik jak zainstalować AVRDude oraz nakładkę Burn-O-Mate aby później w łatwy i przyjemny sposób można było zaprogramować naszą Atmegę.

Na początku musimy ściągnąć paczkę AVRDude oraz nakładkę skąd po niżej linki do programów.

1. AVRdude

2. Burn-O-Mat

AVRDude pod Windowsem nie wymaga instalacji a jedynie ściągnięcia i rozpakowania archiwum do określonego folderu (najlepiej C:\Program Files\avrdude). Następnie instalujemy nakładkę Burn-O-Mate.

Do poprawnej pracy tej nakładki potrzebna jest JAVA

Po zainstalowaniu lub wypakowaniu programu, uruchamiamy go, powinno to wyglądać jak na rysunku poniżej.

Zanim zaczniemy programować mikrokontroler musimy dokonać kilku ustawień w menu Settings»AVRDUDE.

Na samym początku wybieramy ścieżkę dostępu do programu AVRDude (avrdude.exe) i do jego pliku konfiguracyjnego (avrdude.conf), (zdjęcie poniżej) po czym klikamy Apply i uruchamiamy ponownie program Burn-O-Mat aby mogły się wczytać ustawienia i typy programatorów z pliku konfiguracyjnego AVRDude. Po ponownym uruchomieniu programu wchodzimy do ustawień i tym razem konfigurujemy typ programatora (Programmer) i port do którego jest podłączony (nie wszystkie programatory wymagają ustawienia portu, np USBasp, którego sam używam tego nie wymaga). Poniższe opcje, możliwe do zaznaczenia, pozostawiamy odznaczone (tak jak na rysunku wyżej). Na samym dole mamy jeszcze możliwość dopisać ręcznie do AVRDude dodatkowe parametry wywołania (additional options), jednak pozostawmy to pole puste, gdyż nie jest to wymagane. Po tych czynnościach klikamy Apply okceptując ustawienia.

W głównym oknie znajduje się jeszcze pole do wyboru typu mikrokontrolera AVR Type i tu wybieramy naszą AMEGA328p i przycisk wywołujący okno ustawień jego fusebitów (Fuses) o tym na końcu. Tutaj znajdują się jeszcze funkcje umożliwaijące zaprogramowanie pamięci programu (Flash) i pamięci EEPROM mikrokontrolera.Nas interesuje tylko pamięć flash. Aby zaprogramować procesor wystarczy wybrać plik *.hex w naszym przypadku to meteo.hex z dysku za pomocą przycisku File i kliknąć przycisk Write, weryfikacja poprawności zapisanych danych odbywa się po wciśnięciu Verify, a odczyt danych z mikrokontrolera po klinięciu Read. Analogicznie sprawa wygląda podczas programowania pamięci EEPROM, tylko że służą do tego odpowiednie przyciski w sekcji EEPROM, a dodatkowo można też wgrywać plik *.eep wygenerowany przez BASCOM-AVR. Główne okno programu zawiera jeszcze pole tekstowe, w którym można podglądać parametry z jakimi program Burn-O-Mat wywołuje AVRDude i jego odpowiedzi.

Teraz przechodzimy do zakładki (Fuses).Gdzie wciskamy (read fuses) aby odczytać fusebity, następnie przechodzimy do zakładki (Fuse Hex Editor) i tam ustawiamy tak jak na poniższym obrazku. Po czym wciskamy apply aby zatwierdzić a następnie (write fuses). Na ostatnim zdjęciu mamy to pokazany w prostszy sposób gdzie można zaptaszkować lub odwrotnie poszczególne fusebity.

Na koniec drobna uwaga jeśli chodzi o programowanie fusebitów najczęściej początkujący wyłączają fusebit spien który służy do programowania isp co blokuje atmegę lub programują pin reset wtedy również jest ten sam problem.

* Dodatkowe opisy, poradniki: LINK_1 LINK_2

Programowanie ESP w systemie Linux



[info]

Zanim zaczniemy programować ESP:

- należy odłączyć zasilanie od stacji METEO

- wyciągnąć AVR z podstawki

- podłączamy konwerter USB-UART

- podłączamy zasilanie

- przystępujemy do programowania ESP

Tym sposobem AVR nie będzie nam resetował ESP. Oczywiście można programować ESP gdy jest AVR, ale należy pamiętać, że AVR resetuje ESP co minutę i musimy się „wyrobić” z wrzuceniem kodu od resetu do resetu.



Aby zaprogramować ESP należy podłączyć konwerter USB-UART pod piny na PCB:

  • METEO GND → konwerter GND
  • METEO ESP-RX → konwerter TX
  • METEO ESP-TX → konwerter RX

Na początek musimy zmienić firmware na NodeMCU

- pobieramy wszystkie pliki i wrzucamy na pulpit

- na pcb wciskamy „FLASH” i „RESET” puszczamy obydwa przyciski i wydajemy komendę:

sudo python esptool.py -p /dev/ttyUSB0 write_flash 0x000000 nodemcu_float_0.9.6-dev_20150704.bin

Pliki METEO

W plikach avr.lua i init.lua zmieniamy „KONFIGURACJĘ” na swoją

- klikamy „RESET”

- wydajemy komendy:

pierwsze avr.lua

sudo python ./luatool.py -p /dev/ttyUSB0 -f avr.lua -t avr.lua

drugie init.lua

sudo python ./luatool.py -p /dev/ttyUSB0 -f init.lua -t init.lua

Po prawidłowym zaprogramowaniu AVR i/lub ESP8266 zakładamy zworki. Jeżeli tego nie zrobimy to nie będzie odczytów z układów DS18B20 i nie będzie komunikacji między AVR, a ESP.

Sensory w NetTemp

Gdy już mamy stację METEO zaprogramowaną to czas przejść do ustawień w NetTemp.

Bez żadnych dodkowych czynności stacja METEO sama pojawi się w: NetTemp → „Device” → „New devices”

Dodajemy zielonym „plusikiem” te sensory które posiadamy i mamy podłączone pod stację. Resztę zostawiamy.

Oznaczenia sensorów które się pojawią w NetTemp:

Sensor w NetTemp Odczyt
ip_meteoid1_rainfall Opady deszczu
ip_meteoid2_speed Prędkości wiatru
ip_meteoid3_wind Kierunek wiatru
ip_meteoid4_uv Promieniowanie UV
ip_meteoid5_lux Natężenie światła
ip_meteoid6_press Ciśnienie
ip_meteoid7_humid Wilgotność
ip_meteoid8_temp Temperatura zewnętrzna
ip_meteoid9_temp Temperatura do słońca
ip_meteoid10_temp Temperatura przy gruncie
ip_meteoid11_temp Temperatura gruntu -10cm
ip_meteoid12_temp Temperatura gruntu -25cm
ip_meteoid13_temp Temperatura gruntu -50cm
ip_meteoid14_temp Temperatura gruntu -100cm
ip_meteoid15_volt Napięcie solar 1
ip_meteoid16_volt Napięcie solar 2
ip_meteoid17_volt Napięcie Turbina
ip_meteoid18_temp Napięcie akumulatora
ip_meteoid19_battery Pojemność akumulatora
ip_meteoid20_gust Poryw wiatru
ip_meteoid21_storm Odległość burzy
ip_meteoid22_lightning Wyładowania

Schematy

  • Stacja METEO (full)

  • Stacja METEO (zasilanie sieciowe)

  • Stacja METEO (zasilanie akumulatorowe)

  • Resztę elementów montujemy zależnie od posiadanych czujników/sensorów (patrz tabela „wykaz elementów”)

Czujniki/Sensory/Moduły

Wszystkie czujniki i sensory jakie użyłem:

Prędkość wiatru

Kierunek wiatru

Opady deszczu

Sensor burzy MOD-1016 (AS3935)

Moduł GYBMEP (BME280) ciśnienie, wilgotność, temperatura

CDN

Pliki

Soft ESP8266, ESP-07/ESP-12 (18/02/2017)

:16_rozwiazania_uzytkownikow:16.2_stacja_meteo:meteo_esp.zip**

- w pliku netconfig.lua znajduje się konfiguracja stacji, którą należy zmieć na swoje potrzeby.

Soft AVR, ATmega328p (18/02/2017)

:16_rozwiazania_uzytkownikow:16.2_stacja_meteo:meteo_avr.zip**

- programując AVR należy pamiętać aby FUSEBITy ustawić na zewnętrzny kwarc.

Zdjęcia stacji METEO

  • Płytka testowa zrobiona (frezowanie CNC) przez @cwcc

  • Płytka zrobiona w fabryce:

  • Zmontowana płytka testowa:

Znalezione błędy w stacji METEO


Źle opisana przetwornica STEP-UP/STEP-DOWN

- jest: „S7V8F1”

- powinno być: „S7V8F3”

- oczywiście przetwornicę jaką należy kupic to „S7V8F3”


Błędnie opisane złącze BME280/BH1750

- jest: +3V3, SDA, SCL i GND

- powinno być: +3V3, SCL, SDA i GND


rozwiazania_uzytkownikow/stacja_meteo.txt · ostatnio zmienione: 2018/09/09 16:32 przez artii
CC Attribution-Share Alike 4.0 International
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5