Elektroda.pl
Elektroda.pl
X
Sklep HeluKabel
Prosz, dodaj wyj徠ek www.elektroda.pl do Adblock.
Dzi瘯i temu, 瞠 ogl康asz reklamy, wspierasz portal i u篡tkownik闚.

Termometr bezprzewodowy Attiny84, DS18B20, 434MHz

ex-or 06 Lut 2019 15:43 465 3
  • #1 06 Lut 2019 15:43
    ex-or
    Poziom 17  

    Termometr bezprzewodowy Attiny84, DS18B20, 434MHz

    Zwykle przy przegl康aniu nagromadzonych skarb闚 w postaci cz窷ci el. przychodzmi do g這wy pomys造 ich wykorzystania. Tak by這 i tym razem. Z jakiego starego projektu zosta豉 mi para nadajnik/odbiornik 434MHz OOK, attiny13 i kilka DS18B20, pomy郵a貫m 瞠 na tej bazie zmajstruj prosty bezprzewodowy termometr: nadajnik z jednym czujnikiem, kt鏎y b璠zie mo積a wetkn望 w jakie zacienione miejsce na zewn徠rz plus, potem, jaki odbiornik.

    Jupo pierwszych przymiarkach okaza這 si, 瞠 nawet przy bardzo okrojonych za這瞠niach i radykalnych ci璚iach w sofcie kod nadajnika jednak nie chce sizmie軼i do procka. Trzeba by這 wybrainnego µC. Po kr鏒kich poszukiwaniach procka posiadaj帷ego po膨dane funkcje (pomiar ADC napi璚ia odniesienia i temperatury struktury, watchdog z przerwaniem, niewielka obudowa) wyb鏎 pad na rodzin attiny24/44/84. Z tej rodziny wybra貫m t84, r騜nica w cenie mi璠zy najmniejszym i najwi瘯szym prockiem w serii jest prawie 瘸dna a wi瘯sza ilo嗆 FLASH i RAM daje jednak spory komfort w programowaniu. Du篡 FLASH pozwoli tak瞠, opr鏂z zasadniczej funkcjonalno軼i, wepchn望trochkodu diagnostyczno-debugowego.

    W elektronicznej d逝baninie najgorsz rzecz dla mnie s kwestie obudowy. Znalezienie odpowiedniej obudowy w鈔鏚 tego co jest dost瘼ne na rynku przypomina zwykle podr騜 przez senne koszmary. Co gorsze nie mo積a zacz望 konstruowania na powa積ie przed jej pozyskaniem, bo PCB trzeba zrobi pod obudow. A bez zmontowanego PCB nie mo積a rozpocz望 powa積ych prac nad firmwarem. I tak wszystko le篡 z powodu kawa趾a plastiku :-( Tak by這 i tym razem - potrzebowa貫m szczelnej, ale otwieralnej, obudowy z jakimi uchami do mocowania i przepustem kablowym. Kolejne godziny mija造 bezowocnie na wertowaniu oferty TME, Kradexa itp. :-( W ko鎍u kt鏎ego dnia myszkuj帷 w markecie Jula natrafi貫m na puszk po陰czeniow Spelsberg, kt鏎a w wi瘯szo軼i spe軟ia豉 za這瞠nia, za wyj徠kiem sposobu mocowania (otwory na 鈔uby na wylot dna puszki) ale kt鏎y stosunkowo niewielkim wysi趾iem mo積a by這 zaadaptowa do potrzeb. Konkretnie jest to puszka ABox 040 1)

    Termometr bezprzewodowy Attiny84, DS18B20, 434MHz Termometr bezprzewodowy Attiny84, DS18B20, 434MHz Termometr bezprzewodowy Attiny84, DS18B20, 434MHz






    Maj帷 obudow, mo積a by這 wreszcie wykona PCB. P造tka zosta豉 wykonana domowym przemys貫m metod fotochemiczn (laminat jednostronny + folia foto) i pocynowana (Bisan LB3 + kuchenka gazowa).

    Termometr bezprzewodowy Attiny84, DS18B20, 434MHz Termometr bezprzewodowy Attiny84, DS18B20, 434MHz

    Termometr bezprzewodowy Attiny84, DS18B20, 434MHz Termometr bezprzewodowy Attiny84, DS18B20, 434MHz

    Pocz徠kowo zak豉da貫m, 瞠 µC b璠zie taktowany wewn皻rznym oscylatorem co korzystnie wp造nie na zu篡cie energii. Jako 瞠 urz康zenie mia這 zosta zamontowane na zewn徠rz postanowi貫m sprawdzi zachowanie wewn皻rznego oscylatora w niskiej temperaturze. W zamra瘸lniku domowej lod闚ki dokona貫m pomiar闚 zmiany cz瘰totliwo軼i oscylatora w temperaturze poni瞠j zera. Pomierzy貫m tak瞠 cz瘰totliwo軼i w temp. pokojowej oraz temp. po鈔edniej. Na podstawie tych pomiar闚 wyznaczy貫m funkcj zmiany cz瘰totliwo軼i wzgl璠em temperatury. Okaza這 si, 瞠 wp造w temperatury na cz瘰totliwo嗆 oscylatora jest znacznie wi瘯szy (ok 2x wi瘯szy) ni wykazany w nocie katalogowej. By這 to troch za du穎 dla nadajnika - zastosowany algorytm kodowania ma dosyszeroktolerancj cz瘰totliwo軼i, jednak w tym wypadku niewystarczaj帷. Pomy郵a貫m 瞠 firmware mo瞠 korygowa cz瘰totliwo嗆 w trakcie pracy na postawie odczytanej temperatury procesora. Tak wi璚 wyznaczy貫m funkcj i zastanawia貫m sinad jej oprogramowaniem...ale przypomnia貫m sobie, 瞠 wewn皻rzny oscylator jest te czu造 na zmiany napi璚ia zasilania. A przecie napi璚ie baterii z biegiem czasu b璠zie spada :-/ To ju by這 ponad moj cierpliwo嗆. Machn掖em r瘯 na oszcz璠no軼i i zamontowa貫m rezonator kwarcowy. Na szcz窷cie, na wszelki wypadek, na PCB przewidzia貫m dla niego miejsce.

    Po uruchomieniu uk豉du i zmontowaniu na styk闚ce odbiornika przyszed czas na testy po陰czenia radiowego. Pocz徠kowe testy wykaza造, 瞠 po陰czenie jest raczej zawodne, procent utraconych pakiet闚 by bardzo du篡 (na dystansie ok 10-15m przez kilka 軼ian z ceg造, r騜ne odbiorniki pr康u wok馧). Poczyta貫m trocho antenach 2)(bardzo obszerny temat) i poeksperymentowa貫m z kilkoma. Bez wi瘯szego powodzenia. Trochmnie to zniech璚i這. Potem przypadkiem prze陰czy貫m odbiornik na zasilanie z zasilacza (wcze郾iej by zasilany z USB laptopa) i nagle poziom b喚d闚 transmisji radykalnie spad do akceptowalnego poziomu :-). A wi璚 przez niedocenianie problem闚 zwi您anych z zasilaniem straci貫m troch czasu. Z drugiej strony dowiedzia貫m sitrocho antenach co z pewno軼i przyda si przy konstrukcji odbiornika.

    Nadajnik pracuje nieco ponadmiesi帷, w tym czasie obserwowa貫m niezawodno嗆 陰cza, i stwierdzam, 瞠 dzia豉 to zadowalaj帷o. Zaniki zdarzaj sicz瘰to, ale poniewaka盥y pakiet nowych danych jest powtarzany jeszcze dwukrotnie ca趾owita utrata danych zdarza sidosyrzadko. Sporadycznie zdarzaj si dni w kt鏎ych zak堯cenia powoduj przerwy w odbiorze d逝go軼i 0.5-1 godziny, tak jak i dni z niemal zerowymi przerwami. Przewa積ie procent ca趾owicie utraconych pakiet闚 to ok. 5% czyli 鈔ednio jest to ok 3 minutowa przerwa raz na godzin. Zak豉dam, 瞠 temperatura zewn皻rzna zmienia sidosypowoli, przyj掖em wi璚, 瞠 dane odczytane do 15 minut wstecz s wci捫 aktualne, a miedzy 15 a 30 minut nadal wystarczaj帷o dobre. Uwa瘸m wi璚, 瞠 jako嗆 陰cza w tym przypadku jest wystarczaj帷a.

    W momencie gdy przyszed czas na monta nadajnika u鈍iadomi貫m sobie, 瞠 jako iczujnik ma wisie na kilkumetrowym kablu, przyda豉 by si jaka ochrona portu przed przepi璚iami, czego w og鏊e nie uwzgl璠ni貫m w konstrukcji. Na p造tce nie za bardzo by這 miejsce na przer鏏ki, a nie chcia貫m sibawiw robienie kolejnej wi璚 na paj彗a plus du穎 termogluta zamontowa貫m dwie diody schotkego i rezystor, przy czym rezystor jusinie zmie軼i i znalaz miejsce ju za z陰czem (czyli na przewodzie) :-(. Zaktualizowany schemat tego fragmentu po przer鏏ce:

    Termometr bezprzewodowy Attiny84, DS18B20, 434MHz

    Firmware jest napisane w j瞛. C i liczy 2365 linii kodu (z komentarzami) w tym 1248 kod os鏏 trzecich. Wykorzystano oprogramowanie obce:
    Obs逝ga UART (tylko Tx) wg Atmel Application Note AVR305 (z w豉snymi modyfikacjami) 115 LOC
    Biblioteka OneWire oraz DS18B20 autorstwa Martin Thomas (ta druga z du篡mi modyfikacjami) 851 LOC
    Biblioteka VirtualWire autorstwa Mike McCauley (mikem@airspayce.com) (z du篡mi modyfikacjami) 292 LOC

    Urz康zenie jest zasilane bateri 3 ogniw AAA. Teoretyczne obliczenia zu篡cia energii (bez uwzgl璠nienia samoroz豉dowania) wykaza造, 瞠 energii powinno wystarczy na blisko 4,5 roku pracy. W zu篡ciu energii udzia transmisji radiowej to 32,5% ca貫go zu篡cia, konwersji wykonywanej przez czujnik - 30,6%. Konwersja jest wykonywana z pe軟 rozdzielczo軼i, gdyby zmniejszy rozdzielczo嗆 to teoretycznie czas pracy zosta豚y wyd逝穎ny do:
    5,2 lat przy rozdzielczo軼i 11 bit闚 (przy 18% udziale w zu篡ciu energii),
    5.8 lat przy 10 bitach (9,9% udzia逝)
    6,1 lat przy 9 bitach (5,2% udzia逝)

    I to mniej wi璚ej tyle na temat nadajnika.

    Jeszcze tylko podsumowanie koszt闚.
    Cz窷ci elektroniczne, laminat: 45,90 z.
    Obudowa, przew鏚, podstawa: 41,16 z.
    Razem 87,06.

    I na koniec urz康zenie przed zamontowaniem w miejscu pracy.

    Termometr bezprzewodowy Attiny84, DS18B20, 434MHz Termometr bezprzewodowy Attiny84, DS18B20, 434MHz Termometr bezprzewodowy Attiny84, DS18B20, 434MHz Termometr bezprzewodowy Attiny84, DS18B20, 434MHz



    1) https://www.spelsberg.pl/nc/produktu/an/80490701/
    https://www.jula.pl/catalog/elektryka-i-oswie...ne/puszki-laczeniowe/puszka-odgalezna-403207/

    2) https://wireless.murata.com/media/products/apnotes/antenna.pdf
    https://lowpowerlab.com/guide/rf-best-practices/practical-considerations/
    https://www.instructables.com/id/433-MHz-Coil-loaded-antenna/
    http://www.antenna-theory.com/
    i inne

    Dodano po 14 [minuty]:

    Termometr bezprzewodowy cz. 2. Odbiornik

    Termometr bezprzewodowy Attiny84, DS18B20, 434MHz

    W tej chwili odbiornik w postaci docelowej jeszcze nie istnieje. Na teraz, na szybkiego, zmajstrowa貫m na bazie Blue Pilla oraz wy鈍ietlacza od zez這mowanej Nokii 6210 odbiornik tymczasowy. Poniewa na wy鈍ietlaczu jest trochmiejsca na dodatkowe dane dorzuci貫m te czujnik temperatury, wilgotno軼i i ci郾ienia BME280, kt鏎y w konstrukcji docelowej raczej nie jest przewidziany.

    Termometr bezprzewodowy Attiny84, DS18B20, 434MHz

    Napisane firmware odbiornika jest pierwszpraktyczn, ca這軼iowaplikacjnapisanprzeze mnie przy wykorzystaniu frameworka QP/C, firmy Quantum Leap. Wcze郾iej robi貫m jakie testy, 獞ieczenia. Tak wi璚 by to swego rodzaju poligon.

    QP/C (Quantum Platform in C) wg materia堯w firmowych (t逝maczenie prawie dos這wne) jest "lekkim, open soursowym frameworkiem do budowy reaktywnych aplikacji czasu rzeczywistego jako systemu asynchronicznych, sterowanych zdarzeniowo, obiekt闚". Szczeg馧owe informacje i dokumentacja s dost瘼ne na stronach producenta: https://www.state-machine.com/products/ wi璚 nie b璠 si rozpisywa a tylko napisz o jakich swoich wra瞠niach.

    Framework jest portowany na spor ilo嗆 procesor闚, RTOS闚 oraz system闚 operacyjnych w tym mnie interesuj帷ych Cortex-M, AVR, Linuks, pe軟a lista dost瘼na pod linkiem wy瞠j. I juna wst瘼ie by這 to dla mnie bardzo u篡teczne, bo zasadniczy szkielet aplikacji przetestowa貫m na PC a potem na procesorze docelowym testowa貫m tylko integracj z modu豉mi niskopoziomowymi.

    Wielk pomoc w budowie aplikacji jest modeler QM. Mo積a w nim opracowa ca造 szkielet aplikacji, a wi璚 zdefiniowa zbi鏎 automat闚 z kt鏎ej ma sisk豉daaplikacja, zdefiniowa zbi鏎 sygna堯w (event闚) s逝膨cych zar闚no do zmiany stan闚 automatu jak do komunikacji mi璠zy automatami (a tak瞠 niekiedy automatu z sob samym). Na podstawie zbudowanego modelu generuje si kod 廝鏚這wy w j瞛. C (lub C++). Wygenerowany kod mo積a potem edytowa "z palca" bo jest wystarczaj帷o czytelny (w za陰czeniu kod dla jednego z automat闚), ale lepiej tego nie robi i wszystkie zmiany wprowadzaprzez QM. Obs逝ga modelera jest 豉twa, lekka i przyjemna :-). Drobnniedogodno軼i jest fakt, 瞠 program nie posiada takich ficzer闚 jak kolorowanie sk豉dni (tzn. ma raczej ubogie kolorowanie niekt鏎ych element闚 frameworka) czy podejrzenie deklaracji funkcji. Tak wi璚 uwa瘸m, 瞠 najwygodniej jest wpisywa w modelerze jak najmniej kodu nie zwi您anego z samym frameworkiem tylko robito juw zewn皻rznym IDE.
    Oto g堯wne okno programu z otwartym modelem omawianego odbiornika.

    Termometr bezprzewodowy Attiny84, DS18B20, 434MHz

    Po lewej, w sekcji "Model explorer" jest drzewo z elementami modelu. W ga喚zi "Events" zdefiniowane s typy r騜nych sygna堯w. W ga喚zi AOs s zdefiniowane poszczeg鏊ne taski, w tym wy鈍ietlony w 鈔odkowym oknie task "Sensor" zwi您any z czujnikiem BME280. W ga喚zi "balkonowy_rx" s szablony do generowania kodu 廝鏚這wego. W okienku "Property Editor" pojawiaj sipropertiesy zale積e od obiektu wybranego w okienku "Model explorer", w tym wypadku jest prze陰cznik wstawiania w kodzie 廝鏚這wym s這wnik闚 do cel闚 debugowania automatu "Sensor".

    Termometr bezprzewodowy Attiny84, DS18B20, 434MHz

    Powy窺zy screen pokazuje budow automatu "Sensor", hierarchi stan闚, przej軼ia oraz sygna造 inicjuj帷e te przej軼ia. I tak sygna SNSR_TOUT jest generowany przez prywatny timer taska (ka盥y task mo瞠 mie kilka timer闚), a sygna造 SNSR_OK i ERR s generowane z zewn徠rz wobec frameworka przez driver czujnika BME280.

    Przyk豉dowy kod wygenerowany przez QM dla automatu Sensor:

    Kod: c
    Zaloguj si, aby zobaczy kod


    Kod: c
    Zaloguj si, aby zobaczy kod


    Jak juwspomnia貫m framework ma liczne porty. Na poni窺zych screenach faza testowania programu na PC i symulowany w oknie terminala wy鈍ietlacz LCD.

    Termometr bezprzewodowy Attiny84, DS18B20, 434MHz Termometr bezprzewodowy Attiny84, DS18B20, 434MHz Termometr bezprzewodowy Attiny84, DS18B20, 434MHz Termometr bezprzewodowy Attiny84, DS18B20, 434MHz

    Uruchamianie jest wpomagane dedykowanymi toolsami: QSpy, QSpyView, QUTest. QSpy pozwala na obserwacj wszystkich chyba operacji wykonywanych w programie na poziomie frameworka. Zakres potrzebnych informacji jest mocno konfigurowalny. QSpyView pozwala na interaktywn prac z QSpy, np. zmian konfiguracji czy generowanie event闚 "on line". QUTest to "test harness" do zautomatyzowanych test闚 jednostkowych. Narz璠zia posiadaj obszern dokumentacj https://www.state-machine.com/qtools/index.html.. Poni瞠j kilka screenshot闚 z pracy narz璠zi.

    Informacje emitowane przez QSpy.
    Termometr bezprzewodowy Attiny84, DS18B20, 434MHz

    Formatka generowania eventu przez QSpyView
    Termometr bezprzewodowy Attiny84, DS18B20, 434MHz

    Diagram interakcji utworzony na podstawie danych dostarczonych przez QSpy (sam pocz徠ek diagramu, bo ca造 diagram by豚y baaardzo d逝gi).

    Termometr bezprzewodowy Attiny84, DS18B20, 434MHz

    Film z dzia豉nia (odbi鏎 danych z czujnika zewn皻rznego i aktualizacja ekranu):
    https://youtu.be/5OsgzFKFDh0

    Kod wygnerowany przez QM zosta zintegrowany z kodem ni窺zego poziomu oraz z kodem z CubeMX. Integracja z CubeMX zdecydowanie by豉 najgorszym etapem przy pisaniu programu. Kod CubeMX jest strasznie ba豉ganiarski z inicjacjami poukrywanymi w dziwnych funkcjach a framework wymaga pewnego porz康ku i kolejno軼i inicjowania. Szczeg鏊nie wa積e jest ustawienie odpowiednich priorytet闚 handler闚 przerwa i moment ich w陰czenia. Ale jako siuda這 bo odbiornik dzia豉 :-).
    Kodu 廝鏚這wego nie zamieszczam bo konfiguracja ca這軼i jest dosyskomplikowana (przynajmniej wg mojej sposobu) ale jak ktobardzo by chcia to mog wstawi.


    Fajne! Ranking DIY
    Potrafisz napisa podobny artyku? Wy郵ij do mnie a otrzymasz kart SD 64GB.
  • Sklep HeluKabel
  • #2 06 Lut 2019 16:58
    rb401
    Poziom 34  

    Sam temat pozornie bardzo trywialny. Jeszcze jeden termometr.
    Ale w Twoim starannym wykonaniu i dok豉dnym opisie pracy i toku rozumowania, to kawa warto軼iowej pracy badawczej wartej publikacji. Du篡 plus daj.

    A co do konkret闚.
    Jednak nie podzielam Twojego zadowolenia z wyboru tej puszki z Juli.
    Ma wiele wad, z kt鏎ych wymieni貫 to, 瞠 mocowanie (鈔uby) wypadaj w przestrzeni, kt鏎a powinna by hermetyczna. Druga rzecz 瞠 przepusty-gumki niby
    mo瞠 zapewni jak捷 szczelno嗆 przej軼ia kabla ale zupe軟ie nie trzymaj kabla (u Ciebie to robi termoklej na p造tce).
    Z w豉snego do鈍iadczenia powiem, 瞠 nie ma sensu w takich konstrukcjach "dziadowanie" z takimi puszkami, jak jest hermetyczny Kradex (przyk豉dowo Z57J lub inne gabaryty) i s d豉wiki kablowe (seria PG).
    To nawet cenowo nie jest dro窺ze ni te puszki z Juli a o niebo lepsze. Otwory na 鈔uby do mocowania puszki s poza przestrzeni hermetyczn a instaluj帷 d豉wiki PG jest solidne, szczelne przej軼ie. Plastik te lepszy.
    Naprawd nie wiem co Ci zrazi這 do Kradexa to s bardzo przyjemne obudowy.

  • Sklep HeluKabel
  • #3 06 Lut 2019 18:29
    niewolno2
    Poziom 39  

    W zestawie kt鏎y posiadam udr瘯 by造 baterie kt鏎e w warunkach zewn皻rznych wytrzymywa造 bardzo kr鏒ki okres szczeg鏊nie zima dawa豉 popali, wprawdzie obudowa nadajnika te pozostawia豉 du穎 do 篡czenia postanowi貫m "wywlec" sam czujnik poza obudow a sam nadajnik przenios貫m do mieszkania, jedynie dwa cienkie przewody przechodz przez okiennice ale wcale mi to nie przeszkadza a problem z bateriami rozwi您a si sam.

  • #4 06 Lut 2019 19:06
    ex-or
    Poziom 17  

    Projekt jest oczywi軼ie strasznie banalny, pocz徠kowo nawet nie my郵a貫m o publikacji ale pojawi豉 siakcja z pendrivami i jednak chciwo嗆 (jak zawsze) zwyci篹y豉. ;-)

    rb401 napisa:
    Jednak nie podzielam Twojego zadowolenia z wyboru tej puszki z Juli.

    Nie jestem zadowolony z tej puszki. Jako w TME nie mog貫m znale潭 nic odpowiedniego i w ko鎍u, lekko wnerwiony, wzi掖em to co siz grubsza nada這. Jakbym na poszukiwanie po鈍i璚i wi璚ej czasu to pewnie bym coznalaz. Kiedy projekt nadmiernie si wyd逝瘸, a szczeg鏊nie gdy stoi na jakim etapie wstrzymuj帷ym ca這嗆 prac to pojawia sipresja na podj璚ie decyzji, cho熲y suboptymalnych.
    niewolno2 napisa:
    W zestawie kt鏎y posiadam udr瘯 by造 baterie kt鏎e w warunkach zewn皻rznych wytrzymywa造 bardzo kr鏒ki okres szczeg鏊nie zima dawa豉 popali, wprawdzie obudowa nadajnika te pozostawia豉 du穎 do 篡czenia postanowi貫m "wywlec" sam czujnik poza obudow a sam nadajnik przenios貫m do mieszkania, jedynie dwa cienkie przewody przechodz przez okiennice ale wcale mi to nie przeszkadza a problem z bateriami rozwi您a si sam.

    Jednym z powod闚 podj璚ia projektu by這 w豉郾ie uwolnienie siod kabli :-)
    Pocz徠kowo chcia貫m wstawipojedyncze ogniwo LiIon, kt鏎e s odporne na ujemne temperatury, jednak to niebezpieczne zabawki wi璚 w ko鎍u zdecydowa貫m sina bezpieczniejsze rozwi您anie.
    Max. pr康 pobierany to ok. 10mA (w czasie pracy nadajnika), a wi璚 raczej niedu穎 jak dla tych ogniw. Jaka b璠zie rzeczywista trwa這嗆 baterii sioczywi軼ie dopiero oka瞠. Przez ostatni miesi帷, kiedy przez ok. tydzie panowa造 ujemne temperatury a w pozosta造m czasie ok 3-7, napi璚ie baterii spad這 o 0.1V z (4,8 na 4,7). No ale napi璚ie nowych ogniw spada trochszybciej wi璚 to nic nie znaczy.