2009-05-28 16 views
13

Zaczynam się trochę nudzić przy programowaniu małych zabawek, które robiłem ostatnio i bardzo chciałbym rozpocząć programowanie i interakcję ze sprzętem.Programowanie za pomocą sprzętu w pytonie

Jedynym problemem jest to, że jestem głównie facetem z Pythona, który tak naprawdę nie nauczył się ani nie używał żadnego innego języka. Czy nadal mogę komunikować się ze sprzętem za pomocą Pythona?

Z jakim sprzętem mogę współpracować? Tak naprawdę nie mam rzeczy, które mogę wykorzystać, więc musiałbym kupić zestaw lub coś takiego. Jakie są tanie opcje?

Odpowiedz

13

Interakcja z portu szeregowego komputera jest dość trywialne i nie ma Python Serial library dostępny. The roomba robot is controllable via a serial port. Prawdopodobnie są tam inne roboty, ale może to być prosty, niewielki krok, abyś mógł zacząć.

Osobiście wiele się nauczyłem kupując a PIC programmer i robiąc kilka prostych circuits to flash LEDs. Przejdę do kontrolowania tych PIC przez port szeregowy, a później za pomocą USB (przez libusb). Jest tam większa krzywa uczenia się, ponieważ będziesz musiał zaprogramować PIC w C lub asembler, ale możesz osiągnąć całkiem niesamowite rezultaty, gdy już poznasz podstawy. Ostrzegam jednak, że jest to śliskie zbocze, gdy zdasz sobie sprawę, ile fajnych gadżetów możesz zbudować :-)

+1

pySerial jest fantastyczny (i odświeżająco wieloplatformowy); Używałem go do komunikacji z ECU w moim samochodzie (wbudowany komputer pokładowy, w zasadzie, architektura SuperH) do wykonywania flashowania i logowania, i działa jak mistrz. Jeśli pracujesz z bardziej nowoczesnym sprzętem bez macierzystego portu szeregowego, FTDI (http://www.ftdichip.com/) urządzenia szeregowe na USB są całkiem przydatne; póki możesz nadal używać pySerial do komunikowania się z nimi, możesz również użyć libftdi (http://www.intra2net.com/en/developer/libftdi/), którego interfejs SWIG daje nieco bogatszy API. – esm

+1

+1 dla pomysłu mikrokontrolera. Jest to dobry sposób na rozpoczęcie niskiego poziomu w środowisku, które jest jeszcze do przewidzenia. –

+0

Możesz również użyć klucza sprzętowego USB, a nawet mikrokontrolerów USB i nadal rozmawiać z nimi jak z portem asynchronicznego portu szeregowego (EIA232). – XTL

3

Możesz użyć ctypes do połączenia ze sprzętem. Pozwoli ci to zadzwonić do bibliotek natywnych, więc możesz w zasadzie użyć go do zrobienia wszystkiego, co C może zrobić. Zakłada to oczywiście, że chcesz współpracować ze sprzętem za pośrednictwem komputera hosta z uruchomionym Pythonem.

Użyłem ctypes na kilka projektów:

Znalazłem to na ogół dość łatwe w użyciu , ale pomogło mi to, że znałem już C/C++.

+0

+1 za klawiaturę LED i kod Morse'a Idea! –

2

Kup zestaw Lego Mindstorm. Łatwo jest żyć z językiem programowania - nie jest to Python - ale jest wystarczająco blisko. I to są prawdziwe roboty z prawdziwymi siłownikami i czujnikami.

+1

"Tania opcja" jest przypuszczalnie względna :) – XTL

11

Zdecydowanie spójrz na Arduino.

  • Konstrukcja sprzętowa jest open-source, więc można nawet zmontować własną rękę, jeśli chciał
  • Płyta zawiera wejść i wyjść cyfrowych i analogowych, więc łatwo jest dostać kilka diod LED miga szybko
  • zaprogramować go w „języku” zwanego Wiring który kryje wiele zawiłości C, który jest zwykle stosowany na PIC

po stronie PC, można następnie wykorzystać pyserial komunikować się z płyty na USB jak wspomniano powyżej

+0

+1: Za wzmiankę o Arduino. Próbowałem wymyślić to imię wcześniej i nie mogłem tego zapamiętać. Często wpadałem na pomysł, aby spróbować jednego z nich :-) –

2

Wiele komputerów ma jeszcze porty parellel, a moduł Pythona istnieje dla interacting with the parallel port, ale go nie używałem.

Port równoległy może być najprostszym sposobem rozpoczęcia sterowania sprzętem, ponieważ można do niego podłączyć najprostszą elektronikę. Tylko dioda dostarczy ci czegoś od razu.

Wtedy, jak wspomina Jon Cage, można dostać Pic programmer

+0

+1: Masz rację, port równoległy jest prawdopodobnie łatwiejszy w rozpoczęciu pracy. –

+0

Użyłem go. Uważaj, aby nie przeciążyć portu, który jest trudny do zastąpienia. Również porty równoległe USB często nie są. Są one zakodowane na stałe w celu zasilania drukarek z portem równoległym. – XTL

1

przystawki bezprzewodowych węzłów na www.synapse-wireless.com uruchomić podzbioru Pythona o nazwie sztuczki. Możesz użyć wbudowanych peek() i poke() w języku SNAPpy, aby bezpośrednio współpracować ze sprzętem wewnątrz chipu (na przykład PWM). SNAPpy ma również wbudowane funkcje I2C, SPI i serial, dzięki czemu można sterować zewnętrznym sprzętem. Ma również wbudowane wejścia I/O niższego poziomu, takie jak readPin() writePin() i readAdc(). Coś jak zestaw EK2500 może być dobry na początek. Zobacz także forum użytkowników online na forums.synapse-wireless.com

+0

Tylko cena jaką znalazłem: 180 USD. O tak, nawet dla devkit. – XTL

0

Nie jestem pewien, czy ktoś wspomniał o BASIC-owym znaczku. Znowu - jest bardzo ograniczony, ale jego SUPER jest prosty w obsłudze. Są tam również inne procesory, ale jako wprowadzające - myślę, że to świetne urządzenie.

Arduino też jest dobry, a prawdopodobnie można uzyskać więcej huków za to, że spieniężycie z tym urządzeniem.

Jak wspomniano powyżej, mam swój start na procesorach PIC - które nie są najłatwiejsze do pracy z początkowo (lub naprawdę nigdy ... haha ​​- jego debata), ale mam wielką wiedzę o tym, jak rzeczy działają w świat mikrokontrolerów/interakcji sprzętowych.

Powodzenia & Jeśli masz jakieś pytania, nie wahaj się zapytać!

+0

Również zacząłem na BASIC znaczek lat temu, ale myślę, że to słaba reprezentacja tego, co współczesne mikrokontrolery mogą zrobić. Nie wspominając już o tym, jak absurdalnie drogie są zestawy! –

4

Nowe urządzenia Raspberry Pi mają duży zakres wejść/wyjść, a Python wydaje się być najczęściej używanym językiem.