» »

Arduino in luči

Arduino in luči

«
1
2

SonoR ::

Zdravo!

Zasvojila me je misel, da bi si naredil remote control luč/i. Na youtubu sem videl malo morje takih primerov, vendar noben ne prikaže kako je to naredil korak po korak oziroma pokažejo vendar vse na tisti mali tablici. Rad bi vedel, če se da priklopiti arduino na tiste žice, ki so v stikalu, da bi enostavno odprl stikalo na steni in priklopil adurino ploščo. O teh stvareh nimam ravno pojma, ampak bi se hitro naučil, v bistvu je tako vse na internetu, sem že pogledal par kod, ki bi jih naložil.

Hvala za nasvete že v naprej :)

nikjozo ::

Če so tiste žice na stikalu od omrežne električne napeljave, boš ob priklopu gor v najboljšem primeru skuril ploščico, v najslabšem pa še sebe zakuril :)

Arduino rabi 3-5V za napajanje, odvisno od konektorja/modela.

Poglej si na internetu za remote IR komando. Na Arduino si naštimaj IR sprejemnik in rele, ki vklopi stikalo. Na tak način boš lahko kar z daljincem od TVja vklapljal in izklapljal luč.
Če rabiš IR sprejemno diodo pa si iz LJ, mi sporoči.

SonoR ::

Ja ne vem kaj drugega bi lahko bile tiste žice, kot pa od električne napeljave, če se preko njih prižge luč. Arduino vem da rabi napajanje 3-5V, saj bi ga napajal preko kakega adapterja, zanima me samo če potem preko releja priklopim gor žice iz stikala, če bo to vse skurilo, ali obstaja možnost da bi delovalo.

Nisem iz LJ, pa tudi raje bi izbral drugo varianto, kot pa IR in prižiganje z daljincem. Hvala vseeno.

franseliski ::

http://www.instructables.com/id/Arduino...

Google:
Arduino Lighting Control

Jaz imam raje namenski senzor, (220v motion detector) na hodniku. V spalnici bi kvečjemu uporabil stikalo na ploskanje, ker močno dvomim da se boš hodil spat z daljincem. Lahko Arduino komot naučiš da se obnaša kot stikalo na ploskanje, a je blesavo ker rabiš ene transformatorčke, pa občutljivost nastavljat...

Morda kaj takega:
http://www.ebay.com/itm/220V-Wall-Mount...

SonoR ::

Saj ne bi šel spat z daljincem zato sem tudi rekel, da se mi tista ideja ne zdi vredu, bi pa šel spat z telefonom v bližini ;)

Teh filmčkov sem pogledal že milijon, ampak nikjer ni postopka kako zvezati tole na že narejeno inštalacijo v stanovanju..

nikjozo ::

SonoR je izjavil:

Saj ne bi šel spat z daljincem zato sem tudi rekel, da se mi tista ideja ne zdi vredu, bi pa šel spat z telefonom v bližini ;)

Teh filmčkov sem pogledal že milijon, ampak nikjer ni postopka kako zvezati tole na že narejeno inštalacijo v stanovanju..


če je tako kot si napisal, potem si nabavi 5V/230V rele, NO kontakt releja zveži na omrežno stikalo (prej seveda izklopi hišno varovalko), rele boš pa prožil z enim od digitalnih izhodnih pinov, ki jih imaš na ploščici. Poraba teh reječkov je dovolj majhna, da izhodni digitalni pin brez težav dalj časa krmili rele. Če je mogoče si nabavi relejsko ploščico ki vsebuje ločilnik - optocoupler, da vi primeru slučajnega preboja omrežne napetosti da ti ne skuri ploščice in naprej.

Kako boš pa vklapljal rele imaš pa malo morje načinov. Praviš da ne želiš na IR. Predlog je bil torej na zvok, imaš še možnosti na senzor gibanja, prek web vmesnika, s tipko na daljavo...

Če hočeš prek telefona si nabavi še ethernet ali wifi shield, postavi mini arduino web server in potem lahko s preprosto html skripto dostopaš do stikala in ga po želji vklapljaš izklapljaš. Varianta je tudi da napišeš andorid/ios/karkoli aplikacijo za tvoj telefon pa potem tako krmiliš, ampak to je že bolj zahtevno od webserverja.

          ::

1. Arduino rabi napajanje od 7V navzgor, jaz jih napajam z 8V. Če imaš premalo, na izhodih ne dobiš zadostne napetosri če imaš preveč boš pregreval regulator.
2. za prižiganje luči rabiš releje. Komot uporabiš tazga, imaš tudi večkanalne izvedbe in take, kjer je med relejem in arduinom še optoizolator (da ne prekuriš arduinota).
3. Arduinota+rele lahko daš v stensko dozo od tam pa do žarnic pelješ 230V do stikal pa signle vhodov od ardunota - odvisnost od tega kako imaš napeljate cevi v steni
4. v programu za AVR si narediš interupte, ki ti pošlušajo za spremembe na vhodih in na ta način prižigaš luči - če je stikalo vhoda sklenjeno luč gori drugače ne. lahko pa namesto stikal uporabiš tipke (pride prav če imaš za eno te isto luč več šalterjov) in potem pritiski tipk narediljo toggle stanja za luč
5. za primer da zmanka elektrike lahko vsakokratno stanje zapišeš v eprom da potem ko elektrika pride nazaj gorijo iste luči kod pred ispadom - enako delovanje kot pri kalsični inštalaciji
6. vso robo tudi ardunota za kaj takega dobiš od kitajca za nekaj evrov

SonoR ::

No, ti odgovori so mi pa že bolj všeč :) Nabavil bom tale arduino , ta wifi shield in te releje. Menda je to vse kar potrebujem.

Zgodovina sprememb…

  • spremenil: SonoR ()

nikjozo ::

SonoR je izjavil:

No, ti odgovori so mi pa že bolj všeč :) Nabavil bom tale arduino , ta wifi shield in te releje. Menda je to vse kar potrebujem.


To je to, mogoče še za napajalnik poglej.

          ::

Pa to pazi kadar kupuješ kitajskega ardunota, da dobiš ustrezen USB-serial driver v kolikor ploščica ni identična originalu. Saj na koncu dela ampajk porabiš mnogo časa da najdeš tapravi driver.

d4vid ::

Jaz mam sicer to narejeno kar se da enostavno. Do tipkal (namesto stikal) imam svoje kable, deluje pa na 12V (v prihodnosti 24V), nato pa preko optocouplerja na arduino, da je cim manj motenj. Luci vklapljam preko plosce, na kateri je 8 relejev.

Na arduinotu poganjam firmata firmware, povezan je na raspberry, ki ima nameščen fhem. Gor imam se 3 DS18B20 temperaturne senzorje.
Main PC: Asus PN50 | AMD Ryzen 5 4500U | 16 GB RAM | 256 GB SSD
PC2: HP Z400 | Intel Xeon L5630 | 6 GB RAM | 120 GB SSD
Laptop: HP Elitebook 840G1 | Intel i5 | 8 GB RAM | 256 GB SSD

          ::

Kako imaš narejeto povezavo s razberijom?

franseliski ::

Jaz bi še zmeraj raje šel v kaj takega:

http://www.ebay.com/itm/Wireless-RGB-Wi...

+ led strip.

FX6300B ::

preden kaj delaš se loti na https://123d.circuits.io/ pač preko relejev boš moral , mogoče ti bom narisal shemo :D(če se mi bo dalo :D)
May the force be with you!

Zgodovina sprememb…

  • spremenil: FX6300B ()

SonoR ::

približno že vem, kako bi stvari priklopil, sem pregledal kar nekaj youtube posnetkov, ampak to je pa vsekakor tudi dobra stvar za preizkus, hvala :)

FX6300B ::

evo nahitro za eno žarnico https://123d.circuits.io/circuits/11325...
May the force be with you!

d4vid ::

          je izjavil:

Kako imaš narejeto povezavo s razberijom?


Točno to zadevo imam povezano serijsko oz. prek USBja, na arduinotu je pa Serial -> USB pretvornik.
Imam pa naročen arduino uno + ethernet shield, saj imam plan nekaj senzorjev (temperatura, vlaga) montirat v kurilnico, imam pa zraven, v garaži modem.

So še drugi načini komunikacije kot firmata. Npr. Mysensors je podprt v FHEMu, tam je pa malo drugače. En arduino, povezan serijsko, prek etherneta ali wifija, služi kot nek gateway oz. prehod. Na njem je še NRF24L04 za komunikacijo na 2.4 GHz. Potem so pa senzorji ali aktuatorji. Vsak tak node je sestavljen iz arduinota in NRF24L01 + tisto, kar mora imet senzor/aktuator.

Sedaj če hočeš samo luči regulirat, je arduino + releji + nekaj žic dovolj. Seveda pa je priporočeno še kak protobord, nekaj uporov, kak kondenzator ter optocoupler, za odpravo napak. Npr. ko prižgeš luč, se ti prižge še druga.
Nekako tako sem začel jaz. Potem sem zraven dal IR sprejemnik. Pa sem vklapljal luči z daljincem. Pa ni bilo dovolj, pa sem montiral še LAN kartico, da sem vklapljal in izklapljal s telefonom.
Potem sem se začel igrat s Raspberryjem in našel FHEM. Sedaj se pa grem home-automation on budget. Senzorji temperature 1€, releji 5€... Narediš marsikaj.

Razmišljam, da bi RPI zamenjal s Orange Pi.
Main PC: Asus PN50 | AMD Ryzen 5 4500U | 16 GB RAM | 256 GB SSD
PC2: HP Z400 | Intel Xeon L5630 | 6 GB RAM | 120 GB SSD
Laptop: HP Elitebook 840G1 | Intel i5 | 8 GB RAM | 256 GB SSD

FX6300B ::

sem tudi sam naročil 2 arduinota pa 10 rejejev pa dost te robe za 28€(2 pošilke) pa še čakam iz pekinga ;D

d4vid kolk relejev dobiš za 5€? jst sm naroču 10relejev z kitajske pa je pršlo 8€ me je mal strah da nebi delal :D ne sj bojo
May the force be with you!

Zgodovina sprememb…

  • spremenil: FX6300B ()

d4vid ::

Na banggood je nekaj čez 5EUR 8 kanalov. Preverjeno delujejo, mi luči vklapljajo in izklapljajo že kakšno leto.





Takole nekako zgleda vse skupaj :) So pa seveda to že izdelane rešitve... Ni moje delo. Imam namen se naučit perl in razvit kak modul, ker kakšna stvar včasih manjka.

EDIT: Shrani.si mi nagaja :)
Main PC: Asus PN50 | AMD Ryzen 5 4500U | 16 GB RAM | 256 GB SSD
PC2: HP Z400 | Intel Xeon L5630 | 6 GB RAM | 120 GB SSD
Laptop: HP Elitebook 840G1 | Intel i5 | 8 GB RAM | 256 GB SSD

Zgodovina sprememb…

  • spremenil: d4vid ()

FX6300B ::

aha jst sm uzeu 10 enokanalnih
May the force be with you!

d4vid ::

Nekak se mi zdi precej brezveze enokanalne jemat, če misliš vse na en arduino povezat. Pri 8 kanalnih privarčuješ kar nekaj žic zaradi VCC in GND.
Main PC: Asus PN50 | AMD Ryzen 5 4500U | 16 GB RAM | 256 GB SSD
PC2: HP Z400 | Intel Xeon L5630 | 6 GB RAM | 120 GB SSD
Laptop: HP Elitebook 840G1 | Intel i5 | 8 GB RAM | 256 GB SSD

FX6300B ::

res je vendar sem uzel tudi 2 arduinota :D pač bomo vidl kaj bo iz tega
May the force be with you!

          ::

d4vid je izjavil:

Na banggood je nekaj čez 5EUR 8 kanalov. Preverjeno delujejo, mi luči vklapljajo in izklapljajo že kakšno leto.


Kolko pa traja da pridejo? Meni ponavadi robo foter naroči na dx.com.

Zgodovina sprememb…

FX6300B ::

odvisno če je EU WAREHOUSE je hitro lahko će v parih dneh (po navadi) če pa je iz kitajske pa traja kakšna 2 tedna do 3 tedne no vsaj če imaš srečo lako pa se zavleče
aja pa če boš karkoli naročeval glej da bo pod 22€ če imaš v košarici robe za več kot 22€ pač izvedeš več nakupov ker če je pod 22€ ni davka in carine itd. tako povedano je oproščeno vseh dajatev
May the force be with you!

FX6300B ::

evo danes sem dobil 2 arduinota mega 2560 in zaenkrat še testiram dobil se m pa cca 7€ po kosu
May the force be with you!

SonoR ::

FX6300B je izjavil:

evo danes sem dobil 2 arduinota mega 2560 in zaenkrat še testiram dobil se m pa cca 7EUR po kosu



kje si jih pa naročo, da so tako hitro prišli?

Zgodovina sprememb…

  • spremenil: SonoR ()

FX6300B ::

aliexpress točno tale http://www.aliexpress.com/item/Free-shi... 5.10 so dali na chinapost

tudi dela out of the box samo driverje je treba naložit so pa teli http://kiguino.moos.io/2014/12/31/how-t...
May the force be with you!

Zgodovina sprememb…

  • spremenil: FX6300B ()

SonoR ::

aaa, jaz sem mislo da si pred par dnevi naročo, ker si takrat rekel da si naročil dva :D super, jaz bom rabo iste driverje :)

FX6300B ::

evo ti čist točen link http://www.wch.cn/downfile/5

releje pa še čakam k sem jih pri enem drugem naročil da ni presegalo 22€ pa tut sm jih najdu tm ceneje

tele http://www.aliexpress.com/item/Hot-Sell...
May the force be with you!

Zgodovina sprememb…

  • spremenil: FX6300B ()

SonoR ::

res poceni ja. ne vem še sicer čist točno, če mam naročen arduino z enakim čipom, da bi bli tile driveri pravi, morem počakat da prispe :D

FX6300B ::

kje pa si naroču
May the force be with you!

SonoR ::

Evo ta arduino je. Zdaj sem videl da piše serija CH340G.

FX6300B ::

jst sm zej ugotovu da mi na enmu ne dela "ON" ledica na drugmu pa :( sm mu že poslou sporočiu sicr me ne mot sam useen
May the force be with you!

SonoR ::

kolko sem zdaj na hitro pobrskal so enaki driveri, kot si mi jih ti poslal ;)

FX6300B ::

jap ker je itak samo odvisno od usb to serial čipa ki je na arduinu
May the force be with you!

SonoR ::

kaj naj naredim... na arduino mega2560 imam priključen wifi shield cc3000 in mi vedno napiše v serijskem vmesniku "WiFi shield not present", probal sem že vse živo :/

SonoR ::

ok, torej očitno nisem probal vsega, ker ene stvari vseeno delajo :)

mi lahko kdo združi ti dve kodi? Gre se za prižig recimo luči preko stikala oz. preko računalnika/telefona.

int zarnica1 = 0;//"poimenovanje" pina na arduiotu (digital)
int stikalo1 = 13;
int st1;


void setup() {//v setup se bo izvedlo samo enkrat

  pinMode(zarnica1, OUTPUT);//mu pove da je žarnica izhod
  pinMode(stikalo1, INPUT);//stikalo pa vhod
}


void loop() {//v zanki loop se bo to izvajalo skozi dokler je arduino prižgan
 st1 = digitalRead(stikalo1);
  
  if (st1 == HIGH){
   digitalWrite(zarnica1, HIGH); //če je "OUTPUT" stikala pozitiven vklopi
  }
  delay(100);
  if (st1 == LOW){
    digitalWrite(zarnica1, LOW);//če je "OUTPUT" stikala pozitiven IZKLOPI
  }
 
}


/*
WirelessControllerWifi is one of the applicatioin of CC3000 Wifi Module
                  - This sample application code simply turns on and off
                   an LED remotely via Wifi.
                  - It is suggested to use Atmega644 to avoid further
                    RAM issues.
                  - The IP address given to CC3000 by the Access Point
                    is static. Therefore, it is advisable to make sure
                    that the IP address entered to the browser is correct.
                   
Execution:
  1. Once uploaded to the microcontroller, open the serial.
  2. Wait for successful connection.
  3. When DHCP request is successful, Copy the IPaddress given to your device.
  4. Enter the IPaddress to your browser.
  5. The small Wireless Controller webpage will then be loaded.
  6. Click ON button to turn on the LED and OFF button to turn it off.

Wiring Connection:
  1. Connect +pin of LED(series with current limiting resistor if needed) to pin 13(A0).
             -pin to GND. This will be the LED to be controlled.
  2. Connect +pin of LED(series with current limiting resistor if needed) to pin 9.
             -pin to GND. This will be the wifi connection indicator.           
             
Notes:
  Reserved pins for CC3000 and SD Card communication are as follows.
    CC3000 Breakout Board              Gizduino
          SCK   <------------------> Digital pin 13
          MISO  <------------------> Digital pin 12
          MOSI  <------------------> Digital pin 11
          CS    <------------------> Digital pin 10
          V_EN  <------------------> Digital pin 5
          uSDCS <------------------> Digital pin 4
          IRQ   <------------------> Digital pin 3
References:
         - Adafruit_CC3000 ChatServer.ino
         - Ethernet WebServer.ino
         - Important Libraries from Adafruit: https://learn.adafruit.com/adafruit-cc3000-wifi/cc3000-library-software

Created On:  28 APR 14
        By:  e-Gizmo Mechatronix Central
*/

#include <Adafruit_CC3000.h>
#include <SPI.h>
#include "utility/debug.h"
#include "utility/socket.h"

/* --- CC3000 constants --- */
// These are the interrupt and control pins
#define ADAFRUIT_CC3000_IRQ   3  // MUST be an interrupt pin!
// These can be any two pins
#define ADAFRUIT_CC3000_VBAT  5
#define ADAFRUIT_CC3000_CS    10
// Use hardware SPI for the remaining pins
// On an UNO, SCK = 13, MISO = 12, and MOSI = 11
Adafruit_CC3000 cc3000 = Adafruit_CC3000(ADAFRUIT_CC3000_CS, ADAFRUIT_CC3000_IRQ, ADAFRUIT_CC3000_VBAT,
                                         SPI_CLOCK_DIVIDER); // you can change this clock speed
#define WLAN_SSID       "arkamadona"           // cannot be longer than 32 characters!
#define WLAN_PASS       "samsung1"
// Security can be WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA or WLAN_SEC_WPA2
#define WLAN_SECURITY   WLAN_SEC_WPA2
#define LISTEN_PORT           80 
Adafruit_CC3000_Server gizduinoServer(LISTEN_PORT);  //(LISTEN_PORT);

/* --- Webpage variables --- */
String req;     // Will handle the request of the client.
String reqsub;  // Request substring to for keyword "on" or "of".
char webpage[404] = "<!DOCTYPE HTML><html><body><center><h1>Wireless Controller via Wi-Fi</h1><p>by e-Gizmo</p><br><form method=\"get\"><input type=\"button\"style=\"height:100px;width:100px\" value=\"ON\"onclick=\"window.location='/?on'\">&nbsp;<input type=\"button\"style=\"height:100px;width:100px\"value=\"OFF\"onclick=\"window.location='/?of'\"></form></center></body></html>";

/* --- LED Indicators --- */
#define controlLED 13
#define wifiLED 9

void setup(void)
{
  Serial.begin(9600);
  Serial.print("Free RAM: "); Serial.println(getFreeRam(), DEC); 
  /* Initialise the module */
  Serial.println("Initializing...");
  if (!cc3000.begin())
  {
    Serial.println("Couldn't begin()! Check your wiring?");
    while(1);
  } 
  Serial.print("Attempting to connect to "); Serial.println(WLAN_SSID);
  if (!cc3000.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY)) {
    Serial.println("Failed!");
    while(1);
  }  
  Serial.println("Connected!");  
  Serial.println("Request DHCP...");
  cc3000.checkDHCP();
  // Display the IP address DNS, Gateway, etc.
  while (! displayConnectionDetails()) {  
    delay(1000);
  }  
  gizduinoServer.begin();  // Start listening for connections
  Serial.println("Waiting for Client...");
  
  pinMode(wifiLED,OUTPUT);  // LED pin for Wifi connection indicator.
  digitalWrite(wifiLED,HIGH);
  pinMode(controlLED,OUTPUT);  // LED pin to be controlled.
  
}

void loop(void){
  
  if(!cc3000.checkConnected()){
    Serial.println("CONNECTION LOST!");
    digitalWrite(wifiLED,LOW);
    while(1);
  }else{  
    // Try to get a client which is connected.
    Adafruit_CC3000_ClientRef client = gizduinoServer.available();
    if (client) {
      Serial.println("New client");
      // an http request ends with a blank line
      boolean currentLineIsBlank = true;
      while (client.connected()) {
        if (client.available()) {
          char c = client.read();
          Serial.write(c);
          req += c;
          reqsub = req.substring(6,8);
          if (reqsub == "of"){
            digitalWrite(controlLED, LOW);
          }
          if (reqsub == "on"){
            digitalWrite(controlLED, HIGH);
          }
          // Send a reply to the client
          if (c == '\n' && currentLineIsBlank) {
            // send a standard http response header
            client.println("HTTP/1.1 200 OK");
            client.println("Content-Type: text/html");
            client.println("Connection: close");  // the connection will be closed after completion of the response
            client.println();
            // Give the web page to the client
            client.println(webpage);
            client.println("");       
            break;
          }
          if (c == '\n') {
            // you're starting a new line
            currentLineIsBlank = true;
          } 
          else if (c != '\r') {
            // you've gotten a character on the current line
            currentLineIsBlank = false;
          }
        }
      }    
      // give the web browser time to receive the data
      delay(100);
      // close the connection
      client.close();
      Serial.println("Client disconnected");
      req="";
    }    
  }
}


/**************************************************************************/
/*!
    @brief  Tries to read the IP address and other connection details
*/
/**************************************************************************/
bool displayConnectionDetails(void)
{
  uint32_t ipAddress, netmask, gateway, dhcpserv, dnsserv;
  
  if(!cc3000.getIPAddress(&ipAddress, &netmask, &gateway, &dhcpserv, &dnsserv))
  {
    Serial.println(F("Unable to retrieve the IP Address!\r\n"));
    return false;
  }
  else
  {
    Serial.print(F("\nIP Addr: ")); cc3000.printIPdotsRev(ipAddress);
    Serial.print(F("\nNetmask: ")); cc3000.printIPdotsRev(netmask);
    Serial.print(F("\nGateway: ")); cc3000.printIPdotsRev(gateway);
    Serial.print(F("\nDHCPsrv: ")); cc3000.printIPdotsRev(dhcpserv);
    Serial.print(F("\nDNSserv: ")); cc3000.printIPdotsRev(dnsserv);
    Serial.println();
    return true;
  }
}



 

Zgodovina sprememb…

  • spremenil: SonoR ()

mojca ::

Samo na začetek druge kode dodaj
int zarnica1 = 0;
(oz. tisto številko pina, ki je priklopljen na rele) in tam, kjer prižigaš in ugašaš ledico z:
digitalWrite(controlLED, LOW);

dodaj še
digitalWrite(zarnica1, LOW);

in enako par vrstic nižje za HIGH. Z digitalWrite({pin}, LOW) nastaviš napetost na 0 V oz. izklopiš, s HIGH pa na 5 V oz. vklopiš.

SonoR ::

ne vem, če sem kaj narobe naredil, ampak mi žal ne gre :(

mojca ::

A se ti LEDica prižiga preko spleta?

Pošlji fotografijo, kako imaš stvari zvezane med seboj.

SonoR ::

dokler nisem spreminjal kode, se je.

slika

Zgodovina sprememb…

  • spremenil: SonoR ()

mojca ::

Kam točno si povezal rumeno/oranžno/rdečo žičko (iz fotografije to ni razvidno)?

Samo en problem: tole se mi ne zdi v redu, pa prej nisem bila pozorna:
digitalWrite(0, LOW);


Digitalna vrata 0 pripadajo serijskemu portu. Skoraj ziher sem, da tole pokvari komunikacijo med Wifi ploščico in Arduinotom. Če je rumena žička na D13, pa ti morda sploh kode ni potrebno spreminjati in bi se moral rele vklopiti skupaj z LEDico.

mojca ::

Še en potencialen problem glede na zgornje komentarje:

SCK <------------------> Digital pin 13

Verjetno tudi pin 13 ni najboljša izbira.

Morda lahko rumeno žičko spelješ na pin 8 (recimo, da ta ni zaseden) in potem rele vklapljaš/izklapljaš z digitalWrite(8, HIGH/LOW).

SonoR ::

rumena 13
oranžna 5v
rdečo gnd
kam pa naj priklopim stikalo?

mojca ::

Poskusi rumeno priklopiti na 8 na Arduinu in na Arduino naložiti naslednji program:
int zarnica1 = 8;
 
void setup() { // v setup se bo izvedlo samo enkrat
  pinMode(zarnica1, OUTPUT);//mu pove da je žarnica izhod
}
 
void loop() { // v zanki loop se bo to izvajalo skozi dokler je arduino prižgan
  digitalWrite(zarnica1, HIGH); // prižgi luč
  delay(1000);
  digitalWrite(zarnica1, LOW); // ugasni luč
  delay(1000);
}


Če si vse pravilno zvezal, bi se ti morala luč prižigati in ugašati. (Iz slike tudi ni razvidna vezava na levi.)

Ko ti bo to delalo pravilno, lahko kodi združiš.

SonoR ::

saj se prižiga. Ne vem, če me razumeš pravilno. Jaz bi to stvar rad uporabil na sobni luči in bi rad da se luč prižge ali preko arduinota ali preko stikala na steni. Sedaj to samo preizkušam na led diodi, za lažjo razlago. Ker pa nisem programer, sem prosil, da bi mi kdo te dve kodi enostavno združil, ker vsaka za sebe delujeta brez problema. Sedaj samo ne vem, kam priklopiti stikalo, će je na pin 8 priključen rele.

mojca ::

Res je, nisem razumla, da si spraševal, kam priklopiti fizično stikalo.

Najprej k problemu združevanja kode. Če se ti zdaj prižiga ledica, potem
          if (reqsub == "of"){
            digitalWrite(controlLED, LOW);
          }
          if (reqsub == "on"){
            digitalWrite(controlLED, HIGH);
          }

spremeni v
          if (reqsub == "of"){
            digitalWrite(controlLED, LOW);
            digitalWrite(zarnica1, LOW);
          }
          if (reqsub == "on"){
            digitalWrite(controlLED, HIGH);
            digitalWrite(zarnica1, HIGH);
          }

na vrhu datoteke dodaj
int zarnica1 = 8; // poveš, na kateri PIN si povezal rele

in v setup() dodaj
// Arduinu poveš, da bo na PIN-u 8 digitalni izhod,
// ki bo kontrolirar žarnico (in ne morda senzor, iz katerega boš bral)
pinMode(zarnica1, OUTPUT);


Za stikalo na steni imaš verjetno dve opciji:
- stvar zvežeš tako, da na stikalo pravilno pripelješ 5 V enosmerne napetosti iz Arduina namesto 230 V izmenične in postane stikalo na steni eden od "senzorjev", ki jih bereš z Arduinom ter na podlagi stanja tega stikala povsem softversko prižigaš/ugaaš luč (kot če bi imel tisti mali knofek na breadboard-u)
- potrebuješ izmenično stikalo in izmenično vezavo (kar mora podpirati tudi rele) in vklapljaš/izklapljaš kot katerokoli drugo luč z dvema neodvisnima stikaloma

Ampak tole potrebuje še kakšno shemo.

SonoR ::

ok kodo sva rešila, še vedno pa ne razumem čist točno, kam vezati fizično stikalo, torej na katere pine. Naj še enkrat ponovim kako imam na arduino vezan rele: VCC na 5v, IN1 na digitalni pin 8 in GND na gnd. Kam na katere pine naj vežem sedaj stikalo? Oprosti, ampak sem res popolni laik pri tem :(

mojca ::

Najprej moramo razčistiti par stvari:

  • Na koliko stikalih lahko trenutno prižgeš luč? Samo na enem ali na večih?

  • Bi rad luč kontroliral izključno z Arduinom (pri čemer boš stikalo na steni odklopil stran od 230 V in mu dal zgolj vlogo priveska na Arduinu kot alternativo spletnemu ugašanju)?



Če slednje in imaš v sobi samo eno stikalo, predlagam, da stvar na breadboardu najprej stestiraš z enim miniaturnim stikalcem. Eno nogico stikala zvežeš na GND. Drugo nogico stikala zvežeš na 10 k upor (na drugi strani upor vežeš na 5 V) in na en digitalni pin (recimo 9, ampak zares je vseeno). V setup() uporabiš:
pinMode(stikalo, INPUT); // na vrhu pred tem definiraš spremenljivko "int stikalo = 9;"


in potem stanje stikala bereš s
stanjeStikala = digitalRead(stikalo);


Kodo boš moral še malo predelati, da bo delala točno tako, kot bi si želel (da ob sprememi stanja stikala vklopi oz. izklopi luč glede na prejšnje stanje). Ko ti bo delalo z mini stikalcem, lahko začneš z demontažo stikala v sobi, prej pa nima smisla oz. si morda lahko kupiš eno navadno stensko stikalo za trening.

Mimogrede, jaz bi ti predlagala, da si pogledaš tole:

SonoR ::

luč lahko prižgem na dveh stikalih.
Če bi želel luč kontrolirati izključno z arduinom, ne bi toliko spraševal, ker je to že sedaj mogoče :D.
Ves čas že stvari testiram na breadboardu z malim stikalom.
Programiranje mi ne gre najbolje od rok, vseeno pa znam razbrati pomen sintaks.
«
1
2


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Kdo se spozna na ESP8266 in Arduino?

Oddelek: Pomoč in nasveti
182104 (1682) chiiiii
»

Arduino(slave) + ESP8266(master) preko I2Cja

Oddelek: Elektrotehnika in elektronika
10927 (780) teoo
»

Pomoč C++

Oddelek: Pomoč in nasveti
71263 (982) samo111
»

Arduino "leteče luči"

Oddelek: Elektrotehnika in elektronika
132876 (1753) zrataj4201
»

Arduino - krmiljenje stepper motorjev

Oddelek: Elektrotehnika in elektronika
153581 (2760) steling

Več podobnih tem