SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
Python
i
elektronika
Piotr Maliński
www.python.rk.edu.pl
Jaka elektronika ?
GPIO (General Purpose Input/Output)
Jaka elektronika ?
USB
R2D2 z Raspberry Pi na pokładzie
● Rozpoznawanie mowy (Angielski, Chiński)
● Rozpoznawanie twarzy
● Wykrywanie ruchu
● Ultradźwiękowy czujnik odległości
● Nagrywanie i odtwarzanie wiadomości audio
http://www.youtube.com/watch?v=znuUm5vbSpI
Dlaczego Python?
➔ Prościej i łatwiej
➔ Unikamy programowania w C, albo ASM
➔ Nie jesteśmy uzależnieni od jednego specyficznego
SDK/IDE (np. takiego pod Windows 98)
➔ Większa przenośność kodu, niezależność od systemu
operacyjnego
Czego potrzebujemy ?
Kontrolery
Kontrolery
PyMCU
www.circuitsforfun.com
● Mikrokontroler PIC z wyjściami
analogowymi i cyfrowymi
● Podłączany poprzez USB do
komputera
● Pythonowy moduł pymcu do jego
obsług
● Obsługa I2C, SPI, wyświetlaczy
LCD
Kontrolery
PyMCU
www.circuitsforfun.com
● Mała społeczność
● Brak dodatkowych bibliotek i
dokumentacji dotyczącej
wykorzystania bardziej złożonych
układów (I2C, SPI)
Kontrolery
Raspberry Pi
● Komputer na małej płytce
● GPIO (3.3V) obsługiwane z
poziomu Linuksa uruchomionego
na Raspberry
● Silne wsparcie dla Pythona
● Wiele płytek rozszerzających
(Gertboard, PiFace) również
wspiera Pythona
● Dość duża społeczność
Kontrolery
Arduino
● Liczne złącza GPIO i wiele płytek
rozszerzających
● Duża popularność i duża
społeczność (sporo kodu)
● Programowalny głównie w C
● Python (PyFirmata, pyserial)
pozwala „tylko” na komunikację z
mikrokontrolerem na Arduino
Python i elektronika
Python i elektronika
Python i elektronika
Akcesoria
● Płytki stykowe (breadboard)
● Kable połączeniowe (jumper wires)
● Podstawowe podzespoły elektroniczne (np. rezystory i diody LED)
● Lutownica, cyna, kalafonia
● Miernik, oscyloskop
Gdzie to kupić?
● http://kamami.pl
● http://nettigo.pl
● http://sklep.avt.pl/
● Allegro, ebay i wiele sklepów z elektroniką
● https://www.sparkfun.com
● https://www.adafruit.com
● http://dx.com
Hello world – miganie diodą LED
import pymcu
mb = pymcu.mcuModule()
for x in range(1,25):
mb.pinHigh(1)
mb.pausems(500)
mb.pinLow(1)
mb.pausems(500)
Odczyt wartości z sensorów
import pymcu
mb = pymcu.mcuModule()
while True:
print mb.analogRead(1)
Odczyt wartości z sensorów
Ultradźwiękowy „miernik” odległości
● Impuls na pinie Trig wyzwala serię impulsów ultradźwiękowych
● Pin Echo przejdzie w stan wysoki (1) gdy będzie odbierał odbity sygnał z tych
impulsów
● Czas trwania stanu wysokiego pozwala wyliczyć odległość do przeszkody
..
mb.digitalState(2, 'input') # Echo
mb.pinHigh(1) # Trig
mb.pauseus(10)
mb.pinLow(1)
response_start = None
response_end = None
for i in range(0, 500):
ret = mb.digitalRead(2)
if ret == 1:
end = datetime.now()
response_end = end
if not response_start:
response_start = end
if response_end and response_start:
echo_delta = response_end - response_start
delta = echo_delta.total_seconds()
print (delta * 340) / 2, ' m'
else:
print 'no echo captured'
Przerwania (interrupts)
● Pozwalają oczekiwać na zdarzenia (event) zmiany stanu pinu
● Znacznie bardziej wydajne niż ciągłe sprawdzanie jego stanu
● Obsługiwane m.in. w Raspberry Pi (Rpi.GPIO w wersji 0.5.2
lub nowszej)
GPIO.add_event_detect(24, GPIO.RISING,
callback=my_callback)
http://raspi.tv/2013/how-to-use-interrupts-with-python-on-the-raspberry-pi-and-rpi-gpio-part-3
http://raspi.tv/2013/how-to-use-interrupts-with-python-on-the-raspberry-pi-and-rpi-gpio-part-2
http://raspi.tv/2013/how-to-use-interrupts-with-python-on-the-raspberry-pi-and-rpi-gpio
I2C oraz SPI
● Interfejsy do komunikowania się pomiędzy urządzeniami
● Stosowane w bardziej złożonych układach, płytkach
● Urządzenie dostępne jest pod określonym adresem, z którego
można czytać lub do którego można pisać dane.
● Potrzebna jest dokładna dokumentacja opisująca interfejs (co i
jak pisać albo odczytywać)
● Arduino, a także Raspberry mają zazwyczaj gotowe biblioteki
dla wielu urządzeń (np.. LiquidCrystal dla LCD)
I2C oraz SPI
Komunikacja szeregowa
● Adapter USB-UART tworzy wirtualny port szeregowy na
komputerze
● Moduł pyserial pozwala pisać i czytać z takiego portu
● Zazwyczaj powinno być to prostsze niż I2C/SPI
● Mogą być wbudowane w niektóre urządzenia USB
● Dostępne są też same adaptery – używane zazwyczaj do
komunikacji komputer-mikrokontroler
USB
● https:// github.com/walac/pyusb
● Jeżeli dobrze znamy urządzenie USB i sam protokół to
możemy przejąć nad nim kontrolę poprzez pyusb
● Można to np. zrobić z wyrzutniami rakiet na USB :)
COM, .NET i MS Windows
import win32com.client
tel = win32com.client.Dispatch("Celestron.Telescope")
if tel.Connected:
print " ->Telescope was already connected"
else:
tel.Connected = True
if tel.Connected:
print " Connected to telescope now"
else:
print " Unable to connect to telescope, expect exception"
tel.Tracking = True
tel.SlewToCoordinates(12.34, 86.7)
tel.Connected = False
import clr
clr.AddReference("ASCOM.DriverAccess.dll")
from ASCOM.DriverAccess import *
a = Telescope('Celestron.Telescope')
a.Connected = True
a.SlewToCoordinates(11.11, 11.11)
a.TrackingRate = 0
a.Tracking = True
a.Connected = False
Inne ciekawe płytki i kontrolery
Synapse SNAP
● Komunikacja bezprzewodowa IEEE 802.15.4
● Piny GPIO
● Niskie zużycie energii, relatywnie niska cena
● Programowalne w SNAPpy – pochodnej implementacji Pythona
http://synapse-wireless.com
SparkFun SerIO
● Obsługa urządzeń podłączonych do pinów analogowych i cyfrowych
poprzez port szeregowy z poziomu komputera
● W przypadku Pythona potrzebny jest tylko PySerial i dokumentacja
SerIO
https://www.sparkfun.com/products/9521
SparkFun SerIO
https://www.sparkfun.com/products/9521
mySerial = serial.Serial(8, 57600, serial.EIGHTBITS,
serial.PARITY_NONE, serial.STOPBITS_ONE, 5);
#Wait for the 'Ready' response from the SerIO
response = mySerial.readline();
#Send SerIO command to turn off the command echo
size = mySerial.write("E,0r");
time.sleep(0.1);
#Configure pin D2 as an output
mySerial.write("C,2,1r");
response = mySerial.readline();
Phidgets
http://www.phidgets.com
● Płyty-kontrolery i liczne płytki dodatkowe (sensory, motory, przełączniki)
● Wysokopoziomowe API dla Pythona jaki dla... Android Java, Applescript, C/C++,
C#, Cocoa, Delphi, Flash AS3, Java, LabVIEW, MATLAB, Max/MSP, Ruby, Visual Basic.NET, Visual
Basic 6.0, Visual Basic for Applications, Visual Basic Script, and Visual C/C++/Borland.NET.
Phidgets
http://www.phidgets.com
mbed
● Platforma prototypowania dla układów z mikrokontrolerami ARM
● Posiada wsparcie dla Pythona (ale nie „pierwszoplanowe”)
● http://mbed.org/cookbook/Interfacing-with-Python
● Programowalny przez webowy interfejs i przerzucanie gotowych plików
http://technical.io/
Koniec

