Quantcast
Channel: Majsterkowo - zrób to sam!
Viewing all 1332 articles
Browse latest View live

Rękawiczki do obsługi digitizerów pojemnościowych

$
0
0
Składniki
Próbowałeś kiedyś użyć swojego smartfona mając na rękach rękawiczki? O ile nie był to smartfon z ekranem pojemnościowym, prawdopodobnie wszystko działało bez zająknięcia. (Nie)stety większość obecnie produkowanych smartfonów posiada ekrany pojemnościowe, które mają wiele zalet, ale mają też jedną wadę - nie da się ich obsługiwać w rękawiczkach.

A może jednak się da?

Owszem, da się :) Łukasz już raz to udowodnił, dzisiaj udowodnimy to po raz drugi, jednak w nieco inny sposób. Jednak zanim przejdziemy do udowadniania, wróćmy na chwilę do tytułu. Dlaczego właściwie w tytule pojawia się związek "digitizer pojemnościowy", skoro chodzi o ekran dotykowy telefonu? Otóż ekran telefonu (a właściwie szybka umieszczona nad matrycą) jest digitizerem podobnie jak touchpad w laptopie czy tablet graficzny. Samą zasadę digitizera omówił Łukasz w poście który zalinkowałem wcześniej, więc nie będę się nad tym rozwodził, ciekawskich zapraszam do przeczytania owego postu.

Co będzie potrzebne?

  • rękawiczki, 1 para
  • igła do szycia, 1 sztuka
  • nić przewodząca, ok. 1,2-1,5m na jeden palec
  • tofik z paczki od Nettigo, 1 sztuka :)
  • minimum umiejętności krawieckich

Składniki

Do dzieła!

  1. Tofika wpychamy do palca rękawiczki który zamierzamy wyszywać. Ja w swojej rękawiczce wyszyłem tylko kciuk i palec wskazujący, bo de facto w 99% używam tylko tych palców korzystając z telefonu. Tofika instalujemy w palcu aby przypadkowo nie zaszyć palca, bo wtedy rękawiczki byłyby bezużyteczne. Tofika można zastąpić innym przedmiotem przypominającym palec, np. baterią AA nie bez powodu nazywaną popularnie "paluszkiem". Odradzam zastępowanie tofika własnym palcem :)Wypchany palec
  2. Nawlekamy igłę na nitkę. Długość nici zależy od wielu rzeczy, m.in. od wielkości palca, zdolności krawieckich, zastosowanej techniki wyszywania czy wreszcie oczekiwanej gęstości włókien. Ja zużyłem po 1,5 metra nici złożonej na pół (czyli ostatecznie 75cm). Jest to długość wystarczająca jak dla osoby która ręcznie szyje drugi raz w życiu i ma dość spore palce.przygotowana nić
  3. Wyszywanie czas zacząć! Technik wyszywania jest tyle, ilu wyszywających ludzi. Ja starałem się wyszywać mniej więcej tak, aby włókna były ułożone jak w tkaninie, czyli w kratkę - najpierw linie w poziomie, później w pionie. Wyszło mniej niż więcej, ale jak już wspominałem szyłem ręcznie drugi raz w życiu. Myślę że haft krzyżykowy mógłby się sprawdzić w tym miejscu, zachęcam do eksperymentowania.Szycie rozpoczęte
  4. Po wyszyciu jednego palca proponuję założyć rękawiczkę i sprawdzić, czy nici są tam gdzie powinny, tzn. czy rękawiczki są wygodne w użytkowaniu. U mnie pierwszy palec (wskazujący) był wyszyty za nisko, co było dość niewygodne, doszyłem więc jeszcze kilka linii w stronę czubka palca.
  5. Pierwszy palec gotowy, powtarzamy procedurę na kolejnym. U mnie po zakończeniu wygląda to tak:Gotowa rękawiczka

Jak to działa w praktyce?

Zaskakująco dobrze :) Niestety telefon którym robię zdjęcia i nagrywam filmiki to jednocześnie jedyny dotykowy telefon w moim domu. Jednak jest jeszcze touchpad w laptopie, który okazał się być pojemnościowym, więc to na nim przeprowadziłem testy. Rękawiczka działa bez zarzutu z Samsungiem Galaxy SIII z DPI zmienionym na 240, czyli dość gęsto (siatka home 6x7 elementów). Poniżej filmik z działania (niestety, autofocus przy próbach czasem się przestawia, ale i tak można dostrzec kursor): http://youtu.be/zdWiyeYHbe8 Czytaj dalej...

Kolejny nudny artykuł o termotransferze

$
0
0
image027
"Z tej odległości nawet słonia by nie traf..." miały brzmieć ostatnie słowa generała Johna Sedgwick'a. Los spowodował że to oto niedokończone zdanie jest paradoksalnie zdaniem pełnym i skończonym; niosącym obraz tego, co działo się zaraz po skończniu jego wypowiadania. Ponadto, mówi wiele o człowieku je wypowiadającym - był bardzo pewny swego. I pewnym swego należy być. Zauważyłem że, mimo skończonej strony projektowej układu elektrycznego, do ostatecznych wersji wielu projektów tutaj, używane są układy polutowane na protoboardach czy innych płytkach perforowanych. Czasami ze straszną plątaniną kabelków. Oczywiście - jeśli działa to nic w tym złego, natomiast należy być świadomym, że taki układ jest podatniejszy na zakłócenia, zwarcia czy uszkodzenia mechaniczne. A zrobienie własnej płytki drukowanej wcale trudne nie jest, co postaram się zaprezentować w tym artykule. Jakie to ma powiązanie z pierwszym akapitem? Spore. Bo głównym argumentem, dlaczego autor nie zdecydował sie na płytkę trawioną, jest "nie umiem", "nie wiem czy wyjdzie". A skąd możesz to wiedzieć skoro nie próbowałeś? To naprawdę nic trudnego, wiem, bo sam się bałem przed pierwszym trawieniem. Niepotrzebnie, już pierwsza, robiona własnoręcznie płytka, wyszła bardzo dobrze a wcale się nie namęczyłem. Potem jest drugi etap strachu - płytka dwustronna. Wcale nie trudniejsza niż pojedyncza, dochodzi zaledwie jeden krok więcej... Po tym przydługim wstępie czas na przydługi artykuł.

NARZĘDZIA

  • Program do projektowania płytek, w moim wypadku Eagle w wersji darmowej
  • Drukarka laserowa
  • Papier do termotransferu albo papier kredowy albo „śliskie” w dotyku ulotki („lub czasopisma”)
  • Papier śniadaniowy/ papier do pieczenia / pergamin
  • Laminat PCB jedno lub dwustronny
  • Papier ścierny wodny P800
  • Wytrawiacz B327
  • Żelazko
  • Izopropyl lub podobny preparat do odtłuszczania
  • Aceton.
  • i kilka rzeczy o których zapomniałem a pojawią się w treści.

WZORY ŚCIEŻEK

Pierwszą niezbędną rzeczą przy przygotowaniu własnej płytki PCB jest pozyskanie wzoru ścieżek. Ja do tego celu wykorzystuje darmowy program Eagle PCB, więc automatycznie kilka wskazówek do niego się pojawi. Nie będzie to natomiast stricte kurs Eagle, także techniczne aspekty rysowania płytek omijam szerokim łukiem a podstawy jeśli jej nie masz, należy poszukać po kursach dostępnych w internecie. Ja posłużę się płytką którą męczyłem ostatnio. Zawiera pola na elementy SMD w obudowach 1206 (rezystory i kondensatory ceramiczne) oraz typowe elementy przewlekane (kondensatory elektrolityczne i rezystory mocy). Płytka będzie jednowarstwowa ale z warstwą opisową pod elementami przewlekanymi. Można też użyć znalezionego w necie gotowca. pcb Aby uzyskać odpowiednie wzory warstw, dolnej i górnej, będziemy pracować na pliku *.brd programu Eagle. Przyjmuję że warstwa dolna (Bottom) jest warstwą ze ścieżkami i elementami SMD, na górnej (Top) natomiast umieszczam opis. I w dalszej części artykułu tak będę te mozaiki nazywał. Górna warstwa opisowa komplikuje wykonanie PCB, natomiast dobrze zaprojektowana, ułatwia znacznie późniejsze lutowanie. Opis jest całkowicie opcjonalny i można bez problemu obejść się bez niego, robiąc pcb jednowarstwową. Jeśli projekt jest gotowy, warto ułatwić sobie późniejsze wiercenie. Otwieramy plik brd z mozaiką ścieżek. Z menu Plik wybieramy Run i dwuklikiem zatwierdzamy skrypt „drill-aid”. Skrypt ten wstawia w miejsca wszystkich wierceń (przelotki, punkty lutownicze) pierścienie o określonej, małej, średnicy wewnętrznej. Dzięki temu, po wytrawieniu płytki, w środku każdego punktu lutowniczego znajduje się mały wytrawiony punkcik, którym centrować będzie się wiertło. Tak więc, w oknie które się wyświetli, wpisujemy wartość średnicy owego punkcika. Domyślnie jest 0,3mm, ja natomiast ustawiam 0,4mm – lepiej działa z moją drukarką. W ten sposób stworzy się kolejna warstwa w menu warstw programu. Do przygotowania „matrycy” strony dolnej, z menu warstw wybieramy warstwy Bottom, Pads, Vias, Center Drill oraz wszystkie inne, które zawierają elementy, które chcemy zachować (np. na wartwie Dimension znajduje się domyślne obramowanie). Powinno wyglądać to np. tak: bottom Drukujemy. W opcjach druku zaznaczmy druk w skali 1, na czarno. Darmowy Eagle ma ograniczone pole płytki do 8x10cm. Z łatwością więc płytka taka, zarówno warstwa górna i dolna zmieszczą się na jednym arkuszu A5. W końcu o środowisko trzeba dbać i nie stać nas na marnowanie papieru. W sterowniku drukarki ja ustawiam druk w pionie, przyciemniony, w dużej rozdzielczości. Wykonuje pierwszy wydruk, wykorzystując podajnik ręczny drukarki i kartkę papieru kredowego czy ulotkę przyciętą do formatu A5. Następnie należy wydrukować stronę górną. Z menu warstw Eagle wybieramy warstwy: Top, Vias, tNames, tPlace, Dimension, Holes, tDocu. Warstwę Top wykorzystałem, tym razem, do rysowania zworek. Wygląda to, mniej-więcej, tak: top Przechodzimy do opcji drukowania. Należy wybrać te opcje, co poprzednio oraz UWAGA, opcję Mirror – odbije ona lustrzanie warstwę górną. Wydrukować na tej samej kartce, na której znajduje się poprzedni wydruk, ale tak aby wydruki nie nałożyły się na siebie. Nie mogą być też na tej samej wysokości ale po różnych stronach kartki. mozaika Jeśli do dyspozycji macie edytor pdf, można najpierw stworzyć pdfy zamiast wydruków, skopiować obie mozaiki na jedną kartkę i wydrukować raz. Ta opcja jest lepsza dla posiadaczy starszych lub uszkodzonych drukarek, które brudzą papier (tak właśnie zachowuje się moja). Ten krok jest nieistotny dla osób, które nie robią warstwy opisowej. Wydruki należy rozciąć, z zapasem minimum z 3 stron. Następnie za pomocą szpilek wycentrować otwory i skleić ze sobą taśmą klejącą (z dwóch lub trzech stron) oba wydruki, aby uzyskać coś w rodzaju koperty, tonerem do wewnątrz.

LAMINAT

Wycinamy z laminatu płytkę większą o ok. 1mm na brzegach niż zaprojektowana. Najlepiej ciąć przy kątowniku, aby płytka wyglądała możliwie równo i schludnie. Krawędzie cięcia zatępić pilnikiem gładzikiem lub papierem ściernym. Mając wycięty prostokąt należy go zmatowić papierem ściernym wodnym. Osiemsetka jest do tego celu bardzo dobra, ale zarówno 400 jak i 1200 też się nada. Delikatnie przecieramy powierzchnię miedzi wzdłuż jednej z krawędzi, następnie prostopadle. Nie musi być to mocne tarcie, ale takie, żeby rysy w jednym kierunku miały w miarę równą głębokość. Po tym zabiegu płytkę należy dokładnie umyć płynem do naczyń oraz odtłuścić, np. izopropylem. Z obu stron. Od tej pory nie dotykamy miedzi palcami. image001image002

TERMOTRANSFER

Należy przygotować miskę z ciepłą wodą i kropelką płynu do mycia naczyń oraz jakieś kombinerki/szczypce do przeniesienia gorącej płytki do wody. Dalej jest już prosto. Kopertę z laminatem w środku wkładamy pomiędzy złożony na pół papier śniadaniowy, kładziemy na szmatce na desce do prasowania i przykrywamy również szmatką. Papier śniadaniowy spowoduje że roztopiona taśma klejąca nie przyklei się do ściereczki. Stronę ze ścieżkami leży skierowana ku górze. Temperaturę na żelazku ustawiamy pomiędzy 2 a 3 kropki (trochę powyżej temp. prasowania wełny). Bez pary. Prasujemy lekko dociskając, niezbyt dynamicznymi ruchami ,przez 7-8 minut. Po tym czasie odwracamy płytkę razem z papierem śniadaniowym i prasujemy jeszcze chwilę warstwę opisową (30sek-1min). Za pomocą kombinerek wkładamy gorącą płytkę do miski z wodą. I mamy 15min. wolnego. W tym czasie papier musi nasiąknąć wodą. image003image004image005image006image007 Po nasiąknięciu papier należy delikatnie oderwać. Prawdopodobnie nie zejdzie w całości. W dodatku, sporo włókien zostanie na płytce. Na szczęście przeniesiony termicznie toner trzyma się miedzi dość mocno. Włókna spomiędzy ścieżek można usunąć poprzez pocieranie płytki opuszkami palców, papier powinien zacząć się „rolować”. Oczywiście wszystko to robimy w misce z wodą. Po wyjęciu płytki z wody toner zbieleje – jest to efekt pozostawania włókien celulozy w tonerze. O ile w warstwie ze ścieżkami to nie przeszkadza (toner i tak będzie zmyty później) o tyle psuje to cały efekt opisów. Dlatego proponuję przemyć, z wyczuciem, płytkę z obu stron ostrą stroną gąbkowego zmywaka i płynem do naczyń. Wysuszyć. image008image009image010image011image013

TRAWIENIE

Płytkę należy dokładnie obejrzeć pod lupką. Czy między ścieżkami nie ma pozostałości włókien albo nadmiarowego tonera – te należy zdrapać igłą lub nożykiem. Oraz czy ścieżki nie są nigdzie przerwane – jeśli tak, wystarczy poprawić markerem lub cienkopisem. Płytkę należy ponownie umyć płynem do naczyń – teraz już delikatnie palcami. image014image015image016 Do przygotowanego roztworu wytrawiacza (wg instrukcji na opakowaniu) wrzucić laminat. Roztwór najlepiej trawi gdy jest podgrzany do 50-60stopni. Ponieważ nie posiadam żadnej grzałki, naczynie z wytrawiaczem wkładam do większego pojemnika i zalewam go gorącą wodą, tworząc tzw. łaźnię wodną. Co jakiś czas mieszając czekam aż miedź z odsłoniętych miejsc zniknie. Paluchów staram się tam nie wkładać, ale bez przesady, kwas to to nie jest. image017image018image019 Po skończonym trawieniu wyciągam pęsetą płytkę i płuczą ją pod bieżącą wodą. Szmatką zwilżoną acetonem zmywam toner z warstwy ścieżek. Moczyć trzeba często, aceton szybko ulatuje. I zmieniać miejsce na szmatce, którym się czyści, bo zostaną plamy i smugi na laminacie. Podczas czyszczenia należy zachować ostrożność, aby nie zmyć przez przypadek opisów z drugiej strony. Zamiast acetonu można użyć zmywacza do paznokci – prawie na pewno zawiera aceton ;). Z tym że może zawierać również jakieś olejki pielęgnacyjne do damskich pazurków. Po takim zabiegu konieczne jest porządne mycie wodą z płynem do naczyń i przetarcie izopropylem. image020image021image022image023image024 Jak widać wyraźnie, nie wszystkie opisy się odbiły, również niektóre krawędzie ścieżek są postrzępione. Jest to wina uszkodzonego bębna w mojej drukarce, brudzi papier w jednych miejscach, w innych nakłada za mało tonera. Czasami mam możliwość skorzystania z lepszej drukarki, wtedy wszystkie te problemy znikają.

WIERCENIE

Wyczyszczoną płytkę płuczę, wiercę na wiertarce pionowej wszystkie potrzebne otwory (0,8mm na rezystory i małe elementy oraz 1, 1,2 lub 1,5mm na większe). Następnie jeszcze raz delikatnie poleruję miedź papierem P800, aby wyrównać krawędzie otworów i zdjąć ewentualne resztki tonera. I ponownie odtłuścić izopropylem stronę ze ścieżkami. image026image027 I właściwie płytka jest gotowa. Ja jeszcze wykonuje malowanie obu stron. Ścieżki pokrywam roztworem kalafonii w izopropylu, ułatwia lutowanie i zabezpiecza ścieżki przed utlenianiem; opis natomiast lakieruję sprayem. image028

EFEKT PRACY

Tak prezentuje się płytka jednostronna z opisem po lakierowaniu i gotowa już, polutowana, płytka ze ścieżkami po obu stronach. Obie wykonane tą samą metodą image029image030 I to by było na tyle, mam nadzieję że nie zanudziłem nikogo na śmierć. Wszystkie zdjęcia i grafiki w artykule są moje, nie wolno ich wykorzystać bez podania odnośnika do tego artykułu. Czytaj dalej...

Jak lutować?

$
0
0
IMG_3945
Na wstępie tego poradnika chciałbym się przywitać z majsterkowiczami. Jak wiemy pytanie "jak lutować" zadaję sobie mnóstwo ludzi na tym świecie oczywiście mowa tutaj o tych którzy dopiero raczkują w temacie majsterkowania.  Moją wiedzą postanowiłem się podzielić z kilku powodów mianowicie: mała ilość polskich poradników na temat lutowania, brak szczegółów w artykułach. Przejdźmy więc jednak dalej, jeśli dalej czytasz mój artykuł wiedz że od samej teorii jeszcze nic nigdy się nie zlutowało, a w tym temacie najważniejsza jest praktyka. IMG_3945

Co nam będzie potrzebne:

  • Lutownica transformatorowa
  • Cyna
  • Kalafonia
  • Koszulka termokurczliwa
  • Kombierki
  • Szczypce
  • Kabel do zlutowania :)
123 

Uwaga! Nie należy dotykać grotu lutownicy po nagrzaniu, ponieważ grozi to bardzo poważnym oparzeniem

Opary kalafonii w dużych ilościach mogę powodować dyskomfort

 

"Step by step" czyli krok po kroku:

  1. Ściągamy izolacje z przewodów około 5mm.
  2. Zakręcamy końcówki.
  3. Nagrzewamy lutownicę.
  4. Wkładamy kabel do pojemnika z kalafonią i delikatnie dotykamy go lutownicą.
  5. Wkładamy kabel do kombinerek.
  6. Nagrzewamy lutownicę.
  7. Przykładamy lutownicę do kabla po 2-4 sekundach przykładamy cynę (nie do grotu tylko do kabla)
  8. Jeśli stwierdzimy że cyny na kablu jest wystarczająco oddalamy cynę i lutownicę.
  9. Kroki od 4 do 7 należy powtórzyć na drugim kablu.
  10. Gdy już po cynowaliśmy końcówki przechodzimy do zlutowania w całość.
  11. Jeden kawałek kabla wkładamy do kombinerek.
  12. Drugi kawałek bierzemy w rękę.
  13. Nagrzewamy lutownicę.
  14. Grzejemy cynę na kablu w kombinerkach
  15. Po roztopieniu przykładamy drugi kabel i czekamy około 3 sekund aż cyna na drugim, kablu się roztopi a kable połączą.
  16. Zakładamy koszulkę termokurczliwą.
  17. Obkurczmy koszulkę termokurczliwą.

Jeśli jesteś w posiadaniu tzw. Trzeciej ręki będzie ci wygodniej podtrzymać przewód

 

Kilka zdjęć które powiedzą Ci wszystko:

IMG_3983IMG_3982IMG_3979IMG_3972IMG_3971IMG_3960IMG_3958IMG_3954IMG_3951

Niedługo zamieszczę poradnik na temat lutowania elementów przewlekanych oraz SMD do których stosuję stację HotAir + grot. Przy drugim lub trzecim poradniku zaproponuję krótki konkurs gdzie do wygrania będzie kilka zestawów Kalafonii oraz Cyny mam trochę tego po likwidacji pobliskiego sklepu elektronicznego.

W następnych artykułach będę starał się poprawić pisownię oraz gramatykę zdań, aby moje porady czytało miło i przyjemnie przy porannej kawce.

Pamiętajcie praktyka czyni mistrza!

Czytaj dalej...

Automatyczna zabawka laserowa dla psów i kotów

$
0
0
laserowa-zabawka-dla-psa-ikona
Witajcie. Chciałbym Wam dzisiaj przedstawić projekt, do wykonania którego przymierzałem się już od dłuższego czasu. O ile pamięć mnie nie myli, wspominałem o nim już chyba kilka miesięcy temu na majsterkowym fanpage, albo stronie na Google+ :) Zrobimy dzisiaj w pełni zautomatyzowaną laserową zabawkę dla zwierząt. Każdy posiadacz psa lub kota może potwierdzić, że zwierzaki te z wielkim zawzięciem potrafią ganiać za światłem lasera :D Opisana w tym poście zabawka sama będzie sterowała laserem poruszając nim w sposób zupełnie losowy. Czytaj dalej...

SD Drive/Loader dla HackVision

$
0
0
tvout
Bardzo tęskniliście? W czasie, gdy Wy objadaliście się jajkami, białą kiełbasą i żurkiem, albo odgarnialiście wiosenny śnieg z podjazdu - ja również nie próżnowałem. Projekt, który zaraz przedstawię, pomimo, że początkowo wyglądał na niespecjalnie skomplikowany, przysporzył mi masy nieoczekiwanych problemów i nawet kilka razy byłem bliski rzucenia wszystkiego w kąt. Ale udało się! Nie ukrywam, że nie dałbym rady bez pomocy internetu i bez mojego wrodzonego uporu. A teraz przyszedł moment, aby podzielić się z Wami zdobytą w bojach wiedzą i pochwalić osiągniętym z wielkim trudem sukcesem. Już jakiś czas temu zainteresowałem się biblioteką TvOut przeznaczoną dla Arduino, która umożliwia wyświetlanie obrazu na telewizorze przy pomocy standardowego wejścia kompozytowego (zazwyczaj żółty chinch).  Sam układ jest banalnie prosty do wykonania i wygląda tak: tvout Jak widać potrzebujemy tylko dwóch rezystorów i możemy wyświetlać obraz na ekranie telewizora!!! Niestety, możliwości naszego mikroprocesora są niewielkie i pamiętajmy, że cały obraz musimy generować w pamięci RAM, której w przypadku Arduino mamy 2Kb. Zatem maksimum jakie możemy wyciągnąć wygląda następująco:
  • rozdzielczość maksymalna 128x96
  • obraz czarno-biały i to dosłownie. Mamy tylko dwa kolory.
  • biblioteka TvOut.h - a dokładniej  - bufor obrazu zajmuje tyle pamięci, że należy bardzo uważać przy programowaniu i nie używać dużych struktur danych, ani dużej ilości zagłębień z funkcji do funkcji, bo może to powodować szybkie przepełnienie stosu.
  • nie ma miejsca na "frame-buffer" (dodatkowy bufor obrazu), zatem wszystkie zmiany obrazu wyświetlamy bezpośrednio na ekranie, co przy szybkich animacjach może powodować migotanie.
Biorąc pod uwagę, że to wszystko mamy tylko dzięki dwóm rezystorom, to i tak nie ma co narzekać :) Podstawowe możliwości biblioteki TvOut prezentuje poniższe demko dostarczane wraz z biblioteką: http://www.youtube.com/watch?v=MEg_V4YZDh0 Fajnie co? Moja pierwsza myśl: TETRIS! Oczywiście okazało się, że już ktoś na to wpadł i mamy tetrisa na Arduino: http://www.youtube.com/watch?v=bHpFv_x_8Kk Po dłuższej chwili googlania, okazało się, że ktoś już nawet zrobił mini-konsolę do gier opartą o Arduino: http://nootropicdesign.com/hackvision/ Wow! Chce to! Mam już wprawdzie niemal w stu procentach identyczny prototyp na płytce stykowej, ale bez takich ładnych przycisków i kolorowych gniazdek. Zapragnąłem oryginalnego hackvision. Okazało się, że rzeczone - jak gdyby nigdy nic - znajduje się w ofercie sklepu Nettigo. O tutaj: klik ! Cudownym zbiegiem okoliczności, za mój poprzedni artykuł o zegarze otrzymałem od Nettigo, 50% zniżkę na zakupy, więc nie zastanawiałem się długo. Dorzuciłem do koszyka jeszcze ze trzy Atmegi, bo już mi się pokończyły i kliknąłem "zamawiam". Po dwóch dniach truchtem odwiedziłem paczkomat i rzuciłem się do lutowania. Płytka do samego hackvision, jest wykonana naprawdę ładnie i solidnie. Jest czarna i błyszcząca i wyjątkowo ciężka jak na laminat. Sprawia wrażenie jakby była wykonana z ceramiki, a może nawet jest? Samego lutowania było 15 minut, bo elementów jest naprawdę niewiele. O dziwo polutowałem wszystko sprawnie za pierwszym razem i układ zaskoczył, bez żadnych problemów. Na "fabrycznym" 328 dostarczonym z hackvision, są wrzucone dwie gry: SPACE INVADERS i PONG. Po zapełnieniu całej listy rekordów w SPACE INVADERS, postanowiłem w końcu zabrać się za programowanie swoich gier. I tutaj pierwsza kłoda pod nogi. Samo hackvision - owszem - posiada bootloader Arduino, ale nie ma portu USB. Ma wyprowadzony jedynie port szeregowy w standardzie TTL. Zatem, aby coś na nie "wrzucić", potrzebujemy przejściówki z portu COM na poziomy TTL, lub jakiś interfejs FTDI (na przykład taki: http://nettigo.pl/products/119 ). Niestety, w śnieżny kwietniowy weekend nie było szans, abym coś podobnego nabył. Zatem aby wymienić SPACE INVADERS na inną grę, nie pozostało mi nic innego, jak programowanie samego układu 328 w podstawce Arduino, czyli przekładanie układu tam i z powrotem. Niespecjalnie wygodne, poza tym, przypuszczam, że po kilku takich operacjach, układ nie "siedziałby" w podstawce już tak jak powinien. Z drugiej strony, skoro ma to być przenośna konsola, to trochę bez sensu że za każdym razem do wymiany gry potrzebny był komputer, prawda? I tak właśnie urodził się pomysł: skoro do programowania HackVision potrzebujemy portu szeregowego, to przecież możemy do tego celu użyć drugiej Atmegi. W końcu ma port szeregowy i to w dodatku od razu w standardzie TTL! Będzie jeszcze potrzebne jakieś źródło danych dla naszego bootdysku - padło na moduł karty SD podłączany po SPI. SD Kupiłem jeden onegdaj, sprawdziłem że działa i do tej pory się kurzył. No to w końcu się przyda. Nie będę się tutaj rozpisywał, na temat użycia kart SD wraz z Arduino. W sieci jest masa dobrze opisanych przykładów i jest to w sumie całkiem proste. Jedyna uwaga, to może to, że dostarczana wraz z Ardiono IDE biblioteka SD.h, po skompilowaniu zajmuje prawie 19KB. Początkowo jako główny układ chciałem użyć Atmegi 168 (16kB flash), ale właśnie ze względu na rozmiar biblioteki SD musiałem jednak sięgnąć po 328 (32kB pamięci flash). Podsumowując powyższe, pomysł jest generalnie taki:
  • Program (grę) do wgrania na hackvision umieszczamy na karcie SD 
  • Kartę SD umieszczamy w naszym układzie - od tej pory roboczo zwanym "SD Drive"
  • SD Drive podłączamy łączem szeregowym (TTL) z hackvision
  • Inicjujemy (jakoś) procedurę ładowania - i pakujemy program z karty do konsoli
Idea jest - czas na realizację. Zacząłem szukać jakiegoś opisu jak działa bootloader i jak musimy przygotować dane, żeby je sprytnie "wepchać" do naszej konsoli. Okazało się, że nie jest to wcale takie proste. Aby przełączyć bootloader w tryb programowania układu, musimy użyć protokołu programatora stk500, ale na szczęście już ktoś próbował zrobić coś podobnego tutaj:http://baldwisdom.com/bootdrive/Super. Czyli w zasadzie mamy prawie gotowe rozwiązanie!!! Niestety - mielibyśmy - gdyby działało tak jak powinno. Ale o tym dopiero za chwilę. Zachęcony projektem BootDrive postanowiłem nie bawić się w płytkę stykową i od razu wykonałem sobie cały układ na na płytce uniwersalnej. Pewnie gdyby nie to, że zrobiłem już płytkę - to rzuciłbym tym w cholerę przy późniejszych perypetiach, a tak - miałem dodatkową motywację aby to dokończyć.  A oto schemat mojego układu SD Drive:BOOTLOADER_schem oraz gotowy prototyp: boot-topboot-backbootready Projekt BootDrive - czyli nasz wyjściowy soft który będziemy modyfikować - zakłada, że w katalogu głównym karty znajduje się plik program.hex, i właśnie ten plik jest ładowany poprzez złącze szeregowe. Tylko skąd wziąć plik w formacie hex? Za każdym razem, gdy w naszym Arduino IDE naciśniemy przycisk Weryfikuj/Kompiluj (CTRL+R), kod naszego programu kompilowany jest do kodu binarnego i zapisywany właśnie w pliku hex. W windows 7 lokalizacja tego pliku jest następująca:

C:\Users\bocianu\AppData\Local\Temp\build7043948574983502558.tmp

Oczywiście "bocianu" to nazwa usera i u Was pewnie będzie inna. Podobnie cyferki w nazwie ostatniego katalogu - z pewnością tez będą inne. Wrzucam na kartę program.hex, odpalam BootDrive... i lipa. Nic się nie dzieje - pierwszy problem okazał się dosyć prosty do rozwiązania: BootDrive zakłada, że mamy do czynienia z bootloaderem Arduino Uno, który programowany jest z szybkością 115200 bps. Okazało się jednak, że hackvision domyślnie korzysta z bootloadera z Arduino Duemilanove, i należy w kodzie programu zmienić prędkość na 57600 bps. Programowanie w końcu zaskoczyło, ale  znów nie do końca. Z ośmiu plików hex jakie sobie przygotowałem do testów, tylko 3 ładowały się poprawnie. Pozostałe uparcie nie chciały działać. I nie zależało to od rozmiaru, bo akurat plik (gra) o największym rozmiarze ładowała się bez problemu. No i zaczęło się pierwsze żmudne debugowanie i po kilku godzinach braku efektów - pierwsze zwątpienie. Nie mam pojęcia co jest nie tak. A kiedy po chyba czterech godzinach zapisywania w logach i analizowania całej komunikacji w końcu udało mi się zlokalizować problem i wiedziałem już przynajmniej czego szukać. Okazało się, że gotowe rozwiązanie leży na forum Arduino: http://arduino.cc/forum/index.php?topic=92371.0 Dla osób nieobeznanych z językiem Szekspira podaję skrócone wyjaśnienie. Problem leżał w funkcji readPage(), która w wypadku kiedy w pliku hex znajdowała się linia krótsza niż 16 bajtów, nieprawidłowo formatowała dane przekazywane przez port szeregowy. Po poprawieniu funkcji wszystkie osiem plików zaczęło ładować się poprawnie. Ufff ! Straciłem parę godzin, ale jest sukces. Wszystko bardzo pięknie, ale nadal potrzebujemy komputera, żeby wymienić grę w naszej konsoli - przecież nasz BootDrive potrafi odczytać z SD tylko jeden konkretny plik. A co gdybyśmy chcieli umieścić na karcie wszystkie 8 plików i potem wybierać który ładujemy? Byłoby jeszcze piękniej - tylko jak to zrobić? Z góry założyłem, że nie robimy żadnych dodatkowych przycisków na samym układzie SD Drive - w końcu mamy już piękne przyciski na naszym hackvision i to właśnie z nich zaplanowałem sobie skorzystać. Idea:
  • podłączamy SD Drive do hackvision
  • SD Drive sprawdza czy na hackvision uruchomiony jest specjalny program ładujący (SD Loader)
  • jeżeli nie - SD Drive programuje hackvision plikiem SD Loadera i restartuje. Jeśli SD Loader już jest - czeka na komunikaty.
  • po uruchomieniu, SD Loader zgłasza swoją gotowość i odpytuje SD Drive o listę plików
  • SD Drive po zgłoszeniu sie SD Loadera wysyła mu listę dostępnych plików hex
  • hackvision (SD Loader) po otrzymaniu listy wyświetla ją na ekranie telewizora i czeka na wybór
  • po wybraniu przez użytkownika pliku, SD Loader wysyła odpowiedni komunikat do SD Drive
  • SD Drive otrzymawszy powyższą informacje, ładuje wybrany plik z SD i programuje nim hackvision
