Witam wszystkich Majsterkowiczów!
Do napisania tego artykułu, który jest moim pierwszym na majsterkowo.pl, skłonił mnie temat obecnego konkursu czyli “Elektryka prąd nie tyka” – jako, że jest to jedna z moich ulubionych sentencji postanowiłem wziąć udział w tym konkursie i podzielić się z Wami moim projektem “inteligentnego domu”. Całość jest dość prosta do wykonania nawet przez początkujących elektroników hobbystów i jest nastawiona na tanie rozwiązania (największym kosztem jest Raspberry Pi, które możecie już posiadać lub ew. możecie zastąpić starym komputerem PC)
Słowo wstępne
Zdaję sobie również sprawę z tego, że część pomysłów, które zostaną użyte w tym artykule były już częściowo opisywane/poruszane na majsterkowie lub innych częściach internetu, ale myślę, że moja propozycja stanowi kompleksowe rozwiązanie uwzględniające wiele elementów i łączące je w jedną całość. Nie wymyślałem koła na nowo i bazuję w tym projekcie na dokonaniach innych ludzi (staram się linkować zawsze do źródeł). Moim zdaniem na tym opiera się postęp w dzisiejszym (i nie tylko) świecie i jest to dobre. Tyle słowem wstępu – czas na konkrety.
OSTRZEŻENIE – Mimo, że w tym projekcie nie będziemy pracować z wysokimi napięciami to ogólna ostrożność i zdrowy rozsądek są obowiązkowe. Projekt będzie wymagał lutowania tak więc ogólne obycie z elektroniką i jej zasadami jest zalecane.
Co to robi lub może robić?
Pojęcie “inteligentnego domu” jest bardzo szerokie i należałoby w tym miejscu określić co mój projekt ma do zaoferowania. Myślę, że prosta lista z wypisanymi funkcjami sprawdzi się tu najlepiej:
- Zdalne włączanie/wyłączanie urządzeń – manualne oraz programowalne
- Odczyt i rejestrowanie zużycia energii w domu
- Zdalny odczyt / rejestrowanie temperatury i wilgotności z różnych pomieszczeń w domu
- Możliwość tworzenia scenariuszy dla naszego domu – np. jeśli temperatura w danym pokoju spadnie poniżej 18 stopni to włącz urządzenie X itd.
- Centralny punkt wymiany danych w domu – aka dysk NAS – czyli możliwość udostępniania danych dla wszystkich urządzeń podłączonych do naszej sieci domowej + streaming muzyki, filmów itd.*
- Sterowanie listwami RGB oświetlającymi pomieszczenia lub poszczególne punkty w domu *
- Bezprzewodowe sygnalizowanie konieczności podlewania kwiatków*
Oczywiście możliwości (i pomysłów) jest o wiele więcej, ale w związku z tym, że po pierwsze konkurs jest ograniczony czasowo a po drugie wpis byłby zdecydowanie za długi to ograniczyłem się do podstawowej funkcjonalności.
Jak to wszystko działa?
System składa się z kilku, dość prostych do wykonania, elementów (szczegółowy opis za chwilkę):
- Sterownik oparty o Arduino, a właściwie “gołe” arduino
- Przystawka do podłączenia cęgi Dietza do sterownika (część odpowiedzialna za odczyt zużycia energii)
- Raspberry Pi + Domoticz – mózg naszego inteligentnego domu
- Zdalne nody gromadzące dane typu temperatura, wilgotność itd, oparte o (bardzo!) tanie klony Arduino Pro Mini – koszt takiego Arduino to 7,5pln wraz z przesyłką z Chin (tak – nie ma się czego obawiać – paczki z Chin dochodzą :))
- Zestaw gniazdek sieciowych sterowanych bezprzewodowo używające pasmo 433MHz
Etap pierwszy – Sterownik arduino
Dlaczego Arduino, a nie Raspberry Pi?
Raspberry Pi jest bardzo fajnym małym komputerkiem z systemem Linux, który dodatkowo posiada piny GPIO umożliwiające sterowanie wszelką elektroniką i początkowo był to mój plan aby użyć właśnie RPi jako sterownik. Jednak po testach okazało się, że użycie w tym celu Arduino jest znacznie lepszym rozwiązaniem. Wynikało to m.in. z faktu, że używam w tym projekcie taniego odbiornika 433MHz, którego jakość, delikatnie mówiąc, jest bardzo kiepska. Odbiornik ten generuje baaaardzo wiele szumów, które trafiały bezpośrednio do RPi znacząco obciążając i tak już obładowany procesor. Jednym z pomysłów na poradzenie sobie z szumami był filtr dolnoprzepustowy lub użycie mikropocka jako filtr i wysyłanie już czystego sygnału do RPi. Skoro już miałem używać mikroprocesora to postanowiłem ułatwić sobie życie (znacząco!) budując sterownik oparty o Arduino i wykorzystując jego zalety.
Sterownik – budowa
Do budowy sterownika potrzebne będą następujące elementy:
- płytka uniwersalna lub płytka wytrawiona specjalnie na potrzeby projektu – ja w związku z brakiem narzędzi i odczynników zdecydowałem się na użycie płytki uniwersalnej. Tutaj mała uwaga – przy wyborze płytki sprawdźcie jakość wykonania samej płytki – ja użyłem taniej chińskiej płytki i w niektórych miejscach punkty lutownicze po prostu odpadały
- mikroprocesor ATMega328(p) wraz z gniazdem DIN26 (podstawka)
- kryształ (oscylator) 16MHz
- 2x kondensator ceramiczny 22pF
- 2x przycisk chwilowy
- 1x przełącznik
- 1x gniazdo 26pin – ja użyłem stare gniazdo od taśmy do dysków twardych – można np. wylutować ze starej płyty głównej
- 2x konektor żeński – jeden 8pin i drugi 6pin – ja użyłem konektora z taśmy ATA (dyski twarde, cd) i pociąłem na odpowiednie kawałki
- nadajniki odbiornik 433MHz
- nadajniko-odbiornik nrf24l01+
- dużo kabelków – np. odzyskanych z kabla sieciowego – skrętki – UTP 5
opcjonalnie:
- gniazdo DC Jack lub inne gniazdo zasilania – ja użyłem gniazda z 2 śrubami
- wyświetlacz LCD od Nokii 3310, 5110
- regulator napięcia na 3.3V – można użyć regulatora wylutowanego ze starego napędu CD – AMS1117 lub diody Zenera 3v3… lub… 2 diod połączonych szeregowo (przy założeniu, że napięcie wejściowe wynosi 5V – z np. USB)
uff – myślę, że to wszystko :)
Schemat połączeniowy
Tutaj mała uwaga – musimy podjąć decyzję w jaki sposób zasilimy nasz układ. Ja wybrałem opcję zasilania układu sterownika bezpośrednio z portu USB Raspberry Pi. Jest to opcja bardzo wygodna jako iż sterownik jest i tak połączony z RPi poprzez port szeregowy. Nie polecam jednak zasilania sterownika z pinów GPIO – zdecydowanie lepiej i bezpieczniej jest użyć portu USB. Kolejna sprawa to napięcie na którym działa sam sterownik. Jako, że Raspberry Pi na pinach GPIO używa poziomu napięć 3.3V oraz nadajniko-odbiornik nrf24l01+ również pracuje na 3.3V to musimy obniżyć napięcie wejściowe 5V do odpowiedniego poziomu. Dokonać tego możemy na kilka sposobów. Ja na początku wybrałem regulator AMS1117 wylutowany ze starego napędu CD jednak po testach pod obciążeniem okazało się, że regulator został najprawdopodobniej uszkodzony podczas demontażu/montażu i nie dostarczał wystarczająco stablinego napięcia więc musiałem na szybko wymyślić inny sposób na zasilenie układu. Jako, że nie posiadałem na stanie żadnej diody Zenera na 3.3V to postanowiłem zastosować 2 diody połączone szeregowo na linii +5V co obniżyło napięcie do ok 3.5V i dodatkowo zabezpieczyło układ przed odwrotną polaryzacją. Należy zwrócić uwagę na wartość prądu jaką nasza dioda wytrzyma – w moim przypadku były to popularne diody 1n4148 które wytrzymują 200mA stałego obciążenia czyli zdecydowanie ponad to co potrzebujemy do tego projektu. Zaznaczam jednak, że rozwiązanie to jest typowo “partyzanckie” i zdecydowanie lepiej jest użyć diody Zenera na 3.3V lub regulator z prawdziwego zdarzenia.
Wybaczcie kiepskiej jakości schemat ale była to moja pierwsza styczność z programem fritzing.
Oprogramowanie sterownika
Na początek musimy pobrać i dodać niezbędne biblioteki do instalacji Arduino IDE.
Lista użytych bibliotek:
- SoftwareSerial – biblioteka wbudowana w Arduino IDE
- SerialCommand – https://github.com/scogswell/ArduinoSerialCommand
- RCSwitch – https://code.google.com/p/rc-switch/
- VirtualWire – http://www.airspayce.com/mikem/arduino/VirtualWire/
- EmonLib – https://github.com/openenergymonitor/EmonLib
- dht11 – http://playground.arduino.cc/main/DHT11Lib
- PCD8544 – https://github.com/carlosefr/pcd8544
- SPI – biblioteka wbudowana w Arduino IDE
- Mirf – http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01
- nRF24L01 – http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01
- MirfHardwareSpiDriver – http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01
Poniżej znajduje się link do paczki ze spakowanymi wszystkimi niezbędnymi bibliotekami w wersjach, które użyłem w tym artykule.
https://www.dropbox.com/s/xaeoymegwiupxhu/biblioteki.zip
Wszystkie biblioteki należy pobrać i wgrać do katalogu Libraries w naszej instalacji Arduino IDE – domyślnie c:\Program Files\Arduino\Libraries
a następnie zrestartować aplikację Arduino IDE.
Po restarcie możecie przeprowadzić próbę kompilacji oprogramowania sterownika. Jeśli wszystko zakończyło się poprawnie to następnym krokiem będzie wgranie aplikacji do ATmegi. Można tego dokonać na wiele sposobów. Posiadacze standardowego Arduino UNO mogą wgrać aplikację do tego Arduino i następnie wyciągnąć układ ATmegi i włożyć do podstawki w sterowniku.
Można również (co polecam) wgrywać pliki HEX (pliki ze skompilowaną aplikacją) na ATmege (z wgranym bootloaderem Arduino) poprzez podłączone do sterownika Raspberry Pi – więcej o tym jak tego dokonać opiszę w dziale o Raspberry Pi.
Kod – https://www.dropbox.com/s/u8kjw60ee603ddr/sterownik.zip
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 |
#include <SoftwareSerial.h> #include <SerialCommand.h> #include <RCSwitch.h> #include <dht11.h> #include <PCD8544.h> #include <VirtualWire.h> #include <EmonLib.h> #include <SPI.h> #include <Mirf.h> #include <nRF24L01.h> #include <MirfHardwareSpiDriver.h> //komendy przez port szeregowy SerialCommand SCmd; //zuzyczie energii EnergyMonitor emon1; //czujnik temperatury dht11 DHT11; #define DHT11PIN A2 int dhttemp = 0; int dhthum = 0; //obsluga bezprzewodowych gniazek RCSwitch mySwitch = RCSwitch(); RCSwitch mySwitchTrans = RCSwitch(); //nokia LCD int lcdbl = A1; int lcdblsw = A5; int i = 0; long bltoggle = 0; static const byte DEGREES_CHAR = 1; static const byte degrees_glyph[] = { 0x00, 0x07, 0x05, 0x07, 0x00 }; static PCD8544 lcd(A0, 5, 6, 7, 8); void setup() { //zainicjowanie miernika zuzycia pradu emon1.current(4, 86); //zainicjowanie LCD lcd.begin(84, 48); lcd.createChar(DEGREES_CHAR, degrees_glyph); pinMode(lcdblsw, INPUT); digitalWrite(lcdblsw, HIGH); Serial.begin(9600); //zainicjowanie kontrolera gniazdek mySwitch.enableReceive(0); mySwitchTrans.enableTransmit(2); //ustawienie pinu TX mySwitchTrans.setRepeatTransmit(10); //zainicjowanie odbiornika 433MHz vw_set_ptt_inverted(true); vw_setup(2000); // Bits per sec vw_set_rx_pin(3); vw_rx_start(); // Obsluga komend przez port szeregowy SCmd.addCommand("TEMP",getTemp); // zwraca temperature SCmd.addCommand("SWCTRL",switchControl); // kontroler gniazdek SCmd.addCommand("POWER",checkPowerUsage); // zwraca aktualne zuzycie energii SCmd.addCommand("INVERNESS",setInv); // ustawienie temperatury miasta SCmd.addCommand("WIFI",wifiSend); // nrf24l01+ SCmd.addDefaultHandler(unrecognized); // domyslny handler gdy zadna komenda nie pasuje Serial.println("Ready"); //nrf24l01+ Mirf.cePin = 9; Mirf.csnPin = 10; Mirf.spi = &MirfHardwareSpi; Mirf.init(); Mirf.setRADDR((byte *)"clie1"); Mirf.payload = sizeof(unsigned long); Mirf.config(); //nokia LCD - ekran startowy pinMode(lcdbl, OUTPUT); for(i = 0 ; i <= 255; i+=1) { analogWrite(lcdbl, i); delay(3); } lcd.clear(); lcd.setCursor(0, 0); lcd.print("TnT Home"); lcd.setCursor(0, 1); lcd.print("--------------"); lcd.setCursor(0, 2); lcd.print("Temp"); lcd.setCursor(40, 2); lcd.print("001C"); lcd.setCursor(0, 3); lcd.print("Hum"); lcd.setCursor(40, 3); lcd.print("0%"); lcd.setCursor(0, 4); lcd.print("Inv"); lcd.setCursor(40, 4); lcd.print("001C"); lcd.setCursor(0, 5); lcd.print("Bedrm"); lcd.setCursor(40, 5); lcd.print("001C"); //pobranie temperatury z czujnika getTemp(); //wygaszenie ekranu delay(2000); for(i = 255 ; i >= 0; i-=1) { analogWrite(lcdbl, i); delay(3); } } void loop() { if(digitalRead(lcdblsw) == LOW) { digitalWrite(lcdbl, HIGH); bltoggle = 1; } else if(bltoggle != 0){ bltoggle++; } if(bltoggle == 500000) { bltoggle = 0; digitalWrite(lcdbl, LOW); } SCmd.readSerial(); // oczekiwanie na komende przez port szeregowy //obsluga odbiornika 433MHz - virtualWire uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; if (vw_get_message(buf, &buflen)) // Non-blocking - zwracamy odebrana temperature { String buffer = ""; int i; for (i = 0; i < buflen; i++) { Serial.print((char)buf[i]); buffer += (char)buf[i]; } Serial.println(""); String sypTemp = getValue(buffer, '|', 2); //wyswietlenie aktualnej temperatury na LCD lcd.setCursor(40, 5); lcd.print(sypTemp); lcd.print("01C"); } } void checkPowerUsage() { double Irms = emon1.calcIrms(1480); // Calculate Irms only Serial.print("PU|"); Serial.print(Irms*230.0); // Apparent power Serial.print("|"); Serial.println(Irms); } String getValue(String data, char separator, int index) { int found = 0; int strIndex[] = {0, -1}; int maxIndex = data.length()-1; for(int i=0; i<=maxIndex && found<=index; i++){ if(data.charAt(i)==separator || i==maxIndex){ found++; strIndex[0] = strIndex[1]+1; strIndex[1] = (i == maxIndex) ? i+1 : i; } } return found>index ? data.substring(strIndex[0], strIndex[1]) : ""; } void getTemp() { int chk = DHT11.read(DHT11PIN); switch (chk) { case DHTLIB_OK: Serial.print("TEMPOK|"); break; case DHTLIB_ERROR_CHECKSUM: Serial.print("TEMPCHK|"); break; case DHTLIB_ERROR_TIMEOUT: Serial.print("TEMPTO|"); break; default: Serial.print("TEMPUE|"); break; } Serial.print((float)DHT11.humidity, 2); Serial.print("|"); Serial.println((float)DHT11.temperature, 2); dhttemp = (int)DHT11.temperature; dhthum = (float)DHT11.humidity, 2; //wypisujemy temperature na LCD lcd.setCursor(40, 2); lcd.print(dhttemp); lcd.print("01C"); lcd.setCursor(40, 3); lcd.print(dhthum); lcd.print("%"); } void wifiSend() { unsigned long time = millis(); Mirf.setTADDR((byte *)"serv1"); Mirf.send((byte *)&time); while(Mirf.isSending()){ } delay(10); while(!Mirf.dataReady()){ if ( ( millis() - time ) > 10000 ) { Serial.println("ERR"); return; } } double temperatura; Mirf.getData((byte *) &temperatura); Serial.print("SYPIALNIA|"); Serial.println(temperatura); } void switchControl() { int aNumber; char *arg; arg = SCmd.next(); if (arg != NULL) { mySwitchTrans.sendTriState(arg); } else { Serial.println("No arguments"); } } void setInv() { int aNumber; char *arg; arg = SCmd.next(); if (arg != NULL) { //ustawienie temperatury miasta na LCD lcd.setCursor(40, 4); lcd.print(arg); lcd.print("01C"); } else { Serial.println("No arguments"); } } // domyslna funkcja wywolywana gdy zadna komenda odebrana przez serial port nie pasuje void unrecognized() { Serial.println("What?"); } |
Zdjęcia rzeczywiste układu.
Etap drugi – Przystawka do monitorowania zużycia energii
Do wykonania przystawki potrzebne są:
- 2x rezystor 10kOhm
- 1x rezystor 18Ohm dla zasilania 3.3V lub 35Ohm dla zasilania 5V
- 1x kondensator 10uF
- kawałek płytki uniwersalnej
opcjonalnie:
- przełącznik do wyboru rezystora obciążającego – 18 lub 35 Ohm
- gniazdo do podłączenia cęgi Dietza
- piny do kabelków użytych do podłączenia przystawki do sterownika
Oprogramowanie do obsługi przystawki zostało “wbudowane” w oprogramowanie sterownika Arduino. Szczegóły kalibracji oraz
Schemat połączeniowy
Zdjęcie
Etap trzeci – zdalne nody zbierające dane
Podstawą moich małych, bezprzewodowych czujników jest klon Arduino ProMini, które jak już wspomniałem wcześniej, zakupiłem na ebay’u za ok. 7.50pln/sztuka. Uważam, że jest to bardzo dobra cena i często koszt samych części użytych do budowy “gołego” arduino może być większy. Oprócz ProMini potrzebne będą jeszcze następujące elementy:
- płytka uniwersalna
- pojemnik na baterie – 3-4 baterie AA lub bateria 9V lub inne
- nadajnik 433MHz lub nadajniko-odbiornik nrf24l01+ – możemy przygotować dwie różne wersje o czym za chwilę
- czujnik temperatury i/lub wilgotności – ja akurat w użyłem czujnika temperatury Dallas DS18B20 ale można np. użyć DHT11 lub DHT22 itd.
- elementy potrzebne do podłączenia naszego czujnika – w przypadku czujnika Dallas DS18B20 będzie to rezystor 4.7kOhm
- piny żeńskie do podłączenia Arduino ProMini – dzięki temu będziemy mogli wyciągnąć arduino z płytki
- kabelki
- obudowa – można użyć gotowej obudowy kupionej w sklepie elektronicznym, użyć coś z odzysku lub wykonać obudowę samodzielnie
Jak wspomniałem wcześniej – możemy wykonać dwie wersje zdalnych czujników. W zaprezentowanej tutaj wersji użyłem nadajnika 433MHz, który dość dobrze sprawdza się jako nadajnik wysyłający dane periodycznie – czyli co np. 60 sekund. Minusem tego rozwiązania jest komunikacja jednokierunkowa czyli nasz zdalnych czujnik musi być skonfigurowany do wysyłania sygnału co jakiś czas. Dodatkowo nadajnik tego typu nie oczekuje potwierdzenia odebrania danych przez odbiornik a co za tym idzie nie wie czy transmisja się powiodła czy nie.
Rozwiązaniem tego problemu jest zastosowanie nadajniko-odbiorników nrf24l01+. Cena takiego elementu jest bardzo podobna do zestawu 433MHz a dzięki ich zastosowaniu zyskujemy komunikację dwukierunkowa – czyli możemy wysyłać komendy do naszych czujników, odbierać dane, itd. Jeśli temat będzie cieszył się powodzeniem na majsterkowo.pl to postaram się przygotować drugą część artykułu z taką właśnie wersją zdalnego czujnika.
Ważnym aspektem podczas projektowania zdalnego czujnika jest jego zużycie prądu. W związku z tym, że jest on zasilany bateryjnie to chcemy osiągnąć jak najniższy pobór prądu, żeby baterie starczyły na jak najdłużej. W przygotowanej przeze mnie wersji czujnika zużycie prądu wynosi około 0.2mA (tak – 200uA) w stanie uśpienia i ok 10-15mA w czasie pracy – czyli przez ok sekundę. W przypadku zastosowania 4 baterii AA daje to baaardzo długi czas pracy dlatego można rozważyć zastosowanie mniejszej pojemności baterii 9V lub nawet 2 baterii 3V od “zegarka”.
Schemat połączeniowy zdalnego czujnika
Oprogramowanie czujnika
Użyte biblioteki (znajdują się one już w paczce udostępnionej w sekcji o sterowniku)
- LowPower – https://github.com/rocketscream/Low-Power
- VirtualWire – już mamy tą bibliotekę wgraną (sekcja sterownika)
- OneWire – http://playground.arduino.cc/Learning/OneWire
- DallasTemperature – https://github.com/milesburton/Arduino-Temperature-Control-Library
- stdlib – standardowa biblioteka
Kod – https://www.dropbox.com/s/zvkw25sjovkvdk0/lowPowerNode.zip
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
#include <LowPower.h> #include <VirtualWire.h> #include <OneWire.h> #include <DallasTemperature.h> #include<stdlib.h> int led = 13; #define ONE_WIRE_BUS 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup() { // inicjalizacja nadajnika - VirtualWire vw_set_ptt_inverted(true); vw_set_tx_pin(10); //ustawiene pinu TX vw_setup(2000); // Bits per sec pinMode(led, OUTPUT); //inicjacja czujnika temperatury sensors.begin(); } // code.google.com/p/tinkerit/wiki/SecretVoltmeter -- mierzenie poziomu baterii long vccVoltage() { long result; // Read 1.1V reference against AVcc ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); delay(2); // Wait for Vref to settle ADCSRA |= _BV(ADSC); // Convert while (bit_is_set(ADCSRA,ADSC)); result = ADCL; result |= ADCH<<8; result = 1126400L / result; // Back-calculate AVcc in mV return result; } void sendMessage(const char *msg) { vw_send((uint8_t *)msg, strlen(msg)); vw_wait_tx(); // Wait until the whole message is gone } void sleepTenMinutes() { // na jak dlugo node ma isc spac - w odcinkach 8s for (int i = 0; i < 4; i++) { LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF); } } void sendStatus() { sensors.requestTemperatures(); char temperatura[15]; String wiadomosc = "WN|1|"; dtostrf(sensors.getTempCByIndex(0),2,2,temperatura); wiadomosc += temperatura; String batteryVoltage = "|"; batteryVoltage += vccVoltage(); char batteryVoltageCharBuffer[10]; batteryVoltage.toCharArray(batteryVoltageCharBuffer, 10); wiadomosc += batteryVoltageCharBuffer; //dla pewnosci wysylamy wiadomosc 5 razy char wiadomoscBuffer[21]; wiadomosc.toCharArray(wiadomoscBuffer, 21); sendMessage(wiadomoscBuffer); delay(100); sendMessage(wiadomoscBuffer); delay(100); sendMessage(wiadomoscBuffer); delay(100); sendMessage(wiadomoscBuffer); delay(100); sendMessage(wiadomoscBuffer); } void blinkLed(){ digitalWrite(led, HIGH); delay(100); digitalWrite(led, LOW); } void loop() { sendStatus(); //blinkLed(); //opcjonalnie mozemy mrugnac diodka przy nadawaniu sleepTenMinutes(); } |
Etap czwarty – zdalnie sterowane gniazdka sieciowe
Tutaj sprawa jest prosta – większość tanich zestawów dostępnych na rynku używa tego samego protokołu. Wykorzystując ten fakt ludzie zgromadzeni wokół Arduino przygotowali ogólnodostępne biblioteki dzięki którym możemy sterować tymi gniazdkami za pomocą nadajnika 433MHz – na to musicie zwrócić uwagę podczas zakupu – aby pasmo było właśnie 433MHz.
Poniżej przedstawiam zdjęcia mojego zestawu – 5 gniazdek + pilot
Etap piąty – Raspberry Pi
Ta część jest najbardziej rozbudowana i szczegółowy opis zająłby za dużo miejsca w i tak już przydługawym artykule, dlatego postaram się skupić tylko na najważniejszych aspektach przygotowania Raspberry do współpracy ze sterownikiem Arduino oraz podstawową konfigurację Domoticz – mózgu naszego inteligentnego domu oraz usług NAS.
Raspberry Pi -> Sterownik Arduino
Jedną z ważnych decyzji, które musiałem podjąć podczas projektowania całego systemu była kwestia komunikacji RPi z Arduino. Po przejrzeniu kilku możliwych rozwiązań zdecydowałem się użyć portu szeregowego UART.
Użycie portu szeregowego daje nam kilka ciekawych możliwości – np. możemy dzięki niemu aktualizować firmware (oprogramowanie) naszego sterownika bez rozłączania całości, podłączania zewnętrznych programatorów lub wyciągania ATmegi z podstawki. Warto tutaj zwrócić uwagę na użycie pinu 16 GPIO (licząc fizyczne piny) do resetowania ATmegi w odpowiednim momencie podczas wgrywania nowego pliku hex (skompilowane oprogramowanie). Wiem, że może to brzmieć jak “czarna magia” dla ludzi nie wtajemniczonych w programowanie układów AVR ale opiszę to dokładnie w dalszej części artykułu tak więc nie ma czego się obawiać :)
Dodatkową zaletą wykorzystania portu szeregowego jest to, że nie potrzebne nam są żadne dodatkowe elementy – RPi posiada wyprowadzenia portu szeregowego na złączu GPIO a ATmega z wgranym bootloaderem Arduino obsługuje port szeregowy na pinach 2 i 3.
Podłączenie RPi do Arduino
Do fizycznego podłączenia RPi do sterownika użyłem gotowej taśmy 26-żyłowej ale można również użyć taśmy z odzysku – np. taśma ATA którą odpowiednio przytniemy oraz kawałka kabla USB do zasilania sterownika bezpośrednio z RPi.
TUTAJ UWAGA – zwróćcie szczególną uwagę na kierunek podłączenia taśmy zarówno w złączu RPi jak i w sterowniku, żeby nie podłączyć na odwrót! Druga sprawa to obciążenie prądowe, które wytrzyma nasz RPi – w związku z tym, że sterownik nie powinien podczas pracy pobierać więcej niż 100mA to użycie zasilania z portu USB RPi powinno być bezpieczne – ja zasilam tak swój układ i całość działa bardzo stabilnie.
Jeśli wykonaliście wszystko poprawnie (sprawdzajcie zawsze wszystkie połączenia minimum 2 razy!) i zdecydowaliście się na użycie wyświetlacza LCD to powinniście zobaczyć ekran startowy i następnie ekran z temperaturami – na razie tylko temperatura i wilgotność otoczenia sterownika. Dodatkowo jeśli macie już uruchomiony zdalny czujnik temperatury powinien on po jakimś czasie przesłać temperaturę do sterownika i powinna ona pokazać się na wyświetlaczu.
Część sprzętową mamy już za sobą! :)
Teraz czas na oprogramowanie.
Oprogramowanie RPi
Zakładam, że jeśli posiadacie RPi to macie już zainstalowany na nim system operacyjny – jaka to będzie wersja to nie powinno mieć znaczenia jednak ja skupię sie na Raspbianie. Jeśli jednak nie posiadacie Raspberry Pi i chcecie zacząć swoją przygodę to polecam użycie instalatora NOOBs. Używając go instalacja systemu Linux jest prostsza od instalacji Windowsa ;)
Programowanie sterownika z RPi
W sekcji poświęconej sterownikowi napisałem o możliwości programowania/wgrywania aplikacji sterownika poprzez RPi. Do tego celu potrzebujemy aplikację o nazwie “avrdude”.
Link do aplikacji w wersji na Raspberry: https://www.dropbox.com/s/3tpim960na7o7lj/avrdude_5.10-4_armhf.deb
Aplikację standardowo pobieramy, i instalujemy w następujący sposób:
1 2 |
wget https://www.dropbox.com/s/3tpim960na7o7lj/avrdude_5.10-4_armhf.deb dpkg -i avrdude_5.10-4_armhf.deb |
Po zainstalowaniu avrdude jesteśmy gotowi do wgrywania aplikacji na ATmege. Jednak aby cały proces był jeszcze bardziej bezbolesny i automatyczny musimy nieco zmodyfikować naszą instalację avrdude.
Standardowo avrdude nie wykorzystuje tzw. opcji autoreset’u podczas wgrywania aplikacji na ATmege co powoduje, że musimy ręcznie naciskać przycisk reset w odpowiednim momencie. Po dojściu do wprawy nie jest to jakoś mocno uciążliwe ale jeśli planujemy postawić sterownik wraz z RPi w dalszej odległości od komputera to wtedy fizyczne naciśnięcie przycisku reset przy każdej próbie wgrania nowej wersji aplikacji byłoby niemożliwe. Dlatego zastosujemy tzw. wrapper na aplikację avrdude która wykona autoreset za nas.
Pobieramy paczkę z wrapperem z github’a: https://github.com/deanmao/avrdude-rpi
następnie rozpakowujemy ją i wgrywamy do /usr/bin
1 2 3 4 |
cp autoreset /usr/bin cp avrdude-autoreset /usr/bin mv /usr/bin/avrdude /usr/bin/avrdude-original ln -s /usr/bin/avrdude-autoreset /usr/bin/avrdude |
Następnie edytujemy plik /usr/bin/autoreset i ustawiamy zmienna PIN na pin = 16.
Od teraz podczas wgrywania aplikacji na sterownik avrdude wykona autoreset w odpowiednim momencie i wgra kod do sterownika.
Komenda którą używam do wgrywania nowego oprogramowania:
1 |
avrdude -C /etc/avrdude.conf -v -v -v -p atmega328p -c arduino -P /dev/ttyAMA0 -b 115200 -D -U flash:w:homeautomation.cpp.hex:i |
Należy zaznaczyć tutaj, że przed wgrywaniem nowej wersji oprogramowania wyłączyć należy serwer node.js, żeby odblokować dostęp do portu szeregowego /dev/ttyAMA0
1 |
/etc/inid.d/sterownik stop |
Moje pliki HEX są do pobrania tutaj: https://www.dropbox.com/s/ea7zb3gu0s396kh/plikiHEX.zip
Domoticz – http://www.domoticz.com/
Domoticz jest to darmowy system zarządzania inteligentnym domem dostępnym na różne platformy w tym na RPi. Jest to potężna aplikacja dająca nam szerokie pole do popisu w kwestii konfiguracji czy wspieranego sprzętu. Jedynym minusem jest to, że w przypadku gdy sami budujemy swoje urządzenia to nie są one najczęściej zgodne z żadnym z komercyjnych protokołów i tak też jest w przypadku tego projektu. Jednak jak zawsze są metody na zhackowanie systemu :) dlatego też w tym projekcie używam Domoticz + skrypt napisany w node.js który jest pomostem pomiędzy Domoticz i sterownikiem Arduino. Rozwiązanie to daje nam dużą elastyczność i kontrole nad tym co konkretnie chcemy osiągnąć itd. A więc do rzeczy – jak to wszystko zainstalować?
Chciałem opisać tutaj wszystko po polsku ale jak zobaczyłem ile zajmuje już ten artykuł to myślę, że najlepiej będzie jeśli podam tutaj link do strony Wiki aplikacji Domoticz – jest tam wszystko opisane krok po kroku i nawet ludzie nie znający angielskiego nie powinni mieć problemu z rozszyfrowaniem o co chodzi. Jeśli będziecie jednak chcieli abym opisał to po polsku szczegółowo to dajcie znać w komentarzach i przygotuję część drugą rozszerzoną ;)
Link do instrukcji Domoticz: http://www.domoticz.com/wiki/Installing_and_running_Domoticz_on_a_Raspberry_PI
Gdy mamy już zainstalowany Domoticz czas na instalację node.js i konfigurację skryptu.
Na początek zalecam pobranie przygotowanej przeze mnie paczki zawierającej skrypt, instalacje node.js, moduły potrzebne do skryptu (serial, itd). Będzie to najwygodniejsze bo node.js występuje w bardzo wielu różnych wersjach na RPi i często występują problemy ze zgodnością poszczególnych modułów – np. ja miałem problem z uruchomieniem modułu serial.
1) Pobieramy paczkę
1 |
wget https://www.dropbox.com/s/5czs93629ctghad/homeautomation.tar.gz |
2) rozpakowujemy paczkę
1 |
tar zxvf homeautomation.tar.gz |
3) instalujemy, a właściwie kopiujemy cały katalog node (znajdujący się w katalogu homeautomation) do katalogu docelowego /opt – w tym miejscu upewnijcie się, że nie macie node.js zainstalowanego w systemie – jeśli macie i nie używacie go do czegoś szczególnego to odinstalujcie
Jeśli nie wiecie jak przekopiować dane w systemie linux to polecam użyć programu “mc” – jest to odpowiednik starego dobrego Norton Commandera i znacznie ułatwia pracę z plikami
4) dodajemy instalację node.js do ścieżki (path) systemowej oraz odświeżamy sesję
1 2 |
root@raspberrypi:~# echo 'export PATH="$PATH:/opt/node/bin"' >> ~/.bashrc root@raspberrypi:~# source ~/.bashrc |
5) testujemy instalacje node.js
1 |
root@raspberrypi:~# node -v |
Jeśli widzicie coś takiego:
1 2 3 |
root@raspberrypi:~# node -v v0.10.12 root@raspberrypi:~# |
to znaczy, że poprawnie zainstalowaliście node.js. Gratulacje :)
Etap szósty – Uruchomienie systemu
Jeśli macie już wszystko zainstalowane i podłączone zgodnie z wcześniejszym opisem to jesteście gotowi do pierwszego uruchomienia systemu.
1) przechodzimy do katalogu ze skryptem serwera node.js
1 |
cd /opt/node/homeserver |
2) uruchamiamy serwer (nie ‘demonizujemy’ procesu tylko zostawiamy go aktywny w konsoli)
1 |
node homeserver.js |
W tym momencie powinniście widzieć, że serwer uruchomił się i otworzył port szeregowy – połączenie ze sterownikiem Arduino.
Jeśli tak się stało to jesteśmy gotowi do sprawdzenia poprawności działania systemu, a właściwie połączenia pomiędzy RPi a Arduino.
Najłatwiej dokonać tego używając skryptu testującego o nazwie “rpiduinotest”:
1 |
/opt/node/bin/rpiduinotest |
Po uruchomieniu skryptu powinniśmy zobaczyć ustawioną temperaturę na wyświetlaczu LCD sterownika (o ile takowy mamy). Zabijamy proces naciskając CTRL+C.
Możemy teraz przekopiować plik uruchamiający homeserver do katalogu /etc/init.d (zakładam, że wciąż znajdujemy się w katalogu w którym rozpakowaliśmy paczkę z plikami) oraz skonfigurować uruchamianie sterownika przy starcie RPi:
1 2 3 |
cp init.d/sterownik /etc/init.d/sterownik update-rc.d sterownik defaults /etc/init.d/sterownik start |
Po uruchomieniu serwera node.js należy przejść do panelu www Domoticz i dodać nasze urządzenia. W tym celu należy wykonać następujące kroki:
Dla zdalnie sterowanych gniazdek:
1) otwórz przeglądarkę internetową i otwórz adres http://ip_twojego_rpi:9090/
2) po załadowaniu strony głównej Domoticz kliknij przycisk “Setup” a następnie Hardware
3) na stronie Hardware pod tabelka znajduję się pole do wybrania typu i wpisania nazwy urządzenia – wpisz np. RF Control i wybierz typ “RFXCOM – RFXLAN Transceiver 433.92 MHz with LAN interface” a następnie kliknij przycisk Add. Po dodaniu przycisku trafi on do tabelki na gorze.
4) Kliknij “Switches” w menu a następnie “Manual/Light Switch”. W formularzu podaj nazwę np. “Lampka” oraz zaznacz typ Hardware jako RF Control. Switch type zostaw na On/Off. Reszta ustawień nie ma dla nas znaczenia. Na koniec kliknij “Add Device” i przełącznik powinien zostać dodany do listy i wyświetlać się na stronie.
5) w kolejnym kroku kliknij przycisk “Edit” przy nowododanym przycisku. Otworzy się nowe okno z polami “On Action” i “Off Action”. Należy je wypełnić używając adresu naszego serwera node.js. Przykład dla gniazdka numer 4:
On: http://192.168.1.6:8088/?cmd=switch4on
Off: http://192.168.1.6:8088/?cmd=switch4off
6) kliknij przycisk “Save”
7) jeśli wszystko przebiegło poprawnie to w tym momencie możesz kliknąć ikonkę żarówki i gniazdko numer 4 powinno się włączyć. Gratulacje!
Powyższe kroki powtórz dla wszystkich gniazdek.
Dla czujników temperatury:
1) otwórz przeglądarkę internetową i otwórz adres http://ip_twojego_rpi:9090/
2) po załadowaniu strony głównej Domoticz kliknij przycisk “Setup” a następnie Hardware
3) na stronie Hardware pod tabelka znajduję się pole do wybrania typu i wpisania nazwy urządzenia – wpisz np. Temperatura wybierz typ “Dummy (Does nothing, use for virtual switches only)” a następnie kliknij przycisk Add. Po dodaniu urządzenie trafi on do tabelki na gorze.
4) Kliknij przycisk “Create Virtual Sensors” znajdujący się przy nowododanym urządzeniu. Następnie wybierz typ “Temperature” i kliknij “OK”
5) Kliknij przycisk “Setup” w menu a następnie “Devices”. Na liście urządzeń odnajdź wpis dotyczący nowododanego sensoru temperatury i zapisz jego IDX czyli identyfikator. Następnie kliknij zieloną ikonkę strzałki w prawo znajdującą się po prawej stronie ekranu (jak najedziecie na nią myszką to wyświetli się chmurka – Add Device). Po tym zabiegu nasz czujnik powinien pojawić się na stronie “Temperature”.
6) Ok – mamy dodany sensor i teraz trzeba zmodyfikować skrypt naszego serwera i ustawić prawidłowe IDX sensoru temperatury. (np. SYPIALNIA = 18). Następnie zrestartuj serwer node.js.
1 2 |
/etc/init.d/sterownik stop /etc/init.d/sterownik start |
7) jeśli wszystko przebiegło poprawnie to w tym momencie możesz sprawdzić poprawność konfiguracji wywołując polecenie aktualizujące temperaturę.
1 |
/opt/node/bin/tempsypialnia |
8) kliknij zakładkę “Temperature” w manu panelu Domoticz. Temperatura sypialni powinna być zaktualizowana. Gratulacje!
Dla miernika zużycia energii
Procedura wygląda bardzo podobnie do tych powyżej – dummy sensor. Jedynie należy zwrócić uwagę na wybór Electricity zamiast Temperature przy tworzeniu virtual sensoru.
Hura! To już jest koniec! – spokojnie – nie tak szybko ;)
Jeśli wszystko udało Wam się skonfigurować poprawnie powinniście być w stanie włączać i wyłączać gniazdka, temperatura powinna aktualizować się w panelu Domoticz itd. Jednak aby wykorzystać możliwości drzemiące w naszym systemie trzeba by dodać trochę “inteligencji” do całości. Aby tego dokonać stworzymy scenariusze postępowania – jeśli -> to. if -> then oraz opcję Timer znajdujące się przy przełącznikach w panelu Domoticz.
Opcja Timer czyli włączanie/wyłączanie urządzenia o zadanych porach
1) Kliknij zakładkę “Switches”
2) Wybierz które urządzenie chcesz włączać/wyłączać o zadanej porze i kliknij przycisk “Timers”
3) W nowym oknie wypełnij pola kiedy chcesz aby wykonywała się dana komenda i kliknij przycisk Add.
Opcja Events czyli zdarzenia – schematy postępowań jeśli->to (if -> then)
1) Kliknij zakładkę “Setup”, następnie “More options” i później “Events”
2) z menu po lewej stronie możesz wybierać elementy logiczne typu “if”, “if, else”, elementy dotyczące czasu, urządzeń itd. Składasz z tego schemat postępowania np. jeśli temperatura w sypialni spadnie poniżej 17 stopni to włącz gniazdko numer 5.
3) Na koniec wypełnij pole “Event name”, zaznacz “ptaszka” przy “Event active” i kliknij przycisk Save. Twój event powinien znaleźć się na liście “Saved events”
Zdaję sobie sprawę z tego, że opis konfiguracji Domoticz nie jest zbyt dokładny, ale polecam gorąco zapoznanie się z ich Wiki oraz manualem. Wszystko jest tam dokładnie opisane a tutaj zajęło by to zdecydowanie za dużo miejsca.
Na koniec dodamy skrypty aktualizujące temperatury oraz zużycie energii do crontab’a (zaplanowane zadania znane z Windowsów)
1) uruchom edytor crontab’a
1 |
# crontab -e |
2) dodaj skrypty które chcesz żeby się wykonywały co minutę – np. dla temperatury w sypialni:
1 |
* * * * * /opt/node/bin/tempsypialnia > /dev/null 2>&1 |
3) zapisz zmiany i wyjdź z edytora crontab’a wciskając kombinacje klawiszy: Ctrl+x a następnie zgadzając się na zapisanie zmian “Y”
Słowo końcowe* i podsumowanie
Na początku artykułu w części opisującej możliwości systemu napisałem o opcji stworzenia domowego punktu wymiany danych dla wszystkich urządzeń podpiętych do sieci. Jako, że artykuł ten i tak jest już bardzo długi to postanowiłem pominąć szczegółowy opis jak skonfigurować RPi do bycia serwerem multimediów i danych zwłaszcza, że inni już przygotowali podobne artykuły nawet na majsterkowo.pl -> przykładowy link: https://majsterkowo.pl/raspberry-pi-serwer-samba-mpd-dac/
Polecam zapoznanie się z tym artykułem – dzięki niemu będziecie wiedzieć jak skonfigurować RPi wraz z sambą (wymiana danych) oraz jak sterować odtwarzaniem muzyki z tabletu.
Kolejnymi gwiazdkami (*) zostały objęte funkcje sygnalizowania konieczności podlania kwiatków oraz sterowanie oświetleniem za pomocą listw LED RGB. Niestety nie bylem w stanie dodać tych funkcjonalności w tej wersji systemu. Jednak do budowy tych elementów użyję dokładnie tego samego układu co do bezprzewodowych czujników tylko zamiast czujnika temperatury zostanie użyty czujnik rezystancyjny do badania wilgotności gleby itd.
Jeśli spodoba Wam się mój artykuł i będziecie chcieli więcej to postaram się przygotować szczegółowy opis konfiguracji mojego RPi jako prosty serwer UPnP udostępniający multimedia dla komputerów, smartfonów i tabletów, itd. oraz opis budowy i konfiguracji zdalnego czujnika konieczności podlania kwiatów.
Mam nadzieję, że opisy przygotowane przeze mnie są wystarczająco czytelne i nie będziecie mieli problemu z odtworzeniem tego wszystkiego u siebie w domu – jeśli jednak napotkacie jakieś problemy to piszcie śmiało w komentarzach a postaram się pomóc.
W związku z tym, że artykuł ten powstał głównie dzięki inspiracji hasłem konkursowym i mojej chęci udziału w nim będe bardzo wdzięczny jeśli pomożecie mi i zagłosujecie na plus abym zdążył wyjśc z poczekalni przed końcem miesiąca :) z góry dzięki!
PS: Zamawianie tanich części
Jeśli zastanawiacie się skąd zamawiać tanie części elektroniczne to polecam ebay i wyszukiwanie produktów z Chin. Osobiście zamówiłem już baaardzo wiele paczek i wszystkie dotarły bez problemu. Oczywiście należy liczyć się z długim czasem dostawy (średnio ok 2 tygodni ale czasem nawet 3-4) natomiast ceny rekompensują nam to z nawiązką. Warto też zamawiać więcej sztuk np. 10 danej rzeczy bo ceny miedzy 1-2 sztukami a 10 często są bardzo małe. Gdybyście mieli jakieś pytania odnośnie tego sposobu zamawiania części to znów – piszcie w komentarzach a postaram się odpowiedzieć :)
Pozdrawiam serdecznie wszystkich którzy dotrwali do końca!
Napracowałeś się chłopie, piąteczka się należy… Podziwiam…
Nie sposób się nie zgodzić :) Również daję piąteczkę i przerzucam artykuł na główną!
@Łukasz, @Kyrios – Dziękuję bardzo za dobre słowa, ocenę i pomoc w dostaniu się na główną! :)
@Łukasz, @Kyrios – Dziękuję bardzo za dobre słowa, ocenę i pomoc w dostaniu się na główną! :)
Opisz jeszcze proszę (zdjęcia chętnie widziane) w jaki sposób podłaczyłeś cęgi Dietza. I gdzie – pomiędzy licznikiem pradu a korkami? Musiałeś w takim razie w jakiś sposób dobrać się do głównego przewodu zasilajacego mieszkanie – skuwałeś ścianę?
Podłączenie cęgi nie było w moim przypadku trudne ze względu na to, że główny kabel zasilający jest dość łatwo dostępny tak więc mogłem zapiąć klamrę na tym kablu bez kłopotu. Mój licznik jest elektroniczny, dwu-taryfowy. Nie jestem pewien jak wygląda sytuacja w przypadku “normalnych” liczników.
Widziałem, że @LukaszW:disqus nabył również komplet takich sensorów więc może będzie mógł napisać jak sytuacja wygląda u niego. Pozdrawiam.
Gdzie można zdobyć takie cęgi?
Ja swoje kupiłem na ebayu. Występują często pod hasłem “AC Non-invasive current sensor”
Ja kupiłem dokładnie te: http://www.ebay.pl/itm/281272305250
Tylko nie wiem, czy będę się wpinał w główny kabel zasilający doprowadzający prąd do domu. Bardziej myślałem o pomiarach w obrębie warsztatu. Chociaż takie ogólnie pomiary zużycia w całym domu, to też niegłupi pomysł… Dostęp do kabli mam w skrzynce z bezpiecznikami, więc problemu nie będzie z założeniem czujnika.
Używam Domoticza już jakiś czas i również jestem zdania, że to oprogramowanie ma bardzo duży potencjał.
BTW. Aktualnie uczestniczę w projekcie tłumaczenia Domoticza. Niestety z braku chętnych do testowania, tłumaczenie wygląda jak wygląda :/ Zapraszam do pomocy twórcom tego oprogramowania.
Pozdrawiam
Chętnie w miarę możliwości pomogę przy tłumaczeniu oraz testowaniu :)
Twórcy Domoticza robią bardzo dobrą robotę!
Też chętnie pomogę przy tłumaczeniu. Masz może kontakt z twórcami Domoticza?
Od jakiegoś czasu twórcy Domoticza korzystają z platformy do tłumaczenia:
https://www.transifex.com/organization/domoticz/dashboard/domoticz
Ekstra art. Można prosić o info jakich nadajników/odbiorników 433 używałes?
Dziękuję :) Użyłem najtańszego zestawu jaki udało mi się znaleźć na ebayu – np: http://www.ebay.pl/itm/433Mhz-RF-transmitter-receiver-link-kit-for-Arduino-ARM-MC-U-remote-control-HY-/151167846015?pt=LH_DefaultDomain_2&hash=item23324e467f&_uhb=1
Też się zgadzam, że artykuł i projekt są świetne! Nie miałeś problemów z tymi nadajnikami/odbiornikami? U mnie zasięg mimo dolutowanej anteny jest bardzo słaby jakieś 50cm.
Mozesz opisać jak programowales klona Arduino mini (jaki programator itp.)?
Do wgrania aplikacji użyłem programatora USB -> TTL (na chipie PL-2303HX) takiego jak ten: http://www.ebay.pl/itm/gib-USB-To-RS232-TTL-Auto-Converter-Module-Converter-Adapter-For-Arduino-S9-/171109811185?pt=LH_DefaultDomain_2&hash=item27d6f083f1&_uhb=1
Podłączyłem wszystkie kabelki zgodnie z opisem: GND do GND, 5V do VCC, TX do RX, RX do TX. Ze względu na to, że te programatory nie obsługują funkcji “autoreset” (chyba, że go zmodzisz i wyprowadzisz sobie pin DTR który podłączysz do Arduino przez kondensator 0.1uF) musisz w odpowiednim momencie nacisnąć przycisk reset na płytce Arduino. Najlepiej w tym celu włączyć debugowanie w opcjach Arduino IDE i jak tylko w okienku Output zobaczysz ze Arduino IDE wywołuje “avrdude” to naciskasz reset. Po dojściu do wprawy będziesz mógł wgrać kod poprawnie prawie za każdym razem.
Rewelacja! Normalnie z nieba mi spadłeś:) Bardzo ciekawy projekt. Sam ostatnio przeglądam różne systemu automatyki domowej – Domoticz, OpenHAB, AgoControl. Najbardziej pasował mi Domoticz, ale niestety z braku pieniędzy i umiejętności miałem podłączone jedynie 2 czujniki temperatury po 1-Wire. Bardzo poproszę o wersję z nrf24l01+. Mam 11 sztuk, w czym jedna z zewnętrzną antenką(taka jakby na centralny sterownik). Czy spotkałeś się może ze stroną http://www.mysensors.org/ ? Chłopaki odwalili tam kawał dobrej roboty z biblioteką do komunikacji właśnie po nrf24l01+ i świetnie jest tam opisane jak podłączyć czujniki różnego rodzaju, jest też taki jakby mini sklepik z odsyłaczami do ebaya właśnie. Cały czas rozwijają temat i planują właśnie kontroller na Raspberry Pi, ale na chwilę obecną to jest największym problemem że nie ma żadnego sensownego kontrolera. Z tych testowanych systemów odpowiada mi najbardziej Domoticz, ale tam na forum niestety nie poradzili sobie z komunikacją obustronną czujników i Domoticza. Proszę, kontynuuj rozwój i opisywanie tego projektu:) Czy rozważasz możliwość podłączenia np. czujnika deszczu, czujników ruchu?
Jak to czytam to chyba trochę chaotycznie to opisałem, ale zdaje się że to przez podekscytowanie:)
Ps. Dobrze by było oczywiście oprócz zastosowania nrf24l01+ zostawić moduł 433MHz do sterowania gniazdkami.
Jak ktoś chce zamawiać z ebaya andoidowe części to mogę polecić paru sprzedawców od których już parę razy szybko dostałem przesyłki.
Bardzo polcić mogę sprzedawców alice1101983 i comelili. Od nich chyba każdą przesyłkę dostałem szybko jak na standardy przesyłek z chin, często też wyrabiali się przed 2 tygodniami.
Cieszę się, że projekt wywołał u Ciebie pozytywne emocje! :) Z kolejnych dobrych wiadomości to pracuję obecnie nad wersją z nrf24l01+. Na początek tylko zwracanie temperatury + wilgotność ale z czasem na pewno dołożę inne funkcje. Strony mysensors.org wcześniej nie widziałem ale wygląda bardzo interesująco! Thx! Muszę się w nią zagłębić. Jeśli chodzi o inne rodzaje czujników to jak najbardziej mam w planach czujniki ruchu (do oświetlenia itd) oraz wilgotności gleby (do kwiatków) tak więc z czasem na pewno podzielę się z Wami wynikami :) Pozdrawiam!
Podoba mi się opcja z dodatkowym wyświetlaczem podającym najważniejsze dla nas dane bez wchodzenie w przeglądarkę. Co mogę dodać od siebie – chętnie bym zobaczył moduł do pomiaru energii łączony bezprzewodowo. BTW niektóre zdjęcia mają odnośniki nie do swoich większych zdjęć, tylko do samej strony z artykułem. Ogólnie to mam prawie wszystkie części, więc niedługo się zabiorę za budowanie według Twojego projektu:)
Docelowo wyświetlacz będzie bezprzewodowy – przenośny z porządnym menu itd. Natomiast moduł do pomiaru energii zostanie raczej przy liczniku gdyż będę robił kolejną przystawke – tym razem będzie to wizualny dekoder stanu licznika… no ale to już na następny artykuł albo dwa ;) PS: Zdjęcia postaram się poprawić, nie wiem czemu tak się stało…
Tzn ja też myślę że powinien zostać przy liczniku, tylko akurat w moim przypadku chciał bym bezprzewodowo bo licznik mam w zupełnie innym miejscu niż bym chciał umieścić raspberry pi. Pisząc o wizualnym dekoderze stanu licznika myślisz o zliczaniu impulsów diody licznika?
Zliczanie impulsów odpuściłem bo to pokrywało by się z mierzeniem zużycia energii za pomocą cęgi. Natomiast dekoder chciałbym użyć do odczytu fizycznego stanu licznika – w tym celu wykorzystam właśnie Raspberry Pi i kamerkę na USB dlatego w moim przypadku całość zostanie przy liczniku :)
No to ja chyba zrobię na razie tak że będę miał pomiar tylko swojego komputera, albo może urządzeń podłączonych do tego gniazdka – komputer, router, switch. Ewentualnie później może uda się uzyskać pomiar całkowity z licznika, może właśnie za pomocą impulsów. Chciałem już dziś zacząć majstrować, ale przeliczyłem się nieco z możliwościami sklepu w okolicy i musiałem złożyć parę zamówień przez internet. Także prace zaczynam w przyszłym tygodniu jak przyjdą mi niezbędne części.
Znam ten ból – ja muszę (prawie) wszystko zamawiać przez internet bo dostać cokolwiek lokalnie to albo bardzo drogo albo w ogóle nie dostępne. Ale całe szczęście jest ebay ;)
Jedna kwestia dotycząca cęgi Dietza – możliwe, że to już wiesz, ale może innym się przyda – musisz ją założyć na przewód fazowy (pojedyńczy kabel) – nie na np. kabel od przedłużacza.
Nie zagłębiałem się jeszcze w temat cęgi, jedynie patrzyłem po cenach, więc wielkie dzięki za tę informację. Dziś poszukując dobrego miejsca do kupna brakujących elementów trafiłem na całkiem ciekawy sklep z w miarę dobrymi cenami – lispol.com. Co ciekawe wydaje mi się że np. koszyk na 4 bateria AA jest tańszy niż na Ebayu.
Dzięki za linka – trzeba będzie zapoznać się z tym sklepem :)
Chciał bym jeszcze wrócić do sprawy mysensors.org. Świetnie było by zintegrować to z Domoticzem. Biblioteka obsługuje ogromną ilość czujników różnego rodzaju. Tylko kwestia jest taka że wiele osób, które próbowały się za to wziąć twierdzi że nie jest łatwo bo API Domoticza jest po prostu kiepskie. Przydał by się jakiś zdolny programista, który był by w stanie napisać oprogramowanie które połączyło by gateway z mysensors z domoticzem w taki sposób by domoticz automatycznie wykrywał nowo włączone sensory jak to jest przy rfxcom. Ja niestety nie posiadam takich zdolności:(
Myślę, że twórcy mysensors.org docelowo dodadzą wsparcie dla Domoticza na RPi. Wczoraj przeglądałem forum i widziałem, że pojawiają się już takie posty więc to raczej tylko kwestia czasu. Można by również samemu zabrać się za tworzenie “bramki” ale to rzeczywiście ciężka sprawa. Widzę co prawda w miarę prostą drogę to zintegrowania mysensors.org z Domoticzem ale to bardziej “partyzanckie” rozwiązanie niż takie nadające się do publikacji. Niemniej jednak jak ktoś chce (a nie chce czekać na zespół mysensors.org) to można by próbować zrobić odbiornik danych z mysensors.org i przekazywać je do Domoticza przez API – czyli akutalizować poszczególne IDX. Ale o opcjach typu auto-uczenie się to raczej trzeba poczekać na profesjonalistów :)
Czy możesz się ze mną skontaktować mailowo, ewentualnie w jakiś inny bezpośredni sposób?
No wiadomo że próbują, ale nie wiem czy faktycznie się to uda tak niedługo, zwłaszcza że mysensors zamierza wypuścić własny kontroler.
W takim razie czy mógł byś nieco bardziej przybliżyć ogólne dodawanie nowych czujników przez API? Tak jak przykładowo chciał bym dodać czujnik ruchu, albo deszczu(na dobrą sprawę przekazywanie 0, albo 1, więc pewnie jako light/switch)?
Najlepiej będzie jeśli napiszesz do mnie z formularza na http://pwiatrowski.com/
Myślę, że się uda bo sporo ludzi się o to dopytuje… no ale niczego nie można być pewnym na 100%.
Nowe czujniki do Domoticza musisz dodać sam ręcznie – dummy virtual switch. Następnie tworzysz nowe urządzenie w tej nowododanej kategorii i określasz jego typ – tam możesz określić co to dokładnie będzie. Później w “Devices” masz to nowe urządzenie i możesz je dodać do listy – znów wybierając podtyp. Spisujesz IDX tego urządzenia i aktualizujesz jego stan przez zewnętrzną “bramkę” i już.
Tak to po krótce by wyglądało… nie wiem czy jest to wystarczająco składnie napisane ale jak będziesz po kolei dodawał w Domoticzu to powinno być łatwiej.
Ale dodając nowe czujniki(szczególnie nowe typy) to w Twoim oprogramowaniu do “bramki” też trzeba będzie chyba co nieco pozmieniać. Mam nadzieję że jutro do mnie dotrą wszystkie potrzebne części to chciał bym już to uruchomić i pokombinować z dodatkowymi czujnikami:)
dokładnie – jak dodasz nowe czujniki, urządzenia w Domoticzu to musisz przerobić skrypt “bramki” tak aby pasował do Twoich IDX, typu urządzeń (dane) itd. Ale generalnie to nie powinno być trudne bo w większości przypadków przestawiasz tylko IDX i kolejność danych (param1 i 2).
Mam takie pytanie bo już nie wiem czy nie mogę tego znaleźć na schemacie czy tych paru rzeczy po prostu nie ma ?
Chodzi mi tutaj o czujnik temperatury DHT11 którego nie widzę na schemacie oraz o przełącznik którego również nie mogę znaleźć na schemacie a obie te rzeczy widzę na zdjęciach gotowej płytki.
Rzeczywiście DHT11 “uciekł” ze schematu :( Z nim sprawa jest identyczna jak z podłączeniem przystawki “AC meter” na schemacie. Po prostu data pin podłączony jest do pinu A2, skrajny lewy pin to VCC a skrajny prawy to GND (ale zawsze sprawdź pinout w internecie bo możesz patrzeć na czujnik “od tyłu” i wyprowadzenia będą odwrotnie). W kodzie aplikacji czujnik ten jest już obsłużony.
Dzięki za info dotyczące czujnika DHT11 mógłbyś jeszcze napisać gdzie wstawić ten przełącznik który jest na obrazku a również go nie ma na schemacie :)
Nie ma sprawy :) przełącznik najlepiej zamontować zaraz za wejściem na lini vcc (+) lub gnd (masa). W związku z tym, że prądu w układzie są małe możesz zamontować przełącznik bezpośrednio.
Dzięki za kolejne info zostaje już tylko pytanie gdzie dać
2x kondensator ceramiczny 22pF
ba na schemacie również tego nie ma :(
mój błąd już znalazłem :)
uff już się bałem ;)
mam jedno pytanie, a czy samym domoticzem, byłoby możliwe odczytywanie stanów z arduino podpiętego tylko do sieci, np jak w projekcie z majsterkowa “lampka zapalana przez internet”, tyle że zamiast stanu 0-1 np można by było odczytać temperaturę bądż wartość pinu analogowego??? Bardzo by ułatwiło to wykorzystyanie systemu
Zasłużone pięć, oraz wiele inspiracji do innych projektów. Wydaje mi się że dla zakupów, z Chin (i innej zagranicy) powinno się utworzyć jakiś dział na forum, żeby tu skupić się na poradach technicznych.
Generalnie można spokojnie użyć arduino z ethernet shieldem zamiast połączenia przez port szeregowy. Musiałbyś tylko stworzyć “bramkę” – gatewaya – która by odbierała sygnały/komendy/dane z arduino i przekazywała do Domoticza. Część dotycząca Domoticza pozostała by wtedy bez zmian.
Zastanawiałem się czy w opcjach serwera, jest taka możliwość, czy po prostu nie mogę jej znaleźć? Udało mi się tylko dotrzeć, do wirtualnych stacji pogodowych. Czyli przewidziano możliwość odczytu przez sieć, niestety nie można (albo jeszcze nie znalazłem) jak dokonać odczytu ze swoje Arduino. Ułatwiłoby to np montowanie czujników w różnych częściach domu/posesji.
No właśnie takiej opcji nie ma – stąd potrzeba bramki. W Domoticzu tworzysz sobie wirtualne (dummy) sensory i “bramką” która odbiera dane od Arduino – aktualizujesz dane w Domoticzu.
Nie wiem czy uda mi się to zrobić z arduino, natomiast, wykonując odpowiednie polecenie z JSON’a (można to nazwać skryptem chyba) udało mi się ustawić temperaturę czujnika, który w żaden sposób nie jest podłączony do domoticz’a (tak naprawdę nic jeszcze nie jest podłączone). Przykłady tu:
http://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s
Generalnie jesteś już blisko :)
właśnie API/JSON musisz użyć do komunikacji pomiędzy “bramką” a Domoticzem. Bramka odbiera dane od arduino i przekazuje poprzez API do Domoticza.
Mam 16 lat, nie ogarniam tego mam się martwić ?
Czego dokładnie nie ogarniasz? Jak masz 16 lat to masz jeszcze dużo czasu by się nauczyć nowych rzeczy:)
Ja mam 12 lat i to ogarniam
Już kilka razy zbierałem się do zakupienia tego komputerka, ale nie mogłem się zebrać. Chyba będzie dobra okazja :)
Bardzo dobra! RPi to bardzo fajne urządzenie. Nie tylko do sterowania domem ale również jako mediacenter itd. A przy tym jest baaardzo energooszczędne!
Oczywiście ode mnie 5. Jak do tego rozwiązania dołożyć sterowanie po Ethernecie (w5100)? Jak realizowany jest zapis energii. Jak się zorientowałem to zliczać trzeba na nodzie, tylko co jak node się restartuje to dane są tracone?
Sterowanie po ethernecie jest jakby w standardzie bo obsługujesz Domoticza przez panel www. Chyba, że chodzi Ci o coś innego. Zapis zużycia energii jest natomiast realizowany przez noda i przekazywany bezpośrednio do Domoticza, który zapisuje to w bazie danych – tak więc nawet po zresetowaniu noda i tak historia zostaje.
Chodziło mi dokładnie czy masz przykładowy kod do arduino , oraz co się dzieje gdy pakiet nie dotrze do arduino? Domotic pokaże że jest coś załączone a arduino tego nie wykona? Oraz czy jest coś takiego jak wysyłanie stanu co jakiś czas aby ja urządzenie wykonawcze się zresetuje to wróciło do zadanego stanu.
Cały kod jest udostępniony na tej stronie. Domoticz wysyła komendy do Arduino przez port szeregowy…szanse na to, że coś nie dojdzie są znikome. Natomiast jeśli w panelu Domoticz klikniesz włączenie światła a transmiter 433MHz będzie odłączony od sterownika to mimo wszystko w Domoticzu będzie się wyświetlało, że urządzenie jest włączone. Niestety tutaj nie ma informacji zwrotnej więc niejako system wierzy, że urządzenie jest włączone lub wyłączone po klikniięciu. Żeby zminimalizować błędy np. w czasie transmisji wysyłam komendy (zwłaszcza te które są zaprogramowane) wiele razy.
Widziałem ale ja pytam czy masz może kod do komunikacji nie po rs tylko po lan taki przykładowy? Lub czy mógłbyś pomóc w stworzeniu czegoś takiego na w5100
takiego kodu nie posiadam… nie posiadam nawet takiego shielda więc ciężko mi będzie pomóc. Ale generalnie zasada będzie taka: uruchamiasz shielda – konfigurujesz go do swojej sieci (ip itd) i później w pętli zbierasz dane z czujnika i wysyłasz do Domoticza przez API Json – przykład jakiego użyć URL masz w moim kodzie “bramki” w node.js. Mam nadzieję, że to Ci troche pomoże :)
Jestem pod wrażeniem włożonej pracy. Gratulacje!
Mam pytanie jeśli chodzi o zdalne nody, czemu akurat Arduino ProMini na 5V a nie na 3V? Można wtedy zasilać je mniejszą ilością AA :) Czym kierowałeś się przy wyborze?
Dziękuję :)
wersje arduino dyktowała dostępność i cena :) wersje 5V są znacznie tańsze niż 3.3V. Natomiast z mojego doświadczenia wynika, że nawet wersję 5V możesz zasilić 2x AA i będzie działać – mimo iż jesteś na granicy zalecanego napięcia z noty katalogowej ATmegi 328 przy 16MHz.
Po komentarzach widzę że niewiele osób spróbowało faktycznie zbudować taki projekt. Osobiście odkryłem parę niedopowiedzeń(jak chociażby sterowanie gniazdkami – trzeba odczytać kody swoich, bo każde gniazdko ma inne). Oczywiście autor bardzo dobrze odpowiadał na pytania, ale po prostu nikt oficjalnie nie pytał.
Świetny artyuł!
Czy mógłbyś napisać jakie wyprowadzenie pinów jest na tym konkretnym wyświetlaczu?
Bo zmontowałem wszystko wg artykułu i wyswietlacz swieci na poczatku przez ok. sekunde a nastepnie gasnie, ale nic sie na nim nie wyswietla.
Kombinuje z pinami i nic sie nie dzieje.
Dla sprawdzenia wrzucilem przykladowy program pcdtest i wyswietlacz dziala, wiec problemem musi byc kwestia pinow. Jak poszukalem w sieci to sa rozne wersje z roznym rozplanowaniem…
Mam jeszcze pytanie odnosnie obnizenia napiecia z USB 5V na 3,3 stosujac diode zenera 3v3. Otoz wlutowalem ja na linii VCC i za linia jest 2.4V i nic nie startuje. Na płytce prototypowej sama dioda wlaczona w obwod 5V faktycznie obniza napiecie do ok. 3.7V, ale po zbudowaniu calego ukladu napiecie spada do wspomnianego 2.4V.
Probowalem wlutowac ja odwrotnie ;) Spadek napiecia byl minimalny, do ok. 4,4V
W przypadku wyswietlacza najprawdopodobniej chodzi o kontrast – ja w swoim programie zmodyfikowalem biblioteke pcd8544 do obslugi mojego wyswietlacza – niestety ustawienia kontrastu roznia sie znaczaco pomiedzy poszczegolnymi wyswietlaczami (fizycznymi egzemplarzami). Zmian dokonalem w linijce 92 w pliku PCD8544.cpp zmieniajac wartosc domyslna na 0x98 ( domyslnie bylo 0xc2).
Jesli chodzi o diode Zenera to zawsze uzywa sie jej zaporowo (w innym przypadku bedzie sie ona zachowywala jak zwykla dioda). Najlepiej jak poszukasz sobie w google schematy na regulatory oparte o diode zenera. Jest wiele wersji od najprostszych z uzyciem diody i rezystora do wersji z tranzystorami regulujacymi napiecie, prad.
Witam. Rozwiń proszę temat jak sterować gniazdami o których wspominałeś za pomocą nadajnika RF 433 (np takiego jaki użył Łukasz w skrzynce na listy). Czy można przy pomocy takiego nadajnika i odpowiednio zaprogramowanej atmegi sterować tymi gniazdami?
Oczywiscie gniazdka moga byc sterowane za pomoca RF433. Ja uzylem biblioteki RC Switch w ktorej znajduje sie program o nazwie Sniffer – pozwala on odczytac kod jaki wysyla Twoj pilot od gniazdek i dzieki temu mozesz zaprogramowac nadajnik RF do wysylania takiego wlasnie kodu. Na stronie biblioteki RC Switch i w opisie mojego projektu powinienes znalezc wszystkie niezbedne informacje jak to zrobic.
Dlaczego nie powinno się zasilać tego układu z GPIO 3,3V Rapsberry PI? jakie jest ryzyko?
Utknąłem przy programowaniu ATMEGi przy uzyciu Raspberry, dostaję błąd:
”
pi@raspberrypi ~ $ sudo avrdude -C /etc/avrdude.conf -v -v -v -p atmega328p -c arduino -P /dev/ttyAMA0 -b 115200 -D -U flash:w:homeautomation.cpp.hex:i
avrdude-original: Version 5.10, compiled on Jun 18 2012 at 12:38:29
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is “/etc/avrdude.conf”
User configuration file is “/root/.avrduderc”
User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/ttyAMA0
Using Programmer : arduino
Overriding Baud Rate : 115200
done with autoreset
avrdude-original: ser_recv(): programmer is not responding
avrdude-original: stk500_recv(): programmer is not responding
”
uważam, że hardware jest podłączony prawidłowo, zastanawiam się, czy Atmega328p musi miec wcześniej wgranego bootladera?
Stoję w tym samym miejscu :) MISO MOSI potrafię zaprogramować atmegę a przez UARTa nie ciągle wywala ten błąd:
pi@raspberrypi ~ $ avrdude -v -c arduino -p ATMEGA328P -P /
avrdude-original: stk500_recv(): programmer is not responding
przypuszczam że to wina braku resetu ale ręcznie też nie pomaga :/
Chciałem zapytać… Mam Raspberry PI B+ i czy jest szansa aby na tym odpalić taki nadajnik i odbiornik 433MHz i aby działał on w Domoticz ?
http://allegro.pl/modul-nadajnik-odbiornik-433mhz-rf-arm-avr-arduino-i4740743409.html
Szukam po internecie ale nie mogę znaleźć… I jak on bedzie działać czy w miarę OK ?
Sorry ale jestem bardzo początkujący z Raspberry i ogólnie w tych sprawch… Ale każdy kiedyś zaczyna :)
Na obecną chwilę udało mi się na Raspberry i w Domoticz odpalić Adapter na USB DS9490R z czujnikami temperatury DS18B20. Teraz czekam na czujniki DHT 22 i też gdyby ktoś powiedział mi krok po kroku jak to odpalić w Domoticz na Raspberry będe wdzięczny.
Witam
Chciałem poruszyć kwestię sterowania poszczególnymi gniazdami elektrycznymi w twoim projekcie .
Odczytuje kody RCSWITCH SNIFFER dla każdego gniazdka , wszystko jasne
Mam już kody do wszystkich gniazdek .
Co dalej, jaki plik edytować aby dopisać dane poszczególnych gniazdek
Switch4on musi się równać kodowi odczytanemu Snifferem
Pozdrawiam
RADO
Artykuł bardzo dobry. Porusza tematykę którą zaczynam się interesować.
Witam
Chciałem spytać czy ktoś uruchomił ten sterownik?
Zmontowałem cały układ i sam sterownik działa prawidłowo tzn. pokazuje temperaturę i wilgotność, łączy i wyświetla temperaturę ze zdalnego czujnika, Natomiast nie łączy się z Raspberry. Z samego sterownika mogę odczytać temperatury, wilgotność i napięcie baterii na porcie szeregowym.
Łącząc Raspberry przez port szeregowy z uruchomionym minicomem, dane testowe przesyłane są prawidłowo, czyli port szeregowy Raspberry jest sprawny.
Sądzę, że mam źle skonfigurowaną instalację Domoticza i Node
Proszę o pomoc bo z Linuksem słabo sobie radzę.
Jeśli ktoś może dokładniej opisać instalacje, będę bardzo wdzięczny.
Pozdrawiam
Marian
Prośb ado autora tekstu: Jakiś przykład z pod którego kupowałeś klona Arduino Pro Mini. 7.5 to jakieś grosze … u nas AtMega328 goła kosztuje 10pln :)
Przepraszam jeżeli głupie pytanie ale gdzie w naszej bramce zmieniamy te numery IDX??
Zmieniamy w piku homeserver.js (/opt/node/homeserver/homeserver.js)
Witam czy jest możliwość zastosowania dodatkowo jeszcze 2 cegi dietza ?
I więcej czujników? Czy jak użyję banna p lub innego kkomputera który ma więcej pinow do wystrowania protokoly będą też współpracować
Witam
Do wszystkich zainteresowanych tematem sterowania urządzeń 433MHz.
Jest tańsza alternatywa dla RFXcom tutaj: http://sourceforge.net/projects/rflink/
Projekt darmowy oparty na arduino MEGA 2560. Oczywiściw współpracuje z Domoticz.
Udało się i wszystko działa ;) dzięki !
Witam
Mam pytanie co do RPi, czy ma znaczenie jaki model 2; A+; B+\
Może to dla nie których głupie pytanie ale dopiero zaczynam zabawę z tymi “klockami” a chciałbym zrobić w oparciu a “gołe” ARDUINO i RPi sterownik akwarystyczny. Bardzo spodobała mi się opcja zdalnego ( WiFi) zarządzania – nadzorowania.
Testował ktoś gotowe rozwiązania? Czyli zlecenie tego firmie?
Czy można kupić gdzieś gotowe moduły oparte o tą technologię? Lutowanie tego wszystkiego zajmie trochę czasu. Lepiej zlecić to specjaliście a samemu zająć się montażem.
Witam wszystkich bardzo serdecznie mam ogromną prośbe czy znajdzie sie ktoś na tyle uprzejmy aby zrobic mi płytke w eagle lub innym programie do tego projektu połączoną z ct sensor bardzo proszę. Próbowałem ale nie znam oznaczeń elementów w programie i za nic mi to nie wychodzi a mam wszystkie elementy juz skompletowane brakuje tylko płytki a na uniwersalnej bedzie to wyglądać strasznie proszę taką osobe o kontakt adamsdg2831@gmail.com
czy gdzieś jest może opisane jak zaprogramować w domoticzu żeby np. czujką ruchu Satela włączyć gniazdko, albo jak stacją pogody w przypadku spadku temperatury poniżej określonej wartości włączyć grzejnik podpięty pod bezprzewodowe gniazdko?
Super.
Przyda się, choć bardziej pasowałaby wersja z nrf24l01+
Dom inteligentny dla mnie to przede wszystkim kontrola ogrzewania zimą, gdyż to pochłania bardzo dużo kosztów i można dużo zaoszczędzić. Wszędzie rozstawione głowice termostatyczne, czujniki pokojowe, czujniki otwarcia okna, do tego sterownik i możliwość ustawiania różnej temperatury w różnych pokojach oraz zdalne sterownie tym wszystkim przez aplikację w komórce. Mam zainstalowany system TECH Sterowniki https://www.techsterowniki.pl i super działa, polecam tą firmę, wygoda i mniejsze rachunki za gaz, to do mnie przemawia i to są nowoczesne rozwiązania