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?
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.
Niestety, siedzę już kilka godzin próbuję z tym co podałeś i nie mogę odczytać danych...
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...
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ś.
(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.
(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
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.
Dotarł do mnie analizator stanów logicznych, może to coś pomoże.
No nie wiem co masz na myśli, ja umiałbym to zrobić (choć nigdy nie zrobiłem), tylko nie mam potrzeby
. 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ć.