SMS-παρακολούθηση του βάρους τριών κυψελών για $30

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Όχι, δεν πρόκειται για εμπορική προσφορά, αυτό είναι το κόστος των στοιχείων του συστήματος που μπορείτε να συναρμολογήσετε αφού διαβάσετε το άρθρο.

Λίγο παρασκήνιο:

Πριν λίγο καιρό αποφάσισα να πάρω μέλισσες, και όντως εμφανίστηκαν... για όλη τη σεζόν, αλλά δεν έφυγαν από την καλύβα του χειμώνα.
Και αυτό παρά το γεγονός ότι φαινόταν να κάνει τα πάντα σωστά - φθινοπωρινή συμπληρωματική σίτιση, μόνωση πριν από το κρύο.
Η κυψέλη ήταν ένα κλασικό ξύλινο σύστημα «Dadan» με 10 πλαίσια από σανίδες 40 mm.
Όμως εκείνο τον χειμώνα, λόγω των μεταβολών της θερμοκρασίας, ακόμη και έμπειροι μελισσοκόμοι έχασαν πολύ περισσότερα από το συνηθισμένο.

Έτσι προέκυψε η ιδέα ενός συστήματος παρακολούθησης της κατάστασης της κυψέλης.
Μετά τη δημοσίευση πολλών άρθρων για το Habr και την επικοινωνία στο φόρουμ των μελισσοκόμων, αποφάσισα να πάω από το απλό στο σύνθετο.
Το βάρος είναι η μόνη αδιαμφισβήτητη παράμετρος, αλλά κατά κανόνα, τα υπάρχοντα συστήματα παρακολουθούν μόνο μία κυψέλη «αναφοράς».
Εάν κάτι πάει στραβά με αυτό (για παράδειγμα, η αναχώρηση ενός σμήνους, ασθένεια των μελισσών), τότε οι δείκτες γίνονται άσχετοι.

Ως εκ τούτου, αποφασίστηκε να παρακολουθείται η αλλαγή στο βάρος τριών κυψελών ταυτόχρονα χρησιμοποιώντας έναν μικροελεγκτή και να προστεθούν άλλα «καλούδια» αργότερα.
Το αποτέλεσμα ήταν ένα αυτόνομο σύστημα με χρόνο λειτουργίας περίπου ένα μήνα με μία φόρτιση της μπαταρίας 18650 και αποστολή στατιστικών μία φορά την ημέρα.
Προσπάθησα να απλοποιήσω το σχέδιο όσο το δυνατόν περισσότερο, ώστε να μπορεί να επαναληφθεί ακόμα και χωρίς διαγράμματα, μόνο από φωτογραφίες.

Η λογική λειτουργίας είναι η εξής: κατά την πρώτη εκκίνηση/επαναφορά, οι ενδείξεις των αισθητήρων που είναι εγκατεστημένοι κάτω από τις κυψέλες αποθηκεύονται στο EEPROM.
Στη συνέχεια, κάθε μέρα, μετά τη δύση του ηλίου, το σύστημα «ξυπνάει», διαβάζει τις ενδείξεις και στέλνει ένα SMS με την αλλαγή βάρους για την ημέρα και από τη στιγμή που τέθηκε σε λειτουργία.
Επιπλέον, μεταδίδεται η τιμή της τάσης της μπαταρίας και όταν πέσει στα 3.5 V, εκδίδεται προειδοποίηση σχετικά με την ανάγκη φόρτισης, επειδή κάτω από 3.4 V η μονάδα επικοινωνίας δεν ενεργοποιείται και οι ενδείξεις βάρους ήδη "φεύγουν".

«Θυμάσαι πώς ξεκίνησαν όλα. Όλα ήταν για πρώτη φορά και ξανά.”
SMS-παρακολούθηση του βάρους τριών κυψελών για $30
Ναι, αυτό είναι ακριβώς το σύνολο του υλικού που ήταν αρχικά, αν και μόνο οι μετρητές καταπόνησης και τα καλώδια επέζησαν στην τελική έκδοση, αλλά πρώτα πρώτα.
Στην πραγματικότητα, δεν χρειάζεστε πηνίο καλωδίου, απλώς αποδείχθηκε ότι ήταν η ίδια τιμή με ένα ευθύγραμμο πηνίο 30 μέτρων.

Εάν δεν φοβάστε να αποσυναρμολογήσετε 3 SMD LED και μισή εκατό σημεία συμβατικής (εξόδου) συγκόλλησης, τότε πηγαίνετε!

Έτσι, θα χρειαστούμε το ακόλουθο σύνολο εξοπλισμού/υλικών:

  1. Arduino Pro Mini 3V
    Θα πρέπει να δώσετε προσοχή στο μικροκύκλωμα του γραμμικού μετατροπέα - θα πρέπει να είναι ακριβώς 3.3 V - στο τσιπ που φέρει τη σήμανση KB 33/LB 33/DE A10 - τα κινέζικα μου έκαναν κάτι λάθος και ολόκληρη η παρτίδα
    Οι πλακέτες στο κατάστημα αποδείχθηκε ότι είχαν ρυθμιστές 5 βολτ και κρύσταλλα 16 MHz.
  2. USB-Ttl σε ένα τσιπ CH340 - μπορείτε να χρησιμοποιήσετε ακόμη και ένα 5 βολτ, αλλά στη συνέχεια ενώ αναβοσβήνει ο μικροελεγκτής, το Arduino θα πρέπει να αποσυνδεθεί από τη μονάδα GSM για να μην καεί η τελευταία.
    Οι πλακέτες που βασίζονται στο τσιπ PL2303 δεν λειτουργούν στα Windows 10.
  3. Μονάδα επικοινωνίας GSM Goouu Tech IOT GA-6-B ή AI-THINKER A-6 Mini.
    Γιατί σταμάτησες εκεί; Ο Neoway M590 - ένας σχεδιαστής που απαιτεί ξεχωριστούς χορούς με ντέφι, το GSM SIM800L - δεν άρεσε το μη τυπικό επίπεδο λογικής 2.8 V, το οποίο απαιτεί συντονισμό ακόμη και με ένα Arduino τριών volt.
    Επιπλέον, η λύση από το AiThinker έχει ελάχιστη κατανάλωση ενέργειας (δεν είδα ρεύμα μεγαλύτερο από 100mA κατά την αποστολή SMS).
  4. Κεραία GSM GPRS 3DBI (στην παραπάνω φωτογραφία - ένα ορθογώνιο κασκόλ με "ουρά", στις 9 η ώρα)
  5. Πακέτο εκκίνησης χειριστή με καλή κάλυψη στη θέση του μελισσοκομείου σας.
    Ναι, το πακέτο πρέπει πρώτα να ενεργοποιηθεί σε ένα κανονικό τηλέφωνο, να ΑΠΕΝΕΡΓΟΠΟΙΗΣΕ ΤΟ ΑΙΤΗΣΗ PIN κατά την είσοδο και να συμπληρώσεις τον λογαριασμό σου.
    Τώρα υπάρχουν πολλές επιλογές με ονόματα στο στυλ "Sensor", "IoT" - έχουν ελαφρώς χαμηλότερη χρέωση συνδρομής.
  6. σύρμα dupont 20cm θηλυκό-θηλυκό - 3 τεμ. (για σύνδεση Arduino σε USB-TTL)
  7. 3 τεμ. HX711 - ADC για ζυγαριά
  8. 6 κυψέλες φόρτωσης για βάρη έως 50 κιλά
  9. Καλώδιο τηλεφώνου 15 μέτρων 4 πυρήνων - για σύνδεση μονάδων βάρους στο ARDUINO.
  10. Φωτοαντίσταση GL5528 (αυτή είναι η σημαντική, με σκοτεινή αντίσταση 1 MΩ και αντίσταση φωτός 10-20 kΩ) και δύο συνηθισμένες αντιστάσεις 20 kΩ
  11. Ένα κομμάτι ταινίας διπλής όψης "χοντρή" 18x18mm - για τη σύνδεση του Arduino στη μονάδα επικοινωνίας.
  12. Η θήκη μπαταρίας 18650 και, στην πραγματικότητα, η ίδια η μπαταρία είναι ~2600mAh.
  13. Λίγο κερί ή παραφίνη (λαμπάκι αρώματος κεριών-ταμπλέτας) - για προστασία από την υγρασία HX711
  14. Ένα κομμάτι ξύλινης δοκού 25x50x300mm για τη βάση των μετρητών καταπόνησης.
  15. Μια ντουζίνα βίδες με αυτοκόλλητη βίδα με ροδέλα πρέσας 4,2x19 mm για τη σύνδεση των αισθητήρων στη βάση.

