Crear su propia red de dispositivos caseros basados ​​en Arduino (Parte 1)

Buenas tardes, habravchane! Hoy les contaré sobre la integración de Arduino con una PC en Windows y otros dispositivos. Ya fue en 2018, mis tableros Arduino de varios modelos finalmente llegaron a mí.

Hace tiempo que quería construir una casa inteligente y decidí usar esta plataforma en particular. Por qué Bueno, conozco C # bastante bien y un poco de C ++, pero como saben, el firmware para Arduino está escrito en las ventajas cambiadas. Además, la plataforma tiene un convertidor digital a analógico, que simplifica el trabajo con sensores analógicos. Además, la plataforma es muy famosa y tiene una gran base modular.

Con todo mi amor por los microcontroladores, prefiero calcular todo en Windows, y toda mi fuerza está en las aplicaciones .NET. Este fue mi problema. Simplemente no podía entender el entorno de desarrollo Arduino IDE. Tenía que acostumbrarme a eso. Sin embargo, los proyectos de calentamiento simples todavía funcionaban principalmente en una PC. ¿Quién está interesado en el tema, pido un corte!

Mi primer experimento fue un simple intercambio de información a través de USB (puerto serie), a través del cual envié paquetes con comandos simples para realizar acciones en el microcontrolador. Por ejemplo, utilicé el modelo Arduino UNO.



Esta es la interfaz del programa para Windows. "Chirrido" - dando una señal a un pin (pin Arduino) en el número 10 de una señal eléctrica constante, que es alimentada por el timbre que conecté. “LED”: suministro de corriente continua al pin 13, que por defecto en el controlador está conectado al LED incorporado, que sirve para depurar bocetos (firmware).



Sin embargo, toda esta funcionalidad reside precisamente en el controlador.

¿Qué hace el programa? ¡Solo envía números al puerto! "0" significa deshabilitar
LED, "1" - encienda el LED, "2" - apague el timbre, "3" - encienda
zumbador Todo se hace utilizando los elementos básicos de Windows Forms. Si
quienes estén interesados, el tipo de cambio de datos es de 115200 baudios. Gracias
Para esto, puedo ver fácilmente el contenido de los mensajes del microcontrolador en
Arduino IDE.



Creo que muchos ahora querían saber qué había en el firmware del microcontrolador. Como fue hace mucho tiempo, no fue fácil buscar el código de firmware de Arduino, ¡pero aún se encontró el archivo!

Código completo
Comimos algo, esta es una versión antigua del archivo, sin timbre, solo con un LED.

int i = 0; //       int led = 13; void setup() {  Serial.begin(115200);   //      pinMode(led, OUTPUT); //    13-      } void loop() {  i = i + 1; //         String stringOne = "Info from Arduino ";  stringOne +=i; //  Serial.println(stringOne); //     char incomingChar;  if (Serial.available() > 0)  {    //           incomingChar = Serial.read();   //        LED    switch (incomingChar)    {      case '1': digitalWrite(led, HIGH);        break;      case '0': digitalWrite(led, LOW);        break;    }  }  delay(300); } 


Sin embargo, esto es solo un ejemplo. Lo único, este sistema debe tener un concentrador, es decir, el punto de intersección de todos los dispositivos. Y esto destruye instantáneamente toda la descentralización del sistema.

De ahí la conclusión: el método de uso del concentrador es adecuado solo para la recopilación y gestión de información. Se necesita un concentrador, por ejemplo, para acceder a dispositivos en Internet, pero no como un punto clave de comunicación entre ellos.

Supongamos que podemos conectar todos los dispositivos con I2C o con nuestro propio protocolo. Pero, ¿cómo soltar datos en el centro? Y en general, ¿qué servirá como centro? Opcion 3:

  • Hub del enrutador.
  • Hub de otra placa Arduino.
  • Hub de Raspberry Pi.

Consideremos todo a su vez. Entonces, el enrutador. Para empezar, se necesita el enrutador no solo, sino también con Linux a bordo y un puerto USB para conectar cualquier placa Arduino desde el sistema. Todo porque la red consistirá en una gran cantidad de dispositivos y un "chat" general, donde todos los dispositivos envían mensajes sobre su estado. Desde los enrutadores, por ejemplo, "Linksys E2100L 802.11b / g / n" es adecuado.



Como puede ver, este enrutador tiene un conector USB, y las características muestran que todo gira en Linux. Yo personalmente no lo usé, pero de acuerdo con las características que nos convengan. Y esto NO es un anuncio.

En el caso de un enrutador, puede colocar datos en un puerto serie, como en Windows, y ejecutar un script - controlador de mensajes en Linux (lo siento, si algo no se llama así, simplemente no estoy familiarizado con Linux).

Considere la opción 2. Otra placa Arduino. Los modelos Nano, Mini, Micro ya no son adecuados aquí. Necesita un modelo Arduino, ya sea UNO o MEGA. Pero simplemente no conecte la placa a la red. Como opción, use Arduino UNO WI-FI, o lo que es más confiable, Arduino Yun o Tian. Los problemas de este último son una descarga y un precio relativamente largos, y por funcionalidad se parecen al mismo enrutador, ya que funcionan en Linux.

Es mejor usar el llamado Escudo de Ethernet. Esta es una placa de expansión para Arduino, que se usa en la parte superior y le permite crear un servidor WEB simple en su dispositivo con scripts PHP simples para procesar información de otros dispositivos en la red.



Algunos modelos de esta placa de expansión están equipados con una ranura para una tarjeta de memoria micro-sd, que permite el registro local además del control remoto.

Opción 3. Casi la misma que la anterior y menos que nada me gusta. Usando una micro computadora Raspberry Pi. Es una computadora. De acuerdo, colgar una computadora completa para esta tarea, aunque sea muy débil, un desperdicio adicional de recursos. Tanto monetaria como informática. Personalmente, usaría Raspberry Pi solo como un servidor de videovigilancia o como un programa de administración inteligente del hogar listo como Major DoMo y similares. También puede llevarlo a tareas como bots en mensajería instantánea y algoritmos complejos para controlar el microclima, o en el caso más improbable, puede poner inteligencia artificial allí.



Como puede ver, la Raspberry Pi 3 tiene:

  • 4 puertos USB
  • 1 puerto Ethernet;
  • 1 puerto HDMI
  • Wifi
  • Interfaz DSI para conectar una pantalla Raspberry Pi con una pantalla táctil;
  • Ranura para tarjetas micro-sd.

Y mucho mas. Pero a pesar de todas las ventajas, la Raspberry Pi no es adecuada como centro.

Conclusión: Arduino UNO + Ethernet Shield es más adecuado como un centro para mí personalmente. De todas las opciones consideradas, esta es la más barata y fácil de implementar.



En esta configuración, la operatividad del sistema no depende del concentrador. E incluso si el concentrador falla, no afectará el rendimiento de la red misma. La red solo perderá acceso a Internet.

Creo que la primera parte se puede completar sobre esto. Hasta pronto!

Source: https://habr.com/ru/post/es414225/


All Articles