31 de octubre de 2014

Arduino Halloween

Pues para divertirnos en HalloWeen se me ha ocurrido hacer una ArduinoCalabaza con los trastos que tengo por casa: un Led RGG que cambie de color, el medidor de distancia ultrasónica para que detecte si alguien o algo se acerca, un buzzer para hacer sonido y arduino.
De momento no he conseguido que diga "trick-or-treat".

Materiales:
Arduino Nano Rev3 ó Arduino UNO Rev3
Altavoz piezoeléctrico
Led RGB de cátodo comun.
3 resistencias de 100 Ohmnios
Modulo medidor ultrasónico HC-SR04
Unos Cables.
Fuente de alimentación o mediante usb de ordenador.

Esquema:



Código Arduino:


/* ## ARDUINO-HALLOWEEN ###################################### -- by www.misnotaslinux.blogspot.com - 2014 -- Led RGB que cambia de color cada tiempo. Detector de proximidad que activa el buzzer.
Programado con un condicional con millis()
para que simule interrupciones. Para meterlo dentro de una calabaza de Halloween.
########################################################### */ #include const int Trig = 3; // pin "Trig" del HC-SR04 conectado al pin digital 3 de arduino const int Echo = 2; // pin "Echo" del HC-SR04 conectado al pin digital 3 de arduino long cm = 1000; // variable que almacena la medicion de distancia del sensor. Le doy un valor inicial alto para que no suene Ultrasonic HCSR04(Trig,Echo); int pinLedR = 11; // pin Rojo del led RGB int pinLedV = 10; // pin Verde del led RGB int pinLedA = 9; // pin Azul del led RGB long lapso = 2000; // Milisegundos que cambiará de color el led RGB long cuenta = millis() + lapso; // Control del tiempo int dist = 100; // distancia en cm a la que se activa la calabaza int frec = 2500; // frecuencia inicial del sonido void setup(){ pinMode(pinLedR, OUTPUT); // pone el pinLedR como output pinMode(pinLedV, OUTPUT); // pone el pinLedV como output pinMode(pinLedA, OUTPUT); // pone el pinLedA como output } void loop(){ delay(10); // damos un tiempo para que mida el sensor ultrasónico y por efecto sonido cm = HCSR04.convert(HCSR04.timing(), 1); // medimos distnacia frente al sensor if (cm < dist) { tone(8, frec-(cm*20)); } // si hay algo cerca, hace sonar el buzzer con un frecuencia segun la distancia else { noTone(8); } // si no hay nada o nadie callamos el buzzer if ( millis() - cuenta > lapso) { // vemos si el contador ha llegado al tiempo para cambiar color del led analogWrite(pinLedR, 255 * random(0,2)); // colores básicos 0 o 255 al azar en cada canal RGB analogWrite(pinLedV, 255 * random(0,2)); analogWrite(pinLedA, 255 * random(0,2)); cuenta = millis(); // actualizamos el contador } }


La Calabaza:
Hecho esto, el prototipo, el programa ... ahora queda lo mas difícil: "Hacer la La Calabaza".

... y este es el resultado:




En el código se puede cambiar la frecuencia (variable frec) para conseguir diferentes sonidos y el delay( ) para cambiar los efecto de sonido. Con delays de unos 15-20ms se consiguen sonidos parecidos a los de R2D2!!.


Una mente ociosa es el taller del diablo.
Northern Exposure, Temporada 6, Cap.: 5.

Terrorífico!!!!



30 de octubre de 2014

Instalar y configurar ZoneMinder en Debian 7 Wheezy

En mi caso se trata de un sistema Debian 7 Wheezy, con apache2, MySQL, V4L2, y los módulos
necesarios para que funcione la cámara web.

Ahora, vamos instalar y configurar ZoneMinder:

1) Actualizamos la base de datos de paquetes y el sistema:
# aptitude update
# aptitude upgrade

2) Instalamos Zoneminder y sus dependencias:
# aptitude install zoneminder

3) Modificamos el inicio de Zoneminder:
# nano /etc/init.d/zoneminder

          Añadir el sleep de la siguiente forma:

          start() {
              sleep 15
           echo -n "Starting $prog: "

          Salvar (ctrl+o) y salir (ctrl+x).

Con esto zoneminder esperará 15 segundos para aseguarar que la red esta activa.


4) Creamos enlaces simbólicos en apache2:
# ln -s /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf
# ln -s /etc/zm/apache.conf /etc/apache2/mods-enabled/zoneminder.conf

5) Activamos CGI:
# a2enmod cgi

6) Creamos el nuevo usuario:
# adduser www-data video

7) Reiniciamos apache2 y zoneminder
# service apache2 restart
# service zoneminder restart

8) Accediendo a ZM con el navegador web:
http://[tu dirección o ip]/zm/

...ok, con esto debemos ver la partalla de zone minder desde nuestro navegador.



9) Conectar la web cam al USB del ordenador:
Para ver si se ha conectado:
     # lsusb
     Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
     Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
     Bus 001 Device 002: ID 0951:162f Kingston Technology
     Bus 001 Device 004: ID 18e8:6238 Qcom
     Bus 002 Device 002: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)
     Bus 001 Device 005: ID 0c45:62c0 Microdia Sonix USB 2.0 Camera

ok, aqui la tenemos.

Para ver el dev que le ha asignado debian:
     # ls /dev
     ...
     ...
     video0

En mi ordenador es /dev/video0.

10) Configurar cámara en ZoneMinder:
Desde el panel de ZM en el navegador web: Add New Monitor.



Instalar y configurar Zoneminder en Xubuntu 14.04

Instalando ZpneMinder en Xubuntu 14.04:

1) Instalacion:
# aptitude install zoneminder

2) Post instalacion:
http://www.zoneminder.com/wiki/index.php/Ubuntu_Server_14.04_64-bit_with_Zoneminder_1.26.5_the_easy_way

3) Acceso a zoneminder: http://host/zm
Ok, ahora ya se puede acceder

4) Configuración y cámaras
No detecta camaras usb ?
http://www.zoneminder.com/forums/viewtopic.php?p=63801

Ok!; funciona.
v4l ya lo tenia instalado, añadiendo la linea en /usr/bin/zmcd.pl
y reiniciando zoneminder.

5) Reiniciando zoneminder:
# service zoneminder restart

6) Añadiendo camaras ip:
http://www.linux-party.com/index.php/53-privacidad/9048-instrucciones-de-uso-para-espiar-con-zoneminder-en-linux-parte-1

7) Activado autentificacion para acceder:
Desde el navegador accedemos al panel de ZoneMInder
http://yourip/zm
- Options
- Pestaña System.
- activar: OPT_USE_AUTH
- Salvar, cerrar.

Reiniciar ZoneMinder:
# service zoneminder restart

8) Crear y cambiar contraseña de usuarios:
Por defecto la contraseña y password de acceso es admin/admin.
Esto conviene cambiarlo.

Desde el navegador accedemos al panel de ZoneMInder
http://yourip/zm
- Options
- Pestaña Users.
- Hacer click en el usuario.
- Modificar el formulario del susuario donde esta su password.
- Salvar.

Comandos para buscar las cámaras:
# v4l2-ctl --list-devices

Comado para ver si zm puede comunicar con la cámara.
Ref.: http://forums.fedoraforum.org/showthread.php?t=154003)

#  zmu -d /dev/video0 -q -v

Ref.:
http://www.tuxradar.com/content/build-your-own-surveillance-zoneminder
http://www.zoneminder.com/wiki/index.php/Add_a_user_to_ZoneMinder

10 de octubre de 2014

Raspbian en VirtualBox


Se recomienda leer el punto 6 antes del punto 1.
Para no perder el tiempo.


1) Descargamos Raspbian:
de http://www.raspberrypi.org/downloads/

en mi caso es el fichero: 2014-09-09-wheezy-raspbian.zip

2) Descomprimimos:
... y obtenemos el ficehro imagen 2014-09-09-wheezy-raspbian.img

3) Pasamos .img a .vdi
Linux:
# VBoxManage convertdd 2014-09-09-wheezy-raspbian.img 2014-09-09-wheezy-raspbian.vdi

Windows:
VBoxManage.exe convertdd 2014-09-09-wheezy-raspbian.img 2014-09-09-wheezy-raspbian.vdi

4) En VirtualBox configuramos una nueva maquina virtual:
linux, debian con el discoduro virtual: 2014-09-09-wheezy-raspbian.vdi

5) Arranamos la nueva maquina virtual Raspbian y ...




... veo todo negro, muy negro.

6) No funciona.

7) Explicación: VirtualBox solo emula procesadores x86 y Raspberry Pi tiene un procesador ARM, por lo que la imagende Raspbian NO FUNCIONA en VirtualBox.

8) Borrar ficheros y maquinas virtuales.

19 de septiembre de 2014

Copiar un Disco Duro a un USB y hacerlo bootable con Debian 7

Con mi antiguo pero incombustible FitPC (micra), se me ocurrió aprovechar una de las memorias USB que
tenia por casa y utilizarla como disco duro.

Con esto reduciría el consumo eléctrico, reduciría ruido del disco duro y pasaría un buen rato configurándolo todo.

También es un método de copiar un sistema en un disco duro (HD) de diferente tamaño, siendo especialmente útil cuando se nos ha quedado un HD pequeño y queremos transferir todo el sistema otro de mayor capacidad.

Con la clonación no podemos hacer esto directamente ya que crea una copia exacta,un espejo del sistema.

En el HD tengo un sistema debian 7 con XFCE.

Revisando, revisando,... no me acordaba que esto ya lo hice long long time ago ...
http://misnotaslinux.blogspot.com.es/2010/06/full-copy-hd-micra-server.html
Pero veo que esta algo obsoleto y lo actualizo con este post.

PROTOCOLO:

1) Arrancamos el sistema con un liveUSB
Como mi FitPC tiene un AMD sin PAE, solo puedo utilizar Xubuntu 12.04, ya que las siguietes versiones solo funcionan con microprocesdores con PAE.

2) Tenemos el disco duro interno (HD) a clonar en un USB.
Pues pinchamos el USB.

2) Hacemos las particiones en el USB:
- Usaremos Gparted.
- Borramos la partición del USB, será seguramente una FAT.
- Creamos una partición formateada con ext4.
- Creamos una mas pequeña tipo Linux-Swab, esto es opcional.

3) Montamos el disco duro a clonar HD y el USB:
# mkdir /mnt/HD
# mkdir /mnt/USB

# mount /dev/hda1 /mnt/HD
# mount /dev/sdb1 /mnt/USB

4) Copiamos todo el sistema raiz del HD al USB:
La copia debe ser de todo el árbol de directorios y todos los archivos con sus propietarios y permisos.
# cp -av /mnt/HD/* /mnt/USB/


5) Instalar Grub2 en el nuevo USB para que arranque.

- Arrancar el sistema desde el HD
- Pinchar el USB.

- Montar el USB en /mnt:
# mount /dev/sd(xx) /mnt

- Montar el resto de dispositivos:
# mount --bind /dev /mnt/dev

- Damos privilegios de root al sistema USB montado en /mnt:
# chroot /mnt
Ahora estamos trabajando con la riaz del sistema de archivos del usb (ojo)

- Ver en que nueva /dev/sd(xx) está ahora el usb:
# df -h

- Instalamos Grub2 en el USB:
# grub-install --recheck /dev/sd(x)

Importante: Hay que poner el /dev/sd(x) actual del USB, en su raiz.

- Actualizamos Grub:
# update-grub

- Reiniciamos el sistema.

- Cambiar en la bios pra que arranque desde el USB.

6) Comprobar que ha arrancado bien y que estamos en el USB.
Si !!!

7) Pues a celebrarlo

Conviene revisar que todo funciona correctamente.
Revisar el archivo /etc/fstab ya que es fácil que no se monte la partición swab, actualizar con las nuevas UUID si fuera el caso.

Ref.:
http://rootear.com/ubuntu-linux/como-reparar-grub2