Najszybszy projekt na świecie

Mimo lata to był nieprzyjemny dzień. Było zimno i padało. To nie jest idealna pogoda na bieganie. A ja uwielbiam biegać. W tym miesiącu zrobiłem tak pewnie już ponad 200 km.

Trzeba się czymś zająć. Obok był orbitrek, dzięki któremu utrzymuje formę zimą. Niestety ma zepsuty licznik. Nie wiem czemu, ale lubię doglądać swoich osiągnięć. Szybkość i dystans mnie motywują.

Do czasu na bieganie pozostało 15 minut, a ja postanowiłem, że odbuduje licznik przy pomocy Arduino.

W tego typu maszynach przebyty dystans oblicza się za pomocą liczby obrotów korby pedałów. Czujnikiem jest kontaktron. To taki włącznik, który przewodzi prąd, gdy zbliży się do niego magnes. Na kole jest magnes, a gdzieś do ramy obok przytwierdzony jest kontaktron.

Jeden impuls kontaktronu to jeden obrót pedałami orbitreka, czyli 2 kroki.

Czujnik podłączyłem do Arduino między cyfrowy pin 2 i GND.
Takie wejście ustawiasz w programie jako:

pinMode(2, INPUT_PULLUP);

Wtedy gdy czujnik nie przewodzi prądu, na wejściu jest poziom HIGH. Gdy magnes zbliży się do czujnika, na wejściu pojawi się poziom LOW.
Poziom wejścia czujnika badasz za pomocą:

byte level = digitalRead(2);

W zmiennej “level” będzie pojawiała się wartość LOW albo HIGH.

Podczas spacerów z GPS ustaliłem, że przejście 10 m zabiera mi około 12 do 14 kroków. Przebiegnięcie 100 m to jakieś 66 kroków, ale tego wyniku nie jestem pewny, bo pomiar robiłem tylko raz.

Dla jednego kroku chodu, wychodzi około:

10 m / 13 kroków = 76 cm/krok

Ponieważ jeden impuls to 2 kroki – wychodzi 1,52 metra/impuls

Biegania nie jestem pewny, ale wyszło 3,03 metra na impuls.

Skoro mam już dane, przyszedł czas na napisanie programu.

word steps;
byte state;

void setup() {
  pinMode(2, INPUT_PULLUP);
  pinMode(13, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if (digitalRead(2) == LOW && state == HIGH)
  {
    digitalWrite(13, HIGH);
    steps++;
    state = LOW;
    onStep();
  }
  
  else if (digitalRead(2) == HIGH)
  {
    digitalWrite(13, LOW);
    state = HIGH;
  }
}

void onStep()
{
  Serial.print(F("Steps: "));
  Serial.print(steps * 2);
  Serial.print(F(" "));
  Serial.print(F("Distance: "));
  float distance = 3.03 * steps;
  Serial.print(distance/1000.0, 3);
  Serial.println(F(" km "));
}

Funkcja “loop” uruchamiana jest kilkaset tysięcy razy na sekundę. Gdy warunek “if” wykryje impuls, może go odczytać przy każdym uruchomieniu “loop” jako kolejny krok i za jednym obrotem zaliczy nam 1000 kroków. Dlatego po wykryciu kroku trzeba zapamiętać, że już jest zaliczony i poczekać na zmianę poziomu czujnika na HIGH. Tym zajmuje się zmienna “state”.

Zmienna “steps” zlicza obroty korby czyli podwójne kroki.

Ponieważ miałem tylko 15 minut program wyświetla dane jedynie w Monitorze portu szeregowego. Pokazuje liczbę kroków i przebytą odległość. Sam możesz go rozwinąć bardziej o obsługę wyświetlacza LCD, Bluetooth i telefonu/tabletu, albo ładniejszy interfejs użytkownika na ekranie laptopa. Nad tym ostatnim od jakiegoś czasu pracuję. Szczegóły wkrótce.

sprae

Samo balansujący pojazd na Arduino

Samo-balansujący pojazd to takie urządzenie – na jednym, albo dwóch kołach, które samo utrzymuje równowagę. Kierujący przechylając się na pojeździe przesuwa punkt równowagi tak, że urządzenie, by się nie przewrócić musi jechać w kierunku przechylenia. W ten sposób powstały proste pojazdy wyręczające nas w chodzeniu.

Lauszus z bloga TKJ Electronics postanowił zrobić taki pojazd. Wykorzystał do tego 2 silniki elektryczne z przekładnią, sterowniki MOSFET, Arduino Pro Mini oraz czujnik położenia (żyroskop + akcelerometr).


Zdjęcie pochodzi z bloga TKJ Elekctronics

Zasada działania jest prosta. Czujniki położenia obliczają kąt pod jakim przechylone jest jest urządzenie. Arduino stara się ustawić taką moc silników by ten kąt się nie zwiększał i urządzenie się nie przewracało.

Algorytmy wykorzystywane do takiego działania to:

  • Filtr Kalmana – odfiltrowuje szumy z czujników położenia starając się wyłuskać z nich prawdziwy stabilny kąt przechyłu. Bez względu na wibracje spowodowane nierównościami na drodze.
  • Regulator PID – to dynamiczny algorytm dobierający moc silników do przechylenia ciała, tak by była odpowiednia przy jeździe na równej drodze, jak i pod górkę.

Matematyczne podstawy regulatora PID zostały opisane na naszym blogu Starter-Kit.

Do strojenia algorytmów Lauszus podłączył do Arduino moduł Bluetooth. Dzięki niemu pojazd komunikuje się z telefonem na Androidzie, gdzie odpowiednia aplikacja wyświetla jego parametry.

Tak urządzenie prezentuje się podczas jazdy:

sprae

Wózek golfowy odpalany odciskiem palca

To co można zrobić z ATtiny to nie śniło się nawet fizjologom.
Użytkownik Ramicaza zbudował sobie na ATtiny85 i analizatorze odcisków palca ze Sparkfun – osobisty włącznik wózka golfowego.

Czujnik odcisku palca to Fingerprint Scanner – 5V TTL (GT-511C1). Ma bardzo proste podłączenie. Wymaga tylko zasilania 5V, GND oraz szeregowych sygnałów Serial – RX i TX.

Cały kod urządzenia dostępny jest w serwisie Github. Kod jest napisany na platformę Arduino i zadziała z każdą płytką Arduino oraz Teensy.

sprae

Tym czasem w dziale rozwoju Nettigo

Sebastian zbudował smartwatch wg projektu z bloga hardcopyworld.com.

Zegarek pokazuje godzinę i łączy się za pomocą bluetooth z Androidem. Dzięki aplikacji RetroWatch pokazuje wybrane informacje z telefonu.

Zegarek składa się z:

  • Małego wyświetlacza OLED sterowanego przez i2c/TWI
  • Arduino pro mini 3.3 V
  • Modułu Bluetooth HC05
  • Akumulatorka, ładowarki USB oraz przycisku.

Projekt jest dość prosty i świetnie nadaje się do rozbudowy o kolejne ciekawe elementy.
Myśleliśmy nad tym, by zastąpić moduł BT, akcelerometrem i zrobić licznik kroków dla biegaczy. Możliwości jest tyle, że tylko wyobraźnia stanowi granicę.

Części do zegarka możesz kupić w Nettigo.

sprae

Numery linii w Arduino IDE

Arduino IDE to fajny prosty edytor do pisania programów dla Arduino. Brak nadmiaru opcji sprawia, że nikt się w nim nie pogubi. Pewnie dlatego Arduino odniosło taki sukces.
W końcu Minecraft też nie jest zaawansowanym edytorem 3D, a miliony ludzi wyżywa się w nim kreatywnie tworząc prawdziwe cuda. 

Wychodzi na to, że kreatywność bierze się z prostoty i spartańskich warunków, a zaawansowane narzędzia są najwyżej po to, by dodać temu co tworzysz jakości.

Przypomniał mi się wywiad z Linusem Torvaldsem – twórcą Linuksa. Mówił, że gdy był mały, u niego w domu się nie przelewało i był zmuszony kupować tanie toporne komputery, na które nie było zbyt wielu programów. Musiał je sobie sam pisać. Twierdzi, że gdyby kupował inne to pewnie by grał.

Przepraszam za ten przydługi wstęp.

Niedawno grzebiąc w ustawieniach Arduino IDE 1.5.7 natrafiłem na ciekawą opcje dodającą numery linii z lewej strony edytora.

Opcję znajdziesz w oknie, które wywołuje się za pomocą menu:

Plik -> Preferencje

image

Po jej uaktywnieniu edytor będzie wyglądał tak:

image

Numery linii ułatwiają nawigację po programie. Gdy kompilator napotka błąd w kodzie to wypisuje numery linii w której on wystąpił.

sprae

Numitron – lampowy zegarek na rękę

Jeśli jesteś geekiem albo lubujesz się w modzie steampunk ten projekt jest dla ciebie.


Zdjęcie pochodzi ze strony projektu Numitron

Jest to zegarek na rękę z lampami Nixie. Lampy te to przodkowie późniejszych wyświetlaczy 7-segmentowych na bazie diod świecących. Dziś używa się ich w projektach w których chce się osiągnąć nawiązanie do starego stylu. W Polsce były często stosowane w dużych kalkulatorach Unitra z lat ‘70 i świeciły na zielono.

Numitron ze względu na mały rozmiar, wyświetla na raz tylko 2 cyfry. Pełna godzina wyświetlana jest po kolei – godzina, mrugnięcie, minuty, mrugnięcie, sekundy – po naciśnięciu przycisku na obudowie.

Projekt oparty jest na kontrolerze ATMega328p, który możesz znaleźć w Arduino UNO. Zegarek ma wbudowany Bootloader Arduino i można go przeprogramować za pomocą adaptera USB-Serial i Arduino IDE.

Zasilanie zrealizowane jest za pomocą małego akumulatorka Li-Po pochodzącego z mikro modeli helikopterów.

Film autora projektu przedstawiający budowę zegarka – po niemiecku.

Na stronie projektu Numitron jest więcej filmów przedstawiających prototypowanie zegarka, działanie wyświetlaczy i to jak je połączyć z kontrolerem.

sprae

Urządzenie do podejmowania decyzji na Arduino

Czy stanąłeś kiedyś przed dylematem? Nie wiedziałeś co wybrać? AMD czy Nvidia, PO czy PiS, Ania czy Jola? Teraz Arduino może wybrać za ciebie!

Dokopałem się do projektu, który udaje starą amerykańską zabawkę “Kula numer 8”. Po jej potrząśnięciu pojawiał się jeden z napisów – Tak, Nie, Może.

To samo może robić Arduino. Projekt opiera się na tym, że do Arduino podłączone są 3 diody świecące.

  • Czerwona oznaczająca odpowiedź – “Nie”
  • Zielona – “Tak”
  • Żółta – “Może”

Po naciśnięciu przycisku, losowana jest odpowiedź.


Zdjęcie pochodzi z bloga contractorwolf.com

Normalnie polecam poczytać wpis autora, ale tym razem mam inny pomysł. Jeśli jesteś początkującym adeptem Arduino i elektroniki, postaraj się zaprojektować i wykonać projekt sam. Napisz program. Wymyśl jak dobrze wylosować diodę. To może być pouczająca zabawa.

sprae

Programowanie robotów w Microsoft Visual Studio

W serwisie Channel9 dla programistów używających technologii Microsoft pojawił się nowy fajny kurs. Dotyczy on programowania robotów z wykorzystaniem środowiska programistycznego Microsoft Visual Studio. Jako kontrolera robotów prowadzący wykorzystują Arduino.

Kurs składa się z 8 lekcji po około pół godziny każda. Prowadzący starają się nauczyć ciebie jak wykorzystując różne części zrobić autonomicznego robota.

Kurs jest w sam raz na ulewną wakacyjną pogodę 🙂

sprae

Arduino Zero trafia do testów

image
Zdjęcie pochodzi z bloga Arduino

Jeśli jeszcze nie wiesz co to jest Arduino Zero, zapraszam do poprzednich wpisów:

Zespół Arduino po udanych testach Arduino TRE, postanowił objąć programem beta-testów Arduino Zero.

Do testowania przeznaczono 20 płytek. Swoją kandydaturę można zgłosić do 17 sierpnia 2014.

sprae

Arduino przechodzi grę Timberman

Timberman to polska gra na telefony. Jej bohaterem jest drwal, który rąbie drzewo. Zadaniem gracza jest ustawianie tak drwala, by nie przygniotła go gałąź.

Gra jest nudna i nadaje się do umilania czasu w długiej kolejce po jakiś nikomu niepotrzebny papier ;-). Ale twórcom DIY to nie wystarczy. Lepiej stworzyć automat, który sam będzie bił kolejne rekordy.

Arduino Plays Timberman Faster from Valentin Heun on Vimeo.

Urządzenie zrobił Valentin Heun. Do jego budowy potrzebne są:

  • 2 przekaźniki z tranzystorami sterującymi, rezystorami i diodami
    Podłączone do pinów 4 i 8
  • przełącznik do rozpoczynania gry
    Podłączony do pinu 7
  • fototranzystor
    Podłączony do pinu A0
  • Arduino UNO
  • elektrody wycięte z miedzianej siatki

Schemat pochodzi ze strony ArduinoPlaysTimberman

Urządzenie do działania wymaga naszej obecności. Trzeba trzymać koniec przewodu, który przechodzi przez przekaźniki do elektrod na ekranie. W ten sposób symulujesz prawdziwą pojemność i oporność ciała ludzkiego, którą wykrywa ekran dotykowy. Może ty udoskonalisz układ, by pracował samodzielnie?

Zasada działania jest prosta. Fototranzystor przyczepiony do ekranu wykrywa kiedy pojawia się gałąź z prawej strony. Robi to dzięki temu, że zmienia się jasność ekranu w tym miejscu. Gdy ją wykryje, to za pomocą symulacji dotyku przenosi drwala na lewą stronę. Gdy gałąź nie pojawia się z prawej, wtedy przenosi drwala na prawą stronę.

sprae