Mostrando las entradas con la etiqueta IOT. Mostrar todas las entradas
Mostrando las entradas con la etiqueta IOT. Mostrar todas las entradas

domingo, 1 de enero de 2017

IOT - Nginx- node-red - mosquitto en ubuntu 14.


1) Instalar el servidor NGINX

sudo apt-get install nginx

arrancar o parar servicio
sudo service nginx stop
sudo service nginx start
sudo update-rc.d nginx defaults  

2) ver la IP eth0 o wlan0

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//' 
ip addr show wlan0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
 
devuelve la ip

3)instalar NPM y Node.js

sudo apt-get install npm
sudo apt-get install node.js
sudo apt-get install node-legacy

4)Ver versiones
node -v
nmp -v

5)ejecutar node-red 
sudo node-red

6)Entrar en mozilla a la IP:1880
 ip.1880


7) Instalar mosquitto (un broker o server MQTT)

sudo apt-get install mosquito
sudo apt-get install mosquito-clients
sudo service mosquito-status

8)realizamos las pruebas de funcionamiento
sub
mosquitto_sub -h localhost -t "mqtt"  -v

pub
mosquito_pub  -h localhost -t "mqtt" -m "Hola mundo MQTT"

8)Esta parte parece facil pero no prefiero hacer el codigo y no arrastrar dibujitos pero esta bueno

Elejir
input MQTT y configurarlo
debug para ver que hace
input inject mensaje
output MQTT


En el debug vemos que envia el mensaje y comprobamos en la consola



Ahora deberia probarlo con RPI o arduino...


instalar PAC ssh rdp rexec completo

wget -q -O - http://archive.getdeb.net/getdeb-archive.key | sudo apt-key add -
sudo sh -c 'echo "deb http://archive.getdeb.net/ubuntu trusty-getdeb apps" >> /etc/apt/sources.list.d/getdeb.list'
sudo apt-get update
sudo apt-get install pac


martes, 29 de marzo de 2016

Framework Platformio + Geany + Raspberry PI

Hace un tiempo me quede sin PC sin notebook y buscanba la forma de programar diferentes microcontroladores usando el IDE de arduino bajo RPI (Raspberry PI) pero no hay version del cross-compiler para arm para poder programar los ESP.
Buscando encontre de casualidad Platformio un cross-compiler desde linea de comandos para diferentes entornos de trabajo Atmel, esspresif entre otros y la verdad es que me sorprendio logre programar arduinos y esp8266 sin problemas desde un RPI.
Tiene un excelente control de librerias e instalacion de lo que nesecites es mas que recomendable.
Tiene un par de inconvenientes el IDE grafico para RPI estoy usando GEANY debe haber otro pero realmente estoy comodo programando de esta forma.

Estube realizando pruebas con arduino uno, mega y un esp-01 y andubo perfecto, podemos cargar el firmware de OTA o webupdate y actualizar los esp de forma remota configurando la IP.


Instalacion siguiendo la info de la pagina web http://platformio.org/#/ y otros blogers
***********************************************
si no esta instalado easy_install
sudo apt-get install python-setuptools
luego
sudo easy_install pip (gestor de paquetes en python)
sudo pip install platformio
***********************************************

Tiene algunas complicaciones porque hay q usar la terminal pero es mas de mi agrado:
Crear la carpeta

***********************************************
sudo mkdir arduino/proy_01 (CARPETA DE PROYECTOS)
***********************************************

inicializar la placa tiene muchas opciones pero las podes listar y ver cual necesitas

***********************************************
platformio init --board esp01-1M (ESP8266 CON 1M ojo las esp-01 de color azul claro son de 512K)
***********************************************

otro ejemplo:
***********************************************
platformio init --board uno  (arduino uno)
***********************************************


poner el codigo en la carpeta genera un .ini y dos carpetas src y lib

***********************************************
-platformio.ini (archivo de configuracion)
-src(adentro va el .ino o .cpp)
-lib(librerias externas o propias)
***********************************************

Compilar generar el firmware en modo local.
***********************************************
platformio run
***********************************************

Subir o descargar el firmware al uC
***********************************************
platformio run --target upload
***********************************************

