Formas de controlar Arduino a través de Internet. Arduino: mando a distancia por infrarrojos y receptor. Boceto de control de brillo de la tira LED Arduino

El control remoto por infrarrojos es uno de los más maneras simples interacción con dispositivos electronicos. Entonces, en casi todos los hogares hay varios de estos dispositivos: TV, centro de musica, reproductor de vídeo, aire acondicionado. Pero lo mas interesante aplicación control remoto por infrarrojos: control remoto del robot. De hecho, en esta lección intentaremos implementar este método de control utilizando el popular controlador Arduino Uno.

1. control remoto por infrarrojos

¿Qué se necesita para enseñarle a un robot a obedecer un control remoto por infrarrojos (IR)? Primero, necesitamos el propio control remoto. Puede utilizar un control remoto de TV normal o puede comprar un control remoto en miniatura para la radio de su automóvil. Este tipo de mandos a distancia se suelen utilizar para controlar robots.

Este control remoto tiene 10 botones digitales y 11 botones para manipular la música: volumen, rebobinar, reproducir, detener, etc. Más que suficiente para nuestros propósitos.

2. sensor de infrarrojos

En segundo lugar, para recibir una señal del mando a distancia necesitamos un sensor de infrarrojos especial. En general, podemos detectar la radiación infrarroja con un fotodiodo/fototransistor convencional, pero a diferencia de este, nuestro sensor IR percibe la señal infrarroja sólo a una frecuencia de 38 kHz (a veces 40 kHz). Es esta propiedad la que permite que el sensor ignore una gran cantidad de ruidos de luz extraños provenientes de las lámparas y del sol.

Para este tutorial usaremos el popular sensor IR. VS1838B, que tiene las siguientes características:

  • frecuencia portadora: 38 kHz;
  • tensión de alimentación: 2,7 - 5,5 V;
  • Consumo de corriente: 50 µA.

Se pueden utilizar otros sensores, por ejemplo: TSOP4838, TSOP1736, SFH506.

3. Conexión

El sensor tiene tres cables (tres patas). Si miras el sensor desde el lado del receptor de señal IR, como se muestra en la figura,

  • luego a la izquierda habrá una salida al controlador,
  • en el centro - contacto de potencia negativo (tierra),
  • ya la derecha, el contacto de alimentación positivo (2,7 - 5,5 V).

Diagrama esquemático de conexión.

Aspecto del diseño

4. Programa

Una vez conectado el sensor de infrarrojos, escribiremos un programa para Arduino Uno. Para hacer esto, usaremos la biblioteca estándar. IRremoto, que está diseñado específicamente para simplificar el trabajo de recepción y transmisión de señales IR. Usando esta biblioteca, aceptaremos comandos del control remoto y, para empezar, simplemente los mostraremos en la ventana del monitor. puerto serie. Este programa nos será útil para entender qué código da cada botón.

#incluye "IRremote.h" IRrecv irrecv(2); // indica el pin al que está conectado el receptor decode_results results; void setup() ( Serial.begin(9600); // establece la velocidad puerto COM irrecv.enableIRIn(); // comenzar a recibir ) void loop() ( if (irrecv.decode(&results)) ( // si llegaron los datos Serial.println(results.value, HEX); // imprimir los datos irrecv.resume(); // aceptar el siguiente equipo ) )

Cargue el programa en Arduino. Después de eso, intentamos recibir comandos del control remoto. Abra el monitor del puerto serie (Ctrl+Shift+M), levante el control remoto y apúntelo al sensor. Al presionar diferentes botones, observamos los códigos correspondientes a estos botones en la ventana del monitor.

Problema al cargar el programa

En algunos casos, al intentar cargar un programa en el controlador, puede aparecer un error:

TDK2 no fue declarado en su alcance

Para solucionarlo, simplemente elimine dos archivos de la carpeta de la biblioteca. Vayamos al explorador. Vaya a la carpeta donde está instalada la aplicación. IDE de Arduino(lo más probable es que sea “C:\Program Files (x86)\Arduino”). Luego a la carpeta de la biblioteca:

…\Arduino\bibliotecas\RobotIRremote

Y borra los archivos: IRremoteTools.cpp Y IRremoteTools.h. Luego, reiniciamos el IDE de Arduino e intentamos cargar el programa en el controlador nuevamente.

5. Controle el LED usando el control remoto IR

Ahora que sabemos qué códigos corresponden a los botones del control remoto, intentamos programar el controlador para que encienda y apague el LED cuando se presionan los botones de volumen. Para ello necesitamos códigos (pueden variar según el mando a distancia):

  • FFA857 - aumentar el volumen;
  • FFE01F - disminuir el volumen.

Como LED utilizamos el LED incorporado en el pin No. 13, por lo que el diagrama de conexión seguirá siendo el mismo. Entonces, el programa:

#incluye "IRremote.h" IRrecv irrecv(2); // indica el pin al que está conectado el receptor decode_results results; void setup() ( irrecv.enableIRIn(); // comenzar a recibir ) void loop() ( if (irrecv.decode(&results)) ( // si llegaron los datos switch (results.value) ( ​​caso 0xFFA857: digitalWrite( 13, ALTO); descanso; caso 0xFFE01F: digitalWrite(13, BAJO); irrecv.resume();

Lo subimos a Arduino y lo probamos. Hacer clic volumen+— el LED se enciende. Hacer clic vol-- sale. Ahora, sabiendo cómo funciona todo, ¡puedes controlar motores de robots u otros dispositivos microelectrónicos caseros en lugar de un LED!


Buenas tardes a todos.
Hace aproximadamente un año escribí uno pequeño usando el servidor NinjaBlocks. Fue bastante bueno y solución conveniente y funcionó muy bien hasta que un día hubo problemas de conexión. Los intentos de persuadir a los desarrolladores a través del foro para que resolvieran los problemas fueron en vano: simplemente ignoraron mis solicitudes y ni siquiera se molestaron en responder, lo cual fue muy triste.

A partir de ese momento, se escaneó todo Internet en busca de un sustituto, y se encontraron muchos. proyectos interesantes, pero eran demasiado complejos de implementar y requerían importantes conocimientos de programación, o simplemente eran inconvenientes. Y aquí surgió la idea: ¿por qué no hacerlo todo tú mismo?

Por supuesto, realmente quería usar los protocolos modernos de transferencia de datos websockets o mqtt, que me permitirían controlar todos los procesos en tiempo real, pero si las cosas iban bien con el cliente Arduino, la presencia de buenas bibliotecas me agradaba, entonces con el servidor. Las cosas secundarias fueron peores: servidores con soporte. protocolos necesarios, que un proveedor de alojamiento habitual no tenía. Pero no quería iniciar mi propio servidor sólo para encender un LED. Y la elección recayó en el viejo http.

1. Cómo funciona todo.

Tenemos:
- un servidor php ubicado en un alojamiento vinculado a nombre de dominio
- cliente en forma de arduino
- Panel de control

Arduino se conecta al servidor y envía OBTENER solicitud, que contiene los valores de los sensores de temperatura.

El servidor acepta la solicitud y escribe los valores de temperatura en archivos de texto. Al mismo tiempo lee de archivo de texto el valor de la salida establecida para arduino y lo envía en respuesta a la solicitud del controlador.

Arduino recibe una respuesta del servidor y según ella establece el estado de su salida

El panel de control, utilizando Ajax, lee el valor de temperatura de archivos de texto y actualiza las lecturas del sensor. También lee el estado de salida del archivo de texto y lo actualiza en la página. Usando el mismo Ajax, el valor de salida del controlador se escribe en un archivo de texto a través de un formulario, desde donde el servidor tomará el valor y lo enviará al controlador.

2. Cliente en Arduino

El boceto es bastante simple; lo único que hace es recopilar los valores de los sensores y enviarlos al servidor, recibir una respuesta y habilitar o deshabilitar la salida.

#incluir
#incluir
#incluir
#incluir

#definir ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
Sensores de temperatura de Dallas (&oneWire);

byte mac = (0x54, 0x34, 0x41, 0x30, 0x30, 0x31);

Cliente cliente Ethernet;
servidor de caracteres = "***************"; // el nombre de tu servidor
mejora int = 0;
constante int led = 5;

configuración nula()
{
Ethernet.comenzar(mac);
sensores.begin();
pinMode(led, SALIDA);
escritura digital (led, BAJO);
}

bucle vacío()
{

Sensores.requestTemperatures();

Si (cliente.connect(servidor, 80))
{

cliente.print("GET /add_data.php?");
cliente.print("temperatura=");
cliente.print(sensores.getTempCByIndex(0));
cliente.print("&");
cliente.print("&");
client.print("temperatura1=");
cliente.print(sensores.getTempCByIndex(1));
cliente.println("HTTP/1.1");
cliente.print("Host: ");
cliente.println(servidor);
client.println("Conexión: cerrar");
cliente.println();
cliente.println();

Mientras(cliente.disponible())
{
char c = cliente.read();
si (c=="1")
{
mejora = 1;
}
si (c=="0")
{
mejora = 0;
}
}
cliente.stop();
cliente.flush();
retraso(100);
}
demás
{
cliente.stop();
retraso(1000);
cliente.connect(servidor, 80);
}

si (mejora==1)
{
escritura digital (led1, ALTO);
}
demás
{
escritura digital (led1, BAJO);
}
retraso(500);
}

3. Servidor y panel de control

El servidor consta de sólo unos pocos archivos:


index.php- Panel de control
agregar_datos.php- un archivo que procesa las solicitudes del controlador y envía la respuesta a arduino
estilo.css- define apariencia paneles
Carpeta de transferencia- contiene archivos con cuya ayuda se leen y escriben valores desde archivos de texto.
led.php- escribe el estado de salida en el archivo out-1.txt, enviado a través del formulario en el panel de control
ledstate.php- lee el estado del archivo de texto out-1.txt y lo muestra en el panel como "ON" o "OFF"
temp-1.php Y temp-2.php- leer los valores de temperatura de los archivos in-1.txt e in-2.txt y enviarlos al panel de control.
carpeta de texto- una especie de base de datos para almacenar información.

El servidor es realmente muy simple y cualquiera con conocimientos mínimos, como yo, por ejemplo, puede instalarlo. Antes de trabajar en este proyecto, solo tenía experiencia trabajando con arduino, por lo que tuve que aprender php, ajax, html y css literalmente desde cero.

La instalación es muy sencilla. Simplemente copie los archivos al servidor y cargue el boceto en el controlador, corrija el nombre de dominio en el boceto, conecte los sensores y el LED y todo debería funcionar para usted.

Estoy seguro de que los programadores experimentados me patearán y meterán la nariz en aquellos lugares donde el código podría escribirse de manera más concisa y correcta. ¡¡¡Solo doy la bienvenida a esto!!!
Si ves que algunas cosas se pueden hacer más fácil y rápido, dímelo.

¿Con qué terminamos?

Ventajas:
- todo es simple y claro
- se puede personalizar para adaptarlo a sus necesidades y tareas
- buena estabilidad
- el servidor se puede implementar en cualquier alojamiento gratuito

Contras:
- gran número solicitudes al servidor (es posible que a algunos proveedores de alojamiento no les guste esto, en este caso es necesario aumentar la pausa entre solicitudes en el boceto)
- consume mucho tráfico del lado del cliente (con 1 solicitud por segundo, aproximadamente 300 MB por día)
- hay un ligero retraso en el encendido de las salidas (puede ser crítico en algunos casos)

Planes futuros:
- agregar un botón en el controlador para encender y apagar el relé con un cambio de estado en el servidor
- agregar autorización
- agregar claves de identificación en las solicitudes
- organizar el funcionamiento de varios tableros simultáneamente con un panel de control
- agregar confirmación del controlador de que la salida está activada
- Realmente me gustaría usar el protocolo websockets o mqtt, pero todavía me inclino por usar websockets usando socket.io

Quizás, si hay interés, escriba un artículo sobre control a través de Internet. módulo wifi esp8266. Ya lo probé con éxito y me aseguré de que todo funciona, aunque hay algunos matices en el funcionamiento.

Y si hay suficientes personas interesadas, escribiré un artículo detallado donde veremos cómo agregar nuevos bloques con sensores y controlar salidas adicionales al panel de control.

Cualquiera puede visitar la página de mi servidor y comprobarla en acción.
!!! Para cambiar la salida del controlador, coloque un marcador en valor deseado y haz clic en "ENVIAR"!!!

Mira el vídeo

¿Alguna vez pensaste en controlar algún dispositivo electrónico usando tu teléfono inteligente? De acuerdo, sería genial controlar un robot o cualquier otro dispositivo desde su teléfono inteligente. Ofrecemos una lección sencilla para principiantes y principiantes sobre cómo controlar un teléfono inteligente usando Arduino a través de Bluetooth. Si después de esta lección quieres conocer mejor Arduino, puedes encontrar libros al respecto.

Dispositivos

Módulo - Módulo Bluetooth HC 05/06
Placa - Arduino
Diodo emisor de luz (LED)
Resistencia - 220Ω
dispositivo Android

Software

IDE de Arduino
Android Studio (en realidad no es necesario, porque encontrará la aplicación de Android a continuación)

Paso 2. Cómo funciona

Normalmente este paso lo hacemos al final, pero para que entiendas lo que tenemos que conseguir mira el resultado aquí paso intermedio. También hemos publicado un vídeo tutorial paso a paso a continuación.

Paso 3. Comenzamos a montar el circuito.

El circuito de nuestro tutorial es tan simple y pequeño que sólo necesitamos hacer unas pocas conexiones:

Pines Arduino___________ Pines del módulo Bluetooth
RX (Pin 0)_________________________TX
TX (Pin 1) ___________________________RX
5V________________________VCC
GND_______________________GND

Conecta el negativo del LED a GND del Arduino y el positivo al pin 13 mediante una resistencia de 220 Ohm - 1 kOhm. En general, en nuestra figura siguiente todo está bastante claro.

No conecte las salidas Bluetooth RX a RX y TX a TX a las salidas Arduino, no recibirá ningún dato, aquí TX significa transmitir, RX significa recibir.

Ahora necesitamos escribir un programa y subirlo a nuestro Arduino. Si aún no sabes cómo hacer esto, descarga libros. El siguiente código es exactamente lo que necesitamos cargar en el Arduino.

/* Bluetooh Basic: LED ON OFF * Coder - Mayoogh Girish * Sitio web - http://bit.do/Avishkar * Descarga la aplicación: https://github.com/Mayoogh/Arduino-Bluetooth-Basic * Este programa te permite para controlar un LED en el pin 13 de arduino usando un módulo bluetooth */ char data = 0; //Variable para almacenar los datos recibidos void setup() ( Serial.begin(9600); //Establece los baudios para la transmisión de datos en serie pinMode(13, OUTPUT); //Establece el pin digital 13 como pin de salida ) void loop() ( if(Serial.available() > 0) // Envía datos solo cuando los recibes: ( data = Serial.read(); //Lee los datos entrantes y guárdalos en datos variables Serial.print(data); // Imprimir valor dentro de los datos en el monitor serie Serial.print("\n"); //Nueva línea if(data == "1") // Comprueba si el valor de los datos es igual a 1 digitalWrite(13, HIGH); es 1, entonces el LED se enciende else if(data == "0") // Comprueba si el valor de los datos es igual a 0 digitalWrite(13, LOW); //Si el valor es 0, entonces el LED se apaga))

Paso 5. Cómo funciona el proceso

El módulo HC 05/06 funciona a través de un canal de comunicación serie. La aplicación de Android envía datos secuencialmente al módulo Bluetooth cuando presiona una tecla específica. Bluetooth en el otro extremo recibe los datos y los envía a Arduino a través de una conexión TX módulo Bluetooth(Conexión Arduino RX).

El código cargado en Arduino verifica los datos recibidos y los compara. Si se recibe un "1", el LED se enciende y se apaga cuando se recibe un "0". Abra el monitor del puerto serie y observe los datos recibidos.

Paso 6. Solicitud para dispositivos Android

En este tutorial no tocaremos la creación de aplicaciones para dispositivos Android. Puedes descargar la aplicación en GitHub.

¿Cómo utilizar la aplicación?

Una vez que nos hayamos conectado a través de Bluetooth, debemos descargar e instalar una aplicación que, usando un teléfono inteligente :) controlará nuestro LED a distancia. Puede descargar la aplicación de forma gratuita en Amazon.com. Conectamos el smartphone al módulo Bluetooth HC 05/06:

  1. Encienda el módulo HC 05/0
  2. Buscando un dispositivo
  3. Nos conectamos al HC 05/06 ingresando la contraseña predeterminada “1234” o “0000” (cuatro ceros).

Después de eso instalamos la aplicación en nuestro teléfono inteligente. Abrámoslo. Seleccione un dispositivo: seleccione el módulo Bluetooth de la lista (HC 05/06). Después de una conexión exitosa, presione el botón ON para encender el LED y el botón OFF para apagar el LED. Luego puede hacer clic en el botón "Desconectar" para desconectarse del módulo Bluetooth.

Esta fue una guía para principiantes y principiantes sobre cómo conectar un módulo Bluetooth con Arduino. Este proyecto se puede mejorar y elevar a un nivel superior para, por ejemplo, la domótica mediante el control de un teléfono inteligente, robot controlado y mucho más.

Hasta la fecha, sistemas como " hogar inteligente“De un exotismo asombroso, accesible sólo a las personas más ricas, se han convertido en algo común y corriente al que cualquiera puede unirse. Hay mucho para elegir: muchos desarrolladores dominan la producción de este tipo de sistemas de hardware y software. Una de las más famosas es la empresa Arduino, cuyos productos conoceremos a continuación.

¿Qué es una “casa inteligente”?

Este término tiene un análogo más comprensible: " domótica" la esencia decisiones similares es asegurar la ejecución automática de diversos procesos que ocurren en un hogar, oficina o instalaciones especializadas. El ejemplo más sencillo es el encendido automático de la iluminación en el momento en que uno de los residentes entra en la habitación.


El sistema de hogar inteligente Arduino es un conjunto de equipos para controlar el funcionamiento de varios dispositivos mediante un teléfono móvil basado en el sistema operativo Android.

En cualquier sistema de “hogar inteligente” se pueden distinguir los siguientes componentes:


Los sistemas domésticos inteligentes modernos se dividen en varios tipos:

  1. Equipado con su propio controlador.
  2. Usar un procesador en esta capacidad computadora de usuario(tableta, teléfono inteligente).
  3. Procesar información usando servidor remoto, propiedad de la empresa desarrolladora (servicio en la nube).

El sistema no solo puede activar un dispositivo en particular, sino también informar al usuario sobre el evento ocurrido enviando un mensaje al teléfono o de alguna otra forma. Por lo tanto, se le pueden asignar funciones de alarma, incluida la alarma contra incendios.

Los escenarios pueden ser mucho más complejos de lo que hemos descrito en los ejemplos. Por ejemplo, puede enseñarle al sistema a encender la caldera y transferir el suministro. agua caliente a él cuando se corta el suministro centralizado, si se detecta la presencia de uno de los residentes en la casa (los sensores infrarrojos, ultrasónicos y los sensores de movimiento ayudan).

Conociendo Arduino

Arduino es una empresa italiana dedicada al desarrollo y producción de componentes y software Para sistemas simples"casa inteligente" destinada a no especialistas. Cabe destacar que este desarrollador hizo que la arquitectura de los sistemas que creó fuera completamente abierta, lo que hizo posible a terceros fabricantes desarrollar nuevos y copiar dispositivos compatibles con Arduino existentes, así como lanzar software para ellos.

Equipo ArduinoUno Contiene los componentes necesarios para implementar los dispositivos descritos en el libro adjunto.

Este enfoque ha asegurado una gran popularidad para los sistemas de la empresa italiana, pero también tiene un inconveniente: debido a que, por así decirlo, todo el que no es demasiado vago se dedica a la producción de componentes para sistemas Arduino, no es Siempre es posible comprar un producto de alta calidad la primera vez. A menudo tenemos que enfrentarnos al problema de la compatibilidad de componentes de diferentes fabricantes.

Los usuarios potenciales deben saber que desde 2008 existen dos empresas que fabrican productos bajo la marca Arduino. El primero, que inició esta dirección, tiene un sitio web oficial en www.arduino.cc; el segundo, recién formado, en www.arduino.org. Lo que se desarrolló antes de la división se presenta por igual en ambos sitios, pero el surtido nuevos productos ya es diferente.

El software para sistemas domésticos inteligentes Arduino toma la forma de un shell de software (llamado IDE) en el que se pueden escribir y compilar programas. Distribuido gratuitamente. Los programas están escritos en C++.

Las versiones del programa Arduino IDE presentadas en estos sitios también son muy diferentes, aunque no solo tienen el mismo nombre, sino también los mismos números de versión. Debido a esto, es bastante fácil confundirse con ellos. La diferencia es que cada software admite sus propias bibliotecas y placas.

El "hardware" del sistema consta de una placa con un microcontrolador (placa de procesador) y tarjetas de expansión instaladas, que comúnmente se denominan escudos. Conectar el escudo a la placa del procesador le permite agregar nuevos componentes a la casa inteligente. El sistema ensamblado puede ser completamente autónomo o funcionar en conjunto con una computadora a través de un cable estándar o interfaz inalámbrica.


Se puede instalar en la placa del procesador. extensiones especiales(escudos) que aumentan la funcionalidad del sistema

Ventajas del sistema Arduino

Este complejo de hardware y software atrae al usuario por las siguientes ventajas:

  • oportunidad duración de la batería, por la presencia de su propio responsable del tratamiento;
  • amplias oportunidades para personalizar el funcionamiento del sistema (el propio usuario escribe un programa que puede contener escenarios de cualquier complejidad);
  • simplicidad del proceso de carga del programa en el controlador: no se requiere un programador para esto, basta con tener un cable USB (el microcontrolador tiene firmware Bootloader);
  • precio asequible componentes, debido a la falta de derechos de monopolio de uno u otro fabricante (la arquitectura es abierta).

Si el gestor de arranque comienza a funcionar mal o el microcontrolador comprado no lo tiene, el usuario tiene la oportunidad de actualizarlo usted mismo. El shell del software IDE brinda soporte para varios de los programadores más accesibles y populares para este propósito. Además, casi todas las placas procesadoras Arduino tienen un encabezado que permite la programación en circuito.

El programa Arduino IDE, presentado en el sitio web arduino.cc, tiene la capacidad de crear plataformas de hardware y software personalizadas, mientras que la versión del programa en arduino.org no tiene dicha función.

¿Qué soluciones ofrece Arduino?

Dado que muchas empresas se dedican a la producción de sensores y dispositivos compatibles con Arduino, la gama de estos productos es bastante amplia. Esto es lo que se usa con más frecuencia:


Algunos de estos dispositivos están incluidos en el kit básico Arduino Start, que algunos fabricantes denominan StarterKit.


conjunto de inicio El sistema Arduino incluye una placa procesadora y varios dispositivos de uso común.

La parte ejecutiva contiene un enorme conjunto de dispositivos, por ejemplo:

  • motores eléctricos;
  • relés y diversos interruptores;
  • atenuadores (le permiten cambiar suavemente la intensidad de la iluminación);
  • cierrapuertas;
  • válvulas y válvulas de 3 vías con servoaccionamientos.

Si planea conectarse a través de relé arduino iluminación, es más correcto utilizarlas como lámparas lámparas led. Las lámparas incandescentes se queman rápidamente cuando se conectan a través de dichos relés.

Video: primeros pasos con Arduino: control del LED a través de la interfaz web

Creando un proyecto en Arduino

Mostraremos el proceso de creación y configuración de una “casa inteligente” Arduino usando el ejemplo de un sistema que incluirá las siguientes funciones:

  • monitoreo de temperatura interior y exterior;
  • seguimiento del estado de la ventana (abierta/cerrada);
  • monitorear las condiciones climáticas (despejado/lluvioso);
  • generación señal de sonido cuando se activa un sensor de movimiento si la función de alarma está activada.

Configuraremos el sistema para que los datos puedan visualizarse mediante aplicación especial, así como un navegador web, es decir, el usuario puede hacerlo desde cualquier lugar donde tenga acceso a Internet.

Abreviaturas utilizadas:

  1. "GND" - puesta a tierra.
  2. "VCC" - fuente de alimentación.
  3. "PIR" - sensor de movimiento.

Componentes necesarios para hacer un sistema de hogar inteligente

Para el sistema de hogar inteligente Arduino necesitarás lo siguiente:

  • Placa de microprocesador Arduino;
  • Módulo Ethernet ENC28J60;
  • dos sensores de temperatura marca DS18B20;
  • micrófono;
  • sensor de lluvia y nieve;
  • sensor de movimiento;
  • interruptor de láminas;
  • relé;
  • resistencia con una resistencia de 4,7 kOhm;
  • cable de par trenzado;
  • Cable Ethernet.

Todos los componentes cuestan aproximadamente $90.


Para producir un sistema con las funciones que necesitamos, necesitaremos un conjunto de dispositivos que cuesten alrededor de 90 dólares.

Montar una “casa inteligente”: instrucciones paso a paso

Este es el orden en el que debes actuar.

Conexión de actuadores y dispositivos sensores.

Conectamos todos los componentes según el diagrama.


El montaje del sistema se reduce principalmente a conectar actuadores a los contactos pertinentes placa procesadora

Desarrollo de código de programa.

El usuario escribe todo el programa en el shell IDE de Arduino, para el cual está equipado este último. editor de texto, gestor de proyectos, compilador, preprocesador y herramientas para cargar el código del programa al microprocesador de la placa Arduino. Se han desarrollado versiones IDE para sistemas operativos. sistemas mac OS X, Windows y Linux. El lenguaje de programación es C++ con algunas simplificaciones. Programas de usuario para Arduino se les suele llamar bocetos o bocetos; el programa IDE los guarda en archivos con extensión “.ino”.

La función main(), que es obligatoria en C++, la crea automáticamente el shell IDE escribiendo en ella la serie acciones estándar. El usuario debe escribir las funciones setup() (ejecutada una vez durante el inicio) y loop() (ejecutada en bucle sin fin). Ambas funciones son necesarias para Arduino.

No es necesario insertar archivos de encabezado de bibliotecas estándar en el programa; el IDE lo hace automáticamente. Esto no se aplica a las bibliotecas de usuario; deben especificarse.

La adición de bibliotecas al IDE "Project Manager" se realiza de varias maneras: de una manera inusual. en la forma textos fuente escritos en C++, se agregan a una carpeta especial en el directorio de trabajo del shell IDE. Después de esto, los nombres de estas bibliotecas aparecerán en el menú IDE correspondiente. Aquellos que el usuario seleccione se incluirán en la lista de compilación.

El IDE proporciona un mínimo de configuraciones y no existe ninguna posibilidad de personalizar el compilador. De este modo, un programador novato está protegido contra errores.

A continuación se muestra un ejemplo del programa más simple que hace que el LED conectado al pin 13 de la placa parpadee cada 2 segundos:

configuración vacía () ( pinMode (13, SALIDA); // Tarea 13 salida arduino salida)

bucle vacío () ( digitalWrite (13, ALTO); // Active el pin 13, parámetro para llamar a la función digitalWrite ALTO: una señal de un nivel lógico alto

retraso(1000); // Bucle de retardo durante 1000 ms - 1 segundo

escritura digital (13, BAJO); // Apague el pin 13, llame al parámetro BAJO: una señal de un nivel lógico bajo

retraso(1000); // Retraso de bucle durante 1 segundo)

Sin embargo, por el momento, el usuario no siempre se enfrenta a la necesidad de escribir un programa personalmente: muchas bibliotecas y bocetos ya preparados se publican en Internet (consulte aquí: http://arduino.ru/Reference). Disponible programa listo para usar y para el sistema considerado en este ejemplo. Debe descargarse, descomprimirse e importarse al IDE. El texto del programa cuenta con comentarios que explican el principio de su funcionamiento.


Todos los programas Arduino funcionan según el mismo principio: el usuario envía una solicitud al procesador y este carga el código necesario en la pantalla de la computadora o del teléfono inteligente.

Cuando el usuario presiona el botón “Actualizar” en el navegador o aplicación instalada en el teléfono inteligente, el microcontrolador Arduino envía datos a este cliente. Cada una de las páginas designadas como “/tempin”, “/tempout”, “/rain”, “/window”, “/alarm” recibe código de programa, que se muestra en la pantalla.

Instalación de la aplicación cliente en un teléfono inteligente (para sistema operativo Android)

Para recibir datos del sistema de hogar inteligente en línea, puede descargar una aplicación lista para usar.

Esto es lo que debe hacer el propietario del dispositivo:


Con esta aplicación, no solo puede recibir información del sistema doméstico inteligente, sino también controlarlo: encender y apagar la alarma. Si está habilitado, se enviará una notificación a la aplicación cuando se active el sensor de movimiento. La aplicación sondea el sistema Arduino para detectar la activación del sensor de movimiento una vez por minuto.

Al activar el icono de “Configuración”, podrás editar tu dirección IP.

Configurar su navegador para que funcione con una casa inteligente

EN barra de direcciones navegador, ingrese XXX.XXX.XXX.XXX/all, donde “XXX.XXX.XXX.XXX” es su dirección IP. Después de esto, será posible recibir datos del sistema y administrarlos.

El código del programa presentado aquí le permite encender y apagar la luz a través del navegador, mientras que dicha función no está implementada en la aplicación para teléfonos inteligentes Android.

Trabajar con un enrutador


Configurar una cuenta en noip.com

Este paso es opcional, pero es obligatorio si desea asignar un nombre de dominio a la dirección. Para hacer esto, debe registrarse en el sitio web https://www.noip.com/, ir a la sección "Agregar host" e ingresar la dirección IP del sistema.


Después de registrarse en el sitio web noip.com, podrá acceder al sistema no solo por dirección IP, sino también por nombre de dominio completo.

Se completa la creación del proyecto, puede comprobar la funcionalidad del sistema.

Vídeo: hogar inteligente usando Arduino

Características de algunos hardware Arduino

Debido a que los componentes compatibles con Arduino son producidos por muchas empresas de terceros, cuya calidad no está controlada por el propio Arduino, es probable que el usuario compre un componente que no funcione del todo correctamente.

Una situación similar se ha desarrollado en el campo del desarrollo. computadoras personales. a su debido tiempo empresa ibm hizo que la arquitectura de sus computadoras fuera abierta, como resultado de lo cual las computadoras compatibles con IBM y componentes individuales Muchas empresas comenzaron a producir. Como resultado, los "equipos personales" de este tipo se han extendido ampliamente por todo el mundo, pero la calidad de los componentes y el grado de compatibilidad en muchos casos no fueron los mejores. alto nivel. Adherido a las tácticas opuestas. empresa de manzana. Limitó el número de desarrolladores que tenían acceso a la arquitectura e implementó la misma política en el campo del desarrollo de software. Al final computadoras Apple Resultó ser menos común y más caro, pero su calidad es un orden de magnitud superior a la de los dispositivos compatibles con IBM que ejecutan Windows.

Los usuarios han notado lo siguiente con respecto a algunos componentes de los sistemas Arduino:

  1. Sensor de temperatura DHT11 suministrado con conjunto básico(StarterKit), da un error significativo de 2-3 grados. Se recomienda utilizar el sensor de temperatura DHT22 en interiores, que proporciona más lecturas precisas, y para instalación en exteriores - DHT21, capaz de funcionar a bajas temperaturas y tener protección contra daños mecánicos.
  2. En algún microprocesador placas arduino Cuando los relés conectados a ellos están en cortocircuito, el puerto COM falla. Debido a esto, el boceto no se puede cargar en el microcontrolador: tan pronto como comienza la carga, el procesador se reinicia. Al mismo tiempo, el relé hace clic, el puerto COM se apaga y el proceso de carga del boceto se detiene.
  3. El sensor de cierre de ventana/puerta a veces da sorpresas en forma de falsos positivos. Teniendo esto en cuenta, se escribe el croquis de manera que el sistema produzca acción requerida sólo al recibir varias señales seguidas.
  4. Para configurar el control del proceso mediante aplausos, algunos usuarios, por inexperiencia, solicitan un detector de sonido con configuración manual límite. Este componente no es adecuado para tales fines, ya que tiene un alcance demasiado corto: es necesario colocarlo a no más de 10 cm del detector. Además, este sensor transmite señales en pulsos de corta duración, por lo que si hay un boceto grande, cuyo procesamiento lleva un tiempo relativamente largo, el microcontrolador simplemente no tiene tiempo para registrarlos.
  5. El dispositivo de alarma contra incendios debe utilizar un detector de humo en lugar de un detector de incendios. Este último detecta la llama a no más de 30 cm de sí mismo.
  6. En caso de mal funcionamiento del microcontrolador o error en el código, es mejor utilizar relés normalmente cerrados con interruptores manuales conectados en serie.

Para evitar comprar componentes de baja calidad, los usuarios experimentados recomiendan estudiar primero las reseñas publicadas en Internet sobre ellos. Se pueden comprar sensores económicos en varias variedades para probar usted mismo cuál funciona mejor.

Quizás el sistema doméstico inteligente de Arduino no sea de la más alta calidad, pero elección más amplia Los componentes y su costo asequible definitivamente lo convirtieron en uno de los más populares. Con nuestros consejos, aprenderá rápidamente cómo crear proyectos Arduino, automatizando varios procesos domésticos.

  • Tutorial
  • Modo de recuperación

Este artículo está destinado a principiantes. Aquí se describirá cómo aplicaciones web con la ayuda solicitud ajax ov envía comandos al script phyton, que los transmitirá vía puerto serie directamente a nuestro arduino.
Te compraste un Arduino, probaste algunos ejemplos y jugaste con bocetos. Pero esto no te basta, quieres gestionar, gestionar todas estas bondades a través de Internet. La forma más sencilla es comprar una placa de identificación con un puerto Ethernet y conectarla al Arduino (o comprar una placa con Ethernet ya incorporada). Pero también cuesta más y es necesario mejorar su gestión.

Para el trabajo necesitaremos:
- servidor HTTP
- intérprete de Python
-arduino

Aquí describiré dónde conseguir el primero y el segundo, y cómo hacerlos amigos.

Ahora, en orden. Utilizo Apache como servidor HTTP. Instalarlo no es difícil. Si es un completo principiante y utiliza Windows, puede adquirir el paquete Denwer del sitio web oficial, que incluye Apache.
Python (yo usé la versión 3.3) también se puede descargar e instalar desde el sitio web oficial. Ahora necesitamos hacer amigos entre nuestro Apache y Python. La forma más sencilla es ejecutar Python como cgi. Para hacer esto, abra el archivo httpd.conf en la carpeta conf en el lugar donde instaló apache (si instaló denwer, la ruta será algo como esto: [letra de unidad virtual]:\usr\local\bin\apache )

Estamos buscando una linea

AddHandler cgi-script .cgi

Agregamos .py al final con un espacio y nos aseguramos de que no haya ningún signo # al principio de la línea. Guarde y reinicie el servidor.
Ahora, para probar la estrecha amistad entre Python y Apache, puedes crear un archivo de prueba y ponerlo en carpeta de inicio.
#!/Python33/python.exe print ("ESTADO: 200 OK\n\n") print (" Hola Mundo")
Tenga en cuenta que en la primera línea mostramos dónde se encuentra nuestro intérprete de idiomas. Por ejemplo, lo tengo en C:/Python33/python.exe. Creo que lo resolverás. Nómbralo como quieras y accede a él a través de un navegador, por ejemplo, así: localhost/my_first_test_phyton_file.py. Si ves "hola mundo", entonces todo está bien.

El código del script de control principal en JavaScript es extremadamente simple:
//Puerto al que está conectado el Arduino var serialPort = "COM5"; //controla directamente la función var Arduino = function(command, callback)( $.get("c.py",( c:command, p:serialPort ), callback); )

Lo único que hay que cambiar aquí, como habrás adivinado, es el puerto al que está conectado tu arduino. Siempre puedes verlo en Windows usando el Administrador de dispositivos. Lo transferiremos a nuestro script en Python para que sepa a qué puerto serie enviar los datos recibidos.
Ahora, si hacemos una llamada a nuestra función, por ejemplo: Arduino(123), entonces el script creará una solicitud Ajax como c.py?c=123&p=COM5 y la enviará a nuestro script de Python c.py. Veamos qué es:
#!/Python33/python.exe importar serie importar cgi imprimir ("ESTADO: 200 OK\n") req = cgi.FieldStorage(); ser = serial.Serial(req["p"].value, 9600, timeout=1) ser.write(bytes(req["c"].value,"latin")) ser.close() print ("ok ")
De hecho, simplemente toma el valor del parámetro “c”, lo pasa al puerto serie “p” y escribe “ok”. Barato y alegre.

Para aquellos que quieran no solo dar, sino también recibir, escribiremos más código.

Mejoremos un poco el nuestro parte del cliente.
//controla directamente la función var Arduino = function(sp, errorCallback) ( this.serialPort = sp; this.errorCallback = errorCallback || function())( console.log("Error"); ) this.send = function(data , devolución de llamada)( var devolución de llamada = devolución de llamada; var self = this; datos["p"] = this.serialPort; datos["s"] = Math.round(Math.random()*1000); //por si acaso , para que el navegador no almacene en caché $.ajax(( url:"c.py", data:data, Success:function(data)( if($.trim(data) == "error")( self.errorCallback (); ) else ( if(typeof callback == "function") callback(data); ) ) ) //enviar this.set = function(command, callback)( this.send(( c:command, r:0 ) , devolución de llamada); ) //enviar y esperar una respuesta this.get = function(command, callback)( this.send(( c:command, r:1 //bandera responsable del modo "esperar respuesta") , llamar de vuelta); ) )
Ahora que hemos convertido Arduino en una clase, entonces desafío más simple será algo como esto:
var miArduino = nuevo Arduino("COM5");
miArduino.set(113); //enciende el LED en el pin 13 myArduino.get(36,function(data)(console.log(data))); //observamos el estado del pin 6. y lo mostramos en la consola Y, por supuesto, necesitamos cambiar un poco.:
parte del servidor
#!/Python33/python.exe importar serie importar cgi imprimir ("ESTADO: 200 OK\n") req = cgi.FieldStorage(); intente: ser = serial.Serial(req["p"].value, 9600, timeout=1) excepto: print("error") exit() ser.write(bytes(req["c"].value," latin")) si int(req["r"].value) == 1: res = "";
mientras no sea res: res = ser.readline() print(res.decode("UTF-8")) else: print ("ok") ser.close()


Ahora veamos un boceto para arduino que acepta y procesa todo esto:
#incluir Servo myservo; void setup() ( Serial.begin(9600); ) String getParam())( String re; while (Serial.available()) ( re.concat(Serial.read()-48); ) return re; ) int getPin (String p)( return p.substring(0,2).toInt(); ) int getVal(String p)( return p.substring(2,6).toInt(); ) // Bucle principal void loop( ) ( while (Serial.available()) ( char comando = (char)Serial.read(); String param = getParam(); int pin = getPin(param); int p; switch (comando) ( case "0" : //Escritura digital pinMode(pin,SALIDA); break; case "1": //Escritura digital pinMode(pin, SALIDA); //Servo myservo.attach(pin); "3": // Lectura digital pinMode(pin,INPUT); break; case "4": ( // Lectura analógica int aPin = A0; switch (pin) ( caso 1: aPin = A1; break; caso 2 : aPin = A2; caso 3: aPin = A3; caso 4: aPin = A4;
) romper; case "5": // Escritura analógica pinMode(pin,SALIDA);
p = getVal(parámetro);
escritura analógica (pin, p);
romper; ) ) )
A través del puerto serie transmitiremos comandos como: 1234567 donde:
- número de equipo
- número de PIN
- datos del pin, si es necesario.
Por ejemplo:
113: instalará el pin 13 en la salida y transmitirá el estado ALTO a través de él (es decir, lo encenderá).
013: configurará el pin 13 en la salida y transmitirá el estado BAJO a través de él (es decir, lo apagará).

209100: configurará el pin 9 para controlar el servoaccionamiento y le transmitirá el valor 100 mediante modulación PWM.
310: configurará el pin 10 para ingresar y leer datos ALTOS/BAJOS y regresará como 1 o 0 en consecuencia.
Puede agregar fácilmente sus propios comandos al bloque de la caja del interruptor.
Ahora agreguemos un poco de belleza a nuestra parte frontal y obtengamos, por ejemplo, esto

Las desventajas de este enfoque incluyen la velocidad de intercambio de datos relativamente lenta. Para conocer el estado de, por ejemplo, un botón, es necesario enviar solicitudes, pero esto no se puede hacer con demasiada frecuencia, ya que podemos encontrarnos con un puerto serie ocupado. Funcionaría más rápido en websockets, pero este es un tema un poco más avanzado, que cubriré más adelante si lo deseas.
Todo se comprobó en Windows 8 x64. Probablemente existan algunas características para implementar todo esto para otros sistemas, estaré encantado de saberlo en los comentarios.
Ahora vamos a ver dónde puede resultar útil todo esto: por ejemplo, puedes hacer un stand de demostración; controlar la posición de la cámara; conectar un sensor de temperatura y otros dispositivos y monitorear remotamente algún proceso, etc.

Archivo con el proyecto
Para ejecutar en iPad en pantalla completa yo usé programa gratuito una URL

No lo inserté en centros temáticos sólo por falta de karma.
Este es mi primer artículo. Estaré encantado de responder a tus preguntas.

UPD: A petición de los trabajadores, también probé este método en MacOS. Problemas especiales no surgió. En una Mac, Python normalmente ya está instalado de forma predeterminada; lo único que debes hacer es hacerlo compatible con Apache. La primera línea en c.py será
#!/usr/bin/python
Además, es posible que no tengas instalada la extensión pyserial; puedes instalarla con un simple comando en la consola:
easy_install -U pyserial
Cabe señalar además que normalmente versión preinstalada Python es bastante antiguo y es posible que la línea no funcione.
ser.write(bytes(req["c"].valor,"latín"))
lo reemplacé con
ser.write(bytes(req["c"].value.decode("latin")))
Todo funcionó.
No olvides mirar a qué puerto se conectará tu dispositivo. Es conveniente mirar, por ejemplo, a través del programa arduino. Menú Herramientas->Puerto serie. Por ejemplo, para mí se veía así: /dev/cu.usbmodemfd141
Les deseo a todos experiencias exitosas.

Etiquetas:

  • arduino
  • pitón
  • hazlo tú mismo o hazlo tú mismo
  • hogar inteligente
Agregar etiquetas


Arriba