Raspberry Pi 2

Raspberry Pi 2

niedziela, 18 października 2015

Modyfikacja stacji pogody

W mojej stacji pogody, której budowę opisałem w tym wpisie -> Link zasilanie było realizowane przez 4 baterie AA poprzez stabilizator 5V do Arduino Mini Pro.

Po tygodniu działania baterie zaczęły się szybko wyładowywać i postanowiłem zrealizować zasilanie z panelu solarnego.

Panel solarny zakupiłem w sklepie Botland za 25,90 zł -> Link

Ogniwo słoneczne będzie zasilać 4 akumulatorki AA poprzez moduł mini USB TP4056, a następnie podnoszone napięcie poprzez moduł step u do 5V.

Moduł ładowania i step up zakupiłem w sklepie Propix:

Moduł mini ładowarka akumulatorów Li-ion 1A TP4056 USB mini 4,90 zł -> Link

MINI przetwornica USB DC/DC STEP-UP 5V 500mA 9,80 zł -> Link

Do przeróbki użyłem 4 akumulatorki AA, kondensator 0,1 uF, rezystor 1M ohm i 680 K ohm.

W modyfikacji będzie pokazywany stan naładowania akumulatorków wykorzystujący pin A0 wg, opisu na stronie MySensors -> Link

Moje zasilanie z akumulatorków , to 2 razy po 2 akumulatorki, co daje napięcie maksymalne w zakresie 2,6 do 2,7 V, więc dokonałem obliczeń rezystora R2 - Vmax = 1.1 * (1e6+680e3)/680e3 = 2.72 V. Dokonałem modyfikacji w kodzie programu 2.72/1023 = Volts per bit = 0.0026588465298142717497.

Schemat modyfikacji wygląda tak


Koszyczek zmodyfikowałem tak, aby dawał zasilanie 2 razy 2 AA, od + akumulatorków biegnie przewód przez rezystor 1 Mohm do A0 Arduino, z masy przez rezystor 680 kohm do A0, a między masą, a pinem A0 jest kondensator 0,1 uF (100 nF).

Stacja po modyfikacji wygląda tak


Nie mam jeszcze panelu solarnego i jak tylko dotrze, będzie podłączony.

Kod programu zmodyfikowałem, tak aby w Domoticz było wyświetlane napięcie na akumulatorkach, możemy więc monitorować stan ich naładowania. Kod programu stacji po modyfikacji jest do pobrania tu -> Link

Teraz w Domoticz widać stan naładowania akumulatorków oraz oczywiście dane ze stacji pogody.



Pomysł zasięgnąłem z tej strony -> Link

sobota, 17 października 2015

Domoticz i wirtualne stacje pogody

W Domoticz istnieje możliwość dodania odczytów parametrów pogody z najbliższych stacji pogodowych.

W tym celu najpierw należy założyć konto na stronie Weather Undergound, wchodzimy więc na stronę -> Link i klikamy Sign Up for FREE


W Create Your Free Account! wpisujemy kolejno: emial, 2 x hasło i nick, zaznaczamy I agree i klikamy SIGN UP


Teraz odbieramy email i klikamy w link potwierdzający rejestrację oraz logujemy się na stronie.

Wchodzimy na stronę

Wybieramy ANVIL PLAN , Developer i klikamy Purchase Key

Teraz wpisujemy:

Contact name: imię
Project contact e-mail: adres emial
Project name: Domoticz
Project website: http://www.domoticz.com
Where will the API be used: Website
Will the API be used for commercial use: No
Will the API be used for manufacturing mobile chip processing: No
A brief description: I use the API for the greatest domotica project!

Zaznaczamy 2 ptaszki i klikamy Purchase key

Teraz zobaczymy nasz KEY ID, nie zamykamy strony, bo za chwilę będzie nam potrzebny ten klucz.

Otwieramy w nowym oknie stronę -> Link

Szukamy najbliższej stacji pogodowej i klikamy w nią, pokaże nam się Station ID


Teraz otwieramy panel Domnoticz klikamy Ustawienia -> Sprzęt i dodajemy nowy sprzęt, jako typ wybieramy Weather Underground
Wpisujemy nazwę np. Stacja Opole 2, kopiujemy na Key ID do klucz API oraz Station ID do Lokalizacja i klikamy Dodaj


Mi akurat , ta stacja nie chciała działać, więc dodałem inną najbliższą o ID 12530.
Jeżeli nie chce znaleźć urządzeń i dana stacja nie działa np. o nazwie IOPOLSKI7, to wpisujemy pws: i nazwę stacji, czyli: pws:IOPOLSKI7.

Po chwili w Ustawienia -> Urządzenia pokażą się nowe urządzenia, klikamy w zielone strzałki wpisujemy nazwy i już mamy aktualne parametry pogodowe.

poniedziałek, 12 października 2015

Obudowa do stacji pogody

Dzisiaj wykonałem obudowę do stacji pogody opisanej w tym wpisie na blogu -> Link

Obudowę wykonałem z obudowy Z-72J dostępnej w sklepie Cyfronika -> Link i z obudowy Z43n -> Link

W obudowie Z-72J na środku wykonałem otwór, na który przykleiłem klejem kropelką obudowę Z43n z wyciętym jednym bokiem, tak, aby do środka dostawało się powietrze, a jednocześnie do wnętrza nie dostawała się woda, dzięki temu czujnik wilgotności, będzie robił rzeczywiste pomiary wilgotności na zewnątrz.

Pokrywkę z obudowy Z43n wykorzystałem do zrobienia uchwytu do zawieszenia.

Koszt obudowy, to około 10 zł.

Obudowa wygląda tak


Elektronikę i koszyczek na baterie przykleiłem klejem na gorąco.

Wnętrze stacji pogody


Teraz panel na tablecie wygląda tak

sobota, 10 października 2015

Domoticz - czujnik wilgotności gleby do bramki Mysenors

Dzisiaj zrobiłem czujnik wilgotności gleby na Arduino Mini Pro 16Mhz zasilany 4 bateriami AA.



Do budowy wykorzystałem:

1. Aruino Mini Pro - 11 zł
2. Moduł NRF24L01 - 4 zł
3. Płytka uniwersalna PCB 30x70mm dwustronna - 3,20 zł
4. Czujnik wilgotności gleby - 8,50 zł
5. Koszyczek na 4 baterie AA - 3,50 zł
6. Stabilizator stały LM1117 SOT223 1A 3,3V - 1,8 zł
7. Stabilizator stały TO92 100mA 78L05 5V - 1 zł
8. Kondensator 10uF miałem w domu

Co razem dało koszty około 34 zł

Wykorzystałem pomysł i projekt ze strony -> Link

Schemat wygląda tak


Pin wyjścia analogowego czujnika podłączony jest do pinu A0 w Arduino, a zasilanie z czujnika Vcc do pinu 8 oraz oczywiście masa czujnika do masy Arduino.

Całość zasilana jest 4 bateriami AA.

W powyższym schemacie autor popełnił błąd, bo zasilania NRF24L01 wymagane jest zasilanie 3,3V oraz należy dać kondensator 4,7uF na Vcc i GND, ja akurat miałem w domu 10 uF, to też może być taki.

Moduł Wifi NRF24L01 podłączamy zgodnie ze schematem


Do zasilania Arduino zastosowałem stablizator 5V, bo 4 baterie AA dają napięcie 6V, ale nie jest konieczny.

Jak podłączyć stabilizatory pokazałem we wcześniejszym wpisie na schemacie -> Link

Kod programu do wgrania do Arduino jest dostępny tu -> Link oraz do ściągnięcia z Dropbox -> Link

Program sprawdza stan naładowania baterii i wilgotność co 600000 milisekund, czyli 10 minut, oczywiście czas możemy sobie zmienić w kodzie programu, ale ja go zostawiłem taki.

W Domoticz czujnik wykrywany jest jako Voltage i Humidity, po dodaniu urządzeń mamy

Stan naładowania baterii


Czujnik wilgotności


Całość w Domoticz wygląda tak


Możemy sobie w Domoticz skonfigurować opcję wysyłania wiadmości na email, gdy wilgotność spadnie poniżej określonego poziomu.
Najpierw należy jednak skonfigurować email w ustawieniach


Z tego co pamiętam, trzeba posiadać konto na Gmail i skonfigurować jak wyżej, można wysłać wiadomość testową, aby sprawdzić czy działa.

Później na czujniku kwiatki wybieramy powiadomienia i wpisujemy oraz zaznaczamy sobie


Po kliknięciu Dodaj dostaniemy powiadomienie na email gdy wilgotność spadnie poniżej 40%

Dla bardziej zaawansowanych ogrodników polecam projekt -> Link

piątek, 9 października 2015

Domoticz - nadajnik MySenors Arduino Mini z DHT11

Dzisiaj zmontowałem układ z Arduino Mini i czujnikiem DHT11.
Wygląda tak


Program jaki jest wgrany, to Humidity z MySenors -> Link

Teraz ImperiHome wzbogaciło się o dodatkowe czujniki i mój panel wygląda teraz tak


Pokazuje temperaturę z DS18B20 z pokoju i na zewnątrz podłączone bezpośrednio do Raspberry Pi z stacji pogody umieszczonej na zewnątrz, gdzie pokazuje temperaturę, wilgotność i ciśnienie atmosferyczne oraz pokoju wilgotność i temperaturę.

W Domoticz wygląda tak


W Domoticz mamy informację, czy będzie padać, czy będzie słonecznie lub czy jest pochmurnie.

Domoticz - stacja pogody do bramki MySensors

Wczoraj zbudowałem stację pogody do bramki MySensors zbudowaną na Arduino Mini Pro, czujniku tempretaury i wilgotności DHT22 i czujniku ciśnienia BMP180. Wszystko zasilane jest 4 bateriami AA 1,5V.

Do budowy wykorzystałem:

1. Arduino Mini Pro 16 Mhz - koszt 11 zł
2. Czujnik AM2302 (DHT22) - 20 zł
3. Czujnik BMP180 = 12 zł
4. Moduł Wifi nRF24L01 - 4 zł
5. Stabilizator LM1117 3,3V - 1,80 zł
6. Stabilizator 78L05 5V - 1 zł
7. Koszyczek na bateria 4 x AA - 3,50 zł
8. Płytka uniwersalna PCB 20x80mm - 3,50 zł
7. Kondensator 10uF 63V - miałem w domu
8. Rezystor 4,7K też miałem w domu
9. 4 baterie AA - 6 zł

Całkowity koszt wyniósł około 60 zł.

Czujnik BMP180 jest podłączony do pinów A4 i A5 w Arduino, a czujnik DHT22 do pinu D3.

Schemat wygląda tak


Po zmontowaniu moja stacja pogody wygląda tak


Kod programu do Arduino jest do pobrania stąd -> BM180_DHT22.rar

W kodzie w linijce:
int altitude = 184; // wysokość na poziomem morza w metrach

wpisujemy wysokość położenia na poziomem morza w metrach.

Możemy to sprawdzić na stronie -> Link

Po dodaniu urządzeń do Domoticz wygląda to tak

poniedziałek, 5 października 2015

Domoticz - MySensors - Arduino - program na 4 przekaźniki i więcej

Jeżeli na jednym odbiorniku Arduino chcemy mieć obsługę więcej niż jeden przekaźnik, to należy zmodyfikować kod programu dostępnego z MySenors. Kod na obsługę 4 przekaźników wygląda tak:

#include 
#include 
#include 
#include 
#include 
#include 

#define RELAY_1  3  // Pin D3
#define RELAY_2  4  // Pin D4
#define RELAY_3  5  // Pin D5
#define RELAY_4  6  // Pin D6
#define NUMBER_OF_RELAYS 4 // Liczba przekaznikow
#define RELAY_ON 1  // Stan wysoki przekaznik wlaczony
#define RELAY_OFF 0 // Stan niski przekaznik wylaczony

// NRFRF24L01 radio driver (set low transmit power by default) 
MyTransportNRF24 radio(RF24_CE_PIN, RF24_CS_PIN, RF24_PA_LEVEL_GW);  
//MyTransportRFM69 radio;
// Message signing driver (none default)
//MySigningNone signer;
// Select AtMega328 hardware profile
MyHwATMega328 hw;
// Construct MySensors library
MySensor gw(radio, hw);

void setup() {   
// Initialize library and add callback for incoming messages
gw.begin(incomingMessage, AUTO, true);
// Send the sketch version information to the gateway and Controller
gw.sendSketchInfo("Relay", "1.0");

// Fetch relay status

for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++){
    // Register all sensors to gw (they will be created as child devices)
    gw.present(sensor, S_LIGHT);
    // Then set relay pins in output mode
    pinMode(pin, OUTPUT);   
    // Set relay to last known state (using eeprom storage) 
    digitalWrite(pin, gw.loadState(sensor)?RELAY_ON:RELAY_OFF);
  }
}


void loop() 
{
  // Alway process incoming messages whenever possible
  gw.process();
}

void incomingMessage(const MyMessage &message) {
  // We only expect one type of message from controller. But we better check anyway.
  if (message.type==V_LIGHT) {
     // Change relay state
     digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
     // Store state in eeprom
     gw.saveState(message.sensor, message.getBool());
     // Write some debug info
     Serial.print("Incoming change for sensor:");
     Serial.print(message.sensor);
     Serial.print(", New status: ");
     Serial.println(message.getBool());
   } 
}
Program wykorzystuje piny Arduino D3 do D6 i definiujemy, to w tej linijce:
#define RELAY_1  3  // Pin D3
#define RELAY_2  4  // Pin D4
#define RELAY_3  5  // Pin D5
#define RELAY_4  6  // Pin D6
#define NUMBER_OF_RELAYS 4 // Liczba przekaznikow
Po wgraniu do Arduino w Domoticz pojawią się 4 nowe urządzenia, dodajemy je klikając w zieloną strzałkę i wpisujemy nazwę i mamy 4 przełączniki
Kod do pobrania -> Przekaznikix4

sobota, 3 października 2015

Domoticz - instalacja ImperiHome

IMPERIHOME


ImperiHome jest to fajna aplikacja na tablety i telefony z Android, o ile na telefonie dobrze sprawuje się aplikacja Dromotica, która opisałem w tym poście -> Dromotica to na tablet nadaje się dobrze aplikacja ImperiHome, dzięki czemu możemy stworzyć sobie w dowolnie konfigoruwalny panel sterowania.

Aby aplikacja ImperiHome obsługiwała Domoticz, trzeba po kolei zainstalować:

1. Łączymy się więc z Raspberry Pi przez program Bitvise, (program opisałem wtym poście -> Bitvise i w okienku konsoli wklejamy kolejno:
cd ~/domoticz/
git clone https://github.com/empierre/MyDomoAtHome MyDomoAtHome
cd MyDomoAtHome
cp config.yml.def config.yml
cp production.yml.def production.yml
cp development.yml.def development.yml

Powinno to wyglądać tak


W katalogu domoticz/MyDomoAtHome są 3 pliki które musimy wyedytować:

development.yml
production.yml
config.yml

Należy tam wpisać Ip i port Domoticz, w moim przypadku jest to: 192.168.3.105:8080


Edytujemy i zapisujemy we wszystkich 3 plikach.

Teraz instalujemy ImperiHome poleceniem:

sh ./run-once.sh

Trochę trzeba poczekać, aż wszystko się zainstaluje.


Teraz możemy uruchomić ImperiHome poleceniem w konsoli:

sudo service MyDomoAtHome.sh start

Zatrzymujemy poleceniem:

sudo service MyDomoAtHome.sh stop

A przeładowanie to:

sudo service MyDomoAtHome.sh reload

Po uruchomieniu powinno być w w konsoli tak


Ja zmieniłem sobie domyślny port do ImperiHome na 5001 w pliku MyDomoAtHome.sh katalog /home/pi/domoticz/MyDomoAtHome


Po wpisaniu w przeglądarce:
http://192.168.3.105:5001/devices

Powinny być widoczne zainstalowane urządzenia w Domoticz.

Ważne aby w ustawieniach Domoticz był wpisany poprawnie adres z gwiazdką po kropce, w moim przypadku będzie to: 192.168.3.*


Jeżeli po wpisaniu http://192.168.3.105:5001/devices strona nie chce się otwierać, to urządzenia z Domoticz nie będą widoczne w aplikacji ImperiHome na Android.

Opis pochodzi ze strony wiki Domoticz -> ImperiHome

W razie problemów można pytać na forum po angielsku -> Forum domoticz

Jak wszystko przebiegnie poprawnie, to ściągamy ImperiHome ze sklepu Play i instalujemy -> ImperiHome

Po zainstalowaniu wchodzimy w Settings i dodajemy Add new system


Wybieramy ImperiHome Standard System


Wpisujemy adres w Local Api Basic Url , w moim przypadku będzie, to http://192.168.3.105:5001 i wybieramy Next


Aplikacja powinna znaleźć system: System found: MyDomoAtHome, więc wybieramy Finish

Teraz już możemy dowolnie projektować panel wybierając układ kafelek, ja wybrałem taki, przytrzymując na pustym kafelku dodajemy urządzenia.


U mnie wygląda to tak


Można dodać kamerkę i dowolne przyciski i czujniki, które mamy w Domoticz, jako dodaną stronę http dodałem sobie stronę -> http://meteo.org.pl/opole i mi pokazuje aktualną temperaturę, ciśnienie i wilgotność w Opolu.

piątek, 2 października 2015

Domoticz i bramka MySensors - Arduino Nano + NRF24L01 + odbiornik DHT11

Dotarły moje zamówione moduły Arduino Nano i NRF24L01 zakupione w sklepie Propox, w komplecie były kable USB, koszt 1 szt. Arduino Nano, to 30 zł i 4 zł moduł NRF24L01.


Zaraz na początku pojawiły się problemy z wykryciem Arduino w Windows na dołączonych kablach USB, musiałem użyć innych kabli mini USB.

Aby moduł został poprawnie wykryty wymagane są sterowniki FTDI w systemie, możemy je pobrać ze strony producenta, wybierając wersję odpowiednią do posiadanego systemu -> http://www.ftdichip.com/Drivers/D2XX.htm

Sterowniki można zainstalować automatycznie klikając program instalacyjny lub ręcznie po podłączeniu Arduino. Po zainstalowaniu w Menedżerze urządzeń powinien być widoczny nowy port COM, u mnie jest port COM10.


Gdy już mamy poprawnie zainstalowany sterownik i wykryty moduł Arduino zapamiętujemy nr portu COM.
Uruchamiamy program Arduino klimay Narzędzia i wybieramy Płyta Arduino Nano


Wybieramy procesor Atmega 328 i port COM jaki wykryło nam wcześniej w Mendżerze urządzeń


Teraz wybieramy z naszej biblioteki program do bramki SerialGateway, jak dodać bibloteki napisałem wcześniej w poście -> Instalacja bibliotek sensorów z mysenors
Plik -> Przykłady -> MySenosrs -> SerialGateway


Teraz wybieramy Zwerifkuj i Wgraj.

Bibliotek nie trzeba instalować, można je pobrać ze strony MySensors lub wgrać bezpośrednio na stronie-> http://www.mysensors.org/build/serial_gateway

Gdy już wgramy program bramki MySensors łączymy Arduino z modułem NRF24L01 zgodnie ze schematem


Na schemacie PIN2 nie jest podłączony, ja go jednak podłączyłem.

Gotowa bramka


Bramkę podłączamy kablem USB do wolnego portu USB w Rasberry Pi, uruchamiamy Domoticz, wchodzimy w Ustawienia -> Sprzęt i szukamy w Typ: My Sensors Gateway USB, Serial port powinno być /dev/ttyUSB0, wpisujemy nazwę, ja wpisałem MySenors i klikamy Dodaj.


Gdy wejdziemy w logi Ustawienia -> Logi zobaczymy, że nasza bramka została dodana


Teraz łączymy drugie Arduino Nano z NRF24L01 tak samo jak bramkę, będzie to odbiornik, gdzie podłącza się czujniki.
Ja podłączyłem czujnik DHT11


Moduł ten nie wymaga podłączenia rezystora podciągającego i ma diodę zasilania, w module są 3 piny GND, Data i VCC.
GND łączymy do GND w Arduino Nano, Data do pinu D3, a VCC do 5V.

Teraz trzeba jeszcze wgrać program do obsługi czujnika, będzie do program Humidity -> http://www.mysensors.org/build/humidity

Po wgraniu nasz odbiornik możemy zostawić podłączony do portu usb lub zasilić zewnętrznym zasilaczem.
Teraz w logach Domoticz powinniśmy zobaczyć, że wykryło nasz odbiornik


Jeżeli nie wykryje, to trzeba wcisnąć przycisk reset na module Arduino. Gdy wykryje nasz odbiornik z czujnikiem zobaczymy, to w logach oraz nowy czujnik w Urządzeniach, wybieramy go klikamy zieloną strzałkę wpisujemy nazwę i już mamy widoczny odczyt.


Odczyt z czujnika DHT11


Ponieważ pojawia się problem z obsługą nowych i starych bibliotek i programy nie chcą się kompilować, proponuję wypakować i skopiować do folderu:
Program Files -> Arduino -> libriares ten zestaw bibliotek -> Link
Do folderu Moje Dokumenty -> Arduino -> libraries wypakować i skopiować ten zestaw plików -> Link

W katalogu Moje Dokumenty -> Arduino -> libriares -> MySensors-master -> examples mamy większość kodów programów do obsługi czujników MySensors.