PeerTalk, BeagleBone y Raspberry Pi - 💡 Fix My Ideas

PeerTalk, BeagleBone y Raspberry Pi

PeerTalk, BeagleBone y Raspberry Pi


Autor: Ethan Holmes, 2019

Esta publicación se publicó originalmente en dos partes [1,2] en The Daily ACK del 25 de agosto de 20012. Se vuelve a publicar aquí en el sitio MAKE con permiso.

Encontré una excelente magia de Rasmus Andersson llamada PeerTalk. Es una biblioteca de Objective-C que le permite comunicarse entre su iPhone y su Mac a través del cable de conexión USB mediante sockets TCP.

Mi pensamiento inmediato fue que si esto realmente dependiera de tener la capacidad del modo host USB en el otro extremo, el mismo mecanismo debería poder usarse para hablar con algo como el BeagleBone o la Raspberry Pi, no solo tu Mac. Esto le permitiría conectar su teléfono directamente a la placa del microcontrolador y manejar el hardware directamente, como el cable Redpark pero sin pasar por el marco de accesorios externos de Apple.

Así que empecé a indagar dentro del código fuente para ver si dependía de algo que iba a ser específico de OS X, se hizo evidente que PeerTalk era en su mayoría un código de socket realmente agradable que se encuentra en la parte superior del USB Multiplex Daemon (usbmuxd). Este software está a cargo de hablar con su iPhone a través de USB y coordinar el acceso a sus servicios mediante otras aplicaciones. De hecho, esto es lo que iTunes y Xcode usan para hablar con su teléfono cuando lo conecta al puerto USB de su Mac.

Por lo tanto, cualquier dispositivo que quiera hablar con el iPhone utilizando este método necesitausbmuxd. Afortunadamente para mí, hay varias personas que han aprendido cómo hablar con el iPhone desde Linux, y hay unausbmuxd para linux

También hay otras dependencias que no están presentes en la distribución de acciones de Ångström Linux en mi BeagleBone, o incluso en paquetes a través deopkg, edificiousbmuxd en mi BeagleBone requierelibusb ycmake. Así que antes de construirusbmuxd, Tuve que construircmake, lo que significó resolver algunos problemas con las bibliotecas de compresión de valores que se envían con Ångström.

Sin embargo, varias horas después, después de esperar a que el software se construyera para convencerme de que antes de realizar un desarrollo serio en BeagleBone, realmente tenía que crear una cadena de herramientas ARMv7 en mi Mac para compilar las cosas en lugar de compilarlas directamente en el tablero ...

… Me las arreglé para conseguir un sencillo"Hola" desde mi iPhone a BeagleBone y luego a través depantalla a mi Mac usando el reenvío de puertos y ese antiguo modo de espera,telnet.

Mientras estaba trabajando duro para conseguir que esto funcionara, no estaba solo. David House estaba mirando algunos de los mismos callejones para que PeerTalk hablara con su Raspberry Pi, y resolvimos el problema en Twitter mientras esperábamos que el código se compilara hasta bien entrada la noche ...

Mientras trabajaba en un extremo, David estaba trabajando en el otro, organizando un cliente en la Raspberry Pi encima de usbmuxd eso hablaría de forma nativa con PeerTalk en iOS, al que llamó peertalk-python. Como teníamos el código fuente de ambos extremos, no fue tan difícil. Sólo lo suficientemente duro.

Si desea replicar esto en BeagleBone o Raspberry Pi, primero debe descargar y compilar la biblioteca PeerTalk, y luego compilar e implementar las aplicaciones de ejemplo de iOS y OSX y ponerlas en funcionamiento.

Entonces conecta y arranca tu BeagleBone. Necesitará alimentar la placa con un adaptador de red como cuando compila las cosas. Es posible que esté obteniendo suficiente amperaje para que su computadora apague el puerto USB para protegerse y, como resultado, apague su BeagleBone. Me sucedió esto un par de veces antes de sacar el adaptador de red del cajón de mi oficina. Sin embargo, ya que está alimentando la placa desde la red eléctrica, también tendrá que conectar un cable Ethernet para que puedassh [correo electrónico protegido] e inicie sesión en el tablero a través de la red.

1. Continúe e inicie sesión en su BeagleBone como root. 2. Descargar, construir e instalar.libusb. Version 1.0.9 construye, enlaza e instala bien. 3. Descargar, construir e instalarcmakeque necesitarás construirusbmuxd luego. Tendrá que tomar el último chequeo nocturno de Git ya que las versiones anteriores no se crean, por lo que tiene problemas con el stock.libbz2Compresión en el BeagleBone.

4. También necesitamoslibplistsin embargo, esto está disponible como parte del sistema de administración de paquetes en Ångström Linux, por lo que todo lo que necesita hacer para instalarlo es de tipoopkg instalar libplist-dev en el aviso

5. Descargar, construir e instalar.usbmuxd. La versión 1.0.8 se construye, vincula e instala bien, aunque es posible que se useCake y configurar a mano, en lugar de usarcmake ya que parece que no puede encontrar ellibusb incluir archivos que se instalaron en/ usr / local. 6. Crea unusbmux usuario

groupadd -r usbmux -g 114 useradd -r -g usbmux -d / -s / sbin / nologin -c “usuario de usbmux” -u 114 usbmux

7. Como BeagleBoard no tiene activado syslog de forma predeterminada, y lo necesitará para la depuración, activesyslogd del guión relevante en/etc/init.d.

8. Ejecutar elusbmux demonio, escribiendousbmuxd -v -ven el aviso 9. Conecte su iPhone al USB (lado del host) en su BeagleBoard, debería ver algunos pasos de depuración en/ var / log / messages.

10. Descargar la casa de Davidpeertalk-python y sus dependencias.

11. En su iPhone, inicie el cliente PeerTalk para iOS.

12. Inicia el cliente de Python en BeagleBone escribiendopython ./peertalk.py en el aviso

Escriba un mensaje cuando se le solicite, y debería ver algo como esto ...

Desde ahí es bastante trivial construir un"Hola Mundo" Por ejemplo, simplemente pirateando con el código de David y pulsando el LED de latido cuando BeagleBone recibe algún mensaje.

def run (self): framestructure = struct.Struct ("! IIII") ledOn = 'echo 1> / sys / class / leds / beaglebone :: usr0 / brightness' ledOff = 'echo 0> / sys / class / leds / beaglebone :: usr0 / brightness 'i = 0 while self._running: try: msg = self._psock.recv (16) if len (msg)> 0: frame = framestructure.unpack (msg) size = frame [3] msgdata = self._psock.recv (tamaño) imprime "Received:% s"% msgdata si i == 0: os.system (ledOn) i = 1 else: os.system (ledOff) i = 0 excepto: pass Lo que te lleva a este punto ...

Que es prácticamente donde he llegado ahora. Los siguientes pasos son una aplicación adecuada en el extremo de iOS con un control más genérico de los pines del encabezado de BeagleBone y un backend de Python más flexible en el propio BeagleBone. David House también logró que todo funcionara en Raspberry Pi.

Los únicos cambios en el procedimiento de configuración de BeagleBone es que debes agarrarlibplist utilizandoapt-get más bien queopkgy, como no se iniciará sesión como root, debe recordarsudousbmuxd -v -v cuando se inicia el daemon USB. Aparte de eso, deberías ser bueno para ir ...



Puede Que Le Interesen

Anatomía del coche inalámbrico Rolljam Hack

Anatomía del coche inalámbrico Rolljam Hack


Borg como yo: un extracto sobre la perseverancia

Borg como yo: un extracto sobre la perseverancia


Entrevista: NIcole Grimwood on Electronics (and Cake)

Entrevista: NIcole Grimwood on Electronics (and Cake)


Esta nueva impresora funciona en el vacío solitario del espacio exterior

Esta nueva impresora funciona en el vacío solitario del espacio exterior






Mensajes Recientes