7 marca 2025 (updated: 7 marca 2025)
Chapters
Czy można wlać beton do tekturowego formy?
Jeśli nie, może czas najwyższy. Ale jeśli tak, to witaj w klubie! Niedawno mieliśmy wewnętrzny hackathon w EL Passion, i wpadłem na wyzwanie. Zrobienie lampy!
Inteligentna lampa. Inteligentna lampa z betonu! Inteligentna lampa drewniana/betonowa z paskiem LED RGB… I BLUETOOTH!
W ciągu dwóch krótkich dni hackathonu (z niewielkimi kosztami) zrealizowaliśmy to wszystko!
Około dwa miesiące temu zacząłem bawić się elektroniką. Chciałem poszerzyć swoje horyzonty, nauczyć się, które kable odciąć w przypadku buntu inteligentnych maszyn i wyjść poza moją wiedzę z zakresu Frontend Engineering. Myślę, że większość z was może się z tym utożsamić.
Zacząłem od podstaw, zdobyłem kilka komponentów, obejrzałem tutoriale, a potem nie mogłem zdecydować, co zrobić dalej.
Po około dwóch miesiącach przypomniałem sobie, że zbliża się hackathon!
Ostatnio widziałem prezentację Stephanie Nemeth na konferencji front-end, gdzie pokazała fantastyczne rzeczy, które można zrobić z Arduino i RGB lights. Postanowiłem, że chcę stworzyć coś równie fajnego.
Jednak chciałem zrobić coś, co będzie użyteczne, funkcjonalne i wymagało umiejętności DIY, kodowania i elektroniki.
Wybrałem najbardziej oczywistą rzecz, jaką można zrobić z lampkami — lampę. I znalazłem idealny projekt DIY, który chciałem naśladować.
DIY lampa z tutorialu DIY Creators na YouTube
Miałem już pomysł. Teraz potrzebowałem zespołu.
Pitching — Zbieranie zespołu
Trzy dni przed hackathonem zazwyczaj mamy pitching, podczas którego prezentujemy nasze pomysły reszcie firmy i zbieramy ludzi, którzy będą pracować nad naszym projektem. Nie jestem świetnym sprzedawcą, więc moje wystąpienie brzmiało trochę jak:
Eee, więc tak, chcę zrobić Concrete Smart Lamp. Dziękuję bardzo.
Pomimo braku informacji, pięć osób było zainteresowanych dołączeniem do mojego zespołu! Mieliśmy imponujący zestaw umiejętności:
Przyjrzyjmy się liście zakupów. Wymieniłem tylko te rzeczy, które użyliśmy i na stałe wbudowaliśmy w lampę. Całe dodatkowe wyposażenie, Arduino (prototypowanie, wgrywanie kodu do AVR) oraz komponenty, które uszkodziliśmy, nie są wliczone.
Całkowity koszt: 159 PLN (około 43 USD)
Można zdobyć wszystkie przedmioty za niższą cenę, ale w naszym przypadku było to dość pilne.
Deski, beton, papier ścierny i inne przydatne rzeczy.
Faza budowy projektu była ekscytującym wyzwaniem. Spędziliśmy pierwsze 2 godziny dyskutując, jak zrobić formę do betonu, która spełni następujące wymagania:
Wymyśliliśmy coś takiego:Wygląda prosto, ale zrobienie tego nie było takie łatwe. Do wykonania formy użyliśmy kartonowego pudełka, dużo szarej taśmy, pudełka po “magic mouse 2”, dwóch plastikowych słomek i trochę gorącego kleju.
Później wymieszaliśmy i dodaliśmy beton.
Nie chcieliśmy, aby forma się odkształciła, więc użyliśmy więcej taśmy i czterech litrów mleka. Włożyliśmy również drewnianą podstawę do betonu, aby mieć miejsce na nią później (prawie o niej zapomnieliśmy). Wszystko to jest równoważne z "szybkim rozwiązaniem" w systemach produkcyjnych, ale jak to mówią:
Jeśli wygląda głupio, ale działa, to nie jest głupie.
Smart People
Ten cytat stał się naszym mottem na resztę budowy.
Nie mam zdjęcia podstawy zaraz po wyjęciu jej z formy, ale oto ona po trochę szlifowaniu i już z zamontowanym drewnianym ramieniem. Dodaliśmy również silikonowe nóżki, aby beton nie rysował blatu.
Ramię składa się z dwóch oddzielnych części: górnej części lampy i podstawy z kablem w środku. Połączyliśmy je dużą śrubą, dla której wywierciliśmy otwory w obu częściach górnej i dolnej.
Na szczęście nie spaliliśmy biura.
Okazuje się, że dokładne mierzenie rzeczy jest trudne.
Górna część była dość wyzwaniem, ponieważ wymagała delikatnej pracy z lutownicą, ale zacznijmy od podstaw. Wykonaliśmy ją z trzech kawałków drewna, dwóch cienkich (boki) i jednego kwadratowego. Najpierw skleiliśmy wszystko razem, wywierciliśmy otwór na dużą śrubę, która łączy górną i dolną część. Po przeszlifowaniu, aby zrekompensować fakt, że deski były nieco krzywe, Ula pomalowała ramię, a gdy farba wyschła, przystąpiłem do montażu taśm LED na nim.
Pierwszą rzeczą, którą zrobiłem, było zmierzenie, jak pociąć taśmy LED. Nie chcieliśmy włożyć jednego długiego kawałka, ponieważ nie dawałby zbyt dużo światła, więc po zmierzeniu, ile zmieści się, pociąłem trzy taśmy, każda o długości 35 cm. Następnie przylutowałem główny kabel do pierwszej części taśmy LED i użyłem rurki termokurczliwej, aby zabezpieczyć połączenie.
Rurka termokurczliwa i połączenia lutownicze łączące dwie taśmy LED.
Po przyklejeniu pierwszej taśmy do drewna, zdałem sobie sprawę, że zapomniałem, jakie kable podłączyłem do wyjść Red, Green, Blue i 12V+. To był mały problem, ale na szczęście mieliśmy multimetr, który pozwolił nam sprawdzić połączenia.
Następną rzeczą, którą musiałem zrobić, było przylutowanie dwóch taśm LED szeregowo do pierwszej części. Zajęło mi to trochę czasu, ale udało mi się to zrobić, mimo że miałem lutownicę za 8$, której końcówka malała z każdym użyciem. Przetestowaliśmy to, podłączając kabel do płytki stykowej i używając jednego z enkoderów obrotowych do zmiany koloru.
Dolna część ramienia była skomplikowana, ponieważ musieliśmy umieścić kabel wewnątrz. Myśleliśmy o przecięciu go na pół, wydrążeniu miejsca, a następnie ponownym złożeniu, ale to mogłoby prowadzić do błędów i zajmować dużo czasu. Ostatecznie zdecydowaliśmy się przykleić trzy dodatkowe kawałki drewna, aby stworzyć miejsce na kabel, jak pokazano na grafice. To również powód, dla którego część wewnątrz podstawy jest nieco węższa.
Brakowało nam kilku części, kilku kawałków drewna oraz śruby, która trzymałaby ramię razem. Zrobiliśmy krótką przerwę od pracy i poszliśmy do sklepu, aby kupić te wszystkie rzeczy.
Naturalny kolor sosny nie był zbyt ładny, więc Ula pomalowała zarówno górną, jak i dolną część lampy, aby były nieco ciemniejsze. Pozostawiliśmy to do wyschnięcia na noc, a następnego dnia połączyliśmy to i wyglądało świetnie!
Proces malowania.
Układ kabla wewnątrz lampy.
Nie byłem zbyt zaangażowany w proces tworzenia aplikacji iOS, więc nie mogę podać bardziej szczegółowych informacji na temat kodu. Jakub przejął prowadzenie i dostarczył działającą aplikację przed końcem pierwszego dnia. Drugiego dnia rozbudował ją o więcej niesamowitych funkcji, takich jak wsparcie podobne do „Ambilight”, gdzie, gdy odtwarzasz wideo, lampa synchronizuje kolory z nim (demonstracja na końcu artykułu).
Były pewne problemy z łącznością Bluetooth, a dokładniej, jeden moduł Bluetooth łączył się z iOS, ale nie z Androidem, a inny działał odwrotnie. Na chwilę obecną lampa działa tylko z iOS, ale na MVP to wystarczy. Moduł Bluetooth można łatwo wymienić w razie potrzeby, ponieważ nie jest przylutowany na stałe.
Mówiąc z mojego doświadczenia, mogę powiedzieć, że aplikacja wygląda imponująco, a szybkość, z jaką Jakub ją dostarczył, jest również niesamowita!
Cały kod jest open source na GitHub. Możesz go przejrzeć. Nie zamierzam zagłębiać się w szczegóły techniczne dotyczące jego działania. Wojtek, który napisał większość kodu, byłby lepiej przygotowany do tego, więc stworzyłem ogólny przegląd tego, jak wszystko działa. Uproszczony algorytm wygląda następująco:
Wojtek napisał pierwszą wersję kodu dla Arduino, a później zaktualizowałem go, aby działał na zwykłym chipie ATmega. Różnice są minimalne, ponieważ wprowadziłem tylko dwie główne zmiany:
Możesz zobaczyć pull request, który zawiera różnice wszystkich zmian, jeśli jesteś ciekawy.
Naszym planem było dość ambitne przedsięwzięcie, jak na tak krótki czas, ale na szczęście Wojtek jest dość bystry i wcześniej bawił się elektroniką, więc był „liderem” tej części.
Zaczęliśmy od małych kroków, testując różne rozwiązania metodą prób i błędów. Wojtek pracował zarówno nad kodem, jak i nad obwodem jednocześnie i testował, jak wszystko działa. Część elektroniczna lampy składała się z:
Początkowo użyliśmy Arduino zamiast samodzielnego mikrokontrolera i wszystko umieściliśmy na płytce stykowej, aby uprościć proces rozwoju. Pod koniec drugiego dnia mieliśmy wszystko podłączone na prototypowej płytce. Bluetooth, enkodery obrotowe i Arduino. Tak to wyglądało podczas sesji demonstracyjnej:
Po hackathonie chciałem poświęcić trochę czasu na zmniejszenie elektroniki, aby zmieściła się w lampie, aby budowa była kompletna. Aby zmniejszyć elektronikę, musiałem:
Zacząłem od wymiany Arduino. Aby to zrobić, musiałem zainstalować bootloader na ATmega AVR (to ten sam, który używa Arduino). Obejrzałem kilka samouczków (linki poniżej wpisu na blogu) na temat instalacji bootloadera i jak używać Arduino jako programatora ISP (pozwala nam to na przesyłanie oprogramowania do mikrokontrolera bez dodatkowego sprzętu). Po tym, zaktualizowałem kod, aby używał nieco innych pinów i Voila!
Następnie musiałem wszystko przylutować na małej płytce stykowej.
To był mój pierwszy raz z płytkami stykowymi i nie mogłem znaleźć prostego oprogramowania, które pomogłoby w projektowaniu fizycznym obwodu, więc poszedłem w starą szkołę i zaplanowałem to ręcznie. Wydrukowałem arkusz papieru w kropki, gdzie kropki reprezentowały otwory płytki stykowej. Następnie narysowałem wszystkie połączenia i sposób, w jaki powinny pasować na podstawie obecnego obwodu na płytce prototypowej.
Aby było to bardziej zrozumiałe i widoczne, stworzyłem grafikę, która przedstawia obwód na płytce stykowej.
Reprezentacja stworzonego obwodu. W rzeczywistej budowie musiałem go nieco dostosować, aby zmieścić wszystkie komponenty, ale wygląda w 90% jak ten powyżej.
Po około dziesięciu godzinach lutowania (wciąż jestem nowicjuszem) i dwóch poparzonych palcach (nie dotykaj komponentów, jeśli coś dziwnie pachnie) udało mi się to uruchomić! Poszło lepiej niż się spodziewałem.
Zdjęcie w trakcie pracy, aby zbudować napięcie przed wielkim ujawnieniem!
Wszystkie elementy złożone. Białe kable to pokrętła, małe przewody z czarną izolacją to połączenia LED
Widok od spodu. Użyłem cienkiego drutu miedzianego do połączenia styków.
Jeśli przyjrzysz się bliżej, zobaczysz cały klej, którego użyliśmy.
Sprawdź pełną demonstrację, w której przechodzę przez wszystkie funkcje, jakie ma ta lampa. Pomimo kilku problemów, np. krzywych pokręteł i czasami nieprawidłowo przedstawionych kolorów, działa!
Dla mnie, a mam nadzieję, że dla reszty zespołu, to był jeden z najbardziej satysfakcjonujących projektów hackathonowych. Zarówno proces, jak i wynik były niesamowite, mieliśmy dużo zabawy i nauczyliśmy się wiele o pracy z drewnem, betonem i elektroniką.
Jeśli ktokolwiek chce zbudować podobną lampę lub potrzebuje więcej szczegółów, śmiało komentuj i pytaj mnie o cokolwiek!