Spisu treści:

TfCD - Plus: 7 kroków
TfCD - Plus: 7 kroków

Wideo: TfCD - Plus: 7 kroków

Wideo: TfCD - Plus: 7 kroków
Wideo: TFCD Arduino face tracking device 2024, Lipiec
Anonim
Image
Image
Składniki
Składniki

Plus to minimalistyczne inteligentne światło, które nie tylko powiadamia ludzi o warunkach pogodowych, ale także tworzy przyjemne wrażenia dla użytkowników dzięki zmianom barwy światła wprowadzanym przez obracanie plusa. Jej kształt daje możliwość łączenia kilku modułów plus lub stworzenia ogromnej lampy z mnóstwem plusów umieszczonych przez znajomych. Ten projekt oświetleniowy jest częścią kursu Advanced Concept Design (ACD) na uniwersytecie TU Delft, a technologia została wdrożona przy użyciu praktycznego TfCD jako źródła inspiracji.

Krok 1: Składniki

Składniki
Składniki
Składniki
Składniki

1 Raspberry pi zero w

1 akcelerometr z rowkiem Adxl345

4 diody LED Ws2812b

1 tablica prototypowa

Obudowy drukowane 3D i wycinane laserowo

Krok 2: Sprzęt

Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy

diody LED

Diody LED Neopixel mają 4 piny o nazwach: +5V, GND, Data In i Data out.

  1. Pin 4 raspberry pi jest podłączony do +5V wszystkich diod LED
  2. Pin 6 raspberry pi jest podłączony do GND wszystkich diod LED
  3. Data W pin pierwszej diody jest podłączony do pinu 12 w raspberry pi.
  4. Pin wyjścia danych pierwszej diody LED jest połączony z wejściem danych drugiej i tak dalej.

Proszę spojrzeć na schemat połączeń, aby lepiej zrozumieć.

Akcelerometr

Akcelerometr posiada 4 piny o nazwach: VCC, GND, SDA i SCL.

  1. Pin 1 raspberry pi jest podłączony do VCC.
  2. Pin 3 Raspberry Pi jest podłączony do SCL.
  3. Pin 5 Raspberry Pi jest podłączony do SDA.
  4. Pin 9 raspberry pi jest podłączony do GND.

Budować

  1. Dla wygody diody LED można przylutować do płytki prototypowej. Zdecydowaliśmy się wyciąć deskę na kształt plusa, aby dobrze wpasowała się w zaprojektowane w 3D etui.
  2. Po przylutowaniu diod LED na płycie lutujemy przewody połączeniowe, aby wykonać połączenia między złączem nagłówka 0,1 "a diodami LED. Złącze nagłówka służy do odłączenia raspberry pi i ponownego użycia go w przyszłym projekcie.

Krok 3: Oprogramowanie

Oprogramowanie
Oprogramowanie

Obraz systemu operacyjnego Raspberry Pi

Najpierw musimy uruchomić i uruchomić Raspberry Pi. W tym celu wykonujemy następujące kroki:

  1. Pobierz najnowszą wersję Raspbian stąd. Możesz pobrać go bezpośrednio lub przez torrenty. Będziesz potrzebował programu do zapisywania obrazów, aby zapisać pobrany system operacyjny na kartę SD (karta micro SD w przypadku modelu Raspberry Pi B+ i Raspberry Pi Zero).
  2. Więc pobierz "win32 disk imager" stąd. Włóż kartę SD do laptopa/komputera i uruchom program do zapisywania obrazów. Po otwarciu przeglądaj i wybierz pobrany plik obrazu Raspbian. Wybierz właściwe urządzenie, czyli dysk reprezentujący kartę SD. Jeśli wybrany dysk (lub urządzenie) jest inny niż karta SD, drugi wybrany dysk zostanie uszkodzony. Więc uważaj.
  3. Następnie kliknij przycisk „Napisz” na dole. Jako przykład zobacz obrazek poniżej, gdzie napęd karty SD (lub micro SD) jest reprezentowany przez literę „G:\" System operacyjny jest teraz gotowy do normalnego użytkowania. Jednak w tym samouczku zamierzamy używać Raspberry Pi w trybie bezgłowym. Oznacza to, że bez podłączonego do niego fizycznego monitora i klawiatury!
  4. Po wypaleniu karty SD nie wyjmuj jej z komputera! Użyj edytora tekstu, aby otworzyć plik config.txt znajdujący się na karcie SD. Zejdź na dół i dodaj dtoverlay=dwc2 jako ostatnią linię:
  5. Zapisz plik config.txt jako zwykły tekst, a następnie otwórz cmdline.txt Po rootwait (ostatnie słowo w pierwszym wierszu) dodaj spację, a następnie modules-load=dwc2, g_ether.
  6. Teraz wyjmij kartę SD z komputera i włóż ją do Raspberry Pi i podłącz do komputera za pomocą kabla USB. Po uruchomieniu systemu operacyjnego powinno zostać wykryte nowe urządzenie gadżetu Ethernet.
  7. Możesz użyć ssh [email protected], aby połączyć się z płytą i kontrolować ją zdalnie. Aby uzyskać bardziej szczegółowe instrukcje dotyczące działania bezgłowego, przejdź tutaj. Sterownik Neopixel

Biblioteka rpi_ws281x jest kluczem, który umożliwia korzystanie z NeoPixels z Raspberry Pi.

Najpierw musimy zainstalować narzędzia potrzebne do skompilowania biblioteki. W swoim uruchomieniu Raspberry Pi: sudo apt-get update && sudo apt-get install build-essential python-dev git scons swig Teraz uruchom te polecenia, aby pobrać i skompilować bibliotekę:

git clone https://github.com/jgarff/rpi_ws281x.git && cd rpi_ws281x && scons Na koniec, po pomyślnym skompilowaniu biblioteki, możemy zainstalować ją dla Pythona za pomocą:

cd python && sudo python setup.py install Teraz pojawia się kod Pythona, który steruje diodami LED. Kod jest dość prosty z kilkoma komentarzami, które mogą ci pomóc. z importu neopixel * # Konfiguracje NeoPixel LED_PIN = 18 # Pin GPIO Raspberry Pi podłączony do pikseli LED_BRIGHTNESS = 255 # Ustaw na 0 dla najciemniejszego i 255 dla najjaśniejszego LED_COUNT = 4 # Liczba pasków LED pikseli = Adafruit_NeoPixel(LED_COUNT, LED_PIN, 800000, 5, False, LED_BRIGHTNESS, 0, ws. WS2811_STRIP_GRB) # Zainicjuj bibliotekę strip.begin() strip.setPixelColor(0, Color(255, 255, 255)) strip.show()

Sterownik ADXL345

Wybrany przez nas czujnik przyspieszenia ma interfejs I2C do komunikacji ze światem zewnętrznym. Na szczęście dla nas Raspberry Pi ma również interfejs I2C. Musimy tylko umożliwić jej użycie w naszym własnym kodzie.

Wywołaj narzędzie konfiguracyjne Raspbian przy użyciu sudo raspi-config. Po uruchomieniu przejdź do Opcje interfejsu, Opcje zaawansowane, a następnie włącz I2C. Zainstaluj odpowiednie moduły Pythona, abyśmy mogli korzystać z interfejsu I2C w Pythonie:

sudo apt-get install python-smbus i2c-tools Poniższy kod Pythona pozwala nam komunikować się z czujnikiem akcelerometru i odczytywać jego wartości rejestrów do własnych celów. import smbus import struct # Konfiguracje akcelerometru bus = smbus. SMBus(1) address = 0x53 gain = 3.9e-3 bus.write_byte_data(address, 45, 0x00) # Przejdź do trybu gotowości bus.write_byte_data(address, 44, 0x06) # Przepustowość 6,5Hz bus.write_byte_data(adres, 45, 0x08) # Przejdź do trybu pomiaru # Odczytaj dane z czujnika buf = bus.read_i2c_block_data(adres, 50, 6) # Rozpakuj dane z int16_t do python integer data = struct.unpack_from (">hhh", buffer(tablica bajtów(buf)), 0)

x = float(dane[0]) * zysk

y = float(dane[1]) * zysk

z = float(dane [2]) * zysk

Detektor ruchu

Jedną z cech światła, które tworzymy, jest to, że może wykrywać ruch (lub jego brak), aby przejść do trybu interaktywnego (gdzie światło zmienia się w zależności od obrotu) i trybu prognozy pogody (gdzie światło zmienia się w zależności od prognozy pogody na dzisiaj). Poniższy kod wykorzystuje poprzednią funkcję do odczytywania wartości przyspieszenia dla 3 osi i ostrzegania nas o ruchu.

przyspieszenie = pobierzPrzyspieszenie()

dx = abs(prevAccel[0] - accel[0])

dy = abs(prevAccel[1] - accel[1])

dz = abs(prevAccel[2] - accel[2])

if dx > moveThreshold lub dy To > moveThreshold lub dz > moveThreshold:

drukuj 'przeniesiony'

przeniesiony = Prawda

w przeciwnym razie:

przeniesiony = Fałsz

Pogoda API

Aby otrzymać prognozę pogody, możemy skorzystać z Yahoo Weather. Wiąże się to z rozmawianiem z interfejsem API Yahoo Weather Rest, który może być dość złożony. Na szczęście dla nas trudna część jest już załatwiona w postaci modułu weather-api dla pytona.

  1. Najpierw musimy zainstalować ten moduł za pomocą: sudo apt install python-pip && sudo pip install weather-api
  2. Więcej informacji na temat tego modułu można znaleźć na stronie autora.

Po zainstalowaniu poniższy kod pobiera warunki pogodowe na ten moment

z importu pogody Pogoda Pogoda = Pogoda()

lokalizacja = pogoda.lookup_by_location('dublin')

warunek = lokalizacja.warunek()

print(warunek.tekst())

Kładąc wszystko razem

Cały kod projektu, który łączy wszystkie powyższe elementy można znaleźć tutaj.

Automatyczne uruchamianie skryptu Pythona podczas uruchamiania

Aby móc umieścić raspberry pi w pudełku i uruchamiać nasz kod za każdym razem, gdy podłączamy go do zasilania, musimy upewnić się, że kod jest uruchamiany automatycznie podczas rozruchu. W tym celu używamy narzędzia o nazwie cron.

  1. Najpierw wywołaj narzędzie cron za pomocą: sudo crontab -e
  2. Poprzednie kroki otworzą plik konfiguracyjny, w którym dodamy następujący wiersz:

    @reboot pythona /home/pi/light.py &

Krok 4: Modelowanie i druk 3D

Modelowanie i druk 3D
Modelowanie i druk 3D
Modelowanie i druk 3D
Modelowanie i druk 3D

Model 3D Plusa został wykonany w Solidworks i zapisany w formacie. Stl. Następnie w celu wydrukowania modelu 3D plik. Stl został zaimportowany do oprogramowania Cura. Produkcja każdej strony plusa trwała 2:30 godziny; więc wydrukowanie każdego pełnego plusa zajęło około 5 godzin. A w przypadku przezroczystych boków pleksi została wycięta laserowo.

Krok 5: Montaż

montaż
montaż
montaż
montaż
montaż
montaż
montaż
montaż

Mając część wydrukowaną w 3D, elektronikę i oprogramowanie pod ręką, możemy w końcu zmontować produkt końcowy.

  1. Drukowane w 3D płyty górne i dolne okazały się bardziej przezroczyste, niż oczekiwano. Warstwa folii aluminiowej rozwiązała problem wycieku światła.
  2. Jednak te arkusze są przewodzące i mogą powodować zwarcia w naszym niezabezpieczonym obwodzie. Więc kolejna warstwa białej tektury jest przyklejona na wierzchu.
  3. Rozproszone segmenty z pleksiglasu są przyklejone do jednej z bocznych płyt.
  4. W jednym z bocznych paneli wydrukowanych w 3D wywiercony jest otwór. Dzieje się tak, abyśmy mogli przejść przez przewód zasilający.
  5. Po przełożeniu przewodu zasilającego przez otwór przylutowujemy go do naszej płytki prototypowej.
  6. Podłączamy czujnik do raspberry pi, a następnie podłączamy go do złącza.
  7. Łączymy 2 sztuki razem, aby otrzymać nasz produkt końcowy.
  8. Opcjonalnie można skleić 2 sztuki, aby uzyskać trwalsze połączenie. Pamiętaj jednak, że może być trudno dostać się do pudełka po jego zaklejeniu, jeśli chcesz później zmienić kod.

Zalecana: