Interaktywny stolik kawowy

Interaktywny stolik kawowy

Witam! :D

W tym artykule, przedstawię skromny stolik, który reagować będzie na bodźce zewnętrzne.

Od razu muszę wspomnieć, że nieco pomysłów zaczerpnąłem z YouTube’owego kanału Łukasza Bazarnika.

Stolik reaguje na przeciążenia i wibracje otoczenia (dodadkowe informacje w dalszej części artykułu). Odczytane informacje wizualizuje w postaci fal na wyświetlaczu. Konstrukcja zbudowana jest ze:

  • Stolika
  • Wyświetlacza Matrix 10 x 10
  • Płytki z mikrokontrolerem
  • Sterownika wyświetlacza
  • Szklanego “blatu”

Stolik

Użyłem tutaj stolika z IKEI – model LACK.

http://www.ikea.com/pl/pl/catalog/products/80104268/#/20011408

Jest to tani (29,99zł), ale solidny stolik, i jak okaże się w dalszej części artykułu, jest wręcz idealny do naszej modyfikacji. Wybrałem czarny, ponieważ ładnie komponował się będzie z białymi diodami i matowym szklanym blatem.


Wyświetlacz

Wyświetlacz to konstrukcja typu Matrix. Rozdzielczość wynosi 10×10.

Wykonałem go z białych diod LED 5mm, które na ebay’u można kupić za 2$ (z wysyłką) za 100 szt. A przecież dokładnie tyle potrzebujemy :D

http://www.ebay.com/itm/400763365138?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT


Płytka z mikrokontrolerem

Użyłem popularnego układu AtMega328, który świetnie nadaje się do tego projektu. Można go łatwo zaprogramować np. w Arduino IDE i zaimplementować w konstrukcji.

http://www.ebay.com/itm/NEW-ATmega328P-PU-DIP-28-Microcontroller-IC-with-Arduino-UNO-Bootloader-ATMEL-/301610939079?pt=LH_DefaultDomain_0&hash=item463969b2c7

U mnie mikrokontroler taktowany jest wyłącznie przez jego wbudowany kwarc 8MHz. Jeśli jednak z jakichś przyczyn chcemy dać kwarc, nie ma z tym najmniejszego problemu, układ powinien działać tak samo.

Przydadzą nam się także złącza ISP (pod programator), listwy GoldPin, podstawka pod mikrokontroler, oraz jakieś wielo-pinowe złącza, jakie akurat mamy pod ręką. Budując tą płytkę, starałem się zrobić wszystko tak, aby można ją było łatwo odłączyć od całej reszty.


Sterownik wyświetlacza

Konstrukcja matrix zapewnia nam oszczędność wyprowadzeń. Cały wyświetlacz łączymy tylko 20 przewodami (10 wierszy i 10 kolumn).

Jako że AtMega328 posiada 12 pinów cyfrowych, to brakujące 8 podłączyłem przez expander PCF8574, który również nie jest zbyt drogi. http://www.ebay.com/itm/221644711516?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Skoro w jednej linii/kolumnie mamy 10 diod, a każda pobiera max 20mA, to przez wiersz/kolumnę może płynąć prąd max 200mA. Za ekspanderem i mikrokontrolerem dałem tranzystory 2N3904.  Ich parametry są idealne do tego projektu. I co także ważne, 50 szt. kupimy już za 1$.  http://www.ebay.com/itm/171442769248?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT


Szklany “blat”

Aby wszystko wyglądało ładnie, szkło musi być matowe. Stolik ma wymiary 55×55 cm, i taka też powinna być szyba. Grubość mojej szyby to 6mm, ale można także kupić cieńszą (tańszą) lub grubszą (“do zadań specjalnych”).

Ważne jest też to, aby zaokrąglić krawędzie. Stolik jest wtedy ładniejszy i bezpieczniejszy.

Taką gotową szybę można zamówić u każdego szklarza. Jej koszt to 40-70zł.


Ok. Wszystkie główne elementy mamy omówione. Teraz przejdźmy do kompletnej listy.

Duże:

  • Stolik – 30zł
  • Szyba – 40-70zł

Średnie:

  • Mikrokontroler AtMega328 – 2$
  • Żyroskop/akcelerometr – 3$
  • Expander PCF8574 – 1$
  • 100 diod LED – 2$
  • płytki PCB – 1$ http://www.ebay.com/itm/10pcs-DIY-Prototype-Paper-PCB-Universal-Board-5-7-cm-5-7-cm-/181617107477?hash=item2a49392215
  • Tranzystory – 1$
  • Listewki – 5-10zł

Drobnica:

  • Podstawka pod mikrokontroler – 1zł
  • 4 kondensatory 100nF – 1zł
  • Kondensator 470uF – 1zł
  • Przewody – 10zł
  • Rezystory – 1zł: 1x – 200Ohm, 21x – 10k, 10x – 47Ohm
  • Złącze ISP (programator) – 1zł
  • Złącza goldpin – 2zł
  • Wtyk USB – 2zł
  • Pozostałe złącza – 0-5zł
  • 2x dioda LED 3mm – 1zł

 

Opcjonalne / Narzędzia:

  • Papier techniczny
  • Klej do drewna / uniwersalny
  • Taśma izolacyjna
  • Lutownica
  • Spoiwo lutownicze
  • Klejarka i klej do klejenia na gorąco
  • Wiertarka
  • Wiertło 5mm
  • nóż
  • Papier ścierny

Duże – 70-100zł

Średnie – 40zł

Drobnica – 20zł


Część elementów, z wiadomych przyczyn pochodzi z Botland’a, resztę zakupiłem na ebay’u.

WP_001668


Dobra, mamy już dooość obszerny spis potrzebnych rzeczy. Pora zabrać się do działania.

Prace zaczniemy od wycięcia otworu w stoliku.

Przy wycinaniu, radzę zostawić sobie min. 5cm marginesu, aby nie zahaczać o klocki, w które wkręcane są nogi stolika.

Do wycinania polecam używać ostrego noża do tapet, lub ewentualnie noża ze scyzoryka / multitool’a. Najlepiej jest wycinać od poziomicy. Niestety nie mam zdjęć z poszczególnych etapów wycinania.

Stolik wypełniony jest tekturą, w układzie “plaster miodu”, co baaardzo ułatwi nam zadanie. Po nacięciu rowków w okleinie, należy się upewnić, że razem z nią przecięliśmy także papier pod spodem. Jest to bardzo ważne, ponieważ nie możemy uszkodzić papieru w marginesach. Następnie bierzemy metalową linijkę, lub długi nóż kuchenny, wpychamy go pod okleinę, i delikatnie odcinamy ją od papieru.

WP_001611

Staramy się nie naruszyć wycinanej części okleiny, ponieważ będziemy z niej wykonywać wyświetlacz. Kiedy to zrobimy, wystarczy usunąć papier spod wyciętej części i gotowe. :)


Mamy już wycięty otwór, więc pora zabrać się za wyświetlacz.

Na początek bierzemy naszą wyciętą płytę, i wyrysowujemy na niej siatkę. Nie będę podawał dokładnych wymiarów, bo zapewne u każdego wyjdzie to trochę inaczej.

Po odrysowaniu siatki, w miejscach przecięcia się linii, wiercimy otwory 5mm. Oczywiście przed wierceniem warto sprawdzić, czy na pewno wyjdzie nam 10×10. Ja wierciłem od strony pomalowanej, aby wyglądała możliwie jak najładniej, ale zalecam, aby od spodu przejechać parę razy papierem ściernym, wtedy diody będą lepiej umocowane.

WP_001613

Mamy już wywiercone otwory. Pora zabrać się za montowanie diod. Anody wyginamy w bok, a katody w dół (albo odwritnie ;) ). Wystarczy je tylko zamontować.

WP_001614

WP_001617

Jeżeli diody trzymają się w miarę solidnie, lepiej najpierw wszystko polutować. Jeśli jednak diody wypadają, lepiej je najpierw przykleić. Ja najpierw lutowałem. Oczywiście najpierw trzeba zaopatrzyć się w kabelki. Łącznie będziemy potrzebować 200 krótkich i 20 dłuższych, do podłączenia pod sterownik.

WP_001620

WP_001621

WP_001623

Po polutowaniu wszystkich wierszy, pora zabrać się za kolumny.

WP_001626

WP_001627

Lutowanie trwało ok. 2 godz. ale efekt jest zadowalający. Teraz kleimy diody i lutujemy wyprowadzenia do sterowników. Będą one znajdować się pod wyświetlaczem, więc lepiej, aby nie porobiły się żadne zwarcia. Wyciąłem kilka odcinków cienkich listewek i wkleiłem je do wyświetlacza.

WP_001637

Z grubego papieru (podobnego do plastra wykorzystanego w stoliku) wyciąłem arkusz odpowiadający rozmiarom wyświetlacza i go przykleiłem, tworząc w ten sposób obudowę gotową do zamontowania na niej płytek sterujących.


Skoro mamy wyświetlacz, pora zabrać się za elektronikę. Zaczniemy ją od płytki z mikrokontrolerem. Niestety nie jestem najlepszy w rysowaniu schematów, ale myślę, że wiedząc co płytka ma robić, schemat nie jest nam do niczego potrzebny.

Jak wspominałem, płytka ma być w pełni odłączana od całości. Stąd też znajduje się tam aż 5 złącz, których dobór zależy tak naprawdę od nas.

 

 

MainBoard Schemat

 

Jeśli chcemy, równolegle z zasilaniem możemy dodać jeszcze kondensator 100-1000uF, aby napięcie było lepiej filtrowane.

Odnośnie diod: pierwsza sygnalizuje że płytka jest zasilana, natomiast druga, podłączona pod SCK (D13) informuje np. o wgrywaniu programu. Nie było sensu dawać do każdej osobnego rezystora, więc jest jeden – 200Ohm.

Rezystor podciągający RESET do 5V, ma rezystancję 10k. Kondensator to 100nF.

U mnie wygląda to tak: microcontroller board


 

Ok. Przejdźmy do układów wzmacniających. W ich skład wchodzą dwie płytki, jedna do obsługi kolumn (katod) wyposarzona w ekspander i druga do obsługi wierszy (anod), już bez ekspandera.

AnodeBoard Schemat

 

Pierwszy schemat przedstawia układ sterujący kolumnami (katodami). Podłączenie jest stosunkowo proste. I2C do I2C płytki z mikrokontrolerem. Kolektory tranzystorów (nie są do niczego podłączone) łączymy z poszczególnymi kolumnami wyświetlacza. Rezystory wychodzące od baz tranzystorów to rezystory 10k.

Na środku schematu, znajdują się dwa tranzystory, których nie udało się już “upchnąć” do ekspandera. Rezystory wychodzące od baz tych tranzystorów, należy podłączyć do mikrokontrolera.

Teraz omówmy płytkę do sterowania wierszami (anodami).

Tutaj sprawa była nieco prostsza, więc znalazło się także miejsce na złącze oraz wychodzące od niego wyprowadzenia do dwóch niezagospodarowanych tranzystorów poprzedniej płytki (Cat1/2).

CathodeBoard Schemat

 

Podłączenie w tym przypadku jest jeszcze prostsze niż w poprzedniej płytce. Tutaj, wszystko mamy dane jak na tacy i łatwo możemy się domyślić, że niepodłączone rezystory (47Ohm) łączymy z wierszami (anodami).

Mam świadomość tego, że ten układ nie jest wykonany do końca dobrze. Brak rezystorów przy diodach w wyświetlaczu spowodował, że trzeba go zasilać z 3,3V. Niestety widocznie tranzystory nie lubią tak niskich napięć, w wyniku czego, spadek napięcia na tranzystorach był tak duży, że diody nie świeciły prawie wcale. Byłem więc zmuszony do używania napięcia 5V, przepuszczonego przez rezystory. Wlutowywanie rezystorów do każdej diody z osobna nie wchodziło w grę, więc zdecydowałem się na trudny krok – zamontować je przy wyprowadzeniach wierszy. Specjalnie dobrałem najmniejsze możliwe, czyli 47Ohm. Efekt jest taki, że kiedy świeci się tylko jedna dioda w danym wierszu, dostaje ok. 3,7V, a więc napięcie jeszcze w normie. Kiedy jednak świecą się wszystkie diody w wierszu, świecą nieco słabiej. Ja dostrzegam tą różnicę, bo o niej wiem, ale ku mojemu zaskoczeniu, koledzy spytani czy widzą coś dziwnego na wyświetlaczu, stwierdzili, że nie. Uznałem więc, że mogę tak zostawić. Jeśli jednak nam to przeszkadza, możemy zamienić rezystory na pojedyncze stabilizatory małej mocy (200mA).


Wszystkie płytki omówione. Jeszcze schemat przedstawiający ich połączenie w jedną całość.

Boards_bb

Wyszło tak:

WP_001648

Mam nadzienie że hardware przedstawiłem w miarę zrozumiale. Oczywiście trzeba jeszcze napisać program i wgrać go do mikrokontrolera. Opiszę cały proces, ponieważ wiem, że dużo osób ma problemy z operacjami na pojedynczym mikrokontrolerze.

Zacznijmy od skomunikowania mikrokontrolera z komputerem.

Do tego celu posłuży nam programator USB-ASP, który powinien być na wyposażeniu każdego elektronika mającego styczność z mikrokontrolerami itp.

Jeśli jednak go nie posiadamy, można go kupić już za 2$: http://www.ebay.com/itm/USBASP-USBISP-AVR-Programmer-Adapter-10-Pin-Cable-USB-ATMEGA8-ATMEGA128-Arduino-/310506909410?pt=LH_DefaultDomain_0&hash=item484ba76ee2

Taki programator przychodzi wraz z tasiemką, która pozwoli nam od razu podłączyć programator do płytki głównej. Do programatora trzeba jeszcze zainstalować sterowniki, które dostępne są w internecie i łatwe do instalacji.

Teraz otwieramy środowisko Arduino IDE, bo to w nim będziemy programować. Na razie nie możemy jeszcze wgrać programu, ponieważ na liście płytek do wyboru nie ma pojedynczej AtMegi328. Musimy ją dodać, wchodząc w folder w którym zainstalowaliśmy Arduino, a następnie w hardware/arduino/avr/ i edytujemy boards.txt. Zjeżdżamy na sam koniec i wklejamy ten fragment:

Zapisujemy i zamykamy. Od teraz w naszym arduino IDE będziemy mogli wybrać płytkę ATmega328 on a breadboard.

Desktop 2015-05-02 12-56-39-382

Nareszcie możemy wgrać program. Podłączamy płytkę główną do programatora, programator do komputera, otwieramy Arduino IDE i wybieramy płytkę AtMega328 on a breadboard oraz programator USBasp. Teraz musimy wejść w narzędzia i wypalić bootloader. Jeśli dioda miga, wszystko powinno być dobrze. Dla pewności, wgrajmy program przykładowy /przykłady/basics/blink. Oczywiście używamy do tego celu opcji “Załaduj za pomocą programatora” Jeśli dioda miga, wszystko działa idealnie.

Jeśli nie mieliśmy nigdy styczności z arduino, musimy wejść w plik > przykłady i odnaleźć tam folder PCF8574. Jeśli się tam znajduje, możemy wgrać program. W razie problemów z wgraniem programu, piszcie w komentarzach ;).

Jest to dopiero wersja beta programu, ale zobowiązuję się do aktualizowania wpisu o kolejne, lepsze jego wersje. Pierwsze co planuję zrobić, (poza usprawnieniem pracy żyroskopu oczywiście) to dodanie sterowania za pomocą pilota IR. W końcy zawsze znajdą się jakieś niezagospodarowane przyciski np. na pilocie od amplitunera :).

Jedyne co trzeba pozmieniać, to numerację pinów. Ja najpierw wszystko podłączyłem, posprawdzałem które piny odpowiadają której kolumnie i wprowadziłem to do programu. Trzeba się trochę namęczyć, ale chyba lepsze to, niż męczenie się z łączeniem odpowiednich pinów w hardware’rze. Aby posprawdzać piny, wystarczy włączyć wszystkie piny na ekspanderze i jeden pin z mikrokontrolera. Powinien zaświecić się jeden rząd diod. Wystarczy zanotować który i sprawdzać dalej ;) .

Jeśli stolik nie chce działać, możliwe, że wasz ekspander ma inne adresowanie. Mój ma to najczęściej stosowane, więc kiedy połączę wszystkie 3 piny adresowe z VCC, ustawia mi się adres 0x27. Niektóre ekspandery mają jednak inne adresowanie. Wtedy należy taki ekspander wpiąć do arduino z możliwością otwarcia monitora portu szeregowego i sprawdzić adresowanie programem I2C scanner (dostępny w sieci). Jeśli nadal macie problemy z ekspanderem, zapraszam na kanał elektro przewodnika: https://www.youtube.com/watch?v=JNmVREucfyc

Program wgrany i wszystko powinno działać. Po włączeniu mikrokontrolera do zasilania, program czeka 5sek. a następnie rozpoczyna kalibrację trwającą niecałą minutę. Podczas kalibracji zapamiętuje sobie “martwą strefę” i wszystko co będzie większe od największej zapamiętanej wartości, lub mniejsze od najmniejszej, będzie powodowało wyświetlenie fali na ekranie. Podczas kalibracji, możemy dostosować stolik. Można np. lekko w niego stuknąć, wtedy będzie reagował tylko na mocniejsze uderzenia, a słabsze zignoruje. Musimy też pamiętać, że akcelerometr nie jest idealny i jeżeli kalibracja przebiegnie bez żadnych wstrząsów z otoczenia, stolik może często włączać się samoczynnie. Wykorzystany przezemnie moduł jest jednak na tyle cwany, że bez zakłóceń potrafi wykryć tupnięcie nogą, na drugim końcu pokoju. Myślę że taka czułość wystarczy.

To już prawie koniec budowy. Teraz musimy jeszcze tylko wyprowadzić sobie przewód zasilający. Jako wtyczki, użyję USB, ponieważ zawsze można go będzie podłączyć pod pierwsze lepsze urządzenie z USB, lub zasilacz, a u mnie, stolik ma swoje miejsce koło kompa :D.

Przewód najlepiej przeprowadzić w jednej z nóg. Trzeba się trochę namęczyć, ale całe szczęście, że nogi tego stolika są puste w środku.

Najpierw musimy odkręcić nogę i wykręcić wkręt. Następnie w otworze na wkręt w nodze wiercimy otwór, tak, aby przechodził on przez cały “klocek” Wiertło standardowej długości powinno wystarczyć. Następnie drugi taki sam otwór wiercimy od spodu nogi. Teraz musimy wywiercić ostatni już otwór w nodze – po niewidocznej stronie – z boku u góry wiercimy otwór. Musimy tutaj uważać, aby nie przewiercić całej nogi. Chodzi nam o to, aby otwór z boku wpadł do otworu od góry.

Niestety, nie udało mi się wymyślić nic takiego, żeby można było tą nogę umocować na oryginalny wkręt. Będziemy więc musieli użyć kleju. Zanim jednak to zrobimy, musimy wywiercić otwór pod stolikiem, aby kabelek miał gdzie przejść. Powinno to wyglądać mniej-więcej tak:

Noga

 

Zrobienie czegoś takiego wbrew pozorom nie jest trudne. Wystarczy włożyć przewód z boku, przycisnąć od góry np. wkładem od długopisu, a kiedy przewód już będzie zwisał w środku, wciskamy go w miarę dużo i wyciągamy np. jakimś haczykiem od spodu. Potem wystarczy umieścić przewód w stoliku i przykleić nogę. Noga będzie wtedy wyższa o grubość przewodu. Ja rozwiązałem ten problem robiąc szczelinę na przewód pilnikiem. Przewód można wtedy przykleić wzdłuż spiłowanego rowka i gotowe :D

 

Na koniec zwieńczam projekt filmikiem przedstawiającym działanie konstrukcji.

Ocena: 4.25/5 (głosów: 80)

Podobne posty

10 komentarzy do “Interaktywny stolik kawowy

    • Dałoby się. Pracuję właśnie nad czymś takim, przez Serial Monitor. Jedyny problem (niestety duży) to to, że konstrukcja Matrix nie pozwala na wyświetlenie dowolnego znaku (linie łamane, skośne itp.). Trzeba więc wyświetlać wierszami (pokaż pierwszy, wyłącz pierwszy pokaż drugi itd.) tak szybko, aby widzialne było to jako zwyczajny obraz. Nie przewidziałem jednak tego, że expander nie jest na tyle szybki, aby uzyskać jednolity obraz. Rozwiązaniem może być inny układ.
      Przyszedł mi do głowy jeszcze taki pomysł, żeby dodać osobny mikrokontroler do kontrolowania wierszy. Potem wystarczy go zsynchronizować z mikrokontrolerem głównym i mamy praktycznie nieograniczoną prędkość :D

      Odpowiedz
      • Tak szczerze powiedziawszy to żaden większy problem żeby AtMega328 obsłużyła stolik oparty na WS2812, sam niedawno zrobiłem 2 takie stoliki na Arduino Pro Mini (16MHz, wiem to nie to samo co 8MHz ale to tylko kwestia kwarcu…) + stolik Lack.
        Jeden stolik podobny do Twojego tyle że użyłem mniejszą liczbę diód (6×6… kwestia czasu, pieniędzy i wybranego przeze mnie sposobu zasilania, wbudowany w stolik power bank dawał max 1,5A) + moduł bluetooth do sterowania z tel. kom. (całość posiadała kilkanaście różnych efektów, reakcje na dźwięk i akcelerometr z tel. no i scroller tekstu), użyłem diód w postaci pojedyńczych ‘modułów’, dodatkowo dzięki lustrzanej folii do szyb samochodowych można mieć stolik z ‘głebią’ lub bez, drugi stolik zrobiłem na szybko z użyciem taśmy z WS2812.
        Nie piszę żeby się chwalić czy coś podobnego tylko żeby podrzucić jakieś ewentualne pomysły i zachęcić do eksperymentów z WS2812 i AtMega328 bo wydaje mi się że warto…

        Odpowiedz

Odpowiedz

anuluj

Masz uwagi?