Open Hardware Vs Open Software

Bueno siguiendo con al onda open Source, y su equivalente en Hardware el «Open Hardware», aunque para este hay que tener mas cosas en consideración, que no afectan un proyecto Open Source, en proyecto de Software tan solo se necesita un computador y las habilidades necesarias como programador…

En un proyecto Open hardware, se tienen mas factores externos como lo son:

  • Los proveedores de los Componentes, el proveedor es nacional o extranjero, en el caso particular de Colombia los proveedores nacionales no manejan una información técnica adecuada, y en el caso de los proveedores internacionales se debe tener en cuenta los diferentes impuestos que acarrean estos componentes al entrar al país.
  • Los proveedores de PCB, ademas la capacidad técnica de este proveedor en la fabricación de estos PCB’s.
  • El ensamble de estos componentes en el PCB, la industria electrónica tiende cada vez a elementos mas pequeños y que requieren un equipo especializado para su ensamble un ejemplo de esto son los circuitos integrados en empaque BGA y en QFN:
  • Economía de escala, la producción de un prototipo conlleva un costo relativamente alto, donde normalmente el diseño de un prototipo se reparte entre las unidades producidas, y se puede llegar a un precio competitivo en el mercado.

Arduino BT (Bluetooth)

En esta entrada les presento una alternativa para el desarrollo de aplicaciones por Bluetooth, como ustedes ya saben un proyecto muy fuerte en la comunidad Open Hardware es el proyecto arduino, este proyecto tiene varias tarjetas para el desarrollo de prototipos, en este caso en especial trae una version con Bluetooth:

Este kit de desarrollo esta basado en el ATmega168, y el modulo WT11 de la casa Bluegiga, pero cual es la ventaja de desarrollar sobre este:

  • Diseño open hardware
  • Programacion en Processing, es decir puedo hacer lo siguiente:  Serial.begin(115200); // un nivel mas arriba del C del compilador de AVR
  • Amplio numero de librerias para arduino 
  • Una comunidad muy activa y siempre creciente
  • Soporte para linux
Este es una alternativa muy interesante para el desarrollo de aplicaciones por Bluetooth, incluso desde el IDE de arduino se puede actualizar el Firmware de forma inalambrica… Interesante no??

Un carro sin piloto

Se imaginan en un futuro cuando el auto sea capaz de manejarse solo , que tan solo me siente en mi carro y le diga la dirección y el me lleve a casa, que cuando se traviese alguien el camino este reaccione y frene solo, en cuanto tiempo creen que lleguemos a esto…

Imagínense que esto es una realidad, y el Gigante de Internet es que lo logro, Adivinen quien ‘Google’, Disfruten este video:

Este proyecto se volverá Open Source??…

Socket

Bueno aqui sigo en la tarea de publicar algo cada semana, esta vez comparto con ustedes el codigo fuente de un Socket…

Pero que es un socket, es simplemente un software que nos permite recibir datos por medio de internet…, es muy util para las diferentes aplicaciones que necesiten comunicar por medio de internet, para mas informacion http://es.wikipedia.org/wiki/Socket_de_Internet, el código esta desarrollado en Python 2.x, para la versión 3.x no lo he ensayado…..

ya les dire mas en detalle en otra entrada porque python.., el codigo queda bajo la licencia GPL y todo lo que esta implica la mas reciente,Sin mas el Codigo:

# -*- coding: cp1252 -*-
# importaci�n de las librer�as necesarias
#Licencia GPL
#Author: Allan Galindo
import socket
import select
from decimal import *
import time
import thread

def accept_new_connection():
    # funci�n que acepta nueva conexi�n
    try:
        global server # utiliza la variable global server
        global desc # utiliza la variable global desc
        newsock, (remhost, remport) = server.accept()
        #acepta una conexion, retornando el socket nuevo,
        #la direcci�n del cliente y el puerto
        server.settimeout(.1)
        # establece el tiempo de espera, en este caso 100 milisegundos
        print "Se ha conectado %s:%s" % (str(remhost), str(remport))
        newsock.send("OK\r") # env�a un OK al cliente
        desc.append(newsock) # guarda la conexion remota
    except:
        pass

def get_msg(sock):
     try:
         msg = sock.recv(1024) # datos recibidos con un buffer de longitud 1024
         if msg != '' :
             print 'msg: %s'%(msg)
         sock.settimeout(.3) # tiempo de espera del socket
     except:
            pass

def inicio(sleeptime,*args):
    while 1:
        accept_new_connection() # llama a la funci�n
        # select.select espera a que el socket esta listo para leer
        (sread, swrite, sexc) = select.select(desc, [], [])
        for sock in sread: # recorre el resultado en sread
            if sock != server: # si el socket es diferente al del servidor
                get_msg(sock)# llama a la funci�n para obtener el car�cter recibido

        time.sleep(sleeptime) # duerme el hilo durante el tiempo especificado

#Definici�n de las variables globales
global server

print 'Servidor TCP'
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Definici�n del socket a utilizar
server.bind(("", 8000))
# puerto por el cual queda establecido el servidor
server.listen(30)
# cantidad de conexiones simultaneas que acepta
global desc
desc = [server]
# se llaman la funcion para que el servidor se ejecute por medio de hilos
thread.start_new_thread(inicio,(0.1,))
while 1:pass # ciclo infinito

simplemente se ejecuta este en script, y en Windows o en Linux simplemente en la consola ejecutan:

telnet localhost 8000

si el computador esta conectado a la IP publica, puede acceder desde otro PC por medio de esta IP publica

telnet x.x.x.x 8000

si el computador esta conectado a la red LAN de su empresa o de su casa pueden acceder por medio de la IP privada, y desde otro PC en la misma red LAN puede acceder a este

telnet 192.168.1.22 8000

Disfrutenlo……