mlodedrwale - arcyciekawy i przewspaniały blog o wszystkim

433 MHz DIY Wszystkie

 

Dzisiaj wpadł mi w ręce termometr ThermoPro TP-08, to bardzo fajne narzędzie z dwoma sondami pomiarowymi oraz co najciekawsze – przesyłaniem mierzonych temperatur z czujnika do „bazy” za pośrednictwem sygnału radiowego 433 MHz. Termometr bezprzewodowy ThermoPro TP-08Niestety baza nie ma ani możliwości podłączenia do komputera ani innego logowania danych, co jest niezmiernie bolesne kiedy uwielbia się różnego rodzaju wykresy, logi itp. Z tego powodu postanowiłem dobrać się do danych wykorzystując dodatkowy odbiornik na 433 MHz, aby to zrobić musiałem poznać protokół komunikacyjny jakim posługuje się termometr i o tym będzie dzisiejszy wpis.

Zacząłem od pozyskania danych do analizy. Większość tanich urządzeń działających na 433MHz działa w modulacji OOK czyli ON – OFF Keying najprostszej z możliwych modulacji polegającej po prostu na włączaniu i wyłączaniu fali nośnej. Odbiornik ma jedną linię „data” która w zależności od tego czy w danym momencie nadawana jest nośna, znajduje się w stanie wysokim bądź niskim.

Jest wiele sposobów na podejrzenie danych do analizy, można to zrobić za pomocą odbiornika SDR, taniego odbiornika 433 MHz podłączonego do karty dźwiękowej itp. Ja skorzystałem z analizatora stanów logicznych, który kupiłem kiedyś z myślą, że może się kiedyś przydać (w końcu się przydał!). Jako software użyłem sigroka z PulseView.

Analizator stanów logicznych, odbiornik 433MHz, płyrka stykowa i termometr bezprzewodowyDo analizatora podłączyłem najtańszy, parszywej jakości odbiornik MX-RM-5V, który akurat w tym zastosowaniu spisał się wyśmienicie. Podłączyłem sondę temperatury do jednego wejścia termometru i uruchomiłem PulseView.

Sigrok PulseView Screenshot

Jak widać pulsogram (chrome podświetla uparcie słowo „pulsogram” na czerwono, czyli pewnie takie nie istnieje) jest bardzo czytelny, widać preambułę, składającą się z bardzo krótkiego impulsu i następującej po nim dłuższej przerwy. Następnie przesyłane są trzykrotnie te same dane oddzielone dłuższą przerwą.

Po przybliżeniu łatwo zorientować się jak są zakodowane bity:

Stan wysoki ma zawsze ~500 us i oddziela krótkie (500us) lub długie (1500us) przedziały stanu niskiego. Przyjąłem jak się później okazało całkiem słusznie, że krótsze niskie impulsy to „1” a dłuższe to „0”. Mając tą wiedzę zabrałem się do transkrypcji pulsogramów na zapis zerojedynkowy. Zrobiłem kilka różnych pomiarów dla różnych temperatur – im więcej danych tym lepiej, przynajmniej do pewnego momentu.

I wygląda to tak:

01010011 10000110 00011101 01001000 00111011 // 19st
01010011 10001100 00011101 01001000 10011011 // 20st
01010011 10011011 00011101 01001000 10111010 // 21st
01010011 10100010 00011101 01001000 11011001 // 22st
01010011 10110101 00011101 01001000 11111000 // 24st

Na pierwszy rzut oka widać, że pierwszy bajt, jest zawsze niezmienny, kierując się wrodzoną intuicją, uznałem go za adres urządzenia nadawczego. Drugi bajt zmienia się. trzeci i czwarty pozostają niezmienne. A piąty znowu się zmienia, ale piąty bajt jako że jest na końcu uznałem za jakąś sumę kontrolną i postanowiłem skupić się na początku na trzech środkowych bajtach.

Najpierw sprawdziłem czy jest jakaś korelacja między drugim bajtem a temperaturą wskazywaną przez termometr:

10000110 = 134 // 19st
10001100 = 140 // 20st
10011011 = 100 // 21st
10100010 = 155 // 22st
10110101 = 181 // 24

No i widać że im wyższa temperatura tym drugi bajt ma większą wartość. Na razie jest nieźle.

Termometr obsługuje temperatury od 0 do 300 stopni z rozdzielczością jednego stopnia, to się oczywiście w jednym bajcie nie zmieści, pora odkryć który bajt to dalsza część danych. Odłączyłem sondę od wejścia nr 1 i podłączyłem do wejścia 2:

01010011 10000110 00011101 01001000 00111011 // 19st - podłączony tylko pierwszy termometr
01010011 01001000 11010001 10000110 11011011 // 19st - podłączony tylko drugi termometr

Teraz widać, że miejscami zamieniły się bajt drugi z czwartym oraz pierwsza połowa trzeciego bajtu zamieniła się z drugą jego połową!

Temperatury, które zmierzyłem zbierając dane do analizy niewiele się od siebie różniły (19 – 24 st dla termometru o skali do 300 stopni) a pierwsza połowa trzeciego bajtu jest niezmienna dla wszystkich pomiarów uznałem więc, że to raczej będą najstarsze bity 12 bitowej liczby oznaczającej temperaturę:

000110000110 = 390 // 19st
000110001100 = 396 // 20st
000110011011 = 411 // 21st
000110100010 = 418 // 22st
000110110101 = 437 // 24

Tutaj zajęło mi chwilę wpatrywanie siew te liczby, dzieliłem je przez siebie, mnożyłem przez siebie szukając rozwiązania aż w końcu znalazłem!

390 / 10 - 20 = 19   // 19st
396 / 10 - 20 = 19,6 // 20st
411 / 10 - 20 = 21,1 // 21st
418 / 10 - 20 = 21,8 // 22st
437 / 10 - 20 = 23,7 // 24

Wygląda przekonująco 🙂 Wygląda na to, że nie tylko wiem już kal odczytać temperatury, to jeszcze przesyłane są one z większą rozdzielczością, niż można się było spodziewać – oryginalny odbiornik ma rozdzielczość jednego stopnia C.

Oczywiście to nie wszystko. Nadal nie sprawdziłem, czy pierwszy bajt to rzeczywiście adres urządzenia, nie rozszyfrowałem też jak wyliczana jest suma kontrolna w piątym bajcie (jeśli to rzeczywiście suma kontrolna). Próbowałem chwilę różnymi popularnymi algorytmami wyliczania tej sumy ale mi się nie udało. Na szczęście do zwykłego sniffowania przesyłania danych nie jest to potrzebne!

Tymczasem!


Wszystkie

Dzisiaj w krótkim wpisie chciałbym przedstawić mały, acz przydatny programik dla posiadaczy zegarków z pomiarem pulsu/tempa – Kalenji CW500 SD.
Zegarek ten, mimo wielu zalet (naprawdę polecam urządzenie) ma jedną zasadniczą wadę – po zgraniu treningów otrzymujemy pliki *.fitlog, które są otwierane tylko przez program „Geonaute software”, możemy zapomnieć o imporcie treningów do Endomondo czy innych programów, które jak jeden mąż używają plików typu *.tcx! I właśnie dlatego powstał programik FitlogTcxConverter.

Program oprócz prostej konwersji umożliwia poprawienie daty i godziny rozpoczęcia treningu, zmianę odległości przebytej w czasie treningu oraz jego nazwy i opisu. Dodatkowo dodałem kalkulator kalibracji footpada.

Fitlog to tcx converter

Pobierz FitlogTcxConverter


DIY Foto Wszystkie

Dzisiaj chciałbym przedstawić urządzenie do robienia sekwencji zdjęć obiektów umieszczonych na specjalnej obrotowej platformie. Po wykonaniu każdego zdjęcia maszynka obraca platformę, zatrzymuje ją, czeka aż drgania platformy ustąpią i robi kolejne zdjęcie.

