PROBLEMATYKA RUTOWANIA W …fc.put.poznan.pl/materials/84-zkubiak-atmega-i-arduino-cd.pdf · płyty...
Transcript of PROBLEMATYKA RUTOWANIA W …fc.put.poznan.pl/materials/84-zkubiak-atmega-i-arduino-cd.pdf · płyty...
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 2 Zygmunt Kubiak
Firmata
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 8 Zygmunt Kubiak
http://firmata.org/wiki/
Firmata
Program – Firmata_test
01-2014 9 Zygmunt Kubiak
http://firmata.org/wiki/
http://www.pjrc.com/teensy/firmata_test/firmata_test/firmata_test.exe
http://firmata.org/wiki/Examples
https://github.com/firmata/arduino
Firmata
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 11 Zygmunt Kubiak
http://firmata.org/wiki/
Processing
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 12 Zygmunt Kubiak
www.processing.org
Techniki testowania kodu Metodyka wytwarzania sterowanego testowami (ang. Test-Driven Development)
Artykuł : Ian Dees, Testing Arduino Code, PragPub, 2011 (https://pragprog.com/magazines/2011-04/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 14 Zygmunt Kubiak
Techniki testowania kodu
Dla Arduino:
https://pragprog.com/magazines/2011-04/testing-arduino-code
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 15 Zygmunt Kubiak
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 16 Zygmunt Kubiak
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 17 Zygmunt Kubiak
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 18 Zygmunt Kubiak
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 20 Zygmunt Kubiak
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 21 Zygmunt Kubiak
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/ArduinoADK-beta-001.zip).
01-2014 22 Zygmunt Kubiak
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 23 Zygmunt Kubiak
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 24 Zygmunt Kubiak
openFrameworks 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 25 Zygmunt Kubiak
www.openframeworks.cc
Uber Home Automation w/Arduino & Pi
01-2014 26 Zygmunt Kubiak
http://www.instructables.com/id/Uber-Home-Automation/
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 27 Zygmunt Kubiak
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 28 Zygmunt Kubiak
SmartHome
Otwarte oprogramowanie dla automatyzacji domu
01-2014 30 Zygmunt Kubiak
http://www.eclipse.org/smarthome/
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 31 Zygmunt Kubiak
Książki dotyczące Arduino aktualnie (10.2014) dostępne w j.polskim
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.
5. Boxall J.: Arduino. 65 praktycznych projektów, Helion, 2013.
6. Banzi M.: Wprowadzenie do Arduino, Helion, 2014.
01-2014 32 Zygmunt Kubiak
Książki dotyczące Arduino aktualnie (10.2014) dostępne w j.polskim, cd.
7. Gertz E., Di Justo P.: Monitorowanie otoczenia z Arduino, Helion, 2014.
8. Monk S.: Arduino dla początkujących. Podstawy i szkice, 2014.
9. Monk S.: Arduino i Android. Niesamowite projekty. Szalony geniusz, Helion, 2014.
10. Jon L.: Arduino i projekty LEGO. Zadziwiające projekty LEGO sterowane przez Arduino, Helion, 2013.
11. Westerfield M.: Projekty elektroniczne na iPhone i iPad. Niekonwencjonalne gadżety z technologią Arduino i techBASIC, Helion, 2014.
12. Monk S.: Zabawy z elektroniką. Ilustrowany przewodnik dla wynalazców i pasjonatów, Helion, 2014
01-2014 33 Zygmunt Kubiak