Kilka słów o Arduino czyli mikrokontroler dla leniwych
W poprzednim wpisie wspomniałem że poległem na programowaniu w Bascom kiedy starałem się zrobić moduł do kontroli rekuperatora. Ostatnio jednak trafiłem na kilka stron dotyczących Arduino – otwartej (open source) platformy do prostego i szybkiego prototypowania urządzeń elektronicznych. To co piękne w Arduino to prostota – kupujemy gotowy układ (możemy wybrać oryginalny lub jeden z wielu klonów) który da się podłączyć bezpośrednio do komputera przez złącze USB (odpada kwestia zasilania i programatora!) a w dodatku programujemy w darmowym, w pełni przystosowanym środowisku programistycznym, w języku wywodzącym się z C. W jeszcze większym skrócie – wyciągnąłem Arduino z pudełka, podłączyłem kablem USB, zainstalowałem sterownik i niecałą minutę później wgrałem do niego bardzo prosty program – wszystko działało od pierwszego dotknięcia.
Okazało się że to właśnie rozwiązanie spełniło moje oczekiwania – nie musiałem zastanawiać się nad sprzętem, programowanie układu jest dziecinnie proste a samo pisanie programów mocno uproszczone. Domyślnie nie musimy ustawiać parametrów procesora, fusebitów, pracować na rejestrach – załatwiają to za nas gotowe procedury i biblioteki. Zamontowany w Arduino procesor ma wgrany bootloader, który wspomaga wgrywanie nowych programów i ich uruchamianie. Ja mogłem zająć się po prostu poznawaniem składni języka i realizowaniem kolejnych zadań które przed sobą postawiłem.
Ponieważ jestem raczej programistą niż elektronikiem, z przyjemnością przeglądnąłem sporo przykładów które są instalowane razem ze środowiskiem programistycznym – pobawiłem się w pisanie programów do mrugania diodami i kontrolowania przycisków (praca z wyjściami i wejściami cyfrowymi), badaniem ilości światła padającego na fotorezystor, odczytem temperatury za pomocą LM35 (ćwiczenia z wejść analogowych), kontrolowaniem dodatkowych wejść i wyjść cyfrowych przez układ PCF8574 za pomocą magistrali I2C… Wszystko to w ramach wprawek do zrobienia bardziej skomplikowanego układu.
Dlaczego zaczynałem od tak prostych rzeczy? Otóż jak wspomniałem – elektronikiem nie jestem i nie wszystko co z elektroniką związane jest dla mnie oczywistością. Musiałem sprawdzić każdy element z osobna – w jaki sposób się z nim współpracuje, jak należy go oprogramować, jak interpretować wyniki uzyskiwane w programie – wszystko to dawało mi gotowe fragmenty docelowego programu, gotowe szkice do połączeń elektrycznych na docelowej płytce, czas na dodatkowe przemyślenia i weryfikację pomysłów krok po kroku. Gdybym od razu zajął się budowaniem dużego układu – nie dość że pewnie pogubił bym się w schemacie, zakopał w programowaniu to jeszcze mógł bym coś przez przypadek uszkodzić… A tak – krok po kroku – kilkanaście prostych eksperymentów później wiedziałem już że jestem w stanie poradzić sobie z coraz trudniejszymi zadaniami i mogę zabrać się za projektowanie tego co mnie interesowało.
No i jedna sprawa na zakończenie – docelowo układ nie będzie pracował podłączony non-stop do komputera – ani to wygodne ani ekonomiczne. Arduino jest wyposażone w gniazdo do którego można podłączyć zasilacz o napięciu między 7 a 12V (a nawet więcej, tylko szkoda grzać stabilizator) i sprawę zasilania (normalnie pobieraniego przez USB) mamy załatwioną. A co z komunikacją? Otóż projektanci Arduino pomyśleli i o tym – dostępne są biblioteki pozwalające w prosty sposób współpracować z układami Wiznet W5100 – czyli kontrolerami Ethernet. No i w ten sposób szybko i sprawnie możemy zrobić układ komunikujący się z naszym serwerem – w moim przypadku po prostu wysyłający dane. Wiznet W5100 można kupić w postaci modułów uniwersalnych (tego typu układy stosuje np. Nestor-Elektronik w swoim sterowniku internetowym) ale też jako tzw. Shield – płytkę nakładaną bezpośrednio na Arduino. Dzięki temu nie musimy zastanawiać się które piny Wiznetu połączyć z którymi wyjściami Arduino – po prostu wkładamy i działa. Pobór prądu niewielki, układ praktycznie bezobsługowy… Tutaj znowu – kilka minut zabawy pozwoliło mi uruchomić (bo jak tu mówić o pisaniu kiedy kopiuje się przykładowy program) prosty układ kliencki – podłączyłem się do serwera, wysłałem dane z układu, odebrałem odpowiedź – sama radość :)
Co z tego wyniknęło? Zapraszam do czytania następnego wpisu na temat Inteligentnego Domu – licznika energii elektrycznej.