Manual de Programa control.
py
Paso 1:
Seleccionamos donde dice Nueva para crear la caja virtual.
Donde dice:
Nombre colocar el nombre al archivo en mi caso coloqué Industrialess.
En Tipo seleccionar Linux.
Versión seleccionar Ubuntu (32-bit). Queda de la siguiente manera:
Y seleccionamos Next
El tamaño de memoria colocarlo en 1024MB
Y seleccionar Next
Seleccionar crear un disco duro virtual ahora
Y seleccionar Crear
El tipo de archivo de disco duro a seleccionar es VDI (VirtualBox Disk
Image). Luego Next
El almacenamiento en unidad de disco duro física seleccionar Reservado
dinámicamente, luego Next
El tamaño de disco duro colocarlo en 20GB y seleccionar Crear.
Paso 2:
Una vez creada la máquina virtual entonces veremos lo siguiente:
Entonces procederemos a configurar la Red y Pantalla
Red: colocarla en NAT.
Pantalla: solo se cambia el tamaño de memoria en video.
Y Seleccionar Aceptar
Paso 3:
Seleccionamos Iniciar
Paso 4:
Ahora se hará la instalación del sistema operativo Ubuntu.
Como primera instancia seleccionamos la carpeta, luego se abre otra
ventana donde seleccionaremos añadir y buscamos el archivo de Ubuntu.
Una vez hecho damos en seleccionar e iniciar.
Paso 5:
Usando las flechas del teclado seleccionar el lenguaje español y enter
Paso 6:
Seleccionar instalar Ubuntu Server y enter
Paso 7:
Ubicarse en el nombre de nuestro país, es decir Honduras y dar enter
En la disposición del teclado, seleccionar NO
Paso 8:
Seleccionar el origen del teclado de la computadora. En mi caso es inglés.
Y dar enter.
Enter donde dice English (US):
Y esperar que carguen componentes adicionales…
Paso 9:
Escribir el nombre de la máquina, que es Industrialess y seleccionar
continuar
Paso 10:
Escribir el nombre completo para el nuevo usuario, en mi caso uth y luego
continuar
Aquí solo seleccionamos continuar
Paso 11:
Elegir una contraseña, darle continuar.
Y nuevamente escribir la contraseña y continuar
Paso 12:
Usar contraseña débil, elegir SI
Cifrar carpeta personal, seleccionar NO
Si esa es nuestra zona correcta seleccionar SI
En el método particionado seleccionar Guiado- utilizar todo el disco
Enter
Escribir los cambios en los discos, seleccionar SI
Esperar que se instalen los archivos necesarios…..
Continuar
Y seguir esperando la instalación
Elegir la opción sin actualizaciones automáticas
Usando la tecla de barra espaciadora seleccionar OpenSSH server y
darle continuar
Seguir esperando instalación
Instalar el arranque GRUB, seleccionar SI
Instalación final del SO Ubuntu
Continuar
Paso 13:
Escribir nuestro usuario y enter
Escribir el password que establecimos en la instalación y enter
Paso 14:
Podemos ver dice: uth@industriales:~$
Ahí procedemos a hacer cambio de sesión y escribimos el comando sudo
su
Damos enter, y nos pide el password for uth, que es el que establecimos al
instalar la caja virtual, que en mi caso es 1234567, luego seleccionamos
enter
Paso 15:
Ahora debemos verificar si hay conexión a red en nuestra máquina virtual
y procedemos a escribir el comando ifconfig y seleccionamos enter.
Como se ve, si hay internet pero para mejor verificación escribimos el
comando ping www.yahoo.es donde claramente confirma la conexión a
internet, para parar ese estado infinito seleccionamos control C
Paso 16:
Una vez hecho el paso 15, procedemos a actualizar el sistema operativo
colocando el comando sudo apt-get update
Paso 17:
Una vez hecho el paso 16, procedemos a escribir el comando sudo apt-
get install xubuntu-desktop y nos va salir una opción que dice desea
continuar? Y seleccionamos la letra s para decir que sí.
Esperar un lapso estimado de 30 minutos.
Cuando aparezca la pantalla solo en negro, hacer click en enter
Paso 18:
Escribimos el comando reboot y enter
Y esperamos
| |
Paso 19:
Escribir el password y dar click en acceder
Una vez ingresada a la máquina, seleccionamos el icono que tiene forma
de ratoncito y seleccionamos emulador de terminal
Donde se abrirá una pantalla oscuro donde se hace el cambio de súper
usuario donde dice uth@Industriales:~$ escribir el comando sudo su y
enter, luego se escribe la contraseña.
Paso 20:
Procedemos a instalar el lenguaje Python con el comando sudo apt-get
install python y damos enter
Paso 21:
Luego debemos hacer instalación de librerías gráficas de python con el
comando sudo apt-get install python-tk damos enter y nos pregunta
desea continuar? Entonces escribimos la letra s y damos enter
Paso 22:
Luego instalamos el editor de lenguaje de python con el comando sudo
apt-get install idle damos enter, luego nos pregunta desea continuar? Y
seleccionamos la letra s
Paso 23:
Luego reiniciamos la máquina virtual con el comando rebbot
Esperamos que carguen datos y que inicie de nuevo, nos pedirá la
contraseña y la colocamos de nuevo y damos acceder.
Y escribimos la contraseña
Paso 24:
Lo que viene ahora es poder tener acceso remotamente desde la máquina
Windows, entonces debemos asignarle una ip fija. Pero antes de todo
debemos ver cuál es la ip de la computadora, configurando la red del
servidor. Entonces debemos ir al buscador de la computadora y escribir
cmd y aparece lo siguiente:
Entonces escribimos el comando ipconfig para saber la ip de nuestra
máquina y aparece lo siguiente:
Como podemos ver la Ip que tiene el wifi en mi computadora es
192.168.1.37 y 192.168.1.1 Ahora abrimos la terminal de Linux y
escribimos el comando cd /etc/network y enter, este es para cambiar de
directorio como podemos ver paso de home/uth a etc/network es decir un
cambio de directorio. Y se procede a escribir el comando ls –l y enter,
este comando permite enlistar los archivos dentro del directorio network.
De esos archivos solo nos interesa donde se configura la red ya que le
vamos asignar la ip manual porque después nos conectaremos vía
escritorio remoto.
Paso 25:
Como siguiente paso vamos a editar archivo mediante comando
pico interfaces y damos enter
Aparece lo siguiente:
Ahora tenemos que editar la línea que dice source y la comentamos
agregándole el signo # al inicio para deshabilitar esa línea.
Ahora en la parte inferior donde dice iface enp0s3 inet dhcp lo editamos
para que quede así iface enp0s3 inet static y damos enter (como vemos
solo eliminamos dhcp y agregamos static)
Luego escribir address 192.168.1.50 y damos enter
Ahora escribir netmask 255.255.255.0 y damos enter (esta es la máscara
de red)
Ahora escribimos gateway 192.168.1.1 y damosenter (esta es la ip
interna del router de internet)
Escribir dns-nameservers 8.8.8.8 8.8.4.4
Y quedaría así:
Control O para que se guarde, enter y luego control x para salir.
Como siguiente punto debemos seleccionar dispositivos, Red y
preferencias de red
Ahora procedemos a hacer cambios en red y pantalla:
Red: En la opción Conectado a seleccionar el que se llame Adaptador
puente, seguido seleccionamos la flechita de avanzadas
Donde como pudimos ver se abren más opciones, la que dice Modo
promiscuo seleccionar Permitir todo
Pantalla: solo se cambia el tamaño de memoria en video a 64MB
Y Seleccionar Aceptar
Paso 26:
Verificaremos si se asignó la ip, primero escribimos el comando reboot
para reiniciar y esperamos unos segundos que reinicie.
Y escribimos de nuevo el password y acceder:
Paso 27:
Ahora como ya tiene asignada la ip fija y hemos tomado ip del router,
entonces uno se puede conectar de manera remota.
Entramos de nuevo al emulador de terminal, entramos como súper usuario
de nuevo con el comando sudo su y colocamos la contraseña, luego
verificaremos el acceso a internet escribiendo ping www.yahoo.es y
enter y quedaría de la siguiente manera:
Donde comprobamos que si hay internet y para parar ese ciclo solo damos
control c
Paso 28:
Ahora escribir el comando idle control.py y se debe abrir esta ventana de
Linux donde es el entorno para programar:
Paso 29:
Ahora veremos en sí el programa control.py que cuando se ejecuta,
simula las entradas de la raspberry pi o microprocesador en cualquier plc.
Este programa simula el encendido, apagado en control del tiempo. Es
decir programar hora/minuto en que se enciende y la hora con minuto para
que se apague
Previamente ya tenemos instalado, python, librería de python y el editor de
python que es idle
El cual consta de:
El signo # se utiliza para hacer algún comentario línea por línea o en
bloque dentro del editor y así recordar que es lo que se hizo en cierto
punto
Tenemos la librería: Tkinter import * que es el entorno grafico de python.
También la importación de 6 librerías más básicas que usamos en este
ejercicio:
import ttk es una librería grafica que habilita objetos especiales, menús
import time
import tkFont es una librería que nos permite configurar las fuentes o
tamaño de letras
import tkMessageBox es una librería que nos habilita cuadros de dialogo
pequeños de advertencia, warning, errores, consultas, información
import os y import subprocess estas 2 librerías son parte fundamental
de este proceso ya que nos permite ejecutar comandos del sistema
operativo, también permite llamar programas externos es decir mandar 0 o
1 a un archivo y ese archivo representa una entrada o una salida
análoga/digital y se convierte mínimo 5V D/C a 24 o 28V D/C.
Siguiendo con el código tenemos:
# Crear
v0=Tk()
v0 es la variable donde almacenamos la función Tk
Tk es una función reservada de Tkinter cuyo objetivo es construir una
ventana.
v0.title(”CONTROL GPIO“) aquí mandamos a llamar otro método que
está dentro de Tkinter como title y v0.geometry(”450x450+100+200“)
title manda a imprimir un título a la ventana que sería CONTROL GPIO
geometry que son las dimensiones en pixeles 450x450+100+200
Largo y alto Punto origen donde se
crea la ventana
# Zona de funciones
def on():
print “ON”
os.system(“sudo /./home/uth/on.sh“)
def nos permite crear la función.
on, off y save es el nombre de la función y pueden contener argumentos o
variables (), en este caso el paréntesis está vacío.
**Recordando: cada línea debe estar alineada perfectamente ya que el programa
python se ejecuta en un buen orden, a esto se le llama identacion dejar un
margen, sangría. Cuando el margen no está bien alineado aparecerá el siguiente
mensaje:
**
on.sh
Abrimos una nueva terminal y escribimos el siguiente comando:
Se abre otra ventana donde se apertura el archivo y previamente lo
creamos ahí mismo:
Cuando hablamos de un archivo on.sh es un lenguaje de programación
donde en la primera línea:
#!/bin/bash hace que el programa realmente es un shell, habilitando
todos los comandos propios del lenguaje, y en este manda un 1 lógico,
donde se escribe
echo 1> /home/uth/estado17.txt
echo es un comando del sistema que permite imprimir colocando el valor
lógico en este caso 1, usando el signo > que se llama tubería simple nos
permite re direccionar ese comando hacia un archivo directamente que es
estado17.txt (este lo creamos, el 17 hace referencia al GPIO lógico) dentro
de la ruta del directorio /home/uth/ son separadas por pleca / que es la
raíz.
Entonces esto simula, envía un 1 lógico hacia el archivo exclusivo y
representa la salida de voltaje 5V D/C, activando un rele, switch, contactor.
off.sh
Se abre otra ventana donde se apertura el archivo y previamente lo
creamos ahí mismo:
Es exactamente lo mismo que on.sh, con la única diferencia que el estado
lógico es 0.
Cuando hablamos de un archivo off.sh es un lenguaje de programación
donde en la primera línea:
#!/bin/bash hace que el programa realmente es un shell, habilitando
todos los comandos propios del lenguaje, y en este manda un 0 lógico,
donde se escribe
echo 0> /home/uth/estado17.txt
echo es un comando del sistema que permite imprimir colocando el valor
lógico en este caso 0, usando el signo > que se llama tubería simple nos
permite re direccionar ese comando hacia un archivo directamente que es
estado17.txt (este lo creamos, el 17 hace referencia al GPIO lógico) dentro
de la ruta del directorio /home/uth/ son separadas por pleca / que es la
raíz.
Entonces esto simula, envía un 0 lógico hacia el archivo exclusivo y
representa la salida de voltaje 5V D/C, activando un rele, switch, contactor.
def save():
save es la que lleva toda la lógica en base a cómo trabaja el temporizador.
Las variables globales o públicas son definidas en zona de variables, tiene
como objetivo que el método get (método reservado) dentro de la función
haga y recupere la información capturada en la caja de texto horaini y lo
inserte en hi, asi mismo para mi, hf, mf.
dia, mes y año(aa) son constantes
Si escribimos el comando cat task1 tenemos la siguiente información:
59 minutos, 15 horas * * * root /home/uth/on.sh Y ese es el contenido de
task 1.
Una vez que creamos los programas con el editor de Linux > pico:
pico on.sh pico off.sh
#!/bin/bash #!/bin/bash
echo 1> /home/uth/estado17.txt echo 0> /home/uth/estado17.txt
Luego hay que darles permisos a on.sh y off.sh con el siguiente comando:
chmod –R 777 on.sh y enter
chmod –R 777 off.sh y enter
chmod es un comando del sistemas operativo Linux que nos permite
cambiar de modo nivel de privilegios de una archivo especifico
-R es recursivo
777 se compone de la sumatorio de RWX. R tiene un valor de 4, W valor
de 2 y X valor de 1, Y son tres sietes (777) porque son los niveles de
seguridad del sistema operativo Linux el primer 7 es para root del sistema,
el segundo 7 es para usuarios o pertenecías a algún grupo y el tercer 7 es
para usuario invitado.
# permisos
Tenemos 2 funciones:
os permite ejecutar comandos del sistema operativo
system permite llamar
En el primero se ejecuta task1 y en el segundo task2 que son los nombres
de los archivos que usaremos cambiarle el nombre de los permisos.
# cadena
cadena, cadena2 pueden ser una variable cualquiera y esta igualada a
todos los parámetros que se necesitan, al final de la cadena dice path1 y
path2 . Puede almacenar toda la concatenación de lo que se recibió en la
caja de texto más las variables constantes. (str es string)
# ejecución
De esta manera se ve reiniciado el servicio Chrome para garantizar que la
acción se ha hecho correctamente y que al reiniciar el servicio Chrome la
tarea que se a grabado quede como permanente.
# Zona de botones
El parámetro command manda a llamar la función off u on y se ejecuta.
Y ejecutamos el programa:
Centrandonos en el encendido y apagado.
Vamos a ver el contenido del estado17 con el comando cat estado17.txt
El comando cat permite visualizar el contenido de un archivo en modo de
lectura y no de edición, no se puede editar.
Al dar click en botón on veremos que si hay un registro, lo cual será un 1
lógico como veremos:
Ahora, si seleccionamos el botón de off:
Y volvemos a consultar el estado veremos que está en estado lógico 0:
Analizando vemos que el archivo sufre el cambio cuando presionamos on
es 1 y cuando presionamos off es 0.
# Zona de variables
global horaini es hora inicial
global minini es minuto inicial
global horaf es hora final
global minf es minuto final
Esas variables están declaradas como publicas globales porque lo que se
quiere es utilizarla en cualquier función interna que se le declare
horaini=StringVar()
minini=StringVar()
horaf=StringVar()
minf=StringVar()
StringVar es una variable tipo cadena de caracteres y es sensible a las
mayúsculas, minúsculas y espacios. Indicando que esas variables son del
tipo StringVar
# Cajas de texto
Donde txt_hi=, txt_mi=, txt_hf=, txt_mf= son variables locales haciendo
alusión a hora inicial, hora final, minuto inicial, minuto final
Entry es la función que nos permite generar una captura a una entrada de
datos hacia el sistema, entonces capturamos la hora inicial, hora final,
minuto inicial, minuto final porque es el principio básico de programación.
Dentro de la función Entry se hace referencia en v0, textvariable donde
tenemos las variables horaini, minini, horaf, minf. Luego .place que es el
lugar donde se va mandar a imprimir, coordenadas dentro de los límites
de la ventana padre que le pusimos 450x450 pixeles
# Etiquetas
label_hi=, label_mi=, label_hf=, label_mf=, esas etiquetas son colocadas a
la par de cajas de texto.
# Boton Save
Manda a llamar la función Save, que permite salvar la información y se
imprime en lugar específico x=300, y=200
Hasta este punto tenemos lo que es etiquetas, cajas de texto y botón
salvar:
Paso 30:
Como siguiente paso veremos lo que pasa cuando damos click en el botón
save (se captura la información o tiempo en cajas de texto).
Abrimos la terminal y escribimos el comando cd /etc/cron.d/ y enter, esta
es una ruta especifica
Se abre un directorio donde se encuentran todos los archivos que van
hacer tareas programadas en un momento determinado, fecha estipulada
(hora-minuto, día, mes y año) y escribimos el comando ls –l y ahí se
encuentran todos los archivos y tareas que tenemos pendiente de ejecutar
a una hora determinada.
Crearemos un archivo nuevo con el comando pico evento
Para programar el off.sh (apagado) como vemos es un archivo vacio que
tiene una estructura creada a través de la aplicación, se compone de 5
asteriscos * * * * * root /home/uth/off.sh
Primer asterisco son minutos, el segundo hora, el tercero dia, el cuarto
mes, el quinto año.
root es el usuario
/home/uth/ es la ruta
on.sh es el programa a ejecutar
Y lo guardamos con control o, enter y control x
Luego hacemos lo mismo pero para el on.sh (encendido). Creando otro
archivo con el comando pico evento1 siguiendo los mismos pasos que el
pico evento a excepcion que es on.sh
Entonces la ejecución del programa es esta:
Colocamos el tiempo de encendido y apagado, en minutos y hora.
A las 17:50 minutos se va encender el actuador y a las 17:52 se va a
apagar, le damos SAVE y esperemos que transcurra el tiempo. Cuando se
cumpla el tiempo de encendido vamos a ver lo siguiente:
Pero primero debemos escribir comando cd /home/ y enter luego ls enter,
luego cd uth, luego ls y enter, por ultimo escribiremos cat estado17.txt
enter para ver el valor de estado que será:
Como vemos el tiempo ya inicio por lo tanto está en estado 1.
Ahora que ya se cumplió el minuto 52 pasa a estado 0:
Paso 31:
Para saber si el programa se ejecuta o no, en cuanto al temporizador en
Cron entonces procedemos a revisar un archivo que sería la
representación de lo que haría la raspberry pi.
Dentro de cron se encuentran los archivos que vamos a usar (task1 y
task2) con los comandos:
cat /etc/cron.d
cd /etc/cron.d
ls\
Control c
ls –l
Pare ver el contenido dentro de task1 escribir el comando: cat task1
Donde el usuario root es el único encargado en ejecutar el programa
/home/uth/on.sh
Asi mismo ver el contenido dentro de task2 escribir el comando: cat task2
Donde el usuario root es el único encargado en ejecutar el programa
/home/uth/off.sh
Y cuando se ejecute esa hora en específico entonces va cambiar la
imagen en el CONTROL GPIO de ON a OFF indicando que se hizo
automáticamente vía programación de horario y no manualmente.
Paso 32:
Una vez descargadas las imágenes de on.sh y off.sh
Entonces usamos la aplicación FileZilla
Al abrirla, volvemos al emulador para saber la dirección inet con el
comendo ifconfig en mi caso es 192.168.1.50
Volvemos a FileZilla y colocamos lo siguiente:
Host: colocaremos la dirección inet que acabamos de leer en el emulador,
en mi caso coloqué 192.168.1.50
Username: colocamos el nombre del usuario que creamos en la máquina
virtual, en mi caso uth
Password: colocaremos la contraseña que establecimos en la caja virtual.
Port: colocaremos en puerto número 22 y damos click en Quickconnect.
Donde veremos la siguiente ventana:
Seleccionamos Ok
Y veremos que aparecen más archivos, que son los que están en Linux:
Ahora como siguiente punto, tenemos que arrastrar los archivos a la
carpeta uth o home para que de esa manera se agreguen en los archivos
del control.py
Paso 33:
Una vez hecho el paso 32. Volvemos a control.py
Seleccionamos la opción administrador de archivos
Donde vemos las imágenes que hemos pasado desde FileZilla:
Paso 34:
Ahora entramos al directorio de descargas, con el comando cd Descargas
enter y luego el comando ls –l
Procedemos a copiar esos 2 archivos, primero el off.gif con el comando:
cp off.gif /home/uth y enter
Luego copiamos el on.gif con el comando:
cp on.gif /home/uth y enter
Ahora vemos el contenido en el estado17 con el comando:
cat estado17.txt
echo 1
echo 1 ˃ estado17.txt
Ahora le damos privilegios de ejecución on.sh y off.sh:
Con el comando chmod -R 777 on.sh enter
Y chmod -R 777 off.sh enter
Y ejecutamos el programa para comprobar lo que acabamos de hacer.