This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
RaspBerry Pi + nrf24L01
#41
El script lo guardo en alguna ruta en concreto?

El campo de fecha y hora, creo que la BD tiene para añadir TIMESTAMP en un campo cuando añades un registro nuevo, no le tienes que pasar tu esa info. Asi me ahorro meter esos datos en la trama.

En cuanto pueda, hago esto. Tengo que recibir primero datos en la Rasp Gran sonrisa

Gracias
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#42
En la misma ruta que lo guardes ejecutas luego el comando mysql.

Si, se puede poner TIMESTAMP de forma automatica o que en el INSERT que se hace desde el script de python se use la función NOW(). Efectivamente en la trama no debe venir la fecha, ya que es el script de python el que la introduce automáticamente. Entonces, ¿prefieres TIMESTAMP automático o hacerlo con la función NOW() desde el INSERT

ejemplo con TIMESTAMP automático:
INSERT INTO trama(nodo, numero, temperatura, humedad) VALUES(1, 28, 17.7, 67.3);

ejemplo con NOW:
INSERT INTO trama(nodo, numero, fecha, temperatura, humedad) VALUES(1, 28, NOW(), 17.7, 67.3);
  Responder
#43
Pues desconozco cual es la mejor forma. Supongo que no habra mucha diferencia no?
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#44
También puedes instalar phpmyadmin, si quieres hacerlo de forma gráfica, para las pruebas.

Saludos
  Responder
#45
Lo tengo instalao el phpmyadmin
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#46
grafisoft escribió:Pues desconozco cual es la mejor forma. Supongo que no habra mucha diferencia no?

Ninguna en realidad. De hecho en tu caso puede que sea más cómodo el timestamp. Cambia el script por este otro, ademas añado la batería que no había puesto antes:

Código:
CREATE DATABASE sensores;
GRANT ALL PRIVILEGES ON sensores.* to cliente@localhost IDENTIFIED BY 'cliente2014';
FLUSH PRIVILEGES;
USE sensores;
CREATE TABLE trama(id INT NOT NULL AUTO_INCREMENT, nodo TINYINT NOT NULL, numero INT NOT NULL, fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP, bateria FLOAT, temperatura FLOAT, humedad FLOAT, PRIMARY KEY (id));
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 1, '2014-12-20 00:00:00', 3.8, 25.7, 77.4);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 1, '2014-12-20 00:00:00', 3.77, 25.7, 77.4);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 2, '2014-12-20 01:00:00', 3.8, 25.4, 67.4);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 2, '2014-12-20 01:00:00', 3.45, 25.4, 67.4);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 3, '2014-12-20 02:00:00', 3.8, 25.8, 56.8);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 3, '2014-12-20 02:00:00', 3.9, 25.8, 56.8);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 4, '2014-12-20 03:00:00', 3.4, 25.1, 88.9);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 4, '2014-12-20 03:00:00', 3.8, 25.1, 88.9);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 5, '2014-12-20 04:00:00', 3.66, 24.6, 45.7);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 5, '2014-12-20 04:00:00', 3.8, 24.6, 45.7);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 6, '2014-12-20 05:00:00', 3.83, 21.9, 67.1);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 6, '2014-12-20 05:00:00', 3.81, 21.9, 67.1);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 7, '2014-12-20 06:00:00', 3.55, 25.7, 34.2);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 7, '2014-12-20 06:00:00', 3.9, 25.7, 34.2);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 8, '2014-12-20 07:00:00', 4.2, 21.2, 55.6);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 8, '2014-12-20 07:00:00', 4.3, 21.2, 55.6);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 9, '2014-12-20 08:00:00', 3.77, 24.8, 56.0);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 9, '2014-12-20 08:00:00', 3.8, 24.8, 56.0);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 10, '2014-12-20 09:00:00', 3.45, 27.7, 56.3);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 10, '2014-12-20 09:00:00', 3.65, 27.7, 56.3);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 11, '2014-12-20 10:00:00', 3.8, 29.7, 56.6);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 11, '2014-12-20 10:00:00', 3.8, 29.7, 56.6);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 12, '2014-12-20 11:00:00', 3.90, 30.1, 56.9);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 12, '2014-12-20 11:00:00', 3.56, 30.1, 56.9);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 13, '2014-12-20 12:00:00', 3.8, 31.5, 57.2);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 13, '2014-12-20 12:00:00', 3.8, 31.5, 57.2);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 14, '2014-12-21 00:00:00', 3.33, 25.7, 77.4);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 14, '2014-12-21 00:00:00', 3.8, 25.7, 77.4);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 15, '2014-12-21 01:00:00', 3.8, 25.4, 67.4);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 15, '2014-12-21 01:00:00', 3.8, 25.4, 67.4);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 16, '2014-12-21 02:00:00', 3.78, 25.8, 56.8);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 16, '2014-12-21 02:00:00', 3.8, 25.8, 56.8);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 17, '2014-12-21 03:00:00', 3.8, 25.1, 88.9);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 17, '2014-12-21 03:00:00', 3.8, 25.1, 88.9);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 18, '2014-12-21 04:00:00', 3.45, 24.6, 45.7);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 18, '2014-12-21 04:00:00', 3.46, 24.6, 45.7);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 19, '2014-12-21 05:00:00', 3.47, 21.9, 67.1);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 19, '2014-12-21 05:00:00', 3.48, 21.9, 67.1);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 20, '2014-12-21 06:00:00', 3.8, 25.7, 34.2);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 20, '2014-12-21 06:00:00', 3.8, 25.7, 34.2);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 21, '2014-12-21 07:00:00', 3.8, 21.2, 55.6);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 21, '2014-12-21 07:00:00', 3.8, 21.2, 55.6);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 22, '2014-12-21 08:00:00', 3.8, 24.8, 56.0);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 22, '2014-12-21 08:00:00', 3.4, 24.8, 56.0);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 23, '2014-12-21 09:00:00', 3.7, 27.7, 56.3);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 23, '2014-12-21 09:00:00', 3.8, 27.7, 56.3);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 24, '2014-12-21 10:00:00', 3.9, 29.7, 56.6);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 24, '2014-12-21 10:00:00', 3.55, 29.7, 56.6);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 25, '2014-12-21 11:00:00', 3.8, 30.1, 56.9);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 25, '2014-12-21 11:00:00', 4.2, 30.1, 56.9);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(1, 26, '2014-12-21 12:00:00', 4.1, 31.5, 57.2);
INSERT INTO trama(nodo, numero, fecha, bateria, temperatura, humedad) VALUES(2, 26, '2014-12-21 12:00:00', 4.0, 31.5, 57.2);


