Bzzz

Pour parler spécifiquement de tel ou tel projet
charg
Messages : 2
Enregistré le : sam. 5 nov. 2016 15:58

Bzzz

Messagepar charg » mer. 6 mai 2015 11:41

Mi-juin le club apiculture du Lycée ré-organise une balade sur les ruches de Ouessant


c'est l'occasion pour de nouveau adepte de découvrir le monde des abeilles ,cette île atypique
et peut être installer le prochain système Bzzz sur site
frais de transport et restauration pris en charge.



Avatar du membre
bernard
Messages : 10
Enregistré le : sam. 5 nov. 2016 19:50

Messagepar bernard » lun. 17 oct. 2016 14:59

bonjour,

le message est plutot pour Jerome!
j'ai tenté le prog que tu avais rédigé y a deux semaines pour stocker les résultats de la pesée sur l'eeprom, mais j'ai un bug dans l'appel de sauver.update et je discerne mal entre adress et adresse,
si tu pouvais m'éclairer?

merci et à mercredi
voici une copie du prog:

#include "EEPROM.h"
#include "HX711.h"

// HX711.DOUT - pin #A1 marron DOUT pour le pedale,
// HX711.PD_SCK - pin #A0 jaune SCK blanc GRND et Vert 5 volts pour le pedale
//brochage jauge pédale -> inaccessible, brochage jauge 30kg ->noirE-, rougeE+, jauneA+, blancA-; brochage jauge 10kg ->jauneE-, brunE+, vertA+, blancA-
HX711 scale(A1, A0);
#include <SPI.h> //Circuit: SS: pin 10 // the other you need are controlled by the SPI library):MOSI: pin 11 Handled by SPI.H MISO: pin 12 Handled by SPI.H SCK: pin 13 Handled by SPI.H
const int CS = 10; // SS already defined by SPI conflicts with same pin nr 10 :)
const int pin_paquet_recu = 9; // commande led quand on est en train de recevoir un paquet LORA
const int pin_x_paquet_recu = 8; // commande led quand on a reçu au moins un paquet LORA

const float tare_local = 258000; // tare 30kg: valeur ADC sans rien
const float etalon_local = 1512; // etalonnage 30kg: poids de l'étalon en grammes
const float mesure_local = 212200; // etalonnage 30kg: valeur ADC avec l'étalon sur la balance
const float tare_distant = 569245;//lecture du capteur pedale sans rien dessus
const float etalon_distant = 5202;//poids de l'étalon pedale en grammes
const float mesure_distant = 136000;//mesure du poids de l'étalon pedale en tenant compte de la tare*/
const float tare_leny_10kg = 287700;//lecture du capteur 10kg_leny sans rien dessus
const float etalon_leny_10kg = 1512;//poids de l'étalon 10kg_leny en grammes
const float mesure_leny_10kg = 773200-tare_leny_10kg;//mesure du poids de l'étalon 10kg_leny en tenant compte de la tare*/

int a=0;//affichage port serie a est le nb de mesures par ligne, b est le nombre total de mesures
int b=0;

int tempo=20000; //temps d'allumage de la led si paquet reçu

int EEPROM_LENGTH=1024;

// Arduino commands
#define ARDUINO_CMD_AVAILABLE 0x00
#define ARDUINO_CMD_READ 0x01
#define ARDUINO_CMD_WRITE 0x02
#define ARDUINO_CMD_TEST 0x03

//#define SLAVESELECT 10//ss
const int wait_time_us_between_spi_msg = 200;// Minimum wait time between SPI message: 160 us
const int wait_time_us_between_bytes_spi = 20;//Minimum wait time between two bytes in a SPI message: 15 us

void setup() {
Serial.begin(9600);
pinMode(CS, OUTPUT); // we use this for SS pin // start the SPI library:

pinMode (pin_paquet_recu, OUTPUT); // initialise pin et commande led quand on reçoit un paquet LORA
digitalWrite(pin_paquet_recu,LOW);
pinMode (pin_x_paquet_recu, OUTPUT); // initialise pin et commande led quand on reçoit plus d'un paquet LORA
digitalWrite(pin_x_paquet_recu,LOW);

SPI.begin(); // wake up the SPI bus.
SPI.setClockDivider(SPI_CLOCK_DIV32) ; // 16MHz/32 = 0.5 MHz
SPI.setDataMode(SPI_MODE0); // By Default SPI_MODE0, we make this fact explicit.
SPI.setBitOrder(MSBFIRST); // By Default MSBFIRST, we make this fact explicit.
delay(100);
}


int previous_cmd_status;
int shield_status;
int available_msb;
int available_lsb;
int available;

long poids_distant = 0;
float poids_en_gr_distant = 0;

int address = 0;//adresse pour sauver sur eeprom

void loop() {
available = checkifAvailableRXData() ;
if (available){



Serial.print("valeur ADC distant*");Serial.print(poids_distant);Serial.print("*");
poids_en_gr_distant=(poids_distant-tare_leny_10kg)/mesure_leny_10kg*etalon_leny_10kg;Serial.print(poids_en_gr_distant);Serial.print("*");

allumageLedPaquetRecu();

byte data_rcv[available];
readAvailableRXData(data_rcv , available);
poids_distant = data_rcv[0];
for (uint8_t i=0;i<available;i++) {
poids_distant |= (long)data_rcv[i] << (24 - (8*i));//on recompose le long en concaténant les 4 octets
}

address = sauver(address, data_rcv);


a= a+1; //compteur partiel du nombre de mesures de poids
if (a==3) {
Serial.print("mesure ");Serial.println(a*(b+1)); //toutes les a mesures, on saute une ligne
a=0;
b=b+1;//compteur global de mesures
}

}


}

void allumageLedPaquetRecu() {

digitalWrite(pin_paquet_recu,HIGH);
delay(tempo);
digitalWrite(pin_paquet_recu,LOW);
}

void allumageLedXPaquetRecu() {

digitalWrite(pin_x_paquet_recu,HIGH);
delay(tempo);
digitalWrite(pin_x_paquet_recu,LOW);
}

void readAvailableRXData(byte buf[] , int buf_len) {

for (int i=0; i<buf_len; i++) { // READ BYTE CMD

digitalWrite(CS,LOW);

previous_cmd_status = SPI.transfer(ARDUINO_CMD_READ);
delayMicroseconds(wait_time_us_between_bytes_spi);
shield_status = SPI.transfer(0x00);
delayMicroseconds(wait_time_us_between_bytes_spi);
buf[i] = SPI.transfer(0x00); // Store the received byte
delayMicroseconds(wait_time_us_between_bytes_spi);

digitalWrite(CS,HIGH);

delayMicroseconds(wait_time_us_between_spi_msg);

}
}


int checkifAvailableRXData() { // data available cmd

int tmp = 0;

digitalWrite(CS, LOW);

previous_cmd_status = SPI.transfer(ARDUINO_CMD_AVAILABLE);
delayMicroseconds(wait_time_us_between_bytes_spi);
shield_status = SPI.transfer(0x00);
delayMicroseconds(wait_time_us_between_bytes_spi);
available_msb = SPI.transfer(0x00);
delayMicroseconds(wait_time_us_between_bytes_spi);
available_lsb = SPI.transfer(0x00);
delayMicroseconds(wait_time_us_between_bytes_spi);

digitalWrite(CS,HIGH); // sets SS pin high to de-select the chip:

tmp = (available_msb<<8) + available_lsb;

return tmp;

}



void PrintHex8(uint8_t *data, uint8_t length) { // prints 8-bit data in hex
char tmp[length*2+1];
byte first ;
int j=0;
for (uint8_t i=0; i<length; i++) {
first = (data[i] >> 4) | 48;
if (first > 57) tmp[j] = first + (byte)39;
else tmp[j] = first ;
j++;

first = (data[i] & 0x0F) | 48;
if (first > 57) tmp[j] = first + (byte)39;
else tmp[j] = first;
j++;
}

tmp[length*2] = 0;
}


//fonction d'écriture d'un tableau de 4 octets en mémoire EEPROM
//retourne la prochaine adresse libre
// ATTENTION, pas de verif de dépassement
int sauver(int adresse, uint8_t* buf) {
uint8_t i;

if (adresse+3 >= EEPROM_LENGTH) {
return adresse;
}

for(i=0;i<4;i++) {
EEPROM.update(adresse+i, buf[i]);
}
return adresse+i;

}

Avatar du membre
bernard
Messages : 10
Enregistré le : sam. 5 nov. 2016 19:50