Proste urządzenie diy do zdjęć 360d

 

Jak widać obudowa została wykonana niespecjalnie starannie dlatego że po pierwszych próbach okazało się, ze nie działa do końca tak jak powinno!
Założyłem, że elementem wykonawczym maszynki będzie silnik krokowy na którego osi będzie umieszczona platforma (swoją wyciąłem laserem z białej plexi 5mm w zakładzie produkującym reklamy).

Mocowanie silnika krokowego do obudowy maszynki

Silnik zamocowany jest bezpośrednio w górnej ściance obudowy.
Niestety, żeby chcąc wykonać urządzenie jak najniższym kosztem zamiast wykorzystać scalony sterownik silnika krokowego zrobiłem prosty sterownik na tranzystorach sterowany półkrokowo. I właśnie tutaj jest pogrzebany pies! Niestety przy 400 półkrokach platforma nie kręci się płynnie, tylko szarpie za każdym krokiem. Początek i koniec ruchu to dość mocne zrywy, które mogą powodować przesuwanie się przedmiotów na platformie, a próba spowolnienia obrotów nie przynosi zamierzonych efektów, a wręcz przeciwnie – platforma przy każdym kroku wpada w rezonanse i nieprzyklejone przedmioty zsuwają się z platformy 🙁
Czytaj dalej!


DIY Wszystkie

Dziś chciałbym przedstawić bardzo prosty sterownik 12 serwomechanizmów modelarskich oparty na mikrokontrolerze AtMega8 (AtMega8a).

Sterownik serwomechanizmow bluetooth

 

Głównym założeniem projektu była jego maksymalna prostota: jak najmniej części i prosta do wykonania płytka drukowana. Sterownik odbiera sygnały podawane na jego port USART, parametry portu to:  9600 baud, jeden bit stopu oraz brak bitu parzystości.

Schemat jest bardzo prosty, składa się dosłownie z paru elementów:

Schemat sterownika serwomechanizmów

 

Płytka drukowana ma wymiary 30x55mm i jest raczej prosta do wykonania samodzielnie, chociaż zawiera jedną ścieżkę przechodzącą między nogami procesora. Płytkę zaprojektowałem tak, by wejście sygnałów sterujących oraz linie zasilające były pinowo zgodne z tanim modułem bluetooth jaki posiadam.

Czytaj dalej!


Kulinaria Wszystkie

Dzisiaj przyszedł czas na wirtualne odwiedziny u Wuja Nata!

Odwiedziny odbyły się wczoraj dokładnie: TUTAJ! Potem słowo Chaczapuri zostało wpisane w google, aby zobaczyć jak rzecz wygląda. Następnie po nocy spędzonej na toczeniu śliny i koszmarach z gruzińskimi wypiekami w roli głównej nastąpił wspaniały dzień! Dzień, w którym na stole pojawiło się to:

Chaczapuri z serem wędzonym i bryndzą

Jak widać nie jest to dokładnie to, co opisał Wuj Nat, a to dla tego, że chyba nie do końca zrozumiałem opis wałkowania okrągłego placka, składania go na pół i ponownego wałkowania w celu otrzymania spowrotem koła, poza tym google pokazało Chaczapuri we właśnie takim kształcie.  Prawie takim kształcie. Placki z internetu wyglądają przepysznie, moje natomiast przypominają to, czego pomnik powstał w Rzeszowie.

A oto jak hartował się placek!

Najpierw pobiegłem po składniki, zgodnie ze wskazówkami kupiłem odpowiednie gatunki serów:

Bryndza, twaróg i podrobiony oscypek

Nie jestem pewien, czy twaróg jest odpowiedni dodałem więc połowę, bryndza (poszła cała), z podkarpackiej kopalni bryndzy była całkiem niezła, a serek góralski (nie oscypek – żeby produkować oscypek trzeba spełniać podstawowe normy higieny) był suchy jak… hmmm, no jak coś suchego – starty był konsystencji trocin dla chomika! Mimo wszystko udało się zetrzeć cały!
Czytaj dalej!