sobota, 29 marca 2014

Arduino sensor wilgoci i temperatury DHT11

Wstęp:
W celu prawidłowego działania sensora i kodu musimy pobrać i zainstalować bibliotekę obsługującą sensor DHT11 (biblioteka DHT11).
Poniżej przedstawiony kod jest identyczny z przykładem znajdującym się w tej bibliotece poza jedną zmianą, zmieniłem int pin = 4; na int pin = A1 aby pinem odczytującym wartości układu był analogowy pin A1.

Zasada działania:
1. Miernik wilgoci i temperatury DHT11 wysyła sygnał pomiary tych dwóch wielkości.
2. Monitor seryjny pokazuje wartości pomiaru wilgoci i temperatury.

Kod programu dla sensora DHT11:
#include <DHT11.h>
int pin=A1;
DHT11 dht11(pin);
void setup()
{
   Serial.begin(9600);
  while (!Serial) {
      ; // wait for serial port to connect. Needed for Leonardo only
    }
}

void loop()
{
  int err;
  float temp, humi;
  if((err=dht11.read(humi, temp))==0)
  {
    Serial.print("temperature:");
    Serial.print(temp);
    Serial.print(" humidity:");
    Serial.print(humi);
    Serial.println();
  }
  else
  {
    Serial.println();
    Serial.print("Error No :");
    Serial.print(err);
    Serial.println();  
  }
  delay(DHT11_RETRY_DELAY); //delay for reread
}

wtorek, 4 marca 2014

Arduino nadajnik-odbiornik 433MHz RF

Wstęp:
Tytułem wstępu. Schemat łączenia zaczerpnąłem od Pana Elektro Maras z Youtuba a stronę stworzyłem aby nie zapomnieć jak to podłączyć i mieć to zawsze pod ręką. Polecam zajrzeć też na Youtuba.
http://www.youtube.com/watch?v=3rRlp79qHIs
Na uwagę zasługuje także projekt ze skrzynką pocztową wykorzystujący połaczenie RF
http://majsterkowo.pl/prosty-system-powiadamiania-o-nowych-listach-znajdujacych-sie-w-skrzynce-pocztowej/

Zasada działania:
1. Nadajnik wysyła sygnał z arduino sygnalizując wysyłanie miganiem diody L (sprzężonej z pinem 13).
2. Odbiornik z drugiego arduino odbiera sygnał potwierdzając odbiór miganiem diody L, oraz wyświetla pobierany sygnał na monitorze połączenia.
3. W celu prawidłowego działania systemu należy pobrać ze strony arduino bibliotekę VirtualWire.

Kod programu dla nadajnika:
#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);
    Serial.println("setup");

    vw_set_ptt_inverted(true);
    vw_setup(2000);
}

void loop()
{
    const char *msg = "hello";

    digitalWrite(13, true);
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx();
    digitalWrite(13, false);
    delay(200);

}

Kod programu dla odbiornika:
#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);
    Serial.println("setup");

    vw_set_ptt_inverted(true);
    vw_setup(2000);

    vw_rx_start();
}

void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen))
    {
int i;

        digitalWrite(13, true);
Serial.print("Got: ");

for (i = 0; i < buflen; i++)
{
   Serial.print(buf[i], HEX);
   Serial.print(" ");
}
Serial.println("");
        digitalWrite(13, false);
    }

}