Tabla de contenido:

Registrador de datos Raspberry Pi Zero W: 8 pasos (con imágenes)
Registrador de datos Raspberry Pi Zero W: 8 pasos (con imágenes)

Video: Registrador de datos Raspberry Pi Zero W: 8 pasos (con imágenes)

Video: Registrador de datos Raspberry Pi Zero W: 8 pasos (con imágenes)
Video: Raspberry Pi, Curso para principiantes 2024, Noviembre
Anonim
Registrador de datos Raspberry Pi Zero W
Registrador de datos Raspberry Pi Zero W

Con una Raspberry Pi Zero W, puede hacer un registrador de datos barato y fácil de usar, que puede conectarse a una red wifi local o servir como un punto de acceso en el campo que le permite descargar datos de forma inalámbrica con su teléfono inteligente.

Presenté esta configuración en la reunión de otoño de American Geophysical Union 2017, como una forma de hacer su propia configuración de registrador de datos. Puedes encontrar esa presentación aquí.

Que necesitarás:

  • Una Raspberry Pi Zero W
  • Una tarjeta micro SD
  • un cable USB o una fuente de alimentación USB
  • Una computadora con un lector de tarjetas USB
  • Opcional (pero útil):

    • miniHDMI -> adaptador HDMI (para conectar el Pi a una pantalla)
    • Adaptador USB OTG (para conectar un teclado al Pi

Paso 1: Configurar Pi Zero W

Para comenzar, coloque una imagen de Rasbian en una tarjeta microSD (en este tutorial usé 2017-07-05-raspbian-jessie-lite, disponible aquí). Se puede usar una versión lite (sin escritorio) ya que la configuración se realizará a través de la línea de comandos.

Inserte la tarjeta SD en el Pi, conecte la pantalla y un teclado y enciéndalo enchufando el cable de alimentación. La configuración sin cabeza también es posible, pero requeriría conectarse a través de SSH.

Después de que Pi haya arrancado, inicie sesión (nombre de usuario predeterminado: pi, contraseña: raspberry) y cambie la contraseña con el comando "passwd".

El teclado se puede configurar ingresando "sudo raspi-config" en la terminal.

Paso 2: Conéctese a WiFi

Conectarse a WiFi
Conectarse a WiFi
Conectarse a WiFi
Conectarse a WiFi
Conectarse a WiFi
Conectarse a WiFi
Conectarse a WiFi
Conectarse a WiFi

Para conectarse a Internet, le diremos a la Pi a qué red conectarse. Comience abriendo el siguiente archivo;

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Aquí, agregue la información de la red en la parte inferior;

red = {

ssid = "nombre de red" psk = "contraseña de red"}

En el caso de una red empresarial, puede utilizar la siguiente configuración (ajuste WPA-EAP // TTLA // MSCHAPv2 a la configuración aplicable).

red = {

ssid = "ssid" #Ingrese su nombre de red key_mgmt = WPA-EAP eap = TTLS identity = "xxxxx" #Ingrese la contraseña de su cuenta de inicio de sesión = "xxxxx" #Ingrese la contraseña fase2 = "auth = MSCHAPv2"}

Guarde presionando CTRL + O y salga con CTRL + X.

Ahora haga referencia a su archivo de configuración en / etc / network / interfaces

sudo nano / etc / network / interfaces

Cambie la parte wlan0 a:

auto wlan0

iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Nuevamente, guarde el archivo (CTRL + O) y luego salga (CTRL + X).

Después de reiniciar (sudo reiniciar), su conexión wifi debería funcionar. Puede probar esto haciendo ping a un sitio web;

ping www.google.com

Cancele el ping con CTRL + C

Para conectarse al Pi a través de SSH de forma inalámbrica, debe habilitar SSH:

sudo raspi-config

Vaya a "5 opciones de interfaz" y habilite SSH. Luego regrese y salga de la configuración.

Busque la dirección IP del Pi:

ifconfig

La IP estará bajo "inet addr:" de la interfaz wlan0.

Ahora puede conectarse al Pi a través de WiFi, si está en la misma red. Descargue Putty (para Windows), ingrese la dirección IP que encontró en "Nombre de host" y presione "Abrir". Después de aceptar la advertencia, ahora debería poder ver la línea de comando e iniciar sesión.

Paso 3: actualice e instale el software necesario

Actualice e instale el software necesario
Actualice e instale el software necesario
Actualice e instale el software necesario
Actualice e instale el software necesario

Después de que WiFi esté funcionando, actualice la Pi con:

sudo apt-get update -y && sudo apt-get upgrade -y

Una vez finalizada la actualización (puede tardar un poco), instale el software que usaremos;

sudo apt-get install python3 python3-serial apache2 -y

Paso 4: Conéctese a un sensor (en este ejemplo, un Arduino)

Conecte el Arduino junto con un teclado usando un concentrador USB, o conecte el Arduino a través del puerto USB único y realice la configuración con SSH a través de WiFi.

Para poder acceder al puerto serie al que está conectado el Arduino, es útil dar acceso a la cuenta pi predeterminada. Como el Arduino generalmente se asigna al puerto "/ dev / ttyACM0", use el siguiente comando para otorgar al usuario 'pi' acceso al puerto:

sudo chown pi: / dev / ttyACM0

Suponiendo que Arduino ya se ha configurado para enviar datos a través del puerto serie, puede ver los datos en Python de la siguiente manera:

Python abierto;

python3

Importar serie:

importar serial

Abra el puerto com:

ser = serial. Serial (puerto = '/ dev / ttyACM0', velocidad en baudios = 9600, tiempo de espera = 5)

Donde la velocidad en baudios del Arduino se estableció en 9600 en este caso.

Puede leer e imprimir una línea ejecutando el siguiente código:

ser.readline (). decode ('utf-8')

Si lo tiene funcionando, puede cerrar la conexión y salir de Python con:

ser.close ()

Salida()

Paso 5: Configure las capacidades del punto de acceso WiFi

Al configurar su Pi Zero W en modo de punto de acceso wifi, puede conectarse a él con cualquier dispositivo wifi. Esto permite configurar el registrador y descargar datos a través de wifi, sin necesidad de cables ni controladores.

Para ello, Adafruit tiene disponible un buen tutorial. Algunas pequeñas observaciones:

  • Para el controlador /etc/hostapd/hostapd.conf, use no use la línea del controlador.
  • El paso "Actualizar hostapd" no debería ser necesario.

Si el punto de acceso no funciona al final del tutorial, intente reiniciar la Pi (sudo reboot).

Paso 6: cambiar entre el punto de acceso Wifi y los modos de cliente

A veces, querrá actualizar el software o instalar un nuevo software en su Raspberry Pi, pero esto requiere una conexión a Internet. Afortunadamente, cambiar entre los dos es muy fácil.

Conéctese al Pi con SSH (¡a través de un cable, no wifi!). Empiece por detener los servicios del punto de acceso:

sudo cystemctl detener hostapd.service

sudo cystemctl detener isc-dhcp-server.service

Luego edite el archivo de interfaces de red:

sudo nano / etc / network / interfaces

Aquí debe comentar los parámetros de alojamiento y descomentar los parámetros de conexión de red. Cámbielo de esto:

# -Parámetros de alojamiento:

allow-hotplug wlan0 iface wlan0 inet dirección estática 192.168.42.1 netmask 255.255.255.0 # -Parámetros de red (cliente): #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

A esto:

# -Parámetros de alojamiento: # allow-hotplug wlan0 #iface wlan0 inet static # address 192.168.42.1 # netmask 255.255.255.0 # -Parámetros de red (cliente): auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Guarde y cierre el archivo.

A continuación, ejecuta los siguientes comandos:

sudo systemctl start wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

Ahora su Pi debería conectarse a wifi nuevamente, lo que le permitirá actualizar e instalar software.

Para volver al modo de punto de acceso, cambie los comentarios en / etc / network / interfaces y reinicie el Pi.

Paso 7: Comentarios finales

Observaciones finales
Observaciones finales

Configuración del sitio web

El servidor apache se encuentra en / var / www /. Para cambiar la página predeterminada, edite el archivo /var/www/html/index.html.

Puede hacer que los archivos aquí estén disponibles para descargar a través de la conexión wifi, navegando en su navegador a la dirección IP de Pi (192.168.42.1). Cualquier dispositivo habilitado para wifi puede descargarlos sin ningún software adicional.

Conexión SFTP

A través de SSH, se puede establecer una conexión FTP. Puede usar Filezilla para transferir rápida y fácilmente una gran cantidad de archivos (ver imagen).

Reloj en tiempo real

Como el reloj interno del Pi se desviará significativamente si no hay conexión a Internet, se necesitará un módulo de reloj en tiempo real (RTC) si se requiere un cronometraje preciso. Uno de esos módulos es RasClock, las instrucciones de instalación se pueden encontrar aquí. También hay disponibles otros relojes basados en i2c (es decir, DS3231)

Conclusión

Si todo salió correctamente, ¡ahora debería tener un registrador de datos Pi Zero funcionando! En el siguiente paso se incluye un ejemplo de secuencia de comandos de registro de Python.

Paso 8: Ejemplo de secuencia de comandos de registro de Python

importar sistema operativo

importar serie desde tiempo importar tiempo desde fecha y hora importar fecha y hora importar numpy como np ser = serial. Serial (puerto = 'COM4', velocidad en baudios = 57600, tiempo de espera = 5) directorio = r '\ var / www / html / data / anemometer / WMPro1352_ 'ser.flushInput () ser.flushOutput () try: while True: day_timestring = datetime.strftime (datetime.now (),'% Y% m% d ') file_today = directorio + day_timestring +'.dat '#Leer datos y obtener inmediatamente la línea de tiempo = ser.readline (). decode ('utf-8') nowtime = datetime.strftime (datetime.now (), '% Y-% m-% d% H:% M:% S.% f ') línea = línea.split (', ') intente: u = float (línea [1]) excepto: u = np.nan intente: v = float (línea [2]) excepto: v = np.nan try: w = float (línea [3]) excepto: w = np.nan try: c = float (línea [5]) excepto: c = np.nan Ts = 1/403 * c ** 2 - 273.15 intente: Ta = float (línea [8]) excepto: Ta = np.nan if (os.path.isfile (file_today)): with open (file_today, 'a') as fileobject: fileobject.write (nowtime + ',') fileobject.write (str (u) + ',' + str (v) + ',' + str (w) + ',' + str (c) + ',' + str (Ts) + ',' + str (Ta) + '\ n') fileobject.clos e () else: con open (file_today, 'w') como fileobject: fileobject.write ('"Time", "u", "v", "w", "c", "Ts", "Ta" / n ') fileobject.write (nowtime +', ') fileobject.write (str (u) +', '+ str (v) +', '+ str (w) +', '+ str (c) +', '+ str (Ts) +', '+ str (Ta) +' / n ') fileobject.close () excepto KeyboardInterrupt: ser.close ()

Recomendado: