RGB LED og PIR sensor Jóla

RGB led borði látin flakka milli lita við hreyfingu, annars er rauður sjálfvalin litur.

Síðan þurfti N-chann mosfet til að tengja við arduino og stýra borðanum.

 

Fyrst tengja þetta á breadbord og fá virkni á móti led borða.

ledstrip

Kóði til að flakka á milli lita, fengin frá adafruit.

 

// color swirl! connect an RGB LED to the PWM pins as indicated
// in the #defines
// public domain, enjoy!
 
#define REDPIN 5
#define GREENPIN 6
#define BLUEPIN 3
 
#define FADESPEED 5     // make this higher to slow down
 
void setup() {
  pinMode(REDPIN, OUTPUT);
  pinMode(GREENPIN, OUTPUT);
  pinMode(BLUEPIN, OUTPUT);
}
 
 
void loop() {
  int r, g, b;
 
  // fade from blue to violet
  for (r = 0; r < 256; r++) { 
    analogWrite(REDPIN, r);
    delay(FADESPEED);
  } 
  // fade from violet to red
  for (b = 255; b > 0; b--) { 
    analogWrite(BLUEPIN, b);
    delay(FADESPEED);
  } 
  // fade from red to yellow
  for (g = 0; g < 256; g++) { 
    analogWrite(GREENPIN, g);
    delay(FADESPEED);
  } 
  // fade from yellow to green
  for (r = 255; r > 0; r--) { 
    analogWrite(REDPIN, r);
    delay(FADESPEED);
  } 
  // fade from green to teal
  for (b = 0; b < 256; b++) { 
    analogWrite(BLUEPIN, b);
    delay(FADESPEED);
  } 
  // fade from teal to blue
  for (g = 255; g > 0; g--) { 
    analogWrite(GREENPIN, g);
    delay(FADESPEED);
  } 
}

 

Síðan bæta við PIR sensor.

ledstrippir

 

PIR sensor bætt inn við kóðan og hann fer einn hring og endar í rauðu.

 

int inputPin = 2;               // Ir sensorinn
int pirState = LOW;             // byrja a engri hreyfin
int val = 0;                    // til ad lesa stodu ir

#define REDPIN 5
#define GREENPIN 6
#define BLUEPIN 3
 
#define FADESPEED 5     // make this higher to slow down
 
void setup() {
  pinMode(REDPIN, OUTPUT);
  pinMode(GREENPIN, OUTPUT);
  pinMode(BLUEPIN, OUTPUT);
  pinMode(inputPin, INPUT);     // stilla ir sem input
}
 
 
void loop() {
  val = digitalRead(inputPin);  // lesa gildi á input
  if (val == HIGH){
  int r, g, b;
 
  // fade from blue to violet
  for (r = 0; r < 256; r++) { 
    analogWrite(REDPIN, r);
    delay(FADESPEED);
  } 
  // fade from violet to red
  for (b = 255; b > 0; b--) { 
    analogWrite(BLUEPIN, b);
    delay(FADESPEED);
  } 
  // fade from red to yellow
  for (g = 0; g < 256; g++) { 
    analogWrite(GREENPIN, g);
    delay(FADESPEED);
  } 
  // fade from yellow to green
  for (r = 255; r > 0; r--) { 
    analogWrite(REDPIN, r);
    delay(FADESPEED);
  } 
  // fade from green to teal
  for (b = 0; b < 256; b++) { 
    analogWrite(BLUEPIN, b);
    delay(FADESPEED);
  } 
  // fade from teal to blue
  for (g = 255; g > 0; g--) { 
    analogWrite(GREENPIN, g);
    delay(FADESPEED);
  } 
}
}

 

 

 

 

Tengja Arduino Serial - Bluetooth

Tengja Arduino Serial - Bluetooth

Notaður er HC-05 kubbur.

Fyrst lóða á hann pinna svo einfalt væri að tengja við hann snúrur.

loda 

Síðan tengja allt upp.

IMG 20140907_211210 arduino-hc-05

DS18B20 var notaður til að fá upplýsingar á serial um hitastig, example notað úr library simple

Library fengið héðan fyrir ds18b20

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

void setup(void)
{
  // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");

  // Start up the library
  sensors.begin();
}

void loop(void)
{ 
  // call sensors.requestTemperatures() to issue a global temperature 
  // request to all devices on the bus
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.println("DONE");
  
  Serial.print("Temperature for the device 1 (index 0) is: ");
  Serial.println(sensors.getTempCByIndex(0));  
}

 

Síðan var fylgt leiðbeiningum héðan til að prufa, og þær stóðust.

term

Hann skilar þessu alveg eins og til stóð.

Nettengja Arduino

Til að nettengja Arduino dugar enc28j60.

arduino ethernet

Þetta er mjög einföld lausn þegar maður er að nota Arduino á tengibretti.

Fyrst þarf að ná sér í library til að setja inn í Arduino sketch hugbúnaðinn. https://github.com/jcw/ethercard 

Best er að velja zip download á library og afpakka því undir C:\Program Files (x86)\Arduino\libraries\.

thumb leid github leid ethercard 

Þá ættu að vera komin Exambles. ( muna slökva kveikja á hugbúnaði ef hann hefur verið í gangi. )

leid arduino_sketch

Síðan þarf að tengja það rétt við Arduino eins og taflan sýnir.

arduino to_encj

Myndin hér að neðan sýnir svo alla pinnana á Atmega328 sem er notaður sem Arduino.

 arduino atmega328

Þegar allt er tengt þá er bara byrja skemmta sér með Arduino nettengt.

Fullt af skemmtilegum sýnis hornum á netinu til að byrja.

Hér er sketc sem nettengir og leyfir að slökkva og kveikja á pinna 3.

Flott að tengja við led eða relay.

webled 

#include <EtherCard.h>

static byte mymac[] = {0x74,0x69,0x69,0x2D,0x30,0x31};
static byte myip[] = {192,168,1,2};
static byte gwip[] = {192,168,1,1};

byte Ethernet::buffer[700];

const int ledPin = 3;
boolean ledStatus;

char* on = "ON";
char* off = "OFF";
char* statusLabel;
char* buttonLabel;

void setup () {
 
  Serial.begin(57600);
  Serial.println("WebLed Demo");
 
  if (!ether.begin(sizeof Ethernet::buffer, mymac, 10))
    Serial.println( "Failed to access Ethernet controller");
 else
   Serial.println("Ethernet controller initialized");
 
  if (!ether.staticSetup(myip))
    Serial.println("Failed to set IP address");

  Serial.println();
  
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  ledStatus = false;
}
  
void loop() {
 
  word len = ether.packetReceive();
  word pos = ether.packetLoop(len);
  
  if(pos) {
    
    if(strstr((char *)Ethernet::buffer + pos, "GET /?status=ON") != 0) {
      Serial.println("Received ON command");
      ledStatus = true;
    }

    if(strstr((char *)Ethernet::buffer + pos, "GET /?status=OFF") != 0) {
      Serial.println("Received OFF command");
      ledStatus = false;
    }
    
    if(ledStatus) {
      digitalWrite(ledPin, HIGH);
      statusLabel = on;
      buttonLabel = off;
    } else {
      digitalWrite(ledPin, LOW);
      statusLabel = off;
      buttonLabel = on;
    }
      
    BufferFiller bfill = ether.tcpOffset();
    bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\n"
      "Content-Type: text/html\r\nPragma: no-cache\r\n\r\n"
      "<html><head><title>WebLed</title></head>"
      "<body>LED Status: $S "
      "<a href=\"/?status=$S\"><input type=\"button\" value=\"$S\"></a>"
      "</body></html>"      
      ), statusLabel, buttonLabel, buttonLabel);
    ether.httpServerReply(bfill.position());
  }
}

 

 

Arduino á breadboard.

Smiðaði mér single side Arduino bretti fyrir nokkru og hef skemmt mér við að prufa hitt og þetta.
Aðallega tilbúin forrit meðan maður er að kynna sér hvernig á að forrita Arduino.

En langaði líka að geta gert þetta á breadboard svo ég gæti búið mér til virkni á kubbnum sem færi síðan í verkefni.
Vildi ekki vera alltaf að taka Atmega kubbinn úr brettinu.

Búin að bagsa mikið við að fá þetta til að virka.

1 spennugjafi, passa að hann sé góður, 5v og ekki miklar truflanir með, sumt er bara ekki vel hannað.
Það er ástæða fyrir því að sumt er ódýrt.
Eða nota 5V regulator við 7-12volta spennugjafa.

2 Ýta á reset takka þegar Arduino hugúnaður er komin í upload, svo Arduino kubbur taki við sketch í upload.
Eftir að ég var búin að setja bootloader inn á kubbinn gat ég bara sett inn forrit einu sinni svo vildi
hann ekki taka við aftur. Fékk alltaf villu avrdude: stk500_getsync(): not in sync: resp=0x00 sem segir að samskipti
séu ekki í lagi. Reyndar í lagi en Arduino kubbur er bara ekkert að taka við.

Síðan er það USB í serial TTL.

Passa sig að velja rétt af þessum ódýrum á ebay.
Skoða á heimasíðu framleiðanda kubbsins hvaða stýrkerfi virkar með.
Ég verslaði kubb með PL2303HX hann virkar fínt með windows 7 en alls ekki með windows 8/8.1
En síðan fann ég drivera og núna kemur hann sem fram sem serial port. Hér eru driverar fyrir windows8 

aard bread

Hér er svo búið að víra þetta betur upp.

arduino breadbort

Leiðin að Arduino the end.

Loksin komin með Arduino.

Mjög gefandi að hafa unnið þetta frá upphafi til enda.

Tók smá tíma að koma bootloader, parallel leiðinn er erfið en virkar alveg.

Einnig er hægt að upploda sketch með henni.

Næst er að tengja Arduino við Raspberry PI.

20130601 143534 Medium 20130601 143556 Medium 20130601 180215 Medium 20130602 182253 Medium 

Svo var tekin smá prufa á led.

More Articles ...