Pobierz - Politechnika Poznańska
Transcription
Pobierz - Politechnika Poznańska
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska Dokumentowanie projektu Freemind http://freemind.sourceforge.net Ułatwia dokumentowanie pomysłów, analizowanie zależności między nimi, pozwala na ich ocenę i selekcję Fritzing http://fritzing.org/ Pozwala dokumentować prototypy, dzielić się nimi, tworzyć schematy poglądowe, schematy ideowe i płytki drukowane projektowanych aplikacji – zawiera wsparcie dla Arduino Inkscape http://inkscape.org Prosty w użyciu program do tworzenia grafiki wektorowej. Mimo że oprogramowanie Inkscape skierowany jest głównie do grafików, dzięki precyzyjnym narzędziom doskonale nadaje się do szkicowania pomysłów związanych z projektami 01-2014 Zygmunt Kubiak 2 Fritzing http://fritzing.org/download/ 01-2014 Zygmunt Kubiak 3 Fritzing http://fritzing.org/download/ 01-2014 Zygmunt Kubiak 4 Fritzing http://fritzing.org/download/ 01-2014 Zygmunt Kubiak 5 Fritzing http://fritzing.org/download/ 01-2014 Zygmunt Kubiak 6 Fritzing http://fritzing.org/download/ 01-2014 Zygmunt Kubiak 7 Firmata http://firmata.org/wiki/ Uniwersalny protokół komunikacyjny, umożliwiający sterowanie mikrokontrolerami z poziomu komputera – może sterować pracą Arduino Może sterować takimi urządzeniami jak silniki, serwomechanizmy czy wyświetlacze 01-2014 Zygmunt Kubiak 8 Firmata http://firmata.org/wiki/ Program – Firmata_test http://www.pjrc.com/teensy/firmata_test/firmata_test/firmata_test.exe http://firmata.org/wiki/Examples https://github.com/firmata/arduino 01-2014 Zygmunt Kubiak 9 Firmata http://firmata.org/wiki/ Najważniejsze funkcje biblioteki Firmata 01-2014 Zygmunt Kubiak 10 Firmata http://firmata.org/wiki/ Firmata to projekt zainicjowany przez Hansa Christopha Steinera Jest prostym systemem operacyjnym dla Arduino, kontrolowanym za pośrednictwem transmisji szeregowej Firmata jest ładowany do Arduino, a następnie z pomocą innego języka można kontrolować stan modułu Arduino i połączonych z nim układów, bez aktualizacji kodu Oprogramowanie Firmata jest wykorzystywane w środowiskach Processing, openFrameworks, Cinder, Python, Ruby, Pd i innych platformach programistycznych 01-2014 Zygmunt Kubiak 11 Processing www.processing.org Processing - multimedialne środowisko programowania, oparte na języku Java, stworzone dla projektantów, artystów i innych osób, które bez zagłębiania się w szczegóły dotyczące programowania chcą tworzyć grafikę, animacje i interakcje. Można używać klas i metod z Javy. Działa w systemach Windows, Linux i Mac OS X Niewielka ilość Processing umożliwia realizację złożonych zadań, jak połączenie z zewnętrznym urządzeniem przez port szeregowy lub sterowanie kamerą Istnieje również Processing dla urządzeń z Androidem i Processing dla języka JavaScript 01-2014 Zygmunt Kubiak 12 Processing www.processing.org 01-2014 Zygmunt Kubiak 13 Techniki testowania kodu Metodyka wytwarzania sterowanego testowami (ang. Test-Driven Development) Artykuł : Ian Dees, Testing Arduino Code, PragPub, 2011 (https://pragprog.com/magazines/201104/testing-arduino-code) Ben Rady i Rod Coffin, Continuous Testing: with Ruby, Rails, and JavaScript, The Pragmatic Bookshelf, Raleigh i Dallas, 2011 Np. podczas pisania skryptów języka Python warto przygotować testy jednostkowe (np. przy użyciu narzędzia py.test) Dla Ruby i Rails warto rozważyć użycie Rspec (David Chelimsky, Dave Astels, Zach Dennis, Aslak Hellesøy, Bryan Helmkamp i Dan North, The RSpec Book,The Pragmatic Bookshelf, Raleigh i Dallas, 2009 01-2014 Zygmunt Kubiak 14 Techniki testowania kodu Dla Arduino: https://pragprog.com/magazines/2011-04/testing-arduinocode https://code.google.com/p/arduinounit/ https://github.com/mmurdoch/arduinounit https://code.google.com/p/arduino/wiki/ArduinoTestSuite http://puredata.wikispaces.com/ Brak oficjalnego emulatora dla Arduino, m.in. dla tego, że sprzętowa platforma Arduino jest tania W systemie Windows są dostępne emulatory: Virtual Breadboard (http://www.virtualbreadboard.net), Emulare (http://emulare.sourceforge.net/) 01-2014 Zygmunt Kubiak 15 Biblioteka ArduinoTestSuite Projektowanie sterowane testami (ang. Test-Driven Development, TDD) W metodzie TDD projekt programistyczny dzielony jest na niewielkie fragmenty, dla których przygotowywane są testy sprawdzające działanie każdej funkcji. Programowanie rozpoczyna się dopiero po przygotowaniu testów. Biblioteka ArduinoTestSuite stała się kluczowym narzędziem projektowania dla Arduino. ArduinoTestSuite udostępnia standardowe metody i funkcje, które można wykorzystać do przetestowania szkicu przed załadowaniem go do Arduino – co pozwala uniknąć ewentualnych uszkodzeń zewnętrznych urzadzeń. Biblioteka jest ciągle rozwijana 01-2014 Zygmunt Kubiak 16 Biblioteka ArduinoTestSuite Aktualnie dostępne testy ATS_begin Inicjuje proces testowania ATS_end Kończy proces testowania ATS_PrintTestStatus Wydruk statusu testu ATS_Test_DigitalPin Testuje dany port wyjściowy ATS_Test_PWM Testuje wyjście z generatora PWM ATS_Test_AnalogInput Testuje wejście analogowe ATS_Test_EEPROM Testuje obsługę pamięci EEPROM ATS_Test_Serial_LoopBack Testuje ruch wchodzący i wychodzący na portach szeregowych ATS_GetFreeMemory Zwraca ilość wolnej pamięci dostępnej dla Arduino 01-2014 Zygmunt Kubiak 17 Platformy W przypadku realizacji rozwiązań typu Internet przedmiotów (ang. Internet of Things) pojawia się problem komunikacji z tymi urządzeniami – operatorzy Internetu czasem blokują porty wychodzące aby uniemożliwić instalowanie serwerów dedykowanych na popularnych portach, jak FTP, HTTP (i HTTPS) czy SMTP Warto zwrócic uwagę na platformy dostępne za pośrednictwem prostych interfejsów API usług sieciowych np.: Pachube http://www.pachube.com, Exosite http://www.exosite.com, Yaler http://www.yaler.org. A także Xively, 01-2014 Zygmunt Kubiak 18 Yaler 01-2014 Zygmunt Kubiak 19 Android Ważny system m.in. dla systemów wbudowanych Pakiet Android Open Accessory Kit – ADK (2011 r.), umożliwia obsługę takich funkcji jak aparat, GPS, Bluetooth, WiFi (http://developer.android.com/guide/topics/usb/adk.html) Wielu producentów elektroniki wprowadza na rynek urządzenia zgodne z ADK Projekt Google: Android@Home – propagowanie Android jako bazowej technologii dla inteligentnych domów Android SDK – zestaw narzędzi (SDK, ang. Software Development Kit) dla programistów przeznaczony do tworzenia aplikacji na platformę Android (http://developer.android.com/sdk) 01-2014 Zygmunt Kubiak 20 Android Narzędzia ADK składają się z dwóch części: protokołu oraz sprzętu dla wybranego urządzenia – pojawiły się płyty Arduino (zgodne z ADK) wykorzystujące układ ATMega 2560 Istotą oprogramowania ADK jest możliwość zaprogramowania urządzenia z interfejsem USB w taki sposób, że samo nawiązuje połączenie z chwilą podłączenia do komputera. W płycie Arduino Mega efekt ten osiąga się dzięki zastosowaniu procesora USB z interfejsem SPI. Dostępne są nakładki umożliwiające dodawanie nowych funkcjonalności ADK do innych płyt Arduino, np. UNO Urządzenie, które ma współpracować z ADK (np.tablet) musi być wyposażone w wersję 2.3.4 systemu Android lub nowszą, lecz nie stanowi to jeszcze gwarancji powodzenia. Aby ostatecznie potwierdzić zgodność, należy wyszukać na stronie Google Play ADK demo kit. 01-2014 Zygmunt Kubiak 21 Android Brak wyników wyszukiwania oznacza, że urządzenie nie ma zainstalowanych niezbędnych bibliotek. Przed rozpoczęciem programowania należy skonfigurować środowiska Android i Arduino. W środowisku Arduino potrzebna jest jeszcze biblioteka obsługująca protokół ADK. Jest ona dostępna na stronie Arduino labs (plik http://labs.arduino.cc/uploads/ADK/GettingStarted/Ard uinoADK-beta-001.zip). 01-2014 Zygmunt Kubiak 22 Android W spakowanym pliku ZIP znajdują się pliki aplikacji Processing i biblioteki Arduino. Aplikacje dla systemu Android można tworzyć w środowiskach Processing (http://processing.org) lub Eclipse (http://eclipse.org). Programowanie w środowisku Processing jest podobne do Arduino. Środowisko Eclipse oferuje więcej funkcjonalności. Podczas tworzenia kodu dla systemu Android w środowisku Eclipse musisz pamiętać o dwóch różnych stylach programowania: Java i XML. Java jest głównym językiem programowania i podstawą każdej aplikacji Android. Natomiast kod XML służy do określenia wyglądu aplikacji, wyświetlanych obiektów i tekstu. 01-2014 Zygmunt Kubiak 23 Android Korzystanie z ADK Arduino jest podobne do użycia bibliotek do transmisji szeregowej. Biblioteka dodana do środowiska Arduino IDE jest oparta na bibliotekach Circuit@Home i w odróżnieniu od innych dostępnych bibliotek oferuje łatwy sposób deklarowania i inicjowania połączenia z urządzeniem. 01-2014 Zygmunt Kubiak 24 openFrameworks www.openframeworks.cc Oprogramowanie openFrameworks jest zbiorem bibliotek języka C++, przeznaczonych do prostej obsługi audio, wideo i grafiki Biblioteki zawierają mechanizmy do łatwego łączenia komputera z zewnętrznymi urządzeniami i modułami Arduino Biblioteki umożliwiają rozwijanie pomysłu bez konieczności programowania na najniższym poziomie . Dostępny jest kod źródłowy, który może być używany jako wzorzec do dalszej rozbudowy. Zastosowanie bibliotek openFrameworks i Arduino pomaga w budowaniu środowiska testowego dla sprzętu i oprogramowania Wada – należy zdawać sobie sprawę, że tworzone w ten sposób rozwiązania nie oferują produkcyjnej jakości i nie są na tyle niezawodne i zoptymalizowane, aby mogły być używane masowo. 01-2014 Zygmunt Kubiak 25 Uber Home Automation w/Arduino & Pi http://www.instructables.com/id/Uber-Home-Automation/ 01-2014 Zygmunt Kubiak 26 openHAB Otwarte oprogramowanie dla automatyzacji domu Pracuje w Windows, MacOS Xlub Linux z Java 1.7 lub nowsze Współpracuje z platformami wbudowanymi: Raspberry Pi, BeagleBone Black, UDOO, Cubietruck 01-2014 Zygmunt Kubiak 27 openHAB Otwarte oprogramowanie dla automatyzacji domu Pracuje w Windows, MacOS Xlub Linux z Java 1.7 lub nowsze Współpracuje z platformami wbudowanymi: Raspberry Pi, BeagleBone Black, UDOO, Cubietruck 01-2014 Zygmunt Kubiak 28 openHAB Komunikacja w openHAB 01-2014 Zygmunt Kubiak 29 SmartHome http://www.eclipse.org/smarthome/ Otwarte oprogramowanie dla automatyzacji domu 01-2014 Zygmunt Kubiak 30 Literatura 1. Riley M.: Inteligentny dom. Automatyzacja mieszkania za pomocą platformy Arduino, systemu Android i zwykłego komputera, Helion, 2013. 2. Igoe T.: Spraw, by rzeczy przemówiły. Programowanie urządzeń elektronicznych z wykorzystaniem Arduino, Helion, 2013. 3. Anderson R., Cervo D.: Arduino dla zaawansowanych, Helion, 2014. 4. Evans M., Noble J., Hochenbaum J.: Arduino w akcji, Helion, 2014. 01-2014 Zygmunt Kubiak 31 Książki dotyczące Arduino aktualnie (10.2014) dostępne w j.polskim 1. 2. 3. 4. 5. 6. Riley M.: Inteligentny dom. Automatyzacja mieszkania za pomocą platformy Arduino, systemu Android i zwykłego komputera, Helion, 2013. Igoe T.: Spraw, by rzeczy przemówiły. Programowanie urządzeń elektronicznych z wykorzystaniem Arduino, Helion, 2013. Anderson R., Cervo D.: Arduino dla zaawansowanych, Helion, 2014. Evans M., Noble J., Hochenbaum J.: Arduino w akcji, Helion, 2014. Boxall J.: Arduino. 65 praktycznych projektów, Helion, 2013. Banzi M.: Wprowadzenie do Arduino, Helion, 2014. 01-2014 Zygmunt Kubiak 32 Książki dotyczące Arduino aktualnie (10.2014) dostępne w j.polskim, cd. 7. 8. 9. 10. 11. 12. Gertz E., Di Justo P.: Monitorowanie otoczenia z Arduino, Helion, 2014. Monk S.: Arduino dla początkujących. Podstawy i szkice, 2014. Monk S.: Arduino i Android. Niesamowite projekty. Szalony geniusz, Helion, 2014. Jon L.: Arduino i projekty LEGO. Zadziwiające projekty LEGO sterowane przez Arduino, Helion, 2013. Westerfield M.: Projekty elektroniczne na iPhone i iPad. Niekonwencjonalne gadżety z technologią Arduino i techBASIC, Helion, 2014. Monk S.: Zabawy z elektroniką. Ilustrowany przewodnik dla wynalazców i pasjonatów, Helion, 2014 01-2014 Zygmunt Kubiak 33 Dziękuję Zygmunt Kubiak 34 092006