Más contenido relacionado

La actualidad más candente

Remote testing with JMeter
Remote testing with JMeterRemote testing with JMeter
Remote testing with JMeterŁódQA
 
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?Semihalf
 
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...Future Processing
 
Wirtualizacja urządzeń PCI (SR-IOV).
Wirtualizacja urządzeń PCI (SR-IOV).Wirtualizacja urządzeń PCI (SR-IOV).
Wirtualizacja urządzeń PCI (SR-IOV).Semihalf
 
Procesor Ti C5420
Procesor Ti C5420Procesor Ti C5420
Procesor Ti C5420biometria
 

La actualidad más candente (6)

Remote testing with JMeter
Remote testing with JMeterRemote testing with JMeter
Remote testing with JMeter
 
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
 
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
 
Sniffing
SniffingSniffing
Sniffing
 
Wirtualizacja urządzeń PCI (SR-IOV).
Wirtualizacja urządzeń PCI (SR-IOV).Wirtualizacja urządzeń PCI (SR-IOV).
Wirtualizacja urządzeń PCI (SR-IOV).
 
Procesor Ti C5420
Procesor Ti C5420Procesor Ti C5420
Procesor Ti C5420
 

Destacado

Startup krok po kroku - Bartek Pucek, Kreativ
Startup krok po kroku - Bartek Pucek, KreativStartup krok po kroku - Bartek Pucek, Kreativ
Startup krok po kroku - Bartek Pucek, KreativBiznes 2.0
 
Django SEM
Django SEMDjango SEM
Django SEMGandi24
 
Introduction to Intellectual Property
Introduction to Intellectual PropertyIntroduction to Intellectual Property
Introduction to Intellectual PropertyJane Lambert
 
Low Effort, High Impact Mobile Web Development
Low Effort, High Impact Mobile Web DevelopmentLow Effort, High Impact Mobile Web Development
Low Effort, High Impact Mobile Web Developmentchaefele
 
W3C at KESW2012
W3C at KESW2012W3C at KESW2012
W3C at KESW2012AI4BD GmbH
 
Joyce Gray - Beginner's guide to business information
Joyce Gray - Beginner's guide to business information Joyce Gray - Beginner's guide to business information
Joyce Gray - Beginner's guide to business information Jane Lambert
 
The unitary patent and unified patent court
The unitary patent and unified patent courtThe unitary patent and unified patent court
The unitary patent and unified patent courtJane Lambert
 
Paintball 23 03 08
Paintball 23 03 08Paintball 23 03 08
Paintball 23 03 08arabacamp
 
Meet On The Street
Meet On The StreetMeet On The Street
Meet On The StreetNL.M.S.R
 
Meet On The Street
Meet On The StreetMeet On The Street
Meet On The StreetNL.M.S.R
 
Michael Sandys: "The Good The Bad and The Ugly Regarding Licensing & Enforcem...
Michael Sandys: "The Good The Bad and The Ugly Regarding Licensing & Enforcem...Michael Sandys: "The Good The Bad and The Ugly Regarding Licensing & Enforcem...
Michael Sandys: "The Good The Bad and The Ugly Regarding Licensing & Enforcem...Jane Lambert
 
Atmosphere As A Fluid
Atmosphere As A FluidAtmosphere As A Fluid
Atmosphere As A Fluidsrenshaw
 
Preparing for the upc
Preparing for the upcPreparing for the upc
Preparing for the upcJane Lambert
 
Mes Rosiers
Mes RosiersMes Rosiers
Mes Rosierschlud
 
что помогает животным выживать
что помогает животным выживатьчто помогает животным выживать
что помогает животным выживатьRaikhanaM
 
What Is The Atmosphere
What Is The AtmosphereWhat Is The Atmosphere
What Is The Atmospheresrenshaw
 
Introduction to intellectual property
Introduction to intellectual propertyIntroduction to intellectual property
Introduction to intellectual propertyJane Lambert
 
Setting Your Terms
Setting Your TermsSetting Your Terms
Setting Your TermsJane Lambert
 

Destacado (20)

Startup krok po kroku - Bartek Pucek, Kreativ
Startup krok po kroku - Bartek Pucek, KreativStartup krok po kroku - Bartek Pucek, Kreativ
Startup krok po kroku - Bartek Pucek, Kreativ
 
Django SEM
Django SEMDjango SEM
Django SEM
 
Introduction to Intellectual Property
Introduction to Intellectual PropertyIntroduction to Intellectual Property
Introduction to Intellectual Property
 
Low Effort, High Impact Mobile Web Development
Low Effort, High Impact Mobile Web DevelopmentLow Effort, High Impact Mobile Web Development
Low Effort, High Impact Mobile Web Development
 
W3C at KESW2012
W3C at KESW2012W3C at KESW2012
W3C at KESW2012
 
Redox (I)
Redox (I)Redox (I)
Redox (I)
 
Joyce Gray - Beginner's guide to business information
Joyce Gray - Beginner's guide to business information Joyce Gray - Beginner's guide to business information
Joyce Gray - Beginner's guide to business information
 
The unitary patent and unified patent court
The unitary patent and unified patent courtThe unitary patent and unified patent court
The unitary patent and unified patent court
 
Paintball 23 03 08
Paintball 23 03 08Paintball 23 03 08
Paintball 23 03 08
 
Meet On The Street
Meet On The StreetMeet On The Street
Meet On The Street
 
小寶貝
小寶貝小寶貝
小寶貝
 
Meet On The Street
Meet On The StreetMeet On The Street
Meet On The Street
 
Michael Sandys: "The Good The Bad and The Ugly Regarding Licensing & Enforcem...
Michael Sandys: "The Good The Bad and The Ugly Regarding Licensing & Enforcem...Michael Sandys: "The Good The Bad and The Ugly Regarding Licensing & Enforcem...
Michael Sandys: "The Good The Bad and The Ugly Regarding Licensing & Enforcem...
 
Atmosphere As A Fluid
Atmosphere As A FluidAtmosphere As A Fluid
Atmosphere As A Fluid
 
Preparing for the upc
Preparing for the upcPreparing for the upc
Preparing for the upc
 
Mes Rosiers
Mes RosiersMes Rosiers
Mes Rosiers
 
что помогает животным выживать
что помогает животным выживатьчто помогает животным выживать
что помогает животным выживать
 
What Is The Atmosphere
What Is The AtmosphereWhat Is The Atmosphere
What Is The Atmosphere
 
Introduction to intellectual property
Introduction to intellectual propertyIntroduction to intellectual property
Introduction to intellectual property
 
Setting Your Terms
Setting Your TermsSetting Your Terms
Setting Your Terms
 

Similar a Python i elektronika

Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Semihalf
 
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL versionMaciej Lasyk
 
Let your existing devices enter the witchcraft of IoT and the smart-home world
Let your existing devices enter the witchcraft of IoT and the smart-home worldLet your existing devices enter the witchcraft of IoT and the smart-home world
Let your existing devices enter the witchcraft of IoT and the smart-home worldThe Software House
 
100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. 100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. Redge Technologies
 
PLNOG 18 - Robert Ślaski - Programowanie a nie konfiguracja - porozmawiajmy z...
PLNOG 18 - Robert Ślaski - Programowanie a nie konfiguracja - porozmawiajmy z...PLNOG 18 - Robert Ślaski - Programowanie a nie konfiguracja - porozmawiajmy z...
PLNOG 18 - Robert Ślaski - Programowanie a nie konfiguracja - porozmawiajmy z...PROIDEA
 
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwAsynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwLuke Adamczewski
 
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Polcode
 
PLNOG 9: Krzysztof Mazepa - Transmisja 100G DWDM/IPoDWDM Orange Polska - case...
PLNOG 9: Krzysztof Mazepa - Transmisja 100G DWDM/IPoDWDM Orange Polska - case...PLNOG 9: Krzysztof Mazepa - Transmisja 100G DWDM/IPoDWDM Orange Polska - case...
PLNOG 9: Krzysztof Mazepa - Transmisja 100G DWDM/IPoDWDM Orange Polska - case...PROIDEA
 
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.Semihalf
 
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...PROIDEA
 
Język c. pasja programowania mikrokontrolerów 8 bitowych
Język c. pasja programowania mikrokontrolerów 8 bitowychJęzyk c. pasja programowania mikrokontrolerów 8 bitowych
Język c. pasja programowania mikrokontrolerów 8 bitowychWKL49
 
Sieci komputerowe
Sieci komputeroweSieci komputerowe
Sieci komputerowepietrek
 
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PROIDEA
 
PLNOG 5: Łukasz Bromirski - Wysoka dostępność w sieciach operatorskich
PLNOG 5: Łukasz Bromirski - Wysoka dostępność w sieciach operatorskich PLNOG 5: Łukasz Bromirski - Wysoka dostępność w sieciach operatorskich
PLNOG 5: Łukasz Bromirski - Wysoka dostępność w sieciach operatorskich PROIDEA
 
PLNOG 4: Agata Malarczyk, Łukasz Nierychło - Jak urządzenia D-Link przenoszą ...
PLNOG 4: Agata Malarczyk, Łukasz Nierychło - Jak urządzenia D-Link przenoszą ...PLNOG 4: Agata Malarczyk, Łukasz Nierychło - Jak urządzenia D-Link przenoszą ...
PLNOG 4: Agata Malarczyk, Łukasz Nierychło - Jak urządzenia D-Link przenoszą ...PROIDEA
 

Similar a Python i elektronika (20)

Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.
 
Beacon
BeaconBeacon
Beacon
 
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL version
 
Let your existing devices enter the witchcraft of IoT and the smart-home world
Let your existing devices enter the witchcraft of IoT and the smart-home worldLet your existing devices enter the witchcraft of IoT and the smart-home world
Let your existing devices enter the witchcraft of IoT and the smart-home world
 
100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. 100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego.
 
Monitoring sieci
Monitoring sieciMonitoring sieci
Monitoring sieci
 
PLNOG 18 - Robert Ślaski - Programowanie a nie konfiguracja - porozmawiajmy z...
PLNOG 18 - Robert Ślaski - Programowanie a nie konfiguracja - porozmawiajmy z...PLNOG 18 - Robert Ślaski - Programowanie a nie konfiguracja - porozmawiajmy z...
PLNOG 18 - Robert Ślaski - Programowanie a nie konfiguracja - porozmawiajmy z...
 
Odnaleźć się w nanokosmosie
Odnaleźć się w nanokosmosieOdnaleźć się w nanokosmosie
Odnaleźć się w nanokosmosie
 
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwAsynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
 
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
 
DTrace
DTraceDTrace
DTrace
 
PLNOG 9: Krzysztof Mazepa - Transmisja 100G DWDM/IPoDWDM Orange Polska - case...
PLNOG 9: Krzysztof Mazepa - Transmisja 100G DWDM/IPoDWDM Orange Polska - case...PLNOG 9: Krzysztof Mazepa - Transmisja 100G DWDM/IPoDWDM Orange Polska - case...
PLNOG 9: Krzysztof Mazepa - Transmisja 100G DWDM/IPoDWDM Orange Polska - case...
 
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
 
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...
 
Język c. pasja programowania mikrokontrolerów 8 bitowych
Język c. pasja programowania mikrokontrolerów 8 bitowychJęzyk c. pasja programowania mikrokontrolerów 8 bitowych
Język c. pasja programowania mikrokontrolerów 8 bitowych
 
His
His His
His
 
Sieci komputerowe
Sieci komputeroweSieci komputerowe
Sieci komputerowe
 
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
 
PLNOG 5: Łukasz Bromirski - Wysoka dostępność w sieciach operatorskich
PLNOG 5: Łukasz Bromirski - Wysoka dostępność w sieciach operatorskich PLNOG 5: Łukasz Bromirski - Wysoka dostępność w sieciach operatorskich
PLNOG 5: Łukasz Bromirski - Wysoka dostępność w sieciach operatorskich
 
PLNOG 4: Agata Malarczyk, Łukasz Nierychło - Jak urządzenia D-Link przenoszą ...
PLNOG 4: Agata Malarczyk, Łukasz Nierychło - Jak urządzenia D-Link przenoszą ...PLNOG 4: Agata Malarczyk, Łukasz Nierychło - Jak urządzenia D-Link przenoszą ...
PLNOG 4: Agata Malarczyk, Łukasz Nierychło - Jak urządzenia D-Link przenoszą ...
 

Python i elektronika

  • 2. Jaka elektronika ? GPIO (General Purpose Input/Output)
  • 4. R2D2 z Raspberry Pi na pokładzie ● Rozpoznawanie mowy (Angielski, Chiński) ● Rozpoznawanie twarzy ● Wykrywanie ruchu ● Ultradźwiękowy czujnik odległości ● Nagrywanie i odtwarzanie wiadomości audio http://www.youtube.com/watch?v=znuUm5vbSpI
  • 5. Dlaczego Python? ➔ Prościej i łatwiej ➔ Unikamy programowania w C, albo ASM ➔ Nie jesteśmy uzależnieni od jednego specyficznego SDK/IDE (np. takiego pod Windows 98) ➔ Większa przenośność kodu, niezależność od systemu operacyjnego
  • 7. Kontrolery PyMCU www.circuitsforfun.com ● Mikrokontroler PIC z wyjściami analogowymi i cyfrowymi ● Podłączany poprzez USB do komputera ● Pythonowy moduł pymcu do jego obsług ● Obsługa I2C, SPI, wyświetlaczy LCD
  • 8. Kontrolery PyMCU www.circuitsforfun.com ● Mała społeczność ● Brak dodatkowych bibliotek i dokumentacji dotyczącej wykorzystania bardziej złożonych układów (I2C, SPI)
  • 9. Kontrolery Raspberry Pi ● Komputer na małej płytce ● GPIO (3.3V) obsługiwane z poziomu Linuksa uruchomionego na Raspberry ● Silne wsparcie dla Pythona ● Wiele płytek rozszerzających (Gertboard, PiFace) również wspiera Pythona ● Dość duża społeczność
  • 10. Kontrolery Arduino ● Liczne złącza GPIO i wiele płytek rozszerzających ● Duża popularność i duża społeczność (sporo kodu) ● Programowalny głównie w C ● Python (PyFirmata, pyserial) pozwala „tylko” na komunikację z mikrokontrolerem na Arduino
  • 14. Akcesoria ● Płytki stykowe (breadboard) ● Kable połączeniowe (jumper wires) ● Podstawowe podzespoły elektroniczne (np. rezystory i diody LED) ● Lutownica, cyna, kalafonia ● Miernik, oscyloskop
  • 15. Gdzie to kupić? ● http://kamami.pl ● http://nettigo.pl ● http://sklep.avt.pl/ ● Allegro, ebay i wiele sklepów z elektroniką ● https://www.sparkfun.com ● https://www.adafruit.com ● http://dx.com
  • 16. Hello world – miganie diodą LED import pymcu mb = pymcu.mcuModule() for x in range(1,25): mb.pinHigh(1) mb.pausems(500) mb.pinLow(1) mb.pausems(500)
  • 17. Odczyt wartości z sensorów import pymcu mb = pymcu.mcuModule() while True: print mb.analogRead(1)
  • 18. Odczyt wartości z sensorów Ultradźwiękowy „miernik” odległości ● Impuls na pinie Trig wyzwala serię impulsów ultradźwiękowych ● Pin Echo przejdzie w stan wysoki (1) gdy będzie odbierał odbity sygnał z tych impulsów ● Czas trwania stanu wysokiego pozwala wyliczyć odległość do przeszkody
  • 19. .. mb.digitalState(2, 'input') # Echo mb.pinHigh(1) # Trig mb.pauseus(10) mb.pinLow(1) response_start = None response_end = None for i in range(0, 500): ret = mb.digitalRead(2) if ret == 1: end = datetime.now() response_end = end if not response_start: response_start = end if response_end and response_start: echo_delta = response_end - response_start delta = echo_delta.total_seconds() print (delta * 340) / 2, ' m' else: print 'no echo captured'
  • 20. Przerwania (interrupts) ● Pozwalają oczekiwać na zdarzenia (event) zmiany stanu pinu ● Znacznie bardziej wydajne niż ciągłe sprawdzanie jego stanu ● Obsługiwane m.in. w Raspberry Pi (Rpi.GPIO w wersji 0.5.2 lub nowszej) GPIO.add_event_detect(24, GPIO.RISING, callback=my_callback) http://raspi.tv/2013/how-to-use-interrupts-with-python-on-the-raspberry-pi-and-rpi-gpio-part-3 http://raspi.tv/2013/how-to-use-interrupts-with-python-on-the-raspberry-pi-and-rpi-gpio-part-2 http://raspi.tv/2013/how-to-use-interrupts-with-python-on-the-raspberry-pi-and-rpi-gpio
  • 21. I2C oraz SPI ● Interfejsy do komunikowania się pomiędzy urządzeniami ● Stosowane w bardziej złożonych układach, płytkach ● Urządzenie dostępne jest pod określonym adresem, z którego można czytać lub do którego można pisać dane. ● Potrzebna jest dokładna dokumentacja opisująca interfejs (co i jak pisać albo odczytywać) ● Arduino, a także Raspberry mają zazwyczaj gotowe biblioteki dla wielu urządzeń (np.. LiquidCrystal dla LCD)
  • 23. Komunikacja szeregowa ● Adapter USB-UART tworzy wirtualny port szeregowy na komputerze ● Moduł pyserial pozwala pisać i czytać z takiego portu ● Zazwyczaj powinno być to prostsze niż I2C/SPI ● Mogą być wbudowane w niektóre urządzenia USB ● Dostępne są też same adaptery – używane zazwyczaj do komunikacji komputer-mikrokontroler
  • 24. USB ● https:// github.com/walac/pyusb ● Jeżeli dobrze znamy urządzenie USB i sam protokół to możemy przejąć nad nim kontrolę poprzez pyusb ● Można to np. zrobić z wyrzutniami rakiet na USB :)
  • 25. COM, .NET i MS Windows import win32com.client tel = win32com.client.Dispatch("Celestron.Telescope") if tel.Connected: print " ->Telescope was already connected" else: tel.Connected = True if tel.Connected: print " Connected to telescope now" else: print " Unable to connect to telescope, expect exception" tel.Tracking = True tel.SlewToCoordinates(12.34, 86.7) tel.Connected = False import clr clr.AddReference("ASCOM.DriverAccess.dll") from ASCOM.DriverAccess import * a = Telescope('Celestron.Telescope') a.Connected = True a.SlewToCoordinates(11.11, 11.11) a.TrackingRate = 0 a.Tracking = True a.Connected = False
  • 26. Inne ciekawe płytki i kontrolery
  • 27. Synapse SNAP ● Komunikacja bezprzewodowa IEEE 802.15.4 ● Piny GPIO ● Niskie zużycie energii, relatywnie niska cena ● Programowalne w SNAPpy – pochodnej implementacji Pythona http://synapse-wireless.com
  • 28. SparkFun SerIO ● Obsługa urządzeń podłączonych do pinów analogowych i cyfrowych poprzez port szeregowy z poziomu komputera ● W przypadku Pythona potrzebny jest tylko PySerial i dokumentacja SerIO https://www.sparkfun.com/products/9521
  • 29. SparkFun SerIO https://www.sparkfun.com/products/9521 mySerial = serial.Serial(8, 57600, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE, 5); #Wait for the 'Ready' response from the SerIO response = mySerial.readline(); #Send SerIO command to turn off the command echo size = mySerial.write("E,0r"); time.sleep(0.1); #Configure pin D2 as an output mySerial.write("C,2,1r"); response = mySerial.readline();
  • 30. Phidgets http://www.phidgets.com ● Płyty-kontrolery i liczne płytki dodatkowe (sensory, motory, przełączniki) ● Wysokopoziomowe API dla Pythona jaki dla... Android Java, Applescript, C/C++, C#, Cocoa, Delphi, Flash AS3, Java, LabVIEW, MATLAB, Max/MSP, Ruby, Visual Basic.NET, Visual Basic 6.0, Visual Basic for Applications, Visual Basic Script, and Visual C/C++/Borland.NET.
  • 32. mbed ● Platforma prototypowania dla układów z mikrokontrolerami ARM ● Posiada wsparcie dla Pythona (ale nie „pierwszoplanowe”) ● http://mbed.org/cookbook/Interfacing-with-Python ● Programowalny przez webowy interfejs i przerzucanie gotowych plików