Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Kategoria: Akumulatorki / Baterie / Ładowarki

Dekoracja świąteczna, szopka z jeżdżącą gwiazdą i Raspberry

Lechito 22 Sty 2017 20:17
  • Witam serdecznie.

    Projekt, który zostanie opisany powstał tuż przed świętami, składał on się z dwóch etapów:
    1. Dekoracja led przedstawiająca Zwiastowanie
    2. Dekoracja led przedstawiająca Szopkę Bożonarodzeniową z gwiazdą, która porusza się nad szopką.
    Dekoracja świąteczna, szopka z jeżdżącą gwiazdą i Raspberry

    Wykonanie obu ozdób jest takie samo, użyto do tego siatki zbrojeniowej do wylewek (do kupienia w każdym składzie budowlanym) pasków led w sylikonie, trochę przewodów i taśmy klejącej.

    Obie dekoracje wiszą na dwóch hakach które są umieszczone na stałe w elewacji.

    Dekoracja Zwiastowania została powieszona w ostatnim tygodniu adwentu (tydzień przed wigilią), w wigilię dekoracja została zmieniona na tą która przedstawia szopkę. (w ciągu roku dekoracje będą zdjęte i schowane w piwnicy)

    Cały układ szopki i gwiazdy, program, sterowanie i mechanika (jeśli to mechaniką można nazwać) został przygotowany właśnie w tym ostatnim tygodniu adwentu, scena Zwiastowania to było jedno sobotnie popołudnie.
    Układ gwiazdy jest prosty, ze sklejki wodoodpornej zostały wycięte dwa prostokąty do których przekręcono wieszaki (takie jak do mebli), wywiercono otwory na dwa pręty gwintowane M8, które spełniają rolę szyny. Po prętach jeździ wózek, który został wydrukowany na drukarce 3D, jego kółka również, następnie wózek został złożony wraz z łożyskami (miejsca przygotowane w korpusie wózka) przy użyciu dociętych na długość prętów gwintowanych M8, podkładek i nakrętek samo-kontrujących. Następnie do wózka został wydrukowany uchwyt na silniczek 5V wraz z przekładnią, przeniesienie napędu z reduktora silnika na kółka odbywa sie przy pomocy paska klinowego z napędu cd. Gwiazdka została wykonana na kawałku panelu podłogowego, który został wcześniej wylakierowany w celu zwiększania jego wodoodporności następnie na to naklejono paski led, polutowano i całość zabezpieczono taśmą klejącą bezbarwną. Na kawałkach sklejki, które tworzą wieszak dla szyny zamocowano dwie krańcówki, wózek dojeżdża do krańcówki i wtedy zmienia swój kierunek jazdy, dodatkowo gwiazdka świeci w czasie przejazdu w jedną stronę, w drugą gaśnie.
    Cała elektronika sterująca opiera się o Raspberry Pi B i module 8 przekaźników.
    Dlaczego Raspi? Bo leżało i się kurzyło, dodatkowo zależało mi na możliwości sterowania ta dekoracją przez internet (no wiecie, pojedziecie do rodziny czy coś która mieszka te kilka km od domu i trzeba zapalić światełka, więc telefon, wpisuję adres, loguję się, dwa kliknięcia i świeci i jeździ, a do pełni szczęścia brakuje melodyjki). Dodatkowo myślałem tez o sterowaniu pozostałym oświetleniem, które jest założone na balkonach, lecz jest ono podłączane w innym miejscu domu (dom dwu poziomowy) i odpuściłem już prowadzenia kabli z góry na dół.
    Program który zarządza całością napisany jest w języku Python, a strona internetowa do sterowania z poziomu WWW w języku PHP. Całość pisana była bardzo szybko, aby jak najszybciej ozdoby zaczęły działać, więc do profesjonalizmu jej trochę brakuje. Program sprawdza czy któraś z krańcówek została wzbudzona, jeżeli tak, zmienia stany na pinach GPIO RasPi podłączonych do modułu przekaźnika na którym został wykonany mostek H. W uproszczeniu, po wzbudzeniu, wózek z gwiazdką zmienia kierunek jazdy (przy czym jadąc w prawo gwiazdka świeci, a w lewo nie świeci). Program również cyklicznie sprawdza zawartość 3 plików tekstowych które zawierają cyfrę 0 lub 1. W zależności od zawartości tych plików włączana lub wyłączana jest gwiazdka, szopka oraz zasilacz ATX z którego to całość jest zasilana. Zawartość tych plików zmienia właśnie strona WWW. Jest tam bardzo prosty mechanizm logowania (mimo iż dostęp do strony jest tylko z sieci LAN lub VPN, to jedno zabezpieczenie więcej nie zaszkodzi), a po zalogowaniu mamy możliwość sterowania poszczególnymi elementami. Kliknięcie w dany odnośnik powoduje zmianę zawartości pliku, aby po cyklicznym sprawdzeniu, program mógł odpowiednio zareagować.

    Źródłem zasilania dla części wykonawczej jest zasilacz ATX a Raspberry jest zasilane z ładowarki do telefonu USB o wydajności 1A.
    Rozpiska przekaźników:
    przekaźnik 1 i 2 działa jak mostek h, zmienia on kierunek jazdy wózka
    przekaźnik 3 uruchamia zasilanie wózka
    przekaźnik 4 steruje świeceniem gwiazdy
    przekaźnik 5 włącza i wyłącza źródło zasilania (ATX, przewód zielony i czarny w zasilaczu)
    przekaźnik 6 włącza i wyłącza cała szopkę (z możliwością pozostawienia samej świecącej gwiazdki)

    Poniżej program na raspberry:

    Code:
    import time
    
    import RPi.GPIO as GPIO
    import multiprocessing
    import linecache

    def GPIO_init():
      GPIO.setmode(GPIO.BOARD)
      GPIO.setwarnings(False)
      GPIO.setup(8, GPIO.OUT)
      GPIO.setup(10, GPIO.OUT)
      GPIO.setup(12, GPIO.OUT)
      GPIO.setup(16, GPIO.OUT)
      GPIO.setup(18, GPIO.OUT)
      GPIO.setup(22, GPIO.OUT)
      GPIO.setup(24, GPIO.OUT)
      GPIO.setup(26, GPIO.OUT)
      GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
      GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

    def sprawdzanie_pliku():
      global tekst
      plik = open('/var/www/html/stan.txt')
      tekst = plik.read()
      plik.close()
      time.sleep(1)

    def sprawdzanie_pliku2():
      global tekst2
      plik = open('/var/www/html/stan2.txt')
      tekst2 = plik.read()
      plik.close()
      time.sleep(1)

    def sprawdzanie_pliku3():
      global tekst3
      plik = open('/var/www/html/stan3.txt')
      tekst3 = plik.read()
      plik.close()
      time.sleep(1)

    if __name__ == '__main__':

      sprawdzanie_pliku()
      sprawdzanie_pliku2()
      sprawdzanie_pliku3()
      GPIO_init()
      print ("lol")
      GPIO.output(8, 0)
      GPIO.output(10, 0)
      GPIO.output(12, 0)
      GPIO.output(16, 0)
     

      GPIO.output(12, 1)

      GPIO.output(26, 1)
      GPIO.output(24, 1)

      while(1):
        if(tekst == "1\n"):


          k1 = GPIO.input(21)
          k2 = GPIO.input(23)

          if (k1 == True):
            GPIO.output(8, 1)
            GPIO.output(10, 1)
            GPIO.output(16, 1)
            sprawdzanie_pliku()
            sprawdzanie_pliku2()
            sprawdzanie_pliku3()
          if (k2 == True):
            GPIO.output(8, 0)
            GPIO.output(10, 0)
            GPIO.output(16, 0)
            sprawdzanie_pliku()
            sprawdzanie_pliku2()
            sprawdzanie_pliku3()

          time.sleep(0.05)
          if (tekst2 == "0\n"):
            GPIO.output(24, 0)
          else:
            GPIO.output(24, 1)
          if (tekst3 == "0\n"):
            GPIO.output(26, 0)
          else:
            GPIO.output(26, 1)

        else:
          GPIO.output(12, 0)
          GPIO.output(16, 0)
          sprawdzanie_pliku()
          sprawdzanie_pliku2()
          sprawdzanie_pliku3()
          time.sleep(0.5)

          if (tekst == "1\n"):
            GPIO.output(12, 1)
          if (tekst2 == "1\n"):
            GPIO.output(24, 1)
          else:
            GPIO.output(24, 0)
          if (tekst3 == "0\n"):
            GPIO.output(26, 0)
          else:
            GPIO.output(26, 1)



    Dekoracja świąteczna, szopka z jeżdżącą gwiazdą i Raspberry Dekoracja świąteczna, szopka z jeżdżącą gwiazdą i Raspberry Dekoracja świąteczna, szopka z jeżdżącą gwiazdą i Raspberry Dekoracja świąteczna, szopka z jeżdżącą gwiazdą i Raspberry Dekoracja świąteczna, szopka z jeżdżącą gwiazdą i Raspberry Dekoracja świąteczna, szopka z jeżdżącą gwiazdą i Raspberry Dekoracja świąteczna, szopka z jeżdżącą gwiazdą i Raspberry Dekoracja świąteczna, szopka z jeżdżącą gwiazdą i Raspberry Dekoracja świąteczna, szopka z jeżdżącą gwiazdą i Raspberry

    Dekoracja świąteczna, szopka z jeżdżącą gwiazdą i Raspberry Dekoracja świąteczna, szopka z jeżdżącą gwiazdą i Raspberry


    Link


    Link