Paso a Paso de mi Proyecto con el RaspBerry

Hola amigos, estoy aún trabajando el panel. Pero como soy muy lento en paralelo sigo mis estudios sobre Linux en general y sobre como modificar el Raspbian Jessie para que use el disco USB, leí que esto acelera el sistema. Además tengo el objetivo de controlar los colores de las 8 LED RGB como he escrito antes.

Resulta que en las investigaciones que estoy haciendo y mis estudios de Linux encontré datos relativos a Linux y sistemas embebidos y al número de PWM que puedo generar partiendo de una placa Raspi. Un libro, desafortunadamente para los lectores de este foro es en alemán que enseña "embedded Linux" y utiliza para esto la placa Raspi. El objetivo del libro es armar un Linux embebido propio que sea ejecutado en la placa Raspi. Voy a estudiar como parte de este proyecto el implementar una versión de Linux donde el Kernel normal es ejecutado en uno de los cores de un µCtrl. y el tal llamado "Cobalt en un segundo. Esto significa que la placa Raspi Zero es inadecuada por contener solo un core!
Me acabo de comprar un Raspi 3B, por lo que puedo utilizar mi Raspi B+ para esta parte del proyecto.

3 Libros sobre este tema son la literatura que acompaña el curso del profesor "Jürgen Quade". Sus lecturas están disponibles en el Internet como videos, lo mismo las notas tanto de sus lecturas como de las clases con los ejercicios. Un libro es el que acabo de mencionar y que utiliza la placa Raspi, el otro es sobre sistemas embebidos de tiempo real y el tercero sobre el escribir drivers para una implementación propia de Linux. Ya he comprado los primeros 2 y veré como avanzo la temática ya con mi flamante "panel"!

Lo que me gusta es que los libros tienen su foco en crear una implementación propia de Linux para sistemas embebidos usando la placa Raspi y no como es usual se dedican a instruir sobre Linux y sus administración! Para ello ya tengo los otros libros. Empieza haciendo un Kernel minimalista partiendo de los códigos source, aunque también da la posibilidad de cargar la imagen de tal Linux minimalista. Luego sigue implementando "drivers" sencillos. Veré si soy capaz de alcanzar la meta de crear un Kernel de Linux minimalista y de ir implementando drivers. También instruye sobre el uso de "U-Boot" para crear un bootloader específico para el Linux minimalista para la Raspi!

Mi intención es compartir con Ustedes estos "estudios/trabajos". De ese modo por un lado este reporte paso a paso contendrá toda la información requerida en Español, por otro lado estoy convencido que si logro presentar lo que hago esto me ayudará a realmente comprender lo que hago y estudio! Así preguntas críticas son no solo bienvenidas sino realmente deseadas!

25941080441_32934406fd_c.jpg


Para hacer la lectura del hilo mas amena voy poniendo fotos. esta foto muestra como la tensión de "-12 VDC", color verde, no solo es conectada con el interruptor, sino para esta tensión ya he creado el cableado que conecta 5 de los bujes atornillables relacionados con la tensión de "-12 VDC", sino ya también al listón de bujes atornillables sobre la misma tabla del panel haciendo así posible el remover el panel poniendo todas las conexiones de alimentación allí! Igualmente he decidido poner una segunda tabla sobre los bujes atornillables ocultando así todo el cableado que aquí está hecho completo solo para la tensión de "-12 VDC"! He decidido hacer el enchufe del cables de los bujes atornillables al buje banana de tal modo que tenga un enchufe adicional. Así me guardo la posibilidad de extender el panel agregando bujes banana para las tensiones. Para hacer imposible cortos accidentales he puesto un enchufe con su protector sobre este enchufe macho adicional, lo que oculta la parte conductiva. Haciendo esto me resultó que debo poner fusibles en las alimentaciones eléctricas antes de conectar estas al listón que aparece en esta foto.

A ver que solución le encuentro! Ideal sería un fusible que salte y se pueda cerrar después de quitar un corto de la línea. Debe ser un fusible de reacción rápida y creo que debe tener un valor entre 6 A y 10 A.
 
Última edición:
Para autoanimarme aquí mis últimas acciones:

25941080441_32934406fd_c.jpg


Sigo con mucha falta de auto motivación trabajando en el cableado del panel. En esta foto pueden ver el cable con el cual conecto los 5 enchufes atornillables al buje que está después del interruptor. Es un trabajo muy tedioso pues tengo que ir poniendo el alma del cables al aire, sin el aislamiento, para cada uno de los 5 enchufes. El primero es sencillo, solo dejar libre 1 cm y aplicarle estaño. Para los próximos 4 enchufes requiero 1 cm del cable aislado, luego 2 cm para crear una "punta" de 1 de largo y aplicarle estaño para poder fijarlo en su enchufe y al otro cabo del cable de 25 cm de largo otro trecho de 1 cm de largo con estaño al que aplico el enchufe hembra para conectarlo al buje banana. uso el tipo de enchufe que ofrece un enchufe macho adicional, como el que pueden ver en una foto de mi contribución anterior.

Así no solo tengo la "toma" para conectar la LED RGB, sino adicionalmente la posibilidad de ampliar el panel con bujes banana hembra adicionales.

25425597384_31ae906542_c.jpg


Esta foto muestra el cable que usaré para los +5 VDC antes de aplicarle el estaño.

26004412846_249c7bd821_c.jpg


Esta foto muestra el cableado completado para los "-12 VDC" y los "-5 VDC". Si miran con exactitud pueden ver los retos. Si miramos con detalle el cable blanco que suministra los "-5 VDC" a los bujes atornillables y conecta con el enchufe "macho" izquierdo se alcanza a ver el enchufe macho que toca el aislamiento color negro del cableado azul a su izquierda. Para evitar cortos accidentales pongo un enchufe hembra y su "capa" aisladora sobre el enchufe, se podría ver mirando con detalle el cableado verde a la derecha. La próxima foto muestra a que me refiero.

25425771164_696e826b2c_c.jpg


Así evito cortos accidentales y cuando quiera expandir mi panel con bujes banana hembra adicionales usaré este puesto para acceder a la tensión.

No había aún mencionado que otro lugar para cortos accidentales está en el punto donde hay 2 enchufes hembra atornillables vecinos de diferentes tensiones! Allí tendré que poner alguna barrera no conductible que haga imposible tal corto. Miren donde los bujes conectados al cable verde avecinan con aquel conectado al cable blanco! Un resultado de reflexiones sobre este tema me ha convencido que debo usar fusibles para proteger mi laboratorio en caso de corto. Un fusible en cada una de las 8 tensiones! Estoy aún reflexionando sobre mis requerimientos para tal fusible! No solo es definir a que amperaje debe interrumpir el flujo de corriente, sino también si debe ser de reacción rápida, mediana o lenta! Ideal sería usar fusibles que pudieran ser reactivados como aquellos usados en el sistema eléctrico de mi casa! Verdad que soy extremo en esto!
 
Bueno, finalmente el cableado para los bujes del panel y las 5 conexiones atornillables para cada tensión está hecha!

Debido a que el sitio que uso para guardar fotos tiene un problema que no me capacita subir fotos para incluir imágenes en el texto por "URL" tengo que hacer solo referencia a las imágenes adjuntas. Ademas he sido muy lerdo para captar como incluir la imagen de un adjunto al texto:

La primera foto muestra el cableado para los 8 pares de bujes con sus interruptores y las conexiones atornillables relacionadas. Finalmente encontré el ánimo y un camino viable para alimentar cada una de las 5 conexiones relacionadas a cada una de las hasta 8 tensiones para mi laboratorio electrónico. Mis objetivos eran hacer lo imposible que allí pueda ocurrir un corto. Así entre cada 5 conexiones atornillables hay una tablita de madera, hubiera preferido baquelita, que separa de forma garantizada que cables con diferentes valores de tensión puedan tocarse Cada bloque de 5 conexiones junto con su cableado están en una cajita! Para estabilidad mecánica puse una varilla en la cual encajan las tablitas! Finalmente, cuando esté verificado que todo está bien una tabla cubrirá esas cajitas haciendo imposible que algo caiga allí y cause un corto!

La segunda foto muestra en detalle 2 de esas cajitas!

Menciono que todo esto está relacionado a dar acceso al polo "positivo" de la tensión, todas tienen una tierra común que aún no aparece! Pongo "polo positivo" en comillas pues para las tensiones negativas, -12 VDC y -5 VDC estas también aparecen aquí!

La tercera foto muestra el panel montado en el dispositivo! La tabla que cubrirá las cajitas dejará el tornillo para fijar conexiones accesible y pienso cubrir la tablita con gráfico que en los colores sea como el cableado y muestre el valor de la tensión!
 

Adjuntos

  • Ansicht Panelrückseite.jpg
    Ansicht Panelrückseite.jpg
    159.5 KB · Visitas: 21
  • Detail_Panel-Verkabelung.jpg
    Detail_Panel-Verkabelung.jpg
    155.8 KB · Visitas: 20
  • Panel Frontansicht.jpg
    Panel Frontansicht.jpg
    121.3 KB · Visitas: 19
Hola amigos, ayer me llego la notificación de Pi HUT de la disponibilidad del Pi ZERO empezando por 4 libras esterlinas. Me compre un kit de iniciación para tener todo disponible para esa versión del RaspBerry Pi ZERO. Así pronto entraré a jugar!
 
Hola amigos, finalmente me estoy aproximando a tener mi entorno, mi taller electrónico listo para empezar con la parte experimental!

28091359785_3ea31c8c04_z.jpg


Aquí pueden ver mi flamante panel de alimentación eléctrica de mi laboratorio. No está listo, pues quiero experimentar con el Raspi ZERO para monitorear las tensiones, las corrientes de cada tensión y poder ver esa información en una ventana de mi PC. Con los letreritos de color, cada correspondiente al color de los bujes.

También quiero poner una LED RGB junto a los bujes y hacerla iluminar con el mismo color correspondiente a la tensión. Así que cuando activo el interruptor de uno de los bujes la LED RGB se iluminara en el color correspondiente. Ademas quiero poder controlar los PWMs de esos LEDs RGB. Para ello me compré en la China 2 placas, cada una pone 16 PWM. 3 PWM para regular los 3 colores de cada LED, da un total de 8x3 = 24 PWMs1 la Raspi Zero irá instalada en el panel.

Ademas quiero experimentar la mejor forma y aprenderla a realizar de realizar un fusible electrónico. Para ello la ZERO estará monitoreando la corriente de cada una de las 8 tensiones disponibles usando el RSon del MOSFET. Si la corriente sobrepasa algún valor que pueda definir libremente, entonces interrumpirá el circuito terminando la alimentación eléctrica de la tensión correspondiente.

28057064006_638127f92a_z.jpg


Aquí mi módulo para las placas Raspi que tengo, A+ (creo que es una), B+, ZERO, Raspi 2B y Raspi 3B. Los 5 interruptoresson para poder encender y apagar las 5 placas Raspi. Me falta un interruptor y en los huecos redondos pondré una LED roja. En la primera foto pueden ver lel módulo con la protoboard, donde me decidí por una resistencia de 270 R para las tensiones de 5 VDC con las que alimento las placas Raspi. Cada placa Raspi del módulo viene con un módulo wiFi, la Raspi 3B ya viene con el WiFi integrado.

Allí lo primero que haré es implementar la comunicación por WiFi con todos los trucos de seguridad, al menos con muchos de ellos! Al momento estoy operando mi PC con Ubuntu 16.04 TLS. Allí tengo el problema que no funciona el WiFi! Estos investigando el porque entre búsquedas en el Internet, recomendaciones de usuarios y el estudio de mis libros sobre Raspi. Publicaré lo que aprendo en este paso a paso!
 
Quiero mencionar, que porque a razón de mis primeros experimentos comunicándome con una placa Raspi por la red local y usando la nube, de algún modo que no entiendo lo suficiente aún para dar detalles aunque asumo tener una noción de las causas y las posibilidades de evitar que mi PC se vuelva a ser inutilizable debido a ataques exteriores. En mi PC tenía Windows 7 Ultimate 64 bits. Actualizándolo a Windows 10 me recupero mi PC.

Experimentando con la actualización de los drivers de mi PC acabé haciéndolo inoperable por tocan el RAID driver.

También la IDE que me he decidido usar, PyCharm de Jetbrains, ejecutándolo en el PC, usa SSL/TLS y las llaves para establecer una segura comunicación entre la IDE en el PC para comunicarse con el interpretador Python 3.5 que es ejecutado en la placa Raspi. Desafortunadamente para usar alguna cosa necesito tener un cierto nivel de comprensión de como funciona. hace unas semanas recibí la notificación de Coursera del inicio de un curso de cryptografía consistiendo de 2 partes, I y II y me inscribí a el. Aquí el enlace para quién tenga interés de usar el curso para profundizar sus conocimientos de cryptografía. El curso se puede tomar gratis, pero si se quiere recibir la certificación de haber aprobado el curso hay que pagar una pequeña suma.

Otro aspecto interesante son los materiales pra leer a los que se tiene acceso gracias al curso!
 
Última edición:
Bueno amigos, siguiendo mis trabajos en el taller, aquí la foto actual del módulo de placas Raspi.

27993384980_06c6639170_z.jpg


Primero pueden ver que finalmente encontré un quinto interruptor completando así estos para encender y apagar las 5 placas Raspi. Segundo pueden apreciar que he insertado los 5 LEDs rojos, que se iluminarán siempre cuando el interruptor cierra el circuito y alimenta la correspondiente placa Raspi. Para evitar que los trabajos que aún tengo que hacer por abajo del módulo arranquen la placa con los interruptores y LEDs de la placa de madera, usé 2 listones para reforzar el pegamento de esta placa a la madera. Visualmente esto se ve horroroso, por lo cual las volveré a quitar al final de los trabajos.

28196403281_0576682478_z.jpg


esta foto del módulo visto de abajo muestra 4 bujes que actualmente tengo insertados en la pared lateral del módulo. El negro, como debe ser, lo conectaré a la tierra del panel, los 2 amarillos por ahorra quedan sin utilizar. Debido a mis problemas de salud y la fascinación que me da el reflexionar sobre estos trabajos cuando estoy incapacitado, reflexiono bastante sobre el como realizar el siguiente paso para solucionar el objetivo de forma lo mas elegante posible. Algunas ideas resultan de reflexionar pasos anteriores.

27659176244_2ec3c997fd_z.jpg


Vayamos por pasos:

Los maderos gruesos usados en el módulo con ese recorte al que ven a la derecha, no tiene otra razón de ser, que el listón adecuado que tenía en mi inventario en otro uso pasado recibió aquel recorte que no tiene razón especial de ser aquí, fuera de no molestarme. Lo mismo ocurre con la pieza de aluminio que usé para distribuir los 5 VDC del buje de la pared lateral a los 5 interruptores. Resulta, que reflexionando sobre la opción de alimentar 3 tensiones diferentes al módulo gracias a los 3 bujes adicionales al de tierra en la pared lateral, esto también me brinda la oportunidad en un futuro uso del módulo tener que llevar diferentes tensiones a los 5 interruptores disponibles! Si por ejemplo modifico este módulo en un futuro para combinar no 5 placas Raspi, sino de reemplazar alguna contra el kit de evaluación para operar motores de paso:

23777264285_144c3713dd_z.jpg


Entonces necesitaría 3.3 VDC y 12 VDC o 24 VDC o valor de tensión mayor. §.§ VDC para placas que requieren 3.3 VDC y para alimentar el motor de paso, 12 VDC, 24 VDC, o mas. De allí resultó de mis reflexiones al ver la foto del módulo visto de bajo anterior en este hilo, que debo proveer mínimo 3 chapas a las cuales cada una sería alimentada con otra tensión y gracias a los enchufes de los cables que conectan los interruptores a la única chapa actual ( 5 VDC) podría conectarlos a tensiones alternativas!

De allí resulta que usaré listones de aluminio de 3 mm de grosor, para aplicarles las mismas 6 tomas usando igualmente huecos con rosca M 3. Estos listones estarán alineados al lado izquierdo. Pero de allí resulta que ahora también estoy reflexionado como realizar los circuitos a la derecha de los interruptores! Actualmente los 5 LEDs rojos incrustados en la placa de huecos tienen sus patitas pasados por sendos huecos de la segunda placa de huecos que ven aquí en la vista de abajo!

De cada conector de los interruptores a la derecha hay una bifurcación!

Una línea conecta a tierra en serie con el LED rojo y la resistencia que limita el flujo de la corriente por el LED. Al momento tenía previsto usar resistencias de 220 R, pues de allí resultan los LEDs rojos iluminados con una intensidad que me gusta. La corriente será de unos 12 mA. Si aplico tensiones mayores a los 5 VDC de ahora, 12 VDC, 24 VDC o mas, el valor de la resistencia será muy bajo resultando en un flujo de corriente excesiva, lo que exige que pueda incrementar el valor de las resistencias.

La otra línea que resulta de la bifurcación tendrá que ser conectada al cable, el cual tiene el conector microUSB insertado en la placa de un Raspi. ese cable pasará por un hueco de un diámetro lo mas pequeño posible al lado superior del módulo. Esos cables, cada uno, tengo que conectarlo a tierra y a la tensión que viene del interruptor correspondiente.

Como debo diseñar los circuitos del lado de abajo del módulo para apoyar las opciones y necesidades que acabo de listar? Se suma a esto, que el soldar la resistencia a una de las patitas del LED y luego aislarlas usando un tubo que se contrae por calor, no resulta en algo mecánicamente estable! Allí sale a luz la limitación tan molesta que me dan mis problemas de salud. Hoy por ejemplo no pude hacer nada. Esto debería ser sencillo de hacer, pero me resulta tan difícil. Gracias a Dios mi pasión por mi afición siempre me da el impulso para pelear por sobreponerme y seguir con ánimos positivos.

En paralelo hoy de noche fui capaz de seguir oyendo el curso de criptografia gratuito que tomo en el Internet de la Universidad de Stanford. Lo que me exige el seguir el curso son otras facultades y esta noche fui capaz de seguir. Voy por 2/3 partes de la materia de la primera semana del curso de 6 semanas. No es que tenga la ambición de volverme criptografo, pero el curso, que es de mucha calidad, me da los conocimientos para poderme dedicar a establecer conexiones entre las placas Raspi, el PC, otras placas y el Internet seguras de poder hacerlo de forma educada. Hay gran trecho entre ser capaz de crear sistemas criptográficos y de entender como funcionan diversos sistemas criptográficos, como se definen los conceptos de seguridad en la criptografía. No los voy a bombardear con detalles, pero en el curso gano noción de cuales aspectos tienen la seguridad de un sistema de comunicación, cuales técnicas existen, como funcionan y cuales tipos de ataques existen y como cada sistema es o no es vulnerable.
 
Hola amigos. Quiero presentar aquí:
1. El porqué trato de aprender algo sobre criptología.
2. El objetivo que quiero lograr estudiando esa materia.
3. Cuales no son mis objetivos.
4. Presentar de forma abstracta lo que voy aprendiendo por el camino de estos estudios.

@1: A razón de mis primeros experimentos para armarme el entorno para futuros experimentos ataques desde la nube rindieron mi PC inoperable. Para evitar que esto se repita, respectivamente para limitar estos riesgos y por haber sido informado de la existencia del curso de criptología de la universidad de Stanford, gratuito y por Internet, me decidí tomar ese curso. Ya anterior a tomar esa decisión encontré informaciones dentro del entorno de Linux de cuales partes y aspectos se prestan para crear una protección firme ante esos riesgos. Vale mencionar que si deseo que mis placa Raspi tengan un nexo al Internet. El explicar porqué no quiero hacerlo hoy aquí!

@2: Quiero que ese curso me de una noción sobre la materia de la criptología en relación a su uso como protección de ataques desde el Internet. El resultado debe ser los siguientes, sin ánimo que la lista en este momento fuera completa:
1. Conocer los tipos de técnicas de criptología usados para proteger la comunicación cuando esta pudiera ser sometida a ataques desde el Internet.
2. Tener una noción de como funcionan las diversas técnicas de estándares. Eso me permite escoger cuales técnicas aplicar en mis aplicaciones y tener una noción:
a. Cuales tipos de riesgos existen
b. Establecer el valor de las técnicas disponibles para los diferentes tipos de riesgos.
El resultado debe ser mi capacitación de tomar decisiones educadas sobre las opciones disponibles en diversos sitios de configuración relacionados a proteger la comunicación y mis participantes en esas comunicaciones, siendo esto mi PC, las placas Raspi, eventualmente mi smartphone como utensilio ejemplar para usar equipos externos que puedan accede las placas Raspi.

@3: Mi objetivo no es el poder diseñar y programar sistemas criptográficos. Como ejemplo es la importantísima función que cumplen las teorías de conjunto. Aquí me beneficio mucho de mis estudios de matemáticas que voy tomando como parte de mi proyecto de "Diseño por Modelación" en el contexto de mi proyecto de un modelo de velero. Realmente basta con saber leer y entender ecuaciones matemáticas y los símbolos usados allí! Pero entre saber "entender" algo expresado usando la simbología matemática, como son aquellos símbolos relacionados a la teoría de conjuntos, y el saber usar esas relaciones hay gran trecho. Trecho que no quiero recorrer y aún creo no será necesario.

@4. Trataré de presentar aquellos gráficos que me parecen claves para presentar los conceptos. Como escribí bajo "@3", las pruebas y las calculaciones aplicando tales ecuaciones no forman parte de mis objetivos.



Hola amigos. Quiero presentar aquí:
1. El porqué trato de aprender algo sobre criptología.
2. El objetivo que quiero lograr estudiando esa materia.
3. Cuales no son mis objetivos.
4. Presentar de forma abstracta lo que voy aprendiendo por el camino de estos estudios.

@1: A razón de mis primeros experimentos para armarme el entorno para futuros experimentos ataques desde la nube rindieron mi PC inoperable. Para evitar que esto se repita, respectivamente para limitar estos riesgos y por haber sido informado de la existencia del curso de criptología de la universidad de Stanford, gratuito y por Internet, me decidí tomar ese curso. Ya anterior a tomar esa decisión encontré informaciones dentro del entorno de Linux de cuales partes y aspectos se prestan para crear una protección firme ante esos riesgos. Vale mencionar que si deseo que mis placa Raspi tengan un nexo al Internet. El explicar porqué no quiero hacerlo hoy aquí!

@2: Quiero que ese curso me de una noción sobre la materia de la criptología en relación a su uso como protección de ataques desde el Internet. El resultado debe ser los siguientes, sin ánimo que la lista en este momento fuera completa:
1. Conocer los tipos de técnicas de criptología usados para proteger la comunicación cuando esta pudiera ser sometida a ataques desde el Internet.
2. Tener una noción de como funcionan las diversas técnicas de estándares. Eso me permite escoger cuales técnicas aplicar en mis aplicaciones y tener una noción:
a. Cuales tipos de riesgos existen
b. Establecer el valor de las técnicas disponibles para los diferentes tipos de riesgos.
El resultado debe ser mi capacitación de tomar decisiones educadas sobre las opciones disponibles en diversos sitios de configuración relacionados a proteger la comunicación y mis participantes en esas comunicaciones, siendo esto mi PC, las placas Raspi, eventualmente mi smartphone como utensilio ejemplar para usar equipos externos que puedan accede las placas Raspi.

@3: Mi objetivo no es el poder diseñar y programar sistemas criptográficos. Como ejemplo es la importantísima función que cumplen las teorías de conjunto. Aquí me beneficio mucho de mis estudios de matemáticas que voy tomando como parte de mi proyecto de "Diseño por Modelación" en el contexto de mi proyecto de un modelo de velero. Realmente basta con saber leer y entender ecuaciones matemáticas y los símbolos usados allí! Pero entre saber "entender" algo expresado usando la simbología matemática, como son aquellos símbolos relacionados a la teoría de conjuntos, y el saber usar esas relaciones hay gran trecho. Trecho que no quiero recorrer y aún creo no será necesario.

@4. Trataré de presentar aquellos gráficos que me parecen claves para presentar los conceptos. Como escribí bajo "@3", las pruebas y las calculaciones aplicando tales ecuaciones no forman parte de mis objetivos.





27795910363_fcf0844987_z.jpg


Este gráfico de forma que considero elegante y sencilla presenta que es el entorno en el cual la criptografía cumple su función en proteger comunicaciones.

En esto de la criptografía y en la comunicación se denomina el partido que quiere iniciar y mandar datos como "Alice", en breve "A" y el destinatario de tales datos "Bob", en breve "B". El dato se denomina como mensaje (m) y la llave usado para proteger el mensaje "m" se denomina como "k".

También se indica en este gráfico, que "A" y "B" tienen que tener una llave "k" antes de intercambiar mensajes.

Vemos en el gráfico superior de forma gráfica el interambio de mensajes entre Alice y Bob y se indica donde un posible atacante entra en el juego. El como Alice y Bob llegan a tener una llave "k" secreta y solo sabida por ambos no es presentado aún en el curso. Así que por ahora debemos suponer que Alice y Bob tienen una llave "k" secreta y que sta se utilizará para proteger el intercambio de mensajes "m".

El gráfico abajo presenta 2 términos:
"confidentiality" el contenido del mensaje no es accesible para atacabtes.
"integrity" el mensaje que Bob recibe no a sido modificado y representa el mensaje tal cual Alice lo mandó.

28128972310_9879725d01_z.jpg


Este gráfico favor solo lo presento como dato adicional y que representa el como un profesional criptólogo aplica criptografía para implementar mecanismos de protección! Los 3 pasos que presenta el gráfico son:
1. Definir exactamente que riesgo queremos combatir.

Esto expresa que para diferentes clases de ataque se requieren diferentes medidas de protección. Un ejemplo evidente es si por ejemplo un ladrón entra al sitio físico donde está el PC de Alice y usando una memoria USB roba el mensaje. O si alguién le prende fuego al sitió físico y destruye el PC de Alice. Limitándonos a aceptar que aparentemente existen también diferentes posibilidades de atacar un mensaje, también a nivel electrónico y en la comunicación damos un primer paso.

El segundo paso para especificar y para nosotros entender que existen tales aspectos para calificar riesgos no mas brevemente los siguientes ejemplos:
a. El mensaje que Bob recibe realmente es el mensaje que Alice mandó, no ha sido modificado.
b. El mensaje que Bob Recibe realmente viene de Alice y no de un atacante.

Especificando los tipos de riesgos de los que me quiero proteger diseño propongo una solución.

Prueba que la solución realmente protege de los riesgos especificados. Para mi, y así claramente limito mis objetivos, yo "diseño" mi protección usando lo que el entorno estándar me ofrece. Me limito a establecer el valor de los parámetros disponibles para la configuración de mis placas Raspi y del PC. Lo que si espero tener al completar el estudio del curso de criptología es tener una noción bastante completa de los tipos de ataques, riesgos que existen y cual función tienen las herramientas que ofrece mi entorno y cuales herramientas existen para cuales riesgos!

Puede que esto les suene confuso. pero yo realmente me espero ganar la noción de una amplia gama de riesgos, de las herramientas de protección que existen, de como configurar estas, conociendo, respectivamente teniendo una noción de las posibilidades de ataques y riesgos que existen. Investigando en el Internet, lo que siempre se vuelve a confirmar es, que los usuarios no usan las herramientas existentes, no las configuran de forma apropiada y no determinan para si mismos de como proceder de forma responsable para reducir los riesgos. Quiero terminar esta configuración por el momento indicando algo que el curso también hace:

Nunca usar métodos de protección "nuevas" inventadas por uno mismo! Existen un número gigante de personas que desde hace mucho tiempo y con muchos recursos, no piensen sino en la NSA gringa estudian los métodos de la criptografía aplicada para encontrar el como poder encontrar un punto débil. Así lo que el curso recomienda es el solo usar métodos estandardizados. estos han sobrevivido años y miles de horas de personas buscando el como atacar exitósamente.
 
Última edición:
El curso sigue dando una breve introducción a las probabilidades. No lo voy a repetir aquí, pero quiero indicar que visualizando las probabilidades usando gráficos como es usual en la teoría de conjuntos se obtiene algo fácil de comprender si tenemos en mente que el objetivo que tengo no es el calcular por ejemplo aquí probabilidades. Lo que si creo deber de presentar es como se define un evento en este contexto. Un evento es algo que ocurre en una fracción del total de probabilidades. Tomemos como ejemplo un bit. Cada bit puede tener uno de 2 valores, "0" o "1". Así la probabilidades de que resulte un "0" es igual a aquella que resulte un "1", así la probabilidad es de 1/2 para "0" y de 1/2 para "1" y la probabilidad que un bit tenga el valor "0" o "1" es la suma de las probabilidades:
1/2 + 1/2 = 1
Cuando cada valor tiene la misma probabilidad que cualquier otro valor, entonces la suma es "1". Así, definimos como "evento" que el valor del bit sea por ejemplo "1". La probabilidad que el evento ocurra por lo tanto es 1/2.

28335032691_69847db52d_z.jpg


Aquí tomo este gráfico como ejemplo de que las herramientas de la teoría de conjuntos es aplicada a establecer las probabilidades. No entro mas en detalles, pero pueden ver que la probabilidades de un evento están relacionadas a las probabilidades individuales de sus elementos aplicando las leyes de la teoría de conjunto.

El curso, que como ya he mencionado es gratuito, ofrece materiales para leer y estudiar los temas presentados en el curso. Allí pueden informarse, adicionalmente al curso los aspectos de las probabilidades.

Aquí la imagen del curso. Aquí se calcula la probabilidad de que en un byte los últimos 2 bits tengan el valor de "1,1".
Un byte tiene 8 bits de lo cual resulta que existen 256 combinaciones diferentes de bits en un byte. La probabilidad de todas las combinaciones de bits en el byte sea igual, por lo cual cada posible combinación tiene la probabilidad de 1/256. Eso es lo que el curso llama distribución uniforme. Siendo así miremos el número de combinaciones posibles de los primeros 6 bits del byte:
2⁶ = 64
De allí resulta que 256 combinaciones posibles con los primeros 6 bits pueden tener la combinación de "1,1" en los 2 bits restantes!
64 * 1/256 = 64/256 = 1/4!

28335223571_1538c1cb45_z.jpg
 
Otra herramienta muy importante de la criptología que permite ver sin entrar en muchos detalles una funcionalidad tipo sistema de como se trabaja:

Es la adición binaria modulo 2. Sabemos que todo dato en la comunicación es una secuencia de bits, de "o" y "1".

27855641214_532a410251_z.jpg


A la derecha de la imagen aparecen 2 secuencias de bits, 7, que son de ser sumadas usando "XOR" "[LATEX]\oplus[/LATEX]". la suma aquí se realiza como sigue, de la primera columna a la izquierda hacia la derecha:

"0" + "1" = "1" resulta "1" en la primera columna
"1" + "0" = "1" resulta "1" en la segunda columna
"1" + "1" = "10" resulta "0" en la tercera columna
"0" + "1" = "1" resulta "1" en la cuarta columna
"1" + "0" = "1" resulta "1" en la quinta columna
"1" + "1" = "10" resulta "0" en la sexta columna
"1" + "0" = "1" resulta "1" en la séptima columna

Así el resultado es "1101101"

Asumamos que el renglón superior de la suma representa un mensaje
sigamos asumando que el segundo renglón representa una llave y que la suma representa el mensaje no legible, por lo tanto encriptado.

Repitamos el cómputa de la imagen, pero ahora reemplazando el renglón superior por el resultado de la suma, el mensaje ahora no legible:

1 1 0 1 1 0 1 [LATEX]\oplus[/LATEX]
1 0 1 1 0 1 0 el resultado vuelve a ser nuestro mensaje original:

0 1 1 0 1 1 1

Esto representa un ejemplo de un tal llamado cypher. Un mensaje "m" se encripta sometiendolo a la operación [LATEX]\oplus[/LATEX] bit por bit con lo que llamamos "k", llave, resultando en algo que llamamos "c". El mensaje no legible. Volvemos a repetir el [LATEX]\oplus[/LATEX] bit por bit de "c" con "k" volvemos a tener "m".

Pueden ver que para tratar de explicar esto escribo mucho texto y queda cuestionable que todo lector lo entienda correctamente y de la misma forma. Repitamos esto usando simbología matemática:

27856245754_19dba87a04_z.jpg


La letra "K" escrita en esta forma: " [LATEX]\mathcal {K}[/LATEX] " se refiere al conjunto que contiene todas las llaves posibles. O dicho de otra forma: toda llave que pueda ser utilizada conforma los elementos del conjunto " [LATEX]\mathcal {K}[/LATEX] ".
De forma equivalente, todo los mensajes que pudiéramos generar forman el segundo conjunto " [LATEX]\mathcal {M}[/LATEX] ", una letra "M" escrita de esta forma!
Finalmente todo documento no legible, encriptado, que resulte de aplicar una llave "k" a ese mensaje "m", es elemento del conjunto " [LATEX]\mathcal {C}[/LATEX].

Un cipher consiste de 2 funciones.

La una "E", función para encriptar un mensaje es como sigue:

[LATEX]\mathcal {K}[/LATEX] x [LATEX]\mathcal {M}[/LATEX] [LATEX]\rightarrow[/LATEX] [LATEX]\mathcal {C}[/LATEX]

La una "D", función para decriptar un mensaje, para recuperar el mensaje mandado por Alice legible es como sigue:

[LATEX]\mathcal {K}[/LATEX] x [LATEX]\mathcal {C}[/LATEX] [LATEX]\rightarrow[/LATEX] [LATEX]\mathcal {M}[/LATEX]

Como podemos ver mirando el ejemplo arriba del "XOR" ambas condiciones son cumplidas mereciendo ser llamado "cipher, es mas "cipher simétrico". No entremos en mas detalle, eso es cosa de un curso como aquel que indico mas arriba!

Pero lo que quiero mostrar aún, es el último renglón de la imagen arriba:

" [LATEX]\forall[/LATEX] " es un símbolo que simplemente significa "para todos"

" [LATEX]\in[/LATEX] " es un símbolo que simplemente significa "elemento de"

Por lo tanto los símbolos

" [LATEX]\forall m \in \mathcal {M}[/LATEX], k [LATEX]\in \mathcal {K}[/LATEX] : " significa:

Para todos los mensajes "m" del conjunto [LATEX]\mathcal {M} [/LATEX] y la llave "k" del conjunto [LATEX]\in \mathcal {K}[/LATEX] vale:

D(k, E(k, m)) = "m".

Miremos lo que dice esta expresión matemática tomando el ejemplo de los 7 bit y el "XOR":

La ecuación para decriptar un mensaje encriptado que presente arriba:

D: [LATEX]\mathcal {K}[/LATEX] x [LATEX]\mathcal {C}[/LATEX] [LATEX]\rightarrow[/LATEX] [LATEX]\mathcal {M}[/LATEX]

Esta ecuación para decriptar un mensaje expresa usando el entorno de conjuntos, que no es mas que hablar que cualquier llave "k" vuelta a ser aplicada al mensaje encriptado nos vuelve a dar el mensaje original! Modificando esta ecuación y refiriendo nos a algunos valores específicos reemplazamos las letras en mayúscula escrita a letras normales en minúscula:

D: (k, c) = m

Reemplazamos la "c" en esta ecuación por la otra ecuación donde se encripta el mensaje:

[LATEX]\mathcal {K}[/LATEX] x [LATEX]\mathcal {M}[/LATEX] [LATEX]\rightarrow[/LATEX] [LATEX]\mathcal {C}[/LATEX]

y aplicamos esa ecuación a la misma llave "k" y el mensaje no legible encriptado "c", reemplazando la "c" de nuestra funciòn para un par de valores específicos:
E: k x m = c : c = E(k x m)

D: (k, E(k,m)) = m

Expresándolo mas sencillo:

Si aplicamos a un mensaje no legible la misma llave con la cual fue encriptada volvemos a tener el mensaje original!

Poniendolo en relación a "Alice" que encripta un mensaje "m" usando la llave "k" genera un dato encriptado "c". Bob que recibe "c" vuelve a aplicar la misma llave "k" ahora a la función de decriptar "D" tiene como resultado el mensaje original "m". En el caso sencillo de usar el "XOR", [LATEX]\oplus[/LATEX], tanto la función "E" como la función "D" son la misma función "XOR"!

El profesor que da el curso de criptología menciona un chiste que dice que todo lo que deben saber criptólogos es aplicar la función "XOR"!

Este ejemplo sencillo que seguro está siendo presentado de forma muy superior a mi de aplicar "XOR" para encriptar "E" y decriptar "D" a mi me da una noción del objetivo de una función de criptología simétrica. usando una llave común "Alice" y "Bob" pueden encriptar su comunicación para dar cierta protección a su comunicación!

Pero recordemos que la ciencia de criptología busca métodos que "Alice" pueda encriptar, "E", mensajes "m" usando llaves privadas "k" y que permitan a "Bob" decriptar, "D", lo que recibe "c" usando la misma llave privada "k" y así tener el mensaje "m". Toma en consideración que las herramientas para descubrir el mensaje "m" por un atacante teniendo cada vez computadores mas potentes, funciones mas sofisticadas. Para ello el criptólogo analiza las probabilidades que el atacante pueda decriptar el mensaje "m". Su objetivo es en el caso ideal que el atacante no tenga probabilidad alguna, o una probabilidad de "0". Y a razón de esto y entendiendo propiedades de los métodos de encriptar y decriptar va desarrollando métodos que tengan una probabilidad lo suficientemente baja de ser decriptados sin tener la llave.
 
Última edición:
Hola amigos, como mi salud y dolores de los dientes con inflamación del lado derecho de mi mandíbula me impiden avanzar mas rápido con mis trabajos aquí presentados, uso el tiempo tratando de avanzar en áreas que me van a ser de valor en mis experimentos y en las funcionalidades que pienso realizar. Uno de los temas, que además por el interés que despiertan en mi me ayuda sobreponerme y estudiar. Hablo aquí por ejemplo del realizar GUIs, interfaces gráficas para controlar mis experimentos. Debido a que mis investigaciones parecen indicarlo, me he decidido por usar Qt en su versión 5, breve Qt5. Como sistema para mis trabajos estoy utilizando mi PC con Ubuntu 16.04 TLS, que es la versión mas actual estable y que persistirá mínimo 2 años mas. No fue nada fácil lograr la instalación en Ubuntu, entender el resultado de la instalación y crear el símbolo para abrir el programa en el listón de aplicaciones en Ubuntu que aparece en el costado izquierdo de mi pantalla principal. Una vez logrado me acabo sorprendiendo que tan simple es lograr esto, lo que dice mucho sobre mi limitada experiencia can Linux.

En Ubuntu tengo varias formas de instalar un programa:

1. Usando el programa que se activa pinchando el símbolo "Ubuntu Software" en el listón en la pantalla- Esta función muestra todos los programas que Ubuntu conoce y ofrece botones junto al símbolo de cada programa para "Instalar" o "Quitar" el programa. Además ofrece como "filtro" el mostar todos los programas que conoce, o solo aquellos instalados. Cuando lo que buscamos aparece, entonces esto es un buen camino. Si usando la funcionalidad para buscar un cierto programa resulta de no conocerlo, entonces otros caminos se ofrecen.

2. Para ver si "por accidente" ya hemos instalado el programa se puede abrir una ventana de "Terminal", donde se tiene acceso a Ubuntu a nivel sin gráficos, sin GUI, escribir el nombre del programa y ver si se abre! Resulta que Linux hace una diferencia entre letras en mayúscula y minúscula y por que no se sabe exactamente como el programa buscado es conocido por Ubuntu, vale experimentar un poco. El programa "Mathematica" de Wolfram por ejemplo es arrancado escribiendo el nombre solo en minúsculas!

3. Usar la función de Linux "apt-get" y tratar de iniciar la instalación del programa deseado. Esto se beneficia de la forma, muy diferente a "Windows" de Linux para acceder programas. Programas son agregados por el proveedor en una base de datos de "paquetes"! En ella no solo se archivan los programas para instalar un programa, sino también las dependencias que ese programa tiene de otros programas o funciones para ser ejecutado. Usando el renglón de comamdo de Linux:

sudo apt-get Install "nombre del programa"

Esto hace que se busca si el programa deseado existe en esta base de "paquetes" y se empieza con el proceso de instalación del programa.

4. Si el proveedor no ha puesto su programa en esa base de "paquetes" entonces usando el Browser, yo por ejemplo uso "Chrome", se baja el programa desde el sitio del proveedor, tal cual ocurre usando Windows. El resultado es un archivo empaquetando la software y depositándolo en "Downloads".

Así hay que tener instalado un programa para sacar el contenido de ese archivo empaquetado resultando en tener una carpeta en la carpeta "Downloads". Ahora resulta que no siempre está claro a cual carpeta hay que mover la carpeta descargada para corresponder con los requerimientos del programa. Por lo general "/usr" es el lugar. entonces se ejecuta el programa de instalación, que en muchos casos es un "escript" de "bash" por ejemplo. Entonces se usa "sh" "nombre de instalador".sh. Pero como escribo, no siempre es así!

El resultado de estas diferentes formas de instalar un programa en Ubuntu no siempre resulta en obtener un símbolo del programa en el listón de programas, donde uno graba el símbolo, obteniendo así una forma de arrancar el programa. A veces es necesario "masajear" un poco el programa para poder ponerlo en el listón. Pero también ocurre, como es el caso en mi PC con Mathematica, que el símbolo vuelve a desaparecer del listón en la pantalla. Entonces abriendo una ventana "Terminal" escribo "mathematica" y el programa arranca. Otros programas o utilidades de programas hay que ir a la carpeta donde se encuentra y arrancarla allí. Para evitarse eso hay que sumar el "enlace" a esa carpeta específica en la lista. Conocemos todos esto de Windows con las "PATH"!
 
Última edición:
Hola amigos, como mi salud y dolores de los dientes con inflamación del lado derecho de mi mandíbula me impiden avanzar mas rápido con mis trabajos aquí presentados, uso el tiempo tratando de avanzar en áreas que me van a ser de valor en mis experimentos y en las funcionalidades que pienso realizar. Uno de los temas, que además por el interés que despiertan en mi me ayuda sobreponerme y estudiar. Hablo aquí por ejemplo del realizar GUIs, interfaces gráficas para controlar mis experimentos. Debido a que mis investigaciones parecen indicarlo, me he decidido por usar Qt en su versión 5, breve Qt5. Como sistema para mis trabajos estoy utilizando mi PC con Ubuntu 16.04 TLS, que es la versión mas actual estable y que persistirá mínimo 2 años mas. No fue nada fácil lograr la instalación en Ubuntu, entender el resultado de la instalación y crear el símbolo para abrir el programa en el listón de aplicaciones en Ubuntu que aparece en el costado izquierdo de mi pantalla principal. Una vez logrado me acabo sorprendiendo que tan simple es lograr esto, lo que dice mucho sobre mi limitada experiencia can Linux.

En Ubuntu tengo varias formas de instalar un programa:

1. Usando el programa que se activa pinchando el símbolo "Ubuntu Software" en el listón en la pantalla- Esta función muestra todos los programas que Ubuntu conoce y ofrece botones junto al símbolo de cada programa para "Instalar" o "Quitar" el programa. Además ofrece como "filtro" el mostar todos los programas que conoce, o solo aquellos instalados. Cuando lo que buscamos aparece, entonces esto es un buen camino. Si usando la funcionalidad para buscar un cierto programa resulta de no conocerlo, entonces otros caminos se ofrecen.

2. Para ver si "por accidente" ya hemos instalado el programa se puede abrir una ventana de "Terminal", donde se tiene acceso a Ubuntu a nivel sin gráficos, sin GUI, escribir el nombre del programa y ver si se abre! Resulta que Linux hace una diferencia entre letras en mayúscula y minúscula y por que no se sabe exactamente como el programa buscado es conocido por Ubuntu, vale experimentar un poco. El programa "Mathematica" de Wolfram por ejemplo es arrancado escribiendo el nombre solo en minúsculas!

3. Usar la función de Linux "apt-get" y tratar de iniciar la instalación del programa deseado. Esto se beneficia de la forma, muy diferente a "Windows" de Linux para acceder programas. Programas son agregados por el proveedor en una base de datos de "paquetes"! En ella no solo se archivan los programas para instalar un programa, sino también las dependencias que ese programa tiene de otros programas o funciones para ser ejecutado. Usando el renglón de comamdo de Linux:

sudo apt-get Install "nombre del programa"

Esto hace que se busca si el programa deseado existe en esta base de "paquetes" y se empieza con el proceso de instalación del programa.

4. Si el proveedor no ha puesto su programa en esa base de "paquetes" entonces usando el Browser, yo por ejemplo uso "Chrome", se baja el programa desde el sitio del proveedor, tal cual ocurre usando Windows. El resultado es un archivo empaquetando la software y depositándolo en "Downloads".

Así hay que tener instalado un programa para sacar el contenido de ese archivo empaquetado resultando en tener una carpeta en la carpeta "Downloads". Ahora resulta que no siempre está claro a cual carpeta hay que mover la carpeta descargada para corresponder con los requerimientos del programa. Por lo general "/usr" es el lugar. entonces se ejecuta el programa de instalación, que en muchos casos es un "escript" de "bash" por ejemplo. Entonces se usa "sh" "nombre de instalador".sh. Pero como escribo, no siempre es así!

El resultado de estas diferentes formas de instalar un programa en Ubuntu no siempre resulta en obtener un símbolo del programa en el listón de programas, donde uno graba el símbolo, obteniendo así una forma de arrancar el programa. A veces es necesario "masajear" un poco el programa para poder ponerlo en el listón. Pero también ocurre, como es el caso en mi PC con Mathematica, que el símbolo vuelve a desaparecer del listón en la pantalla. Entonces abriendo una ventana "Terminal" escribo "mathematica" y el programa arranca. Otros programas o utilidades de programas hay que ir a la carpeta donde se encuentra y arrancarla allí. Para evitarse eso hay que sumar el "enlace" a esa carpeta específica en la lista. Conocemos todos esto de Windows con las "PATH"!



Hola amigos, como mi salud y dolores de los dientes con inflamación del lado derecho de mi mandíbula me impiden avanzar mas rápido con mis trabajos aquí presentados, uso el tiempo tratando de avanzar en áreas que me van a ser de valor en mis experimentos y en las funcionalidades que pienso realizar. Uno de los temas, que además por el interés que despiertan en mi me ayuda sobreponerme y estudiar. Hablo aquí por ejemplo del realizar GUIs, interfaces gráficas para controlar mis experimentos. Debido a que mis investigaciones parecen indicarlo, me he decidido por usar Qt en su versión 5, breve Qt5. Como sistema para mis trabajos estoy utilizando mi PC con Ubuntu 16.04 TLS, que es la versión mas actual estable y que persistirá mínimo 2 años mas. No fue nada fácil lograr la instalación en Ubuntu, entender el resultado de la instalación y crear el símbolo para abrir el programa en el listón de aplicaciones en Ubuntu que aparece en el costado izquierdo de mi pantalla principal. Una vez logrado me acabo sorprendiendo que tan simple es lograr esto, lo que dice mucho sobre mi limitada experiencia can Linux.

En Ubuntu tengo varias formas de instalar un programa:

1. Usando el programa que se activa pinchando el símbolo "Ubuntu Software" en el listón en la pantalla- Esta función muestra todos los programas que Ubuntu conoce y ofrece botones junto al símbolo de cada programa para "Instalar" o "Quitar" el programa. Además ofrece como "filtro" el mostar todos los programas que conoce, o solo aquellos instalados. Cuando lo que buscamos aparece, entonces esto es un buen camino. Si usando la funcionalidad para buscar un cierto programa resulta de no conocerlo, entonces otros caminos se ofrecen.

2. Para ver si "por accidente" ya hemos instalado el programa se puede abrir una ventana de "Terminal", donde se tiene acceso a Ubuntu a nivel sin gráficos, sin GUI, escribir el nombre del programa y ver si se abre! Resulta que Linux hace una diferencia entre letras en mayúscula y minúscula y por que no se sabe exactamente como el programa buscado es conocido por Ubuntu, vale experimentar un poco. El programa "Mathematica" de Wolfram por ejemplo es arrancado escribiendo el nombre solo en minúsculas!

3. Usar la función de Linux "apt-get" y tratar de iniciar la instalación del programa deseado. Esto se beneficia de la forma, muy diferente a "Windows" de Linux para acceder programas. Programas son agregados por el proveedor en una base de datos de "paquetes"! En ella no solo se archivan los programas para instalar un programa, sino también las dependencias que ese programa tiene de otros programas o funciones para ser ejecutado. Usando el renglón de comamdo de Linux:

sudo apt-get Install "nombre del programa"

Esto hace que se busca si el programa deseado existe en esta base de "paquetes" y se empieza con el proceso de instalación del programa.

4. Si el proveedor no ha puesto su programa en esa base de "paquetes" entonces usando el Browser, yo por ejemplo uso "Chrome", se baja el programa desde el sitio del proveedor, tal cual ocurre usando Windows. El resultado es un archivo empaquetando la software y depositándolo en "Downloads".

Así hay que tener instalado un programa para sacar el contenido de ese archivo empaquetado resultando en tener una carpeta en la carpeta "Downloads". Ahora resulta que no siempre está claro a cual carpeta hay que mover la carpeta descargada para corresponder con los requerimientos del programa. Por lo general "/usr" es el lugar. entonces se ejecuta el programa de instalación, que en muchos casos es un "escript" de "bash" por ejemplo. Entonces se usa "sh" "nombre de instalador".sh. Pero como escribo, no siempre es así!

El resultado de estas diferentes formas de instalar un programa en Ubuntu no siempre resulta en obtener un símbolo del programa en el listón de programas, donde uno graba el símbolo, obteniendo así una forma de arrancar el programa. A veces es necesario "masajear" un poco el programa para poder ponerlo en el listón. Pero también ocurre, como es el caso en mi PC con Mathematica, que el símbolo vuelve a desaparecer del listón en la pantalla. Entonces abriendo una ventana "Terminal" escribo "mathematica" y el programa arranca. Otros programas o utilidades de programas hay que ir a la carpeta donde se encuentra y arrancarla allí. Para evitarse eso hay que sumar el "enlace" a esa carpeta específica en la lista. Conocemos todos esto de Windows con las "PATH"!



Hola amigos, como mi salud y dolores de los dientes con inflamación del lado derecho de mi mandíbula me impiden avanzar mas rápido con mis trabajos aquí presentados, uso el tiempo tratando de avanzar en áreas que me van a ser de valor en mis experimentos y en las funcionalidades que pienso realizar. Uno de los temas, que además por el interés que despiertan en mi me ayuda sobreponerme y estudiar. Hablo aquí por ejemplo del realizar GUIs, interfaces gráficas para controlar mis experimentos. Debido a que mis investigaciones parecen indicarlo, me he decidido por usar Qt en su versión 5, breve Qt5. Como sistema para mis trabajos estoy utilizando mi PC con Ubuntu 16.04 TLS, que es la versión mas actual estable y que persistirá mínimo 2 años mas. No fue nada fácil lograr la instalación en Ubuntu, entender el resultado de la instalación y crear el símbolo para abrir el programa en el listón de aplicaciones en Ubuntu que aparece en el costado izquierdo de mi pantalla principal. Una vez logrado me acabo sorprendiendo que tan simple es lograr esto, lo que dice mucho sobre mi limitada experiencia can Linux.

En Ubuntu tengo varias formas de instalar un programa:

1. Usando el programa que se activa pinchando el símbolo "Ubuntu Software" en el listón en la pantalla- Esta función muestra todos los programas que Ubuntu conoce y ofrece botones junto al símbolo de cada programa para "Instalar" o "Quitar" el programa. Además ofrece como "filtro" el mostar todos los programas que conoce, o solo aquellos instalados. Cuando lo que buscamos aparece, entonces esto es un buen camino. Si usando la funcionalidad para buscar un cierto programa resulta de no conocerlo, entonces otros caminos se ofrecen.

2. Para ver si "por accidente" ya hemos instalado el programa se puede abrir una ventana de "Terminal", donde se tiene acceso a Ubuntu a nivel sin gráficos, sin GUI, escribir el nombre del programa y ver si se abre! Resulta que Linux hace una diferencia entre letras en mayúscula y minúscula y por que no se sabe exactamente como el programa buscado es conocido por Ubuntu, vale experimentar un poco. El programa "Mathematica" de Wolfram por ejemplo es arrancado escribiendo el nombre solo en minúsculas!

3. Usar la función de Linux "apt-get" y tratar de iniciar la instalación del programa deseado. Esto se beneficia de la forma, muy diferente a "Windows" de Linux para acceder programas. Programas son agregados por el proveedor en una base de datos de "paquetes"! En ella no solo se archivan los programas para instalar un programa, sino también las dependencias que ese programa tiene de otros programas o funciones para ser ejecutado. Usando el renglón de comamdo de Linux:

sudo apt-get Install "nombre del programa"

Esto hace que se busca si el programa deseado existe en esta base de "paquetes" y se empieza con el proceso de instalación del programa.

4. Si el proveedor no ha puesto su programa en esa base de "paquetes" entonces usando el Browser, yo por ejemplo uso "Chrome", se baja el programa desde el sitio del proveedor, tal cual ocurre usando Windows. El resultado es un archivo empaquetando la software y depositándolo en "Downloads".

Así hay que tener instalado un programa para sacar el contenido de ese archivo empaquetado resultando en tener una carpeta en la carpeta "Downloads". Ahora resulta que no siempre está claro a cual carpeta hay que mover la carpeta descargada para corresponder con los requerimientos del programa. Por lo general "/usr" es el lugar. entonces se ejecuta el programa de instalación, que en muchos casos es un "escript" de "bash" por ejemplo. Entonces se usa "sh" "nombre de instalador".sh. Pero como escribo, no siempre es así!

El resultado de estas diferentes formas de instalar un programa en Ubuntu no siempre resulta en obtener un símbolo del programa en el listón de programas, donde uno graba el símbolo, obteniendo así una forma de arrancar el programa. A veces es necesario "masajear" un poco el programa para poder ponerlo en el listón. Pero también ocurre, como es el caso en mi PC con Mathematica, que el símbolo vuelve a desaparecer del listón en la pantalla. Entonces abriendo una ventana "Terminal" escribo "mathematica" y el programa arranca. Otros programas o utilidades de programas hay que ir a la carpeta donde se encuentra y arrancarla allí. Para evitarse eso hay que sumar el "enlace" a esa carpeta específica en la lista. Conocemos todos esto de Windows con las "PATH"!



Hola amigos, como mi salud y dolores de los dientes con inflamación del lado derecho de mi mandíbula me impiden avanzar mas rápido con mis trabajos aquí presentados, uso el tiempo tratando de avanzar en áreas que me van a ser de valor en mis experimentos y en las funcionalidades que pienso realizar. Uno de los temas, que además por el interés que despiertan en mi me ayuda sobreponerme y estudiar. Hablo aquí por ejemplo del realizar GUIs, interfaces gráficas para controlar mis experimentos. Debido a que mis investigaciones parecen indicarlo, me he decidido por usar Qt en su versión 5, breve Qt5. Como sistema para mis trabajos estoy utilizando mi PC con Ubuntu 16.04 TLS, que es la versión mas actual estable y que persistirá mínimo 2 años mas. No fue nada fácil lograr la instalación en Ubuntu, entender el resultado de la instalación y crear el símbolo para abrir el programa en el listón de aplicaciones en Ubuntu que aparece en el costado izquierdo de mi pantalla principal. Una vez logrado me acabo sorprendiendo que tan simple es lograr esto, lo que dice mucho sobre mi limitada experiencia can Linux.

En Ubuntu tengo varias formas de instalar un programa:

1. Usando el programa que se activa pinchando el símbolo "Ubuntu Software" en el listón en la pantalla- Esta función muestra todos los programas que Ubuntu conoce y ofrece botones junto al símbolo de cada programa para "Instalar" o "Quitar" el programa. Además ofrece como "filtro" el mostar todos los programas que conoce, o solo aquellos instalados. Cuando lo que buscamos aparece, entonces esto es un buen camino. Si usando la funcionalidad para buscar un cierto programa resulta de no conocerlo, entonces otros caminos se ofrecen.

2. Para ver si "por accidente" ya hemos instalado el programa se puede abrir una ventana de "Terminal", donde se tiene acceso a Ubuntu a nivel sin gráficos, sin GUI, escribir el nombre del programa y ver si se abre! Resulta que Linux hace una diferencia entre letras en mayúscula y minúscula y por que no se sabe exactamente como el programa buscado es conocido por Ubuntu, vale experimentar un poco. El programa "Mathematica" de Wolfram por ejemplo es arrancado escribiendo el nombre solo en minúsculas!

3. Usar la función de Linux "apt-get" y tratar de iniciar la instalación del programa deseado. Esto se beneficia de la forma, muy diferente a "Windows" de Linux para acceder programas. Programas son agregados por el proveedor en una base de datos de "paquetes"! En ella no solo se archivan los programas para instalar un programa, sino también las dependencias que ese programa tiene de otros programas o funciones para ser ejecutado. Usando el renglón de comamdo de Linux:

sudo apt-get Install "nombre del programa"

Esto hace que se busca si el programa deseado existe en esta base de "paquetes" y se empieza con el proceso de instalación del programa.

4. Si el proveedor no ha puesto su programa en esa base de "paquetes" entonces usando el Browser, yo por ejemplo uso "Chrome", se baja el programa desde el sitio del proveedor, tal cual ocurre usando Windows. El resultado es un archivo empaquetando la software y depositándolo en "Downloads".

Así hay que tener instalado un programa para sacar el contenido de ese archivo empaquetado resultando en tener una carpeta en la carpeta "Downloads". Ahora resulta que no siempre está claro a cual carpeta hay que mover la carpeta descargada para corresponder con los requerimientos del programa. Por lo general "/usr" es el lugar. entonces se ejecuta el programa de instalación, que en muchos casos es un "escript" de "bash" por ejemplo. Entonces se usa "sh" "nombre de instalador".sh. Pero como escribo, no siempre es así!

El resultado de estas diferentes formas de instalar un programa en Ubuntu no siempre resulta en obtener un símbolo del programa en el listón de programas, donde uno graba el símbolo, obteniendo así una forma de arrancar el programa. A veces es necesario "masajear" un poco el programa para poder ponerlo en el listón. Pero también ocurre, como es el caso en mi PC con Mathematica, que el símbolo vuelve a desaparecer del listón en la pantalla. Entonces abriendo una ventana "Terminal" escribo "mathematica" y el programa arranca. Otros programas o utilidades de programas hay que ir a la carpeta donde se encuentra y arrancarla allí. Para evitarse eso hay que sumar el "enlace" a esa carpeta específica en la lista. Conocemos todos esto de Windows con las "PATH"!

28283779293_3cbd4fb7d9_z.jpg


Como escribí en mi contribución anterior me he metido en eso de crear los GUI para programas y experimentos que hago, o para controlar y monitorear mi panel de alimentación eléctrica. Allí la placa Raspi ZERO me va poner la versión de Linux "Raspian Jessi" y en este entorno programas escritos en el el lenguaje Python son ejecutados tal cual ocurre en mi PC con Ubuntu por ejemplo.

La imagen muestra el GUI de la IDE Qt5 Creator, que permite escribir los programas y usando PyQt puedo permanecer en el entorno de "Python3".

Pero la herramienta Qt5 Designer permite crear GUIs de forma gráfica:

28280744564_bd536da718_z.jpg


Con el programa Qt5 Designer puedo crear la ventana del GUI con todos sus contenidos. En el listón a la derecha del Designer pueden ver un gran número de objetos ya presentes y armar el contenido de la pantalla. A la derecha se pueden mirar, definir y cambiar las propiedades de cada objeto que hemos puesto en la pantalla y asignarle un nombre y definir para cada estado de tal objeto que función, un programa que escribimos nosotros mismos, debe ser ejecutado cuando en el ejemplo de botón pinchamos este con el ratón. Prácticamente lo que hacemos es amarrar, asociar un código, programa que deba ser ejecutado cuando el objeto cambia su estado, por ejemplo de "botón no pinchado" a "botón pinchado"!

Lo que representaría el escribir muchas lineas de código en C++ o Python para implementar un GUI, ahora es accesible simplemente usando el entorno creado por Qt y su Creator.

Podemos ver que lo que hace el Qt5 Designer es crear el código, tal cual lo tendríamos que escribir nosotros mismos usando el Qt5 Creator.

Lo poderosa y sencillo del entorno puesto a nuestra disposición por el Qt5 Creator y Qt5 Designer ahora lo tenemos que integrar. esto, al menos para mí, requiere de un gran esfuerzo para visualizar para mi el resultado del Qt5 Designer, integrar esto en código del Qt5 Creator y el resultado final combinarlo para tener un solo programa ejecutable, en mi caso usando la herramienta PyQt5 integrarlo a un código escrito en Python 3. Soy un poco inflexible y bastante lento por requerir de mi mismo el captar el total como concepto.

En cierto sentido, y para eso será el estudio de los ejemplo puestos a disposición, el partir de un "Hola Mundo!"

El otro paso será el confirmar y realizar ese mismo "Hola Mundo!" y que sea ejecutado en una de mis placas Raspi.

La otra cosa con la cual me he encontrado en estas actividades es el mundo del "Machine Learning". Las actividades promocionales de la editorial Packt, www.packtpub.com, me despertaron mi curiosidad debido a mi curiosidad de ver que posibilidades estas tecnologías tienen para mi afición! También me he inscrito a cursos sobre "Machine Learning" en Coursera en paralelo investigado sobre el tema en YouTube.

Para mi es de gran valor obtener una visión de los conceptos y de así abrir un cierto entendimiento de la materia. Como hago la diferencia entre "entender" y "aplicar" conocimientos, puedo recorrer gran trecho en estos recursos de aprendizaje siendo muy consciente del gran trecho que hay en aplicar tales conocimientos a "problemas" adecuados. Recalco esto para resaltar que no me considero capaz de absorber los temas con los que me voy confrontando a tal grado de poder aplicarlos, pero si en entender los conceptos y aplicarlos a mis reflexiones durante los paseos con mi perro!

Siempre me ha molestado el realmente no saber lo suficiente sobre estos temas para poder reflexionar sobre ellos. Que es inteligencia artificial en el sentido de como funciona el aplicar inteligencia artificial en la computación. Hago muy claro que sigo sin tener noción. Como aquel sabio griego un día dijo: "Se que no se nada, por lo que se mas que cualquiera"! Se que no se nada de inteligencia artificial, en breve AI, pero se que "Machine Learning" no es AI, pero que su desarrollo se benefición inicialmente por los esfuerzos investigativos sobre AI.

Aquí encuentran un curso gratuito sobre "Machine Learning" que en el contenido del curso de la primera semana da de forma muy sencilla de entender que es "Machine Learning" y que da indicaciones como ciertas formas son aplicadas.

"Supervised Learning" y "Unsupervised Learning", conceptos presentados en este curso gratuito permiten de forma rápida ver y entender a que tipo de problemas cada una de estas 2 formas de "Machine Learning" es aplicable.

A mi me concierne mucho al aprender como la tecnología del "Machine Learning" permite a empresas como Google y FaceBook, por ejemplo, o organizaciones estatales como la NSA pueden extraer informaciones de valor financiero de los datos de aquellos usuarios de Google o FaceBook o la NSA y similares analizando los datos de las emails y telefoneadas de millares de personas. El saber cuanto valor económica hay en el resultado de tales análisis no mas viendo el valor de tales empresas y sabiendo que esto significa recursos económicos prácticamente ilimitados para avanzar los conocimientos de tales tecnologías.

Otro tema muy relacionado al anterior es el de las redes neuronales. En un tutorial en YouTube se puede empezar a meterse uno en ese tema:

28794808562_3f9a974542_z.jpg


Este gráfico de forma muy sencilla muestra de que consiste una neurona informática. La neurona recibe por sus dendritas tuplas de datos que consisten de 2 parámetros:

1 Xi
2 Wj

Para aquellos no familiares con el término tuple una corta explicación. Un tuple es una estructura de datos que contiene un cierto número de parámetros. Aquí un valor "X" digamos por ejemplo que contiene 1 bit que puede tener el valor "0" o "1" y un segundo parámetro "W" que por ejemplo podría tener un valor entre "0" y "1", osea cualquier valor entre "0" y "1". Pero tuplas pueden tener cualquier número de parámetros.

Sigamos. Nuestra neurona podría por ejemplo tener 8 dendritas correspondiendo a los 8 Bits de un Byte. Cada uno de los tuplas por lo tanto contiene un bit de dato y un valor de "w" que podría ser medida de la relevancia, del peso del dato "x". El cajón que sigue suma los resultados de la multiplicación de "x" y de su "peso" "w", por ejemplo "0.5" de las 8 dendritas.

Este resultado es pasado al siguiente bloque llamado "Activation". El caso mas sencillo de un tal bloque "Activation puede ser, dependiendo del resultado de la suma de los valores resultantes de las 8 dendritas es que el valor a su salida es de "0" o "1". Por decirlo de otra forma, un "1" sería que la neurona dispara, pasa su resultado a la salida y "0" que no lo haga.

28614763470_2d00a54e22_z.jpg


Esta imagen muestra una "red neuronal". Verdad que ya la cosa se vuelve mas fácil de entender? Los círculos representan las neuronas individuales como el de la imagen anterior. Vemos como "Input", "Entrada" a la red tenemos lo que en la imagen anterior aprendimos, aquí tuplas de 2 valores, x y w. Cada entrada "Xi" tiene una dendrita de cada neurona. Así tenemos lineas de cada Xi a cada neurona j. Aquí denominado como "hidden Layer 1" tenemos una red de 4 neuronas que reciben cada una los mismos valores Xi, aquí 3. Ignoremos por ahora el "hidden Layer 2" y vemos las salidas conectadas a "Output", "Salida".
Si la red tiene mas de un "Layer", entonces hablamos de "Deep Neuronal Network". Aquí el presentador del curso de "Machine Learning Intro" del cual forma parte de sus 47 vídeos la parte sobre "Deep Learning" del cual provienen los gráficos.

Lo interesante para mi fue que para una red neuronal funcionar requiere de una cantidad inmensa de datos. Por eso, aunque las redes neuronales como concepto ya viene de los años 40 del siglo pasado, tan reciente como los años 2012/2013 han visto un auge tremendo a razón de ser posible tener los recursos de computación, la inmensa capacidad de computación por ejemplo de las unidades de computación de tarjetas gráficas de PC y por la disponibilidad de la gran cantidad de datos existentes y accesibles. El tutor menciona que hablamos de millones de unidades de datos que requiere una red neuronal y que recientes estudios muestran que alrededor de los 500 millones de datos se consigue un máximo de calidad del resultado! También menciona que realmente aún no se sabe como redes neuronales realmente logran sus resultados. Si expresamos la calidad de los resultados en porcentajes, dice el tutor, diferentes métodos logran una calidad de quizá 95%. redes neuronales unos 97/98%

Armando sistemas con múltiples unidades de procesamiento gráfico altísimas capacidades de computación resultan posibles. También podemos ver que el tipo de computaciones que ocurren en una neurona son sencillos y por eso muy bien reflejable sobre una architectura usando múltiples procesadores gráficos, GPU. es una computación entre elementos de tuplas y variables "w". Lo que representa un reto es el "alimentar" estas "neuronas con la base de datos que puede consistir de peta tuplas, tupla siendo 1000 giga! Piensen no mas en la capacidad de memoria externa requerida para almacenar esos petabytes de datos.

Existe otro aspecto que se denomina como "costo". El tiempo que requiere un elemento de computación dentro de una unidad GPU es ínfimo, por ejemplo 1 GHz, el tiempo de tomar tuples del disco duro a la unidad de procesamiento en la GPU en comparación es eterno. Por lo tanto las investigaciones buscan lograr un "costo" menor, no solo acelerando al máximo posible el flujo de datos físico. Es también el como distribuir esta inmensa cantidad de datos y de repartir las computaciones a las diferentes unidades GPU de un sistema aprovechándose de las particularidades de los datos y de desarrollar métodos matemáticos que ayuden a reducir el "costo", volumen de procesamiento.

Como escribí mas arriba, el resultado de estos análisis de base de datos gigantesca, hasta 500 millones de tuples representando petabytes de datos es lucrativo en extremo como demuestra el valor de las empresas como Google en las bolsas de valores. Así los recursos financieros son prácticamente infinitos, ya que mejor es la calidad de los resultados, mayor es su valor financiero!

De allí resulta que el recurso que no es posible aumentar de forma infinita es aquel de personas capaces de trabajar en estos temas. Google por eso por ejemplo recientemente hizo su herramienta "TensorFlow" accesible y libre, para así lograr que la comunidad de especialistas avance la tecnología, las matemáticas, los diseños de sistemas y la misma herramienta TensorFlow"! Así Google estará tratando de "usar" la comunidad de personas adecuadamente capacitadas para avanzar las tecnologías. Tratar de competir con Google es casi imposible por faltar el acceso al las bases de datos que corresponden a lo que se llama "BigData". Por otro lado existen y aumentara la disponibilidad de tales bases de datos por el Internet.

Estoy curioso de ver como, usando en un segundo paso placas Raspi 3B por ejemplo empezar a "jugar" con este tema! Como todos ustedes bien saben, nosotros aficionados por ejemplo a la electrónica no tenemos la posibilidad de tener propios recursos para almacenar petabytes de información. Por eso Google por ejemplo ofrece la posibilidad de ejecutor tales "programas" TensorFlow en la nube dando acceso hasta a 100 unidades de procesamiento y así tiene que ser también posible suministrar bases de datos disponibles a tales unidades de procesamiento.
Allí resulta lo que hace posible el dedicarse a este tema con los escasos recursos que en comparación a esas grandes empresas tienen, usando tanto nuestras tarjetas gráficas del PC con su GPU y en el caso del Raspi el uso distribuido de múltiples placas Raspi cada una teniendo su respectiva GPU!

Perdonen que presente tema algo alejados y exóticos en este hilo. El origen son mis limitaciones de salud y mi curiosidad, siempre teniendo en mente el aplicar esto en mis proyectos en general y a las placas Raspi en especial!
 
Hola amigos, he estado argumentando, que las placas Arduino no son tan económicas y que el usa de una Raspi como la "Zero" por solo 5 USD, si se consigue, representa una alternativa muy interesante. También menciono en algún lado, que el profesor de una universidad alemana me mencionó, que si el tema de comunicación juega un papel en una aplicación, entonces las placas Raspi son la mejor opción, respectivamente vale analizarla!

Recibí y le hice un par de tests una placa Arduino Uno R3 por menos de 2 USDs, claro, de los chinos. El artículo mostraba un acabado profesional!

Así, he cambiado de opinión! Creo que una placa Arduino Uno R3 representa una válida alternativa a comprar los mega328P como componente! Estoy aprendiendo en mis experimentos ahora, como un Raspi y dos Arduino Uno, el R3 chino y el R4 de Elektor pueden ser combinados en una topología en forma de estrella o para ser mas precisos, bus, pueden cooperar.

El objetivo es aprender por un lado el uso de la IDE de Arduino, las placas Arduino UNO y conectando sensores.

El segundo objetivo es operar las placas UNO bajo control de una placa Raspi. significa hacer el mismo ejercicio de las Arduino y Sensores, el Raspi y las UNO!

El tercer objetivo es operar las IDE, Arduino y el entorno de las Raspi, las programaciones de las Raspi y las UNO desde el PC por Wifi!

El cuarto objetivo es implementar todo esta comunicación de forma lo mejor posible de proteger contra ataques desde el Internet!

Tengo excelentes libros de la editorial Packt y otros por los cuales tengo hilos de actuar de acuerdo a lo que estos libros ensenan. También los cursos de Coursera y edx son fuentes de aprendizaje. Que mundo tan maravilloso, ojala que me quede el tiempo y la salud mental para dedicarme a esto por muchos anos! !
 
Hola amigos, voy avanzando en concebir el entorno para mi taller:

29895094226_5a3f6de915_z.jpg


Empiezo por describir la estructura de la Hardware, para en un segundo paso describir la Software, el entorno informático.

El hombrecito a la derecha abajo soy yo, sentado en mi mesa de oficina en el taller, El PC usa una placa madre de ASUS, P6T SE con actualmente 18 GBytes de memoria y un RAID 10 que consiste de 4 discos duros a 1 TByte. El RAID10 no solo ofrece la seguridad que si los datos en uno de los 4 discos sufre, que entonces es posible arreglarlo gracias a los datos grabados en los otros 3 discos. Adicionalmente dobla la velocidad de escribir y leer datos, pues hace esto en paralelo a 2 discos al tiempo. En este PC tengo Windows 10 Pro. Actualmente tengo que volver a arrancar el sistema, hacer modificaciones en el BIOS, para poder arrancar el os Ubuntu 16.04 LTS que se encuentra en un disco duro adicional de 1 TByte.

Mi desagrado con esta situación, mas mi incapacidad de implementar la interfaz para seleccionar el os al arrancar el sistema, se que es una herramiento "grub" relacionada a esto, son una de las razones por darme el incentivo de estudiar mas a fondo el asunto de la virtualización! Así me encontré con eso que se llama "Hypervisor" y del que existen 2 tipos, "Hypervisor, tipo I" y "Hypervisor, tipo II".

400px-Hyperviseur.png


La imagen no me gusta mucho, pero permite ver en que consiste la diferencia. El tipo 1, también llamado "bare metall", es instalado y opera directamente sobre la Hardware del PC. Los sistemas operacionales ejecutan en paralelo, cada os pensando que es el único y que tiene toda la Hardware bajo su control. La ventaja del procesador que uso, el Intel® Core™ i7-920 Processor a 2,67 GHz, tiene las tecnología llamada:

Intel® Turbo Boost Technology
Intel® Hyper-Threading Technology
Intel® Virtualization Technology (VT-x)
Intel® VT-x with Extended Page Tables (EPT)

Estas tecnologías ya disponibles en ese procesador en Hardware dentro del procesador, permiten por ejemplo lo llamado "Second Level Address Translation (SLAT)". Esto permite paralelizar por ejemplo la traducción de direcciones de memoria para 2 os al tiempo, en paralelo y otros apoyos que permiten la eficiente ejecución de los "sistemas virtuales".

El Tipo 2 es mas tradicional, allí la funcionalidad del Hypervisor es una aplicación del sistema operacional padre. He visto que tales entornos virtuales son usados en el desarrollo de programas. La ventaja que dan, es que el sistema operacional padre, por ejemplo "Windows 10" o "Ubuntu" por dar 2 ejemplos, están protegidos de ser dañados por algún error que tenga lugar en los programas ejecutados en el entorno virtual.

Así pues, en el entorno que pienso generar, en el PC frente al cual estoy sentado, es ejecutado solo Windows 10 Pro, pero el servidor, al igual que placas Raspi que conecte, se comunicarán con WiFi entre si, Servidor y placas Raspi forman una topología estrella. El centro de esta estrella será el servidor.

Resulta, que cuando mi PC con Windows 10 dejo de arrancar de mi sistema RAID10 como disco duro primario, me compré por ebay una placa madre "ASUS P6T WS Professional". Como al final he podido recuperar mi PC y su os Windows 10 Pro, la placa madre quedó en mi archivo. Investigando si el procesador usado en mi PC, tiene las funcionalidades para una ejecución eficiente de un Hypervisor tipo 1, me encontré que los precios del procesador han bajado hasta menos de 22 USDs! Eso y el tener también en mi taller una fuente eléctrica ATX de 620 W, lo ha vuelto posible el considerar el entorno que aquí presento! Es mas, cuando recientemente amplié mi memoria RAM del PC con 3 placas a 4 GByte cada una, pude verificar que se conseguía instalar estos 12 GByte adicionalmente a los 6 GByte que ya tenía en mi PC! Para acabar, también me había comprado una licencia de Windows 7 Ultimate por precio muy barato y actualizado esta a Windows 10 Pro. Así puedo empezar usando las "viejas memorias" con un total de 6 GBYtes en el servidor!

Mi idea es que el servidor tenga el Hypervisor tipo 1 instalado y sobre el instalar Ubuntu y Windows 10 Pro. Cada uno de estos sistemas operacionales es ejecutado en paralelo sobre el servidor y controlado por mi desde mi PC usando "TeamViewer". Esta aplicación, finalmente también en una versión preliminar disponible para sistemas con procesadores ARM y para Linux, permite poner el "escritorio de cada sistema de mi entorno en una ventana de mi PC! Asi puedo operar tanto el servidor, como las placas Raspi desde mi PC, cada una con su escritorio en su propia ventana del PC. Naturalmente también es posible operar los sistemas por la consola!

En mi entorno la conexión a la nube, Internet, tiene lugar usando una unidad "Fritzbox" un model que por un lado está conectado a mi proveedor de Internet, por el otro usando un Ethernet cableado, conectará a mi servidor que tiene 2 portales independientes de Gigabit Ethernet. Así el servidor también funcionará como mi barrera contra ataques del Internet. Por el otro lado mi PC tiene la alternativa de conectarse a la Fritzbox o por Gigabit Ethernet o por WiFi. Toda placa Raspi se estará comunicando a través del servidor. No solo usaré el protocolo "ssh" para proteger la comunicación, sino que también usaré "llaves publica y privada" para ser autorizado y las comunicaciones en el entorno de mi taller solo podrá tener lugar entre "clientes" identificados y listados! Quiero evitar de que mi entorno vuelva a sufrir los ataques que tuvieron lugar durante mis primeros experimentos y que dejaron mi PC inoperable!

El gráfico del entorno muestra las opciones ya identificadas para mi taller! Como escribí arriba usaré placas Raspi con WiFi que se comunican con el servidor por este camino. Estas placas Raspi a su vez o directamente actuarán con actores y/o sensores, o usarán esas baratisimas placas UNO de la China a las cuales entonces conecto sensores y/o actores. A la izquierda muestro que las placas Raspi se comunicarán con las placas LPCXpresso y a través de estas por ejemplo con el sistema de evaluación TMC2130-EVAL de Trinamic con la cual opera el motor de paso!, como ejemplo.

El objetivo que logro de esta forma es tener al tiempo y en paralelo disponible un PC con Windows 10 Pro y un PC con Ubuntu, gracias a la funcionalidad del Hypervisor y del procesador que uso, estando sentado al frente de mi PC! Un ratón y un teclado frente a mi set de 2 pantallas. Pero en el laboratorio electrónico el servidor, con gran número de portales USB por ejemplo, pone las conexiones físicas, cableadas o por radio.
 

Adjuntos

  • Tallerhardware.jpg
    Tallerhardware.jpg
    35.4 KB · Visitas: 5
Atrás
Arriba