ATNEL tech-forum
https://forum.atnel.pl/

SunDuino - Nelduino - iButton czyli zabawa z 1Wire
https://forum.atnel.pl/topic80.html
Strona 1 z 1

Autor:  SunRiver [ 27 lis 2011, o 17:58 ]
Tytuł:  SunDuino - Nelduino - iButton czyli zabawa z 1Wire

Pastylki Ibutton firmy DALLAS to nic nowego na rynku, są to urządzenia pracujace na magistrali 1Wire. Magistrala ta

wykożystywana jest dosyć czesto przez elektroników do transmisji z popularnym Termometrem cyfrowym DS18B20,

ale urzadzeń na tej magistrali jest wiele firma DALLAS poza słynnymi termometrami DS18xxx produkuje pastylki

iButton wśród których znajdziemy proste DS1990 - które mogą pracować jako klucz gdyż dysponują unikalnym kodem,

ale też sa pastylki zawierające termometr , pamięć i wiele innych. Zaletą pastylek jest łatwość użycia i fakt iż

moga byc zasilane pasożytniczo dzięki czemu wystarcza 2 przewody MASA i DATA .

W tym temacie skupimy się na najprostrzych pastylkach DS1990R w rozmiarze F5 .




DS1990R zawiera tylko unikalny kod - 64 bitowy ID , który możemy tylko odczytywać , ale świadomość faktu iż kod ten

jest unikalny (nigdy się nie powtarza) umożliwia nam stworzenie układu będącego np. kodowym Zamkiem lub Alarmem

uzbrajanym przy pomocy pstylki.




...:: DANE PSTYLKI DS1990R ::...

Wszystkie dane znajdziemy w nocie PDF pod Adresem: http://pdfserv.maxim-ic.com/en/ds/DS199 ... 90R-F5.pdf

Tak więc do naszych niecnych celów użyjemy:

Obrazek

Dedykowanego czytnika DS9092L zawierającego Diodę sygnalizacyjna LED w kolorze zielonym

Obrazek

Potrzebna nam będzie też płytka Sunduino lub Arduino lub inny klon z mikrokontrolerem AVR

Przekaźnik na 12V i tranzystor NPN np 2N2222 lub BC547C i parę rezystorów 1K i 4.7K.




Z racji iż nasz czytnik posiada diodę LED użyjemy jej do sygnalizacji poprawności KLUCZA.




..:: PROGRAM ZAŁOŻENIA ::..




Założenie programu jest bardzo proste , Czytnik oczekuje na przyłożenie Pastylki po czym program

sprawdza odczytany klucz z bazą danych i po weryfikacji oznajmia nam miganiem diody co 0,5s ,

że klucz jest prawidłowy i tym samym zezwala na dostęp uruchamiając przekaźnik, lub miganiem szybkim

co 150ms informuje nas iż kod jest nieprawidłowy / nierozpoznany i tym samym nie zezwala na dostęp.

W przykładzie użyjemy zakodowanych 8 pastylek zezwalających na dostęp dla 8 użytkowników.

...:: KOD PROGRAMU ::...

W programie użyta została biblioteka dla Arduino IDE OneWire.h ułatwiająca korzystanie z magistrali 1Wire

w środowisku ARDUINO IDE, która jest do pobrania w REPO-Duino wraz z plikiem PDE programu prezentowanego

poniżej. Program dodatkowo wysyła na terminal komunikaty , które można wyświetlić na Serial LCD lub przerobić

na wyświetlanie przez LCD zgodny z HD77480 :


Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Resztę czyli potrzebne biblioteki OneWire schemat połaczeń znajdziecie na mojej stronie życzę miłej zabawy z pastylkami IButton

Przy wpisywaniu własnych pastylek przyda się to iz program wyświetla w terminalu ID przytknietej pastylki
wystarczy tylko go przepisać do tablicy i gotwe. ID jest już podane w DEC :)

Przykład działania w terminalu -- pierwsza Linia oznaczona jako ID to kod naszej pastylki
w przypadku niezgodności kodów w terminalu wyswietlone zostaja numery IDE zakodowanych pastylek
od strony czytnika informacja jest tylko miganie diody w czytniku.

Widoczny terminal powstał z potrzeby w Visual C#.

