niedziela, 11 października 2015

Arduino Dom

Arduino w energetyce odnawialnej i budownictwie
1. Panel ośmiu przekaźników SSR. Ostatecznie może być 4 kanałowy
2. Klon Arduino LEONARDO R3 Atmel
















Projekt inteligentnych domków został zakończony. Zamiast domów, są małe domki "Makiety"
W sali nr 27 można oglądać makiety podpięte do sterownika włączającego oświetlenie domków. Oświetlenie jest uruchamiane po zbliżeniu się osoby na odległość 50 cm. Opcjonalnie oświetlenie jest włączane z użyciem pilota do projektora :)






Z pewnymi obawami ale i nadzieją, zaczynam dział poświęcony Arduino.
Płytka posłuży nam do skonstruowania prostych sterowników zasilania.
---
a). Pobieramy program od Arduino https://www.arduino.cc/en/Main/Software
b) Zapoznajemy się z językiem programowania http://www.plociennik.info/index.php/podstawy-jezyka
c). Tworzymy pierwszy projekt.
--------------------------------------
1. Projekt sterownia przekaźnikiem http://www.jarzebski.pl/arduino/komponenty/przekazniki-elektromagnetyczne.html
--------------------------------------

2. Sterowanie pilotem
http://majsterkowo.pl/jak-sterowac-dowolnym-urzadzeniem-za-pomoca-pilota-i-arduino/

-------------------------------------
------------------------------------
===================== WYKONANIE STEROWNIKA CZASU RZECZYWISTEGO===

Wykonanie sterownika 4TB Energia odnawialna

Co jest potrzebne

  • Zegarek RTC DS1307 (tylko z akumulatorem nie z baterią! )
Zegarek RTC

  • Panel ośmiu przekaźników SSR. Ostatecznie może być 4 kanałowy (jest tańszy)
ssr-male
Przekaźniki mechaniczne nie nadają się! Przy obciążeniu indukcyjnym resetują arduino. Próbowałem je obstawić kondensatorami, diodami, dławikami i zawsze w końcu trafiał się restart. Przy akwarium za kilka tysiaków raczej niedopuszczalne jest żeby zacięła się pompa dozująca.
  • Microswitche, trzy do manualnej obsługi timerów i jeden do obsługi funkcji karmienia
  • Dioda LED z rezystorem stosownym do koloru i oczekiwanej mocy świecenia.
  • Buzer 5V z generatorem
  • Zasilacz do Arduino
  • Przewody (męsko  żeńskie i żeńsko żeńskie)
  • Biblioteki http://magu.pl/aqma_files/time.ziphttp://magu.pl/aqma_files/DS1307RTC.zip
  • Jakaś obudowa
  • Moduł do płytek stykowych ze złączem ARK4
  • Płytka prototypowa stykowa 400pól arduino bascom
  • Wyświetlacz LCD 1602 2x16 HD44780 blue dla ARDUINO 
  • Chęci!!!
----------------
Gdzie tego szukać?
http://allegro.pl/klon-arduino-mega2560-r3-atmel-atmega2560-avr-usb-i5747071215.html
http://allegro.pl/modul-4-kanalowy-przekaznik-5v-10a-avr-arm-arduino-i5152899977.html
http://allegro.pl/modul-czasu-rtc-ds1307-24c32-arduino-avr-pic-i4876947652.html
http://allegro.pl/plytka-prototypowa-stykowa-400pol-arduino-bascom-i5242806245.html
----
Inna oferta na stronie plus doradztwo.


http://botland.com.pl/wyswietlacze-alfanumeryczne/224-wyswietlacz-lcd-2x16-znakow-niebieski.html
===========================================
3. Sterowanie czasem
A teraz baaaardzo prosty kod z komentami:

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 RTC;

int whitePotValue = 0; //analogowa wartość na potencjometrze kanału białego
int bluePotValue = 0; //analogowa wartość na potencjometrze kanału niebiekiego
int bluePWMValue = 0; //cyfrowa wartość PWM podawana na driver niebieskich
int whitePWMValue = 0; //cyfrowa wartość PWM podawana na driver białych

bool dzien = true; //wartość logiczna określająca czy jest dzień czy noc

void setup() {
// te 4 linijki ponizej dotycza podlaczenia RTC do arduino
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
digitalWrite(16, LOW);
digitalWrite(17, HIGH);

Wire.begin();
RTC.begin();
}

// the loop routine runs over and over again forever:
void loop() {
DateTime now = RTC.now();
//tutaj ustawiam godzine/minute/sekunde wschodu
if(now.hour()==10 && now.minute()==0 && now.second()==0 && dzien!=true)
{
dzien = true;
}
//tutaj ustawiam godzine/minute/sekunde zachodu
if(now.hour()==20 && now.minute()==0 && now.second()==0 && dzien==true)
{
dzien = false;
}

//odczytuje wartośc z potencjometrów
int bluePotValue = analogRead(A0);
int whitePotValue = analogRead(A1);

//mapuje wartość analogowe z potencjometrów do wartości PWM
bluePWMValue = map(bluePotValue, 0, 1023, 0, 255);
whitePWMValue = map(whitePotValue, 0, 1023, 0, 255);

//jeśli jest dzień to wysyłam sygnały PWM do driverów
if(dzien)
{
analogWrite(9, bluePWMValue);
analogWrite(10, whitePWMValue);
}
//jeśli jest noc na kanal biały wysylam wartość 0 - nie swieci
// i na kanał niebieski wysylam wartość 10 czyli słabe swiatło symulujące księżycc
else
{
analogWrite(9, 10);
analogWrite(10, 0);
}
delay(100);
======





Brak komentarzy: