Servidor Web de RC salida de frecuencia dual (4 / 5 paso)

Paso 4: Software

Software. Me encanta. Estado haciendo profesionalmente por más de 30 años. En tiempo real. Control de vuelo. Simulaciones. Aplicaciones de negocios. Aplicaciones científicas. Me encanta em todos. Dicho esto, para mis proyectos caseros, pasé mucho más de mi esfuerzo en el hardware que el software. Esto es un hobby y lo hago para relajarse después de escribir software durante todo el día. El software para este proyecto podría ser más completa, robusta y bonita pero eso no es lo estoy buscando para gastar mi tiempo en un proyecto de inicio.

Interfaz de usuario

Puesto que este proyecto está construido alrededor de un ESP8266-12, entonces la solución obvia para la interfaz de usuario es un conjunto de páginas web. No hacer nada fancy, apenas lanzó juntos algunos HTML5, CSS y Javascript en Kate. Esta fue mi primera vez usando la ESP8266 para otra cosa que un ejemplo trivial y hubo algunas peculiaridades y dificultades que tuve que tropezar mi manera a través antes de todo trabajo.

Yo no había escrito el código HTML en más de diez años y quería probar HTML5. Para evitar que la parte trasera y adelante de escribir, compilar y cargar en el ESP8266, mi primer prototipo todo las páginas web en mi laptop usando el módulo de python SimpleHTTP como un servidor. Esto me dio vuelta muy rápido mientras yo había derribado el moho HTML.

En las fotos, se puede ver que la Página principal es una lista de dispositivos conocidos y botones para seleccionar o deseleccionar y darles vuelta encendido o apagado. También hay botones que llevará a las páginas para definir un dispositivo nuevo o editar uno ya existente.

Para definir un nuevo dispositivo, utilice el botón "Grabar 315" o el botón "Grabar 434". Esperamos que usted sabe qué frecuencia utiliza su unidad pero si no, sólo tratas de uno y luego el otro. Si elige el mal uno primero, no podrá ver una señal, así que no hay daño hecho.

El entorno de desarrollo

El código para este proyecto está escrito en C++ usando las bibliotecas de Arduino y compilado y cargado con la interfaz de línea de comandos de Arduino.

Como un desarrollador de C++ por día, es mi idioma preferido en el país. Me metí primero en sistemas integrados a nivel de aficionado hace dos años con la plataforma que la gente ya sea de amor o de odio - el Arduino Uno. Como cada otro programador profesional que ha usado el IDE de Arduino por más de cinco minutos, rápidamente busqué otra solución. Después de probar los Makefiles disponibles y el plug-in de Eclipse, terminé con Kate y un script en python para invocar la interfaz de línea de comandos de Arduino. Eso me permitió a zanja su IDE en conjunto y me ha hecho mucho más feliz.

Antes de que hay todavía otro Debate sin sentido sobre si el Arduino es un ecosistema adecuado para trabajar con, permítanme señalar que hay tres cosas muy agradables de trabajar con ese conjunto de herramientas:

  • La riqueza de las bibliotecas de código abierto para interactuar con componentes de hardware diferentes
  • La capacidad de integrar juntas no Arduino (como ESP8266) en su sistema de construcción
  • Una abstracción del hardware de la capa que permite programar (más o menos) independientemente el microcontrolador específico se utiliza.

Sí, sé que mucha gente muy vocal sobre el ecosistema de Arduino con desdén y afirmar que cualquier persona que no programa directamente a la interfaz de hardware específico y escribir cada biblioteca desde cero no es un programador Real. No estoy de acuerdo pero ya que ese tema ha sido vencer a la muerte hace mucho tiempo, los debates pueden enviarse a/dev/null.

Prototipos funcionales

Todos mis prototipos inicial fue realizada en un Arduino Uno conectado a mi laptop y usando serie para leen comandos desde el teclado e imprimir resultados a la pantalla. Esto me permitió centrarse en cómo leer, almacenar y reproducir los comandos RF sin conseguir empantanado por problemas con el WiFi y la interfaz web.

* Punta pro * - desde el principio, escribí la lógica de base como un conjunto de clases independientes totalmente independientes de cualquier usuario interfaz era utilizado por el conductor de la prueba. Mientras era prototipos, I leer comandos desde el teclado, los analiza, invoca los métodos apropiados de mi código de la biblioteca y muestra resultados en la pantalla. Cuando me mudé a una interfaz basada en web en la ESP8266, la biblioteca se deslizó a la derecha en ya que no tiene dependencias en la interfaz de usuario. Parámetros de configuración como pin GPIO asignaciones se pasan como parámetros del constructor a la clase de biblioteca de nivel superior. En el archivo fuente principal (.ino en Arduino-tierra), hay una serie de #ifdefs que éstos correctamente en función del tipo de junta para que estoy recopilando configurar.

Cuando se recibe una orden, el software se convierte en el apropiado hardware RF (315 receptor, transmisor de 315, 434 receptor o transmisor 434) utilizando el transistor atado a cada una de esas unidades. Espera un poco de tiempo para asegurar que el hardware esté encendido y luego envía un comando o escucha un comando entrante.

Seguridad

Ninguno. Esto no se expone fuera de mi red local así que me puse vago interés de pasar tiempo con mi familia. Honestamente, si usted decide busto a través de mi firewall y lo único que tienes que para hacer es encender mis luces de Navidad y apagado varias veces, bueno... puede que no sea listo para anónimo bastante todavía.

Próxima temporada de vacaciones, puedo añadir una lista blanca de MAC y algunas credenciales de usuario rudimentaria. También pensé en Agregar poco de lógica que te bloquea por un tiempo si tratas de emitir más de comandos N en una hora. Por ahora, está desconectado, por lo que es bastante seguro.

Reutilización de software

Como ya he mencionado, poder volver a utilizar las bibliotecas existentes es una productividad enorme. Para este proyecto, hay dos bibliotecas en particular que hice usan de.

RCSwitch - biblioteca de Arduino para los interruptores de salida de control remoto

Esta biblioteca (http://code.google.com/p/rc-switch/) hace muy simple interfaz con transmisores y receptores RF. Termino modificando algo pesadamente para adaptarse a mi particular necesita pero fue un gran punto de partida y me mostró las respuestas que necesitaba para hacer las cosas de trabajo.

ESP8266WebServer - muerto simple servidor web

Este código de Ivan Grokhotkov es un buen punto de partida para escribir un simple servidor Web.

Si he visto mas allá, es por que está parado en los hombros de gigantes. -Isaac Newton

Que cita es un poco pretenciosa para un proyecto tan mundano pero creo que es importante reconocer el trabajo de otras personas que hacen este software mucho más simple de lo que la escritura habría sido de otra manera. Gracias.

Artículos Relacionados

Configurar su propio servidor Web! ¿

Configurar su propio servidor Web! ¿

Alguna vez has querido tener un lugar donde podía guardar sus archivos y acceder a ellos en cualquier lugar tienes una conexión a Internet? Decir que quisiera tener tu biblioteca de música disponible en caso de que usted quiso darle una canción a uno
DIY Arduino y frambuesa Pi estación y servidor web

DIY Arduino y frambuesa Pi estación y servidor web

Este es un proyecto que llevará la temperatura usando el sensor de temperatura TMP36 IC y una placa Arduino . Esta información será envía en serie a la Frambuesa Pitablero de edición de una página web que el Raspberry Pi es anfitrión de sí mismo. Par
[Domótica] Versión 2: Compruebe la etiqueta RFID utilizando servidor web simple.

[Domótica] Versión 2: Compruebe la etiqueta RFID utilizando servidor web simple.

Este contenido es Wizwiki-W7500 RC522 RFID + servidor Web.IDE es compilador de web de mbed para ARM.La misión de este proyecto es comprobar la etiqueta RFID utilizando servidor web simple.Paso 1: Descripción-Usted necesita piezas debajo de lista1. RF
ESP8266 servidor Web que sirve varias páginas

ESP8266 servidor Web que sirve varias páginas

Con NodeMCU, el ESP8266 puede servir fácilmente una página web.En su forma más simple, el servidor responde a una solicitud mediante el envío de nuevo ' cliente: send() una línea a la vez para cada línea en la página.Esto funciona. Sin embargo si ust
Convirtiendo su frambuesa Pi en un servidor web personal

Convirtiendo su frambuesa Pi en un servidor web personal

lámpara es un acrónimo que significa LinuxApacheMySQLPHP y son componentes necesarios para ejecutar una página web HTML dinámico.Este instructable demostrará cómo puede convertir su frambuesa Pi en un servidor web personal. Los pasos para instalar to
Arduino wifi redback servidor Web ejemplo

Arduino wifi redback servidor Web ejemplo

Un arduino wifi Redback puede utilizarse como un servidor Web. El ejemplo de servidor Web de redback de wifi está disponible en la biblioteca de CuHead nos muestra perfectamente cómo hacerlo. Voy a guiarte a través de él para que usted pueda entender
Cómo probar tu propio servidor web frente a vulnerabilidades en mysql

Cómo probar tu propio servidor web frente a vulnerabilidades en mysql

Si eres un programador que debe cuidar de la seguridad de su código y servidores. Este instructable muestra cómo funciona una inyección mysql y lo que puede hacer para evitar que su propio código a otros fines que usted espera.Después de leer esto, c
Cómo construir su PC Media Center, servidor web, archivos de intercambio

Cómo construir su PC Media Center, servidor web, archivos de intercambio

Este tutorial le a cómo construir un PC para instalar mi media center, servidor web, compartir archivos.Para mí lo utilizare para hacer un centro de medios de comunicación.¿Qué necesita? :Mini o mid towerTablero de madreProcesadorMemoria RAMPara mi u
Temperatura y humedad Datalogger + servidor Web

Temperatura y humedad Datalogger + servidor Web

en este instructable (mi primer instructable) vamos a crear una temperatura y humedad datalogger añadiendo la posibilidad de acceder a los datos por web.El nuevo arduino ethernet lo hace todo tan fácil que parece magia. En la misma Junta se obtiene:
La parte de ESP8266 2 - servidor Web de Arduino

La parte de ESP8266 2 - servidor Web de Arduino

En mi anterior instructable las ESP8266 parte 1 - serie WIFI módulo para Arduino, intenté describir lo que es, la conexión, prueba y configurar la ESP8266 (vamos a llamarlo ESP para el cortocircuito). Aquí hacemos un resumen sobre cómo el ESP a puede
Frambuesa Pi - servidor Web / Wireless Access Point (WAP)

Frambuesa Pi - servidor Web / Wireless Access Point (WAP)

Lo que usted necesitaFrambuesa Pi modelo B + (o B) con fuente de alimentaciónCable EthernetAdaptador WiFiTarjeta SD 4GB + con RaspbianPreparaciónEste tutorial completo se supone que tiene su Pi ya configurado y listo para ir. Si no está listo/prepara
Servidor Web DIY con Arduino Mega 2560

Servidor Web DIY con Arduino Mega 2560

en este proyecto de bricolaje, vamos a hacer nosotros mismos un servidor web pequeño con W5100 escudo y arduino mega 2560,Vamos a conseguir nosotros mismos iniciado,Preparar todas las piezas...Paso 1: Las piezas necesarias para este DIY 1. Arduino Me
NodeMCU Temp con servidor Web

NodeMCU Temp con servidor Web

NodeMCU Temp con servidor Webes más fácil pensar:usted necesita una configuración preparada para el arduino IDE.Paso 1: Instalación simple y fácil: Necesita conectar su TempSensor correcta! Siempre se mira dos veces! Porque el ESP no es 5V ambiente :
NodeMCU acceso a bordo de LED a través de servidor web

NodeMCU acceso a bordo de LED a través de servidor web

El ESP8266 es el dispositivo en el mercado de bricolaje. Ha traído una agradable gran tormenta en la comunidad de aficionados. Junto con GPIOs, un ADC, SPI interfaz, UART interface (y por supuesto la parte de WiFi)... tiene todas las características