Centro de entretenimiento controlado por el iPhone (22 / 24 paso)

Paso 22: Software de Arduino

Hubo mucho debate sobre cómo exactamente el software entre Arduino y la aplicación para iPhone de la partición. Pero primero te voy a dar algunos antecedentes sobre el esquema que estamos utilizando.

El Arduino se conecta a nuestra red de casa wifi y configura un servidor inalámbrico. El iPhone se conecta al servidor y envía a algún tipo de información hasta el Arduino según entrada del usuario.

La razón por la que digo a "algún tipo de información" es porque en realidad hay dos tipos de comandos que podemos enviar, alto nivel y bajo nivel. Comandos de nivel bajo sería pulsar un botón diferente en un mando a distancia, como "encender la TV" o "encender el amplificador con el volumen del clic". Comandos de nivel alto son paquetes de estas funciones de bajo niveles, como "DVD de reloj". Este comando tiene que encender el reproductor de DVD, amplificador y TV, luego abra la unidad de disco DVD, establece el amplificador en el modo correcto, luego ajustar el TV a la configuración de entrada correcta, también debe comprobar para asegurarse de que el volumen del amplificador está en un nivel razonable, etc.. Hay un montón de información y comandos en "Watch DVD". Y por lo tanto, la pregunta es: ¿envía comandos de alto niveles para el Arduino, y entonces el software de Arduino rompe estos comandos en todos los comandos de bajo niveles separados? O por el contrario, ¿hacer todo de la ruptura en los comandos de bajo niveles en la aplicación para el iPhone y enviar los comandos de bajo niveles individuales hasta el Arduino, que sólo ejecuta?

Otra pregunta es la siguiente. Cada comando de bajo nivel tiene una lista de ~ 200 dígitos de números correspondientes a un código PWM para el LED IR que es realmente responsable de transmitir esa información a cualquier dispositivo de medios de comunicación que estamos hablando. ¿Nos guarde esta lista en el Arduino o aplicación para el iPhone? (más sobre este tipo de señal más adelante en este paso).

Sería lo más fácil y más eficiente para almacenar todo en el Arduino. Así, sólo tenemos que enviar una pequeña cantidad de información sobre wireless, ya que Arduino hace todo el proceso, sería fácil controlar todo, desde una página web al igual que el iPhone de la bobina (si el iPhone fue enviar comandos de nivel bajo sobre wireless, entonces la página tendría que hacer lo mismo y sería engorroso utilizar).

Sin embargo, el Arduino Uno sólo tiene aproximadamente 32 kb de memoria a bordo (originalmente utilizábamos un Uno antes de pasar a Mega). Hay un lector de tarjetas micro SD en la pantalla de Wi-Fi y estábamos planeando sobre el uso para almacenar algunos de los datos de desbordamiento, pero no pudimos conseguirlo trabajando.

El Arduino Mega tiene muchísima más memoria, alrededor de 128 kb, pero tratamos de usar para controlar los LEDs IR y no funcionaba. Hemos rastreado el problema al bucle en el código que genera la frecuencia de la portadora por la señal de infrarrojos. Me explico cómo la señal realmente es generada y transmitida:

Actúa mucho como una radio AM. IR LED parpadea en una cierta frecuencia de la portadora (32 kHz) y luego hay una onda cuadrada sobrepuesta sobre eso que realmente lleva la información. Las listas que estamos utilizando para almacenar la información de comando buscar algo como [300, 50, 200, 60]. Esto significa activar la frecuencia portadora de 300 milisegundos, luego apague por 50, luego encenderla para 200 y apagado por 60. Cada señal de mando es realmente cerca de 50 de estos comandos 'on-off'.

Ahora, para generar una señal como esta con Arduino, necesita una función que salidas de la frecuencia portadora y entonces otra función que llama a la función de portador en el momento correcto y por la duración correcta. Puesto que todas estas cuestiones de sincronización tienen tan alta resolución, también es necesario llamar a una función que indica el Arduino no se que hacer nada en absoluto durante este proceso, asegurando que el momento es muy preciso. De lo contrario, la señal no pudiera ser reconocida por cualquier dispositivo que usted apuntó, como un reproductor de DVD por ejemplo.

Como dije, el problema que encontramos en el cambio de Uno a Mega fue en función de la frecuencia de la portadora. Esta función tiene unos comandos de escritura digital que realmente generan la señal, pero también tiene retrasos de un par por lo que en términos generales, la función se ejecuta en la frecuencia correcta. Ahora, un comando de escritura digital en un Uno realmente toma aproximadamente 3 milisegundos para ejecutar, para esto debe factor en cuando debería ser la determinación de cómo los retrasos. Sin embargo, un comando de escritura digital en un Mega tarda un poco más, y así, cuando ponemos el código de Uno en la Mega, fuimos generando una frecuencia incorrecta! Gracias a mi papá que lo había averiguado.

Así, con este problema, hemos sido capaces de cambiar al uso de un Mega. Esto fue genial porque no sólo nos dio toda la memoria que necesitábamos (esperamos) almacenar todos lo comando de nivel bajo se descomponen y otra lógica en el Arduino, pero también nos dio más pines para trabajar con.

Artículos Relacionados

Centro de entretenimiento para juego de cocina impresionante

Centro de entretenimiento para juego de cocina impresionante

Para el año 2015 de Navidad que quería hacer uso de mis habilidades creativas para preparar un regalo realmente impresionante para mis jóvenes sobrinos y sobrinas. Mi familia siempre ha tenido una pasión por la cocina y los jóvenes parecen preparados
Inicio de automatización (o Robot mayordomo llamado Geoffrey) - controlado por iPhone, basado en arduino

Inicio de automatización (o Robot mayordomo llamado Geoffrey) - controlado por iPhone, basado en arduino

poder controlar todo desde su bolsillo ha sido un sueño compartido por muchos. Anteriormente hemos tenido mandos a distancia universales que pueden tanto controlar nuestros televisores y radios, luego tuvimos tomas de corriente inalámbrica. ¿Tanto gr
Drone controlado por voz

Drone controlado por voz

Este Instructable le guiará a través de cómo hacer un robot controlado por voz. Si tienen experiencia en codificación y quisiera intentar la codificación de la interfaz de la aplicación desde cero, habrá varios pasos para ayudar a guiarte en el camin
El Hexachord, un instrumento Musical controlado por Arduino

El Hexachord, un instrumento Musical controlado por Arduino

El año pasado, con la fecha límite de la zona de Bahía Maker Faire, he creado un nuevo instrumento llamado el Hexachord. Era un montón de diversión, un gran éxito, y he tenido la oportunidad de hacer una serie de conversaciones sobre ello. El desafío
Pizarra: el simple, minimalista y personalizable centro de entretenimiento.

Pizarra: el simple, minimalista y personalizable centro de entretenimiento.

Empieza bastante fácil: un muchacho, construcción de muebles con su padre. Bueno, queríamos construir muebles, pero todo que hizo fue construir uno terriblemente edificara rolling gabinete.Diez años más tarde, frente a un repugnante, sucia sala de es
Centro de entretenimiento de plataforma

Centro de entretenimiento de plataforma

Por lo que durante mucho tiempo yo quería mostrar mis consolas de videojuegos con un centro de entretenimiento. He buscado en internet y encontrar ideas que la gente compró estantes IKEA y punta en sus lados. Pero realmente no tenía dinero para compr
Controlado por Arduino lobo cola

Controlado por Arduino lobo cola

saludos, o mejor dicho, "Aaaaaooooooooooooh"! Complace en hacer su entusiasta compañero lobo de acquaintence. Tienes un espíritu lobo interior que es por lo que deseoso de darse a conocer que han venido a aprender a hacer tu cola de lobo animatr
Impresión 3D: hacer Servo controlado por válvulas de

Impresión 3D: hacer Servo controlado por válvulas de

Válvulas servo pequeño y confiable controlado pueden ser fácilmente impreso 3d. Son adecuados para el control de aire o agua y todo tipo de proyectos de robot.Porque usan micro-servos RC estándar, puede controlarse por una configuración estándar de r
Centro de entretenimiento de madera contrachapada de montado de pared

Centro de entretenimiento de madera contrachapada de montado de pared

con este instructable tuve un poco de entretenimiento dinky centro y quieren ed uno más grande. Miré los precios por suma de las que quería comprar pero escandalosamente se precio... así que decido hacer mi propia.Paso 1: construir la base así que la
Actualización centro de entretenimiento para TV de pantalla plana

Actualización centro de entretenimiento para TV de pantalla plana

El reto:Tenía un centro de entretenimiento nuevo comprado en 2004. Me gustó el estilo, pero no acomodaría de una televisión de más de 35 pulgadas de ancho. Esto no funcionó en el nuevo mundo de televisores de pantalla plana grande. En 2008, decidió o
Centro de entretenimiento de pantalla grande

Centro de entretenimiento de pantalla grande

centro de entretenimiento de pantalla grande:Tiene una ubicación para los siguientes equipos / artículos.65 pulgadas de televisor de pantalla grandeAltavoces de torreSub WooferAltavoz centralReceptor estéreo5 CD / Reproductor de discos de láserReprod
Robot de telepresencia controlado por Internet

Robot de telepresencia controlado por Internet

En este tutorial le mostrará cómo construir un Robot de telepresencia controlado por Internet con un brazo robótico para menos de $100.Paso 1: Materiales básicos Para este tutorial, hay algunas imprescindibles:1. una placa Arduino (estoy usando la Ar
12 pieza de centro de entretenimiento

12 pieza de centro de entretenimiento

12 pieza centro de entretenimientoDiseñado y construido por:Mike V.El centro de ocio de 12 piezas puede mantener las cosas organizadas y fuera del camino mientras todavía fácilmente accesible. Toma un poco de una inversión de tiempo y dinero pero sir
Centro de entretenimiento con altavoces flotantes con agujero de ocultación

Centro de entretenimiento con altavoces flotantes con agujero de ocultación

Para cualquier persona con un sistema de cine en el hogar un centro de entretenimiento es una gran manera de organizar y mostrar sus diversos componentes. Sin embargo, el problema que tuve fue encontrar uno que encajaría en el poco espacio que tenía