Jero escribió:También puedes instalar phpmyadmin, si quieres hacerlo de forma gráfica, para las pruebas.

Es una buena herramienta para trabajar con el mysql desde el navegador.
  Responder
#47
Bueno, pues le he echado un tiempecillo al proyecto y ya he creado la página web que muestra los datos (a falta de poner el plano de la casa):

http://sensores.homelinux.net/

   

Se filtra mediante nodo (en los datos de prueba hay dos nodos) y/o fecha (en los datos de prueba está desde el 20 de Diciembre hasta hoy a las 16 horas) .

Las gráficas muestran la media de todos los datos de cada hora durante 24 horas del nodo y día seleccionados (por defecto los muestra del nodo 1 y del día en curso).

La tabla muestra el registro completo del nodo y día seleccionados.

Como decía antes, ya sólo me falta poner el plano de la casa, que tendrá puestos los últimos datos de cada habitación.
  Responder
#48
Que fiera. Hoy estare fuera casi todo el dia Triste A ver si le meto un empujoncito en lo que me falta.
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#49
Vaya pasada de proyecto!!

Yo tengo una raspberry y no me importaría comprar unos nrf24L01 para ayudar con pruebas
  Responder
#50
El que va despacio soy yo, que no saco un rato libre ni por casualidad Triste
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#51
Bueno, pues ya le he añadido el plano de la casa indicando donde están situados los nodos y qué información más reciente contienen, además de pintarse de un color u otro dependiendo de la temperatura.

Además la tabla de abajo muestra en orden inverso los valores, por lo que lo primero que se ve es el más reciente del día elegido.

Le he puesto que la página se refresque cada 5 minutos por si sola.

Al script de creación de la BBDD hay que añadirle una línea para crear un indice en la tabla y así las consultas sean más rápidas:

Código:
ALTER TABLE trama ADD INDEX (nodo, fecha);
  Responder
#52
Genial, en estos dias que tengo vacaciones, remato el proyecto ^^
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#53
Sigo peleándome con el modulo conectado directamente a la rasp, sin resultados. Voy a pasar al plan B y volveré en otro momento a este punto. Voy a conectar el modulo nRF via UART mediante un nodo. Por tanto sera comunicación serie con la rasp. El tema sera como capturar la info que le entre, supongo que no sera complicado.

Mañana probare a hacerlo así, y de paso empezare a programar la trama, que aun no lo tengo hecho.
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#54
Con pySerial será suficiente. Por cierto, ¿va a estar la raspberry pi conectada a internet? Se le podría programar para que cada x tiempo pusiera en twitter un mensaje de cómo están los nodos o que publique alarmas.
  Responder
#55
Va conectada al router, asi que tiene salida a internet. Eso que comentas, son funciones extra
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#56
He estado haciendo pruebas con un nrf24l01 conectado a la Raspberry Pi y otro conectado a un Arduino (he seguido este tutorial http://www.akirasan.net/raspbpi-arduino-...-nrf24l01/ ) y ha funcionado:

   



Este es el código de Arduino:

Código:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

//nRF24 Cableado utilizado. El pin 9 es CE y 10 a CSN/SS
//     CE       -> 9
//     SS       -> 10
//     MOSI     -> 11
//     MISO     -> 12
//     SCK      -> 13

RF24 radio(9,10);

const uint64_t pipe = 0xcacadebacaLL;

int nodo = 1;
int trama = 1;
float bateria = 4.0;
float temperatura = 25.0;
float humedad = 50.0;

void setup(void)
{
  Serial.begin(9600);

  radio.begin();
  radio.setChannel(14);
  radio.setRetries(15,15);
  radio.setPayloadSize(32);
  radio.openWritingPipe(pipe);
  radio.printDetails(); //Debug
  radio.powerUp();
  Serial.println("Esperando 10 segundos");
  delay(10000);
};

void loop()
{
  char buffer[7];
  char texto[32];
  String cadena = String(nodo) + "#" + String(trama) + "#" + "BA:";
  dtostrf(bateria, 4, 2, buffer);
  cadena += String(buffer) + "#"  + "TE:";
  dtostrf(temperatura, 5, 2, buffer);
  cadena += String(buffer) + "#" + "HU:";
  dtostrf(humedad, 5, 2, buffer);
  cadena += String(buffer);
  cadena.toCharArray(texto, sizeof(texto));
  Serial.println(cadena);
  bool ok = radio.write(&texto, cadena.length());
  trama++;
  delay(1000);
}

Y este el de la Raspberry Pi en python:

Código:
#!/usr/bin/python

from nrf24 import NRF24
import time

pipe = [0xca, 0xca, 0xde, 0xba, 0xca]

radio = NRF24()
radio.begin(0, 0, 25, 18) #Set CE and IRQ pins
radio.setRetries(15,15)
radio.setPayloadSize(32)
radio.setChannel(14)
radio.setPALevel(NRF24.PA_MAX)

radio.openReadingPipe(1, pipe)

radio.startListening()
radio.printDetails()
radio.powerUp()

while True:

  while not radio.available(0):
    time.sleep(0.250)

  recv_buffer = []
  radio.read(recv_buffer)
  out = ''.join(chr(i) for i in recv_buffer)
  print out
  Responder
#57
No uso arduino, uso PIC, y no logro comunicarlos. Algún parámetro de configuración debo tener diferente. Probare la libreria para python tambien. Y volvere a repasar todos los parametros.
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#58
Seguro que es eso, cómo lo tienes configurado?
  Responder
#59
El ultimo día estuve ya con el datasheet del nrf, la libreria de PIC y el código de la rasp para intentar dejar todos los parámetros iguales. Tengo un arduino por aquí, probare también con el arduino para al menos, poder confirmar que realmente funciona. Porque la comunicación la compruebo con otro nodo, y si que recibo cosas, pero en la rasp no salen. Al final, sera una tontería de estas que te hacen volverte loco unos dias.
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#60
Puede ser que estés usando la librería de bizintek? En esa librería solo se configura un byte de address (repetido 4 veces) mientras que en otras se configuran los 5 a pelo.
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  CONSULTA Cómo puedo conectar varias cámaras IP a la vez por wifi a una raspberry? erjavi_zgz 1 1,182 04-02-2022, 12:55 AM
Último mensaje: pano
  Octoprint en Raspberry y MKS SGEN problema puertos Mafer 2 917 26-10-2021, 02:27 PM
Último mensaje: Mafer
  CONSULTA Opiniones Raspberry Pi Pico RP2040 grafisoft 0 798 21-02-2021, 07:32 PM
Último mensaje: grafisoft
  Problema inicio Raspberry pantalla negra en lugar de desktop Electromecánico 3 9,844 16-09-2020, 09:31 AM
Último mensaje: wolfmech
  Conexión Raspberry a Ender 3 Lione666 3 2,161 04-08-2020, 05:17 PM
Último mensaje: ramiro24