Dane oryginału

Copyright © 2017 by Warren Andrews. Title of English-language original: Arduino Playground: Geeky Projects for the Experienced Maker, ISBN 978-1-59327-744-4, published by No Starch Press. Polish language edition copyright © 2018 by Polish Scientific Publishers PWN Wydawnictwo Naukowe PWN Spółka Akcyjna. All rights reserved.

Przekład WITKOM Witold Sikorski: Maciej Baranowski

Projekt okładki polskiego wydania Hubert Zacharski

Wydawca Łukasz Łopuszański

Redaktor prowadzący Adam Kowalski

Redaktor Małgorzata Dąbkowska-Kowalik

Koordynator produkcji Anna Bączkowska

Skład wersji elektronicznej na zlecenie Wydawnictwa Naukowego PWN: konwersja.virtualo.pl

Książka, którą nabyłeś, jest dziełem twórcy i wydawcy. Prosimy, abyś przestrzegał praw, jakie im przysługują. Jej zawartość możesz udostępnić nieodpłatnie osobom bliskim lub osobiście znanym. Ale nie publikuj jej w internecie. Jeśli cytujesz jej fragmenty, nie zmieniaj ich treści i koniecznie zaznacz, czyje to dzieło. A kopiując jej część, rób to jedynie na użytek osobisty.

Szanujmy cudzą własność i prawo

Więcej na www.legalnakultura.pl

Polska Izba Książki

Copyright © by Wydawnictwo Naukowe PWN SA

Warszawa 2018

ISBN: 978-83-01-20147-0

eBook został przygotowany na podstawie wydania papierowego z 2018 r., (wyd. I)

Warszawa 2018

Wydawnictwo Naukowe PWN SA

tel. 22 69 54 321, faks 22 69 54 288

infolinia 801 33 33 88

e-mail: pwn@pwn.com.pl, reklama@pwn.pl

www.pwn.pl

Dla wszystkich miłośników elektroniki
i operatorów amatorskiego radia, którzy
od wielu lat znajdują nowe wymiary
zastosowań dla swojego hobby

O autorze

Warren Andrews uzyskał pierwszą licencję radiową w wieku 12 lat i od tego czasu jest zagorzałym miłośnikiem elektroniki. Od ponad 30 lat pisze na ten temat, a jego twórczość była publikowana na łamach EE Times, Electronic Design i Computer Design. Miał istotny wkład we wszystkie publikacje grupy RTC, a kilka razy nimi zarządzał. Oprócz tego bardzo dużo projektował i konstruował w ramach różnych komercyjnych przedsięwzięć, a także pracował jako konsultant techniczny dla kilku ważnych korporacji, w tym Motoroli i GE. Jest posiadaczem jednego patentu w Stanach Zjednoczonych.

O recenzencie technicznym

Scott Collier to samouk i entuzjasta Arduino, który opublikował ponad 50 darmowych samouczków na swoim blogu: http://arduinobasics.blogspot.com. Jego prace mają ponad 3,5 miliona odsłon, więc bardzo prawdopodobne, że je znasz. Scott jest aktywnym członkiem internetowej wspólnoty Arduino i w pełni popiera ideologię ruchu makerów.

PODZIĘKOWANIA

Wszystkim przyjaciołom, kolegom i współredaktorom chciałbym podziękować za pomoc i słowa zachęty w trakcie powstawania tej książki. W szczególności, słowa wdzięczności za systematyczne udzielanie technicznych rad i wskazówek przy okazji różnych projektów, kieruję do mojego przyjaciela, Pete’a Yeatmana. Poza tym, chciałbym podziękować redaktorom i osobom odpowiedzialnym za produkcję w No Starch Press. Oczywiście żadne podziękowania nie byłyby pełne, gdybym nie wspomniał o żonie i całej mojej rodzinie, która wytrzymuje ze mną zarówno w trudniejszych, jak i łatwiejszych chwilach.

UWAGA DO WYDANIA POLSKIEGO – UŻYWANE JEDNOSTKI

W wydaniu polskim pozostawiono większość oryginalnie użytych przez autora jednostek miar; w szczególności dotyczy to cali. Decyzja o nieprzeliczaniu cali na jednostki metryczne została podyktowana, poza możliwością wprowadzenia błędów wynikających m.in. zaokrągleń, także tym, iż niektóre ze szkiców prezentowanych w książce zawierają algorytmy przystosowane do użytych przez autora jednostek. On sam prezentuje zresztą sposób adaptacji tych algorytmów do jednostek SI.

Oto przeliczniki jednostek stosowanych w książce:

1 cal – 2,54 cm

1 stopa – 30,48 cm

1 funt (lb) – 0,45 kg

1 stopofunt-siła (ft-lbf) – 1,35 J

1 stopa na sekundę (fps) – 1,1 km/h (0,30 m/s)

WPROWADZENIE

Witaj w książce Arduino Playground! Znajdziesz w niej szerokie spektrum projektów, będących demonstracją elastyczności i wszechstronności płytek z mikrokontrolerami z rodziny Arduino. Każdy rozdział zawiera wszystkie informacje potrzebne do zrealizowania projektu, w tym schemat, listę elementów i wszelkie szkice (tak ludzie zajmujący się Arduino nazywają programy). Poza tym dołożyłem wszelkich starań, aby podać wyczerpujące informacje o mechanicznych częściach potrzebnych w każdym projekcie, w tym listę materiałów, aby czytelnik mógł ukończyć wszystkie obudowy, ruchome części, szkielety, itd. Opisane są też wszystkie potrzebne narzędzia.

Aby projekty były czymś więcej niż tylko instrukcjami składania części, starałem się uzupełniać je opowieściami na temat tego, jak się rodziły i rozwijały, oraz wyjaśnieniem technicznych zasad ich działania. Mam nadzieję, że ukończone projekty nie tylko okażą się przydatne, ale – przy odrobinie pomysłowości – będą punktem wyjścia do wymyślania nowych urządzeń.

Dla kogo jest ta książka

Do wykonywania projektów z tej książki nie trzeba mieć inżynierskiego wykształcenia, zaawansowanych zdolności mechanicznych, czy też doświadczenia w programowaniu. Mimo to, aby w pełni skorzystać z lektury, trzeba:

• rozumieć podstawy elektroniki, w tym potrafić odczytywać schematyczne diagramy i rozpoznawać elementy, takie jak rezystory i kondensatory;

• mieć pojęcie o używaniu komputerów i pisaniu oprogramowania (mówiąc górnolotnie chodzi o architekturę Von Neumanna); może się też przydać wiedza na temat Arduino czy też architektury innych mikrokontrolerów;

• mieć doświadczenie w lutowaniu połączeń i przewodów;

• mieć podstawowe umiejętności mechaniczne, jak np. obsługa elektrycznej wiertarki, różnych pił itd.

Mam nadzieję, że zarówno początkujący, jak i doświadczeni użytkownicy Arduino dowiedzą się z tych projektów czegoś nowego na temat elektroniki.

Jak ta książka jest zorganizowana

Każdy rozdział jest poświęcony jednemu projektowi i zawiera opis sposobu zrealizowania go na płytce prototypowej w celu przeprowadzania testów, zwięzłe omówienie działania szkicu, a na końcu wyjaśnienie, jak skonstruować finalny produkt.

• Rozdział 0, Konfiguracja i przydatne umiejętności zawiera podstawowe informacje przydatne podczas lektury całej książki, w tym na temat przygotowywania płytek Arduino i ich programowania, używania oprogramowania do projektowania PCB i tworzenia swoich własnych płytek.

• W rozdziale 1, Wehikuł czasu reakcji, wykorzystasz możliwości pracy mikrokontrolera Arduino w czasie rzeczywistym do pomiaru czasu reakcji użytkownika na bodźce. Projekt ten można szybko i łatwo zbudować, poznając przy okazji podstawy używania kontrolera do podawania sygnału czasowego i mając przy tym wiele możliwości eksperymentowania ze szkicem. Ukończone urządzenie to gwarancja wielu godzin zabawy i rozrywki dla ciebie, oraz twoich przyjaciół i rodziny.

• Rozdział 2, Automatyczne mieszadło do wytrawiania płytek PCB, pokazuje, jak wykorzystać zmianę w poborze prądu do tego, aby w obwodzie działy się pewne rzeczy. W tym przypadku chodzi o zmianę kierunku silnika, co pozwala na poruszanie drukowanymi płytkami zanurzonymi w wytrawiaczu. Jak wyjaśniono, wytrawianie płytek PCB to zaledwie jedno z zastosowań tej techniki.

• Projekt w rozdziale 3, Zasilacz z regulacją, może okazać się jednym z najczęściej używanych przedmiotów w twoim warsztacie. Jest to zasilacz z regulacją napięcia oraz z cyfrowym odczytem napięcia i natężenia prądu. Projekt jest prosty, ale efektywny, a jego realizacja daje sporo satysfakcji.

• Projekt w rozdziale 4, Rotomat, należy do moich ulubionych. Pełni funkcje użytkowe, pilnując, aby nienoszone zegarki automatyczne (samonakręcające się) pozostawały nakręcone, ale dzięki fajnemu projektowi jest to również świetna rzeźba kinetyczna. Rotomat zawiera Arduino Nano, służący do obsługi wszystkich funkcji związanych z podawaniem czasu zegarowego, oraz wielokolorowy wyświetlacz LED. Niektóre z technik montażu mogą sprawiać problemy początkującym konstruktorom, ale warto podjąć to wyzwanie.

• Projekt w rozdziale 5, Garażowy asystent parkowania, to zaawansowane technicznie urządzenie, które pomoże ci zaparkować w garażu. Można je uznać za elektroniczną wersję piłki tenisowej na gumce, przeznaczoną do pomiaru odległości, na jaką można wprowadzić pojazd. Przy okazji wyjaśniono, jak z kontrolerem Arduino zintegrować ultradźwiękowe nadajniki i odbiorniki. Wprawdzie jest to bardzo praktyczne zastosowanie tej techniki, ale nie jedyne – inne możliwości (w tym pomiar cieczy) są ograniczone jedynie twoją wyobraźnią.

• W rozdziale 6, Oszczędzacz baterii, zrobisz urządzenie chroniące akumulator kwasowo-ołowiowy przed zniszczeniem na skutek przypadkowego rozładowania. Projekt ten to w zasadzie połączony szeregowo z akumulatorem przełącznik o wysokiej mocy, który wyłącza się po osiągnięciu niebezpiecznego poziomu. Co prawda w taki zespół obwodów wyposażona jest większość dzisiejszych pojazdów, ale dla mnie projekt ten okazał się bardzo przydatny w łodziach i pojazdach użytkowych (traktory, kosiarki itd.). Dzięki niemu można uniknąć konieczności niepotrzebnej wymiany tych drogich akumulatorów.

• W rozdziale 7, Niestandardowy miernik pH, zbudujesz precyzyjny instrument do pomiaru pH w wielu cieczach. Wprawdzie w tym niestandardowym mierniku pH użyto profesjonalnej sondy, ale elektronika i odczyt opierają się na procesorze Arduino. Jeśli zajmujesz się domowym warzeniem piwa, wyrobem win, hydroponiką lub akwarystyką, albo po prostu sprawdzasz wodę w swoim basenie, niestandardowy miernik pH będzie przydatnym narzędziem.

• Celem projektu z rozdziału 8, Dwa balistyczne chronografy, jest pomiar prędkości wylotowej pocisku różnych strzelb, od pistoletów i karabinków pneumatycznych po pistolety śrutowe i wiatrówki. Chociaż projekt nie jest przeznaczony do użytku z konwencjonalną bronią palną, ale pozwala zmierzyć prędkości powyżej 760 metrów na sekundę. Przy okazji poznasz kilka nowych technik, w tym trochę samodzielnych obwodów, licznik i układ DAC. Opisane są dwie wersje chronografu: prostsza, Lite, mierzy pociski z prędkościami do około 210 metrów na sekundę.

• W rozdziale 9, Generator fali kwadratowej, zbudujesz tani przyrząd do generowania elektronicznych fal kwadratowych. Pomysł ten narodził się, ponieważ potrzebowałem symulatora do balistycznego chronografu z rozdziału 8, ale działał tak dobrze, że zrobiłem z niego osobny projekt. Daleko mu do rozdzielczości i elastyczności przyrządów laboratoryjnych z prawdziwego zdarzenia, ale jest od nich znacznie tańszy i przydaje przy projektowaniu i testowaniu różnych urządzeń.

• W rozdziale 10, Chromatyczny termometr, utworzysz przydatny gadżet, który podaje temperaturę za pomocą sekwencji kolorowych diod LED. Na bazie tego początkowo prostego projektu powstały bardziej złożone wersje. Możesz dodać cyfrowy odczyt, czujnik o wysokiej dokładności i różne mechaniczne warianty, obejmujące od monitorowania akwarium po dekoracje naścienne.

Nie omawiam szczegółowo występujących w każdym projekcie podstawowych pojęć inżynierskich i programistycznych, ponieważ zakładam, że czytelnicy mają na tyle podstawowej wiedzy, że krótkie wyjaśnienie jest zupełnie wystarczające. Ale ktoś dociekliwy znajdzie w tekście odesłania do dodatkowych informacji na temat projektu i techniki. Oprócz tego naświetliłem historyczne tło projektu: dlaczego go zbudowałem (i do czego może się przydać). Za każdym razem starałem się, aby poziom trudności był zarazem przystępny, jak i wciągający.

Tam, gdzie to możliwe, podałem również alternatywne metody, których mogą próbować zaawansowani czytelnicy. Argumentując, dlaczego dokonałem określonego wyboru, pokazuję zalety i wady alternatywnych sposobów działania. W każdym projekcie jest mnóstwo miejsca na dostosowania do własnych potrzeb, a nawet ulepszenia; dotyczy to w równej mierze obudowy, techniki konstrukcyjnej czy samego szkicu. Na przykład taki rotomat może być przedmiotem użytkowym albo wyłącznie kinetyczną rzeźbą.

CZYM JEST MECHATRONIKA?

W trakcie pisania tej książki kilka razy natrafiłem na określenie mechatronika. Jako że jestem w pewnym sensie tradycjonalistą (albo po prostu starym wapniakiem), zignorowałem kilka pierwszych wystąpień. W końcu jednak znalazłem czas, aby zapoznać się z definicją tego terminu i muszę przyznać, że w dużej mierze pokrywa się to z tematyką tej książki.

Mówiąc najprościej, mechatronika to projektowanie za pomocą elektroniki i inżynierii mechanicznej. Tetsuro Mori, główny inżynier w japońskiej firmie Yaskawa, ukuł to określenie w 1969 r., aby opisać proces tworzenia przemysłowych robotów, który wymaga inżynierii elektrycznej, mechanicznej i komputerowej. Inżynier mechatronik łączy zasady mechaniki, elektroniki i informatyki, aby stworzyć prostszy, bardziej ekonomiczny i bardziej niezawodny system.

O listach części

Gdy książka była jeszcze w fazie koncepcyjnej, wybór części do projektów był często zdeterminowany tym, co akurat znajdowało się w moim warsztacie. Na przykład łożyska w rotomacie z rozdziału 4 początkowo znajdowały się w moim pojemniku na śmieci, ale ostatecznie zastąpiłem je tymi, które znajdują się na liście części. Zrobiłem wszystko co możliwe, aby projekty można było zrealizować z użyciem podanych narzędzi i materiałów, ale zachęcam do wykorzystywania tego, co akurat masz pod ręką.

UWAGA
Prawie każdy, kogo znam, a kto zajmował się programowaniem Arduino, zaczynał od prostego szkicu z „migotaniem”. W efekcie wiele osób nie wyobraża sobie Arduino bez włączania i wyłączania diod LED. W całej książce wzmacniam to skojarzenie, używając diod LED, gdzie tylko się da. Mimo że migotanie nie jest nawet ułamkiem możliwości Arduino, dzięki diodom LED projekty dają więcej radości i są interaktywne wizualnie.

Narzędzia i materiały

Zanim zaczniesz przerabiać tę książkę, zapoznaj się z poniższymi listami narzędzi i materiałów i wynotuj wszystkie elementy, których nie masz. Nie wszystkie elementy są wymagane w każdym projekcie, więc gdy będziesz brać się za konkretne zadanie, zapoznaj się z wymaganiami w danym rozdziale i sprawdź, czy nie brakuje ci czegoś ważnego. Większość tych rzeczy dostaniesz w swoim sklepie narzędziowym, ale jeśli korzystniej kupić to przez Internet, wtedy podaję stosowną informację.

Wiercenie, cięcie i montażttin

Śrubokręty Potrzebne ci będą zarówno krzyżakowe jak i płaskie, wiele rozmiarów.

Elekronarzędzie wielofunkcyjne (firmy Dremel lub podobne) Mała wiertarka albo szlifierka może się przydać w wielu zadaniach, od wiercenia przez przycinanie, do wytrawiania i polerowania. Dzięki niedrogiej przystawce do stołu warsztatowego można przekształcić wielofunkcyjne elektronarzędzie w małą wiertarkę pionową, która jest naprawdę przydatna, zwłaszcza do nawiercania płytek PCB.

Wiertarka elektryczna Najlepsza jest akumulatorowa. Jeśli to możliwe, sugeruję z uchwytem wiertarskim o rozmiarze 3/8 lub 1/2 cala – im większy, tym lepszy.

Komplet wierteł Zalecam kupno kompletu wierteł z numeracją (to znaczy wiertła są oznaczone od #1 do #60), a nie tylko z rozmiarami ułamkowymi.

Szczypce Moim zdaniem szczypce zaciskowe, o długości około 6 do 8 cali (15–20 cm), wystarczą do wykonania większości zadań związanych z zaciskaniem, przytrzymywaniem i dokręcaniem. Zalecam również zaopatrzenie się w szczypce półokrągłe.

Piły Prosta piłka do metalu przydaje się do wielu zadań. Jeśli chodzi o cięcie plastiku, jest wiele opcji; może być otwornica, a jeśli nie szkoda ci wydać trochę więcej pieniędzy, to do różnych cięć przyda się mała, ręczna wyrzynarka (czyli piła szablowa) o regulowanej prędkości. Ja używam mojej wyrzynarki prawie wyłącznie z brzeszczotami do piłki do metalu. (Jeśli nie masz doświadczenia w używaniu wyrzynarki, poćwicz na jakichś niepotrzebnych kawałkach drewna. Gdy już opanujesz to narzędzie, może stać się nieodzownym elementem twojego warsztatu.)

Ostry nóż i nożyczki

Śruby i nakrętki Najlepiej zaopatrzyć się w niewielki zapas śrub i nakrętek zarówno calowych, jak i metrycznych. Jeśli w twoim sklepie narzędziowym nie ma dużego wyboru, zajrzyj na witrynę eBay’a.

Komplet gwintowników W większości projektów komplet nie jest potrzebny, ponieważ można posłużyć się konkretnym gwintownikiem, ale kupno kompletu wychodzi taniej i warto mieć coś takiego pod ręką.

Rozwiertak stożkowy Rozwiertak stożkowy przydaje się w wielu projektach w tej książce i jest to narzędzie, którego posiadanie szczerze polecam. Używam dwóch tanich rozwiertaków, które kupiłem na portalu Amazon i świetnie sprawdzają się one na plastiku, aluminium i miękkiej stali. Najlepiej zaopatrzyć się w rozwiertaki, które potrafią robić otwory o średnicy do 7/8 cala.

Taśma Warto mieć pod ręką taśmę maskującą, taśmę dwustronnie klejącą piankową i szorstką do użytku zewnętrznego (dobrze sprawdza się marka 3M).

Prototypowanie, lutowanie i testowanie

Zestaw zacisków szczękowych (krokodylków) lub przewodów z końcówkami zaciskowymi Na rynku jest wiele zacisków szczękowych i są one bardzo przydatne przy składaniu płytek prototypowych. Zestawy takie są dostępne w wielu sklepach internetowych.

Płytka prototypowa i przewody połączeniowe Są dostępne w wielu sklepach internetowych.

Cyfrowy multimetr Jest bardzo duży wybór multimetrów, w cenach od poniżej 5 do setek dolarów. Tanie, przenośne jednostki działają dobrze. Przekonasz się, że w komplecie domowych narzędzi naprawdę warto mieć multimetr.

Zapas rezystorów Zalecam zajrzeć na eBay lub Amazon, gdzie bez problemu można hurtowo kupować rezystory. Niektóre zestawy mogą zawierać po 10 sztuk z 20 lub 30 wartości, inne natomiast 100 lub więcej sztuk na każdą wartość. Ceny hurtowe są bardzo korzystne.

Lutownica i lut (cyna) Lutownicę można bez problemu kupić w sklepach narzędziowych, często za mniej niż 10 dolarów. Jameco ma nawet podręcznik lutowania online (http://www.jameco.com/Jameco/workshop/learning-center/soldering-basics.html), który każdy początkujący powinien przeczytać.

Pasta lutownicza Potrzebna tylko wtedy, gdy masz problem z lutowaniem podzespołów montowanych powierzchniowo. Mimo że w projektach w tej książce elementów takich jest niewiele, w przyszłości możesz używać ich więcej, ponieważ coraz mniej produkuje się przewlekanych wersji nowszych obwodów scalonych. Ja używam bezołowiowej pasty lutowniczej o nazwie Chip Quik. Ale nie rozpaczaj: elementy montowane powierzchniowo możesz lutować za pomocą zwykłej kalafonii i lutownicy tak, jak zostało to opisane w „Używanie układów SOIC” na stronie 20.

Taśma rozlutowująca Co prawda nikt z nas nie będzie na tyle beztroski, aby łączyć lutem istniejące już połączenia, ale jednak czasami wkradnie się jakiś chochlik i sam to zrobi. W takich przypadkach taśma rozlutowująca (miedziany oplot nasączony kalafonią, aby wchłonąć lut) pozwala czyściutko usunąć stop lutowniczy.

Jeśli lubisz budować kompletne projekty Arduino, zastanów się, czy nie uzupełnić swojego zbioru narzędzi zgodnie z moimi sugestiami. Wszystko, co zostało tutaj wymienione, w jakimś momencie z pewnością się przyda.

Detaliczni sprzedawcy w Internecie

Jeśli nie możesz znaleźć jakiegoś elektronicznego elementu albo narzędzia w swoim sklepie narzędziowym, odwiedź jednego z poniższych sprzedawców online[1]:

• Adafruit (https://www.adafruit.com/)

• Amazon (http://www.amazon.com/)

• Bitsbox (dobry w Wielkiej Brytanii; http://bitsbox.co.uk/)

• Digi-Key (http://www.digikey.com/)

• eBay (tutaj znajdziesz prawie wszystko, czego potrzeba do tej książki w przystępnej cenie; http://www.ebay.com/)

• Electronic Goldmine (http://www.goldmine-elec-products.com/)

• Farnell (wysyła na cały świat; http://www.farnell.com/)

• Harbor Freight (http://www.harborfreight.com/)

• Jameco (http://www.jameco.com/)

• MCM Electronics (http://www.mcmelectronics.com/)

• Mouser (http://www.mouser.com/)

• Newark Electronics (http://www.newark.com/)

• Newegg (https://www.newegg.com/)

• Pololu Robotics and Electronics (https://www.pololu.com/)

• SparkFun (https://www.sparkfun.com/)

O zasobach w internecie

W każdym projekcie jest punkt „Materiały do pobrania” z informacją o dostępnych w internecie plikach ze szkicami, układem elementów na płytce PCB i szablonami. Używanie tych plików jest opcjonalne – jeśli wolisz, możesz ręcznie przepisać szkic z książki, zaprojektować własną płytkę drukowaną i samodzielnie zdecydować, gdzie zrobić otwory na elementy. Ale jeśli chcesz od czegoś zacząć, pobierz pliki z zasobami spod adresu https://www.nostarch.com/arduinoplayground/.

0
KONFIGURACJA I PRZYDATNE UMIEJĘTNOŚCI

W tej książce przyjęto założenie, że masz już jakieś doświadczenia ze sprzętem, więc w projektach masz wolną rękę. Mimo to, jeśli potrzebujesz powtórki z pewnych podstawowych umiejętności, jak np. podłączanie elementów czy programowanie płytek Arduino, czytaj dalej ten rozdział.

W rozdziale tym omówiono również kilka umiejętności, które są przydatne, ale niekoniecznie wymagane przy budowaniu projektów. Na przykład w większości projektów udostępniam pliki, których można używać do produkcji płytek rozszerzających, ale jeśli zamiast lutować obwody na płytce prototypowej wolisz zrobić swoją własną płytkę, przeczytaj „Robienie własnych płytek drukowanych” na stronie 13. A jeśli nie wiesz, jak zamontować złącze, albo potrzebujesz pomocy w pracy z układami SOIC, więcej informacji na ten temat znajdziesz w punkcie „Używanie układów SOIC” na stronie 20.

Przygotowywanie płytki Arduino

Niezależnie od tego, czy używasz Arduino Nano, Pro Mini, czy też jednego z ich klonów, jest duże prawdopodobieństwo, że dostaniesz płytkę z osobnymi, nieprzylutowanymi listwami szpilkowymi. Wszystkie płytki, które kupiłem, przyszły właśnie w takim stanie (patrz rys. 0.1).

Rysunek 0.1. Klon płytki Arduino Nano z listwami szpilkowymi i płytką prototypową, której używam jako pomocy przy lutowaniu.

Zanim będzie można użyć Arduino albo klonu, trzeba przylutować listwy szpilkowe. Listwy sprzedawane razem z płytką z procesorem zwykle mają więcej pinów, niż jest to wymagane, a pierwszy krok polega na zmniejszeniu ich liczby do pożądanej. Czarne plastikowe paski mają wyżłobienia, które ułatwiają cięcie. Do cięcia plastiku używam prostych szczypców tnących bocznych (patrz rys. 0.2).

Rysunek 0.2. Klon Arduino Pro Mini, z listwami szpilkowymi przyciętymi na długość. 5-pinowy pasek mieści się na końcu płytki.

Kolejny krok to wstawienie listew szpilkowych w płytkę prototypową w taki sposób, aby otwory w płytce z procesorem pasowały do pinów. Wetknij listwę szpilkową długimi zakończeniami w płytkę prototypową (patrz rys. 0.3). Między dwoma rzędami listew szpilkowych pozostały cztery puste rzędy otworów – to znaczy, trzy rzędy plus miejsce w środkowej podziałce – tak, żeby zmieściła się płytka z procesorem.

Ostatni krok to umieszczenie płytki z procesorem na listwie od strony jej krótszych szpilek (patrz rys. 0.4) i zlutowanie.

Rysunek 0.3. Listwy szpilkowe wstawione w płytkę prototypową, w ramach przygotowań do przylutowania klonu Nano.

Rysunek 0.4. Klon Nano na swoim miejscu na płytce prototypowej, gotowy do lutowania

Teraz płytka ma już wszystkie swoje piny i można do niej podłączać elementy.

Przytwierdzanie płytki I²C do LCD

W wielu projektach w tej książce używany jest również wyświetlacz LCD z interfejsem I²C (inter-integrated interface; obwód między układami) (patrz rys. 0.5). Wyświetlacze LCD takie jak w tej książce można kupić z przejściówką I²C lub bez niej, ale ja często musiałem kupować osobno LCD i płytkę z przejściówką.

Jeśli płytka z przejściówką nie jest dołączona do LCD, połączenie tych dwóch elementów to mniej więcej to samo co przygotowanie płytki Arduino. Płytka z przejściówką zwykle ma już zainstalowane listwy szpilkowe, więc wystarczy je wetknąć w wyświetlacz i przylutować.

Połączenie wyświetlacza z przejściówką zwykle odbywa się bez problemów, ale w niektórych przypadkach układy obwodów na płytce z przejściówką mogą wręcz dotykać płytki z wyświetlaczem. Aby uniknąć zwarcia, sugeruję nakleić na odwrotną stronę LCD taśmę maskującą, aby odizolować ją od połączeń na przejściówce I²C.

Rysunek 0.5. Wyświetlacz LCD 16 × 2 i moduł FTDI

Może się również okazać, że szpilki z listwy na płytce I²C tak bardzo wystają z płytki LCD, że jest problem z zamontowaniem wyświetlacza w obudowie. Spróbuj wtedy przylutować płytkę I²C jak najdalej od płytki LCD, aby zminimalizować odległość, na jaką wystają piny. Na rysunku 0.6 pokazano płytkę przejściówki gotową do wstawienia pinów do bazowej płytki LCD.

Rysunek 0.6. Płytka I²C na swoim miejscu, gotowa na lutowanie

Jeśli przylutowanie płytki z przejściówką w takiej pozycji okaże się zbyt nieporęczne, możesz wetknąć styki do końca, przylutować je, a następnie przyciąć za pomocą szczypców do cięcia drutu, aby były jak najbardziej wyrównane z płytką LCD.

Zależnie od tego, jakie masz płytki z LCD i przejściówką, adres I²C, który musisz podać w szkicu, może być inny. Pod adresem http://playground.arduino.cc/Main/I2cScanner/ dostępny jest bardzo prosty skaner. Po prostu wykonuj podane tam instrukcje, aby ustalić adres I²C swojego wyświetlacza LCD. Najpopularniejsze adresy to 0x27 i 0x30.

Wczytywanie szkiców na Arduino

Po zamontowaniu obwodu projektu na płytce prototypowej, czas wczytać szkic do mikrokontrolera i wypróbować go. W większości projektów w tej książce zalecam Arduino Nano, Pro Mini albo ich klony.

Instalowanie Arduino IDE

Być może masz już na komputerze zainstalowane darmowe zintegrowane środowisko programistyczne (IDE) Arduino. Jeśli nie, pobierz program i zainstaluj go teraz. Wejdź na stronę https://www.arduino.cc/ i w części z odnośnikami do plików kliknij łącze z wersją odpowiednią do swojego systemu operacyjnego. Ostatnia wersja to 1.6.x.[2] Następnie otwórz stronę Getting Started with Arduino (pierwsze kroki z Arduino) pod adresem https://www.arduino.cc/en/Guide/HomePage/ i postępuj zgodnie z odpowiednimi instrukcjami instalacyjnymi.

UWAGA
Jeśli nie znasz jeszcze tego IDE, na witrynie Arduino znajdziesz kilka samouczków i plików z przykładowym kodem. Zdecydowanie zalecam zapoznanie się z nimi, aby oswoić się z tym oprogramowaniem.

Używanie Arduino IDE

Po zainstalowaniu Arduino IDE, otwórz go. Pojawi się pusty szkic o nazwie w formacie szkic_<data>. Aby zapisać swój szkic, wybierz kolejno File i Save As. Otworzy się okno dialogowe; wskaż w nim miejsce, w którym chcesz zapisać plik, i podaj jego nazwę.

Tworząc nowy szkic dla projektu z tej książki masz wybór: możesz wpisać kod w oknie szkiców albo pobrać plik ze szkicem wraz z innymi zasobami spod adresu https://www.nostarch.com/arduinoplayground/, a następnie skopiować i wkleić kod do okna ze szkicem.

Ja zwykle lubię zweryfikować szkic – to znaczy skompilować go – przed próbą wgrania go na płytkę, aby mieć pewność, że podczas wpisywania szkicu do IDE nie wkradły się żadne błędy. Weryfikację można z łatwością wykonać, klikając ptaszka (fajeczkę) w lewym górnym rogu (patrz rysunek 0.7). W tym samym wierszu, po najechaniu wskaźnikiem myszy na ptaszka, na prawo od pięciu ikon pojawi się słowo Verify.

Rysunek 0.7. Okno szkiców po kliknięciu ikony Verify, znajdującej się na początku listy ikon

Jeśli kod można poprawnie skompilować, to nadaje się on do wgrania na płytkę.

Podłączanie i programowanie Arduino Nano

Po weryfikacji szkicu, musisz podłączyć płytkę Arduino do swojego komputera. Ze wszystkich płytek Arduino używanych w tej książce najłatwiej podłączyć i zaprogramować Nano, ze względu na wbudowany interfejs USB.

Jeśli masz Nano, to znajdź kabel z wtykiem USB (typu A) na jednym końcu i wtykiem mini-B USB na drugim; kabel taki powinien być w zestawie z płytką. Połącz końcówkę USB z komputerem, a końcówkę mini-B USB z Nano. Wybierz kolejno Tools i Board, a następnie wybierz prawidłową płytkę i mikrokontroler (patrz rysunek 0.8).

Być może konieczne będzie również wybranie odpowiedniego portu szeregowego COM dla Arduino, ale niektóre wersje IDE automatycznie znajdują wolny port i z nim łączą. Wybierz kolejno Tools i Port i z menu, które się pojawi, wybierz port szeregowy. Jeśli masz jakiekolwiek problemy, zajrzyj do poradników dla konkretnych systemów operacyjnych, które znajdziesz na stronie https://www.arduino.cc/en/Guide/HomePage/.

Rysunek 0.8. Okno ze szkicami, po otwarciu menu Tools. Wybrałem Arduino Nano z ATmega328

Ostatni krok w programowaniu Nano to wgranie kodu. Najpierw upewnij się, że płytka jest cały czas połączona z komputerem przez kabel USB. Następnie kliknij przycisk Upload, który wygląda jak strzałka skierowana w prawo (patrz rysunek 0.9). Gdy najeżdżasz wskaźnikiem myszy nad przycisk Upload, słowo Upload powinno pojawić się na prawo obok pięciu głównych ikon.

Wgranie kodu na Arduino nie powinno trwać zbyt długo, ale to zależy od długości szkicu. Następnie ustaw zasilanie i przetestuj swój obwód. (Nie zapomnij o odłączeniu USB przed włączeniem zasilania z zewnętrznego źródła.)

Rysunek 0.9. Okno ze szkicem po kliknięciu przycisku Upload

Podłączanie i programowanie Arduino Pro Mini

Arduino Pro Mini (lub klon) działa bardzo podobnie do Arduino Nano, ale zamiast wbudowanego interfejsu USB ma połączenie TTL (ang. transistor--transistor logic; układ tranzystorowo-tranzystorowy). Najprostszym znalezionym przeze mnie sposobem wgrywania kodu na Pro Mini jest usunięcie chipa procesora z Arduino Uno (patrz rys. 0.10) i użycie płytki Uno jako programatora.

Uno bez procesora można podłączyć bezpośrednio do komputera przez USB, dzięki czemu będzie zarówno dostarczać podłączonej do niego płytce Pro Mini zasilanie, jak i sygnały programistyczne. Kabel USB dla Arduino Uno to standardowy kabel USB ze zwykłym (typu A) złączem USB na jednym końcu i kwadratowym USB (typu B) na drugim (patrz rys. 0.10). Więcej informacji na temat kabli USB można znaleźć pod adresem https://www.sparkfun.com/pages/USB_Guide/.

Rysunek 0.10. Klon Arduino Uno po wyjęciu procesora (leży na prawo od płytki), kabel USB, zestaw kabli do programowania i luźny przewód resetowania

Połącz Uno z Pro Mini w taki sposób:

• Rx na Pro Mini z Rx na Uno,

• Tx na Pro Mini z Tx na Uno,

• VCC na Pro Mini z 5,0 V na Uno,

• GND na Pro Mini z GND na Uno,

• RST na Pro Mini z RST na Uno.

Ja zrobiłem prosty kabel do podłączenia zasilania napięciem dodatnim i ujemnym, jak również sygnałów odbioru (Rx) i nadawania (Tx) (patrz rys. 0.11). Poszczególne przewody na jednym końcu łączą się bezpośrednio z listwami szpilkowymi na Uno, a 4-pinowy wtyk jest podłączony do brzegowych listew na Pro Mini. Można również użyć osobnych przewodów połączeniowych, jak te używane dla płytki prototypowej. Odkryłem, że najłatwiej podłączyć Pro Mini do płytki prototypowej, bo dzięki temu mogę łączyć sygnał RST za pomocą przewodu połączeniowego (patrz rys. 0.11).

Rysunek 0.11. Klon Arduino Pro Mini gotowy na programowanie, z klonem Arduino Uno służącym za programator. Zasilanie dostarcza połączenie USB Arduino Uno

Zanim podłączysz kabel USB Uno do komputera upewnij się, że wszystkie połączenia są prawidłowe. Gdy programujesz Pro Mini, wybierz poprawną płytkę w sekcji Board z menu Tools; mimo że podłączasz do komputera Arduino Uno, nadal programujesz Pro Mini. Gdy skończysz już tę konfigurację, możesz wgrać szkice do Pro Mini tak samo jak w przypadku Nano.

Chociaż używanie Arduino Uno jako pośrednika to najprostszy sposób programowania Pro Mini, możesz również zakupić przejściówki (konwertery) USB-do-TTL, takie jak na rysunku 0.12. Ja za 5 do 12 dolarów kupiłem na eBay’u kilka sztuk i po drobnych przeróbkach (terminale są czasami inaczej oznaczone) wszystkie działały dobrze.

Jednak programowanie Arduino to dopiero początek. Aby zbudować naprawdę trwały projekt, musisz przylutować działający obwód Arduino do płytki. Niestandardowa płytka drukowana (także: obwód drukowany lub PCB – ang. printed circuit board lub printed wiring board), to najlepszy sposób, aby twój projekt był czysty i schludny – jeśli masz ochotę na dodatkową pracę, aby to zrobić.

Rysunek 0.12. Przejściówka USB do programowania Pro Mini i innych płytek z kontrolerem bez własnego interfejsu USB. Ta przejściówka ma wtyk męski USB (typu A) i pin DTR (Data Terminal Ready) zamiast pinu resetowania (RST). Większość konwerterów USB-do-TTL można zasilać za pomocą 3,3 V, jak również 5 V, ale wcześniej to sprawdź, ponieważ niektóre urządzenia działają jedynie przy 3,3 V

Używanie oprogramowania do projektowania płytek PCB

Jest wiele programów do projektowania PCB, które różnią się funkcjonalnością i ceną. Wiele z nich jest dostępnych za darmo, ponieważ producenci chcą w ten sposób zachęcić do wytwarzania płytek w należących do nich zakładach. Dlatego też te darmowe narzędzia do płytek własnej roboty mają pewne ograniczenia, jak np. zablokowanie niektórych funkcji. Ja zarówno do jedno- jak i dwustronnych płytek używam programu ExpressPCB (https://www.expresspcb.com/).

UWAGA
Jeśli chodzi o niestandardowe płytki dwustronne, to musiałem ręcznie obrócić obraz. Sztuczka przy tworzeniu płytek dwustronnych polega na prawidłowym wyrównaniu obydwu stron. Aby uprościć sobie to wyrównywanie, w wielu projektach możesz oznakować odpowiednie miejsca i przed przeniesieniem obrazu wywiercić otwory na pustej płytce. Ponadto, robiąc płytki dwustronne, czasami używałem programu do projektowania o nazwie TurboCAD (podobny do AutoCAD-a).

ExpressPCB to najtańsze rozwiązanie do tworzenia płyt, jakie udało mi się znaleźć. Firma udostępniła usługę MiniBoard, w ramach której można zamawiać stosunkowo tanie płytki, o standardowych rozmiarach i bez żadnych „bajerów”. Poza tym, ponieważ przemysł cały czas tworzy nowe rozwiązania, kluczowe znaczenie ma używanie takiego programu, który zawiera schematy najnowszych układów scalonych. Z programu ExpressPCB korzystałem do tworzenia płytek przejściówek – z SOIC do DIP – i do scalania układów SOIC z ukończonymi płytkami, ponieważ program ten sprawdza się przy elementach o małych rozmiarach. Nawet jeśli chcę zrobić płytkę z mikrokontrolerem „zbudowaną w konkretnym celu”, co zwykle wymaga wielu warstw, płaszczyzny masy i płaszczyzny VCC (dodatnie napięcie zasilania), ExpressPCB prawdopodobnie spełni te wymagania.

Aby używać tego programu, wejdź na witrynę ExpressPCB, pobierz darmowy program i zainstaluj go. Na witrynie ExpressPCB jest kilka samouczków poświęconych używaniu programu, z którymi warto się zapoznać. Jest też dodatkowy darmowy program, ExpressSCH, który służy do odwzorowywania układów scalonych na własnych schematach. Co prawda integracja funkcjonalności tych programów pozostawia trochę do życzenia, ale używanie tej pary jest pomocne przy projektowaniu obwodów.

UWAGA
Wszystkie projekty PCB w tej książce powstały za pomocą programu ExpressPCB i są dostępne pod adresem https://www.nostarch.com/arduinoplayground/. Aby przeglądać albo zmieniać rysunki, trzeba najpierw pobrać i zainstalować ten program.

Kolejną korzyścią związaną z używaniem ExpressPCB jest fakt, że ten sam plik, który opracowujesz samodzielnie, tworząc układ scalony, możesz wysłać do zakładu produkcyjnego firmy, zamawiając profesjonalne wykonanie płytki. Zrobiłem tak z kilkoma projektami z tej książki – najczęściej, po tym jak wykonałem swój własny i chciałem posprzątać płytkę. Efekty okazały się bardziej niż satysfakcjonujące. Płytki przygotowane przez fabrykę mają metalizowane otwory – jeśli tworzysz własne płytki dwustronne, konieczne jest lutowanie po obu stronach. Mają również wykończenie w postaci powlekania stopem cyny z ołowiem i można je wykonać zabezpieczone maską lutowniczą i nadrukowanym sitodrukowym obrazem. Na rysunku 0.13 pokazano płytkę, którą wykonałem w programie ExpressPCB.

Rysunek 0.13. Profesjonalnie wykończona płytka drukowana, powleczona maską lutowniczą i sitodrukiem; użyłem jej do wykonania chronografu balistycznego w rozdziale 8

WSKAZÓWKA DLA PRODUKUJĄCYCH WIELE RÓŻNYCH PŁYTEK

Aby za niewielkie pieniądze wykonać więcej niż jedną płytkę, możesz skorzystać z usługi MiniBoard w programie ExpressPCB. Aby płytka została uznana za MiniBoard, a tym samym, udzielono rabatu, jej rozmiary nie mogą przekraczać 3,8 × 2,5 cala (9,7 × 6,4 cm), a gdy otworzysz program, żółta pomocnicza ramka automatycznie pokazuje obszar o tym rozmiarze. Przygotowując płytki PCB takie jak ta na rysunku 0.14, połączyłem kilka mniejszych płytek w jedną dużą „płytę”, kopiując i wklejając małe płytki na maksymalny rozmiar w cenie MiniBoard.

Rysunek 0.14. Trzy różne płytki do jednego zamówienia MiniBoard. Płytka do chronografu balistycznego znajduje się u góry po lewej, a do miernika pH – na dole. Po prawej na górze jest optyczny tachometr, którego w tej książce nie zrobimy. Za cenę jednej, otrzymuje się trzy kopie każdej płytki. Wystarczy tylko je rozciąć.

Robienie własnych płytek drukowanych

Jest kilka technik wykonywania PCB po ich zaprojektowaniu. Jak wyjaśnię w rozdziale 2, najpopularniejsza jest metoda eliminacji, w której miedź jest selektywnie usuwana z pokrytego folią bakelitu lub płytki epoksydowej/szklanej w taki sposób, aby pozostał wzór. Miedź można zetrzeć mechanicznie, ale jeśli chcesz robić płytki drukowane w domu, najpopularniejszą i najtańszą metodą jest chemiczne wytrawienie wzoru.

Gdy chemicznie wytrawiasz PCB, układ scalony jest drukowany na pustej płytce za pomocą powłoki ochronnej (ang. resist), czyli substancji chemicznej, która zapobiega usunięciu miedzi przez wytrawiacz (ang. etchant) na obszarach poddawanych obróbce. Wytrawiacz to kwas, który atakuje nieobrobioną miedź na powleczonej płytce. Na rysunku 0.15 pokazano, jak miedziana płytka zmienia się w PCB.

Rysunek 0.15. Od lewej do prawej: nieobrobiona, wyszorowana, powleczona miedzią płytka; płytka z nadrukowaną powłoką ochronną; wytrawiona płytka bez nawierconych otworów

Dawniej tworzenie PCB było żmudną i brudną robotą – w szczególności dla hobbystów. Najpierw trzeba było rozplanować wzór układów scalonych, co jeszcze niedawno robiło się za pomocą taśmy na folii octanowej rozłożonej na podświetlonym stole. Następnie należało wyczyścić pokrytą miedzią płytkę i nanieść fotorezyst, a potem naświetlić światłem UV i wywołać za pomocą niezbyt korzystnego dla zdrowia tetrachlorometanu (CCl₄) albo niewiele lepszego trichloroetenu (C₂HCl₃). Potem zaczynał się brudny proces wytrawiania za pomocą chlorku żelaza (III) (FeCl₃) lub nadsiarczanu amonu [(NH₄)₂S₂O₈]. Ze względu na konieczność wykonania wszystkich powyższych czynności, na wyprodukowanie jednej płytki zwykle trzeba było poświęcić większość dnia.

Dzisiaj wszystko się zmieniło. Dzięki współczesnemu, nowoczesnemu oprogramowaniu do projektowania płytek PCB, często można rozplanować wzorzec stosunkowo prostej jedno- lub nawet dwustronnej płytki w niecałą godzinę. Od tego momentu proces staje się jeszcze prostszy.

Stosowanie wzorca

Jeśli chcesz się nauczyć wytrawiać własne PCB, odwiedź witrynę PulsarProFX (http://www.pcbfx.com/), na której znajdziesz narzędzia potrzebne do tego, aby bez problemu umieścić obraz na płytce pokrytej miedzią. Produkt PCB Fab-In-A-Box firmy Pulsar to kompletny zestaw, który zawiera wszystkie elementy potrzebne do tego, aby zacząć pracę i zrobić kilka płytek. Jednym z kluczowych składników jest specjalny papier, na którym drukuje się za pomocą drukarki laserowej. Służy on następnie do przenoszenia obrazu na płytkę powleczoną miedzią za pomocą ciepła. Cały proces fabrykacyjny – przed wywierceniem otworów – prawie nigdy nie trwa dłużej niż godzinę, o ile nie oszczędzasz na wytrawiaczu, co spowalnia czas wytrawiania.

Oprócz elementów z zestawu Pulsara, potrzebne są następujące narzędzia:

• drukarka laserowa,

• laminator do tworzyw sztucznych (Pulsar zaleca używanie laminatora GBC, ale ja od lat używam marki Office Depot i działa dobrze);.

• laboratoryjna łaźnia wodna.

Procedura nanoszenia wzorca PCB na powleczoną miedzią płytkę jest stosunkowo prosta:

1. Zaprojektuj wzór na komputerze w programie do rozplanowywania elementów płytki, takim jak ExpressPCB.

2. Używając drukarki laserowej, a nie atramentowej, wydrukuj obraz na specjalnym papierze dostarczanym przez Pulsar. Toner to związek polimerowy, który topi się po podgrzaniu i częściowo wiąże z papierem, pozostawiając na nim obraz. Papier, po ponownym podgrzaniu na pustej płytce drukowanej, umożliwia łatwy transfer obrazu.

3. Przenieś obraz z papieru bezpośrednio na powleczoną miedzią płytkę, używając taniej biurowej maszyny do laminowania.

Toner stopiony z papierem staje się powłoką ochronną na płytce powleczonej miedzią. Pulsar dostarcza dodatkową, cienką warstwę folii termalnie związaną z tonerem, ale sam toner oprze się wytrawiaczowi.

Wytrawianie płytki

Mimo że miedź nie jest metalem o wysokiej aktywności, jest kilka reakcji wymiany, które skutecznie ją wytrawiają. Jednak wiele z wynikowych produktów ubocznych jest toksycznych i prawie zawsze pojawiają się substancje, które wymagają specjalnego usuwania lub przetwarzania, ponieważ są wyjątkowo szkodliwe dla środowiska. Większość soli miedzi to silne trucizny dla wielu roślin i zwierząt, a także dla człowieka.

Jeśli chodzi o lepszą metodę wytrawiania, to polecam znajdującą się na portalu Instructables stronę zatytułowaną „Stop Using Ferric Chloride Etchant (A Better Solution)” [Przestań używać chlorku żelaza jako wytrawiacza (lepsze rozwiązanie)]. Można ją znaleźć pod adresem https://www.instructables.com/id/Stop-using-Ferric-Chloride-etchant!--A-better-etc/. Zanim rozpoczniesz mieszanie swojego wytrawiacza, przeczytaj zawarte w tym artykule ostrzeżenia odnośnie środowiska i ludzi.

W systemie opisanym w tym samouczku stosuje się standardowe chemikalia, które można znaleźć w gospodarstwie domowym: nadtlenek wodoru (H₂O₂) i kwas solny (czyli kwas chlorowodorowy, HCl). Proces ten jest o wiele bardziej przyjazny dla środowiska niż stare techniki z chlorkiem żelaza czy nadsiarczanem amonu. Możesz również zregenerować opisywany roztwór bez konieczności wyrzucania starego, ponieważ tak naprawdę miedź – a dokładnie chlorek miedzi w rozwodnionym roztworze kwasu solnego – służy tu do rozpuszczania miedzi.

Oprócz wytrawiacza, potrzebne będzie naczynie albo pojemnik, w którym płytka ma zostać wytrawiona. Jeśli chodzi o płytki bardzo małe (lub średnich rozmiarów), można używać cylindrycznego pojemnika, takiego jak zlewka na rysunku 0.16.

Gdy wytrawiacz znajduje się w bezpiecznym pojemniku, wystarczy jedynie zanurzyć w nim płytkę i wyciągnąć ją, gdy niepożądanej miedzi już nie będzie. W scenariuszu przedstawionym na rysunku 0.16, drukowana płytka jest zanurzana i wyciągana z roztworu wytrawiającego. Zwróć uwagę, że zlewka znajduje się na elektrycznej płycie grzewczej. Podgrzewanie roztworu przyspiesza proces wytrawiania, ale pamiętaj o utrzymaniu temperatury w zakresie od 38 do 49°C.

W przypadku większych płytek można użyć jakiegoś rodzaju szklanego naczynia żaroodpornego. Jeśli pochylisz naczynie, wytrawiacz oblewa płytkę, tak jak na rysunku 0.17.

Rysunek 0.16. Wytrawianie małej płytki w zlewce z użyciem automatycznego mieszadła do wytrawiania płytek drukowanych z rozdziału 2. Płytka jest umocowana na plastikowej opasce zaciskowej

Rysunek 0.17. Wytrawianie większych płytek w pojemniku, który jest lekko przechylany przez automatyczne mieszadło do wytrawiania płytek drukowanych

Naczynie może być szklane albo plastikowe. Kiedyś używałem szklanej formy do pieczenia, ale pojemnik na rysunku 0.17 jest plastikowy. Jeśli używasz pojemnika plastikowego, to uważaj na temperaturę. Podany wyżej zakres powinien być bezpieczny.

W obu pokazanych sytuacjach wytrawianie odbywa się szybciej dzięki użyciu mieszadła na bazie Arduino (projekt ten został omówiony w rozdziale 2). Mieszadło to prosty sposób na mechaniczne pobudzenie wytrawiacza i przyspieszenie całego procesu.

Nawiercanie płytki

Wytrawianie jedynie usuwa miedź, więc jeśli nie robisz jednostronnej płytki z montażem wyłącznie powierzchniowym, musisz ręcznie ponawiercać otwory na elementy. Wiercenie może być żmudne, w zależności od tego, jaki masz sprzęt i jaka jest liczba otworów.

Gdy zaczynałem robić płytki, używałem ręcznego wielofunkcyjnego narzędzia Dremel z wiertłem #66. W małych projektach można wiercić ręcznie, ale w większych wiertarka stołowa jest znacznym ułatwieniem.

Jeśli masz już takie narzędzie wielofunkcyjne, to masz szczęście. Nawet za niecałe 40 dolarów[3] (zależnie od tego, gdzie robisz zakupy) dostaniesz moduł, dzięki któremu przekształcisz je w miniwiertarkę stołową, która świetnie sprawdzi się nie tylko przy nawiercaniu płytek drukowanych, ale też w setkach innych zadań. A jeśli nie masz jeszcze takiego narzędzia, to – jeśli się dobrze rozejrzysz – kupisz je za około 30 dolarów, albo i mniej. Poza tym, dostępny jest całkiem spory wybór innych szybkich wiertarek i miniwiertarek stołowych, i to po przystępnej cenie. Sprawdź na portalu Harbor Freight albo u innych internetowych dostawców importowanych produktów.

Jeśli masz w planie wyprodukowanie kilku płytek drukowanych, zalecam kupno dedykowanej wiertarki stołowej zamiast akcesorium. Są tanie jednostki, działające przy niskim napięciu, jak również jednostki drogie, takie jak Electro-Mechano (patrz rys. 0.18), która została zaprojektowana specjalnie do wiercenia niewielkich otworów w biżuterii i płytkach drukowanych. Wybierz po prostu taką, która najlepiej spełnia twoje wymagania.

Do nawiercania płytek potrzebne ci będą małe wiertła. Zalecam komplet 10 wierteł z węglika wolframu z uchwytami 1/8 cala. Można takie dostać w Electronic Goldmine (część #G15421). Podobny zestaw jest dostępny w sklepie Amazon i ja sam po bardzo umiarkowanej cenie kupiłem kilka takich kompletów.

Rysunek 0.18. Mała wiertarka stołowa Electro-Mechano, której używam do wiercenia płytek drukowanych

Złącza używane w tej książce

W całej tej książce próbowałem uprościć używanie złączy i zminimalizować liczbę ich wariantów. Ale niezależnie od tego, czy robisz swoje własne płytki czy nie, zawsze potrzebujesz jakiegoś sposobu na łączenie ze sobą modułów takich jak LCD, przejściówki I²C, czujniki itd. A czasami musisz samodzielnie zamontować złącza.

Złącza, których ja używam dość często, to rodzina o rozstawie 0,100 cala (0,25 cm) – standard, który sprawdza się zarówno przy męskich, jak i żeńskich listwach szpilkowych do płytek drukowanych, oraz w przypadku samodzielnych złączy w niektórych wiązkach kablowych. Mimo że urządzenia używane w tej książce zostały kupione w Pololu Robotics and Electronics (https://www.pololu.com/), takie same lub podobne są dostępne u wielu innych dostawców, w tym Jameco, Newark, Mouser, Digi-Key itd.

Na rysunku 0.19 pokazano kilka podstawowych, stosowanych przeze mnie konfiguracji złączy.

Rysunek 0.19. Kilka podstawowych złączy

Złącza męskie i żeńskie z zaciskanymi pinami to podstawa większości tworzonych przeze mnie kabli. Trzeba je jednak zacisnąć z przewodem, z którym są połączone. Aby zacisnąć pin, możesz użyć profesjonalnego zaciskacza (patrz rys. 0.20) i otrzymać elegancko wykończony zacisk (patrz rys. 0.21).

Rysunek 0.20. Zaciskacz używany do złączy z zaciskanymi pinami o rozstawie 0,100 cala z przewodem o średnicy 26, 28 i 30 (AWG)

Rysunek 0.21. Złącze męskie z zaciskanymi pinami prawidłowo zmontowane za pomocą zaciskacza

Zaciskacz sprzedawany przez Pololu do złączy zaciskowych tej firmy jest stosunkowo łatwy w użyciu i pozwala robić schludne, solidne połączenia, ale jest trochę drogi – trzeba na niego wydać około 30 dolarów. Jeśli nie chcesz kupować zaciskacza, możesz zaciskać złącza małymi szczypcami. Uzyskane połączenie może nie będzie tak ładnie wyglądać, ale powinno działać równie dobrze. Na rysunku 0.22 jest kabel, który zacisnąłem kombinerkami.

Rysunek 0.22. Złącze męskie identyczne jak to na rysunku 0.21, ale zaciśnięte ręcznie, za pomocą kombinerek. Oba gładko wchodzą do osłony i dobrze działają

Możesz robić kable, które są podłączane do męskich listew szpilkowych, stosując żeńskie złącza z zaciskanymi pinami. Przydają się one do łączenia części PCB z kablem, a także płytki Arduino z płytką rozszerzającą.

Listwy i osłony są dostępne w rozmiarach od szerokości jednego pinu do 10, 15 i więcej pinów. W większości projektów w tej książce, jeśli używane są złącza robione ręcznie, to są to złącza 2- i 4-pinowe.

Używanie układów SOIC

Robienie złączy do przewlekanych listew jest w porządku, ale układy scalone do montażu przewlekanego z pinami o rozstawie 0,100 cala są coraz rzadsze. Co prawda producenci w dalszym ciągu produkują wiele układów scalonych w starszym formacie, ale nowe projekty często są dostępne jedynie jako elementy do montażu powierzchniowego. Te nowe pakiety są znane jako SOIC (ang. small-outline integrated circuits; małe układy scalone). Na rysunku 0.23 pokazano dla porównania dwa elementy układy SOIC obok 8-pinowego układu scalonego DIP.

Rysunek 0.23. Standardowa obudowa DIP (u góry) w porównaniu z dwoma maleńkimi układami scalonymi SMD: 5-pinowym Linear Technology LTC1799 w obudowie TSOT-23 (na środku) oraz 3-pinowym Maxim MAX7375AUR w obudowie SOT-23 (na dole). Obok – dla porównania – moneta dziesięciocentowa

Co to są podzespoły do montażu SMT?

Dwa układy scalone niebędące układami DIP, pokazane na rysunku 0.23, to podzespoły do montażu SMT (ang. surface-mount technology, montaż powierzchniowy). Układy SMT są lutowane bezpośrednio na powierzchni płytki, a nie za pomocą pinów wystających przez otwory na dole. Zaletą SMT jest to, że mogą być one znacznie mniejsze i znajdować się w bezpośredniej bliskości, czego skutkiem jest bardziej zwarte urządzenie. Wiele elementów SMT ma średnicę 0,95 mm (0,0374 cala) lub mniejszą, która nie pasuje do omawianego wcześniej rozstawu 0,100 cala.

Używanie elementów SMT zmniejsza też długości przewodów, co może mieć krytyczne znaczenie przy wysokich częstotliwościach. Wiele drukowanych płytek ma wiele warstw (projekty z tej książki mają maksymalnie dwie warstwy), a połączenia między nimi wykonywano wcześniej za pomocą otworów na piny na układach scalonych. Teraz połączenia te znacznie częściej robi się za pomocą przelotek, czyli małych, metalizowanych otworów w płytce. Urządzenia do automatycznego układania elementów na płytkach (ang. pick-and-place) obecnie również koncentrują się na technologii SMT. Nie nastąpi to zaraz, ale pewnego dnia rezystory, kondensatory, induktory, diody LED, bezpieczniki itd., będą prawdopodobnie dostępne tylko w wariantach do montażu powierzchniowego.

Z omawianych w tej książce obudów SMT wystają wyprowadzenia (ang. leads), mimo że nie zostały zaprojektowane po to, by przechodzić przez otwory w płytce. Układy scalone z wyprowadzeniami występują w wielu konfiguracjach i z różnymi odstępami między pinami – od bardzo małej liczby wyprowadzeń (tak jak dwa elementy SMT na rysunku 0.23), po układy scalone z setkami wyprowadzeń.

UWAGA
W tej książce unikam pewnych obudów SMT, jak np. ultramałych obudów z możliwością bezpośredniego połączenia, gdzie chip łączy się bezpośrednio z PCB (co nosi nazwę chip-on-board), oraz matryc BGA (Ball Grid Array), gdzie połączeniem są kulki ze stopu lutowniczego wyprowadzane ze spodu obudowy.

Metoda z pastą lutowniczą

Jeśli używasz chipów SMT z wyprowadzeniami, to masz kilka opcji. Możesz na przykład projektować płytki z punktami lutowania dla układów SOIC i lutować układ scalony bezpośrednio na płytce. Lutowanie elementu SOIC wymaga zastosowania pasty lutowniczej i podgrzania samej płytki. Mimo że jest to wykonalne (i zostało omówione w wielu dostępnych w sieci podręcznikach), ułożenie elementów na płytce może być trudne – zwłaszcza gdy płytka ma elementy zarówno do montażu przewlekanego, jak i powierzchniowego. Jeśli nie masz wzornika do nanoszenia pasty lutowniczej, musisz nakładać ją ręcznie, zwykle za pomocą strzykawki, a  czasami ostrą wykałaczką lub wykałaczką dentystyczną. Na rysunku 0.24 pokazano zbiór narzędzi, których używam w tym procesie.

Kilku dostawców internetowych oferuje po przystępnej cenie pastę lutowniczą w strzykawkach. Większość związków wchodzących w skład pasty lutowniczej ma punkt topnienia w przedziale od 149 do 243°C (a niektóre w niższej temperaturze), więc płytki można lutować w tosterze albo w naczyniu na elektrycznej płycie grzewczej.

Rysunek 0.24. Stop lutowniczy Chip Quik, nagłowne szkło powiększające, płytka z przejściówką oraz układ SOIC (punkcik obok szczypczyków) – gotowe do montażu

Używaną przeze mnie pastą lutowniczą jest Chip Quik. Jest ona sprzedawana po względnie niskiej cenie, w strzykawce z końcówką i ma punkt topnienia jedynie 138°C. Końcówka mogłaby co prawda być trochę mniejsza, ale sprawdziła się w większości zastosowań. Niski punkt topnienia Chip Quik sprawia, że lutowanie płytki w tosterze lub na przenośnej kuchence jest łatwe, ale może też stanowić problem: w projektach z wysokim natężeniem prądu spoiwo lutownicze może się za bardzo rozgrzać i stopić. Ale przy napięciach, prądach i poziomach sygnałów z projektów w tej książce nie spodziewam się żadnych wynikających z tego problemów.

Po nałożeniu pasty lutowniczej elementy można starannie położyć na paście za pomocą pęsety, jednak przy tym nie może zadrżeć ręka. Ja używam również zakładanego na głowę szkła powiększającego, dzięki czemu dobrze widzę połączenia. Gdy chip zostanie umieszczony na miejscu, pozostaje jedynie podgrzanie zestawu do punktu topnienia lutu i voilà – żmudne zadanie wykonane.

Jeśli zamiast kupować specjalistyczny piec SMT, wolisz podgrzewać płytkę w standardowym tosterze, nie używaj go później do przygotowywania pożywienia. Wiele stopów lutowniczych w dalszym ciągu zawiera ołów, który – jak wiadomo – zdrowiu nie służy. Topniki (obecne w paście lutowniczej, aby zwiększyć płynność lutu) i lepiszcza również zawierają pewne lotne związki, które w razie ich połknięcia mogą ci zaszkodzić.

Mniejsze płytki możesz też umieścić w małej, czystej metalowej puszce. Następnie postaw ją na przenośnej płycie grzewczej i przymocuj na wierzchu niewielki kawałek stali (aluminium też może być), aby zatrzymać ciepło. Gdy pasta lutownicza stopnieje, przestań podgrzewać puszkę. Proces ten zwykle trwa zaledwie kilka minut.

Jeśli ktoś ma palce takie grube jak ja, 0,95 mm to bardzo mało i to niezależnie od tego, czy chodzi o nakładanie pasty lutowniczej, umieszczanie komponentu czy bezpośrednie lutowanie elementu SMT z wyprowadzeniami. Taki proces wymaga czasami kilku prób. Jeśli uważasz, że nie masz jeszcze wprawy, aby wypróbować rozwiązanie z pastą lutowniczą bezpośrednio na głównej płytce drukowanej, zastanów się nad kupnem płytki przejściówki, aby zamienić elementy SMT na konwencjonalne układy do montażu przewlekanego o rozstawie 0,100 cala.

Kilku sprzedawców ma w swojej ofercie małe przejściówki, dzięki którym można zrobić konwersję z obudowy SOIC na obudowę DIP z rozstawem 0,100 cala. Przejściówka na rysunku 0.25 pochodzi z firmy Futurlec (http://www.futurlec.com/). Przejściówki te są sprzedawane po 28 centów za sztukę, więc zamówiłem całą gamę, w tym układy SOIC 8-, 14-, 16- i 18-pinowe.

Rysunek 0.25. Płytka przejściówka Futurlec 6PINSO23

Najlepszą metodą lutowania, nawet w wypadku przejściówki, jest używanie pasty lutowniczej i piekarnika elektrycznego (albo puszki, jak to właśnie opisałem). Ale jeśli nie masz dostępu do tych materiałów, zawsze możesz bezpośrednio przylutować element SOIC.

Lutowanie bezpośrednio

Lutowanie elementu SOIC bezpośrednio jest nieco skomplikowane. Wymagana jest lutownica z precyzyjną końcówką, ale ja używam tej samej, której używam do wszystkiego innego. (Wydaje mi się, że jest to 0,7 mm.) Oto na czym polega ta metoda:

1. Najpierw, umieść męskie listwy szpilkowe na płytce prototypowej z przejściówką na górze i przylutuj je aby utworzyć stabilną platformę (patrz rys. 0.26).

2. Mimo że przejściówka ma na miedzi powłokę lutu, nie jest na tyle gruba, aby zabezpieczyć wyprowadzenia z układu scalonego. Potrzeba więcej lutu, więc starannie stop cienką warstwę cyny na tylko jednym punkcie kontaktowym. (Często umieszczam zbyt wielką kulkę lutu i muszę usuwać ją za pomocą taśmy rozlutowującej, ale to też działa dobrze, ponieważ pozostawia cienką powłokę z lutu na samym punkcie kontaktowym.)

3. Umieść element na płytce przejściówce, przytrzymaj nieruchomo (ja przyciskam dentystyczną wykałaczką) i przyłóż rozgrzaną lutownicę do wyprowadzenia, pod którym jest lut.

4. Gdy pierwsze wyprowadzenie jest bezpieczne, przytrzymuje urządzenie w miejscu i możesz ostrożnie lutować pozostałe wyprowadzenia, używając lutownicy.

Rysunek 0.26. Płytka przejściówka z listwami zainstalowanymi i podłączonymi do płytki prototypowej do lutowania układu scalonego. Widoczne cząsteczki to pozostałość z lutu i topnika, które później usunąłem za pomocą alkoholu i wacika.

Na rysunku 0.27 pokazana jest płytka, którą w ten sposób lutowałem. Może nie wygląda najpiękniej, ale działa.

Ukończoną przejściówkę, taką jak ta na rysunku 0.27, można zamontować na konwencjonalnej płytce do montażu przewlekanego z rozstawem otworów 0,100 cala. W tej książce techniki tej używam w projektach chronografu balistycznego (rozdział 8) i generatora fal kwadratowych (rozdział 9).

Rysunek 0.27. Ukończona płytka przejściówka z zainstalowanymi męskimi listwami szpilkowymi, przylutowanym chipem i kondensatorem odsprzęgającym, przylutowanym na dwóch nóżkach. Jest to oczyszczona wersja płytki z rysunku 0.26

Uwagi końcowe

Mając wiedzę z tego rozdziału oraz pewne doświadczenie w elektronice, poradzisz sobie z dowolnym projektem z tej książki. Inne ważne techniki i informacje są omawiane w dalszej części książki, tam gdzie są potrzebne.

1
WEHIKUŁ CZASU REAKCJI

W tym rozdziale pokażę, jak zbudować wehikuł czasu – a dokładniej, wehikuł czasu reakcji. Chciałbym powiedzieć, że ten projekt przeniesie cię „z powrotem do przyszłości”, ale niestety tak się nie stanie. „Czas” w tym przypadku oznacza czas, którego potrzebujesz, aby zareagować na pewien bodziec, a to zapewnia fajną zabawę. Projekt ten został pomyślany tak, aby dokładnie mierzyć czas reakcji danej osoby i wyświetlać komentarz na temat jej sprawności (patrz rys. 1.1). Jest też dużo miejsca na dostosowanie gry do własnych potrzeb, aby była nawet jeszcze fajniejsza dla ciebie, twoich przyjaciół i twojej rodziny.

Rysunek 1.1. Ukończony wehikuł czasu reakcji

Wymagane narzędzia

Lutownica i lut

Wiertarka i wiertła

Taśma montażowa

Szczypce do cięcia drutu

Lista części

Ten projekt ma najkrótszą listę wymaganych części w całej książce, ale nie świadczy to bynajmniej o jego mniejszej wartości. Moja rodzina i przyjaciele od dawna cieszą się tą grą, która na dodatek jest przenośna, więc możesz zabierać ją ze sobą na spotkania towarzyskie i inne imprezy.

Oto czego będziesz potrzebować:

Jedna płytka Arduino Nano lub klon

Dwa chwilowe przełączniki SPST (najlepiej jeden z czerwonym przyciskiem, a drugi z przyciskiem innego koloru)

Jeden dwustabilny przełącznik SPST

Jedna czerwona dioda LED

Dwa rezystory 10 kΩ

Jeden rezystor 470 Ω

(Opcjonalnie) jeden sygnalizator dzwonkowy, Mallory Sonalert lub podobny

Jeden wyświetlacz LCD 4 × 20

Jedna przejściówka I²C, jeśli nie ma jej w zestawie z LCD (patrz punkt „Przytwierdzanie płytki I²C do LCD” na stronie 3)

UWAGA
Ja kupiłem oddzielnie wyświetlacz LCD 16 × 2 i zewnętrzną płytkę I²C do niego, a potem je ze sobą zlutowałem. Jednak wielu sprzedawców internetowych ma w ofercie ten sam wyświetlacz i przejściówkę I²C już zlutowane za tę samą cenę albo nawet taniej niż oddzielnie. Sprawdź szczególnie na witrynie eBay.

Jedna bateria 9 V

Jeden klips na baterię 9 V

Jedno gniazdo 3,5 mm (jeśli używany będzie zdalny przełącznik)

Jedna obudowa Hammond 1591 BTCL

Drut montażowy 28 lub 30 AWG

Przewód liniowy z jednolitym rdzeniem 22 AWG

Materiały do pobrania

Zanim rozpoczniesz ten projekt, sprawdź poniższe pliki z zasobami do tej książki znajdujące się pod adresem https://www.nostarch.com/arduinoplayground/:

Plik ze szkicem: Reaction.ino

Szablon wiercenia do obudowy: ReactionEnclosure.pdf

Reakcja a odruch

Ludzie często mylą reakcję z odruchem, więc zacznę od zdefiniowania obu tych pojęć. Odruch to mimowolna, automatyczna odpowiedź na bodziec. W przypadku odruchu bodziec pomija mózg i wędruje od swojego źródła do rdzenia kręgowego i z powrotem do receptora, który kontroluje odpowiedź, bez żadnego kognitywnego potwierdzenia. (Przyznam, że znam wiele osób, u których, tak mi się wydaje, prawie wszystkie bodźce – oraz informacje – pomijają mózg i często po prostu znikają.) Przykładem może być lekarz uderzający w kolano młotkiem neurologicznym, aby wyzwolić spontaniczny odruch kolanowy (rzepkowy).

W reakcjach natomiast bodziec wędruje do mózgu w celu przetworzenia, a następnie reakcja powrotna idzie do receptora, czego wynikiem jest pewna akcja motoryczna. Proces ten trwa trochę dłużej niż typowy odruch, ale mówi się, że niektórzy sportowcy mają tak krótkie czasy reakcji, że bardziej przypominają one odruchy.

UWAGA
Magazyn Sports Illustrated przeprowadził interesujące badania w tym obszarze i wydał pouczające artykuły o baseballistach i innych sportowcach, którzy – jak się wydaje – mają wyjątkowe czasy reakcji.

Na czym polega ta gra?

W grze w wehikuł czasu reakcji mierzy się, ile czasu osoba potrzebuje na naciśnięcie przycisku w odpowiedzi na wzrokowy bodziec – w tym przypadku jest nim dioda LED. Po małej modyfikacji, możesz dodać do gry bodziec słuchowy: po prostu zastąp LED sygnalizatorem dźwiękowym, takim jak Mallory Sonalert. Czas reakcji jest mierzony w milisekundach lub sekundach (ty wybierasz) i jest to czas od chwili aktywacji bodźca do momentu naciśnięcia przycisku przez użytkownika.

HISTORIA URZĄDZEŃ MIERZĄCYCH CZAS REAKCJI

W ciągu lat powstało wiele urządzeń do pomiaru czasu reakcji. Jedno z najprostszych, jakie pamiętam sprzed lat, polega na ustawieniu dłoni w taki sposób, aby między palcami a kciukiem znajdował się początek skali linijki, którą inna osoba trzyma pionowo w powietrzu. Gdy ta druga osoba znienacka puści linijkę, na podstawie miejsca, w którym uda ci się ją złapać, możesz odczytać, jaką drogę zdążyła przebyć. Odległość tę można przełożyć na czas za pomocą równania algebraicznego:

gdzie S to pokonana odległość, A to przyspieszenie wynikające z grawitacji, a T to czas reakcji. Po zbudowaniu tego projektu, porównaj wyniki uzyskane za pomocą linijki z wynikami wskazywanymi przez wehikuł czasu reakcji.

Pomiar czasu za pomocą Arduino Nano

Jest wiele sposobów mierzenia upływającego czasu, ale w tym projekcie wykorzystamy to, że Arduino Nano potrafi podawać bardzo dokładny czas. Mikrokontrolery potrafią bardzo dobrze śledzić czas i z minimalnym opóźnieniem mierzą czas, który upływa między dwoma wejściami. Oprócz zmierzenia twojego czasu reakcji, Nano pokaże też wynik na LCD.

Prawie całą pracę w tym projekcie wykonuje Nano; inne elementy są w zasadzie pasywne. Po przetestowaniu kilku wczesnych wersji, dodałem do szkicu parę elementów, aby gra była bardziej interesująca i dokładna. Na przykład do zresetowania Nano i rozpoczęcia licznika wystarczyło początkowo nacisnąć przycisk. Uczestnik miał nacisnąć czerwony przycisk stopu, gdy tylko otrzymał takie polecenie na LCD, a Nano mierzyło czas między naciśnięciem przycisków resetowania i zatrzymania. Odkryłem jednak, że gracz mógł przewidywać naciśnięcie przycisku resetowania i uzyskiwać dzięki temu niesamowite czasy reakcji.

Aby gracz nie mógł przewidywać momentu pojawienia się bodźca, nakazałem Nano uruchamiać czasomierz z opóźnieniem. Wersja w tej książce generuje losowe opóźnienie od momentu zwolnienia przycisku resetowania, aktywuje bodziec po tym losowym opóźnieniu i odlicza czas od bodźca do momentu, w którym uczestnik odpowie, zwalniając przycisk stopu. W ten sposób jeden problem został rozwiązany.

Potem jeden z uczestników próbował zrobić falstart i uzyskać przewagę, przytrzymując przycisk stopu. Rozwiązałem ten problem, ustawiając w szkicu minimalny czas reakcji. Każdy raz poniżej tego minimum powoduje zgłoszenie błędu, a LCD wyświetla „Jumped the Gun” (falstart), co oznacza, że gracz za szybko nacisnął przycisk.

Użyłem stosunkowo dużego wyświetlacza – 4 wiersze po 20 znaków każdy – aby było miejsce na wyświetlenie czasu reakcji oraz komentarza na temat względnej sprawności gracza. W szkicu znajdziesz kilka komentarzy, które wymyśliłem składając to wszystko do kupy, ale możesz zastąpić je własnymi. Komentarz może być wesoły albo poważny, ale nie może mieć więcej niż 60 znaków długości – to znaczy musi się zmieścić w trzech wierszach po 20 znaków każdy. Zawsze możesz edytować komentarz i ponownie wgrać szkic, aby wyświetlać komentarze dla konkretnej grupy użytkowników, jak twoi przyjaciele czy krewni.

Oczekiwane zakresy prędkości

Na podstawie przetestowanej przeze mnie grupy osób można stwierdzić duże zróżnicowanie czasów reakcji większości badanych. Co ciekawe, wydaje się, że wiek nie ma wpływu na czas reakcji. Średni wynik to około 200 milisekund, co zgadza się ze średnim czasem reakcji podawanym przez wielu badaczy.

Najszybszy czas reakcji w moich testach wyniósł 105 milisekund, jednak osoba ta nie potrafiła powtórzyć swojego wyniku. Kilka osób uzyskało czas od 105 do 125 milisekund, ale nie konsekwentnie. Znacznie krótsze czasy reakcji mogą być anomaliami albo wynikać z tego, że uczestnikowi faktycznie udało się przewidzieć moment aktywacji bodźca. Potwierdza to fakt, że badanym nie udawało się powtórzyć skrajnie krótkich czasów reakcji. (Nie mam zamiaru nikogo obwiniać za to, że udało mu się zgadnąć moment aktywacji bodźca.)

Schemat

Wyświetlacz można by bezpośrednio połączyć przewodami, jednak dzięki użyciu przejściówki I²C jest to o wiele prostsze i redukuje interfejs do zaledwie czterech przewodów: plus, masa, dane i zegar (patrz rys. 1.2).

Jedyne potrzebne elementy to Nano, trzy przełączniki (jeden dwustabilny do zasilania i dwa chwilowe, naciskane – do aktywacji i resetowania), dioda LED, wyświetlacz i trzy rezystory. Mimo tak stosunkowo małej liczby części, projekt działa dobrze.

Rysunek 1.2. Schematyczny diagram wehikułu czasu reakcji

Płytka prototypowa

Tak jak w przypadku większości moich projektów Arduino, pierwszy krok polega na przygotowaniu płytki prototypowej, aby potwierdzić słuszność założeń i przetestować szkic. Oto jak podłączyć płytkę prototypową:

1. Połącz ze sobą czerwone szyny dodatnie na płytce prototypowej.

2. Połącz ze sobą niebieskie szyny ujemne na płytce prototypowej.

3. Wstaw Arduino Nano (lub klon) do płytki prototypowej, pozostawiając dwa wolne rzędy po jednej stronie i trzy po drugiej. (Jeśli Nano nie ma przylutowanych listew szpilkowych, patrz punkt „Przygotowywanie płytki Arduino” na stronie 2.)

4. Połącz terminal 5 V na Nano z czerwoną szyną dodatnią na płytce prototypowej.

5. Połącz terminal GND na Nano z niebieską szyną ujemną na płytce prototypowej.

6. Połącz ujemny przewód ze złącza baterii z niebieską szyną ujemną. Pamiętaj, że płytka prototypowa nie ma przełącznika, więc wyłączenie wymaga odłączenie baterii.

7. Połącz dodatnie wyprowadzenie ze złącza baterii z terminalem VIN na Nano. (Nie podłączaj dodatniego terminala baterii do czerwonej szyny dodatniej – możesz w ten sposób trwale uszkodzić Nano.)

8. Przymocuj 5-calowe przewody do dwóch normalnie otwartych przełączników chwilowych. (Ja używam przewodu liniowego z jednolitym rdzeniem 22 AWG, umożliwiającego bezpośrednie podłączenie do płytki prototypowej.)

9. Przygotuj wiązkę kablową do LCD (patrz „Przytwierdzanie płytki I²C do LCD” na stronie 3.)

10. Połącz czerwony przewód z LCD do czerwonej szyny dodatniej na płytce prototypowej (5 V), a czarny przewód z LCD do niebieskiej szyny ujemnej.

11. Wstaw żółty przewód z wyświetlacza (SDA) do pinu A4 na Nano.

12. Wstaw zielony przewód z wyświetlacza (SCL) do pinu A5 na Nano.

13. Połącz jedną stronę każdego przełącznika chwilowego z niebieską szyną ujemną.

14. Połącz drugą stronę czerwonego przełącznika reakcji (SW2) z pinem D7 na Nano.

15. Połącz drugą stronę żółtego przełącznika resetowania (SW1) z pinem D2 na Nano.

16. Połącz 10-kiloomowy rezystor z pinu D7 na Nano z czerwoną szyną dodatnią.

17. Połącz 10-kiloomowy rezystor z pinu D2 na Nano z czerwoną szyną dodatnią.

18. Połącz anodową stronę LED (dłuższe wyprowadzenie) z czerwoną szyną dodatnią, a stronę katodową z pustym rzędem na płytce prototypowej.

19. Połącz 470-omowy rezystor od strony katodowej LED z pinem D4 na Nano.

Wgraj szkic Reaction.ino na Arduino Nano (patrz punkt „Wczytywanie szkiców na Arduino” na stronie 5). Wszystko powinno być już gotowe. Na rysunku 1.3 pokazano płytkę prototypową z poukładanymi elementami i przewodami z przełącznikami.

Rysunek 1.3. Konfiguracja płytki prototypowej dla wehikułu czasu reakcji. Ponieważ nie ma przełącznika wł/wył, musisz odłączyć baterię, aby wyłączyć zasilanie.

Szkic

Szkic to program komputerowy, który mówi Arduino, co i kiedy należy robić. Jest napisany w niezależnym języku, który obejmuje struktury, zmienne, tablice, funkcje itd., przedstawiające sposób działania mikrokontrolera. Język ten jest przekształcany na sekwencję zer i jedynek, które są kierowane do różnych części kontrolera, i za jego pomocą można wykonywać operacje zapisu, podawania sygnału zegarowego, porównywania, działania arytmetyczne i inne.

Przekształcenie języka komputerowego na sekwencję zer i jedynek nazywa się kompilacją. Aby aktywować podprogram odpowiedzialny za kompilację w Arduino IDE, kliknij kolejno przyciski Verify i Compile, znajdujące się w lewym górnym rogu okna ze szkicem.

Szkic staje się dość długi z powodu wszystkich komentarzy, które można wyświetlić po odczytaniu wyniku, jednak podstawowe jego działanie opiera się na zaledwie garści wierszy kodu. Funkcji oceniania wyników możesz użyć w jej obecnej postaci albo ją zmodyfikować bądź skopiować i wkleić i na jej podstawie napisać nową. Jak można się przekonać na podstawie treści moich komunikatów, ich wymyślanie sprawiło mi wiele radości.

Poniższy kod został skrócony, aby zminimalizować liczbę wierszy. Możesz jednak wejść na stronę https://www.nostarch.com/arduinoplayground/, aby pobrać cały szkic, w którym znajdziesz o wiele więcej komentarzy.

/*

Zawiera funkcję oceniania wyników, generowanie liczb losowych, informację o falstarcie, oraz wiele komunikatów wyświetlanych dla wyników różnych o 10 ms.

Modyfikacja dla "falstartu" wyświetla odpowiedź, jeśli czas < 70 ms

*/

#include <Wire.h> // Odwołania do bibliotek

#include <LiquidCrystal_I2C.h>

int start_time = 0;

int stop_time = 0;

int reacttime = 0;

int x;

int R;

int randnumber1;

int z;

LiquidCrystal_I2C lcd (0x3F, 20, 4); // Inicjacja LCD

void setup() {

  Serial.begin (9600);

  pinMode(2, INPUT);

  pinMode(4, OUTPUT);

  pinMode(7, INPUT);

  lcd.init();

  lcd.backlight();

}

// Początek funkcji oceniania wyników ("score")

void score() {

  lcd.clear();

  lcd.print("Reaction Time ");

  lcd.print(reacttime);

  lcd.print(" ms");

  lcd.setCursor(0, 1);

  if((reacttime >= 105) && (reacttime < 135)) {

  lcd.print("Approaching Superman");

  lcd.setCursor(0, 2);

  lcd.print("but you can still do");

  lcd.setCursor(0, 3);

  lcd.print("a lot better");

}

if((reacttime >= 135) && (reacttime < 180)) {

  lcd.print("Superhero Status");

  lcd.setCursor(0, 2);

  lcd.print("but not yet");

  lcd.setCursor(0, 3);

  lcd.print("Superman");

}

  if((reacttime >= 180) && (reacttime < 225)) {

    lcd.print("You are trying ??");

    lcd.setCursor(0, 2);

    lcd.print("but not hard enough");

   lcd.setCursor(0, 3);

   lcd.print("still a loser");

  }

  if(reacttime > 225) {

    lcd.print("Lost your touch");

    lcd.setCursor(0, 2);

    lcd.print("If you ever had it");

    lcd.setCursor(0, 3);

    lcd.print("on the border of wimpy");

  }

}

// Początek głównego programu

void loop() {

  digitalWrite(4, HIGH);

  lcd.clear();

  lcd.print("System is Armed");

  delay(1000);

  lcd.setCursor(0, 1);

  lcd.print(" READY ");

  lcd.setCursor(0, 2);

  lcd.print(" Push Red Button");

  lcd.setCursor(0, 3);

  lcd.print("When Red lamp lights");

  randnumber1 = random(5, 25); // Wygeneruj losową liczbę od 5 do 25

  R = randnumber1;

  for(x = 0; x < R; x++);

  delay(5000);

  if(x == R) {

    digitalWrite(4, LOW); // Włącz lampkę startu

    start_time = millis(); // Zainicjuj czasomierz

    lcd.clear();

    lcd.print("Mash React Button");

    lcd.setCursor(0, 1);

    lcd.print(" ");

    lcd.setCursor(0, 2);

    lcd.print(" ");

    lcd.setCursor(0, 3);

    lcd.print(" ");

    whle(digitalRead(7) == 1); // Zaczekaj na odpowiedź

    stop_time = millis(); // Zakończ cykl odmierzania czasu

  }

  reacttime = stop_time - start_time;

  if(reacttime < 70) { // Informacja o falstarcie

    lcd.clear();

    lcd.setCursor(0, 0);

    lcd.print("Too anxious. You");

    lcd.setCursor(0, 1);

    lcd.print("(Jumped the Gun)");

    lcd.setCursor(0, 3);

    lcd.print("Could be Fatal!");

  }

  score();

  Halt:

  while(digitalRead(2) == 1);

}

Wiersze #include inicjują biblioteki: biblioteka I²C, Wire.h, określa reguły dla komunikacji I²C, a biblioteka LiquidCrystal pozwala Arduino sterować wyświetlaczami LCD. Następnie definiujemy siedem zmiennych służących do obliczania czasu reakcji. Potem funkcja setup() konfiguruje szeregową komunikację – na wypadek, gdyby ktoś chciał dostosować kod i przeglądać go na szeregowym monitorze – i definiuje różne piny jako wejścia i wyjścia. Wejścia są potrzebne do przycisków resetowania i stopu, a pin wyjścia jest zdefiniowany dla diody LED, która informuje gracza, kiedy należy nacisnąć przycisk stopu.

PRZYPISY

[1] Wśród wymienionych przez autora sprzedawców nie wszyscy wysyłają zamówiony towar do Polski; na polskim rynku wielką popularnością cieszy się Allegro.pl, a wśród polskich firm specjalizujących się w elektronice i sprzęcie można wymienić np. Transfer Multisort Electronic (http://www.tme.eu/pl/) czy Elfa Distrelec (https://www.elfadistrelec.pl/) (przyp. red.).

[2] Obecnie – w pażdzierniku 2017 r. – już wersja 1.8.5 (przyp. tłum.)

[3] Podobnie ceny kształtują się w Polsce – od 160 zł (Allegro.pl), a nawet około 100 zł.