Zrób to sam w Arduino - ebook
Zrób to sam w Arduino - ebook
Zrób to sam z Arduino poprzez różne, praktyczne i rozrywkowe, projekty dla średniozaawansowanych pokaże ci, co zrobić, aby nie zaniedbywać praktyki w majsterkowaniu. Możesz wzbogacić swoje inżynieryjne i elektroniczne know-how, wykonując 10 złożonych projektów.
Informacja o autorze/ redaktorze:
Andrew Warren uzyskał pierwszą licencję radiową w wieku 12 lat i od tego czasu zajmuje się majsterkowaniem. Pracował jako konsultant techniczny dla kilku ważnych korporacji, w tym Motoroli i GE, a od ponad 30 lat pisze na tematy związane z elektroniką, m.in. dla EE Times, Electronic Design, Computer Design i RTC Magazine.
Kategoria: | Popularnonaukowe |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-01-20147-0 |
Rozmiar pliku: | 13 MB |
FRAGMENT KSIĄŻKI
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:
• 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/.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
#include
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.