Re: Bzzz

Messagepar bernard » ven. 28 févr. 2020 08:11

Bonjour,
Pour avancer sur Bzzz, Fablab avons accepté la demande de Arthur :
*** Actuellement étudiant à l'ENS Rennes en mécatronique en troisième année, je suis à la recherche d'un projet qui pourrait me permette de créer un TP (ou faire office de support de cours). Je peux, si cela vous intéresse, participer à votre projet.
Ce projet peut aussi bien être en mécanique, électronique (et électrotechnique) ou informatique (préférablement un mix des trois).
Je peux offrir l'équivalent d'un mois de travail jusqu'à début-mai.*****

Notre proposition :
*****nous avons en cours un projet "Bzzz" sur le pesage temps réel de ruches qui commence à aboutir : selon votre intérêt, plusieurs options seraient possibles. voir https://wiki.fablab-lannion.org/index.p ... des_ruches
Option hard : refaire le hard à partir d'un ESP32 avec une carte LoRa plutôt que de prendre un Lopy4
Option réseau : intégrer le capteur dans le réseau LoRa de TTN, pour l'instant, on n'a validé que le mode point à point
Option services : offrir un certain nombre de services à l'apiculteur, alertes SMS, courbes de poids, ....
On peut aussi en fonction de l'avancement, cumuler les options.*********

Arthur devrait commencer à contribuer vers la mi-mars 2020:
-achat prévu de 2 Lopy4, dernière release pour prêt sur Rennes, y compris les capteurs de poids
-un des Lopy servira de GateWay (on peut prendre un Lopy1) et l'autre sera en configuration "ruche".

Par ailleurs, le projet cherche une personne qui pourrait nous faire un circuit électronique un peu " professionnel" : on a les plans sur papier et un circuit de démonstration. S'adresser à Bernard

david
Messages : 1
Enregistré le : dim. 2 août 2020 15:28

Re: Bzzz

Messagepar david » dim. 2 août 2020 18:55

Bonjour,

Je me suis en train de me documenter pour un projet de suivi à distance de ruches pour un ami. Au départ il comptait tirer un câble de 100m pour amener l'alimentation et rapatrier les données, j'essaye de le convaincre d'utiliser plutôt une solution sans fil à base de LoRa. Tout va dépendre des coûts matériels, et de l'autonomie effective qu'on peut atteindre...

On m'a orienté vers votre projet qui me semble être exactement ce que je cherche. Malheureusement la page http://fablab-lannion.org/wiki/index.ph ... des_ruches a quelques soucis : les liens vers les images et autres fichiers attachés pointent dans le vide.
Est-ce réparable ? Y-a-t'il une copie ailleurs ?

Merci et a+
--
David

Avatar du membre
tangi
Messages : 159
Enregistré le : mer. 2 nov. 2016 16:01

Re: Bzzz

Messagepar tangi » lun. 7 sept. 2020 13:17

Bonjour,
Désolé pour la réponse tardive.
Sur la page wiki, les photos me semblent OK.
Le projet est toujours en cours, les problèmes d'autonomie ne sont pas encore résolus.
Si vous pouvez, passez un Mercredi soir au Fablab, on pourra vous montrer notre projet...
A bientôt

Avatar du membre
bernard
Messages : 10
Enregistré le : sam. 5 nov. 2016 19:50

Re: Bzzz

Messagepar bernard » dim. 20 sept. 2020 10:38

Hello,
les problèmes d'autonomie sont à peu résolus, en fait, avec la bonne version de Lopy. J'ai testé la dernière pendant une dizaine de mois : on arrive à 36 000 trames avec trois batteries 18650 Li de 2.6Ah. Cela nous fait une pesée tous les 1/4 d'heure pour un an. L'émission LoRa se fait en RAW : la plus simple, mais limitée à un point à point. Le mode APB est sans doute plus gourmand.
Les nouveaux Lopy devraient être encore meilleurs, et ce qui nous pénalise, c'est le temps de compilation à chaque mise en route : plus long que la mesure elle-même.

L'ensemble du matériel coûte 100€.

je suis en train de chercher un moyen de réduire la part de l'électronique, vu le prix du Lopy (50€ avec l'antenne, minimum) : ESP 32, LOLIN?

++
bernard

Retourner vers « Projets »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité