Python i elektronika

download Python i elektronika

If you can't read please download the document

Transcript of Python i elektronika

  • 1. Python i elektronika Piotr Maliski www.python.rk.edu.pl

2. Jaka elektronika ? GPIO (General Purpose Input/Output) 3. Jaka elektronika ? USB 4. R2D2 z Raspberry Pi na pokadzie Rozpoznawanie mowy (Angielski, Chiski) Rozpoznawanie twarzy Wykrywanie ruchu Ultradwikowy czujnik odlegoci Nagrywanie i odtwarzanie wiadomoci audio http://www.youtube.com/watch?v=znuUm5vbSpI 5. Dlaczego Python? Prociej i atwiej Unikamy programowania w C, albo ASM Nie jestemy uzalenieni od jednego specyficznego SDK/IDE (np. takiego pod Windows 98) Wiksza przenono kodu, niezaleno od systemu operacyjnego 6. Czego potrzebujemy ? Kontrolery 7. Kontrolery PyMCU www.circuitsforfun.com Mikrokontroler PIC z wyjciami analogowymi i cyfrowymi Podczany poprzez USB do komputera Pythonowy modu pymcu do jego obsug Obsuga I2C, SPI, wywietlaczy LCD 8. Kontrolery PyMCU www.circuitsforfun.com Maa spoeczno Brak dodatkowych bibliotek i dokumentacji dotyczcej wykorzystania bardziej zoonych ukadw (I2C, SPI) 9. Kontrolery Raspberry Pi Komputer na maej pytce GPIO (3.3V) obsugiwane z poziomu Linuksa uruchomionego na Raspberry Silne wsparcie dla Pythona Wiele pytek rozszerzajcych (Gertboard, PiFace) rwnie wspiera Pythona Do dua spoeczno 10. Kontrolery Arduino Liczne zcza GPIO i wiele pytek rozszerzajcych Dua popularno i dua spoeczno (sporo kodu) Programowalny gwnie w C Python (PyFirmata, pyserial) pozwala tylko na komunikacj z mikrokontrolerem na Arduino 11. Akcesoria Pytki stykowe (breadboard) Kable poczeniowe (jumper wires) Podstawowe podzespoy elektroniczne (np. rezystory i diody LED) Lutownica, cyna, kalafonia Miernik, oscyloskop 12. Gdzie to kupi? http://kamami.pl http://nettigo.pl http://sklep.avt.pl/ Allegro, ebay i wiele sklepw z elektronik https://www.sparkfun.com https://www.adafruit.com http://dx.com 13. 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) 14. Odczyt wartoci z sensorw import pymcu mb = pymcu.mcuModule() while True: print mb.analogRead(1) 15. Odczyt wartoci z sensorw Ultradwikowy miernik odlegoci Impuls na pinie Trig wyzwala seri impulsw ultradwikowych Pin Echo przejdzie w stan wysoki (1) gdy bdzie odbiera odbity sygna z tych impulsw Czas trwania stanu wysokiego pozwala wyliczy odlego do przeszkody 16. .. 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' 17. Przerwania (interrupts) Pozwalaj oczekiwa na zdarzenia (event) zmiany stanu pinu Znacznie bardziej wydajne ni cige sprawdzanie jego stanu Obsugiwane 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 18. I2C oraz SPI Interfejsy do komunikowania si pomidzy urzdzeniami Stosowane w bardziej zoonych ukadach, pytkach Urzdzenie dostpne jest pod okrelonym adresem, z ktrego mona czyta lub do ktrego mona pisa dane. Potrzebna jest dokadna dokumentacja opisujca interfejs (co i jak pisa albo odczytywa) Arduino, a take Raspberry maj zazwyczaj gotowe biblioteki dla wielu urzdze (np.. LiquidCrystal dla LCD) 19. I2C oraz SPI 20. 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 niektre urzdzenia USB Dostpne s te same adaptery uywane zazwyczaj do komunikacji komputer-mikrokontroler 21. USB https:// github.com/walac/pyusb Jeeli dobrze znamy urzdzenie USB i sam protok to moemy przej nad nim kontrol poprzez pyusb Mona to np. zrobi z wyrzutniami rakiet na USB :) 22. 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 23. Inne ciekawe pytki i kontrolery 24. Synapse SNAP Komunikacja bezprzewodowa IEEE 802.15.4 Piny GPIO Niskie zuycie energii, relatywnie niska cena Programowalne w SNAPpy pochodnej implementacji Pythona http://synapse-wireless.com 25. SparkFun SerIO Obsuga urzdze podczonych do pinw 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 26. 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(); 27. Phidgets http://www.phidgets.com Pyty-kontrolery i liczne pytki dodatkowe (sensory, motory, przeczniki) 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. 28. Phidgets http://www.phidgets.com 29. mbed Platforma prototypowania dla ukadw z mikrokontrolerami ARM Posiada wsparcie dla Pythona (ale nie pierwszoplanowe) http://mbed.org/cookbook/Interfacing-with-Python Programowalny przez webowy interfejs i przerzucanie gotowych plikw 30. http://technical.io/ 31. Koniec