PROBLEMATYKA RUTOWANIA W …fc.put.poznan.pl/materials/84-zkubiak-atmega-i-arduino-cd.pdf · płyty...

34
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Transcript of PROBLEMATYKA RUTOWANIA W …fc.put.poznan.pl/materials/84-zkubiak-atmega-i-arduino-cd.pdf · płyty...

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 2 Zygmunt Kubiak

Fritzing

01-2014 3 Zygmunt Kubiak

http://fritzing.org/download/

Fritzing

01-2014 4 Zygmunt Kubiak

http://fritzing.org/download/

Fritzing

01-2014 5 Zygmunt Kubiak

http://fritzing.org/download/

Fritzing

01-2014 6 Zygmunt Kubiak

http://fritzing.org/download/

Fritzing

01-2014 7 Zygmunt Kubiak

http://fritzing.org/download/

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

Najważniejsze funkcje biblioteki Firmata

01-2014 10 Zygmunt Kubiak

http://firmata.org/wiki/

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

Processing

01-2014 13 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

Yaler

01-2014 19 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

openHAB

Komunikacja w openHAB

01-2014 29 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

Zygmunt Kubiak 34

09-

2006

Dziękuję