Prezentacja projektu '14


25

Logo jest pochodną logo społeczności Arduino na licencji Creative Commons CC-SA-BY-NC 3.0

Aktualizacja: Ogłoszono zwycięzców

Zwycięzcy konkursu zostali ogłoszeni. Szczegółowe informacje można znaleźć w poście Meta .

Z okazji 10-lecia Arduino z dumą ogłaszamy pierwsze wydarzenie w historii Arduino Stack Exchange.

Wyjmij tablice i sprzęt lutowniczy, wykop układy scalone i oporniki. Pierwszy konkurs Arduino Stack Exchange jest tuż za rogiem. Będziemy szukać ciekawych projektów budowanych przy użyciu Arduinos. Konkurs ma na celu dzielenie się, omawianie i przekazywanie informacji zwrotnych na temat projektów, nad którymi pracujesz Ty i inni członkowie. Zobacz ogłoszenie

Detale:

  • Nagrodą jest oficjalna koszulka Stack Exchange
  • Ogranicz dwa wpisy na osobę. Jeśli podano więcej niż dwa, uwzględnione zostaną tylko dwa pierwsze.
  • Klony dozwolone.
  • Projekty do rozpatrzenia zostaną przyjęte do 29 marca 2014 r. O godzinie 4:00 UTC. Pytanie pozostanie otwarte na wypadek, gdyby ktoś chciał pochwalić się swoim projektem zrealizowanym podczas Dnia Arduino 2014.

Odwiedź post Meta, aby omówić to wydarzenie i uzyskać dodatkowe informacje.

Format odpowiedzi

Możesz opublikować maksymalnie dwa projekty (jako dwie osobne odpowiedzi) jako wpisy do konkursu. Wszystkie dodatkowe wpisy zostaną usunięte. Rozważ następujący szablon wpisów:

Tytuł Projektu

Bardzo krótki opis

Opis

Jaki jest twój projekt Co to robi? Jaki problem rozwiązuje?

Projekt

Co należy uwzględnić w tej sekcji:

  • Schemat i inna dokumentacja projektowa. Fritzing to dobre narzędzie do rysowania schematów makiet, takie jak pokazane na powyższym logo projektu.
  • Komponenty użyte do zbudowania projektu
  • Zdjęcia lub wideo

Wniosek

Końcowe przemyślenia. Czego nauczyłeś się z tego projektu? Co zrobiłbyś inaczej, gdybyś musiał zacząć od nowa?

Jeśli chcesz użyć tego szablonu, możesz skopiować / wkleić następujący tekst.

# Project Title
**Very Brief Description**

# Description
What is your project? What does it do? What problem does it solve?

# Design
Things to include in this section:

- Schematics and other design documentation. [Fritzing][8] is a good tool for drawing breadboard schematics like the one shown in the project logo above.
- Components used to build the project
- Pictures or video

# Conclusion
Final thoughts. What did you learn from doing this project? What would you do differently if you had to start over?

Nagrody

Istnieją dwie nagrody! Zwycięzcą zostanie zgłoszenie, które uzyska maksymalną liczbę głosów pozytywnych (opinie negatywne się nie liczą) i otrzyma koszulkę Stack Exchange *! Będzie też coś dla drugiego miejsca. O drugim miejscu decydują organizatorzy imprezy.

* Mogą obowiązywać pewne ograniczenia. Wysyłka międzynarodowa może potrwać kilka tygodni.

Gdzie mogę przesłać moje projekty?

Opublikuj swoje projekty jako odpowiedzi na ten post.


Jaka jest dokładnie kwalifikacja do bycia projektem „arduino”? Używam optiboot w wielu miejscach, ale nie widzę tego jako „arduino”, ponieważ jest to po prostu projekt, z którego korzysta zestaw narzędzi arduino. Poza użyciem tablicy w formacie arduino, nie widzę jasnego sposobu na rozgraniczenie między „arduino” i „non-arduino”, chyba że wyraźnie wymagasz, aby projekt został skompilowany za pomocą edytora tekstu arduino, i to prawdopodobnie zdyskwalifikuje wszystkie przyzwoite projekty, ponieważ edytor arduino jest okropny, a wszyscy dobrzy koderzy już dawno przestali go używać.
Connor Wolf,

@FakeName zabierzmy tę dyskusję do Meta Post
sachleen

Odpowiedzi:


14

Stateful questbox

GPS zasilany pola sprawia, że można odwiedzić kilka miejsc przed otwarciem

Opis

Jest podobny do questboksa , ale przechowuje niewielką ilość informacji w EEPROM , więc musisz otworzyć dwa lub trzy różne miejsca, zanim się otworzy.

Projekt

Potrzebny sprzęt:

  • Arduino Uno
  • Reverse Geocache Version 2 (lub protoshield)
  • Moduł GPS GlobalSat EM-406A
  • Niebieski wyświetlacz LCD 2 × 8 z nagłówkiem złącza i kablem
  • Silnik serwo Hitec HS-55
  • Popychacz 4-40 i zatrzask do zatrzasku (niektóre wersje zamiast tego zawierają pręt w kształcie litery Z)
  • 2 uchwyt baterii AA
  • Metaliczny przycisk z wbudowaną niebieską diodą LED i 4-pinowym kablem
  • Przełącznik niskiego napięcia Pololu
  • Regulator doładowania Pololu 5 V.
  • Złącze JST do modułu GPS EM-406A
  • Proste i kątowe piny nagłówka do złącza wyświetlacza, serwomechanizmu i przycisków
  • Dwa oporniki do ograniczania prądu i regulacji kontrastu wyświetlacza
  • Dwa małe kondensatory do wygładzania mocy
  • większy kondensator do obwodu kontrastu wyświetlacza

Całkowity koszt sprzętu: 137 $ + wysyłka

Dodatkowe materiały:

  • Ładne pudełko
  • Klej epoksydowy, drewno na elementy, narzędzia

Instrukcje montażu znajdziesz na stronie zegara (możesz kupić od nich większość materiałów)

Prześlę kod stanowy i opublikuję link tutaj, niestety nie dostanę całego sprzętu na czas, więc to tylko pomysł :)

Kod napisany do tej pory :

Inspiracja:Oryginalne pudełko zadań

Wniosek

Nauczyłem się, jak integrować wiele komponentów i bibliotek razem, muszę trochę podróżować, aby to przetestować :)

Budżet można nieco zmniejszyć, zmieniając nieco koncepcję:


11

Oszczędzanie energii dla nieobecnego użytkownika komputera

To urządzenie włącza / wyłącza oświetlenie biurka, gdy jest ciemno (ish) i jest zsynchronizowane z wygaszaczem ekranu komputera.

Opis

Projekt to niewiele więcej niż połączenie czujnika światłoczułego, przekaźnika i inteligentnego kodu monitorującego wygaszacz ekranu na moim komputerze. Kiedy jest zmierzch i gdy wygaszacz ekranu nie jest aktywny, włącza światła nad moim biurkiem. Kiedy następnie opuszczę biurko, włącza się wygaszacz ekranu, który z kolei powoduje wyłączenie oświetlenia biurka. Gdy w ciągu dnia jest wystarczająca ilość światła, światła wcale się nie włączają. Rozwiązany problem polega na zmniejszeniu marnotrawstwa energii ze względu na włączenie oświetlenia w moim biurze, kiedy wychodzę z pokoju.

Projekt

