Prosty tester do serw

Tester do serw zawsze może się przydać, o czym przekonałem się próbując ustawić zakres pracy lotek podczas budowy samolotu z Depronu. Radia modelarskiego pod ręką nie było, a chciałem zamocować popychacze do orczyków lotek. Robić na oko? Nie opłaca się. Na szczęście, Arduino jest więcej niż wystarczająco wyposażone aby sterować pracą serwa. Po 10 minutach powstał taki oto układ:

Tester do serw na Arduino Pro Micro

 

Składa się z:

  • Arduino Pro Micro 5V/16MHz
  • Przycisku
  • Małej płytki prototypowej
  • Dwóch zlutowanych ze sobą golpinów służących do podłączenia serwa

Schemat elektryczny jest banalnie prosty.

Schemat testera serw Arduino

 

Program sterujący jest równie prosty:

Przycisk służy do przełączania impulsu sterującego pomiędzy trzema wartościami używanymi najczęściej w modelarstwie 1000us, 1500us i 2000us. Zaś działa to następująco:

W przypadku małych serw wystarcza zasilanie z portu USB. W przypadku większych trzeba doprowadzić osobną linię 5V i z niej zasilać serwo.

Arduino i Raspberry Pi: komunikacja RF, część I

Home Automation, Internet of Things, technologie ubieralne to modne hasła. Chyba każdy ze znaczących producentów elektroniki chce uszczkąć dla siebie kawałek tego szybko rosnącego tortu. A nam, konsumentom, pozostaje tylko szykować portfele.

W komfortowej sytuacji są osoby ze zmysłem technicznym, hakerzy, potrafiący połączyć dwie rzeczy tak, aby powstała trzecia. Arduino, Raspberry Pi, tania elektronika z Chin. Trochę główkowania, trochę testów, dużo zabawy i mamy nasze własne Internet of Things. Tym wpisem rozpoczynam krótki cykl na temat komunikacji bezprzewodowej pomiędzy mini-komputerami i nie tylko bez używania stosu TCP/IP, WiFi, Ethernetu i tym podobnych. W tym cyklu stawiamy na rozwiązania proste, może nawet prostackie, ale tanie i dające możliwość wykazania się własną pomysłowością.

Bohaterowie

Wszystkie wpisy w tym cyklu będą dotyczyły tanich modułów RF (nadajnik i odbiornik kosztują poniżej 10zł). W tym konkretnym przepadku pary FS1000A (nadajnik) i XY-MK-5V (odbiornik) pracujących w paśmie 433MHz.

FS1000A i XY-MK-5V

Są to ekstremalnie uproszczone nadajnik i odbiornik pracujące jednokierunkowo. To znaczy, z nadajnika możemy coś wysłać, a odbiornikiem odebrać, ale na odwrót już nie. Gdybyśmy chcieli mieć komunikację dwukierunkową, potrzebujemy dwóch nadajników i dwóch odbiorników.

Są to urządzenia tak proste, że zapewniają nam wyłącznie warstwę fizyczną transmisji. Brak kodowania, pakietów, korekty błędów, czegokolwiek. Na wejściu nadajnika pojawia się sygnał: nadawaj, nadajnik zaczyna nadawać sygnał piłokształtny, odbiornik go odbiera i na jego wyjściu pojawia się stan wysoki. Koniec i kropka. Aby przesłać jakiekolwiek informacje potrzebujemy bibliotek zapewniających całą resztę, ale o tym w kolejnej części cyklu.

Czytaj dalej

DIY: ATtiny85 timer dźwiękowy – Pomocnik Scrum Mastera

Najlepsze pomysły na projekty DIY pochodzą z życia. Mieliśmy w firmie drobny problem: nasze SCRUMowe daily meetings potrafiły trochę się przeciągać. Zamiast kilku minut trwały i kwadrans. Stoper? Jakoś tak nie pasuje do idei. Zamiast tego „na szybko” zbudowałem prosty timer pozwalający każdemu członkowi zespołu na powiedzenie co ma do powiedzenia w 40 sekund. Po tym czasie rozlega się sygnał dźwiękowy. Kolejny uczestnik wciska przycisk i jego czas jest liczony od początku.

Licznik ATTiny85

W pierwszej chwili chciałem użyć Arduino, ale to jak strzelanie z armaty do wróbla. Po co komu „potęga” ATmega 328 kiedy będę potrzebował góra dwóch wyjść cyfrowych. Z tego powodu wybór padł na rodzinę AVR ATtiny dużo lepiej dostosowaną do tak prostych zastosowań. Mój układ działa na ATtiny85, ale równie dobrze można użyć ATtiny45 lub ATtiny25. Różnią się tylko ilością pamięci EEPROM, a cały kod zajmuje około 1kB.

ATtiny 85 licznik czasu

Jak widać, schemat jest banalnie prosty a złożenie na płytce prototypowej zajmuje kilka minut. Lista elementów też krótka:

  • ATtiny85/45/25
  • przycisk
  • bateria (3V-5V)
  • opornik 220Om
  • opornik 1kOm
  • dioda LED
  • tranzystor BC547 lub podobny
  • brzęczyk

Gorzej wygląda sprawa z programowaniem. Rozwiązania są dwa: albo używamy specjalizowanego programatora, albo używamy Arduino. Tak tak popularne Arduino można użyć jako programatora dla innym mikrokontrolerów. Co więcej, można użyć oprogramowania Arduino i wykorzystać większość dostępnych bibliotek. Potrzeba będą tylko nowe core-files i trochę przewodów. Dość dobry tutorial znajduje się tutaj, ja tylko polecam użycie tych core-files. Jest z nimi mniej problemów i wygląda na to, że są po prostu lepsze (działa na nich VirtualWire, ale o tym może kiedy indziej).

Program jest na tyle prosty, że nie będę go dokładnie opisywał. Głównym założeniem jest niski pobór energii. Z tego powodu mikrokontroler jest głównie w stanie uśpienia, a którym cały układ pobiera zaledwie około 4 mikro Ampery.

Wbudowany watchdog wybudza układ co 2 sekundy i zapala na chwilę LED. Przy 20 wybudzenia (40 sekund) rozlega się seria dźwięków z buzzera, watchdog jest wyłączany i układ przechodzi w stan permanentnego uśpienia.

Przycisk w który wyposażony jest układ nie robi nic innego, jak reset mikrokontrolera i cała procedura rozpoczyna się od początku.

Pełny kod źródłowy dostępny jest na GitHubie.

roboCar: jak to wygląda z perspektywy robota?

Projekt roboCar, czyli robot-samochód sterowany przez Arduino rozwija się. Może nie tak szybko jak bym chciał, ale z tygodnia z tydzień jest coraz lepiej. Nie ma jeszcze zdalnego sterowania, ale na chwilę obecną robot potrafi:

  • jechać do przodu (też mi niespodzianka),
  • unikać zderzeń z otoczeniem bazując na odczytach ultradzwiękowego czujnika odległości,
  • po wykryciu przeszkody uruchomić procedurę omijania.

W maju planuję dodanie modułu Bluetooth i umożliwienie sterowania robotem z poziomu smartfonu, komputera, tabletu. Czegokolwiek wyposażonego w moduł Bluetooth. A tymczasem, krótkie wideo pokazujące jak to wygląda z punktu widzenia robota:

roboCar: pierwsza jazda

Udało mi się dziś skończyć podstawowe funkcje projektu roboCar:

  1. sterownik silników, przy użyciu układu scalonego L293 o którym pisałem w poprzednim wpisie;
  2. złożenie układu napędowego „do kupy”;
  3. połączenie podwozia z Arduino i napisanie podstawowych funkcji sterujących: do przodu, do tyłu, stop, w lewo, w prawo;

Pomijając szczegóły, całość wygląda tak:

A tak wyglądała pierwsza jazda