Limpiar archivos compiladodos y temporales.
***********************************************
platformio clean
***********************************************

Todo esto se puede hacer desde geany y compilar desde ahi... :) solo hay que configurar en opciones de compilacion.

compile=platformio run
build=platformio run --target upload
make object=platformio clean

y seleccionar la sintaxis de color de C++ y compilar seleccionando el archivo .ini









Voy a ir actualizando porque me siento bastante comodo con platformio y raspberry PI.
Sldos...

Siguiendo con las pruebas me consegui un esp-12, me costo programarlo pero funciono bien, unos de los problemas es la memoria no sabes si tienen 512K-1M o 4M y vienen con el protector para EMF el cual no te deja ver la flash a menos que lo desarmes.

Voy a tratar de analizar y probar un poco la arquitectura asi me queda en el blog...

Tamaños de memoria SPI

***********esto es del foro del esp822 *******************************
# SPI_SIZE_MAP
# 0 : 512 KB (256 KB + 256 KB)
# 1 : 256 KB
# 2 : 1024 KB (512 KB + 512 KB)
# 3 : 2048 KB (512 KB + 512 KB)
# 4 : 4096 KB (512 KB + 512 KB)
# 5 : 2048 KB (1024 KB + 1024 KB)
# 6 : 4096 KB (1024 KB + 1024 KB)
*******************************************************

esp8266-01 azul claro 512k (no funcionan para OTA)



esp8266-01 negro o verde obscuro  1M (si funcionan pero tienen poco espacio)


esp8266-12 azul claro (1M - no estoy seguro si alguien lo sabe he visto q les cambian la memoria de 512k a 1M  no hay mucha info muchas dudas, yo le descargue con la opcion esp01_1m pero no estoy seguro ya que hice una prueba con un DHT11 y me muestra un float y no hay conversion a entero esto lo tengo que revisar creo q son de 512k)


esp8266-12E verde oscuro AI (4M de memoria eeprom)
esp12E - Pinout

Diagrama de ingenieria inversa de la version de AI-Thinker


esta bueno agregarla un capacitor en la alimentacion por pequeñas variaciones en los consumos de corriente para evitar se active el WDT y se resetee.

Programando el esp12



Programando el esp12E(no lo probe aun)



Bueno programe un esp12 como indica el datasheet

1-reset no lo use aun pero es necesario una ves descargas el firmware, sacar jumper y debes resetearlo
2-ADC (convertidor analogico a digital soporta 1v)
3-CH_PD (enable chip va a 1 yo use una resist. 101R - 100ohm)
4-GPIO16 usado para el modo deep_sleep (no probado aun)
5-GPIO14
6-GPIO12
7-GPIO13
8-VCC (3.3 Vcc) va a 1
9-GND
10-102R smd a GND va a 0
11-GPIO2
12-GPIO0 este se usa para ponerlo en modo programacion va a 0 con un jumper
13-GPIO5
14-GPIO4
15-TX aca va cruzado a RX (en los datasheet sale diferente chequear)
16-RX aca va cruzado a TX (en los datasheet sale diferente chequear)

Entonces:
*******************************************************
Flash Mode
vcc CH_PD  GPIO0 GPIO15
 1        1           0            0

Boot Mode
vcc CH_PD GPIO0  GPIO15
1        1             X        0

X- a nada libre o a VCC
*******************************************************

Funciono asi es mas al GPIO2 lo use para leer un DHT11 otra cosa que lei y lo voy a poner en practica es el modo bajo consumo o "deep sleep mode" algo que es muy util bajar el consumo tambien tiene un WDT (watdog timer) muy util cuando se cuelga el uP.

La idea es ponerlo a dormir y despertarlo (deep sleep mode) por decirlo asi con:

un timer interno (que lea cada 1hs un DHT22 ej. )
una interrupcion externa(arduino - rpi)
via UART (Arduino - RPI - uP - uC - PC con ftdi )
WDT (bueno este es interesante teoricamente se genera un pulso el cual si no existe resetea el uC lo he usado en PLC se genera el pulso sobre un rele/timer si falla el PLC chau pulso y activa una proteccion, aca es algo diferente porque es interno pero se podria crear un WDT con un GPIO generas el pulso y con algun arduino si deja de leerlo activar el respaldo)

Administracion de energia(sacado del datasheet de espressif)



OFF
si se pone a 0 CH_PD el RTC se desabilita y se borran los registros.

DEEP_SLEEP
Solo el RTC se alimenta el resta esta desconectado y mantiene datos basicos dela coneccion WIFI

SLEEP
El RTC queda operando algun evento para despertarlo (MAC - host - RTC timer - ext int) lo pone en modo de funcionamiento

WAKEUP
en este modo funciona el crystal oscilador y los PLL todo habilitado

ON
EN este modo el clock opera a toda velocidad se puede usar la instruccion WAITI para operar a velocidad minima.

:) mas que interesante no ?




Detalles a tener en cuenta para programar(no hacer lo que yo jaja)

Algunos errores al descargar el firmware con PlatformIO, fueron ocasionados por el cableado arme
todo en una plaqueta y funciona bien, tambien fallo la descarga por que tenia una terminal serie abierta leyendo por el puerto usb /dev/USB0, o sea usaba el archivo, (terminal minicom no aconsejada pero funciona ya encontrare alguna mejor).

*usar plaquetas para prototipos
*usar el menor cableado posible y que este bien firme
*no dejar abierta las consolas serie (arduino ide - minicom - putty etc.)

Saludos....

lunes, 3 de agosto de 2015

Arduino - Comunicación con SIM800l GPRS/GSM

Resumen de funcionamiento shield sim800l, como interface arduino, esp8266, esp32 u otro microcontrolador, se puede utilizar para un sistema de seguridad, comunicacion gsm, scanner, etc.

Ejemplos  y casos de uso.

1)Sistema de seguridad
PIR --> Arduino ---> sim800L    )))  (gprs/gsm)   (((( "celular 3G"

2)Sistema de seguridad 2(nodos wifi bajo consumo )

PIR_1 -->esp-01 -))))        ((((--router_wifi_red_domotica--)))     ((((-esp-12--sim800l-)))) celular 3G
PIR_2 --->esp-01-))))                                                                                 
PIR_3 --->esp-01-))))

3)Sistema de comunicacion y reconocimiento de voz

maple_mini --->sim800l  ))) gprs/gsm/internet
                      --->esp-12  )))wifi P2P/router
                      --->easy-VR "reconocimiento de voz"
                      -->HC-05 programacion por bluetooth o conexion a celulares
                      --->GPS
                      ---->RF transceiver de rf 2.4ghz red domotica

Este es el breakout sim800l con comunicacion serie el cual se puede conectar a un uC 'microcontrolador', arduino, esp8266, raspberry pi etc, o a un programador usb-rs232
Hay varias versiones de este  CI , sim800, sim900 y el adaptador para smd, se puede armar pero ya hay breakout desarroladas, por costos muy bajos.
El breakout sim800l que consegui no tiene salida ni entrada de audio por lo cual me limita solo a realizar llamadas y enviar y recibir mensajes.

Hoja de datos
http://www.seeedstudio.com/wiki/LoNet_-_GSM/GPRS/GPS_Breakout


  • Quad-band 850/900/1800/1900MHz( cuatribanda para 2G y 3G)
  • GPRS multi-slot class12 connectivity: max. 85.6kbps(down-load/up-load)
  • GPRS mobile station class B
  • Controlled by AT Command (3GPP TS 27.007, 27.005 and SIMCOM enhanced AT Commands)
  • Supports charging control for Li-Ion battery
  • Supports Real Time Clock
  • Supply voltage range 3.4V ~ 4.4V (muy importante recomendado 4.2)
  • Integrated GPS/CNSS and supports A-GPS
  • Supports 3.0V to 5.0V logic level (conversion TTL 3vcc a 5vvcc)
  • Low power consumption, 1mA in sleep mode
  • Supports GPS NMEA protocol
  • Compact size 27mm x 46mm x 10mm
  • Standard SIM Card



  • Diagrama de conexion
    este diagrama de conexion es bastante bueno tuve inconvenientes para hacerlo funcionar consejo hay que alimentarlo con una fuente estable alrededor de 4.2vcc@800mA ya sea una bateria LIPO o una fuente regulada no usar la alimentacion de arduino porque funciona pero no adecuadamente ya que el sim800 tiene un ESD el cual si detecta baja o alta tension se desconecta o reinicia... (Proteccion por alto o vajo voltaje) el cual es muy buena funcion ya que nos asegura no dañarlo muy importanto leer lo que responde por la consola serie


    Fuente switching  ---->sim800l -->arduino o esp8266



    El primer ejemplo lo conectas direscto al uC le bajas el codigo de FONA o el tuyo y ya esta.
    El segundo te conectas con un USB-FT232 y desde una consola ya sea en win o linux abris la terminal en /dev/usb te conectas con baudrate 9600 y tenes que ingrasar los comandos AT.


    PDF con todos los comandos AT
    http://www.seeedstudio.com/wiki/images/5/51/SIM800_ATCommand_Manual_V1.02.pdf

    Aca hay muhca info.
    http://www.seeedstudio.com/wiki/LoNet_-_GSM/GPRS/GPS_Breakout

    En cuanto a librerias deberian descargar la ultima verision del IDE para arduino ya que hubieron muchos cambios en las librerias y soporte para hardware han agregado el soporte para los esp8266 esta mi querido souliss(framework domotica) y muchas otras placas

    Esta libreria de ADAFRUIT es recomenda ya que esta completa poder realizar llamadas enviar sms y conectarte a internet solo funciona con la version del IDE nueva de arduino
    https://github.com/adafruit/Adafruit_FONA_Library (ya tiene implementado los comandos AT)
    este es un codigo de ejemplo para mi alrma ya que fona tiene cosas que no voy a ocupar pero para hacer pruebas y sacar el codigo que necesitas te sirve.

    https://github.com/pablinn/sim800_v2

    Video demo de sim800l usando FONA_Library


    Sldos.....


    Agregado de protocolos TCP
    Desarrollo de libreria con soporte "HTTP GET y POST" le falta mucho pero me gusta como esta quedando.

    *modo debug o logico(ver las respuestas AT o solo los estado True o False) para poder hacer tu programa basado en estados(maquina de estados )
    *generar una clase
    *soporte para TCP/IP o UDP/IP
    *"HTTP GET o POST "

    https://github.com/pablinn/sim800v3.git


    Saludos....

    Envio de mensajes
    Una forma simple y sencilla de mandar mensaje con la librería que estoy haciendo de ultima borra el resto y deja la que necesitas me imagino que es para automatización.

    4.2@800mA (estables con esto y ya lo charle en el grupo de whatsapp debe ser fijo no debe variar sino se desconecta de la red)

    AT+CBC   --> indica la tension 0,100,4212 (0, 100 % carga de la bateria , tension en milivolt)

     una vez conecatado a la red demora 3 segundos revisar con

    AT+COPS=? redes disponibles
    AT+COPS?  red conectada
    AT+CGREG?

    Mandar mensaje conectado a la red movil (unifon - movistar / CTImovil - claro)

    AT+CMGF=1
    AT+CMGS=\"+54299xxxxx\"  (el cel es con cod \"+pais-area-celular\")
    te devuelve >
    mandas el msj y terminas con control Z
    escribir (0x1A)

    en la libreria sim800v3 el cual esta funcionando la probamos en varios celulares un compañero colombiano logro automatizar una cerradura desde su celular asi que funciona si no es otra cosa..
    Ademas te podes conectar a internet usando TCP/IP UDP/IP HTTP  FTP EMAIL POP funciones de RADIO FM :) aun no termino ya estoy mareado :O

        //CMGS_SMS("+54299xxxxx","Hola Mundo");

    tener en cuenta la tension revisar con AT+CBC varias veces no debe variar o se resetea o desconecta.

    Saludos.

    Bueno nada nuevo a lo mucho que hay solo el montaje final un arduino nano los dos PIR por las interrupciones del nano para ponerlo en modo sleep y ahorrar el consumo de la bateria.



    Saludos..