Η μπαταρία μπορεί να ληφθεί από την αποσυναρμολόγηση φορητών υπολογιστών - είναι αρκετές φορές φθηνότερη από μια νέα και η χωρητικότητα θα είναι πολύ μεγαλύτερη από αυτή του κινεζικού UltraFire - πήρα 1500 έναντι 450 (αυτό είναι 6800 για τη φωτιά 😉

Επιπλέον, θα χρειαστείτε σταθερά χέρια, ένα κολλητήρι EPSN-25, κολοφώνιο και συγκόλληση POS-60.

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Ακόμη και πριν από 5 χρόνια χρησιμοποίησα ένα σοβιετικό κολλητήρι με χάλκινη άκρη (οι σταθμοί συγκόλλησης δεν δούλευαν για μένα - το πήρα για δοκιμή και τελείωσα το κύκλωμα με EPSN).
Αλλά μετά την αποτυχία του και πολλά κινέζικα τερατώδη ψεύτικα, το τελευταίο ονομάστηκε Σπάρτη - κάτι τόσο σοβαρό όσο το όνομά του, σταμάτησε
σε ένα προϊόν με θερμοστάτη.

Λοιπόν πάμε!

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Αρχικά, ξεκολλάμε δύο LED από τη μονάδα GSM (το μέρος όπου βρίσκονταν είναι κυκλωμένο σε ένα πορτοκαλί οβάλ)
Εισάγουμε την κάρτα SIM με τα μαξιλαράκια επαφής στην πλακέτα τυπωμένου κυκλώματος, η λοξότμητη γωνία στη φωτογραφία υποδεικνύεται με ένα βέλος.

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Στη συνέχεια, πραγματοποιούμε μια παρόμοια διαδικασία με το LED στην πλακέτα Arduino (οβάλ στα αριστερά του τετράγωνου τσιπ),
Συγκολλήστε τη χτένα σε τέσσερις επαφές (1),
Παίρνουμε δύο αντιστάσεις 20k, στρίβουμε τα καλώδια από τη μία πλευρά, κολλάμε το στρίψιμο στην οπή του πείρου A5, τα υπόλοιπα καλώδια είναι σε RAW και GND του arduino (2),
Κοντύνουμε τα πόδια της φωτοαντίστασης στα 10mm και τη κολλάμε στις ακίδες GND και D2 της πλακέτας (3).

Τώρα ήρθε η ώρα για την μπλε ηλεκτρική ταινία της ταινίας διπλής όψεως - την κολλάμε στη θήκη της κάρτας SIM της μονάδας επικοινωνίας και από πάνω - το Arduino - το κόκκινο (ασημί) κουμπί είναι στραμμένο προς το μέρος μας και βρίσκεται πάνω από την κάρτα SIM.

Συγκολλάμε το τροφοδοτικό: συν από τον πυκνωτή της μονάδας επικοινωνίας (4) στον ακροδέκτη RAW arduino.
Το γεγονός είναι ότι η ίδια η μονάδα επικοινωνίας απαιτεί 3.4-4.2 V για την τροφοδοσία της και η επαφή PWR της είναι συνδεδεμένη σε μετατροπέα υποβάθμισης, επομένως για να λειτουργήσει από ιόν λιθίου, η τάση πρέπει να τροφοδοτείται παρακάμπτοντας αυτό το τμήμα του κυκλώματος.

Στο Arduino, αντίθετα, τροφοδοτούμε ρεύμα μέσω ενός γραμμικού μετατροπέα - σε χαμηλή κατανάλωση ρεύματος, η πτώση τάσης είναι 0.1V.
Αλλά παρέχοντας σταθεροποιημένη τάση στις μονάδες HX711, απαλλαγούμε από την ανάγκη να τις τροποποιήσουμε σε χαμηλότερη τάση (και ταυτόχρονα από την αύξηση του θορύβου ως αποτέλεσμα αυτής της λειτουργίας).

Στη συνέχεια κολλάμε τα jumpers (5) μεταξύ των ακίδων PWR-A1, URX-D4 και UTX-D5, γειώνουμε το GND-G (6) και τέλος τροφοδοτούμε από τη θήκη μπαταρίας 18650 (7), συνδέουμε την κεραία (8).
Τώρα παίρνουμε έναν μετατροπέα USB-TTL και συνδέουμε τις επαφές RXD-TXD και TXD-RXD, GND-GND με καλώδια Dupont στο ARDUINO (χτένα 1):

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Η παραπάνω φωτογραφία δείχνει την πρώτη έκδοση (από τρεις) του συστήματος, η οποία χρησιμοποιήθηκε για τον εντοπισμό σφαλμάτων.

Αλλά τώρα θα κάνουμε ένα διάλειμμα από το κολλητήρι για λίγο και θα προχωρήσουμε στο κομμάτι του λογισμικού.
Θα περιγράψω την ακολουθία ενεργειών για τα Windows:
Πρώτα, πρέπει να κατεβάσετε και να εγκαταστήσετε/αποσυσκευάσετε το πρόγραμμα Arduino IDE — η τρέχουσα έκδοση είναι 1.8.9, αλλά χρησιμοποιώ την 1.6.4

Για απλότητα, αποσυσκευάζουμε το αρχείο στο φάκελο C: arduino - “your_version_number”, μέσα θα έχουμε τους φακέλους /dist, προγράμματα οδήγησης, παραδείγματα, υλικό, java, lib, βιβλιοθήκες, αναφορά, εργαλεία, καθώς και το εκτελέσιμο αρχείο arduino (μεταξύ άλλων).

Τώρα χρειαζόμαστε μια βιβλιοθήκη για να δουλέψουμε με το ADC HX711 — πράσινο κουμπί "κλωνοποίηση ή λήψη" — λήψη ZIP.
Τα περιεχόμενα (φάκελος HX711-master) τοποθετούνται στον κατάλογο βιβλιοθηκών C:arduino-“your_version_number”

Και φυσικά ο οδηγός για USB-TTL από το ίδιο github - από το μη συσκευασμένο αρχείο, η εγκατάσταση ξεκινά απλώς με το αρχείο SETUP.

Εντάξει, ας ξεκινήσουμε και ας διαμορφώσουμε το πρόγραμμα C:arduino-“your_version_number”arduino

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Μεταβείτε στο στοιχείο "Εργαλεία" - επιλέξτε την πλακέτα "Arduino Pro or Pro Mini", επεξεργαστή Atmega 328 3.3V 8 MHz, θύρα - έναν αριθμό διαφορετικό από το σύστημα COM1 (εμφανίζεται μετά την εγκατάσταση του προγράμματος οδήγησης CH340 με προσαρμογέα USB-TTL συνδεδεμένος)

Εντάξει, αντιγράψτε το παρακάτω σκίτσο (πρόγραμμα) και επικολλήστε το στο παράθυρο Arduino IDE

char phone_no[]="+123456789012"; // Your phone number that receive SMS with counry code 
#include <avr/sleep.h>  // ARDUINO sleep mode library
#include <SoftwareSerial.h> // Sofrware serial library
#include "HX711.h" // HX711 lib. https://github.com/bogde/HX711
#include <EEPROM.h> // EEPROM lib.
HX711 scale0(10, 14);
HX711 scale1(11, 14);
HX711 scale2(12, 14);
#define SENSORCNT 3
HX711 *scale[SENSORCNT];

SoftwareSerial mySerial(5, 4); // Set I/O-port TXD, RXD of GSM-shield  
byte pin2sleep=15; //  Set powerON/OFF pin

float delta00; // delta weight from start
float delta10;
float delta20;
float delta01; // delta weight from yesterday
float delta11;
float delta21;

float raw00; //raw data from sensors on first start
float raw10;
float raw20;
float raw01; //raw data from sensors on yesterday
float raw11;
float raw21;
float raw02; //actual raw data from sensors
float raw12;
float raw22;

word calibrate0=20880; //calibration factor for each sensor
word calibrate1=20880;
word calibrate2=20880;

word daynum=0; //numbers of day after start

int notsunset=0;

boolean setZero=false;

float readVcc() { // Read battery voltage function
  long result1000;
  float rvcc;  
  result1000 = analogRead(A5);
  rvcc=result1000;
  rvcc=6.6*rvcc/1023;
  return rvcc;
}

void setup() { // Setup part run once, at start

  pinMode(13, OUTPUT);  // Led pin init
  pinMode(2, INPUT_PULLUP); // Set pullup voltage
  Serial.begin(9600);
  mySerial.begin(115200); // Open Software Serial port to work with GSM-shield
  pinMode(pin2sleep, OUTPUT);// Itit ON/OFF pin for GSM
  digitalWrite(pin2sleep, LOW); // Turn ON modem
  delay(16000); // Wait for its boot 

scale[0] = &scale0; //init scale
scale[1] = &scale1;
scale[2] = &scale2;

scale0.set_scale();
scale1.set_scale();
scale2.set_scale();

delay(200);

setZero=digitalRead(2);

if (EEPROM.read(500)==EEPROM.read(501) || setZero) // first boot/reset with hiding photoresistor
//if (setZero)
{
raw00=scale0.get_units(16); //read data from scales
raw10=scale1.get_units(16);
raw20=scale2.get_units(16);
EEPROM.put(500, raw00); //write data to eeprom
EEPROM.put(504, raw10);
EEPROM.put(508, raw20);
for (int i = 0; i <= 24; i++) { //blinking LED13 on reset/first boot
    digitalWrite(13, HIGH);
    delay(500);
    digitalWrite(13, LOW);
    delay(500);
  }
}
else {
EEPROM.get(500, raw00); // read data from eeprom after battery change
EEPROM.get(504, raw10);
EEPROM.get(508, raw20);
digitalWrite(13, HIGH); // turn on LED 13 on 12sec. 
    delay(12000);
digitalWrite(13, LOW);
}

delay(200); // Test SMS at initial boot

//
  mySerial.println("AT+CMGF=1");    //  Send SMS part
  delay(2000);
  mySerial.print("AT+CMGS="");
  mySerial.print(phone_no); 
  mySerial.write(0x22);
  mySerial.write(0x0D);  // hex equivalent of Carraige return    
  mySerial.write(0x0A);  // hex equivalent of newline
  delay(2000);
  mySerial.println("INITIAL BOOT OK");
  mySerial.print("V Bat= ");
  mySerial.println(readVcc());
 if (readVcc()<3.5) {mySerial.print("!!! CHARGE BATTERY !!!");}
  delay(500);
  mySerial.println (char(26));//the ASCII code of the ctrl+z is 26
  delay(3000);

//  

raw02=raw00;
raw12=raw10;
raw22=raw20;

//scale0.power_down(); //power down all scales 
//scale1.power_down();
//scale2.power_down();

}

void loop() {

  attachInterrupt(0, NULL , RISING); // Interrupt on high lewel
  set_sleep_mode(SLEEP_MODE_PWR_DOWN); //Set ARDUINO sleep mode
  digitalWrite(pin2sleep, HIGH); // Turn OFF GSM-shield
  delay(2200);
  digitalWrite(pin2sleep, LOW); // Turn OFF GSM-shield
  delay(2200);
  digitalWrite(pin2sleep, HIGH);
  digitalWrite(13, LOW);
  scale0.power_down(); //power down all scales 
  scale1.power_down();
  scale2.power_down();
  delay(90000);
  sleep_mode(); // Go to sleep
  detachInterrupt(digitalPinToInterrupt(0)); // turn off external interrupt

  notsunset=0;
 for (int i=0; i <= 250; i++){
      if ( !digitalRead(2) ){ notsunset++; } //is a really sunset now? you shure?
      delay(360);
   }
  if ( notsunset==0 )
  { 
  digitalWrite(13, HIGH);
  digitalWrite(pin2sleep, LOW); // Turn-ON GSM-shield
  scale0.power_up(); //power up all scales 
  scale1.power_up();
  scale2.power_up();
  raw01=raw02;
  raw11=raw12;
  raw21=raw22;
  raw02=scale0.get_units(16); //read data from scales
  raw12=scale1.get_units(16);
  raw22=scale2.get_units(16);

  daynum++; 
  delta00=(raw02-raw00)/calibrate0; // calculate weight changes 
  delta01=(raw02-raw01)/calibrate0;
  delta10=(raw12-raw10)/calibrate1;
  delta11=(raw12-raw11)/calibrate1; 
  delta20=(raw22-raw20)/calibrate2;
  delta21=(raw22-raw21)/calibrate2;

  delay(16000);
  mySerial.println("AT+CMGF=1");    //  Send SMS part
  delay(2000);
  mySerial.print("AT+CMGS="");
  mySerial.print(phone_no); 
  mySerial.write(0x22);
  mySerial.write(0x0D);  // hex equivalent of Carraige return    
  mySerial.write(0x0A);  // hex equivalent of newline
  delay(2000);
  mySerial.print("Turn ");
  mySerial.println(daynum);
  mySerial.print("Hive1  ");
  mySerial.print(delta01);
  mySerial.print("   ");
  mySerial.println(delta00);
  mySerial.print("Hive2  ");
  mySerial.print(delta11);
  mySerial.print("   ");
  mySerial.println(delta10);
  mySerial.print("Hive3 ");
  mySerial.print(delta21);
  mySerial.print("   ");
  mySerial.println(delta20);

  mySerial.print("V Bat= ");
  mySerial.println(readVcc());
  if (readVcc()<3.5) {mySerial.print("!!! CHARGE BATTERY !!!");}
  delay(500);
  mySerial.println (char(26));//the ASCII code of the ctrl+z is 26
  delay(3000);

  }

}

Στην πρώτη γραμμή, σε εισαγωγικά, char phone_no[]=”+123456789012″; — αντί για 123456789012, βάλτε τον αριθμό τηλεφώνου σας με τον κωδικό χώρας στην οποία θα σταλούν SMS.

Τώρα πατάμε το κουμπί ελέγχου (πάνω από τον αριθμό ένα στο παραπάνω στιγμιότυπο οθόνης) - εάν στο κάτω μέρος (κάτω από τον αριθμό τρία στην οθόνη) "Η συλλογή έχει ολοκληρωθεί" - τότε μπορούμε να αναβοσβήσουμε τον μικροελεγκτή.

Έτσι, το USB-TTL συνδέεται στο ARDUINO και ο υπολογιστής, τοποθετήστε τη φορτισμένη μπαταρία στη θήκη (συνήθως η λυχνία LED στο νέο Arduino αρχίζει να αναβοσβήνει μία φορά το δευτερόλεπτο).

Τώρα για το υλικολογισμικό -εκπαιδευόμαστε να πατάμε το κόκκινο (ασημί) κουμπί του μικροελεγκτή- αυτό θα πρέπει να γίνει αυστηρά κάποια στιγμή!!!
Τρώω? Κάντε κλικ στο κουμπί «Φόρτωση» (πάνω από τα δύο στο στιγμιότυπο οθόνης) και κοιτάξτε προσεκτικά τη γραμμή στο κάτω μέρος της διεπαφής (κάτω από τα τρία στο στιγμιότυπο οθόνης).
Μόλις η επιγραφή "σύνταξη" αλλάξει σε "λήψη", πατήστε το κόκκινο κουμπί (επαναφορά) - εάν όλα είναι εντάξει, οι λυχνίες στον προσαρμογέα USB-TTL θα αναβοσβήσουν χαρούμενα και στο κάτω μέρος της διεπαφής η επιγραφή "Μεταφορτώθηκε ”

Τώρα, ενώ περιμένουμε να φτάσει το δοκιμαστικό SMS στο τηλέφωνο, θα σας πω πώς λειτουργεί το πρόγραμμα:

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Η φωτογραφία δείχνει τη δεύτερη έκδοση της βάσης εντοπισμού σφαλμάτων.

Όταν ενεργοποιείται για πρώτη φορά, το σύστημα ελέγχει τα byte με αριθμό 500 και 501 του EEPROM· εάν είναι ίσα, τότε τα δεδομένα βαθμονόμησης δεν καταγράφονται και ο αλγόριθμος προχωρά στην ενότητα ρύθμισης.
Το ίδιο συμβαίνει εάν, όταν είναι ενεργοποιημένη, η φωτοαντίσταση είναι σκιασμένη (με ένα καπάκι στυλό) - ενεργοποιείται η λειτουργία επαναφοράς.

Οι δυναμοκυψέλες θα πρέπει να είναι ήδη εγκατεστημένες κάτω από τις κυψέλες, αφού απλώς διορθώνουμε το αρχικό μηδενικό επίπεδο και μετά μετράμε την αλλαγή βάρους (τώρα θα έρθουν τα μηδενικά, αφού δεν έχουμε συνδέσει τίποτα ακόμα).
Ταυτόχρονα, το ενσωματωμένο LED του pin 13 θα αρχίσει να αναβοσβήνει στο Arduino.
Εάν δεν πραγματοποιηθεί επαναφορά, το LED ανάβει για 12 δευτερόλεπτα.
Μετά από αυτό, αποστέλλεται ένα δοκιμαστικό SMS με το μήνυμα "INITIAL BOOT OK" και την τάση της μπαταρίας.
Η μονάδα επικοινωνίας απενεργοποιείται και μετά από 3 λεπτά η πλακέτα Arduino θέτει τις πλακέτες HX711 ADC σε κατάσταση αναστολής λειτουργίας και αποκοιμιέται η ίδια.
Αυτή η καθυστέρηση έγινε για να μην ανιχνεύονται παρεμβολές από λειτουργική μονάδα GSM (μετά την απενεργοποίηση, "φασόλια" για κάποιο χρονικό διάστημα).

Στη συνέχεια, έχουμε μια διακοπή αισθητήρα φωτογραφίας στη δεύτερη ακίδα (η λειτουργία συν είναι ενεργοποιημένη).
Σε αυτήν την περίπτωση, μετά την ενεργοποίηση, η κατάσταση της φωτοαντίστασης ελέγχεται για άλλα 3 λεπτά - για να εξαλειφθεί η επαναλαμβανόμενη/ψευδής ενεργοποίηση.
Το χαρακτηριστικό είναι ότι χωρίς καμία ρύθμιση το σύστημα ενεργοποιείται 10 λεπτά μετά το αστρονομικό ηλιοβασίλεμα με συννεφιά και 20 με καθαρό καιρό.
Ναι, για να μην επαναφέρεται το σύστημα κάθε φορά που ενεργοποιείται, πρέπει τουλάχιστον να συνδεθεί η πρώτη μονάδα HX711 (ακίδες DT-D10, SCK-A0)

Στη συνέχεια λαμβάνονται οι μετρήσεις των μετρητών καταπόνησης, υπολογίζεται η μεταβολή του βάρους από την προηγούμενη λειτουργία (ο πρώτος αριθμός στη γραμμή μετά το Hive) και από την πρώτη ενεργοποίηση ελέγχεται η τάση της μπαταρίας και αποστέλλεται αυτή η πληροφορία ως SMS:

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Παρεμπιπτόντως, λάβατε το SMS; Συγχαρητήρια! Είμαστε στα μισά του δρόμου! Η μπαταρία μπορεί να αφαιρεθεί από τη θήκη προς το παρόν· δεν θα χρειαζόμαστε πλέον τον υπολογιστή.

Παρεμπιπτόντως, το κέντρο ελέγχου της αποστολής αποδείχθηκε τόσο συμπαγές που μπορεί να τοποθετηθεί σε ένα βάζο μαγιονέζας· στην περίπτωσή μου, ένα ημιδιαφανές κουτί διαστάσεων 30x60x100 mm (από επαγγελματικές κάρτες) ταιριάζει τέλεια.

Ναι, το σύστημα ύπνου καταναλώνει ~2.3 mA - 90% λόγω της μονάδας επικοινωνίας - δεν απενεργοποιείται εντελώς, αλλά μεταβαίνει σε κατάσταση αναμονής.

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Ας αρχίσουμε να φτιάχνουμε αισθητήρες· πρώτα, ας αγγίξουμε τη διάταξη των αισθητήρων:

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Αυτό είναι ένα σχέδιο της κυψέλης - κάτοψη.

Κλασικά, τοποθετούνται 4 αισθητήρες στις γωνίες (1,2,3,4)

Θα μετρήσουμε διαφορετικά. Ή μάλλον, έστω και με τον τρίτο τρόπο. Επειδή τα παιδιά από το BroodMinder το κάνουν διαφορετικά:

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Σε αυτό το σχέδιο, οι αισθητήρες εγκαθίστανται στις θέσεις 1 και 2, τα σημεία 3,4 και XNUMX στηρίζονται στη δοκό.
Τότε οι αισθητήρες αντιπροσωπεύουν μόνο το μισό βάρος.
Ναι, αυτή η μέθοδος έχει μικρότερη ακρίβεια, αλλά είναι ακόμα δύσκολο να φανταστεί κανείς ότι οι μέλισσες θα έχτιζαν όλα τα πλαίσια με «γλώσσες» από κηρήθρες κατά μήκος ενός τοίχου της κυψέλης.

Έτσι, προτείνω να μειώσετε γενικά τους αισθητήρες στο σημείο 5 - τότε δεν χρειάζεται να θωρακίσετε το σύστημα και όταν χρησιμοποιείτε ελαφριές κυψέλες, είναι απολύτως απαραίτητο να αρκεστείτε σε έναν αισθητήρα.

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Γενικά, δοκιμάσαμε δύο τύπους μονάδων στο HX711, δύο τύπους αισθητήρων και δύο επιλογές για τη σύνδεσή τους - με μια πλήρη γέφυρα Wheatstone (2 αισθητήρες) και με μισό, όταν το δεύτερο μέρος συμπληρώνεται με αντιστάσεις 1k με ανοχή 0.1%.
Αλλά η τελευταία μέθοδος είναι ανεπιθύμητη και δεν συνιστάται ακόμη και από κατασκευαστές αισθητήρων, επομένως θα περιγράψω μόνο την πρώτη.

Έτσι, για μία κυψέλη θα εγκαταστήσουμε δύο μετρητές καταπόνησης και μία μονάδα HX711, το διάγραμμα καλωδίωσης έχει ως εξής:

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Υπάρχουν 5 μέτρα τηλεφωνικού καλωδίου 4 συρμάτων από την πλακέτα ADC στο Arduino - θυμόμαστε πώς στις μέλισσες δεν αρέσουν οι συσκευές GSM στην κυψέλη.

Γενικά, αφήνουμε «ουρές» 8 εκατοστών στους αισθητήρες, απογυμνώνουμε το συνεστραμμένο ζεύγος και κολλάμε τα πάντα όπως στην παραπάνω φωτογραφία.

Πριν ξεκινήσετε το ξυλουργικό μέρος, τοποθετήστε το κερί/παραφίνη σε κατάλληλο δοχείο για να λιώσει σε ένα λουτρό νερού.

Τώρα παίρνουμε το ξύλο μας και το χωρίζουμε σε τρία τμήματα των 100mm το καθένα

Στη συνέχεια, σημειώνουμε μια διαμήκη αυλάκωση πλάτους 25 mm, βάθους 7-8 mm, αφαιρούμε την περίσσεια χρησιμοποιώντας σιδηροπρίονο και σμίλη - θα πρέπει να εμφανιστεί ένα προφίλ σχήματος U.

Έχει ζεσταθεί το κερί; — βυθίζουμε εκεί τις πλακέτες ADC μας — αυτό θα τις προστατεύσει από την υγρασία/ομίχλη:

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Τα τοποθετούμε όλα σε μια ξύλινη βάση (πρέπει να υποβληθεί σε επεξεργασία με αντισηπτικό για να αποφευχθεί η σήψη):

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Και τέλος, διορθώνουμε τους αισθητήρες με βίδες με αυτοκόλλητη τομή:

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Υπήρχε και επιλογή με μπλε ηλεκτρική ταινία, αλλά για λόγους ανθρωπιάς δεν την παρουσιάζω 😉

Από την πλευρά του Arduino κάνουμε τα εξής:

Απογυμνώνουμε τα καλώδια του τηλεφώνου μας, στρίβουμε τα χρωματιστά καλώδια μεταξύ τους και τα κονιοποιούμε.

Μετά από αυτό, κολλήστε στις επαφές της πλακέτας όπως στη φωτογραφία:

SMS-παρακολούθηση του βάρους τριών κυψελών για $30

Αυτό ήταν, τώρα για τον τελικό έλεγχο, βάζουμε τους αισθητήρες σε τομείς του κύκλου, ένα κομμάτι κόντρα πλακέ στην κορυφή, επαναφέρουμε τον ελεγκτή (βάζουμε μια μπαταρία με καπάκι στυλό στη φωτοδίοδο).

Ταυτόχρονα, η λυχνία LED στο Arduino θα πρέπει να αναβοσβήνει και να φτάσει ένα δοκιμαστικό SMS.

Στη συνέχεια, αφαιρέστε το καπάκι από το φωτοκύτταρο και γεμίστε το νερό σε ένα πλαστικό μπουκάλι 1.5 λίτρου.
Βάζουμε το μπουκάλι στο κόντρα πλακέ και αν έχουν ήδη περάσει αρκετά λεπτά από την ενεργοποίησή του, ξαναβάζουμε το καπάκι στη φωτοαντίσταση (προσομοίωση ηλιοβασιλέματος).

Μετά από τρία λεπτά, το LED στο Arduino θα ανάψει και θα πρέπει να λάβετε ένα SMS με τιμές βάρους περίπου 1 kg σε όλες τις θέσεις.

Συγχαρητήρια! Το σύστημα συναρμολογήθηκε με επιτυχία!

Εάν τώρα αναγκάσουμε το σύστημα να λειτουργήσει ξανά, τότε η πρώτη στήλη βάρους θα έχει μηδενικά.

Ναι, σε πραγματικές συνθήκες, συνιστάται να προσανατολίζετε τη φωτοαντίσταση κατακόρυφα προς τα πάνω.

Τώρα θα δώσω ένα σύντομο εγχειρίδιο χρήσης:

  1. Τοποθετήστε μετρητές τάσης κάτω από τα πίσω τοιχώματα των κυψελών (τοποθετήστε μια δοκό/σανίδα πάχους ~ 30 mm κάτω από τα μπροστινά)
  2. Σκιάστε τη φωτοαντίσταση και τοποθετήστε την μπαταρία - η λυχνία LED θα πρέπει να αναβοσβήνει και θα πρέπει να λάβετε ένα δοκιμαστικό SMS με το κείμενο "INITIAL BOOT OK"
  3. Τοποθετήστε την κεντρική μονάδα στη μέγιστη απόσταση από τις κυψέλες και έτσι ώστε τα καλώδια να μην παρεμβαίνουν όταν εργάζεστε με μέλισσες.
    Κάθε απόγευμα, μετά τη δύση του ηλίου, θα λαμβάνετε ένα SMS με αλλαγές βάρους για την ημέρα και από τη στιγμή της εκτόξευσης.
    Όταν η τάση της μπαταρίας φτάσει τα 3.5 V, το SMS θα τελειώσει με τη γραμμή "!!! ΦΟΡΤΙΖΕΙ ΜΠΑΤΑΡΙΑ!!!"
    Ο χρόνος λειτουργίας σε μία μπαταρία 2600mAh είναι περίπου ένας μήνας.
    Εάν αντικατασταθεί η μπαταρία, οι καθημερινές αλλαγές στο βάρος των κυψελών δεν θυμούνται.

Ποιο είναι το επόμενο;

  1. Μάθετε πώς να τα τοποθετήσετε όλα αυτά σε ένα έργο για το github
  2. Ξεκινήστε 3 οικογένειες μελισσών στις κυψέλες του συστήματος Palivoda (ή κερασφόρες στους ανθρώπους)
  3. Προσθέστε «ψωμάκια» - μετρώντας την υγρασία, τη θερμοκρασία και το πιο σημαντικό - αναλύοντας το βουητό των μελισσών.

Αυτά είναι όλα προς το παρόν, ειλικρινά, ηλεκτρικός μελισσοκόμος Andrey

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο