Udoskonalony Termometr bezprzewodowy
: 21 sty 2017, 0:32
Postanowiłem poprawić co nieco i wykonać w miarę mały układ nadajnika. Powstała więc płytka 2cm x2cm czyli wielkości płytki nadajnika.
Urządzenie oprócz temperatury mierzy też napięcie baterii. Dzielnik napięcia potrzebny do pomiaru zasilany jest tylko na czas pomiaru.
Większość czasu urządzenie śpi w trybie Powerdown. Do życia budzi go co około 8 sekund Watchdog.
Całość nie była by nic warta gdyby odbiornik nie potrafił się odnaleźć w szumie eteru.
Tak więc powstał zupełnie nowy kod odbiornika. Teraz przy zasilaniu nadajnika nawet z dwóch baterii czyli przy około 3V i nadawaniu jednej paczki danych bez powtórzeń jest ona dekodowana w odbiorniku z bardzo wysoką skutecznością poprzez ściany domu.
Zastosowałem bufor cykliczny w którym wykrywam ostatni bajt całej ramki. Wielkość bufora została tak dobrana że po wykryciu ostatniego bajtu ramki w buforze zmieszczą się tylko dane a preambuła zostaje odrzucona. Odpada więc wykrywanie początku transmisji.
Całość została zaopatrzona w sprawdzanie sum kontrolnych.
Tiny85 miałem pod ręką bo kod pewnie zmieściłby się nawet w Tiny25
W paczce znajdują się kody nadajnika, odbiornika, schemat, wzór płytki oraz kilka dodatkowych fotek
Urządzenie oprócz temperatury mierzy też napięcie baterii. Dzielnik napięcia potrzebny do pomiaru zasilany jest tylko na czas pomiaru.
Większość czasu urządzenie śpi w trybie Powerdown. Do życia budzi go co około 8 sekund Watchdog.
Całość nie była by nic warta gdyby odbiornik nie potrafił się odnaleźć w szumie eteru.
Tak więc powstał zupełnie nowy kod odbiornika. Teraz przy zasilaniu nadajnika nawet z dwóch baterii czyli przy około 3V i nadawaniu jednej paczki danych bez powtórzeń jest ona dekodowana w odbiorniku z bardzo wysoką skutecznością poprzez ściany domu.
Zastosowałem bufor cykliczny w którym wykrywam ostatni bajt całej ramki. Wielkość bufora została tak dobrana że po wykryciu ostatniego bajtu ramki w buforze zmieszczą się tylko dane a preambuła zostaje odrzucona. Odpada więc wykrywanie początku transmisji.
Całość została zaopatrzona w sprawdzanie sum kontrolnych.
Kod: Zaznacz cały
'****************************************************
'* WIRELESS THERMOMETER *
'* WITH CIRCULAR BUFFER *
'* TRANSMITTER PART *
'* niveasoft(at)tlen.pl *
'* 2017-01-20 *
'****************************************************
'-DESCRIPTION-
' For energy saving device is in Powerdown Mode most of the time.
' It weakup after Watchdog Restart every ~8s
' SRAM is not cleared so even after Reset variable Count holds seconds counter
' So every ~8s x Period_const device read Raw data from DS18B20 and measure battery voltage.
' If no error has occured then it packed data, own number and calculated CRC is coded
' into Manchester and send via radio.
' Also for energy saving voltage divider is enabled only for measure time.
Kod: Zaznacz cały
'****************************************************
'* WIRELESS THERMOMETER *
'* WITH CIRCULAR BUFFER *
'* RECEIVER PART *
'* niveasoft(at)tlen.pl *
'* 2017-01-20 *
'****************************************************
'-DESCRIPTION-
' Code receive incomming data in interrupt background mode.
' If special Tail byte is detected then this byte is the last in whole frame.
' Circular buffer size is calculated to hold only 14 bytes.
' So if Tail is detected then rest of buffer must be previous data.
' In this way preamble is rejected and you have only data bytes.
' These are coded im Manchester six bytes. First two contains data from DS18B20
' Second two bytes contains ADC value readed from node battery terminals.
' Fifth byte is a Node number so you can have more of them and recognize.
' Sixth byte is a CRC from provious five bytes.
W paczce znajdują się kody nadajnika, odbiornika, schemat, wzór płytki oraz kilka dodatkowych fotek