Compter les abeilles entrant et sortant de la ruche (sujet déjà fait pas compri)

Bonjour .

Je suis en seconde et j'aimerais aider une personne sur un projet qui lui tien a coeur, compter les abeilles entrant et sortant de la ruche (je sais que ce projet a déjà été fait mais sa ne marche pas et des images sont plus disponible) J'ai un capteur EE-SX1041 (https://www.mouser.fr/ProductDetail/Omron-Electronics/EE-SX1041?qs=B3tblJ0Nlt9pA%2BpHP2p3ag%3D%3D) .

C'est un Commutateurs optiques, transmissifs, à sortie phototransistor TRANS PHOTOTRANSISTR. Je sais câble le tout mais mon plus gros problèmes est le code sur arduino je suis perdu voir largué et sur le projet déjà fait le code n'était pas bon. Une personne ma conseiller de déjà faire avec un seul capteur pour voir s'y sa marche et après le faire avec 2 capteurs. Voilà, pourriez vous m'aider pour le programme ?

Merci de votre aide.

Xereich

Bonjour

  1. Tu ne donnes pas le lien vers le projet 'qui ne marche pas

  2. Sur ce forum plusieurs intervenants ont pas mal travaillé sur des ruches connnectées et sont au fait des problèmes particuliers de cet environnement.
    Utiliser la Loupe en haut à gauche pour trouver les échanges sur les ‘ruches’

3)Qui te dit que les abeiles passeront toutes par la petite fourche de ton capteur optique ?

  1. Pour progresser dans la programmation suivre les excellents tutoriels conseillés dans la “Règle du Forum Francophone”.

mon plus gros problèmes est le code sur arduino je suis perdu voir largué

Pour pouvoir aider la personne en question il faudra bien investir sur le sujet … et pas seulement en matériel…
=Devenir peu à peu moins perdu, moins largué.

Voilà, pourriez vous m’aider pour le programme ?

Oui, commence à proposer quelquechose, montres le résultat de ton travail… l’aide viendra sur cette base.

Bonsoir,

J’ai du mal à comprendre comment le dispositif va fonctionner. Pour le comptage, je pense qu’en fouillant la toile, tu trouveras sans problème ton bonheur, mais le compteur à fourche choisi signifie que la ruche ne comporte qu’une ouverture unique de dimension compatible avec la fourche. Si c’est le cas c’est jouable mais s’il s’agit d’un ruche classique ((type dadant), il y a une planche d’envol de 30 cm de long environ et les abeilles sortent et rentrent en utilisant toute la longueur donc il y aura un problème.

D’où ma question, quel type de ruche est-ce?

Une remarque : je ne vois pas comment un capteur à fourche unique pourrait déterminer le sens de passage.
Un comptage entrant ET sortant implique deux capteurs.

si la planche d'envol ressemble à cela, ça va être TRES difficile
i1.png

si elle est comme cela, il faudrait deux capteurs par trou...

et ça va être difficile de les garder fonctionnels --> je me souviens avoir lu (@Lacuzon) que

Les abeilles n'aimant pas les corps étrangers introduit dans leur ruche, les propolisent immédiatement (recouvrent d'une couche de résine, la propolis).

==> un peu de lecture sur le dénombrement

hbachetti:
Une remarque : je ne vois pas comment un capteur à fourche unique pourrait déterminer le sens de passage.
Un comptage entrant ET sortant implique deux capteurs.

Eh oui et même deux capteurs en jouant sur le délai entre deux détections (par exemple, positif, ça rentre, négatif, ça sort) donc même cette solution ne marche pas. Les zazas semblent souvent "réfléchir" avant de décoller, elles avancent, reculent, vont à droite, à gauche, des emm...deuses, je vous dis...

Bonsoir ,

J'ai prit ce capteur pour le tester et voir s'il on fait passer quelque chose il le détecte et le compte, ce n'est pas grave si un abeilles ne rentrent pas. Je vais mettre 2 capteurs ,si le capteur entré affiche 1 et le capteur sorti affiche 2 c'est que l'abeilles est entrée et l'inverse .

Le sujet déjà traiter est celui la :

et le code pas bon est celui la :

int val;
int encoder0PinA = 2;
int encoder0PinB = 3;
int encoder0Pos = 0;
int encoder0PinALast = LOW;
int encoder0PinBLast = LOW;
int n = LOW;

void setup() {
pinMode (encoder0PinA,INPUT);
pinMode (encoder0PinB,INPUT);
Serial.begin (9600);
}

void loop()
{
n = digitalRead(encoder0PinA);
if ((encoder0PinALast == LOW) && (n == HIGH)) {
if (digitalRead(encoder0PinB) == LOW) {
encoder0Pos--;
} else {
encoder0Pos++;
}
delay(1000);
Serial.print (encoder0Pos);
Serial.print ("/");
}
encoder0PinALast = n;

n = digitalRead(encoder0PinB);
if ((encoder0PinBLast == LOW) && (n == HIGH)) {
if (digitalRead(encoder0PinA) == LOW) {
encoder0Pos++;
} else {
encoder0Pos--;
}
delay(1000);
Serial.print (encoder0Pos);
Serial.print ("/");
}
encoder0PinBLast = n;

}

==> un peu de lecture sur le dénombrement (et autres infos)

Merci J-M-L

C'est très intéressant comme article confirmant que ce n'est pas simple d'évaluer avec précision le passage des abeilles. Si les pèse-ruche fonctionnent avec une grande précision, ici ce que l'on pourrait faire c'est rester sur un mécanisme statistique, une estimation.

Le sujet m'intéresse je vais creuser de mon côté.

A titre d'exemple, j'observe mes ruches chaque jour pour voir le trafic. L'une de mes colonies a brusquement cessé de sortir. Après examen, j'ai vu qu'elles étaient affamées. Si j'avais eu un dispositif d'évaluation, j'aurais pu intervenir plus tôt.

Donc sujet très intéressant

Içi une réalisation avec une double rangée de capteurs IR à réflexion QRE1113,
ça ressemble à une barrière de péage...

Bonjour,
une ruche WARRE qui compte les entrées/sorties des abeilles depuis quelques années
j'ai réalisé 12 portes avec doubles fourches optiques gérées comme des encodeurs par interruption avec une DUE. Il faut absolument adapter le niveau de sortie des fourches avant de les traiter par l'arduino (comparateurs avec seuil ajustable)

Lacuzon:
Si les pèse-ruche fonctionnent avec une grande précision, ici ce que l'on pourrait faire c'est rester sur un mécanisme statistique, une estimation.

je confirme que c'est une estimation car les abeilles gèrent comme elles veulent la priorité entree/sortie et qu'il faut de temps en temps nettoyer les fourches pour retirer le pollen ...
bref ça reste expérimental mais une mesure intéressante en corrélation avec les mesures météo

bonsoir,

une solution peut-être, c'est d'une part de mesurer les entrées sorties après envol et avant retour, c'est-à-dire lorsque l'animal est en déplacement. Cette solution évite les grappes qui tournicotent sur la planche d'envol. On ne prend en compte que l'animal en vol.

Pour ce faire, il faudrait un émetteur IR (les abeilles ne sont pas sensible au rouge et aux IR) et un récepteur adéquat placés à quelques cm de la planche d'envol à chaque extrémité de celle-ci. Entre les deux, on installe une lentille cylindrique de quelques cm de longueur à la distance focale de l'émetteur et une autre à la distance focale du récepteur Il faudrait des focales de quelques cm.

Cette configuration génère une nappe lumineuse de quelques cm de longueur et de quelques mm d'épaisseur (selon la lentille cylindrique choisie). On oriente le dispo sous l'angle d'envol et de retour (quinzaine de degrés à vérifier).

Quand une abeille rentre au bercail elle traverse la nappe et perturbe légèrement la réception, idem au départ. Il suffit de régler le seuil de détection.

Je vais creuser la chose et voir si ce type de lentille est commercialement disponible, sinon je vais taper mon ancien labo. Aux premières heures du laser c'était des outils très basiques avec lesquels on faisait joujou...

Lacuzon:
Quand une abeille rentre au bercail elle traverse la nappe et perturbe légèrement la réception, idem au départ. Il suffit de régler le seuil de détection.

mais quand 5 ou 10 rentrent en même temps comment le savez vous ?

Oui c'est vrai mais quand on analyse l'envol ou le retour, on s'aperçoit que la densité de mouvement n'est pas si élevée que ça surtout que cette mesure, tout du moins pour moi, est surtout importante en dehors de la période de miellée (au printemps quand la colo se réveille, en automne quand elles ramènent les ultimes miellées), c'est-à-dire quand on évalue l'état de santé et de réserve d'une ruche.

Mais admettons que trois abeilles interceptent en même temps la nappe d'IR. La probabilité qu'elles soient toutes en ligne et donc que la seconde et la troisième soit dans l'ombre de la première est faible, par conséquent en estimant la perte de signal on devrait pouvoir estimer (à peu près) le nombre d'abeilles arrivant en même temps.

Enfin, pour moi, ce qui n'est vraiment pas le bon plan c'est de compter les abeilles quand elles sont posées. La marge d'erreur est très grande.

J'aimerais de l'aide car mon programme ne marche je voudrais bien savoir ou il y a des erreurs ?

code

int val;
int encoder0PinA = 2;
int encoder0PinB = 3;
int encoder0Pos = 0;
int encoder0PinALast = LOW;
int encoder0PinBLast = LOW;
int n = LOW;

void setup() {
pinMode (encoder0PinA,INPUT);
pinMode (encoder0PinB,INPUT);
Serial.begin (9600);
}

void loop()
{
n = digitalRead(encoder0PinA);
if ((encoder0PinALast == LOW) && (n == HIGH)) {
if (digitalRead(encoder0PinB) == LOW) {
encoder0Pos--;
} else {
encoder0Pos++;
}
delay(1000);
Serial.print (encoder0Pos);
Serial.print ("/");
}
encoder0PinALast = n;

n = digitalRead(encoder0PinB);
if ((encoder0PinBLast == LOW) && (n == HIGH)) {
if (digitalRead(encoder0PinA) == LOW) {
encoder0Pos++;
} else {
encoder0Pos--;
}
delay(1000);
Serial.print (encoder0Pos);
Serial.print ("/");
}
encoder0PinBLast = n;

}

utilisez les balises de code s'il vous plait... corrigez votre post ci dessus et rajoutez les code tags autour du code:
[code]`` [color=blue]// votre code ici[/color] ``[/code].

ça doit ressembler à cela:// votre code ici
(faites aussi ctrl-T (PC) or cmd-T (Mac) dans l'IDE avant de copier le code pour qu'il soit indenté correctement)


votre programme compile ? si oui que fait-il qui n'est pas ce que vous attendez ?
nous dire qu'il ne marche pas ne nous est pas d'une grande utilité.

lisez les règles du forum pour voir quelles informations donner pour qu'un post soit bien fait (câblage, alimentation, type de cartes, etc...)


sinon un delay(1000) ne doit pas faire bon ménage avec un encodeur quadratique si c'est ce que vous essayez de gérer....

Voila un code pour essayer de déjà faire marcher un capteur mais le problème ses que dès que je vais dans le moniteur série il commence a compter et quand je met quelque chose dans le capteur pour voir s'y il marche rien ne se passe ça continue a compter . On ma conseiller de commencer par voir pour 1 seule capteur ,pouvez vous m'aider ?

int val;
 int encoder0PinA = 2;
 int encoder0Pos = 0;
 int encoder0PinALast = LOW;
 int n = LOW;

 void setup() {
   pinMode (encoder0PinA,INPUT);
   Serial.begin (9600);
 }

 void loop()
 {
   n = digitalRead(encoder0PinA);
   if((encoder0PinALast == LOW) && (n == HIGH)) {
    
       encoder0Pos--;
   } else {
       encoder0Pos++;
     }
     delay(500);
     Serial.print (encoder0Pos);
     Serial.print ("/");
   
   encoder0PinALast = n;

Xereich:
Voila un code pour essayer de déjà faire marcher un capteur

le code est incomplet et quel capteur voulez vous faire marcher ? comment est il branché etc ??

Comme je vous l'ai dit je ne suis pas très bon dans ce domaine donc quelque pistes m'aiderait beaucoup.
C'est un capteur fourche optique ou phototransistor EE-SX1041 et il est branchée en digital 2 non ?

C'est un capteur fourche optique ou phototransistor EE-SX1041 et il est branchée en digital 2 non ?

et comment ont le sait nous si vous ne nous le dites pas...

comment est-il branché ? la pin 2 OK, mais n'y a-t-il qu'un fil qui va sur un EE-SX1041 ? (il me semble me souvenir de 4 broches)...

il nous faut un schéma clair de ce que vous faites...

(et lire ce que vos petits amis ont déjà exploré...)