Jeffrey Cross
Jeffrey Cross

PeerTalk, BeagleBone in Raspberry Pi

To delovno mesto je bilo prvotno objavljeno v dveh delih [1,2] na The Daily ACK 25. avgusta 20012. Ponovno je objavljeno na spletnem mestu MAKE z dovoljenjem.

Prišel sem k odličnemu čarovništvu Rasmusa Anderssona, imenovanega PeerTalk. To je knjižnica Objective-C, ki omogoča komunikacijo med telefonom iPhone in računalnikom Mac prek priključnega kabla USB prek vtičnic TCP.

Moja neposredna misel je bila, da če je to res odvisno samo od sposobnosti gostiteljskega načina USB na drugem koncu, mora biti isti mehanizem uporabljen za pogovor z nečim, kot je BeagleBone ali Raspberry Pi, ne le za vaš Mac. To bi vam omogočilo, da povežete telefon neposredno z mikrokontrolno ploščo in neposredno vozite strojno opremo, podobno kot kabel Redpark, vendar mimo Appleovega zunanjega ogrodja.

Zato sem začel kopati po izvorni kodi, da vidim, ali je odvisno od vsega, kar bo specifično za OS X, postalo je očitno, da je PeerTalk večinoma nekaj zelo lepe kode vtičnice, ki sedi na vrhu USB Multiplex Daemon (usbmuxd). Ta programska oprema je zadolžena za pogovor z vašim telefonom iPhone preko USB-ja in usklajevanje dostopa do njegovih storitev z drugimi aplikacijami. To je tisto, kar iTunes in Xcode uporabljata, da se pogovarjata s telefonom, ko ga priključite v vrata USB za Mac.

Torej vsaka naprava, ki želi govoriti z iPhone s to metodo potrebujeusbmuxd. Na srečo za mene obstaja veliko ljudi, ki so se ukvarjali s tem, kako govoriti z iPhoneom iz Linuxa, in tam je delovnousbmuxd za Linux.

Obstaja tudi nekaj drugih odvisnosti, ki niso prisotne na založbi Ångström Linux distribucije na mojem BeagleBone ali celo v paketih prekoopkg, stavbausbmuxd na mojem BeagleBoneulibusb incmake. Torej pred gradnjousbmuxd, Moral sem zgraditicmake, kar je pomenilo reševanje nekaterih težav z založniškimi knjižnicami, ki so bile dobavljene z Ångströmom.

Toda nekaj ur kasneje, potem ko je dovolj časa čakal na programsko opremo, da bi me prepričal, da sem pred resnim razvojem na BeagleBoneu resnično moral zgraditi ARMv7 toolchain na mojem Macu za navzkrižno zbiranje stvari, namesto da bi jih zgradil neposredno na plošči….

… Uspelo mi je narediti preprosto"zdravo" iz mojega iPhonea v BeagleBone in nato prekona zaslonu na Mac, ki uporablja pristaniško posredovanje in to staro pripravljenost,telnet.

Medtem, ko sem se vdrl od tega, da sem dobil to delo, nisem bil sam. David House je gledal nekaj enakih hrbtnih ulic, da bi se PeerTalk pogovarjal s svojim Raspberry Pi, zato smo težavo nadaljevali na Twitterju, medtem ko smo čakali, da se kodo prevede v noč ...

Medtem ko sem delal na enem koncu, je David delal na drugi strani, pri čemer je sestavil stranko na Raspberry Pi, ki je sedela na vrhu usbmuxd ki bo govoril naravnost na PeerTalk na iOS-u, ki ga je imenoval peertalk-python. Ker smo imeli izvorno kodo obeh koncev, ni bilo tako težko. Samo dovolj težko.

Če želite to ponoviti na BeagleBone ali na Raspberry Pi, morate najprej prenesti in zgraditi knjižnico PeerTalk, nato pa zgraditi in uvesti primere aplikacij iOS in OSX ter vzpostaviti in zagnati.

Nato se povežite in zaženite vaš BeagleBone. Plošča boste morali napajati z omrežno napajalno enoto kot pri prevajanju. Morda boste črpali dovolj jakosti toka, da bo računalnik izklopil vrata USB in se tako zaščitil, zaradi česar bo vaš sistem BeagleBone izključen. To se mi je zgodilo nekajkrat, preden sem končno izkopala napajalnik iz pisarniškega predala. Ker pa napajate ploščo iz električnega omrežja, boste morali priključiti tudi ethernetni kabel, da boste lahkossh [email protected] in se prijavite na tablo preko omrežja.

1. Pojdite naprej in se prijavite v svoj BeagleBone kot root. 2. Prenesite, zgradite in namestitelibusb. Version 1.0.9 gradi, povezuje in namesti v redu. 3. Prenesite, zgradite in namestitecmake,ki jih boste morali zgraditiusbmuxd kasneje. Najnovejšo Gitovo prevzemno naročilo boste morali zagrabiti, ko starejše različice ne bodo zgrajene, saj imate težave z delnicolibbz2stiskanje na BeagleBone.

4. Potrebujemo tudilibplist,vendar je to na voljo kot del sistema za upravljanje paketov na Ångström Linuxu, zato je vse, kar morate storiti, da namestite to vrstoopkg install libplist-dev ob pozivu.

5. Prenesite, zgradite in namestiteusbmuxd. Različica 1.0.8 gradi, povezuje in namešča v redu, čeprav se lahko uporabljateccmake in konfigurirajte ročno, namesto da bi ga uporabljalicmake, ker ni videti, da bi našellibusb vključujejo datoteke, v katere ste namestili/ usr / local. 6. Ustvarite ausbmux uporabnika

groupadd -r usbmux -g 114 useradd -r -g usbmux -d / -s / sbin / nologin -c »uporabnik usbmux« -u 114 usbmux

7. Ker BeagleBoard ni privzeto vklopljen syslog in ga potrebujete za odpravljanje napak, vklopitesyslogd iz ustreznega skripta v/etc/init.d.

8. Zaženiteusbmux deamon, s tipkanjemusbmuxd -v -vob pozivu. 9. Priključite vaš iPhone v (gostiteljsko) USB na vašem BeagleBoardu, videli boste nekaj pomikanja po debugu v/ var / log / messages.

10. Prenesite David Housepeertalk-python in njegove odvisnosti.

11. Na vašem iPhone-u zaženite odjemalca PeerTalk za iOS.

12. Zaženite Python odjemalca na BeagleBone s tipkanjempython ./peertalk.py ob pozivu.

V pozivu vnesite sporočilo in videli boste nekaj takega ...

Od tam je zelo nepomembno graditi a"Pozdravljen, svet" Na primer, samo z vdiranjem okrog z Davidovo kodo in preklapljanjem LED za utripanje srca, ko BeagleBone prejme kakršna koli sporočila.

def run (self): framestructure = struct.Struct ("! IIII") ledOn = 'echo 1> / sys / razred / led / beaglebone :: usr0 / svetlost' ledOff = 'echo 0> / sys / class / leds / beaglebone :: usr0 / brightness 'i = 0, medtem ko self._running: poskusite: msg = self._psock.recv (16), če len (msg)> 0: frame = framestructure.unpack (msg) size = frame [3] msgdata = self._psock.recv (velikost) print "Received:% s"% msgdata, če i == 0: os.system (ledOn) i = 1 drugo: os.system (ledOff) i = 0 razen: pass Kar vas pripelje do te točke ...

Kar je pravzaprav zelo veliko, kjer sem prišel. Naslednji koraki so ustrezna aplikacija na koncu stvari s sistemom iOS z bolj generičnim nadzorom igel glave BeagleBone in bolj prilagodljivim Pythonovim backendom na samem BeagleBone.David House je uspel vse narediti in delati na Raspberry Pi.

Edina sprememba v postopku nastavitve BeagleBone je, da morate zagrabitilibplist uporaboapt-get raje kotopkgin ker se ne boste prijavili kot koren, ne pozabitesudousbmuxd -v -v ko zaženete demon USB. Razen tega je dobro, da greste ...

Delež

Pustite Komentar