piątek, 11 listopada 2016

Instalacja starych i nowych bibliotek MySensors i opis przesyłania danych MySensors 2.0

Ponieważ po wprowadzeniu nowych bibliotek MySensors 2.0 pojawiają się problemy z kompilacją starych i nowych kodów programów MySensors napiszę jak poprawnie wszystko zainstalować.

Na dzień dzisiejszy najnowsza wersja programu Arduino, to 1.6.12, do pobrania z strony Arduino.cc -> Link

Po ściągnięciu i instalacji programu Arduino, 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.


W nowych bibliotekach i kodach programów MySensors zmienił się sposób zapisu i przesyłania danych.

Na początku kodu programu definiujemy rodzaj użytego modułu radiowego, dla NRF24L01 jest to:
#define MY_RADIO_NRF24

Dla innych rodzajów modułów radiowych:
#define MY_RADIO_RFM69
#define MY_RS485

Jeżeli chcemy śledzić przesyłanie i odbieranie danych na porcie szeregowym w monitorze portu szeregowego w programie Arduino, to dodajemy wpis:
#define MY_DEBUG

Wtedy po włączeniu monitora portu szeregowego w programie Arduino -> Narzędzia -> Monitor portu szeregowego, widzimy dane jakie są przesyłane. Konwerter TTL musi być podłączony do Arduino.


Prędkość portu ustawiamy zazwyczaj na 115200 lub 9600

W dalszej części kodu MySensors dodajemy wpis importu potrzebnych bibliotek, dla MySensors są to wpisy:


Jeżeli używamy różnych czujników importujemy również biblioteki dla danego czujnika.

Dalej znajduje się wpis identyfikujący podłączony czujnik, ma on formę:
#define child_id_nazwa 0

Jeżeli mamy do przesłania kilka rodzajów danych definiujemy je kolejno, po nazwie dodając kolejny numer, czyli:
#define child_id_nazwa1 0
#define child_id_nazwa2 1
#define child_id_nazwa3 2

Dalej znajduje wpis inicjalizacji przesyłania danych, który ma formę:
MyMessage msg_nazwa1(child_id_nazwa1, rodzaj-zmiennej);

Rodzaje zmiennych są określone na stronie MySensors w trzeciej tabeli od góry w czwartej kolumnie -> Link

Przykładowo dla temperatury będzie to V_TEMP, dla wilgotności V_HUM, dla ciśnienia V_PRESSURE itd...

Więc, jeżeli chcielibyśmy przesyłać te dane muszą się znaleźć wpisy, dla każdej wartości w takiej formie:
MyMessage msg_nazwa1(child_id_nazwa1, V_TEMP);
MyMessage msg_nazwa2(child_id_nazwa2, V_HUM);
MyMessage msg_nazwa3(child_id_nazwa3, V_PRESSURE);

Dalej umieszczamy wpis prezentacji danych do kontrolera, dla MySensors 2.0, wpis jest w takiej formie:
void presentation() {
// Wyslij informacje o nazwie do bramki
sendSketchInfo("Nazwa programu, "1.0");

// Rejestracja czujnikow
present(child_id_nazwa1, S_TEMP);
present(child_id_nazwa2, S_HUM);
present(child_id_nazwa3, S_BARO);
}

W nawiasie jest określony typ czujnika, dla odpowiadającej mu rodzaju zmiennej.
Jest określone na stronie MySensors w trzeciej tabeli w pierwszej kolumnie -> Link

Dla V_TEMP jest to S_TEMP, dla V_HUM jest to S_HUM itd...

Dalej możemy dodać blok danych void setup, które zostaną wysłane tylko raz:
void setup() {
}

W pętli void loop umieszczamy kod do odczytu danych z czujników oraz kod przesyłania danych, czyli:
void loop()
{
send(msg_nazwa1.set(temperatura, 1));
send(msg_nazwa2.set(wilgotnosc, 1));
send(msg_nazwa3.set(cisnienie, 1));

delay(10000); // czas w milisekundach pomiędzy kolejnymi odczytami
}

temperatura, wilgotnosc i cisnienie są to wartości odczytane z czujników, które są przesyłane do Domoticz.

Do pobrania jest tu -> Link przykładowy kod programu do czujnika poziomu węgla dla MySensors 2.0, którego budowę opisałem w tym wpisie -> Link

6 komentarzy:

  1. A u mnie z uporem maniaka:
    2016-11-29 17:13:58.494 MySensors: Using serial port: /dev/ttyUSB1
    2016-11-29 17:13:59.982 MySensors: Gateway Ready...
    2016-11-29 17:14:00.058 MySensors: Gateway Version: 1.5.4

    Zerowałem już arduino, ściągałem biblioteki i ze strony Mysensors i z linków powyżej i zawsze to samo.

    OdpowiedzUsuń
    Odpowiedzi
    1. Bo masz wgrany w bramce stary wsad, w wersji 2.0 jest tu:
      https://github.com/mysensors/MySensors/blob/master/examples/GatewaySerial/GatewaySerial.ino

      Usuń
    2. Wydawało mi się, że pliki ściągnięte ze strony Mysensors są już w wersji najnowszej. Poza tym czyściłem/zerowałem arduino. Jedyna zmiana jaką zaobserwowałem to 1.5.1 na 1.5.4 Ale Ok po południu spróbuje z tego linka.

      Usuń
    3. Ten komentarz został usunięty przez autora.

      Usuń
    4. Udało się, odinstalowałem arduiono włącznie z ustawieniami logami itd. i po ponownej, czystej instalacji jest wersja 2.0.0. Nie wiem czemu pomimo wybrania nowego sketchu wgrywał stary, najważniejsze, że sytuacja opanowana.

      Usuń
  2. "Do folderu Moje Dokumenty -> Arduino -> libraries wypakować i skopiować ten zestaw plików -> Link" - Tu nic nie ma:(

    OdpowiedzUsuń