Ponieważ moc mikrokontrolerów / Arduino wymaga tylko trochę dodatkowego sprzętu, aby stworzyć użyteczny projekt. To samo dotyczy tego projektu, w którym sprzęt to niewiele więcej niż:

  • Arduino
  • Kilka osłon śrubowych do połączenia komponentów zewnętrznych
  • LDR szeregowo rezystor do pomiaru światła otoczenia
  • Karta przekaźnikowa do włączania i wyłączania lamp zasilanych z sieci
  • Kondensator 10 μF od GND do RST, aby zapobiec resecie płyty i przypadkowemu zaprogramowaniu.

schematyczny

symulacja tego obwodu - Schemat utworzony za pomocą CircuitLab

Wniosek

Nauczyłem się, jak interfejs PC przez łącze szeregowe USB z Arduino i jak odczytać aktualny stan wygaszacza ekranu na moim komputerze. Gdybym zaczął od nowa, użyłbym znacznie mniejszego kontrolera, ponieważ tak naprawdę potrzebuję tylko jednego wyjścia cyfrowego i jednego wejścia analogowego. Prawdopodobnie oprze projekt na V-USB . Arduino jest jednak doskonałe do szybkiego i łatwego potwierdzenia koncepcji (PoC). (PoC jest na moim biurku już od co najmniej dwóch lat).


Fajnie byłoby zobaczyć zdjęcia Twojej ostatecznej planszy i konfiguracji. Jaki jest czas reakcji? Natychmiastowy? Po minucie?
sachleen

@sachleen Demon na moim komputerze, który odpytuje wygaszacz ekranu, uruchamia się co 30 sekund, gdy wygaszacz ekranu jest wyłączony (kiedy pracuję na komputerze) i co 5 sekund, gdy jest włączony. Mogę zwiększyć tę prędkość, ale to wpływa na obciążenie procesora i przy tym zużyciu energii ... Jest też podłączony kondensator, aby zapobiec resetowaniu i przypadkowemu zaprogramowaniu Arduino.
jippie

@sachleen, gdy z upływem czasu zmierzch zapada powoli, te 30 sekund nie jest tak naprawdę problemem. Nikt nie zauważa różnicy w ciemności w ciągu 30 sekund. W ciągu 5 sekund od poruszenia myszą lub uderzenia w klawiaturę, kiedy włączam światła, włączam się. Między tym, co jest uważane za ciemne i jasne, istnieje niewielka histereza, aby zapobiec włączaniu / wyłączaniu się świateł co tyle sekund, gdy jest powoli wystarczająco ciemno, aby się włączyć.
jippie

Powinieneś go zmodyfikować, aby przyciemniał o 50% przez 10-15 sekund, abyś nie był całkowicie w ciemności i dał ci małe „ostrzeżenie”
Anonimowy Pingwin

@AnnonomusPerson Przełączam stronę 240VAC SMPS, która ma wejście 100-250VAC. Obawiam się, że to się nie wydarzy, bo nie chcę przejść na drugą stronę. Świetny pomysł, ale może uda mi się jakoś dodać inteligentną małą białą diodę LED.
jippie

8

Myślę, że ten rodzaj ledwo mieści się w przepisach, ale jest na tyle interesujący, że sądzę, że i tak go opublikuję.

Precyzyjny, synchronizowany GPS generator znaczników czasu do celów akwizycji danych.

Jest to dość interesujący projekt, którego celem jest zapewnienie łatwego sposobu synchronizacji wielu niezależnych systemów akwizycji danych.

Zasadniczo pracuję w laboratorium badawczym i często mamy instrumenty, które mają wiele niezależnych systemów akwizycji danych, które można fizycznie oddzielić nawet o 50 stóp. Musimy być w stanie skorelować czas, w którym pobierano próbki z każdego systemu, co może być trudne, jeśli chcesz rozwiązać czasy próbkowania z dużą dokładnością. Używając czegoś w rodzaju systemu akwizycji danych USB, tylko opóźnienie USB może wprowadzić kilkaset milisekund nieznanego opóźnienia, które może różnić się w zależności od akwizycji.

Poprzednim rozwiązaniem był 24-bitowy licznik równoległy, który był po prostu przewożony wszędzie, wymagający ogromnej wiązki przewodów i stanowił rodzaj bólu w tyłku.

Ten system wykorzystuje wyspecjalizowany moduł pomiaru czasu GPS, który może syntetyzować dowolne zegary częstotliwości, które są fazami i częstotliwościami zablokowanymi na zegarach atomowych w satelitach GPS.

MCU jest odpowiedzialne za wiązanie wiadomości danych GPS (musiałem znacznie rozszerzyć i zoptymalizować istniejący parser protokołów dla danych GPS). GPS jest skonfigurowany do używania zastrzeżonego protokołu binarnego i wszystko jest analizowane przez analizator składni, który napisałem.

Projekt przeszedł szereg zmian (na zdjęciu poniżej).

Projekt

Rewizje! wprowadź opis zdjęcia tutaj
Rev 1: Nigdy nie działałem, ponieważ początkowo miałem nadzieję, że użyję oprogramowania dPLL ze znacznie tańszego GPS, aby zsyntetyzować zegar o wyższej częstotliwości tylko z wyjścia 1 PPS. Prawdopodobnie jest możliwe, aby działało, ale inwestycja czasu po prostu sprawiła, że ​​nie warto. (a ja jestem zbyt kiepski koderem)

Zastosowano MCU śmigła paralaksy. Ważnym problemem był również brak przyzwoitych języków kompilowanych.


wprowadź opis zdjęcia tutaj
Rev 2: Przeniesiono do ATmega2560. Pracował, miał wiele funky projektowania odziedziczonych po pierwszej wersji. Przede wszystkim dalsze stosowanie rejestrów przesuwnych dla wyjścia 32-bitowego, pomimo wystarczającej liczby IO w ATmega2560.

Pierwsza płyta, na której działał Optiboot, a właściwie została całkowicie zaprogramowana przy użyciu standardowego zestawu narzędzi Arduino, zanim zirytowałem się nim i zacząłem modyfikować zestaw narzędzi, aby lepiej pasował do moich celów.


wprowadź opis zdjęcia tutaj
Rev 3: Działa również. Okablowane okablowanie jest spowodowane tym, że ta płyta zawiera wbudowany koncentrator USB w celu zmniejszenia liczby wymaganych portów USB (interfejs FTDI wymaga 1 USB, a GPS ma również interfejs USB). Niestety GPS nie wyliczył poprawnie, chociaż urządzenie FTDI działało dobrze, a ja korzystałem z tego hubu gdzie indziej bez problemu. Dziwne.

Nie mam odpowiedniego debugera USB, więc po prostu całkowicie upuściłem koncentrator USB, zamiast próbować rozwiązać problem. Usb GPS nie jest tak naprawdę często używany poza konfiguracją.


wprowadź opis zdjęcia tutaj
Rev 4: Półfinałowa wersja ATmega2560. Dodano wyświetlacz LCD z informacją o stanie GPS, skrzypnął diodami LED i tak dalej. Również lepsze ślady dla możliwych superkondensatorów do utrzymywania statusu GPS, gdy nie są zasilane.

To jest ostatnia wersja Optiboot.

MStimeto MSTOWlub tydzień w milisekundach, czyli nazwa wartości danych GPS, która jest wyprowadzana na wyjściu znacznika czasu. Jest to 32-bitowa zmienna, która zwiększa się raz na milisekundę i przewija się co tydzień. Jest to bardziej niejasna część standardu GPS.

ITOWto kolejna wartość związana z GPS, będąca wartością odpowiadającą sygnałowi 1PPS. Korelacja między tymi dwoma nie jest poprawnie odzwierciedlona na ekranie LCD, ponieważ nie mam czasu procesora na aktualizację wyświetlacza LCD w tempie, które chciałbym. To była właściwie jedna z głównych rzeczy, które poprawiły się w aktualizacji do urządzeń Xmega.


wprowadź opis zdjęcia tutaj
Rev 5: Kompletna zmiana architektury. Teraz używa procesora ATxmega128A1U. Nie jest już tak naprawdę „Arduino”, ale możliwość posiadania wielu poziomów przerwań w procesorach xmega pozwoliła mi znacznie poprawić strukturę kodu.

Te dwa druty są ode mnie podczas eksperymentów, bez nich również płyta działała dobrze.

Patrząc w przyszłość:

Rev 6! wprowadź opis zdjęcia tutaj
Dodaj możliwość korzystania z różnych rozmiarów LCD, większą ochronę przed wyładowaniami elektrostatycznymi w połączeniu z anteną GPS (to był problem), możliwość użycia baterii CR2032 do utrzymywania zegara GPS zamiast superkondensatorów.

Znacznie lepsze oznakowanie diod LED debugowania i statusu.

wprowadź opis zdjęcia tutaj
I bonus Nyan-Cat!

wprowadź opis zdjęcia tutaj

(Te tablice są obecnie w fazie produkcji. Kiedy je zdobędę, dodam zdjęcia prawdziwej planszy.)


Przeprowadziłem kilka długotrwałych testów między dwiema płytami ATmega2560 i przez 72 godziny błąd czasu RMS między dwiema jednostkami wynosił ~ 20 μS. Dotyczyło to również dwóch całkowicie niezależnych anten. Mój cel projektowy to <1 ms, więc jestem z tego bardzo cholernie zadowolony.

Ogólnie rzecz biorąc, myślę, że dobrze to ilustruje, w jaki sposób Arduino może być użytecznym narzędziem do wczesnego prototypowania „prawdziwych” produktów / systemów. Używam go do uruchomienia początkowej wersji testowej przy minimalnym wysiłku, a kiedy jestem pewien, że pomysł zadziała, w rzeczywistości wkładam pracę w migrację do całkowicie niestandardowej, specyficznej dla celu implementacji.


Pliki projektowe:
https://fake-server.no-ip.org/svn/FPGAStuff/DAQ%20systems/
(w serii katalogów „GPS Timestamp”).
(UWAGA: Pliki są z Altium Designer są. Nie plików orzeł).

Kod źródłowy:
https://fake-server.no-ip.org/svn/Programming/Code/AVR/
Znowu w serii katalogów „gpsTimeStamp”.

Przepraszam za kiepskie zdjęcia z telefonu komórkowego.


Czy możesz zmniejszyć liczbę zdjęć? 3-4 powinny wystarczyć, aby zrealizować ten pomysł. Ładowanie wolnych połączeń zajmuje dość dużo czasu.
asheeshr

7
@AsheeshR - zdecydowanie się nie zgadzam. Mógłbym upuścić jedno ze zdjęć z ostatniej aktualizacji, ale postęp w projektowaniu systemu wydaje mi się dość cenny.
Connor Wolf,

1
Bawisz się z sitodrukiem?
TheDoctor

Oooh, widok 3D płytki drukowanej. Aww, to Altium i dość drogie? : $ Całkiem fajnie jest oglądać te projekty lub zobaczyć, co robią inni.
Paul

7

Sonic Ray Gun

Dwa projekty dzieci

Pracuję z kilkoma wychowanymi w domu dziećmi i świetnie się bawimy z arduino. Ich pierwszym projektem była sztuczna bomba, jak widać na filmach, z odliczającym czas LCD i klasycznym „czy przecinasz czerwony czy niebieski drut?”. problem z typem.

Projekt drugi rozpoczął się od pokazania im przykładu toneMelody i małego głośnika. Szybko okazało się, że jeśli zwiększysz częstotliwość do 15 kHz, byłoby to denerwujące dla nastolatków. Godzinę później udoskonalili projekt za pomocą kubka, rolki papieru toaletowego i przełącznika wykonanego z spinacza biurowego tworzącego kierunkowy pistolet promieniujący dźwięk.

Niestety nie ma zdjęć.

Wniosek

Nie zostawiaj dzieci bez opieki z arduino.


3
Czy możesz to trochę opisać (kod, Fritzing itp.)?
Anonimowy pingwin

7

(fałszywy) Linux na Arduino

Niedawno nabyłem mały kompozytowy ekran LCD, który szybko zacząłem grać przy użyciu biblioteki Arduino TVout. Co potem? Linux!

Opis

Podczas zabawy z ekranem telewizora i biblioteką TVout odkryłem, że jest już przygotowany program obsługi terminala dla telewizora. Wkrótce zacząłem eksperymentować z użyciem go jako terminala telewizyjnego podłączonego do klawiatury PS / 2. Wystąpiły pewne problemy z biblioteką PS / 2, z której korzystałem, więc przeniosłem ją na bibliotekę USB w moim Mega ADK wraz z klawiaturą USB. To działało znacznie lepiej. Teraz do przechowywania.

Moja osłona karty SD nie jest kompatybilna z moją Mega, więc podłączyłem ją nieco przypadkowo do SPI na końcu płytki. Napisałem obsługę poleceń, aby wykonać kilka zadań, takich jak wyświetlanie listy plików i znajdowanie rozmiaru dysku, wolnego miejsca itp. Cały zespół nie jest w żaden sposób ukończony, ale cieszę się z poczynionych postępów.

Kod zostanie ostatecznie przeniesiony do Github, patrz komentarze.

Projekt

pomniejszone zdjęcie

ekran clse up

Wyzwania

Miałem wiele problemów z połączeniem wprowadzonych znaków z ciągiem przechowującym bieżące polecenie, ponieważ nie rzuciłem poprawnie. Kiedy już to zrozumiałem, musiałem rozwiązać problem polegający na tym, że niektóre klucze drukowały losowe śmieci na ekranie. Było to spowodowane odczytaniem pamięci przed definicjami liter, więc kilka ifs wyjaśniło.

Wniosek

Jestem bardzo zadowolony z kodu. Gdy dodam do niego jeszcze kilka narzędzi, umieszczę go na Githubie, więc uważaj na komentarze. Ogólnie był to bardzo fajny projekt. Nauczyłem się przy tym korzystać ze Stino.


Brzmi interesująco. Naprawdę chciałbym wkrótce zobaczyć twój kod!
asheeshr


Czy wyświetlacz LCD kosztował dużo?
Anonimowy pingwin


@AnnonomusPerson zdemontowałem go, ponieważ był zbyt obszerny
TheDoctor

5

ShiftLCD

Oparta na AVR, kompatybilna z Arduino płyta, którą można zamontować z tyłu ekranu LCD o wielkości od 8x1 do 20x4 znaków.

Opis

Właśnie zaprojektowałem tę płytkę i niestandardową bibliotekę, aby ułatwić jej obsługę i wyświetlanie na ekranie LCD. Chociaż w tej chwili są dość łatwe w użyciu. Zmniejsza liczbę używanych pinów wyjściowych z 6 do 3. Ma także opcję rozszerzenia I / O poprzez dodanie większej liczby rejestrów przesuwnych do tego, który napędza wyświetlacz. Zastosowany procesor to ATTiny45 lub ATTiny85, który po użyciu rejestru przesuwnego ma dostępne styki cyfrowe 1 (PWM) i 4 oraz styki analogowe 2 (takie same, jak styki cyfrowe 4).

Projekt

Schematyczny Renderowanie OSH Park Deska niesprzedana

Wyzwania

Jednym z nieprzewidzianych wyzwań, jakie napotkałem, było to, że kiedy zaczynałem, używałem cyfrowych pinów 0-2 do uruchomienia rejestru przesuwnego, były to również szpilki programujące (MISO, MOSI, SCK). Za każdym razem, gdy przeprogramowałem urządzenie, na ekranie LCD wysyłano całą masę bełkotliwych wiadomości, w których trzeba będzie wyłączyć zasilanie, aby zresetować wyświetlacz. Rozwiązałem ten problem, przenosząc zapadkę rejestru przesuwnego na pin cyfrowy 3, który nie jest pinem programującym. Rozwiązanie tego problemu rozwiązało również dla mnie inny problem, ponieważ kiedy przesunąłem zatrzask, otworzyłem cyfrowy styk 1, który wykorzystywał PWM, pozwalając na więcej rzeczy do zrobienia na płycie.

Wniosek

To prawda, że ​​nie może to być najfajniejszy produkt lub pomysł, nadal ma swoje zastosowania. Odpowiedz bezpośrednio na pytanie: „Czego nauczyłeś się z tego projektu” Nauczyłem się projektować od początku do końca płytki PCB. Gdybym mógł zrobić coś inaczej, byłoby użyć części do montażu powierzchniowego zamiast otworu przelotowego, to znowu jest to tylko prototypowa, jednorazowa płyta.


Jak zaprogramowałeś swoje ATtiny? Jaki kod był zaangażowany? IDE? (Prosimy o komentarz, nie edytuj swojego posta. )
Anonimowy pingwin

@AnnonomusPerson Wygląda na to, że osoba, która opublikowała to, co zrobiłem przed, usunęła swój komentarz, więc tutaj dostałem rzeczy potrzebne (pliki Arduino IDE i schemat programowania) do programowania ATTiny. highlowtech.org/?p=1695
Jesse Laning

Dlaczego warto korzystać z montażu powierzchniowego? Lutowanie przez otwór w domu jest znacznie łatwiejsze? Myślę, że SMD służy tylko do produkcji, czy jest coś jeszcze?
Paul

5

Robot pchający guziki.

Czterokołowy ośmiofuntowy robot do zdalnego strzelania laserowego, który naciska przyciski.

Opis

Zrobiłem ten projekt w ciągu ostatniego roku szkolnego. Byłem w klasie robotyki i postanowiliśmy wziąć udział w konkursie. Każda drużyna stworzyłaby robota, który ma duży przycisk i sposób na naciskanie innych przycisków. Pod koniec roku przeprowadzimy ostatni konkurs, w którym trzy roboty będą próbowały naciskać na siebie nawzajem.

Do końca roku mój robot działał tylko częściowo. Każda część robota w pewnym momencie działała, ale pomiędzy smażonym Arduino, smażonymi sterownikami silników, okropną organizacją kodu, a mną jako jedyną osobą w moim zespole, która pracowała nad robotem przez ponad pięć godzin, ja nie mogłem całkowicie go uruchomić.

Nie dotknąłem mojego robota od prawie roku, więc wiem, że jeśli chciałbym go ponownie uruchomić, musiałbym przeinstalować bota i przepisać kod. Może kiedyś zdecyduję się to zrobić, ale na razie zamierzam pracować nad mniej ambitnymi projektami.

Projekt

Ogólny projekt

wprowadź opis zdjęcia tutaj

Przepływ informacji / energii elektrycznej

+--------------------------+   +-------------------------------------------------+
|         Computer         |   |      Robot                                      |
|--------------------------|   |-------------------------------------------------|
|                          |   |                                                 |
| Keyboard +--> Processing |   |  Button +-------------+        Motor    Motor   |
|                          |   |                       |          ^       ^      |
|                    +     |   |                       |          |       |      |
|                    |     |   |  Batteries +-----+    |          +       +      |
|                    v     |   |                  |    |   +----> Motor Driver   |
|                          |   |                  v    v   +                     |
|               Bluetooth +-----> Bluetooth +--> Arduino Uno +--> Motor driver   |
|                          |   |                  +    +  +       +       +      |
+--------------------------+   |                  |    |  |       |       |      |
                               |                  |    |  |       v       v      |
                               |                  |    |  |    Motor     Motor   |
                               |                  |    |  |                      |
                               |                  |    |  |                      |
                               |                  |    |  +-----> Laser          |
                               |  +---------------|----|----+                    |
                               |  |       Arm     |    |    |                    |
                               |  |---------------|----|----|                    |
                               |  |     +---------+    v    |                    |
                               |  |     |      Motor Driver |                    |
                               |  |     v              +    |                    |
                               |  |  Servo             |    |                    |
                               |  |                    v    |                    |
                               |  |                  Motor  |                    |
                               |  +-------------------------+                    |
                               +-------------------------------------------------+

składniki

Kod

Nie zorganizowałem mojego kodu zbyt dobrze, więc mam nadzieję, że jest to właściwy kod.

Więcej zdjęć

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Okropny film przedstawiający powolną, bezramię, bez przycisków, bez lasera i bez wczesnej wersji robota.

https://www.youtube.com/watch?v=Q7MvE7-Xb0E

Wniosek

Jestem naprawdę dobry w smażeniu elektroniki.

To było moje pierwsze doświadczenie w prawdziwym warsztacie maszynowym. Muszę użyć frezarki CNC, frezarki ręcznej, tokarki i piły taśmowej. Gdybym ponownie zaczął projekt taki jak ten, zrobiłbym znacznie lepszą dokumentację, aby móc dowiedzieć się, co do cholery robiłem rok później.


1
Dobra robota! Nic nie jest tak cenne jak doświadczenie, a najważniejsze jest to, że teraz wiesz, jak wykonać lepszą pracę następnym razem.
jippie

5

4-cyfrowy wyświetlacz LED dla Arduino

Mała płytka z 4 7-segmentowymi cyframi LED, zarządzana przez 3 piny.

Opis

Kiedy zacząłem pracować z Arduino, chciałem wyświetlić wartości zebrane przez różne czujniki, których eksperymentowałem, ale nie chciałem przesyłać tych wartości Serialdo komputera.

Chciałem małą tablicę, którą mogłem łatwo wykorzystać z jednego projektu do drugiego i chciałem oszczędzić płytkę do krojenia.

Ta płytka wraz z małą biblioteką umożliwia obecnie wyświetlanie 4-cyfrowych liczb i nie generuje prądu Arduino podczas wyświetlania (prąd jest pobierany tylko wtedy, gdy komunikuje się z tablicą nową wartość do wyświetlenia od teraz).

tablica z licznikiem

Projekt

Konstrukcja jest raczej prosta, ponieważ zdecydowałem się ponownie użyć układu MAX-7219 do napędzania mojego wyświetlacza LED (miałem kilka z nich pod ręką).

Dzięki temu układowi schemat był bardzo prosty, ale ważne było, aby poprawnie zrozumieć, jak go używać; na szczęście jego arkusz danych był dość przejrzysty.

Pierwotny projekt wykonano na desce rozdzielczej i wykorzystano 4 pojedyncze 7-segmentowe cyfry LED ; ale wymagało to zbyt dużego okablowania według mojego gustu (trzeba połączyć segmenty grupami po 4). Ponadto, podczas mojego pierwszego eksperymentu z 7-segmentowymi cyframi LED, usmażyłem jeden: miał 2 styki uziemienia, ale podłączyłem tylko jeden do GND zamiast obu :-(

Potem zdecydowałem się na wyświetlacz 4x7-segmentowy, wspólną katodę , z anodami segmentowymi już podłączonymi do 4 cyfr: to tylko 4 + 8 pinów!

Schemat forum

Podczas moich testów znalazłem przydatną bibliotekę Arduino do pracy z MAX-7219, z której postanowiłem ponownie skorzystać. Zbudowałem na nim własną bibliotekę z bardzo prostym API.

Po breadboardingu nadszedł czas, aby projekt był bardziej trwały; ponieważ miałem pod ręką mnóstwo listew, zdecydowałem się na to.

Szukałem i znalazłem łatwego projektanta Stripboard na PC, którego użyłem do zaprojektowania mojej płyty.

Pierwszy projekt listwy nie został zoptymalizowany pod względem miejsca i postanowiłem go nie wdrażać:

DESIGN STRIPBOARD # 1

Następnie przejrzałem projekt, aby zoptymalizować koszt i rozmiar (tylko jedna mała listwa 50x75 mm); to było łatwe dzięki projektantowi listew, który wcześniej znalazłem:

PROJEKT STRIPBOARD # 2

Gdy płyta była już gotowa, postanowiłem sprawdzić ją za pomocą Arduino UNO i czujnika ultradźwiękowego:

OBRAZEK

Wydawało się, że działa, ale często miałem dziwne, niespójne wyświetlane wartości; po badaniu stwierdziłem, że jest to spowodowane hałasem wywoływanym przez płytę wyświetlacza , hałasem, który zakłócał czujnik. Musiałem tylko dodać nasadkę odsprzęgającą tak blisko prądowych styków zasilających czujnika, jak to możliwe, i to działało idealnie (zwróć uwagę, że płyta wyświetlacza miała już nasadki odsprzęgające dla układu MAX-7219).

Lista części:

  • 1 x LN5461AS: wspólny katodowy 7-segmentowy blok 4 cyfr
  • 1 x MAX7219: zmultipleksowany układ sterownika LED
  • 1 x obsługa IC (24 piny)
  • Rezystor 1 x 22 K.
  • 1 x korek elektrolityczny 10uF
  • 1 x 100nF cap
  • 1 x listwa męska (5 pinów)
  • 1 x listwa 90 x 50 mm
  • druty, lutowane ...

Wniosek

30 lat po moich ostatnich eksperymentach z elektroniką mogłem ponownie zdobyć wirusa dzięki Arduino i dzięki temu pierwszemu projektowi, który, choć dość prosty, nauczył mnie kilku rzeczy:

  • interpretować arkusze danych dla używanych komponentów (MAX7219 i wyświetlacz LED)
  • naucz się używać i być skutecznym w projektowaniu listew
  • wszystkie piny oznaczone GND lub V + powinny być podłączone: nie wybierasz tego, co chcesz połączyć!
  • jeśli jest coś, co wydaje się dziwne podczas testowania obwodu i nie rozumiesz dlaczego: nie szukaj, to musi być hałas, spróbuj dodać czapkę odsprzęgającą i to powinno to zrobić!
  • dowiedz się, jak stworzyć bibliotekę Arduino (nie tylko szkic)

Gdybym miał dziś rozpocząć ten projekt ponownie:

  • spróbuj dalej optymalizować projekt listwy (prawdopodobnie mógłbym jeszcze bardziej zmniejszyć rozmiar)
  • zamień proste nagłówki pinów na płycie na prostopadłe, aby przewody łączące się z Arduino bardziej wystawały przed tablicą

5

Cyfrowy zegar ścienny z pilotem o częstotliwości radiowej (RF)

Duży 7-segmentowy zegar ścienny z wyświetlaczem o przekątnej 40 x 30 cm / 16 x 12 cali z pilotem zdalnego sterowania.

wprowadź opis zdjęcia tutaj

Opis

Ten projekt wyposażony jest w duży, 7-segmentowy cyfrowy zegar ścienny (40 x 30 cm / 16 x 12 ") z pilotem zdalnego sterowania R / F. Posiada następujące funkcje:

  • Pokazuje bieżącą godzinę i datę (godziny, minuty, sekundy, dzień, miesiąc, rok) w dwóch formatach (godziny lub data dużymi cyframi).
  • Pokazuje aktualną temperaturę w ° C.
  • Ma zdefiniowane przez użytkownika odliczanie, które uruchomi (irytujący) alarm, gdy osiągnie zero.
  • Wszystkie funkcje kontrolowane zdalnie za pomocą pilota RF.
  • Ma małą klawiaturę kursora do sterowania jej funkcjami (gdy pilot nie jest dostępny).
  • Kontrola jasności niezależna dla każdej linii wyświetlacza.
  • Nadal utrzymuje aktualny czas dokładnie, nawet gdy jest wyłączony, dzięki zegarowi czasu rzeczywistego zasilanemu baterią pastylkową.

Projekt

Kluczowymi aspektami tego projektu były:

  • Jest całkowicie oparty na mikrokontrolerze Arduino i AVR ATmega328.
  • Utrzymuje aktualny czas, nawet gdy jest wyłączony, dzięki DR1307 RTC zasilanemu baterią pastylkową.
  • Cyfry nigdy nie są multipleksowane. Zamiast tego każda cyfra ma dedykowany 8-bitowy szeregowy rejestr przesuwny IC (74HC595), który utrzymuje wybrane segmenty niezależnie od tego, co jest wyświetlane na innych cyfrach i co robi MCU.
  • Segmenty są zasilane przez tablice Darlingtona ze względu na pobór prądu, który przekracza zużycie MCU lub rejestrów przesuwnych.
  • Zegar jest kontrolowany za pomocą klawiatury na płycie kontrolera, a także za pomocą pilota RF. Komunikacja radiowa odbywa się za pomocą niedrogiego odbiornika i nadajnika radiowego 434 MHz.
  • Projekt ma budowę modułową, w której pojedynczy kontroler może zarządzać maksymalnie 12 pojedynczymi cyframi. Kontroler akceptuje również moduły rozszerzalne dla nieograniczonej liczby cyfr (maksymalna liczba cyfr jest ograniczona opóźnieniem czasowym z powodu szeregowego łączenia rejestrów przesuwnych i tłumienia ich sygnału zegarowego).
  • Konstrukcja obsługuje wiele gotowych 7-segmentowych cyfr wyświetlających lub niestandardowych cyfr wykonanych z diod LED.

Poniżej znajdują się schematy kontrolera i jednej z 7-segmentowych płyt:

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Oto kilka zdjęć plansz, które zaprojektowałem, wytrawiłem i zmontowałem oraz pilota:

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

I na koniec, oto zdjęcie innej wersji zegara. W tym przypadku wykonuję 7-segmentowe wyświetlacze, używając prostokątnych diod LED i dyskretnych elementów.

wprowadź opis zdjęcia tutaj

Wniosek

Ten projekt zajął mi dużo czasu, wysiłku i nauki, aby dojść do tego etapu (jak się dowiedziałem, nigdy się nie zakończył), ale była świetną zabawą. Kilka rzeczy, których się nauczyłem:

  1. Badać wszelkie bibliotekami masz zamiar użyć w swoim projekcie przed przypisać szpilki GPIO w kontrolerze więc uniknąć potencjalnych konfliktów. Nie miałem szczęścia używać tego samego pinu PWM do sterowania jasnością, który jest powiązany z zegarem VirtualWire, więc musiałem załatać płytę, aby uzyskać jasność i RF działające w tym samym czasie.

  2. Zaciskanie złącz Kex molex i modułów zajmuje dużo czasu !!

  3. Cięte laserowo elementy akrylowe to przyszłość. Dodają wiele jakości do urządzenia, nawet jeśli jesteś niezdarny.


Jak wykonałeś PCB (trawienie i wiercenie)?
sachleen

1
@sachleen Używam metody transferu tonera z prasowaniem. Drukuję projekt płytki na papierze fotograficznym do drukarek atramentowych w drukarce laserowej, następnie prasuję go na płycie, a następnie trawię płytę w FeCl. Znalezienie odpowiednich ustawień papieru i drukarki zajmuje trochę czasu. Do wiercenia używam wiertarki dremel , ale używam tylko płyt fenolowych i szybkich wierteł. Płyty z włókna szklanego są znacznie twardsze na wiertłach, zwykle wymagają droższych i kruchych wierteł z węglików spiekanych.
Ricardo

Skąd masz te diody LED? Mam takie, które wyglądają dokładnie tak!
Facet z kapeluszem

1
@TheGuywithTheHat Zielone prostokątne? W Brazylii są one dość powszechne. Mam je w jednym z naszych internetowych sklepów z komponentami elektronicznymi. Oto kilka linków: w DigiKey , w serwisie eBay . Tutaj je mam .
Ricardo

5

Rotator anten telewizyjnych

Zdalnie sterowany obrót anteny IR

Nie możesz wstać z kanapy, aby wyregulować kierunek anteny telewizyjnej? A nawet jeśli tak, czasami bliskość anteny zmienia odbiór. Byłoby miło móc wyregulować antenę z kanapy. Korzystanie z pilota telewizora.

składniki

Arduino Uno, odbiornik IR, silnik krokowy z płytą sterownika, łożysko ID 1 ", uchwyt mopa Swiffer, pudełko z tworzywa sztucznego,

za telewizorem Arduino z odbiornikiem IR z przodu Zamyka pudełko i łożysko Szybszy uchwyt Te dwa przyciski i tak nie działają na telewizorze

Opis

Użyj starego uchwytu mopa Swiffer jako słupka anteny. Dostałem 1 "łożysko identyfikacyjne z mojego ulubionego sklepu internetowego, w który uchwyt mopa po prostu się wciska i zatrzymuje. Wywierciłem otwór w plastikowym pudełku wystarczająco dużym, aby zmieścił się uchwyt mopa, ale nie łożysko. Wywierciłem prostokąt otwór w końcówce uchwytu mopa, aby pasował do wału silnika krokowego 28BYJ-48, i wbił urządzenie w pudełko, jak pokazano. Rękojeść mopa faktycznie spoczywa na łożysku, a łożysko jest super przyklejone do górnej części plastikowego pudełka .

Wykorzystano bibliotekę stepper.h, aby obrócić silnik z Uno.

Rozebrałem nieużywany odtwarzacz DVD i uratowałem z niego odbiornik podczerwieni. Możesz rozebrać każde urządzenie konsumenckie, które ma pilota i użyć z niego odbiornika podczerwieni, zadziała. Odbiornik IR korzysta z biblioteki IRremote.h. Za pomocą monitora szeregowego wydrukowałem kod szesnastkowy odpowiadający dwóm przyciskom na pilocie telewizora, których chcę użyć do obsługi silnika anteny. Jeden do obracania w lewo, drugi w prawo.

Aby oszczędzać energię, użyj funkcji small_stepper.motorOff (), aby wyłączyć cewki po każdym ruchu.

Wniosek

To był zabawny projekt, który przydał się także mojej żonie. Nie wdrożyłem żadnego przyspieszenia / opóźnienia w ruchu, co może być przyjemne, zwłaszcza jeśli antena ma większą bezwładność obrotową.

Edycja: przepraszam, że obraz jest bokiem! Na moim komputerze jest skierowana do góry, nie mam pojęcia, dlaczego działa on bokiem w trybie online.


5

Lampa pukająca

Lampa, która włącza się / wyłącza, gdy biurko jest zapchane. Obecnie w fazie alfa, wciąż prototypowanie, ale myślę, że to najbardziej użyteczny projekt Arduino. Zawiera generator generatora żartów ... z wcześniej nagranych dowcipów puk-puk. Uwaga: Wiem, że nie mogę wygrać w regulaminie, ale nie ma zasady wchodzenia ... Mogę też pochwalić się swoim projektem.

Opis

Jak dotąd wyjaśniłem większość z nich. Pukacie, a światło włącza się i wyłącza. Obecnie jestem na pokładzie. Używam elementu piezoelektrycznego do wykrywania uderzeń z wibracjami. Równolegle mam rezystor 1 megaomowy do ochrony mojego Arduino Uno SMD.

Myślałem o tym projekcie po prawie strąceniu (haha punny) mojej lampy z biurka, szukając małego przełącznika. Nie jestem dokładnie ... dobrze zręczny . Miło jest po prostu zapukać do biurka, a następnie zapalić światło. Używam również wyłącznika zasilania SSR (przekaźnik półprzewodnikowy: bez szumu), aby kontrolować go za pomocą dwóch pinów mojego Arduino.

Projekt

Zdjęcie Zdjęcie zrobione kamerą zawieszoną na monitorze ... eek!

Schemat Fritzinga

Komponenty użyte do zbudowania projektu:

  • Element piezo (3,00 USD)
  • Rezystor megaomowy (0,30 USD każdy w 5 szt.)
  • Arduino Uno SMD (na rękę)
  • Wyłącznik zasilania Tail SSR (~ 25,00 USD ze statkiem, ale miał pod ręką, więc bez kosztów)
  • Deska do krojenia chleba i zworek / dodatkowy drut (~ 5,00 USD, ale miał pod ręką, więc bez żadnych kosztów)

Koszt dla mnie: 3,30 USD + 0,02 USD (podatek) == Tylko 3,32 USD!

Wniosek

Ogólnie rzecz biorąc, jest to prosty projekt, ale w rzeczywistości jest przydatny. To jest walka z moimi projektami Arduino: czy mogę zbudować coś, czego faktycznie użyłbym ? Miganie diody LED nie pomoże ci w życiu. To zabawne, ale o to chodzi.

Największym problemem, z którym się zetknąłem (i nadal to robię), nie jest wystarczająco silny sygnał. Nauczyłem się wiele o sygnałach elektrycznych: wymyśliłem, jak znaleźć „szczyt” impulsu, a nie tylko odczytywać pin w przypadkowym odstępie czasu i tęsknić za wyższym napięciem. Spróbowałbym zdobyć bardziej wrażliwy element piezo. Większy by pomógł. Próbuję zmodyfikować swój obwód, aby nie ograniczać napięcia tak bardzo, ale chronić Arduino. W tej sytuacji pomógłby jakiś bezpiecznik. Bawię się również wartościami rezystorów. Bardzo pomogłoby mieć pole do tego, ale chyba nie ...: P

Po udoskonaleniu obwodu zamierzam pracować nad umieszczeniem go na płytce drukowanej za pomocą ATtiny ... a może nawet opracować jakieś zestawy. Spróbuję opublikować moje ustalenia, w jaki sposób uczynić ten element bardziej wrażliwym, nie ryzykując przy tym mojej płyty.

Aktualizacja statusu: Ostatnio byłem bardzo zajęty. Zamierzam zamówić tutaj diodę Zenera (4,3 V) za tydzień lub dwa, aby usunąć rezystor megaomowy, aby zapobiec osłabieniu sygnału podczas ochrony układu. W razie potrzeby mogę zbudować prosty wzmacniacz napięcia (obok Zenera), aby zwiększyć czułość czujnika.


1
Przejście na coś z różnicowaniem i uzyskiwanie ADC pomogłoby ci uzyskać większą wrażliwość na piezo. I prawdopodobnie za pomocą TVS zamiast rezystora.
Ignacio Vazquez-Abrams

Czy używasz ADC do wykrywania lub przerwania? Masz pojęcie o tym, jak duży szczyt napięcia chcesz wykryć?
jippie

@jipie ADC do wykrywania, mam dość wydajny kod: zapętla się i znajduje szczyt co 250 ms. Bez opóźnień Na szczyt, IIRC wynosi około 14/1024 (zbyt leniwy, aby to teraz przekonwertować). Powinienem też zajrzeć na pin AREF, ale mogą wystąpić problemy z upuszczeniem, które może wytworzyć ~ 9 V.
Anonimowy pingwin

Spróbuj tego jako bufora wejściowego. Tranzystor działa jak wzmacniacz prądu półfalowy prostownik / detektor szczytowy. Tranzystor / kondensator nie musi wykrywać pojedynczego piku za pomocą ADC. Zgodnie z konfiguracją napięcie wyjściowe ma napięcie 2,2 V DC, ale można to zmienić na dowolne, zmieniając dzielnik rezystancyjny. W ten sposób możesz uczynić wejście jeszcze bardziej czułym, wybierając odniesienie pasma 1V1 lub 2V56. Rezystor 10M zapewnia rozładowanie kondensatora przez około sekundę i był w rzeczywistości moim DMM.
jippie

4

MySensors

- Dowiedz się, jak tworzyć własne tanie czujniki bezprzewodowe i łączyć je ze światem.

http://www.mysensors.org

Nazywamy to „Internetem Twoich rzeczy”

Opis

Połączyliśmy platformę Arduino z małym transceiverem radiowym w zabawny, elastyczny świat tanich czujników bezprzewodowych.

Wszystkie drobiazgowe szczegóły dotyczące komunikacji z czujnikami zostały umieszczone w wygodnej bibliotece oprogramowania, więc nie musisz się o nie martwić.

To jest tak proste jak 1, 2, 3. Arduino + NRF24L01 +

  1. Połącz części. 2. Pobierz dostarczone przykłady. 3. Zacznij mierzyć i kontrolować świat!

Przeczytaj więcej o tym, jak automatycznie tworzona jest sieć czujników za pomocą naszej biblioteki Arduino na stronie. Zasadniczo tworzy sieć gwiazd i może osiągnąć setki metrów.

Sieć czujników

Na środku umieszczasz bramę Arduion lub Raspberry, która zbiera informacje z twoich czujników. Kontroler Raspberry

Arduino Gateway

Projekt i schematy

Oto jeden z prototypowych czujników ruchu, które stworzyłem do sterowania oświetleniem ogrodowym na zewnątrz mojego domu. Status ruchów jest wysyłany do mojego kontrolera HA, który włącza światło (poprzez falę Z) po wykryciu ruchu. Czujnik światła (nie na zdjęciu) zapewnia, że ​​światła będą włączane tylko w nocy.
wprowadź opis zdjęcia tutaj

Znajdziesz tu wszystkie instrukcje kompilacji: http://www.mysensors.org/build/

Na stronie znajdują się również łatwe do wykonania instrukcje budowania szeregu innych bezprzewodowych czujników i urządzeń wykonawczych. Oto kilka przykładów:

Czujnik odległości, czujnik ruchu, aktuator przekaźnika, wilgotność, światło, ciśnienie, deszcz, temperatura, ...

Wniosek

Projekt jest wciąż w fazie początkowej i mamy nadzieję udostępnić wtyczki do rosnącej listy sterowników automatyki domowej. Pierwszą rzeczą na naszej liście w tej chwili jest zapewnienie kontrolera DIY, który zapewnia bezpłatne przechowywanie w chmurze danych czujnika.

Witaj

Do zobaczenia @ mysensors.org

/ Henrik Ekblad (twórca biblioteki Arduino Open Source służącej do komunikacji między czujnikami)

  • AKTUALIZACJA 27/3. Sprecyzowałem przykład i dodałem moją przynależność do projektu open source.

4
Witamy w Arduino.SE! Obawiam się, że twoja strona nie spełnia kryteriów naszej prezentacji. Szukamy konkretnych projektów, które demonstrują praktyczne zastosowanie Arduino (jak widać w innych przykładach tutaj). Być może mógłbyś podać przykład zbudowanego projektu czujnika?
Peter Bloomfield

Ok, może brakuje mi sedna;). „Konkretny projekt” polega na tym, że używamy Arduinos do tworzenia samonaprawiającej się sieci czujników bezprzewodowych. Aby to zarchiwizować, stworzyliśmy bibliotekę Arduino Open Source dla transceivera NRF24L01 +.
hek

4
To brzmi bardziej jak reklama niż projekt. Zmień dźwięk, a może spraw, aby był bardziej specyficzny dla jednej aplikacji. Podejrzewam, że właśnie dlatego masz głos negatywny.
Cybergibbons

Witamy w Ard.SE! Na podstawie swojej witryny profilowej pracujesz w witrynie promowanej powyżej lub jesteś jej właścicielem. Polityka SE ujawnia to w swojej odpowiedzi. Edytuj go, aby to uwzględnić. Czy możesz również dodać przykład użycia tego?
Anonimowy pingwin

Od 6 miesięcy pracuję nad biblioteką MySensors (Open Source). Aby pomóc innym osobom w prawidłowym korzystaniu z biblioteki, my (więcej osób dołączyło do projektu w ciągu ostatnich kilku miesięcy) uruchomiliśmy stronę z instrukcją kompilacji zaledwie 3 dni temu. Pomyślałem, że to dobry projekt Arduino, aby uzyskać informacje zwrotne w tej „Project Showcase”. Nie sądzę, żebym próbował w jakikolwiek sposób ukryć swój udział w projekcie i przepraszam, jeśli opis jest postrzegany jako reklama. Jesteśmy bardzo zadowoleni z projektu!
hek

4

Serial Box

Przenośny monitor szeregowy w pudełku

Opis

Czasami przydaje się urządzenie (Arduino lub inne), aby wysyłać niektóre informacje debugowania przez port szeregowy. To świetnie, jeśli masz pod ręką komputer z odpowiednim wejściem szeregowym. Jednak nie zawsze tak jest z różnych powodów.

Ten projekt to moja próba rozwiązania tego problemu poprzez stworzenie przenośnego monitora szeregowego zasilanego Arduino, który mogę podłączyć do innych urządzeń w terenie.

Domyślnie po prostu wyświetla tekst w formacie przewijania; tzn. tekst pojawia się w dolnym wierszu, a wszystko przewija się w górę, aby zrobić miejsce, gdy pojawi się więcej. Oznacza to, że powinien bardzo dobrze działać z wszystkimi rodzajami urządzeń ogólnych. Możliwe będzie jednak także użycie sekwencji ucieczki w celu dokładniejszego sterowania wyświetlaczem, dzięki czemu można również zaprogramować urządzenia, aby skorzystać z jego możliwości.

Projekt

Projekt składa się z zestawu 4 alfanumerycznych wyświetlaczy LCD (każdy 16 x 2 znaki), ustawionych w ramce mniej więcej tak:

Makieta 3d projektu Serial Box

Wyświetlacze to Epson EAX16027AR, które niestety nie są kompatybilne ze standardowym sterownikiem Hitachi HD44780. Jako taki musiałem dla nich napisać własną bibliotekę .

Zdecydowałem się na użycie tych wyświetlaczy (zamiast np. Jednego dużego wyświetlacza) głównie dlatego, że po prostu je leżałem i chciałem z nimi zrobić coś interesującego. Pomyślałem również, że całkiem przydatne byłoby kontrolowanie każdego wyświetlacza niezależnie dla niektórych aplikacji (np. Wyświetlanie różnych informacji na każdym z nich).

Jeśli chodzi o konstrukcję obwodów, wyświetlacze są połączone równolegle, z pinami do wyboru chipów, które w razie potrzeby służą do kierowania danych / poleceń do każdego z nich.

ATMega328 będzie mózgiem jednostki końcowej, z szeregowymi danymi pochodzącymi z linii poziomu TTL (do podłączenia bezpośrednio do TX podobnego MCU) lub opcjonalnie z 9-stykowego gniazda D-sub RS232 (do podłączenia do różne inne systemy). Urządzenie będzie miało również pokrętło kontrastowe, przycisk do czyszczenia wyświetlacza oraz przycisk do inicjowania trybu autotestu. W przyszłości chciałbym dodać przyciski, które pozwolą użytkownikowi poruszać się po historii przewijania.

Poniżej znajduje się bardzo wstępny układ obwodu (z jakiegoś powodu miałem wiele problemów z tym, żeby Fritzing grał ładnie!). Zawiera 8-bitowy rejestr przesuwny SIPO do sterowania liniami danych wyświetlaczy LCD, które są pokazane na zielono. Możesz również zobaczyć linie wyboru żetonów na pomarańczowo.

Wstępny układ obwodu

W tej chwili projekt jest nadal w fazie prototypu, sterowany z płyty Uno (klon). Poniżej możesz zobaczyć jego zdjęcie w akcji, pokazujące tekst, który został przesłany przez komputer szeregowo.

Prototyp w akcji

Kod źródłowy

Udostępniam moją bibliotekę LCD na GitHub pod linkiem poniżej. Pamiętaj, że jest na wczesnym etapie rozwoju. W najbliższej przyszłości zamierzam uczynić go bardziej podobnym do podstawowej biblioteki LiquidCrystal, aby łatwiej było przechodzić między nimi.

Podstawowy kod mojego prototypu Serial Box można znaleźć w folderze „Examples”.

Wniosek

Myślę, że projekt idzie bardzo dobrze i bardzo ucieszyłem się z uruchomienia prototypu. Moim głównym wyzwaniem będzie zamontowanie całości w pudełku. Już zacząłem wycinać odpowiednie otwory na wyświetlacze, ale nie mam zbyt dużego doświadczenia w tego typu sprawach i ciężko jest mi wyrównać wszystko.

W końcu się tam dostanę. Zanim skończę, może po prostu nie wyglądać ładnie! :)


3

Kontroler ogrzewania

Wiesz, jak to jest - ustawiasz ogrzewanie na określoną godzinę i ile dni pracujesz do późna, a godziny są pełne, lub odchodzisz na kilka dni i zapominasz wyłączyć? A może rzadka okazja, że ​​wrócisz do domu wcześnie i w domu jest zimno? Uznałem, że najprostszym sposobem na obejście tego jest zbudowanie urządzenia, które pozwoli mi włączyć lub wyłączyć ogrzewanie za pomocą wiadomości SMS / SMS. Byłoby to uzupełnieniem istniejącego systemu kontroli, aby nie stracić elastyczności, która może to zapewnić.

Projekt składa się z kilku głównych części: klonu Arduino Uno, tarczy Seeedstudio GSM, czujnika temperatury DHT22 i SSR 25 A.

Jak to działa:

Istniejące elementy sterowania ogrzewaniem są ustawione na „Wył.”, A nowy sterownik jest podłączony, aby je zastąpić. Uno jest zaprogramowane do reagowania na trzy różne komunikaty - Włączone, Wyłączone i Zapytanie. W przypadku tego ostatniego urządzenie odczyta DHT22 i odpowie nadawcy z aktualną temperaturą i statusem urządzenia (włączone lub wyłączone). Jeśli polecenie jest Włączone lub Wyłączone, wówczas odpowie na potwierdzenie przeprowadzonej akcji. Po podjęciu działań wiadomości są usuwane; wszelkie wiadomości, które nie są zgodne z określoną strukturą wiadomości, pozostają w pamięci karty SIM i można je później sprawdzić w razie potrzeby.

Zasilanie urządzenia jest dostarczane przez zasilacz impulsowy o napięciu pięciu woltów i trzech amperach. Ponieważ piny zasilania w Arduino po prostu odsłaniają wewnętrzną magistralę 5 V płyty, postanowiłem zasilić zespół przez te i skonfigurować tarczę, aby pobierać energię z Arduino.

Urządzenie ma trzy diody LED stanu. Jeden zielony oznacza, że ​​jest zasilanie, niebieski oznacza, że ​​karta GSM jest „pod napięciem”, a czerwony wskazuje stan ogrzewania. Stanowią one uzupełnienie diod LED statusu na Arduino i tarczy. Istnieje również przełącznik przyciskowy, który umożliwia ręczne sterowanie ogrzewaniem, z kondensatorem 100nF do obsługi odbicia.

Kolejny:

Znaczna część kodu opiera się na starym dobrym opóźnieniu (), aby dać tarczy wystarczająco dużo czasu na wykonanie swoich działań. Planuję ulepszyć kod, aby czekał na potwierdzenie z tarczy, zamiast zakładać, że zrobił to, co mu kazano w wyznaczonym czasie! Dodam również funkcję „wciąż żywą” - w ustalonych odstępach czasu wyłącz niebieską diodę LED, wyślij polecenie AT do tarczy i po potwierdzeniu ponownie włącz diodę LED. Tarcza jest pod kontrolą oprogramowania, więc jeśli nie zareaguje, wyłącz ją i włącz ponownie.

Cały zespół ma być zamontowany w odpowiedniej obudowie i zamontowany w sąsiedztwie istniejącego kontrolera. Mam wewnętrznie podświetlany przełącznik przyciskowy, którego użyję zamiast osobnego przełącznika i czerwonej diody LED do obsługi obejścia.

W dłuższej perspektywie planuję dodać RTC, 20 x 4 LCD i dodatkowe przyciski, aby umożliwić zaprogramowanie urządzenia i działać również jako wyłącznik czasowy.

Prototypowanie już się rozpoczęło!

Wniosek.

Jest coś nieco dekadenckiego w budzeniu się w chłodny zimowy dzień odpoczynku, wysyłaniu wiadomości tekstowej / sms, aby włączyć ogrzewanie, i przewracaniu się i wracaniu do snu na godzinę! A kiedy zdasz sobie sprawę, że nie wyłączyłeś go w nocy, możesz to zrobić w zaciszu własnego łóżka!

Obraz kontrolera 1 Obraz kontrolera 2

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.