Pomysł zacny, prawda? Nie potrzebujemy już komputera. Wrzucamy wszystkie gry na SD i bierzemy konsole na wakacje :) Tylko jak zrobić żeby to wszystko tak ładnie działało? Oprócz stworzenia oprogramowania dla samego SD Drive będziemy musieli napisać program ładowany do hackvision, który będzie się komunikował z naszym układem - SD Loader. Oba układy mamy spięte przez port szeregowy, więc w kwestii komunikacji wydawałoby się, że nic więcej nie potrzebujemy. Zaplanowałem sobie następujący schemat komunikacji pomiędzy układami: sdloader_com Niewiele myśląc zacząłem pisać sobie funkcje do przesyłania komunikatów pomiędzy układami i wszystko zadawałoby się zbliżać wielkimi krokami do upragnionego sukcesu... ale. Jak zwykle MAŁE ALE. Żeby przekazać listę zawartości karty SD z układu SD Drive do SD Loadera musiałem sobie jakoś te dane przechować, chociaż na chwilę. A przypominam, że nasz SD Drive używa już biblioteki SD.h, biblioteki stk500.h, oraz paru kilobajtów kodu z projektu BootDrive. Okazało się, że próba zadeklarowania całkiem małej struktury przechowującej 8 nazw plików po 8 znaków każda (niby tylko 64bajty), powoduje przepełnienie pamięci i wszystko trafia szlag. Takie uroki programowania mikrokontrolerów. Wieczne kłody pod nogi i mało mało mało miejsca... Pierwsze co zrobiłem, to odchudziłem cały projekt BootDrive z funkcji debugujących i powywalałem wszystkie możliwe komunikaty błędów. W końcu zakładamy, że nasz projekt będzie działał bezbłędnie, więc te komunikaty i tak NIGDY się nie pojawią ;) prawda?  Pozwoliło mi to dodatkowo na rezygnację z wykorzystania w projekcie biblioteki SoftwareSerial.h, która była używana wyłącznie do debugowania. Po "odchudzeniu" udało mi się bez specjalnego problemu utworzyć strukturę przechowującą nawet 16 nazw plików. Szału nie ma, ale myślę, że na początek zupełnie wystarczy. Nie będę teraz prezentował całego kompletnego kodu,  wrzucę go na końcu artykułu dla zainteresowanych, bo jest go całkiem sporo. W tej chwili pokażę tylko funkcje odpowiedzialne za komunikację, na przykładzie uproszczonego kodu SD Loadera: [crayon-5163f858743c8/] Jak widać kod nie jest specjalnie skomplikowany. Na razie potrafimy zgłaszać gotowość i odbierać listę nazw plików od hosta. Wyobraźmy sobie teraz, że drugiej stronie kabla siedzi już bardzo podobny kod, wyposażony dodatkowo w obsługę SD i właśnie z karty odczytuje dane i elegancko nam je podaje. I tak właśnie było u mnie. I do tego etapu wszystko działałało jak powinno. Dane przechodziły w obie strony bez zakłóceń, cud miód. Pozostało mi teraz tylko dorobić wyświetlanie listy pobranych nazw, pozwolenie użytkownikowi na dokonanie wyboru i wysłanie tego poleceniem "load<numer>". Zdawałoby się - nic prostszego! Dołożyłem bibliotekę TvOut.h i Controllers.h, która umożliwia odczyt stanu przycisków na hackvision. I nagle z komunikacją zaczęły dziać się cuda. Raz działała, raz zupełnie nie, czasem przychodziły tylko urwane kawałki nazw. Kompletny chaos. Ale działo się to tak zupełnie losowo, że zacząłem podejrzewać jakiś błąd "analogowy" w stylu zimny lut, albo luźna wtyka. Przemierzyłem wszystko wzdłuż i wszerz, po czym wiedziony smutnym przeczuciem wyłączyłem bibliotekę TvOut i jak pewnie się domyślacie - wszystko wróciło do normy... Okazało się, że do generowania sygnału TV wykorzystywany jest timer1, czyli ten sam, który wykorzystywany jest przez port szeregowy (o timerach było nieco więcej  w moim poprzednim artykule). No i klapa - nie da się go "przerzucić" na inny timer, bo tylko ten posiada 16 bitowy rejestr i odpowiednią dokładność. I znów uroki mikrokontrolerów - strasznie tu ciasno. To był chyba największy moment zwątpienia. Początkowo kombinowałem, aby pobierać wszystkie dane, zanim zainicjuję bibliotekę TvOut, ale niestety. Po pobraniu listy plików i jej wyświetleniu, nadal potrzebuję komunikacji - przecież muszę jeszcze wysłać do SD Drive numer wybranego pliku. A wystarczy raz zainicjować bibliotekę TvOut i cała komunikacja po porcie szeregowym idzie w diabły... Wpadłem nawet przez moment na karkołomny pomysł, aby po dokonaniu przez użytkownika wyboru, zapisywać go pamięci EPROM, restartować układ i przy ponownym starcie, zanim zainicjuję TvOut wysyłać komunikat odczytany z EPROM. Mało to eleganckie, ale co robić... a tu nagle olśnienie. Pośród katalogów dostarczonych z biblioteką TvOut, oprócz katalogu z fontami, znajduje się tez tajemniczy katalog pollserial. Brzmi znajomo? https://code.google.com/p/arduino-tvout/source/browse/pollserial/ A dodatkowo pośród przykładów dostarczonych z TvOut znajduje się także przykład użycia tej biblioteki, która podobno umożliwia komunikację szeregową wraz z wyświetlaniem obrazu. [crayon-5163f85874448/] W teorii biblioteka ta działa to mniej więcej tak, że port szeregowy odczytywany jest tylko w momencie odświeżania pionowego - czyli przez krótki moment (około 62.5 us) pomiędzy wyświetleniami kolejnych klatek obrazu. Super. Tak się namęczyłem a tutaj gotowe rozwiązanie leży pod ręką. Jest tylko jeden feler - powyższy przykład po skompilowaniu - przynajmniej  u mnie - nie działał. Wyświetlał jakieś krzaki, albo najczęściej nic. Obniżenie prędkości transmisji do 19200bps spowodowało tylko tylko tyle, że więcej znaków wydawało się czytelne, ale niestety dalej nie nadawało się to zupełnie do wykorzystania w projekcie. A już miało być tak pięknie... Nie ukrywam że w tym momencie dopadły mnie początki depresji. Ale po raz kolejny zakasałem rękawy i rzuciłem się w wir cudzego kodu. Analizując sobie budowę biblioteki pollserial znalazłem następujący fragment: [crayon-5163f858744a7/] Hmmm... poszukałem więcej informacji o tym U2X, i okazało się, że jest to jeden z bitów rejestru kontrolnego układu odpowiedzialnego za komunikację szeregową, którego pełna nazwa brzmi:

Double the UART Transmission Speed

Z tego co się doczytałem (mogę się mylić) jest on odpowiedzialny za podwojenie prędkości próbkowania sygnału przychodzącego, co przy wysokich prędkościach transmisji umożliwia zmniejszenie ilości błędnych odczytów. Ale gdzie nam tam do dużych prędkości, więc wiedziony przeczuciem dodałem poniższą linię kodu, tuż za fragmentem, który pokazałem powyżej: [crayon-5163f8587451c/] I nagle cud. WSZYSTKO zaczęło działać jak powinno. Dane przelatują w obie strony, wyświetlają się na ekranie... istny szok. Gdyby nie fakt, że była to już czwarta nad ranem i świt nieśmiało spozierał w me okna, pewnie oddałbym się radosnej celebracji sukcesu, odtańczył dziki taniec i otworzył schłodzonego szampana lub ewentualnie cztery. Ale, jako że jestem osobą stateczną i racjonalną, odtańczyłem tylko szybkiego trojaka, ryknąłem gromko "wiwat bocianu" i natychmiast zasnąłem. Rano z niedowierzaniem uruchamiałem projekt co pół godziny, żeby sprawdzić, czy aby nie śnię. Nie śniłem. Wszystko działało bez zastrzeżeń i w dodatku nie chciało przestać :D Od tej chwili  nie było już żadnych większych problemów. W kilka godzin dokończyłem cały kod i zabrałem się w końcu za pisanie swoich gier. Oto jak prezentuje się gotowy działający SD Drive/Loader: http://www.youtube.com/watch?v=cB2zSmoYrhc Jakość filmu nie powala, ale widać wystarczająco dużo i widać że działa! Pozostało mi jeszcze przestawić ostateczny kod wszystkim zainteresowanym "nerdom". Ze względu na jego sporą objętość, nie będę wklejał go bezpośrednio, tylko wrzucę w postaci spakowanej: Niestety, musicie wybaczyć fakt, że powyższy kod skomentowany jest raczej szczątkowo. Ale jeżeli uważnie czytaliście artykuł, to nie powinniście mieć problemu z jego zrozumieniem. Wszelkie Wasze wątpliwości, chętnie rozwieję w komentarzach. A do zrobienia pozostało mi jeszcze:
  • stronicowanie w przypadku ilości większej niż 8 plików
  • podmiana bootloadera w hackvision na ten z Arduino UNO - pozwoli to na dwukrotnie szybsze programowanie
Po tych wszystkich moich perypetiach i wyzwaniach z jakimi przyszło mi się mierzyć, naszła mnie pewna błyskotliwa refleksja:

Nie ufaj kodowi pobranemu z internetu ślepo i bezwzględnie. To, że Ty nigdy nie robisz błędów, nie oznacza, że inni też tak potrafią :D

A tak już bardziej serio, to czasem warto nauczyć się czego na cudzych błędach. Chociaż nie zawsze jest łatwiej. Dzięki, że chciało Wam się czytać, jak zwykle zapraszam do komentowania i do zobaczenia (mam nadzieję) w następnym artykule. Czytaj dalej...

Pudełko z dowolną grafiką

$
0
0
DSC_1471 (Small)

DSC_1432 (Small)Cześć! Jestem Magda i na co dzień prowadzę bloga pod adresem www.sztukastudiowania.pl, gdzie publikuję wszystkie swoje poradniki. Dziś  chiałabym zaprezentować Wam prosty poradnik z serii ,,zrób to sam". Będzie to bardzo prosty i szybki sposób na umieszczenie dowolnej grafiki na drewnie - ja wykorzystuję ją do ozdabiania zdjęciami drewnianych pudełek. Jest to ciekawy sposób na spersonalizowany prezent dla znajomych (np. ze zdjęciami), dla dziewczyn (biżuteria), czy też jak w moim przypadku - zrobienie skrzynki na półprodukty biżuteryjne.

DSC_1434 (Small)

**Czego potrzeba: ** - drewniane pudełko (może być deseczka, da się też wykonać to np na grubej ramce na zdjęcia - ogranicza Was tylko wyobraźnia) - klej do drewna (może być wikolowy, może być też klej do decoupage, ale nie jest wymagany - zwykłe z castoramy będą tańsze) - lakier (może być spray, ale preferuję w puszce) - jeśli używacie lakieru w puszce, przyda się też pędzel - pędzelek do nakładania kleju do drewna - odrobina wody (do rozmieszania z klejem) lub - medium do farb akrylowych (ja go używam- dzięki temu klej nie zaschnie zbyt szybko) - nożyczki - dowolna grafika: może być z drukarki atramentowej (ja takiej używam), może to być np zdjęcie wycięte z gazety (dowolnie- może być nawet śliskie - przykład takiego pudełka pokażę na końcu znaleziska) - gazety do pościelenia pod pudełkiem, żeby nie nabrudzić na podłodze - żelazko (najlepiej wyłączyć funkcję pary, jeśli taką macie) Opcjonalnie możecie też zaprosić ciekawskiego zwierzaka do pomocy :-)

DSC_1435 (Small)

Polecam rozłożyć się ze wszystkim na podłodze - jest więcej miejsca i wygodniej, niż np. na stole. Jeśli chcecie pomalować swoje pudełko - możecie zamalować je całe. Farba nie przeszkodzi w naklejeniu grafiki. Ja boki pudełka okleiłam czarną i brązową, cienką taśmą izolacyjną (dopiero po naklejeniu grafiki)

DSC_1437 (Small)

Jeśli planujecie użyć zdjęcia wydrukowanego z grafiki atramentowej, zmierzcie najpierw pudełko, by wiedzieć, w ilu częściach musicie wydrukować całość (w przypadku, gdy pudełko jest tak duże, jak moje - potrzeba było 4 kartek A4). Najlepsze efekty będą przy grafikach, które nie wymagają łączenia (wtedy nie widać brzegów kartek, choć i to jest do zatuszowania np lakierem)

DSC_1438 (Small)

A teraz przystępujemy już do klejenia. Nie bójcie się, jeśli grafika wystaje - dotniecie to później. W jakimś starym kubeczku rozmieszajcie klej (do drewna/wikolowy) z odrobiną wody. Konsystencja nie może być zbyt rzadka, ani za gęsta, bo będzie się źle rozprowadzało. W międzyczasie podłączcie żelazko i ustawcie na minimalne grzanie (bez pary!). Używając pędzelka zamalujcie wieczko pudełka klejem, ale tylko w miejscu, w którym będziecie naklejali kartkę (nie ma potrzeby smarowania od razu całości). Jedna warstwa wystarczy. Zdecydowanym ruchem połóżcie kartkę na warstwę kleju, przeciągnijcie ręką, by pozbyć się bąbelków powietrza, a następnie delikatnie dociskajcie całość żelazkiem. Dociskanie spowoduje, że całość ładnie chwyci klej. Przesuwanie żelazkiem po mokrej grafice może spowodować, że zdjęcie się zroluje, albo zedrze. Gdy całość będzie już się trzymała, pora powtórzyć czynność w przypadku kolejnych części. Starajcie się układać kartki A4 koło siebie jak najbliżej, by nie były widoczne jej końce. Nie bójcie się jednak, gdy trochę widać - to jest do zamaskowania pod koniec robienia pudełka.

DSC_1439 (Small)

Końce dotnijcie, gdy już wszystko przykleicie. Nożyczkami, lub nożykiem do tapet.

DSC_1440 (Small)

Ja dodatkowo nakleiłam na wierzch litery, zamalowałam je farbą, a następnie odkleiłam, by napis był w środku biały.

DSC_1441 (Small)DSC_1442 (Small)DSC_1449 (Small)

Widać tutaj łączenia kartek. Przy nakładaniu lakieru pędzlem, gdy kartki trochę zmokną, będzie to mniej widoczne. Nie używam lakieru w spray'u, zatem nie wiem, czy efekt byłby taki sam.

DSC_1450 (Small)

Teraz lakierowanie. Użyłam lakieru błyszczącego. Polecam 1-2 warstwy w zależności od potrzeb. Po ich nałożeniu i wyschnięciu pudełko jest idealnie gładkie, jak ze sklepu (o ile wcześniej dobrze dociskaliście żelazkiem i nie ma żadnych bąbelków).

DSC_1452 (Small)

Trzeba pamiętać, żeby lakierować, gdy już klej całkowicie wyschnie. Ja się trochę pospieszyłam, przez co przy przeciąganiu pędzlem, kartka trochę puszczała farbę. Zostawcie do przeschnięcia na noc.

DSC_1454 (Small)

W związku z tym, że moje pudełko ma być na półprodukty, do wieczka umocowałam magnes (na małe okrągłe szczypce) i miejsce do włożenia skalpela.

DSC_1455 (Small)DSC_1456 (Small)

Jeśli chce wam się bawić (lub sprezentować dziewczynie pudełko z przegródkami na biżuterię), polecam wybranie się do castoramy i zakupienie 1-2 listew (zwykłych, cienkich). Po wymierzeniu wszystkiego, docięłam je (w miejscach łączenia do połowy grubości) elektryczną piłką. Wszystko do siebie pasuje.

DSC_1458 (Small)DSC_1459 (Small)

Szpargały już umieszczone w środku. Lubię, gdy wewnątrz pudełka kolor pozostaje naturalny. Oczywiście opcjonalnie środek też można udekorować.

DSC_1470 (Small)

I gotowe pudełko:

DSC_1471 (Small)DSC_1472 (Small)DSC_1473 (Small)

Inne przykłady zrobionych przeze mnie pudełek znajdziecie na moim blogu. A póki co życzę wam miłego majsterkowania! Pozdrawiam,

Magda

Czytaj dalej...

Bus Pirate – Część I: Wprowadzenie

$
0
0
2013-04-14 12.20.19
Cześć, to znowu ja:) Dzisiaj wprowadzę was nieco w temat  zmyślnej maszynki jaką niewątpliwie jest Bus Pirate.

Ale o co chodzi?

Według twórców Bus Pirate jest otwartoźródłowym, hakerskim* multinarzędziem które potrafi komunikować się z innymi urządzeniami. Początkowo Bus Pirate, jak sama nazwa mówi, służył do obsługi różnych magistral. Obecnie jednak jest to coś znacznie więcej. Poza tym, że obsługuje szereg magistral (m.in. 1wire, I2C, UART, SPI, MIDI, interfejs HD44780, klawiatura PC, JTAG) jest również analizatorem logicznym, generatorem PWM, częstościomierzem, sterownikiem serwomechanizmów, oscyloskopem (słabej jakości, ale jednak), programatorem AVR, FPGA, CPLD oraz... właściwie wszystkim co będziesz w stanie zaprogramować wykorzystując dostępne zasoby sprzętowe.

Podoba mi się. Gdzie to kupić?

Ja, wykorzystując zniżkę za poprzedni post, kupiłem swojego pirata w Nettigo, gdzie jest dostępny w wersji 3.a. Aktualnie gałąź wersji o numerze 3 jest gałęzią stabilną, cały czas aktualizowaną, dodatkowo jest jeszcze wersja 4 która aktualnie jest w wersji testowej, a po dopracowaniu zastąpi wersję 3. Ok, jednak nie samą płytką człowiek żyje, przydałoby się jeszcze trochę kabelków, aby "wyjść na świat".

Co? Jakie kabelki?

Takie:

2013-04-14 12.22.25

  1. Sondy do podłączenia do nóżek układów, przydatne do badania układów już wlutowanych w płytkę oraz SMD.
  2. Taśma IDC10 <-> IDC10, przydatna, jeśli masz chcesz wykorzystać swojego pirata np. do programowania AVR (jeśli masz wyprowadzone na płytce gniazdo ISP).
  3. Taśma IDC10 <-> Goldpiny męskie, prawdopodobnie najbardzie przydatna, najlepsza do użytku z płytkami stykowymi.
  4. Taśma IDC10 <-> Goldpiny zeńskie, przydatna do podłączenia do goldpinów gotowych modułów lub sond z punktu 1.
  5. Kabel USB A <-> MiniUSB B, popularne w użytku z aparatami cyfrowymi, dyskami zewnętrznymi, niektórymi odtwarzaczami MP3 i starszymi telefonami, prawdopodobnie masz taki w domu.
Z wszystkich tych kabelków obowiązkowy jest w zasadzie tylko kabel USB, reszta jest bardzo przydatna, ale możesz się też podłączyć do BP na różne inne sposoby:)

Ok, kupiłem. Po co są te wszystkie rzeczy na płytce?

Same potrzebne rzeczy:) Poniżej wszystko pokrótce opisane. 2013-04-14 12.21.25
  1. Gniazdo MiniUSB, służy do komunikacji z komputerem.
  2. Układ FTDI FT232R, interfejs USB <-> UART.
  3. Mikroprocesor PIC24FJ64GA, "mózg" Bus Pirate.
  4. Układ HEF4066B, analogowy przełącznik sterowany cyfrowo.
  5. Złącze IDC10, tutaj wyprowadzone są piny I/O oraz dwa napięcia (5V/3V3).
  6. Dioda PWR, sygnalizuje działanie Bus Pirate; czerwona.
  7. Diody RX/TX, sygnalizują przesył danych z/do Bus Pirate; RX niebieska, TX zielona.
  8. Dioda MODE, sygnalizuje wybór trybu, jeśli jest zgaszona to wyjścia są w stanie wysokiej impedancji; czerwona.
  9. Dioda VREG, sygnalizuje włączenie napięć zasilających układ zewnętrzny; żółta.
  10. Złącze ICSP, służy do programowania wbudowanego mikroprocesora, raczej nie będziesz go używał.
I jeszcze rozpisany pinout złącza IDC10 umieszczonego na płytce:2013-04-14 12.21.26

Dobra, jak to się obsługuje?

W przypadku Linuxa wystarczy jakikolwiek program służący do komunikacji po porcie szeregowym (ja używam screen), większość dystrybucji (Arch i Debian na pewno) ma sterowniki do FT232 wkompilowane w kernel. Na Windowsie trzeba zainstalować sterowniki do FT232 i podobnie jak na Linuxie jakiś program służący do komunikacji po porcie szeregowym. Parametry połączenia z Bus Pirate:
  • 115200 bps
  • 8 bitów danych
  • 0 bitów parzystości
  • 1 bit stopu
  • brak kontroli przepływu

Linux-way:

  1. Prawdopodobnie będziesz musiał się dodać do grupy uucp aby móc korzystać z urządzeń /dev/ttyUSB* (ewentualnie możesz pominąć ten krok i korzystać z Bus Pirate z użyciem konta roota): [crayon-516ea1d363444/]
  2. Teraz podłącz swojego pirata do komputera i sprawdź czy system go wykrył. Na płytce powinna zaświecić się dioda PWR oraz powinny mignąć diody TX i RX. Polecenie [crayon-516ea1d363495/] powinno wypluć coś zbliżonego do [crayon-516ea1d3634e1/] Z tych linii wynika, że Bus Pirate został poprawnie wykryty i przypisany do ttyUSB0.
  3. Jak na razie wszystko działa, można podjąć próbę połączenia z Bus Pirate za pomocą programu screen [crayon-516ea1d36352e/] Paradoksalnie, jeśli nic się nie dzieje, to znaczy, że wszystko działa:D
  4. Teraz wpisz komendę [crayon-516ea1d36357d/] Powinien wyświetlić się dość obszerny tekst pomocy, a pod nim regularny prompt [crayon-516ea1d3635c8/]

Windows-way:

  1. Zacznij od podłączenia Bus Pirate do portu USB swojego komputera. Po podłączeniu na płytce powinna zaświecić się dioda PWR oraz powinny mignąć diody TX i RX. Jeśli używasz Windows 7, to po podłączeniu pirata sterowniki powinny zainstalować się same. Nie wiem jak to wygląda na innych Windowsach, jeśli używacie to podzielcie się wrażeniami w komentarzach.win_2
  2. Jeśli masz już sterowniki, należałoby sprawdzić na którym (wirtualnym) porcie COM pracuje Bus Pirate. Aby to zrobić, uruchom Menedżer Urządzeń, np. tak:win_3Po uruchomieniu Menedżera odnajdź na liście urządzenie zawierające w nazwie USB Serial Port - to właśnie jest Bus Pirate. Jak widać, u mnie pirat dostał numerek COM4:win_4
  3. Ok, Bus Pirate jest już rozpoznany w systemie, czas na program do komunikacji po porcie szeregowym. Użyłem tutaj PuTTY głównie dlatego, że już go miałem na dysku. Jeśli chcesz, możesz użyć dowolnego innego programu tego typu. PuTTY możesz pobrać tutaj. Po uruchomieniu PuTTY zmień typ połączenia na Serial:win_5Następnie przejdź do strony Serial (ostatnia pozycja w lewym menu) i ustaw wszystko jak na obrazku poniżej, oczywiście zamiast COM4 wstawiając port na którym u ciebie pracuje Bus Pirate:win_6Jeśli wszystko ustawiłeś jak należy, po kliknięciu Open powinieneś zobaczyć puste czarne okno terminala. Jeśli tak sie stało, wpisz komendę [crayon-516ea1d363615/] i zatwierdź klawiszem Enter. Powinien ukazać się spory tekst pomocy, a pod nim regularny prompt [crayon-516ea1d363660/] jak na poniższym obrazku:win_7

Mam prompt, to znaczy że wszystko działa?

Na 99% tak, ale aby mieć 100% pewność zrobimy jeszcze test płytki. Bus Pirate ma wbudowany selftest sprawdzający czy wszystko w porządku z płytką. Aby przeprowadzić test, musisz zewrzeć ze sobą dwie pary pinów: +5V i VPU oraz ADC i +3V3. Do złączenia pinów najlepiej użyć takich zworek:2013-04-16 15.46.58Zwarte piny powinny wyglądać tak:2013-04-16 15.48.25Teraz czas na stronę programową. Połącz się z Bus Pirate i wydaj komendę [crayon-516ea1d3636ab/] Następnie podążaj za instrukcjami wyświetlanymi na ekranie (naciśnij spację, następnie jakikolwiek przycisk). W całości powinno wyglądać to tak: [crayon-516ea1d3636f6/] Jeśli dostałes jakikolwiek błąd to albo źle podłączyłeś zworki, albo twoja płytka jest uszkodzona.

Co to właściwie jest ten HiZ?

HiZ jest jednym z trybów pracy Bus Pirate, dosłownie oznacza on stan wysokiej impedancji na wyjściu pinów. Listę trybów możesz uzyskać wydając polecenie [crayon-516ea1d363741/] pozwalające na wybór jednego spośród kilku trybów. Domyślnie wybierany jest tryb HiZ.

To już wszystko?

Nie, w kolejnych częściach pokażę kilka protokołów w akcji. Poza tym zachęcam do poznawania Bus Pirate na własną rękę i zapraszam na stronę Bus Pirate na dangerousprototypes - prawdopodobnie najlepsze źródło wiedzy o Bus Pirate. * haker - to (za Wikipedią) "osoba o bardzo dużych, praktycznych umiejętnościach informatycznych (lub elektronicznych)" Czytaj dalej...

Naprawiamy monitor LCD, czyli jak nie dać się złapać na Planned Obsolescence

$
0
0
image009
Planned obsolescence jest terminem z języka angielskiego, oznaczającym mniej-więcej tyle, co „planowane postarzanie produktu”. Jest to coś w rodzaju doktryny filozoficznej, na której budują swoje biznesplany. Termin ten, po raz pierwszy pojawił się w latach 30 dwudziestego wieku, ale spopularyzowany został w latach pięćdziesiątych, przez inż. Brooksa Stevensa. Jak on sam tłumaczył, miało to być „zaszczepienie w kliencie potrzeby posiadania czegoś trochę mniejszego, trochę nowszego i trochę szybciej niż jest to mu potrzebne”. Potem termin ten zmienił minimalnie swoje znaczenie, mi jednak bardzo odpowiada ta definicja. Już w 1924r. wytwórcy zaczęli stosować owe praktyki. Ej, chwila, chwila. Czy ta definicja nie brzmi znajomo? Tak, tak. Producenci sprzętu robią nas w wała już od niemal 90 lat. Nie wszyscy, bo manufaktury nie mogą sobie pozwolić na robienie takiej chały, ale ogromne koncerny mają specjalne działy zajmujące się strategiami planowanych awarii. Planowanych, czyli zaraz po skończeniu gwarancji. Na szczęście dziś przeistoczymy się w bojowników o wolność, prawość i nasze oszczędności i nie damy się kapitalistom!

Monitor się spsuł

Nasz LCD zaczął się dziwnie zachowywać. Potrafi się sam wyłączyć, szuka źródeł sygnału na innych portach niż podłączone, miga lub nie łapie synchronizacji. Z dużą dozą prawdopodobieństwa, można przypuszczać że właśnie kondensatory elektrolityczne w sekcji zasilania odeszły do krainy wiecznych łowów. Bardzo popularną metodą planowego uszkodzenia sprzętu jest umieszczenie wrażliwych na ciepło kondensatorów elektrolitycznych w pobliżu elementów wydzielających spore ilości energii w ten właśnie sposób. Może wymiana kondensatorów uzdrowi monitor? Jest na to spora szansa. A przynajmniej w 3 monitorach które miałem okazję robić, to właśnie było przyczyną niestabilności pracy.

Rozbieranie monitora

Rzecz jasna opiszę swój przypadek, ale postaram się pisać ogólnikowo, podając wskazówki jak zabrać się za każdy inny monitor. Odłączamy wszystkie kable od monitora. Kładziemy na biurku, matrycą skierowaną w dół. image001 Odkręcamy śruby mocujące ekran na podstawie i wszystkie śruby w obudowie. Następny krok wymaga nieco sprytu, ale i siły. Każda obudowa będzie złączona zatrzaskami, które po częstokroć trzymają bardzo mocno. Za pomocą płaskiego wkrętaka należy stopniowo rozłączać połówki obudowy. Uwaga na często popełniany błąd, obniżający mocno estetykę, czyli prostopadłe włożenie go w szczelinę i kręcenie. Spowoduje to powstanie brzydkich szczerb wyłamanego plastiku! Wkrętak umieszczamy jak najbardziej równolegle do krawędzi z którą aktualnie pracujemy, wkładamy od dołu ekranu i przesuwamy ku górze, tak aby rozdzielenie odbywało się pod małym kątem (kątem ścięcia narzędzia) i z dużą powierzchnią nacisku. Powinno się wam ukazać coś takiego. Wszystko jest zaekranowane. Blaszane ekrany należy zdjąć. U mnie wystarczyło nacisnąć jego krawędź w prawo i delikatnie podnieść zaczepy. image002 Kolejnym krokiem jest rozpięcie kabli. KONIECZNIE zanotuj sobie a najlepiej zrób zdjęcie, w jaki sposób kable są wpięte. Jeśli jesteś pewien że owo zdjęcie zrobiłeś albo notatki są poprawne, możesz zabrać się do delikatnego rozpięcia wtyków. image003image004image005image006 U mnie, po poprzednim kroku, można było już zdjąć puszkę z elektroniką z matrycy. image007 Matrycę odkładamy w inne miejsce, chwilowo nie będzie potrzebna. Lokalizujemy płytkę z sekcją zasilania – najprościej zobaczyć na której jest wlutowane gniazdo zasilające. Odkręcamy i odwracamy tak aby było widać elementy. image008

Szukamy usterki

Oglądamy wszystkie kondensatory elektrolityczne – mają postać walca z zaznaczoną biegunowością. Prawdopodobnie, niektóre z nich będą uszkodzone – da się to poznać po wybrzuszonym szczycie; „czymś” wylanym na szczycie lub na płytce lub rozdętej powierzchni bocznej (tworzy się baryłka zamiast walca). Czarne coś na powierzchni pcb obok kondensatora może być rozlanym elektrolitem ale może być również jakimś rodzajem kleju do usztywniania kondensatora. Jeśli po przejechaniu wkrętakiem/nożem poczujemy coś w rodzaju gumy – to klej. Jeśli będzie się kruszyć – to wylany elektrolit. Lekko poruszając każdy kondensator palcem sprawdzamy czy są dobrze wlutowane. Każdy obluzowany wymaga wymiany. U mnie wyglądało to tak: image009 Ciężko to na zdjęciu uchwycić, ale wieczka kondensatorów były wypukłe, pokryte czymś w rodzaju zaschniętej bryłki proszku. Było tego sporo więcej na obu, ale niechcący obtrąciłem przed zrobieniem zdjęcia. Czymś co mnie w ogóle nie zaskoczyło, a na co pragnę zwrócić wam uwagę – jest umieszczenie radiatora. Zupełnie, całkiem przez przypadek, znajduje się on i elementy mocno grzejące się, w pobliżu uszkodzonych kondensatorów... Notujemy położenie biegunów kondensatorów. Uszkodzone elementy należy wylutować. Można się posłużyć ssakiem, tasiemką, strzykawką lub posłużyć się każdym innym magiczny, sposobem, byle tylko wyjąć wadliwe podzespoły. W ich miejsce należy wlutować nowe, o takich samych parametrach (może być na wyższe napięcie), przeznaczone do pracy do 105 stopni Celsjusza. W moim przypadku padły 2 elektrolity, koszt nowych: 3zł. edit. Filip w komentarzu proponuje aby zastosować kondensatory przeznaczone do pracy w temp. do 105 stopni. Zatem dodaję tą wskazówkę i tutaj.image011image012 Przedmuchujemy płytkę, aby nie pozostało na niej żadnych drobinek mogących spowodować zwarcie. Składamy w kolejności odwrotnej do rozkładania. Podłączamy zasilanie i sprawdzamy czy się włącza. Jeśli nic nie łupnęło, możemy podpiąć sygnał z karty graficznej. U mnie naprawa skończyła się powodzeniem, monitor działa. image013image014 W ten właśnie sposób pokonaliśmy system, przedłużając życie monitora, kosztem kilku pln, zamiast wkładać parędziesiąt razy więcej do kieszeni koncernów. Oczywiście jest sporo awarii w których ten sposób nie zadziała. Ale koszt wypróbowania metody jest niewielki, czasowo zajmuje to ok. 1h, uważam że warto spróbować. Dla zainteresowanych zagadnieniem Planned Obsolescence polecam zajrzeć do artykułów na wikipedii: i do artykułów w google oraz w pismach branżowych (np. Chip). Zdjęcia moje, nie zgadzam się na umieszczanie artykułu i zdjęć nigdzie jeśli nie będzie podany autor (ja) i link do tej strony. Czytaj dalej...

Kubek z niezmywalnymi napisami

$
0
0
1
1 Cześć wszystkim! Słowem wstępu chciałabym powiedzieć, że cieszę się, że spodobał Wam się mój poprzedni poradnik z graficznym pudełkiem. I choć moje poradniki nie wpisują się raczej w kanony stricte majsterkowe, ani też typowo męskie, to pozwolę sobie zaryzykować (skoro Łukasz zaprosił do Majsterkowa, to z zaproszenia korzystam :D) i przedstawić Wam kolejny projekt - tym razem na kubki z niezmywalnymi napisami, które możecie wykonać w domu niemalże zerowym nakładem środków. Być może zainteresuje to raczej kobiece grono na Majsterkowie, lub też zachęci męską część do zrobienia niespodzianek drugiej połówce. :-) I jak zwykle - ciekawych innych poradników odsyłam też na swojego bloga.2

Czego potrzebujecie:

  • markera Sharpie - kupiłam Sharpie Industrial (do wszystkich powierzchni). Można też użyć zwykłego Sharpie. Natomiast Stained (do materiału) się nie nadaje (zmyje się). Jeśli nie macie takiego pod ręką  (a z własnego doświadczenia wiem, że są w Polsce raczej słabo dostępne, to możecie wybrać się do sklepu papierniczego i poprosić o markery do porcelany, które powinny działać na tej samej zasadzie).
  • ceramiczny kubek/filiżankę/talerz (cokolwiek chcecie) - pamiętajcie, by użyć naczyń, które mogą być pieczone w wysokich temperaturach bez pękania
  • pomysł - możecie napisać słowa swoich ulubionych piosenek, narysować coś śmiesznego, albo osobistego - bądźcie kreatywni.
  • kolory - jeśli chodzi o kolorową grafikę, to w przypadku markerów, które ja używałam, nie ma znaczenia, jaki kolor wybierzecie. Mogą to być standardowe, lub też złote/srebrne (sprawdzone, trzymają się tak samo). Pamiętajcie jednak, by sprawdzić wcześniej dokładną nazwę markera, bo tak jak pisałam wyżej - te do tkanin się nie nadają.
  • ołówek - jeśli nie jesteście zbyt pewni swojego projektu, nic nie stoi na przeszkodzie, by najpierw naszkicować go. Zawsze można łatwo skorygować ewentualne błędy (sprawne oko lub znawca francuskiego szybko wypatrzy błąd u mnie w napisie - ale o tym później :) )
3 1. Wzięłam stary ceramiczny kubek, który moja mama dostała przy kupowaniu kawy. Chciałam przy okazji zakryć napisy. 4 2. Z jednej strony narysowałam wąsy, a z drugiej serce. 65 3. Pokryłam całość dwa razy, by nie było białych prześwitów. 7 4. Po jednej stronie napisałam "Je adore..." (z fr. "j'adore" kocham/uwielbiam) (wiem, że powinno się pisać J'adore, ale popełniłam błąd z pośpiechu. Początkowo myślałam nad innym napisem i niestety na kubku został byk :D) i czarne serce. A po drugiej stronie "le moustache" - jako drugą część zdania. 8 5. Piekłam kubek, gdy moja mama wstawiła ciasto - w około 170 stopniach przez 30 minut. Następnie wyciągnęłam kubek z piekarnika, poczekałam aż odrobinę ostygnie, sprawdziłam, czy wszystko z grafiką jest w porządku i poprawiłam jedną warstwę na sercu (by mieć pewność, że nic się nie zmyje) i wstawiłam kubek ponownie do piekarnika na ok 20-30 minut. Wydaje mi się, że tego typu 2 stopniowe pieczenie było dobrym pomysłem, ponieważ teraz kubek (a właściwie dekoracja) jest wodoodporna. W przypadku mycia ręcznego jest 100% odporny (kubek testuję już prawie miesiąc i nic nie zmieniło się w jego wyglądzie). Niemniej jednak mycie w zmywarce jest wysoko niewskazane. I gotowe! :-) 910 Tym samym sposobem można udekorować też inne elementy. Ja zrobiłam napis "Bon Appetit" (fr. smacznego) na talerzach. Trzyma się po dziś dzień, a wykonywałam to rok temu. Fajnie mogą wyglądać też pomalowane wazoniki, a nawet porcelanowe rączki do sztućców (jeśli takie oczywiście posiadacie). 1112Czytaj dalej...

Serial port – wprowadzenie w pigułce

$
0
0
serialmonitor7
Witam majsterkowiczów! Dzisiaj chciałbym przedstawić Wam pokrótce, co to jest i jak można wykorzystać port szeregowy,  i jego monitor w zastosowaniach z Arduino. W tym wpisie wyświetlimy na panelu LCD tekst wpisywany poprzez serial monitor. Artykuł kierowanny jest głównie dla osób raczkujących w temacie Arduino, całość opisana jest pod wersję UNO.

Co będzie potrzebne?

Co to właściwie jest ten serial port?

Określenie serial port pochodzi z j. angielskiego i tłumaczone jest jako port szeregowy. Służy on do przesyłania i odbierania informacji, z i do komputera. W jego nazwie "szeregowy" oznacza, to że dla transmisji danych w danym kierunku dostępny jest tylko 1 pin. Przesyłać dane można przez ten port z różną, wcześniej ustaloną prędkością - jest to konieczne aby transmisja przebiegła prawidłowo.

Zaczynamy! - begin();

Chęć korzystania w danym programie z portu szeregowego trzeba oczywiście zadeklarować :), do czego służy funkcja begin(). Parametry jakie przyjmuje to:
  • prędkość - wyrażona w bodach (ang. baud), czyli bitach na sekundę. Najczęściej stosowaną prędkością jest 9600 bitów na sekundę, w zależności od potrzeb może być ona większa lub mniejsza. Należy pamiętać, aby zadeklarowana prędkość na obu urządzeniach była taka sama!
  • drugi argument funkcji jest opcjonalny i konfiguruje takie parametry jak bit stopu i bit kontroli parzystości, nie będziemy go dziś używać(przynajmniej nie innego, niż domyślny : ).
Teraz przejdziemy do pierwszego programu, jako że minimum teorii już mamy. [crayon-517443d661397/] W tym miejscu omówię jeszcze komendę Serial.println() - drukuje ona całą linijkę. Jeśli chcemy aby kilka rzeczy zostało wypisanych w tym samym wierszu moża użyć Serial.print(). Zakończyć ten wiersz można poprzez wydrukowanie znaku nowej lini tj. Serial.print("\n"); Na posiadaczy Arduino LEONARDO czeka w tym miejscu mała pułapka. Kod raczej nie zadziała poprawnie z tego wzgledu, że płytka nie restartuje automatycznie programu po uruchomieniu serial monitora, tak więc kod powinien wyglądać tak: [crayon-517443d661412/] Więcej na ten temat można przeczytać tutaj.

Czy da się podejrzeć dane które są wysyłane i odbierane poprzez port szeregowy?

Tak! W środowisko programistyczne Arduino, wbudowane jest takie narzędzie jak serial monitor. Służy ono do odczytywania i wysyłania danych poprzez dany port szeregowy. Jak odczytywać a nawet i zapisywać na komputerze dane wędrujące poprzez ten port zostało opisane już tutaj: zapis danych temperatury, dlatego dziś skupię się głównie na komunikacji w drugą stronę - wysyłanie danych z komputera do Arduino. Po załadowaniu szkicu do Arduino, otwieramy serial monitor, można zrobić to na kilka sposobów: serialmonitor Naszym oczom powinno ukazać sie coś takiego: serialmonitor2 Jeżeli prędkość została źle ustawiona, pokaże nam się to samo okienko, tyle że z innymi informacjami: serialmonitor3 Po otworzeniu serial monitora prędkość można spokojnie zmienić, spowoduje to kolejne zrestartowanie programu.

Wypisywanie otrzymanych danych do serial monitora

W tym przykładzie po krótce omówię funkcje available() i spolszczony przykład kodu z manuala. Funkcja zwraca ilość bajtów które po przesłaniu poprzez port szeregowy czekają na odczytanie. Nie przyjmuje żadnych parametrów.  Na pokład Arduino ładujemy: [crayon-517443d66148b/] Po otwarciu serial monitora i wpisaniu przykładowych danych widzimy: serialmonitor4 Zaraz, zaraz... Coś tu nie gra! Jestem pewny, że przesłałem literkę a! Tak... W podanym przykładzie zapisywaliśmy otrzymane dane do zmiennej liczbowej (int), tak więc otrzymane dane są wyświetlane jako liczba. Owa liczba, jest reprezentacją przesłanego znaku w tablicy ASCII. Przy wyświetleniu otrzymanych danych( Serial.println(przeslanyBajt, DEC); ), ustawilismy wyświetlanie w postaci liczb dziesiętnych (ang. decimal). Jest możliwość reprezentacji znaków w innych systemach liczbowych: dwójkowym(BIN, ang. binary ) lub szestastkowym(HEX, ang. hexadecimal). 

Wypisywanie wiadomości na LCD za pomocą serial monitora

W tym przykładzie przesłane dane, wyświetlimy w formie takiej, jakiej je pierwotnie wysyłaliśmy, czyli tekst jako tekst i liczby jako liczby. Pod Arduino podłączamy LCD. Schemat: serialmonitor4 Połączenie LCD do Arduino w ten sposób zostało dokładnie opisane tutaj. Po podłączeniu sprzętu, ładujemy na pokład następujący program: [crayon-517443d66156c/] Po załadowaniu programu, odpalamy serial monitor i wpisujemy dowolny tekst: serialmonitor5  Przed kliknięciem entera bądź wyślij z menu rozwijanego obok prędkości ustawiamy "Nowa linia (NL)" - oznaczać to będzie, że każdorazowo wysłany tekst będzie zakonczony znakiem nowej linii - a jest to warunek konieczny do tego, by nasz napisany wcześniej program zadziałał. Jeśli parametr był wczesniej ustawiony na "No line ending", a wysyłaliście jakieś wiadomości to czekają one na odbiór w buforze i zostaną odczytane z najbliższą wiadomością która będzie zakonczona znakiem nowej linii. Całość oczywiście wyświetli się na naszym podłączonym LCD: serialmonitor7 Minusem takiego rozwiązania sprawy jest dziwny znak wyświetlony na końcu wiadomości na LCD - jest to znak nowej linii, który został dodany do zmiennej odczyt_serial podczas odczytywania danych z bufora. Można temu w prosty sposób zaradzić, wystarczy zmienić miejsce w którym do zmiennej łańcuchowej był dodawany kolejno znak, po znaku(linijka 39) na: [crayon-517443d6615c6/] Powyższa instrukcja oznacza "jeśli znak odczytany z bufora nie jest znakiem nowej lini(\n), przypisz zmienną znak, do zmiennej odczyt_serial. Dla bardziej zaawansowanych - jeśli nie znacie, polecam zapoznanie się z funkcją serialEvent(). Po tym mało praktycznym wstępie ciężko zauważyć użyteczność portu szeregowego, jednakże wysyłając odpowiednie komendy z arduino na port szeregowy i monitorując go programem napisanym w innym języku(polecam Pythona), można  zrobić na przykład systemSMS powiadamiania o wciśniętym przycisku na pilocie : ) z tym, że zamiast odbiornika podczerwieni podłączyć można np. czujnik temperatury, wilgotności itd...    Czytaj dalej...

Zegar DS1307

$
0
0
zegar
Cześć i czołem koleżanki i koledzy elektronicy!  W artykule postaram się przybliżyć swój pierwszy projekt – Zegarek. Zdaję sobie sprawę, że nie brzmi to nazbyt imponująco. Niemniej, chyba większość adeptów trudnej sztuki elektroniki zaczyna swoją przygodę właśnie od zegarka. Jest to z jednej strony bardzo prosty układ, jednak z drugiej strony może przysporzyć wiele zgryzot i wątpliwości. Zatem, wierzę, że artykuł przyda się początkującym.  

Zapraszam do lektury!

 

1. Opis układu

Mózgiem, no a przynajmniej sercem układu jest procesor ATMEGA328-PU (taki sam jak w Arduino UNO). Czas pokazuję na czterech multipleksowanych 7 segmentowych wyświetlaczach. Dane do wyświetlaczy przesyłam przez ekspander PCF8574. Natomiast czas odmierzam w zegarze czasu rzeczywistego DS1037 z podtrzymywaniem bateryjnym, dzięki czemu nawet po wyłączeniu układu, czas jest nadal mierzony. Użytkownik za pomocą trzech przycisków: setup; up; down ustawia czas. Zasilanie całego układu zrealizowałem przez cztery baterie AA (1.5v każda) oraz stabilizator liniowy 7805. Lista potrzebnych elementów:  Zegar:
  • 1x DS1307
  • 1x koszyk na baterię 3V do DS1307
  • 1x kwarc 32.768KHz
  • 1x bateria CR2032 3V
W ofercie sklepu http://nettigo.pl można nabyć te 3 elementy na jednej eleganckiej płytce -  Moduł RTC - DS1307.Scalaki:Rezystory, kondensatory
  • 2x kondensator ceramiczny 22pF
  • 2x kondensator elektrolityczny 100uF
  • 4x rezystor 10k om
  • 2x rezystor 4,7k om
  • 1x rezystor 220 om
Można nabyć zestaw: Zestaw rezystorów i kondensatorów I reszta:

2. DS1307

Ten niepozorny scalak, to bardzo popularny zegar czasu rzeczywistego, który komunikuję się ze światem zewnętrznym via I2Cprzy użyciu pinów SDA oraz SCL.

DS1307DS1307 schemat

  • X1, X2 – kwarc 32.768 KHz,
  • VBAT– podtrzymywanie bateryjne (min 2.0 – max 3.5V),
  • GND – masa,
  • VCC– zasilanie (min 4.5 – max 5.5V),
  • SQW/OUT – wyjście sygnału prostokątnego, jeśli nie używany, to może wisieć w powietrzu,
  • SCL – sygnał zegara magistrali I2C,
  • SDA – sygnał danych magistrali I2C.
Zatem, pod nóżki X1 i X2 podłączamy kwarc 32.768KHz, jeszcze tylko z płytki Arduino bierzemy napięcie VCC, GND, sygnał SDA oraz SCL i możemy cieszyć się naszym cackiem. Można również podpiąć baterie(min 2.0 – max 3.5V) na nóżkę VBATi nasz DS1307 będzie pilnować upływ czasu nawet po odłączeniu zasilania VCC. Jak tylko ustawimy datę oraz czas, to od tego momentu z uporem lepszej sprawy bez wytchnienia układ będzie odmierzać milisekundę za milisekundą. Bez ustanku… A w zasadzie do wyczerpania baterii ;-) Tak wygląda układ na płytce prototypowej z wykorzystaniem Arduino. DS1307 arduino

Dla porządku dodamy do sygnałów SCL oraz SDL rezystory pull-up o wartości 4,7KΩ, dzięki czemu na magistrali będziemy mieli stan wysoki gdy żadne urządzenie nie będzie nadawać.

  Po tym jak tylko uda nam się cało i szczęśliwie złożyć prototyp, pozostaje jeszcze dopisanie kodu. Zatem, zakasujemy rękawy i ściągamy bibliotekę RTClib, która dostarcza funkcjonalność układu DS1307 opakowanego w zgrabny interfejs. Po ściągnięciu biblioteki dodajemy ją do katalogu - My Documents\Arduino\libraries\ Przykład użycia biblioteki: [crayon-517755289afed/] Jak widzimy korzystanie z DS1307 jest banalnie proste, w funkcji setup() odpalamy komunikację, a w loop() cyklicznie odczytujemy czas za pomocą metody now(), która zwraca ładnie opakowaną datę oraz godzinę w strukturze DateTime.

3. PCF8574

Szerzej znany jako ekspander, główną jego funkcją jest dodanie 8 wyjść/wejść cyfrowych. Komunikuję się tak jak poprzednio opisywany DS1307, czyli przez magistralę I2C.ekspander schemat
  • A0, A1, A2 – adres układu,
  • P0,..,P7 – 8 cyfrowych pinów input/output (I/O) – dlatego nazywa się ekspanderem ;-)
  • VCC– zasilanie (min 2.5 – max 6V),
  • GND – masa,
  • SCL – sygnał zegara magistrali I2C,
  • SDA – sygnał danych magistrali I2C,
  • /INT – zanegowany sygnał przerwania.
Można jednocześnie używać wielu ekspanderów dlatego został stworzony mechanizm, który pozawala je między sobą jednoznacznie rozróżniać. Do tego celu służy adres - w układach PCF8574 adres ma 7 bitów długości, pierwsze 3 bity A0, A1 oraz A2 nadaje użytkownik a pozostałe 4 są nadawane fabrycznie na stałe. W zależności czy korzystamy z układu PCF8574 czy z PCF8574A fabrycznie nastawione są inne adresy, i tak: PCF8574:

0

1

0

0

A2

A1

A0

Czyli szesnastkowo (hex) zakres adresu to: 0x200x27PCF8574A:

0

1

1

1

A2

A1

A0

Czyli szesnastkowo (hex) zakres adresu to: 0x380x3F Podłączanie do arduino: ekspander Cyfrowymi pinami ekspandera P0-P7 możemy posługiwać się dokładnie tak samo jak  cyfrowymi pinami Arduino. My będziemy je używali do ustawiania stanu wyświetlaczy – ale o tym za chwilę. A jeśli chcielibyśmy nadać inny adres ekspanderowi to możemy dowolnie konfigurować połączenia pinów adresowych z masą GND bądź zasilaniem VCC– uzyskując tym samym 8 kombinacji dla PCF8574 oraz 8 kombinacji dla PCF8574A, dzięki czemu możemy użyć na raz 16 ekspanderów co da nam bagatela dodatkowych 128 (16*8) pinów cyfrowych!   Obsługa programowa ekspandera jest równie prosta jak układu DS1307. Wystarczy ściągnąć bibliotekę o zdumiewającej nazwie PCF8574, dodać do katalogu z bibliotekami i od tej pory za pomocą kilku linijek kodu z łatwością możemy używać PCF8574 do odczytywania, bądź zapisywania danych na cyfrowe piny. [crayon-517755289b06a/] Jak widzimy na początku należy ustawić adres ekspandera u nas 0x20, a potem skonfigurować piny wedle wykorzystania na  INPUT bądź OUTPUT, a potem czytamy metodą  digitalRead a ustawiamy stan metodą digitalWrite. Twórca biblioteki dodał kilka dodatkowych metod takich jak:
  • Clear– ustawia wszystkie piny na stan LOW,
  • Set– ustawia wszystkie piny na stan HIGH,
  • Write– ustawia cały bajt na 8 pinach.
Bardziej dociekliwych uprzejmie odsyłam do dokumentacji biblioteki ;-)

4. Wyświetlacz

Do pokazywania godziny będziemy używać czterech wyświetlaczy 7 segmentowych. Te cuda wyglądają tak:

7 seg display7 seg display schemat

  Jak widzimy, wyświetlacz siedmio-segmentowy posiada siedem segmentów (o rety!), ale żeby utrudnić sprawę w podstawce jest 10 nóżek. Ha! Po krótkiej (bądź długiej, zależy kto ma jaką lotność) chwili dostrzegamy, że są dwa typy wyświetlaczy – ze wspólną katodą, gdzie na te dwie dodatkowe nóżki podłączam GND, oraz ze wspólną anodą, gdzie podłączamy VCC. No ale 7 segmentów + 2 GND/VCC to daje nam 9 pinów, a jest przecież 10. Ta ostatnia to tzw. dp – czyli kropka ;-)   Uzbrojeni w tę wiedzę możemy śmiało przystąpić do wyświetlania czego nasza dusza zapragnie – czyli liczb od 0 do 9 :D Warto jeszcze zwrócić uwagę, na to, że wyświetlaczem ze wspólną katodą sterujemy za pomocą stanu wysokiego, tzn. że jeśli chcemy zapalić którąś belkę to musimy wysłać na jej pin stan wysoki (HIGH), a z kolei wyświetlaczem ze wspólną anodą sterujemy stanem niskim (LOW).  Teraz dla pogłębienia wiedzy podłączymy sobie pod nasz ekspander jeden wyświetlacz ze wspólną anodą: pcf8574, 7 seg display Gwoli jasności mamy połączony ekspander z wyświetlaczem w następujący sposób: P0 – e                   P2 – c                    P4 - b                    P6 – f P1 – d                   P3 – dp                P5 – a                    P7 – g A teraz będziemy wyświetlać po kolei cyfry od 0 do 9.  Super, nie? ;-) [crayon-517755289b0e4/]   Wszystko pięknie, ładnie ale my przecież chcemy koniec, końców wyświetlać czas, przecież nie damy rady tego zrobić na jednym wyświetlaczu... Załóżmy, że chcemy pokazywać godzinę oraz minuty, zatem potrzebujemy 4 wyświetlaczy. Ale czy to oznacza, że potrzebujemy 4 ekspanderów? Trochę dużo tego wszystkiego wyjdzie. Może istnieje jakieś lepsze (tzn. mądrzejsze) rozwiązanie. Hehe gdyby nie istniało to bym Was drodzy Czytelnicy nie zanudzał tymi rozważaniami ;-) Otóż, należy zastosować multipleksowanie– czyli jak podpowiada wikipedia, zastosować dwa lub większą liczbę kanałów komunikacyjnych w jednym medium transmisyjnym. Mądrze brzmi, ale części z Was szanownych czytelników niczym młodziutkiej Cerro do króla Vridanka na ich pierwszej schadzce ciśnie się na usta pytanie: "Niebrzydka rzecz, ale czy ma jakieś zastosowanie praktyczne?". Otóż, o dziwo ma! Dobrze przedstawia to następujący obrazek: Sterujemy wyświetlaczami za pomocą tranzystorów PNP - BC327, które podpinamy przez rezystory do procesora. Ustawienie sygnału LOW na bazie tranzystora powoduje przepływ prądu - dzięki czemu włączymy dany wyświetlacz. Jeśli będziemy dostatecznie szybko się przełączać to ludzkie oko nie zarejestruje migania.   Nasz prototyp wygląda tak: multi arduino 

BTW proszę nie zapominać o rezystorach pull-up na magistrali I2C– nie będę ich już dodawał do schematu bo i tak jest już dostatecznie nieczytelny…

  A teraz, żeby sprawdzić czy układ dobrze hula, napiszmy kod, który będzie wyświetlał liczby od 0 do 9999. A co! Jak szaleć to szaleć ;-) [crayon-517755289b161/]  

5. Zegar = DS1307 + PCF8574 + 4x 7 seg LCD

  Dochodzimy do wiekopomnego momentu, gdzie użyjemy naszego DS1307 opisanego na samym początku artykułu do odczytywania czasu.  Co w sumie sprowadzi się do dodania na płytkę prototypową DS1307 i połączenia go z magistralą I2C.zegar multi arduino Teraz będziemy sobie wyświetlać czas odczytany z zegarka DS1307. [crayon-517755289b1cc/] Jak widać używanie układów współpracujących z magistralą I2C zasadniczo ułatwia i programowanie i składanie układu.  

7. Przyciski

Fajnie jakby można było ustawić sobie dowolny czas - prawda? No, to dodajmy trzy takie oto maleństwa. button  Pierwszy przycisk będzie odpowiedzialny za wejście w tryb ustawiania (setup) i załóżmy, że trzeba będzie chwilę przytrzymać wciśnięty przycisk aby ten tryb ustawiania się włączył. Tym przyciskiem będziemy również akceptować ustawienia. Drugim przyciskiem (up) będziemy mogli zwiększać wartość. A trzecim przyciskiem (down) będziemy zmniejszali wartość.  

Warto zapoznać się z tzw. "bounce" przycisków.

  A i bym zapomniał, po wejściu w tryb setup zmieniania wartość będzie mrugać - tak żeby było weselej ;-) Na początek schemat: button multi 7 seg display_bb By nam przyjemnie się programowało przyciski, to użyjemy biblioteki OneButton, która między innymi rozwiązuje problem wcześniej wspomnianego "bounce'u". W sumie nie ma co się rozpisywać nad kodem, zatem jakby ktoś miał pytanie/wątpliwość proszę pytać w komentarzach ;-)  

Kodu jest dużo, więc postanowiłem go zwinąć.

  [crayon-517755289b244/] 

7. ATMEGA328P standalone

Przeniesiemy teraz nasz procesor ATMEGA328 na płytkę prototypową.

atmega328patmega328-arduino-pinout

Jeśli chcemy użyć nowego procesora, będziemy musieli wgrać do niego bootloader arduino. Tutaj jest ładny na ten temat tutorial: http://arduino.cc/en/Tutorial/ArduinoToBreadboard. A jeśli ktoś nie ma czasu bądź ochoty się z tym samemu męczyć, to można nabyć w sklepie nettigo.pl od razu procesor z bootloaderemhttp://nettigo.pl/products/175 Po wgraniu bootloadera możemy zająć się wgrywaniem kodu. Płytka tak powinna wyglądać: zagar + display + atmega_bb_2 Grubo, prawda? ;D Zostaje jeszcze do odcięcia zasilanie i możemy odłożyć arduino na półkę.

8. Stabilizator 7805

Zawsze kiedyś przychodzi moment, gdy coś się kończy i coś się zaczyna. Odcinamy ostatnie przewody łączące nas z Arduino i od tej pory nasz układ będzie wieść życie wolne i niezależne! Oh! Aż mi się łza zakręciła z wzruszenia... 7805

Nie jestem specjalistą stabilizatorów i prawdopodobnie zrobiłem jakiegoś babola, u mnie to w sumie działa ale nie jestem przekonany czy 6V to jest dobre wejście na zasilanie...

W każdym razie, na nogę input dajemy zasilanie z zakresu +5V (możliwe, że powinno być powyżej 7.5V) a z nogi output ciągniemy stabilizowane 5V, warto jeszcze dodać na wejściu i wyjściu po kondensatorze elektrolitycznym, aby zlikwidować tętnienia. No i już prawie na sam koniec pokażę całość: all_bb

Przy podłączaniu kondensatorów elektrolitycznych należy zwrócić szczególną uwagę, aby podłączyć + do +, i - do -. Dłuższa noga kondensatora to +, a z boku na obudowie widać pasek z minusami.

9. PCB

Jako, że cały ten projekt potraktowałem edukacyjnie, to również z tego samego powodu stworzyłem projekt w eaglu, razem z płytką PCB, którą wytrawiłem i nawet zdaje się, że działa ;-) Projekt_Zegar_v5PCB_Zegar_v5  A tak wygląda płytka: IMG_8978IMG_8988 Zamieszczam też link do:  

Między kodem z artykułu a z linka są drobne różnice.

 

10. Koniec

  Jeśli ktoś dotarł do tego miejsca, to mam dla niego jedną radę: zajmij się kolego czymś pożyteczniejszym niż czytaniem pierdół po internecie... A tak na poważnie, to dzięki za wytrwałość. Czekam na pytania, sugestie oraz komentarze.   Pozdrawiam,   -- malebranchi PS: Serdeczne podziękowania Kasi, za poprawki edytorskie :* Czytaj dalej...

Drzwi otwierane PINem

$
0
0
IMAG0351
Witam was drodzy Majsterkowicze. Od długiego czasu byłem biernym czytelnikiem tej oto strony, aż w końcu postanowiłem opisać coś swojego(nie do końca, ale o tym potem). Więc bez zbędnego gadania zabieramy się do roboty: IMAG0351

Lista części:

A więc zaczynamy: Montujemy taki układ: Nowy obraz mapy bitowej Schemat (poprawiony): dwm-2013-04-26-16-23-01-31 Ok, oto jest cały układ, może teraz kilka słów wyjaśnienia:
  1. Pin sygnałowy serwa do pinu 12 Arduino
  2. Piny klawiaturki ułożone tak(patrząc od frontu klawiaturki) - 3,1,5,2,4,7,6 do płytki, staamtąd równo od pinu 8 do 2
  3. Piny diód LED do pinów Arduino 0,1,9,10
  4. Przyciski do wejść analogowych 0 i 5
Klawiaturka posiada piny odpowiedzialne za kolumnę i szereg, przy każdym naciśnięciu klawisza prąd zaczyna być przewodzony pomiędzy pinem rzędu a kolumny. Taki układ jaki jest na schemacie był u mnie i zakładam, że będzie taki sam u każdego kto zamówi  klawiaturkę z nettigo. Oraz oczywiście kod programu: [crayon-51826124ec523/] Uprzedzam,że kod nie jest w pełni mój, jest to zmieniony przykład z biblioteki Password. Po wgraniu programu i podłączeniu wszystkiego powinniśmy zobaczyć taki efekt: http://youtu.be/VwjgwlU9sSk Po prostu nie mogłem wrzucić filmu na stronę więc został on wrzucony na mój kanał na YT Następnie już do was należy w jaki sposób wykorzystacie ten projekt, możecie go zmodyfikować, aby odpowiadał Waszym potrzebom. Gdy tylko ukończę projekt, wrzucę film prezentujący działanie zamka założonego na moje drzwi wejściowe do pokoju, chwilowy brak kasy i części :) Pozdrawiam i dziękuję za wytrzymanie do końca (choć artykuł jest wyjątkowo krótki). Czytaj dalej...

Pilot IR do Nikon’a, czyli tworzymy film poklatkowy

$
0
0
Sygnał odbierany przez aparat firmy Nikon, równoznaczny z naciśnięciem spustu migawki.
Projekt jest niezwykle prosty. Opiszę go, aby udowodnić jak niewiele potrzeba, aby wprowadzić własną elektronikę w życie w zaskakująco interesujący sposób. Chcę również pokazać jak cienka jest granica pomiędzy sztuką, a elektroniką, gdyż im wyższa kreatywność, tym ciekawsze efekty. W aparacie jest czujnik podczerwieni, który odbiera z zewnątrz sygnał o odpowiednich parametrach i sekwencji. Po wykryciu takowego sygnału najzwyczajniej w świecie robi zdjęcie. Największą zagadką jest napisanie programu, który tak wysteruje zasilaniem diody IR, aby aparat odebrał go pozytywnie, jako naciśnięcie spustu migawki. Tym właśnie zajmiemy się w tym artykule.

Przygotowania

W tym artykule zamieszczę czysty projekt pilota na podczerwień do aparatu firmy Nikon. Dodam, że po przeczytaniu tego wpisu (i po znalezieniu odpowiednich dla swoich urządzeń schematów), każdy z łatwością zyska wiedzę, aby swobodnie napisać program generujący prawidłowy sygnał. Warto oswajać się z takimi schematami, ponieważ implementacja okazuje się bardzo prosta. Projekt oczywiście można było wyposażyć w nieskończoną ilość bajerów takich jak wyświetlacze, dziesiątki diod kontrolnych i przełączników. Jednak nie to jest tematem artykułu. Gdy kogoś najdzie ochota na dodanie wyświetlacza na opóźnienie pomiędzy zdjęciami (dotyczy ostatniego punktu z artykułu) to serdecznie polecam wpis: Zegar DS1307 , dokładnie pkt 4.

Potrzebujemy:

Analiza teoretyczna problemu:

Przeszukując Internet natknąłem się na taki schemat: [caption id="attachment_5458" align="alignnone" width="660"]Sygnał odbierany przez aparat firmy Nikon, równoznaczny z naciśnięciem spustu migawki. Sygnał odbierany przez aparat firmy Nikon, równoznaczny z naciśnięciem spustu migawki.[/caption] Z dopiskiemThe bursts are modulated on a 38 kHz carrier. This diagram shows the timing of one half of the command. The second half is exactly the same and is repeated 63.2 ms after the first command.
  • czarne paski ze schematu oznaczają sygnał prostokątny (puszczany na diodę) o częstotliwości 38 kHz,
  • przerwy między paskami - wygaszenie diody na odpowiedni czas,
  • daną sekwencję należy powtórzyć dwukrotnie z 63.2 ms opóźnieniem.
Kilka prostych matematycznych przekształceń: T = 1/f   zatem przy częstotliwości (f) równej 38 kHz, okres używanego przebiegu wynosi w zaokrągleniu 26 mikrosekund. Współczynnik wypełnienia = 0,5  , zatem czas trwania HIGH (oraz analogicznie LOW) na diodzie wynosi połowę okresu (13 mikrosekund). Definiujemy: [crayon-519667e0ef8fe/]  

Kod i układ

Schematy połączeń

[caption id="attachment_5462" align="aligncenter" width="338"]Schemat pilota IR Schemat podłączenia pilota IR[/caption]   [caption id="attachment_5461" align="aligncenter" width="356"]Schemat podłączenia zaimplementowanego wcześniej pilota na podczerwień Schemat podłączenia naszego pilota na podczerwień[/caption]
  • dioda niebieska - świeci się w trakcie zrobienia zdjęcia
  • dioda szara - dioda IR  (musi być skierowana na aparat)

Kod

Cały proces zaimplementowałem w 4 funkcjach. [crayon-519667e0ef978/] Pierwsza z nich opisuje zachowanie jednego "taktu" sygnału dochodzącego do diody o częstotliwości 38 kHz. Funkcje: [crayon-519667e0ef9e5/] [crayon-519667e0efa6f/] opisują stany wysokie i niskie z naszego wzorca.  Jako argumenty przyjmują liczby cykli przypadające na dany stan. Z racji, że wszystko jest zaznaczone na schemacie, zatem odzwierciedlenie przebiegu będzie kwestią przepisania tych wartości do kodu. To właśnie zawiera końcowa funkcja: [crayon-519667e0efad7/]   Implementację kończymy charakterystycznymi dla Arduino funkcjami setup() i loop(), wraz z prostą komunikacja z użytkownikiem (spust z microswitch'a). Dodatkowo zostanie zapalona zwykła dioda LED w celu poinformowania w jakim momencie robione jest zdjęcie. [crayon-519667e0efb37/]  

Efekt końcowy

Po podłączeniu i zaprogramowaniu efekt jest następujący:   http://www.youtube.com/watch?v=8OjPZceNP08   Przepraszam za jakość.  

Gdzie ta sztuka?

No właśnie. Przyda nam się trochę wcześniej wspomnianej kreatywności.

Robienie pojedynczych zdjęć nie prezentuje w całości potencjału projektu. Hmm. Urządzenia mają to do siebie, że nie narzekają na dużą ilość dokładnej roboty. Jakby to wykorzystać? Niech Arduino robi masę zdjęć w dokładnych odstępach czasu! Tak jest! To jest to czego szukaliśmy:  Film poklatkowy. :) [caption id="attachment_5460" align="alignnone" width="480"]Schemat działania filmu poklatkowego Schemat działania filmu poklatkowego[/caption] Modyfikując zmienną "opoznienie", ustalamy różnice w czasie pomiędzy zdjęciami z górnego wiersza. Im wyższy współczynnik opóźnienia, tym świat pokazany na zamontowanym filmie porusza się szybciej. Za pomocą kilku prostych elementów zrobiliśmy urządzenie pozwalające nam tworzyć filmy "w przyspieszeniu", czyli tzw filmy poklatkowe. Drobna modyfikacja kodu: [crayon-519667e0efb9e/] Zrobione zdjęcia łączymy w film i gotowe.  

Mój efekt:

Z góry przepraszam za jakość, nie specjalnie znam się na obróbce filmowej, zatem ze zdjęć w wysokiej rozdzielczości film powstał w nie do końca zadowalającej jakości. Ale wyszło całkiem ciekawie :)   http://www.youtube.com/watch?v=zR-gAo-D4RA   Mam nadzieję, że się podobało. Dziękuję i pozdrawiam :) Czytaj dalej...

Termometr – od arduino do atmegi

$
0
0
Termometr cyfrowy arduino
Witam was drodzy majsterkowicz, dzisiaj chciałbym podzielić się z wami moim doświadczeniem z przenoszenia prototypu termometru z arduino na atmege 8 lub 328 (Pan Łukasz mi to zaproponował). Ten artykuł pokaże wam jak przenieść projekt, który najpierw został opracowany za pomocą arduino a potem przeniesiony na atmege 8 lub atmege 328. Termometr cyfrowy arduino

Potrzebne części do wykonania projektu:

Schemat połączeń dla arduino:

Termometr cyfrowy dla arduino - połączenia

Kod:

[crayon-519667e0e61c7/] Kod dla termometru z jednym czujnikiem temperatury: [crayon-519667e0e621c/]

Przenosimy termometr na mikrokontroler:

atmega328Strona z powyższym schematem w pełnej rozdzielczości. Niestety dla atmegi 8 nie ma takiego pięknego schematu, dlatego będziemy musieli zadowolić się tym z arduino.cc aTmega 8 piny Na powyższych schematach widać które piny na mikrokontrolerze odpowiadają określonym pinom w ardnuio.

Wgrywanie bootloadra:

Najłatwiej jest jak zakupimy mikrokontroler z wgranym bootloaderem. Jeśli zakupiłeś mikrokontroler bez wgranego bootloadera wykonaj poniższe czynności. Na początek trzeba ściągnąć bootloader dla danego mikrokontrolera i rozpakować go do katalogu/hardware/arduino/bootloaders/atmega/: Bootloader dla ATmega8 i ATmega8Booatloader dla ATmega328P Następnie trzeba dodać na końcu pliku /hardware/arduino/boards.txt następujący wpis: [crayon-519667e0e6271/] Dla innych typów mikrokontrolera trzeba znaleźc odpowiednio zmodyfikowany plik w internecie.

Jeżeli zakupiłeś mikrokontroler z wgranym bootloaderem pomijasz tą cześć.

  1.  Otwieramy arduino IDE
  2. plik / przykłady/ arduino ISP
  3. wgrywamy program na arduino
  4. narzędzia /płytka - wybieramy nasz mikrokontroler
  5. narzędzia / programator Arduino as ISP
  6. podłączamy mikrokontroler według poniższej listy
  7. narzędzai /wypal bootloader
  8. Po tej operacji będziemy mieć możliwość programowania mikrokontrolerów ATmega8 z taktowaniem 8 MHz, oraz ATmega328P z taktowaniem 8 MHz lub 16 MHz.
Przenoszenie na mikrokontroler: Podłączmy mikrokontroler według poniższej listy: aTmega 8: Arduino pin 10 - atmega pin 1 Arduino pin 11 - atmega pin 17 Arduino pin 12 - atmega pin 18 Arduino pin 13 - atmega pin 19 aTmega 328: Arduino pin 10 atmega pin 1 Arduino pin 11 atmega pin 17 Arduino pin 12 atmega pin 18 Arduino pin 13 atmega pin 19   Teraz w arduino IDE musimy dokonać jednej zmiany: Narzędzia > płytka > wybieramy nasz mikrokontroler, następnie narzędzia > programator Arduino as ISP. Wgrywamy program na mikrokontroler i podłączmy według powyższych schematów.

Przydatne linki

Czytaj dalej...

Renowacja mebli ogrodowych

$
0
0
renowacja-mebli-ikona-1
Pod koniec zeszłego roku zima zaskoczyła nie tylko drogowców, ale i nas, przez co nie schowaliśmy na czas naszego zestawu mebli ogrodowych. Mebelki poleżały kilka dni przykryte śniegiem, co dosyć mocno odbiło się na ich wyglądzie. Cały zestaw nie był co prawda jakoś szczególnie drogi, ale jednak szkoda mi było go wyrzucać, dlatego postanowiłem poddać go nieco odświeżyć i poddać renowacji. Zniszczone meble ogrodowe Głównym problemem była odłażąca stara powłoka ochronna. Z tego co kojarzę, była to zwykła bejca nałożona jakieś dwa lata temu bezpośrednio na starą powłokę nałożoną przez producenta. Zdarta powłoka ochronna Z jednej strony stołu moja Kasia zostawiła też piękny ślad po białej farbie w spreju ;) Zniszczone i pomalowane meble ogrodoweŚlady farby na stole Nie było innego wyjścia, jak tylko zeszlifować całość do gołego drewna i pomalować od nowa.

Renowacja mebli ogrodowych

Upał był niemiłosierny, ale że na takim stole wstyd było postawić nawet talerz z kiełbasą z grilla, założyłem na głowę okulary ochronne, wziąłem do ręki mojego nowiutkiego Dremela Multi-Max MM40 (renowacja tych mebli była jego dziewiczym zadaniem:), założyłem papier ścierny o ziarnistości 80 i wziąłem się do roboty. Szlifowanie stołu ogrodowegoDremel Multi-Max w akcji :) Było z tym trochę zabawy, ale ze starej bejcy oczyściłem także krawędzie wszystkich desek: Szlifowanie krawędzi desek Wszystkie mebelki udało się oczyścić jeszcze przed obiadem :) Oczyszczona ławeczka Niestety drewno szlifowane papierem 80 nie wyglądało zbyt estetycznie, dlatego musiałem przelecieć całość jeszcze raz drobniejszym papierem. Deska oczyszczona papierem gruboziarnistym

Malowanie mebli ogrodowych

Tym razem zdecydowaliśmy się pokryć meble lakierobejcą, która teoretycznie powinna trochę lepiej znosić kiepskie warunki atmosferyczne. Malowanie ławeczkiMalowanie ławeczkiMalowanie ławeczkiMalowanie ławeczki Zgodnie z zaleceniami umieszczonymi na puszce lakierobejcy, jeżeli po położeniu pierwszej warstwy w drewnie podniosą się "włoski", trzeba całość jeszcze raz przetrzeć drobniutkim papierem ściernym. Mi, jak na złość, włoski wstały, więc musiałem jeszcze raz wszystko przeszlifować, a dopiero później położyć kolejną warstwę. Jeżeli nie uśmiecha się Wam szlifowanie już pomalowanego drewna, możecie zastosować patent, który podpatrzyłem u Jarka z Dom i Drewno. Jarek przed malowaniem spryskuje drewno wodą, czeka aż wyschnie, szlifuje jeszcze raz drobnym papierem i dopiero później maluje :)

Gotowe!

Po dwóch dniach (z czego drugiego dnia nakładałem jedynie drugą warstwę lakierobejcy) prace dobiegły końca i mogłem wreszcie wygodnie rozsiąść się w dopiero co odnowionych mebelkach :) Odnowione meble ogrodowe Jak widzicie, nawet mój pies nie odmówił sobie przyjemności przetestowania i obwąchania jeszcze pachnącej powłoki z lakierobejcy ;) Pogoda robi się coraz ładniejsza, więc w najbliższym czasie możecie się spodziewać więcej postów w podobnej tematyce. Przy okazji chciałbym serdecznie podziękować Dremelowi, który udostępnił mi sprzęt do pracy, bez którego bym był skazany na papier ścierny zawinięty w kawałek drewnianego klocka :D Pozdrawiam serdecznie! Czytaj dalej...

Grająca stacja dyskietek

$
0
0
bez tytułu
Na pewno każdy z was kiedyś zobaczył jakiś filmik na którym była stacja dyskietek grająca muzykę. Otóż chciałbym wam pokazać mój sposób na granie muzyki z FDD przy pomocy Arduino. Uprzedzam, że przyda się wiedza muzyczna (ja np. gram na gitarze) ale o tym później. Co będzie potrzebne?
  1. Arduino
  2. Stacja dyskietek
  3. Opcjonalnie dyskietka
  4. taśma FDD (ułatwia prace)
  5. Zasilacz ATX
  6. Płytka stykowa i parę kabelków
 Zaczynamy! Najpierw radze otworzyć stacje by lepiej brzmiała. W tym celu podwarzamy cztery  zatrzaski po obu stronach napędu, możesz wsunąć dyskietkę która poprawia brzmienie. [caption id="attachment_5519" align="alignnone" width="660"]Otwieranie FDD Otwieranie FDD[/caption] Kolejnym krokiem jest połączenie kabelków z taśmą (podłączenie kabelków do środkowej wtyczki tam gdzie nie ma "obrócony kabelków"). IMGP0086 Czerwony kabelek pod pin 6 od dołu, żółty dolny 9, drugi żółty 10. Do płytki i Arduino podłączamy to w taki sposób: Schemat Żeby nie było wątpliwości: IMGP0088 Podłącz FDD pod zasilacz ATX, uprzednio łącząc zielony kabelek z najbliższym czarnym w tej dużej wtyczce (ATX). ATXCzas na kod! I tutaj przyda nam się wiedza muzyczna, ponieważ musimy znać się na dźwiękach i ich częstotliwościach by móc przepisać piosenkę do Arduino (nie ma tak łatwo :P). (Ciekawe czy poznacie ten utwór :D) [crayon-519bd16745be8/] SoundBeep(częstotliwość dźwięku, długość dźwięku)  - głowica rusza się w jedną stronę SoundBeepp(częstotliwość dźwięku, długość dźwięku) - głowica rusza się w drugą stronę (zwróć uwagę na podwójne P) Używamy tych komend na przemiennie by nie "udusić silnika". By dowiedzieć się jaką częstotliwość w piosence ma dźwięk możemy skorzystać z tej strony http://www.phy.mtu.edu/~suits/notefreqs.html Lub tak jak ja robię, wygrywam dźwięk na gitarze i mierze go miernikiem (używam gStrings na Androida). Jeśli zrozumiesz działanie kodu możesz dodawać piny i dokładać więcej stacji lub np. dysk twardy (tak jak na moim filmie) Polecam również wsunąć dyskietkę by lepiej brzmiała stacja :P FILM: http://www.youtube.com/watch?v=5GfY3AsjnEQ To mój pierwszy post, jestem początkujący więc jeśli macie jakieś uwagi to piszcie. Czytaj dalej...

Płytka stykowa z taśm IDE

$
0
0
image014
Hej. Dziś będzie krótko, ale mam nadzieję ciekawie. Będziemy tworzyć płytkę stykową z taśm IDE starego typu - czterdziestożyłowych. Mam jedną płytkę stykową, ale mój tryb pracy powoduje że często jest zajęta przez długi okres i nie mam jak przetestować pomysłów bieżących. Więc przypomniałem sobie o artykułach, które kiedyś wpadły mi w oko na instructables.com. Tyle tytułem wstępu. Potrzebne będzie nam 8 wtyków z taśm, w moim wypadku były to dwie taśmy z trzema wtykami i jedna z dwoma wtykami. Taśmy odcinamy od końcówek. Nie należy ich wyrzucać przydadzą się, nie tylko do dalszej pracy nad płytką.image001image002   Następnym krokiem jest rozebranie wtyku. W moim wypadku składał się on z dwóch klipsów, jeden służył do "odwrócenia" taśmy; drugi do dociśnięcia żył do styków. Ten odwracający można śmiało wyrzucić. image003 Za pomocą płaskiego wkrętaka, delikatnie wyciągamy taśmę z zacisków. Jeśli któryś z nich wyjdzie razem z taśmą lub będzie zauważalnie wyżej niż reszta, odwracamy wtyk haczykami do dołu i lekko naciskamy na blat stołu, aby wystające haczyki zrównały się z pozostałymi. image004image005 Kiedy już odzyskamy wszystkie wtyki, należy wyciąć wypust na jednej  z powierzchni bocznych. Ja użyłem do tego celu multiszlifierki typu dremel i freza palcowego. Trzymając frez pionowo wyrównałem powierzchnię. image006 Następnie kleimy dwa "bloki" po 3 gniazda. Użyłem cyjanoakrylowego kleju błyskawicznego (Kropelka). Klejone powierzchnie należy przetrzeć środkiem odtłuszczającym (benzyna, izopropyl, itp.). Na jedną z czystych powierzchni nakładamy warstwę kleju, przykładamy drugą wtyczkę i ściskamy (ja do tego celu wykorzystałem malutkie imadełko biurkowe. Nie kleimy 3 wtyków na raz! Idziemy po kolei. image007 Przygotowane tak bloczki można zacząć uzbrajać w kable. Z odciętych taśm odcinam żyłę, zaginam o 180 stopni jej końcowe 2-2,5cm. i kładę na haczykach. Dociskam każdy z rzędów klipsem, które zostały po rozebraniu wtyczki z jej pierwotnej taśmy. W ten sposób kablujemy oba bloczki. Wystające poza obrys wtyczki kable ucinamy. Multimetrem ustawionym na pomiar ciągłości obwodu lub rezystancji mierzymy każdą sieżkę na bloczku.image008image009 Jak skończymy bloczki, należy przygotować boczne listwy zasilające. Kable można wciskać, jednak ja je po prostu polutowałem. Chociaż ich lutowanie nie jest zbyt przyjemne, albo ja po prostu nie umiem. Ułatwiłem sobie tą czynnoś jednak, kładąc cienki miedziany drucik na lutowanych haczykach. Lutujemy obie wtyczki, uważając aby nie zrobić zwarcia między liniami. Mierzymy ciągłość ścieżek za pomocą multimetru. image010 Teraz należy przygotować plastikowe dystanse. Ja użyłem kawałek 2mm PCV, wyciąłem z niego 4 paski o szerokości wtyczki i wysokości wtyczki razem z klipsem. Dwa paski skleiłem razem (ściskałem tylko ręką i wyszła szpara - warto jednak posłużyć się czymś co ma mocnieszy ścisk) aby zrobić dystans między bloczkami (4-4,5mm). Dzięki temu, układy w obudowach DIP będą poprawnie siedzieć w płytce. Znowu kleimy elementy jeden po drugim. Po bokach kleimy wtyki z lutowanymi ścieżkami - to będą ścieżki zasilające. image011image012 Jeśli W tym punkcie wasza płytka wygląda jak na zdjęciu powyżej, można przystąpić do wykańczania. Zastosowałem klej na ciepło i klipsy wtyków. Po kolei nakładałem ścieżkę ciepłego kleju (równolegle do białych przekładek) i dociskałem klips. Puste miejsca uzupełniłem w ten sam sposób.image013 Tak oto prezentuje się prawie gotowa płytka - prawie, bo można jeszcze obiciąć nożykiem do tapet nadmiar kleju na krawędziach. Ja zrobiłem to już po wykonaniu zdjęcia. image014 Dzisiejszy odcinek sponsorowała literka C i cyferka 8. Czytaj dalej...

Arduino i Visual C#

$
0
0
ikona

ikona

Na wstępie chciałbym się przywitać, gdyż jest to mój pierwszy artykuł.

Od dłuższego czasu byłem zainteresowany napisaniem programu który by odczytywał dane wysłane z mikrokontrolera. Dzisiaj przedstawię wam bardzo prosty program napisany w Visual C#, który będzie odczytywał dane z czujnika DHT11 i odpowiednio wyświetlał.

Czytaj dalej...

Mini stroboskop

$
0
0
Stroboskop
Witam, chciałbym przedstawić Wam swój prosty, ale dość ciekawy projekt stroboskopu. Efekt stroboskopu powstaje wtedy, kiedy poruszający się obiekt, będziemy oświetlać "migającym" światłem. Miganie ująłem w cudzysłów, bo w większości przypadków nasze oko migania nie jest wstanie dostrzec, ale o tym później. Do czego wykorzystujemy stroboskop? Pomijając zabawy dyskotekowe, używamy go do "zamrożenia ruchu", co przekłada się np. na możliwość pomiaru prędkości obrotowej np. działającego wiatraka.  

Co nam będzie do tego potrzebne?

  • Arduino (do kupienia chociażby na Nettigo.pl)
  • Białe diody LED Clear (koniecznie Clear, czyli przezroczyste - dlaczego? To również wyjaśnię w dalszej części wpisu)
  • Tranzystor, do wysterowania diód (najlepiej NPN, ja użyłem tip102, ale może być słabszy)
  • Potencjometr (użyłem 10k Ω np. taki)
  • Płytka stykowa (wystarczy taka malutka)
  • Kabelki do połączenia płytki stykowej z Arduino (również dostępne na Nettigo.pl)
  • Kilka rezystorów (nie podaję konkretnych wartości, bo zależą od użytych diód LED itd. (w moim projekcie dla diód LED 150Ω, przy tranzystorze oraz dodatkowo przy potencjometrze po 10kΩ), dla początkujących zestaw rezystorów i kondensatorów)
Schemat przygotowałem we Fritzingu (do pobrania z oficjalnej strony: http://fritzing.org/) Podłączenie banalne i, tak mi się wydaje, nie wymaga większego komentarza: Stroboskop_bb 

Teraz trochę więcej teorii, jak nasz stroboskop będzie działać

Wyobraźmy sobie, że mamy wiatraczek, który obraca się z prędkością 60 obrotów na minutę. Łatwo obliczyć, że w ciągu sekundy wiatrak wykona jeden pełen obrót, czy jak kto woli, w ciągu sekundy łopatka wiatraka zatoczy pełen okrąg (360°). Jeżeli będziemy oświetlać wiatrak błyskiem światła, jaśniejszym od otoczenia dokładnie co sekundę, zobaczymy oświetlone skrzydło wiatraka za każdym razem w tym samym miejscu. Jednak błysk, błyskowi nie równy. Im dłużej będzie trwał błysk, tym bardziej rozmyty obraz śmigła zobaczymy. W przypadku tak wolnego obrotu, jak w naszym przykładzie, nie będzie to właściwie widoczne, jednak w przypadku np. wiatraka komputerowego, który obraca się z prędkością około 3500 obr./min (58 obr./s) to ma już duże znaczenie. Możemy pokusić się o wyprowadzenie wzoru, dzięki którego będziemy mogli obliczyć jaki powinien być czas błysku, aby nasze oko widziało maksymalnie ostry obraz, ale matematyką nie będziemy się zajmować :).

Z mojego doświadczenia można przyjąć, że czas błysku (błyskiem w tym przypadku nazywam moment, w którym dioda LED świeci) może wynosić 100 µs (mikrosekund). Im większa moc źródła światła, tym wartość ta może być mniejsza.

Ktoś mógłby zapytać, dlaczego nie ustawić najmniejszego możliwego czasu błysku, pomijając całą część teoretyczną. Odpowiedź jest prosta - im mniejszy czas błysku, tym mniejsza energia światła, a co za tym idzie może być ono niewystarczające, aby być jaśniejsze od otoczenia, a w skrajnych przypadkach może nie mieć energii aby oświetlić obiekt w całkowitej ciemności w sensownej odległości od tego właśnie obiektu. Tak, czy owak - dioda LED musi się dość szybko zaświecać i równie szybko gasnąć. I nie ma z tym generalnie żadnych problemów, poza jednym - jeżeli mamy diodę mleczną, czyli matową. Materiał, którym jest ona pokryta, nie jest tak "szybki" jak dioda i gaśnie trochę wolniej, przez co możemy zauważyć smużenie, a dalsze zmniejszanie czasu błysku nie przyniesie większych, pozytywnych efektów. Zaświecenie diody jest pierwszym krokiem, który na potrzeby tego artykułu uznamy za niezmienny i równy 100 µs. Jak już ją zaświecimy, to musimy ją zgasić. Po jakim czasie? To jest kluczowe. Od tego czasu zależeć będzie częstotliwość stroboskopu. Czym jest częstotliwość? W skrócie - ilość błysków w ciągu sekundy. Tę wartość wyrażamy w Hertzach [Hz]. 1 Hz oznacza jeden, 100-mikrosekundowy błysk na sekundę. 2 Hz - dwa, 100-mikrosekundowe błyski na sekundę itd. Im częstotliwość wyższa, tym nasze oko słabiej reaguje na błyski. Przy 100 Hz błyski są niedostrzegalne. Jak obliczyć jaka powinna być przerwa między kolejnymi błyskami, aby uzyskać wybraną przez nas częstotliwość? przerwa między błyskami = 1/częstotliwość [Hz]Przykład: śmigło helikoptera obraca się z prędkością 300 obr./min. Jaki czas jest potrzebny, dla jednego, pełnego obrotu śmigła? 300 obr./min. = 5 obr./s W ciągu sekundy śmigło wykona 5 obrotów. A zatem jego częstotliwość wynosi 5 Hz. czas pełnego obrotu śmigła = (1/5) sekundy = 0,2 s.Śmigło potrzebuje 0,2 sekundy, aby wykonać pełen obrót. A zatem, jeżeli w naszym stroboskopie będziemy zapalać diody co 0,2 s. odniesiemy wrażenie, że śmigło pozostaje nieruchome.

Podsumowując nasz stroboskop ma zaświecać diodę na 100 µs, gasić diodę, a przed kolejnym jej zaświeceniem czekać określony przez nas czas.

Trochę praktyki

po dość przydługawej części teoretycznej, która, mam nadzieję, że nieco pozwoli zrozumieć co tak na prawdę będziemy robić, czas na zajęcia praktyczne. DSC_0012DSC_0013DSC_0011 Po zmontowaniu układu zgodnie ze schematem, który umieściłem na początku artykułu,  a którego zdjęcia pokazuję powyżej (kolory kabelków są nieco inne niż na schemacie o czym wiem i nie znaczy to wcale, że jestem daltonistą ;), czas na napisanie programu dla Arduino. [crayon-519f6fc7bc004/] Jeżeli coś wymaga głębszego komentarza, proszę o komentarze. A poniżej filmik obrazujący działanie. http://www.youtube.com/watch?v=cfT4-KWrR5w oraz drugi - tu został zwiększony czas błysku ze 100 na 400 mikrosekund - dobrze widać, jak iks się rozmywa. Dodatkowo, poza X widać też stroboskop oraz jego "obsługę", bo w pierwszym filmie istotnie, nie było to pokazane. http://www.youtube.com/watch?v=AqGZc9OzPEg   Już niedługo wpis pokazujący na początek prostą komunikację Arduino z PC (przez aplikację napisaną w C#). Strasznie długi ten wpis, mam nadzieję, że kogoś zainteresuje. Czytaj dalej...

Bardzo prosta antenka doubleBiquad do obioru telewizji cyfrowej

$
0
0
double-biquad_ikona
Zainspirowany artykułem Prosta antena do obioru DVB-T oraz kalkulatorem anten doubleBiquad dostępnym na stronie tej stronie wykonałem bardzo prostą antenkę używając materiałów, które jak się spodziewam są w każdym domu. Nie wykonałem reflektora, ponieważ nadmierna kierunkowość anteny w moim przypadku byłaby szkodliwa. Kierunki z mojego miejsca zamieszkania (Kielce) do nadajników przecinają się pod kątem prostym. Efekt bez reflektora w moim przypadku jest znakomity, odbieram wszystkie dostępne programy z bardzo dobrą jakością niezależnie od pogody. Gdyby ktoś jednak potrzebował reflektora to odległość od antenki do jego powierzchni powinna wynosić ok. 55mm a minimalne wymiary ok. 366 x 820mm (może być większy). Polecam sprawdzenie obliczeń na kalkulatorze ze strony jak wyżej. Zamontowanie reflektora oczywiście komplikuje całą antenkę. Proponuję wypróbować ją w tej prostej postaci bez żadnego reflektora. Gdyby ktoś jednak potrzebował reflektora należy pamiętać, że powinien być połączony z ekranem fidera (fider - kabel łączący antenę z odbiornikiem). Antena nie jest wykonana jak to się zwykle robi z drutu ale ze starego kabla koncentrycznego. Myślę, że w każdym domu jest takiego kabla dosyć, jeśli nie to można oczywiście użyć nowego. Koszt jest znikomy bo kabla nie potrzeba wiele. Antenka jest obliczona na częstotliwość ok. 700MHz. W Kielcach MUX-1 jest na 802MHz, MUX-2 na 594MHz a MUX-3 na 682MHz. W związku z tym, antenka najgorzej radzi sobie z MUX-1 sądząc po wskazaniach odbiornika. Niezależnie od tego odbieram wszystkie kanały bez żadnych zakłóceń. Oczywiście można też wykonać dwie antenki dopasowane lepiej do odbieranych częstotliwości. Co jest potrzebne: Dwa kawałki koncentrycznego kabla antenowego o długości 42cm + 42cm + 2cm na złącza = 86cm. Razem 172cm starego kabla. Taśma izolacyjna odporna na UV (słońce). Lutownica, cyna, kalafonia i umiejętność lutowania. Kabel koncentryczny dobrej jakości do połączenia anteny z odbiornikiem plus oczywiście wtyk antenowy. Kabel może być stary tłumienie i inne parametry przewodu są bez znaczenia. Ważne, żeby miał dobry ekran najlepiej z miedzianych drucików. Końce obu kawałków przewodu należy odizolować na długości ok. 10mm. Druciki ekranu skręcić na drucie wewnętrznym kabla i pocynować. Kabel (jego ekran) pracuje jak metalowa rurka i zastąpuje drut z którego zwykle wygina się takie anteny. Antena po wykonaniu wygląda tak: Double BiQuad_1 Każde "oczko" anteny ma obwód 42cm. Szczegóły połączenia: Double BiQuad_2 Do dwóch uzyskanych w ten sposób punków podłączeniowych lutujemy, do jednego ekran a do drugiego żyłę koncentryczną fidera czyli kabla łączącego antenkę z odbiornikiem. Schemat ideowy ze strony z kalkulatorem anten doubleBiquad poniżej: Double BiQuadDouble BiQuad_0 Myślę, że powyższy schemat wyjaśnia jak ukształtować kabel i podłączyć fider. Należy ukształtować oba kawałki w kształt ósemki i użyć taśmy dla utrwalenia tego kształtu. Te dwie ósemki lutujemy jak widać na drugim rysunku. Nie należy się martwić, że kształt pętli w naszyj antence nie jest kwadratowy a kolisty - fala tego "nie widzi". Antena po zainstalowaniu na moim balkonie i podłączeniu do odbiornika wygląda tak: Double BiQuad_3 Antenka jest oczywiście typową polską prowizorką, każdy może to poprawić po swojemu, jednak jej zalety; czas, który poświęciłem na jej wykonanie (ok. 60 min, krócej niż przygotowanie tego wpisu) i co najważniejsze dobry odbiór ;-) pozwoliły mi przymknąć oko na pogorszenie estetyki balkonu. Pozdrawiam i życzę naśladowcom dobrego odbioru. Zdzich Czytaj dalej...
Viewing all 1332 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>