Translate

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

sábado, mayo 06, 2017

Tunel Entre Orange Pi 2G IoT y servidor netcat remoto - SSH por GPRS -

Acceder a la Shell de nuestra Orange Pi 2G IoT mediante red de datos GPRS




Tipo conexión 1: Usando NetCat:
 El principal problema es que carecemos de IP pública en nuestras conexiones de datos moviles.
Para acceder a una shell remota, necesitamos dos equipos, el equipo 1 será nuestro servidor y el equipo 2 será nuestra Orange Pi 2G IoT conectada a internet por GPRS, yo uso los datos de freedompop (gratis).
Usaremos en ambos equipos el software netcat, si no disponemos de el lo instalaremos en ambos equipos:

$sudo apt-get install netcat

 Voy a usar el puerto 87, ya que es uno de los miles que están disponibles:

1- Lo primero es hacer un mapeo del puerto 87 en nuestro router de tal manera que apunte por TCP y UDP a nuestro servidor netcat:


2- Equipo 1 en nuestro servidor, ejecutar:

$ sudo nc -vlp 87



3-Equipo 2:, nuestro cliente, en este caso nuestra Orange Pi conectada a internet por GPRS, yo uso los datos de Freedompop:
Ejecutamos el siguiente comando:
 $bash -i &> /dev/tcp/Ip_Pública_Servidor_remoto/87 0>&1




De inmediato en nuestro equipo servidor podremos acceder a la shell de nuestra Orange Pi, para este caso, mediante un tunel de datos GPRS y sin necesidad de usar una IP pública:



Ahora solo falta crear un watchdog que nos permita automatizar esta conexión:
            1. Vigilar la conexión ppp0 y lanzarla de nuevo en caso de no estar disponible
            2.Conectar por netcat a nuestro servidor para abrir un tunel a la shell de orange pi 2G IoT

La aplicación de este tunel es muy útíl de cara a acceder a una vivienda remota por ejemplo, así dispondremos de acceso a todas las funciones que deseemos dar a nuestra orange pi 2G IoT: Sensores de temperatura humedad, gases, video vigilancai, termistato, etc... las impicaciones son muy elevadas.


jueves, mayo 04, 2017

Orange Pi 2G IoT: Automatizando tareas. (autoconexión con operador)

Automatizando la conexión con nuestro operador para que se establezca en el arranque del sistema:

1. Editamos el fichero de interfaces para que espere el nuevo dispositivo:

Editamos con vim:
vim /etc/network/interfaces

# interfaces(5) file used by ifup(8) and ifdown(8)
# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

#MODEM_GPRS
allow-hotplug ppp0
iface ppp0 inet wvdial

Salimos salvando con Esc+crtl+x

2.Creamos un script en init.d para que haga la llamada a wvdial en cada inicio:

Editamos con vim:
vim /etc/init.d/wvdial

#!/bin/sh
#Le pedimos al script que espere 15 segundos para asegurarnos de que el
#el modem GPRS de la Orange Pi 2G Iot ya estara activo en el sistema

sleep 15

case "$1" in
  start)
    echo "Connectando a Freedompop..."
    # aplicacion que usaremos para conectar
    /usr/bin/wvdial
    ;;
  stop)
    echo "Disconnectando de Freedompop..."
    # aplicacion qeu queremos parar
     /sbin/ifconfig ppp0 down
    ;;
  *)
    echo "Usar: /etc/init.d/wvdial {start|stop}"
    exit 1
    ;;
esac

Salimos salvando con Esc+crtl+x

-Lo dejamos como ejecutable para que podamos usarlo también desde la shell:
sudo chmod 777 /etc/init.d/wvdial

-Para activar el script basta con teclear un ‘update-rc.d wvdial defaults’.
-Si queremos lanzarlo desde la shell como servicio hacemos:
 service wvdial start
  Ha yque esperar a que nos dé conexión, de esta manera dejamos la conexión ppp0 funcionado en segundo plano.
-Si queremos pararlo desde la shell como servicio hacemos:
service wvdial stop
-Por ultimo y muy importante, si queremos comprobar su estado (log de conexión)
  systemctl status wvdial.service
-También podemos ver si está activa la conexión ppp0 con un ifconfig.
- Ahora sólo necesitáis reiniciar, apagar, encender, dejar activo, volver a apagar, y así hasta que decidáis que ya lo habéis probado lo suficiente para confiar en que la conexión se restablecerá en cada arranque.

Orange Pi 2G IoT Ayuda y referencias


Orange Pi 2G IoT Referencias


Grupo de Telegran Orange Pi 2G IoT: 
Quitar el guion  t.m-e, es para evitar spam:

https://t.m-e/joinchat/AAAAAEHxVPlYqktFzY6Sxg


Links para trabajar con la Orange Pi 2G IoT desde cero:


1. Las descargas de Sistemas Operativos y Android SDK:

http://www.orangepi.org/downloadresources/
          -Android-Tcard
           -Ubuntu Server_For_OrangePi 2G_IOT
           -2G-IOT_Android SDK source Code
           -Android-Nand For OrangePi 2G-IoT
           -Armbian_Orangepi2g-iot


2. Manual muy completo para empezar a trabajar con la Orange Pi:

https://mega.nz/#!ds0BEB6Q!wYNc_gpWlzmt_P4eXCS5Ahr0lICTsUOFPnviib3z5IA

3.- Trabajar con la Orange Pi 2G IoT

3.1 Configurar modem GPRS :
http://surfero.blogspot.com.es/2017/04/freedompop-orange-pi-2g-iot.html



3.2 Orange Pi 2G IoT: Automatizando tareas. (autoconexión con operador):
http://surfero.blogspot.com.es/2017/05/orange-pi-2g-iot-automatizando-tareas.html

3.3 Una carcasa que he realizado para esta placa:
http://www.thingiverse.com/thing:2298826


3.4 Configurar la Conexión USB ---TTL


3.5 Tunel Entre Orange Pi 2G IoT y servidor netcat remoto - SSH por GPRS -
http://surfero.blogspot.com.es/2017/05/tunel-entre-orange-pi-2g-iot-y-servidor.html

                             
3.6: Otra forma de conectar por la red de datos a nuestra Orange Pi 2G IoT, en este caso con tunel
       inverso por SSH:
http://surfero.blogspot.com.es/2017/05/conexion-por-red-de-datos-movil-2g-g.html


4 Salidas GPIO Orange Pi 2G IoT
http://surfero.blogspot.com.es/2017/05/salidas-gpio-orange-pi-2g-iot.html

5.Usar el puerto USB en linux:

Hay que poner los swiches 1234 en OFF y 5678 en on:

6. Usar la función de bluetooth en nuestra tarjeta:
  http://surfero.blogspot.com.es/2017/06/orange-pi-2g-iot-bluetooth-21-howto.html

7.Orange Pi 2G IoT - Ubuntu 16.04

http://surfero.blogspot.com.es/2017/06/distribucion-gnulinux-para-orange-pi-2g.html



8. Orange Pi IoT 2G: Sistema operativo de sólo lectura (y S.O en descarga)

http://surfero.blogspot.com.es/2017/06/sistema-operativo-de-solo-lectura.html




9.Pantalla Tactil CapacitativaTFT 3.5" para Orange Pi IoT 2G:

http://surfero.blogspot.com.es/2017/07/pantalla-tactil-tft-35-para-orange-pi.html


   9.1 Simple carcasa 3d para esta placa:
     http://surfero.blogspot.com.es/2017/07/orange-pi-iot-2g-lcd-carcasa-3d-simpe.html

10.Cómo configurar un servidor VNC en Ubuntu Server para Orange Pi IoT 2G sin x-server
http://surfero.blogspot.com.es/2017/07/como-configurar-un-servidor-vnc-en.html

11. Cómo trabajar con la memoria NAND, escribir en ella desde un PC con linux:
http://surfero.blogspot.com.es/2017/08/orange-pi-iot-2g-trabajar-con-la.html
12. Instalar Linux en la memoria NAND:
http://surfero.blogspot.com.es/2017/09/orange-pi-iot-2g-flashear-memoria-nand.html






jueves, abril 27, 2017

Usar datos gratis para proyectos IoT FreedomPop y Orange Pi 2G IoT (también Simyo).


Configuración PPP, freedompop y tarjera Orange Pi 2G IoT:

He preparado este pequeño tutorial para poder usar los datos de conexión gratuita de freedompop con esta pequeña tarjeta de Orange Pi, comprada en aliexpress por unos 12€.
La versión usada de Linux es Ubuntu Server, Link de descarga (http://www.orangepi.org/downloadresources/) también funcionará en Armbian, aunque no lo he probado.

Es necesario registar el modem de la Orange Pi 2G IoT en la red GSM de movistar (de momento es la predeterminada por freedompop). Sin este paso no se puede registrar en su red.

1.Instalar el software necesario:

#sudo apt-get install ppp wvdial

2. Configurar ficheros:

        2.1  fichero:  /etc/wvdial.conf para Freedompop:
[Dialer defaults]
ISDN = 0
Modem Type = Analog Modem
Phone = *99***1#
Stupid Mode = 1
Dial Command = ATDT
Modem = /dev/modem0
Baud = 460800
Init1 = AT+COPS=0
Init2 = AT+CFUN=1
Init3 = AT+CGATT=1
Init4 = AT+CGDCONT=1,"IP","freedompop.foggmobile.com","",0,0
Init5 = AT+CGACT=1,1
Username = " "
Password = " "


          2.2 fichero  /etc/ppp/peers/wvdial
                   noauth
                   name wvdial
                   # Descomenta esta linea si quieres utilizar los DNS de Freedompop (son las DNS de google)
                  #usepeerdns
                 defaultroute
                  replacedefaultroute
           2.3 fichero /etc/ppp/options
                 comentar la linea lcp-echo-failure 4, si no la comentamos se desconectará cada 2 minutos.



3.Ejecutar wvdial, este es el log:

+CREG: 5
OK
--> Sending: AT+CGATT=1
AT+CGATT=1
+CGREG: 5
--> Sending: ATQ0
ATQ0
+CGATT:1
OK
--> Re-Sending: AT+CGATT=1
AT+CGATT=1
+CGATT:1
OK
--> Sending: AT+CGDCONT=1,"IP","freedompop.foggmobile.com","",0,0
AT+CGDCONT=1,"IP","freedompop.foggmobile.com","",0,0
OK
--> Sending: AT+CGACT=1,1
AT+CGACT=1,1
OK
--> Modem initialized.
--> Sending: ATDT*99***1#
--> Waiting for carrier.
ATDT*99***1#
CONNECT
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Thu Apr 27 08:45:06 2017
--> Pid of pppd: 4484
--> pppd: ú¶P{
--> Using interface ppp0
--> pppd: ú¶P{
--> local  IP address 10.xxx.xxxx.xxxx
--> pppd: ú¶P{
--> remote IP address 192.xxx.xxxx.xxxx
--> pppd: ú¶P{
--> primary   DNS address 8.8.8.8
--> pppd: ú¶P{
--> pppd: ú¶P{
--> Script /etc/ppp/ip-up run successful
--> Default route Ok.
--> Nameserver (DNS) Ok.
--> Connected... Press Ctrl-C to disconnect
--> pppd: ú¶P{


4. Podemos probar la comunicacion con una ping al puerto ppp0 y DNS de google:
Deveremos iniciar antes una nueva sesión ssh a la Orange Pi, o bien hacerlo como lo ago yo, usando 
el gestor de ssiones "tmux", creo que tengo el tutorial en este blog:

ping -I ppp0 8.8.8.8

Y el resultado es este:


root@OrangePi:~# ping -I ppp0 8.8.8.8

PING 8.8.8.8 (8.8.8.8) from 10.186.19.228 ppp0: 56(84) bytes of data.

64 bytes from 8.8.8.8: icmp_seq=1 ttl=58 time=836 ms

64 bytes from 8.8.8.8: icmp_seq=2 ttl=58 time=1071 ms

64 bytes from 8.8.8.8: icmp_seq=3 ttl=58 time=944 ms

64 bytes from 8.8.8.8: icmp_seq=4 ttl=58 time=1025 ms

64 bytes from 8.8.8.8: icmp_seq=5 ttl=58 time=548 ms

64 bytes from 8.8.8.8: icmp_seq=6 ttl=58 time=302 ms

64 bytes from 8.8.8.8: icmp_seq=7 ttl=58 time=2372 ms

....

Nota: si usamos Simyo la configuración de /etc/wvdial.conf es:

[Dialer Simyo]
ISDN = 0
Modem Type = Analog Modem
Phone = *99***1#
Stupid Mode = 1
Dial Command = ATDT
Modem = /dev/modem0
Baud = 460800
Init1 = AT+COPS=0
Init2 = AT+CFUN=1
Init3 = AT+CGATT=1
Init4 = AT+CGDCONT=1,"IP","orangeworld"
Init5 = AT+CGACT=1,1
Username = " "
Password = " "

Podemos elegir entre conectar con Freedomopop o Simyo, podemos etiquetar [Dialer freedompop] y [Dialer Simyo] luego, dependiendo de la Sim que tengamos insertada usar: wvdial freedompop para conectar con freedompop o wvdial Simyo para conectar con Simyo.



lunes, abril 24, 2017

Configurar modem GSM en la Orange Pi 2G IoT (Orange España)

Configurar modem GSM en la Orange Pi 2G IoT
Comentaros que necesitáis unos conocimientos más o menos básicos para poder seguir esto, pero vamos, está todo cortado y pelado.
Empezamos. Abrimos terminal.
sudo apt-get install  ppp wvdial

Hacemos
sudo vim /etc/wvdial.conf
Y metemos:
[Dialer defaults]
Modem = /dev/modem0
Baud = 30720000
Dial Command = ATDT
Init1 = ATE1
Init2 = AT+CGDCONT=1,"IP","internet","",0,0
FlowControl = CRTSCTS
Init3 = ATM0
Phone = *99#
Username = orange
Password = orange
Stupid Mode = 1
"internet" es donde va el nombre del APN, que en el caso de Orange es, precisamente ese, internet. El username y password de Orange son orange para ambos, si teneis otra compañía estos datos serán diferentes. De hecho, quizá estas configuraciones no funcionen para ellos. NOTA: Lo he probado exitosamente también con Vodafone con el APN "airtelnet.es" y como usuario y contraseña vodafone.
Hacemos
sudo vim /etc/ppp/peers/wvdial
y metemos:
hide-password
noauth
name wvdial
debug
usepeerdns
defaultroute
noipdefault
mtu 472
Ahora hacemos
sudo vim /etc/ppp/peers/wvdial-pipe
y metemos:
noauth
name wvdial
plugin passwordfd.so
defaultroute
replacedefaultroute
Hacemos, finalmente,
sudo wvdial
Y a volar!!!!!!!!!! Para ahora deberíais estar conectados. Si no obtenéis conexión, puede deberse a varias cosas. Podríais tener una conexión abierta de otra red (LAN, Wireless) mientras conectábais al móvil, luego la habéis cerrado para probar la conexión móvil, y ésta no funciona. Desactivad otras redes antes de conectar con el móvil.
También podrían ser las DNS, vamos a descubrirlo.
ping -w 3 www.google.es
Si os responde correctamente, es que estáis conectados. Si no, probad:
ping -w 3 8.8.8.8
Si os responde este, pero no el anterior, es que os fallan las DNS. La solución es sencilla:
sudo echo "nameserver 208.67.222.222" >/etc/resolv.conf
sudo echo "nameserver 208.67.220.220" >>/etc/resolv.conf
Con estos dos comandos hemos añadido las DNS de OpenDNS. Ahora todo debería funcionar correctamente.
Hay unas últimas consideraciones a hacer.
Ya lo hemos configurado todo, pero ¿cómo desconectamos? y ¿cómo volvemos a conectar?
Los procesos "sudo rfcomm connect 0" y "sudo wvdial" se cierran haciendo Ctrl+C en la consola donde se ejecutan. Otra forma para cerrar ambos es matarlos mediante
sudo killall wvdial pppd rfcomm
Para volver a conectar, podemos hacer un script. El primero que os propongo es "silencioso", "ciego":
sudo rfcomm connect 0 & sleep 5 && sudo wvdial
El segundo que os propongo abre dos pantallas de xterm mostrando los procesos (debéis tener instalado xterm; sudo apt-get install xterm):
echo -e 'sudo xterm -e rfcomm connect 0 & sleep 5 && sudo xterm -e wvdial' >> ~/.conectbt.sh
chmod +x  ~/.conectbt.sh
Ahora teneis el script hecho, sólo teneis que crear un acceso directo a
gksudo sh ~/.conectbt.sh
Para desconectar, vamos a las pantallas donde se ejecutan los procesos, y hacemos Ctrl+C
Espero que os haya sido de utilidad!!

sábado, abril 01, 2017

Raspberry Pi Trasplante de Regulador de Voltaje (Hard Mod)


Si bien es cierto que para una gran cantidad de aplicaciones alimentamos nuestra placa Raspberry Pi con un adaptador de pared, otros usos podrían requerir de una fuente de alimentación portátil a baterías, como por ejemplo: Construyendo Nuestro Propio Pi(rate)Box Desde Cero.
Lamentablemente el circuito de la fuente de alimentación de la placa Raspberry Pi utiliza un regulador de tensión lineal para la línea de alimentación principal de 3.3V. El regulador de tensión en cuestión es un SE8117T33 fabricado por Seaward Electronics Inc., el cual, si bien es de alto rendimiento, por sus características lineales desperdicia aproximadamente un 30% de energía la cual disipa en forma de calor. Este porcentaje puede parecer despreciable si la placa Raspberry Pi es alimentada utilizando un adaptador de pared, pero cuando se trata de baterías, este porcentaje no es para nada insignificante. Para incrementar la autonomía utilizando baterías, sustituiremos el regulador de tensión lineal por un regulador de tensión switching.
Sin más preámbulos procederemos a analizar las características eléctricas del regulador de tensión original de la placa Raspberry Pi encontradas en la hoja de datos provista por el fabricante.
Características principales del regulador de voltaje SE8117T33:
  • Voltaje de Entrada: 9V (Máx.)
  • Voltaje de Salida: 3.3V
  • Corriente Máxima: 1A
Conociendo estos datos, buscaremos un módulo regulador switching de características iguales o superiores para alimentar correctamente nuestra placa. En el mercado existe una gran cantidad de módulos switching de diversos fabricantes que pueden satisfacer nuestros requerimientos, como por ejemplo, el módulo D24V6ALV de la Casa Pololu, que si bien provee una corriente de salida máxima de 600mA, es suficiente para nuestro propósito. En particular, no me fué posible encontrar dicho módulo dada la actual escasez de componentes electrónicos importados en mi país. Sin desistir de la búsqueda, conseguí mediante un importador local un módulo genérico de procedencia China, rotulado “DSN-MINI-360”, cuyas características eléctricas se detallan a continuación:
Características principales del módulo regulador switching DSN-MINI-360:
  • Voltaje de Entrada: 4.75V – 23V
  • Voltaje de Salida: 1.0V – 17V (Ajustable)
  • Corriente Máxima: 1.8A
  • Eficiencia: 96%
Como podemos observar, las características satisfacen perfectamente nuestros requerimientos, y con una eficiencia del 96% sólo tenemos una pérdida del 4% en contraste con el 30% del regulador de tensión lineal original, obteniendo así una mejora del 26%.
El módulo regulador switching DSN-MINI-360 se observa en las siguientes imágenes:
A continuación debemos soldar al módulo switching los 3 cables de conexión en los lugares correspondientes:
  • IN+ –> Entrada (+) [5V]
  • IN- –> GND (-) [Común a Entrada/Salida]
  • OUT+ –> Salida (+) [3.3V]
En la siguiente imagen se observa el resultado de este proceso:
Habiendo realizado exitosamente el paso anterior, ahora debemos ajustar la tensión de salida del módulo a un voltaje de 3.3V, la misma tensión de salida del regulador de voltaje original de la placa. Conectaremos el módulo switching a una fuente de alimentación cuyo voltaje de salida sea 5V, respetando el esquema de conexiones detallado anteriormente. Con el multímetro ajustado en la escala apropiada, comenzaremos a ajustar el trimpot ayudándonos con un destornillador de precisión hasta obtener el voltaje deseado en la salida. NO DEBE EXCEDER 3.3V!!!
IMPORTANTE: el ajuste de la tensión de salida del módulo switching debe realizarse ANTES de ser conectado a la placa Raspberry Pi. Una tensión de alimentación mayor a 3.3V causará daños irreparables en la placa.
Llegados a este punto, ya tenemos el módulo switching listo para ser instalado como reemplazo del regulador de voltaje original. La etapa siguiente probablemente sea las más crítica (y emocionante) de todo el proceso, que consiste en remover el regulador de voltaje original e instalar el módulo switching como reemplazo del mismo.
Antes de remover el regulador de voltaje SE8117T33, debemos verificar el pinout del mismo para identificar los puntos de conexión de nuestro módulo switching. El pinout se observa en la siguiente imagen:
Luego, buscamos el regulador de voltaje original en la placa Raspberry Pi y en su correspondiente diagrama esquemático para identificar correctamente los puntos de conexión:
Para remover el regulador de tensión original, emplearemos una estación de soldado SMD con aire caliente, en particular he utilizado la estación HONY 908 con excelentes resultados.
Con extremo cuidado calentaremos el componente hasta que sea posible extraerlo de la placa con la ayuda de una brusela antiestática. Debemos asegurarnos de calentar lo suficiente el componente ya que de lo contrario existe el riesgo de dañar los pads del PCB. La placa con el regulador de voltaje removido se observa a continuación:
Si logramos remover el regulador de tensión sin inconvenientes, podemos volver a respirar y la modificación estará casi completa. En caso de tener algún contratiempo, a no perder la calma y revisar el diagrama esquemático en busca de alguna solución.
Con el componente original removido, solamente nos queda soldar los 3 cables de conexión de nuestro módulo switching a los pads correspondientes en nuestra placa Raspberry Pi. También es conveniente fijar el módulo al PCB, para esta tarea utilizaremos un pegamento no abrasivo a base de silicona, por ejemplo “Fastix®”. El único inconveniente será que la frambuesa (logo) quedará oculta. Triste
En particular, he sometido a todo el proceso descripto anteriormente a dos placas Raspberry Pi con excelentes resultados. En las siguientes imágenes se observan ambas placas: