Administrar Arduino a través de Internet con una PC: experiencia para principiantes

Hola a todos. En este artículo hablaré sobre cómo logré implementar el control de Arduino a través de Internet utilizando una PC conectada a Internet. En general, este método se puede usar para cualquier microcontrolador, por ejemplo, PIC. El método es bastante roble, hay mucho que modernizar y hay muchos esquemas más avanzados, pero en el caso más simple es suficiente.

En lugar de unirse


Quisiera decir de inmediato que en este artículo no profundizaré en las complejidades de la programación, se supone que el lector tiene al menos conceptos básicos mínimos. Le diré en general cómo se usaron los recursos y sobre puntos interesantes.

Requisitos previos para la creación de este método que tuve durante la creación de mi automóvil eléctrico: ¡ Zhmyak aquí! Debo decir de inmediato que se creó cada vez más por el interés deportivo que por el trabajo práctico serio, pero sin embargo funciona y puede ser útil para alguien.

¿En qué se basa todo el sistema y cómo se implementa en el hardware?


El esquema de trabajo es el siguiente: desde el servidor leemos el archivo en el que se almacenan los datos utilizando el programa que se ejecuta en la PC / computadora portátil. Este programa a través de USB envía datos al controlador. El controlador recibe datos y realiza acciones sobre ellos. El esquema con el servidor es atractivo, ya que puede controlar el esquema sin una aplicación, simplemente visitando el sitio desde cualquier teléfono inteligente / tableta / PC / computadora portátil en cualquier parte del mundo donde haya acceso a Internet.

PD. Sobre el lado del servidor se describe a continuación.

En este artículo, controlaré el Arduino MEGA 2560 (la contraparte china), pero entre bastidores el circuito funcionó sin problemas con el PIC16F877A, lo único que tuve que usar fue el adaptador USB-TTL: el



programa PIC es comprensiblemente un poco diferente del programa Arduino, debido a diferentes tipos de MK, pero el principio es el mismo:

Recibimos datos a través del puerto COM, los comparamos con la tabla interna de comandos y realizamos la acción correspondiente.

El esquema inicialmente me pareció muy simple, pero había un PERO: no había ningún programa que pudiera leer el archivo en Internet y enviar datos al puerto COM. En consecuencia, tuve que escribir tal programa.

El programa fue escrito en VB6. Para leer el archivo del servidor, se utiliza el componente VB6: Microsoft Internet Transfer Control 6.0. Con su ayuda, un archivo de texto en el servidor simplemente se lee en una variable de cadena. Después de leer esta línea, se envía al puerto COM utilizando el componente VB6: Microsoft Comm Control 6.0. Todo el proceso de leer un archivo y enviar una línea se lee en un bucle utilizando un temporizador. El intervalo del temporizador se puede cambiar en la configuración del programa o directamente durante la operación. Además, puede seleccionar el modo de operación del puerto, su número, el modo de operación de la conexión a Internet y un enlace al archivo legible.

Me gustaría hacer un comentario de que con archivos de gran tamaño y pequeños espacios, el programa se congela, pero continúa funcionando. El tamaño del búfer de mi programa es de 512 bytes. Dado que mi MK tiene menos búfer, esto es suficiente.

Un punto importante Un programa en MK no puede analizar datos, solo puede leer qué carácter se transmitió a la entrada a través del puerto serie. Sin errores, logré aceptar el alfabeto latino (26 caracteres AZ y 10 dígitos 0-9). Un total de 36 equipos, si el algoritmo se finaliza y se introduce el análisis de datos en el MK, entonces cualquier información puede transferirse. También existe la posibilidad de software de "dopaje" para el intercambio de datos bidireccional.

Selección de servidor y lado del servidor


Para el lado del servidor, cualquier servidor con soporte PHP , incluso si se ejecuta en una PC personal, solo tendría una IP estática, pero personalmente uso un Jino alquilado. La parte del servidor en mi ejemplo consta de dos archivos: páginas HTML con un formulario con botones de ENCENDIDO / APAGADO para el LED y un script PHP que cambia el contenido del archivo TXT desde el cual el programa que se ejecuta en la PC lee los datos.

Software


Código HTML Forma con 2 botones, LED de encendido / apagado en el tablero:

<html>
<head>
<title> </title>
</head>  
<body>
<form action="work.php" method="post">
:
<p>
<input type="submit" name="sv" value="On" />
<input type="submit" name="sv" value="Off" />
<p>
</form>    
</body>    
</html>

Código PHP, aquí escribimos el comando A en el archivo, si el LED debe estar encendido, y B si se apaga:

<?php
$cm = fopen("command.txt", "w");
switch ($_POST['sv']) {
case "On":
fwrite($cm,"a");    
    break;   
case "Off":
fwrite($cm,"b");    
    break;  
}
fclose($cm); 
?>

Ahora el código real para Arduino:

int val; //      
void setup() {
Serial.begin(9600); //   
pinMode(13, OUTPUT); //   13  
}
void loop() {
// ,   - 
if (Serial.available()) {
val = Serial.read(); //  val   
if (val == 'a') {digitalWrite(13, HIGH);} //  a  
if (val == 'b') {digitalWrite(13, LOW);} //  b  
}}

El programa en sí para leer información en el servidor con reenvío al puerto COM y su código fuente se encuentran en el archivo en el enlace: Yandex-Disk El programa se compila en varias versiones del código, puede haber algunas diferencias en el funcionamiento, pero no debería ser así. En el primer inicio del archivo EXE, se generan un archivo de ayuda y un archivo de configuración. Los datos de este archivo se leen cuando se inicia el programa, si existe. Si el archivo no existe (por ejemplo, al primer inicio del programa), el archivo de configuración se crea con los valores predeterminados.

Resultados de trabajo



En lugar de una conclusión


En este ejemplo, implementé un algoritmo simple de "roble" que funciona. Por supuesto, hay dónde desarrollarse más, pero, sin embargo, ya se pueden enviar 36 equipos de esta forma. Si implementa el análisis de datos entrantes en el microcontrolador, puede transferir cualquier dato. Para mis tareas, 36 equipos serán suficientes con la cabeza, y además, esta es la experiencia de un principiante :)

All Articles