Page 1 sur 1

Bzzz

Posté : mer. 6 mai 2015 11:41
par charg
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.



Posté : lun. 17 oct. 2016 14:59
par bernard
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 << (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 = 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 >> 4) | 48;
if (first > 57) tmp[j] = first + (byte)39;
else tmp[j] = first ;
j++;

first = (data & 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);
}
return adresse+i;

}

Re: Bzzz

Posté : ven. 28 févr. 2020 08:11
par bernard
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

Re: Bzzz

Posté : dim. 2 août 2020 18:55
par David
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

Re: Bzzz

Posté : lun. 7 sept. 2020 13:17
par tangi
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

Re: Bzzz

Posté : dim. 20 sept. 2020 10:38
par bernard
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

Re: Bzzz

Posté : lun. 3 janv. 2022 19:10
par greenplanete
bonsoir

tout d'abord merci pour l'acceptation sur ce forum et permettez moi de présenter tous mes meilleurs vœux a tous les membres.

je me permets ce post, j'espère que je suis au bon endroit sur le forum sinon merci de me le dire

deux mots de présentation si vous permettez, nous sommes une jeune startup rennaise qui avons pour ambition de démocratiser la lutte contre le réchauffement climatique par le déploiement de solutions agronomiques visant a capter du carbone, couplée a des solutions supports pour maintenir un niveau de biodiversité élevée sur ces zones de culture.

Pour cela nous cherchons a développer une ruche connectée, d'ou notre intérêt porté pour ce projet Bzzz.

Outre vos développements très pertinents, nous aurions aimer ajouter également de la vidéo type web cam, de façon a communiquer en toute transparence par des images sur les enjeux climatiques, et l'importance de la biodiversité , des images sont tellement plus efficaces que des discours

Cela permet aussi d'avoir un volet pédagogique, et du contenu, pour une utilisation des données sur des projets scolaires

Nous sommes donc disposer à échanger avec vous sur les modalités de construction de ruche pilote, nous sommes bien sur accompagnés par des apiculteurs spécialistes ;

Bien sur , nous finançons le projet

merci de nous recontacter, espérant que cette proposition puisse trouver un intérêt pour des membres du forum, cela peut faire partie d'un sujet de stage pour un étudiant par exemple

merci d'avoir pris le temps de nous lire, et au plaisir d'échanger avec vous sur ces sujets

très bonne soirées a vous

au plaisir de vous lire

Merci

Re: Bzzz

Posté : lun. 3 janv. 2022 19:43
par bernard
Bonsoir,

le déménagement du fablab a un peu ralenti le projet, mais il continue d'évoluer. Le pèse-ruche pourra être installé sous une ruche prochainement : j'ai contacté un de mes voisins pour faire l'expé. Les composants évoluent aussi : on regarde un Lilygo, beaucoup plus intégré.
Par contre, côté développement de l'application web, il n'y a rien de fait. Pour l'instant, le transfert des mesures se fait en point en point via LoRa, Il faudrait développer le transfert en APB via LoRa, bien sûr, mais aussi par les antennes connectées au réseau TTN. On a déjà installé quelques antennes sur le Trégor, le fablab vient d'acheter la sienne...
Et ajouter la dernière brique : le service à l'apiculteur, comme les alarmes web ou bien SMS, les courbes de poids....

Vous pouvez passer en discuter un mercredi soir, un vendredi a-m, par exemple.

++
bernard

Re: Bzzz

Posté : lun. 3 janv. 2022 21:34
par greenplanete
bonsoir Monsieur
merci pour votre retour rapide
quel est le cout de l'équipement complet pour une ruche ?
je vais envoyer le lien de votre projet a un de nos ingés réseau pour voir comment faire de la récupération de données
nos ruches pilotes seront disposées en pleine nature en campagne
l'énergie et la récupéraion des données seront des points clés
tres cordialement

Re: Bzzz

Posté : mar. 4 janv. 2022 10:17
par bernard
Hello,

toutes les données sont là : https://wiki.fablab-lannion.org/index.p ... des_ruches
c'est pas facile de s'y retrouver dans notre site, c'est sûr :-))

++
bernard