• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Czujnik kierunku wiatru - nieznany protokół
#1
Witam, buduję stację meteo. Problem mam z czujnikiem kierunku wiatru, niestety ma wbudowany jakiś uc i zeszlifowane oznaczenia. Walczę z tym od kilku dni i nie wiem jak to ugryźć. W sieci znalazłem tylko jeden wątek z takim samym właśnie problemem. Poniżej zamieszczam zdjęcie płytki i przebieg jaki generuje na wyjściu.
Znalazłem też skrypcik w pythonie na rpi niestety, ale nie umiem go przepisać na arduino.
https://github.com/MDreamer/WeatherStati...indVane.py
Może jest osoba na forum która potrafiłaby mi pomóc? Smile


Załączone pliki Miniatury
       
 
Odpowiedź
#2
Podobne przebiegi generują piloty na podczerwień, może gdzieś w tym temacie poszukaj. Są w bibliotekach IRLremote i IRremote przykłady do nagrywania takich nieznanych pilotów długością impulsów, potem są w stanie taki nagrany przebieg wysłać z powrotem. Szukaj "Kod Manchester", piki mają określoną częstotliwość, zwykle około 38kHz, szerokość danego impulsu to szukane 0 lub 1.
 
Odpowiedź
#3
Niestety, siedzę już kilka godzin próbuję z tym co podałeś i nie mogę odczytać danych...
 
Odpowiedź
#4
Pokaż drugą stronę płytki.. Odczytujesz pin data czy WIND?? bo WIND to tylko przerzutnik z Halla wiec wykres prawidłowy tam nie ma informacji który. może trzeba w przypadku daty inicjować połączenie...
 
Odpowiedź
#5
No to opisz co robiłeś, jaką ustaliłeś częstotliwość sygnału, długości impulsów i z jakich kodów skorzystałeś.
 
Odpowiedź
#6
(11-03-2019, 23:51)Jarewa0606 napisał(a): Pokaż drugą stronę płytki..  Odczytujesz pin data czy WIND?? bo WIND to tylko przerzutnik z Halla wiec wykres prawidłowy tam nie ma informacji który.  może trzeba w przypadku daty inicjować połączenie...

Odczytuję pin data. Z drugiej strony jest jedynie przelotka do DATA.
znalazłem schemat przy zdjęciu.
[Obrazek: dY1Qo.jpg]
 
Odpowiedź
#7
(12-03-2019, 10:15)kaczakat napisał(a): No to opisz co robiłeś, jaką ustaliłeś częstotliwość sygnału, długości impulsów i z jakich kodów skorzystałeś.

Korzystałem z przykładów bibliotek: manchaster, irlib, irremote, ppmencoder, rcswitch, rc5, virtualwire
 
Odpowiedź
#8
No tak wprost to nic nie zadziała, bo te biblioteki spodziewają się określonej częstotliwości, pokazałeś oscylogram z pikami to pewnie masz oscyloskop. Trzeba sobie ustalić częstotliwość, zapisać kilka takich oscylogramów, dla każdego określić długość pierwszego impulsu niskiego (w arduino są funkcje pulse, można to zmierzyć w us), impulsów długich i krótkich. Można skorzystać z przerwań zewnętrznych na pinach 2 lub 3 by ANALOGICZNIE, choć niekoniecznie tak samo jak w pilocie IR, to odczytywać. Albo wpisać w google "arduino weather station wind direction manchester" i może jest coś podobnego/gotowego: https://github.com/robwlakes/ArduinoWeatherOS.
 
Odpowiedź
#9
Dotarł do mnie analizator stanów logicznych, może to coś pomoże.


Załączone pliki Miniatury
   
 
Odpowiedź
#10
No nie wiem co masz na myśli, ja umiałbym to zrobić (choć nigdy nie zrobiłem), tylko nie mam potrzeby Big Grin. Próbuję naprowadzić Ciebie. Zmierz jeszcze ile wynosi czas między tą serią pików (przypadkowo jest ich 8?). Przeanalizuj te piki dla różnych kierunków. Użyj przerwania zewnętrznego, zliczaj czas w us, wpisuj kolejny pomiary do tablicy, potem ją przeanalizuj przyjmując jakiś próg błędu, zamień czas us na 0 i 1 w zależności od długości impulsu i masz bajt, zobacz ile różnych zarejestrujesz, zamień to na wartość kierunku. Jak wykryjesz ten długi stan niski to robisz obliczenia i rozpoczynasz zabawę od nowa. Trochę za mało próbek by to potwierdzić, ale pewnie można to uprościć, po pierwszym przerwaniu od zbocza narastającego wystarczy odczekać 750us i odczytać stan 0 lub 1, potem co 1500us 7 kolejnych wprost 0 / 1. W opcjach Salae Analyzers masz różne protokoły, możesz coś dopasować.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości