Witam,
Projekt powstał z potrzeby integracji systemu inteligentnego domu opartego na open sourceowym Domoticzu, z zainstalowanymi wcześniej w domu czujnikami temperatury DS18B20. Urządzenie odczytuje aktualną temperaturę z czujników na magistrali 1Wire a następnie za pomocą UART przekazuje dane do serwera Domoticz.
Moduł - ze względu głównie na czas zdecydowałem się wykorzystać płytkę Arduino (ATmega328P, kwarc 16MHz) - nadaje się ona tutaj idealnie ponieważ posiada również moduł USB -> UART. Wystarczyło tylko zaprojektować płytkę, która będzie nakładką na Arduino oraz będzie posiadała złącze magistrali 1Wire, przycisk (docelowo do wczytywania domyślnych ustawień), trzy diody LED do łatwego sygnalizowania stanu pracy urządzenia oraz dla wygody umieściłem złącze do modułu Atnel Air (procesor programuje poprzez bootloader Mkbootloader). Płyka powstała w Eaglu, plik PDF zawiera widok 4 takich PCB.
Oprogramowanie - po stronie mikrokontrolera program został napisany w C, wykorzystuje biblioteki z obu książek (1Wire, UART). Póki co program jest bardzo prosty - co 2 sekundy następuje odczyt temperatury z czujników natomiast co 5 wysłanie ich poprzez UART, ramka wygląda tak:
Kod:
+1;1;28aba9c301000060;23.8
znak + oznacza początek ramki, liczba po nim to ilość czujników znalezionych na magistrali, następnie numer aktualnie odczytywanego czujnika, id aktualnie odczytywanego czujnika i temperatura
Docelowo planuję wprowadzić obsługę zmiany ustawień modułu tak aby np. można było samodzielnie ustawić co jaki czas chcemy aktualizować dane, a także zmienić parametry komunikacji.
Po stronie serwera Domoticz działa mały skrypt w Pythonie, który odbiera dane, odpowiednio je przetwarza i aktualizuje dane za pomocą requests.
język python
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.