Obrazek


życzę miłej zabawy z pastylkami IButton

Autor:  kierlan [ 27 lis 2011, o 21:20 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

Witam!!!

To teraz pół żartem pół serio :D

Jako, że jest niedziela wieczór a my elektronicy nigdy się nie pozwolimy nudzić... prezentuje żartobliwe lecz skuteczne rozwiązanie dla braku ibuttona.

Skoro wiemy, że każdy element na 1wire, pastylki i czujniki mają swój unikalny kod zbudujemy czytnik wraz z pastylką domowej roboty :).

Zakładam, że nie każdy ma w swoim zapleczu ibuttony i czytniki, ale płytkę uniwersalną bądź breadboarda znajdzie każdy, czujnik DS18B20 też sądzę że ma każdy z nas zatem do dzieła!!

Potrzebne elementy:
1. 2x rezystor 4,7Kohm
2. kawałek płytki uniwersalnej lub breadboard
3. pare kabelków
4. DS18B20

teraz tak:

łączymy środkową nogę (DATA) DS18B20 z prawą patrząc na napisy (VCC)
następnie od środkowej nogi podpinamy kabelkiem do procesora tam gdzie kabelek data od ibuttona.
gnd do gnd. kolejny krok to poprzez rezystor 4,7Khom vcc od DS18B20 do vcc.

Prawie gotowe, teraz odczytujemy kod naszego czujnika w terminalu( po wgraniu kodu SunRivera) wyskoczy nam, że klucz jest nieprawidłowy ale uzyskamy nasze ID.

Teraz zamieszczamy je w tabeli naszego programu i...

DZIAŁA!! MAMY SWÓJ DOMOWY ZESTAW "IBUTTON" :D

Obrazek

Miłej zabawy :)

Autor:  mirekk36 [ 27 lis 2011, o 22:38 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

Bardzo fajny artykuł z tego wyszedł ;)

Autor:  SunRiver [ 27 lis 2011, o 23:09 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

Zdało by się jeszcze w GCC napisać to samo :) narazie walcze w GCC z DS1904L :) ale jakos mi nie idzie

Autor:  kierlan [ 28 lis 2011, o 06:55 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

hehe, nuda robi swoje :D

Autor:  SunRiver [ 28 lis 2011, o 16:42 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

Tak zwłaszcza jak się w zakamarkach "warsztatu" walają dziwne drobiazgi :)

Autor:  chemik0 [ 25 cze 2013, o 21:29 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

Witam,
Odkopię trochę temat z pytaniem do Sun-a:

Jest jakaś szansa na powtórkę z rozrywki dla GCC?

Autor:  SunRiver [ 25 cze 2013, o 21:32 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

chemik , ale to nie jest problem :) wystarczy odczytywać ID pastylki :)

Autor:  chemik0 [ 25 cze 2013, o 21:38 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

Jakoś mi jeszcze nie idzie z 1-Wire.
Próbowałem pokombinować z DS2401 bo wpadło mi kilka w łapki, ale jakoś nie wychodzi.
Z arduino nie ma problemu, ale też jakoś mi nie po drodze.

Gdyby jednak kiedyś dopadła Cię MEGA nuda chętnie powrócę do tematu.

Pozdrawiam ...

Autor:  SunRiver [ 25 cze 2013, o 21:39 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

jak bedę maił czas to zrobie :)

Autor:  chemik0 [ 25 cze 2013, o 21:45 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

:D Wspaniale !!!
Czekam z niecierpliwością.
Z góry wielkie dzięki.

Autor:  chemik0 [ 28 cze 2013, o 21:59 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

Witam,
Jako że niecierpliwy człowiek jestem i nie dawało mi to spokoju, pomęczyłem temat i UDAŁO :lol: się.
Co prawda nie jest to pewnie optymalne rozwiązanie, ale do moich zastosowań sprawdza się idealnie.

Poniżej przedstawiam kilka linii kodu dla GCC odczytującego numer seryjny DS-a i porównującego go z zadeklarowanym wcześniej w tablicy numerem.

Dla potomności i co by się MISTRZ Sun nie musiał zajmować pierdołami...

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Bardzo proszę o wszelkie uwagi i propozycje możliwości zmian i optymalizacji.

Pozdrawiam.

Autor:  Krauser [ 28 cze 2013, o 23:40 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

1. Jak chcesz zaoszczędzić RAM to key_DB umieść w pamięci programu
2. permited, czujniki_cnt, key są z modyfikatorem volatile. Chyba niepotrzebnie, bo nie widzę żeby zmieniały się w jakimś przerwaniu. A obsługa tych zmiennych wymaga dodatkowych instrukcji na odczytywanie ich z pamięci.
3. permited zerujesz a zmienne globalne są zerowane z automatu
4. Zmienne na potrzeby pętli możesz tworzyć w instrukcji for, chyba, że używasz jakiegoś starego standardu C
5. Funkcja key_check zwraca wartość, a przecież ta funkcja modyfikuje zmienną globalną, więc albo jedno albo drugie, a które to już zależy jak wykorzystasz tą funkcję, a w tym przykładzie nie wykorzystujesz tego co ta funkcja zwraca, ale z drugiej strony lepiej zwracać wynik niż zmieniać zmienną globalną, bo kod jest bardziej czytelny. Zmienne globalne to można zmieniać w funkcji obsługi przerwania, bo nie ma innego wyjścia.

Autor:  chemik0 [ 29 cze 2013, o 11:03 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

Dziękuję za wszelkie podpowiedzi, wieczorkiem przetestuję możliwości zmian i dam znać jakie oszczędności przyniosły.

Autor:  SunRiver [ 29 cze 2013, o 12:40 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

no widzę że chemik się wziąłeś ostro do dzieła , zaiste słuszna decyzja przynosząca wyjątkowo duże korzyści zarówno dydaktyczne jak i projektowe i za to zaiste chwała ci :)

A kolega Krauser wyłuszczył wszystko jak na dłoni nic dodać nic ująć :)

Autor:  SunRiver [ 16 lip 2013, o 19:55 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

Nic to nie zmienia , najpierw trzeba mieć klucze żeby je z czytać wiec gdzie tu sens :P

Autor:  SunRiver [ 16 lip 2013, o 20:19 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

proponuje byś uzywał czytnika/skanera siatkówki oka :P

Autor:  SunRiver [ 16 lip 2013, o 20:43 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

nie oto chodzi , tylko sam powiedz każdemu dajesz klucze do skopiowania ??
stoisz na rogu i dajesz klucz do odbicia każdemu ??

bez jaj :)

Autor:  SunRiver [ 16 lip 2013, o 20:56 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

Ale to co tu opisałem to tylko zabawka w celu pokazania jak tego używać
a nie żeby coś zabezpieczać ....

Autor:  SunRiver [ 16 lip 2013, o 21:02 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

ibutona możesz sobie zrobic z wszystkiego co jest na 1Wire :P
nawet zwykłego DS18B20

i możesz dodatkowo sobie wprowadzić do identyfikacji odczyt temperatury :P

Autor:  Radziu [ 11 paź 2014, o 15:36 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

Czy pastylkę DS1990 można odczytywać na tej samej linii do której podłączony jest czunik DS18B20?

Autor:  SunRiver [ 11 paź 2014, o 17:38 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

Tak przecież pracuje na magistrali 1Wire , możesz mieć tam podłączone różne urządzenia --- DS18B20, DS1990, i wiele innych ....
każdy ma indywidualny nr ID (podobno się nie powtarza)

Autor:  Radziu [ 11 paź 2014, o 20:14 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

Tyle wiem, bardziej chodziło mi o to, czy takie podłączanie iButtona w czasie kiedy jest transmisja z czujnikiem temperatury nie spowoduje jakiś problemów. Oczywiście program trzeba będzie też zmodyfikować, aby nie wykrywał czujnika temp jako niewłaściwego klucza.

Autor:  SunRiver [ 11 paź 2014, o 21:16 ]
Tytuł:  Re: SunDuino - Nelduino - iButton czyli zabawa z 1Wire

W zasadzie wystarczy tylko czytać odpowiednie ID i Adres , w przypadku DS18B20 będziesz tylko czytał temperaturę więc możesz przypisać jego ID i je pomijać .

-----
Pacane z SunTALK v.1.21b

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/