Wydział Elektroniki, Telekomunikacji i Informatyki PG



ARCHITEKTURA SYSTEM?W WBUDOWANYCH - LABORATORIUM?wiczenie 3.Temat: Programowanie platformy Raspberry Pi w j?zyku Python. ??czn?? z chmur? Google DriveData:Godzina:Imi? i nazwiskoNr albumuPo zakończeniu ?wiczenia niniejsz? formatk? nale?y wys?a? na adres: iwona.kochanska@pg.edu.plPrzebieg labororatorium:1. ??czno?? z chmur? Google Drive z komputera hosta.2. Uruchomienie Raspberry Pi.3. ??czno?? z chmur? Google Drive z Raspberry Pi.4. Obs?uga pinów GPIO w j?zyku PythonLogowanie do systemu operacyjnego hosta (OS Linux Debian):LOGIN: studentHAS?O: student*??czno?? z chmur? Google Drive z komputera hosta.Przygotowanie konta Google i arkusza kalkulacyjnego na dysku GoogleZaloguj si? do konta Google za pomoc? danych otrzymanych od nauczyciela.Przejd? do konsoli programisty Google: utwórz nowy projekt. Nast?pnie:Wybierz opcj? Google APIs ( kolorowy napis w górnym lewym rogu strony)W??cz API (Enable APIs and services): Google Drive oraz Google Sheets APIPo powrocie do g?ownego menu Google APIs wybierz Dane logowania (Credentials)Utwórz dane logowania (Create credentials) → ID klienta Oauth. Skonfiguruj ekran zgody (niebieski przycisk). Tu koniecznie wpisz Nazw? aplikacji widoczn? dla u?ytkowników (Application name). Zapisz t? zmian?.Po powrocie do okna danych logowania wybierz typ aplikacji: Inne i podaj nazw? klienta (np. klient1).W przegl?darce otworzy si? okno z danymi logowania. Nie musisz ich przepisywa?. Zamknij to okno i pobierz dane logowania w formacie JSON (ikona download z prawej strony przy nazwie klienta)Zmień nazw? pobranego pliku na client_secret.json$ cd ~/Pobrane/$ mv nazwa-pliku.json client_secret.jsonPrzejd? do us?ugi Google Drive. Utwórz nowy arkusz kalkulacyjny – nadaj mu nazw? oraz zapisz w pliku tekstowym (notatniku, geany, etc.) jego numer identyfikacyjny, b?d?cy cz??ci? jego URL: HYPERLINK "; \l "gid=0" HYPERLINK "; \l "gid=0"1g-H0aWaf5T1wRaWtrPrHS1ikmeMLjua3UzNa1TjC9Rw HYPERLINK "; \l "gid=0"/edit#gid=0Trzy pierwsze kolumny arkusza nazwij: datetimevaluePrzygotowanie maszyny hostaDo uruchomienia skryptu Python do komunikacji z Google Spreadsheet potrzebnych b?dzie kilka modu?ów j?zyka python. ?ród?a pobierz do katalogu domowego.Zainstaluj pakiet python-setuptools:$ sudo apt-get install python-setuptoolsgoogle-api-pythonPobierz ?rod?a jako archiwum zip z repozytorium python-client. Po rozpakowaniu zainstaluj:$ cd ~/Pobrane/$ unzip google-api-python-client-master.zip$ cd google-api-python-client-master/$ sudo python setup.py installoauth2clientPobierz ?rod?a jako archiwum zip z repozytorium . Po rozpakowaniu zainstaluj:$ cd ~/Pobrane/$ unzip unzip oauth2client-master.zip $ cd oauth2client-master$ sudo python setup.py installgdata-python-clientPobierz ?rod?a jako archiwum zip z repozytorium $ cd ~/Pobrane/$ unzip gdata-python-client-master.zip$ cd gdata-python-client-master$ sudo python setup.py installtlslitePobierz ?rod?a jako archiwum zip z repozytorium $ cd ~/Pobrane/$ unzip tlslite-master.zip$ cd tlslite-master$ sudo python setup.py installPrzyk?adowy skrypt w j?zyku PythonUtwórz nowy pliki w edytorze ( np. nano lub geany). W dalszej cze?ci instrukcji plik ten nazywa si? sheet_test.py, ale mo?esz mu nada? inn? nazw?. Pierwsze linijki kodu to import bibliotek:import timeimport httplib2from oauth2client.file import Storagefrom oauth2client.client import flow_from_clientsecretsfrom oauth2client import toolsimport mathimport getoptimport sysimport stringimport datetimeimport gdata.spreadsheet.serviceimport gdata.serviceNast?pnie nale?y utworzy? obiekty odpowiedzialne za uwierzytelnianie:storage = Storage("creds.dat")credentials = storage.get()if credentials is None or credentials.invalid: flags = tools.argparser.parse_args(args=[]) flow = flow_from_clientsecrets("client_secret.json", scope=[";]) credentials = tools.run_flow(flow, storage, flags)if credentials.access_token_expired: credentials.refresh(httplib2.Http())Po??czenie z us?ug? Google Spreadsheets. ?ańcuch znaków spreadsheet_key powinien by? zgodny z identyfikatorem utworzonego wcze?niej arkusza Google:client = gdata.spreadsheet.service.SpreadsheetsService( additional_headers={'Authorization' : 'Bearer %s' % credentials.access_token})spreadsheet_key = '1Vv-HJGcPfAjQF-VEgfO675gVEkxuWTsYnLH-Hgt8neo'entry = client.GetSpreadsheetsFeed(spreadsheet_key) print entry.titleIteracyjne zapisanie w arkuszu Google 25 warto?ci daty, czasu i liczby ca?kowitej:for i in range(25): val = i dict = {} dict['date'] = time.strftime('%m/%d/%Y') dict['time'] = time.strftime('%H:%M:%S') dict['value'] = str(val) print dict entry = client.InsertRow(dict, spreadsheet_key, 'od6') if isinstance(entry, gdata.spreadsheet.SpreadsheetsList): print "Insert row succeeded." else:print "Insert row failed." Uruchom skrypt: $sudo python sheet_test.pyPodcza pierwszej próby nawi?zania po??czenia z us?ug? Google zostaniesz poproszony o potwierdzenie autoryzacji. Je?li to zrobisz, w katalogu z programem na maszynie hosta zostanie zapisana informacja tzw. tokenu dost?pu (plik creds.dat). Je?li kolejne nawi?zanie po??czenia nie powiedzie si?, zmień w?a?ciciela pliku creds.dat:$ sudo chown student:student creds.datPonownie uruchom skrypt sheet_test.py i obserwuj, jak w arkuszu kalkulacyjnym zapisywane s? kolejne wiersze danych. Uruchomienie Raspberry PiKorzystaj?c z instrukcji laboratoryjnej do ?wiczenia nr 1 uruchom komputer Raspberry Pi i nawi?? z nim komunikacj? za pomoc? ssh.??czno?? z chmur? Google Drive z Raspberry Pi.Przygotowanie ?rodowiska i uruchamianie programu przebiega identycznie jak dla maszyny hosta. Pobrane wcze?niej archiwa zip z modu?ami Python mo?esz skopiowa? na Raspberry Pi za pomoc? polecenia scp, a nast?pnie zainstalowa? je podobnie jak na maszynie hosta ($ sudo python setup.py install). Przyk?adowe kopiowanie archiwum na Rpi:$ cd ~/Pobrane/$ scp tlslite-master.zip pi@192.168.1.XXX:.XXX – 3 ostatnie cyfry nr IP Rpi.Plik creds.dat równie? nale?y skopiowa? z maszyny hosta na Raspberry Pi. Bez interfejsu graficznego i obs?ugi JavaScript nie mo?na wygenerowa? na stronie Google tego pliku podczas pierwszego po??czenia. Podobnie nale?y skopiowa? plik client_secret.json.Skopiuj i uruchom skrypt sheet_test.py na Raspberry Pi. Czy arkusz kalkulacyjny wype?nia si? nowymi danymi?Obs?uga pinów GPIO w j?zyku PythonDo obs?ugi pinów GPIO w j?zyku Python mo?na wykorzysta? bibliotek? RPi.GPIO, która powinna znajdowa? si? w systemie plików Raspbiana. Inicjalizacja pinu GPIO nr 4 jako wej?ciowego zgodnie z numeracj? BCM (w przypadku numerów fizycznych GPIO nale?a?oby ustawi? opcj? GPIO.BOARD):import RPi.GPIO as GPIOGPIO.setmode(GPIO.BCM)GPIO.setup(4,GPIO.IN)Ustawienie pinu jako wyj?ciowego:GPIO.setup(4,GPIO.OUT)Odczyt pinu wej?ciowego:input = GPIO.input(4)Ustawienie stanu pinu wyj?ciowego:GPIO.output(4, GPIO.HIGH);GPIO.output(4, GPIO.LOW);Usuni?cie ustawień (po zakończeniu obs?ugi pinów):GPIO.cleanup()ZADANIE:Napisz program w j?zyku Python, który steruje pinami GPIO platformy Raspberry Pi. Program powinien odczytywa? stan jednego pinu wej?ciowego oraz ustawia? stan dwóch pinów wyj?ciowych. Do pinu wej?ciowego powinien by? pod??czony przycisk, do pinów wyj?ciowych – diody. Schemat dzia?ania programu jest nast?puj?cy:Pierwsze naci?ni?cie i puszczenie przycisku – zapala si? dioda nr 1,Drugie naci?ni?cie o puszczenie przycisku – zapala si? dioda nr 2,Trzecie naci?ni?cie i puszczenie przycisku – ga?nie dioda nr 1,Czwarte naci?ni?cie i puszczenie przycisku – ga?nie dioda nr 2.Dodatkowo program powinien wysy?a? do arkusza Google Sheet informacj? o czasie, w którym nast?pi?a zmiana stanu systemu. Przyk?adowe kolumny:dataczasstanjeden standwaNowy wiersz danych powinien zosta? zapisany ilekro? wci?ni?ty zostanie przycisk. stanD1 i stanD2 mog? przyjmowa? warto?ci 0/1 lub on/off.SKRYPT:……..Numeracja pinów GPIO w formacie BCM.-62865-21590 ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download