
No, esta no es una oferta comercial, tal es el costo de los componentes del sistema que puede recopilar después de leer el artículo.
Un poco de historia:
Hace algún tiempo, decidí conseguir abejas, y aparecieron ... durante toda la temporada, pero no salieron del invierno.
Y esto a pesar del hecho de que todo parecía estar funcionando bien: señuelo otoñal, calentándose antes del frío.
La colmena era un clásico sistema Dadan de madera con 10 cuadros de una tabla de 40 mm.
Pero ese invierno, incluso los apicultores experimentados perdieron mucho más de lo habitual debido a los cambios de temperatura.
Entonces surgió la idea de un sistema de monitoreo del estado de la colmena.
Después de la publicación de varios artículos sobre Habr-e y la comunicación en el foro de los apicultores, decidí pasar de lo simple a lo complejo.
El peso es el único parámetro indiscutible, pero por regla general, los sistemas existentes monitorean solo una colmena de "referencia".
Si algo sale mal con él (por ejemplo, el vuelo de un enjambre, la enfermedad de las abejas), entonces los indicadores se vuelven irrelevantes.
Por lo tanto, se decidió controlar el cambio de peso de tres colmenas a la vez con un microcontrolador y agregar los otros "bollos" después.
El resultado es un sistema autónomo con un tiempo de ejecución de aproximadamente un mes con una sola carga de la batería 18650 y enviando estadísticas una vez al día.
Traté de simplificar el diseño tanto como sea posible, para que pudiera repetirse incluso sin esquemas, según una fotografía.
La lógica del trabajo es la siguiente: en el primer inicio / reinicio, las lecturas de los sensores instalados debajo de las colmenas se almacenan en la EEPROM.
Además, todos los días, después del atardecer, el sistema "se despierta", lee el testimonio y envía SMS con un cambio de peso por día y desde el momento en que se enciende.
Además, el valor de voltaje de la batería se transmite, y cuando se baja a 3.5 V, se emite una advertencia sobre la necesidad de cargar, porque debajo de 3.4 V el módulo de comunicación no se enciende y las indicaciones de peso ya están "flotando".
"¿Recuerdas cómo empezó todo? Todo fue la primera y la otra vez".

Sí, originalmente era un conjunto de "hierro", aunque solo las celdas de carga y los cables sobrevivieron a la versión final, pero lo primero es lo primero.
De hecho, el compartimento para cables no es necesario, simplemente resultó tener el mismo precio que 30 m de plano.
Si no tiene miedo de desmantelar 3 LED smd y medio centenar de puntos de soldadura normal (de salida), ¡vaya!
Por lo tanto, necesitamos el siguiente conjunto de equipos / materiales:
- Arduino Pro Mini 3V
Debe prestar atención al microchip convertidor lineal (debe ser exactamente 3,3 V) en el chip de marcado KB 33 / LB 33 / DE A10: los chinos han mezclado algo conmigo y todo el lote
Las placas de circuito en la tienda resultaron ser con reguladores de 5 voltios y cuarzo de 16MHz. - USB-Ttl en un chip CH340: puede incluso 5 voltios, pero luego, durante el firmware del microcontrolador, Arduino deberá desconectarse del módulo GSM para no quemar el último.
Las placas en el chip PL2303 no funcionan en Windows 10. - Módulo de comunicación GSM Goouu Tech IOT GA-6-B o AI-THINKER A-6 Mini.
¿Por qué te detuviste? Neoway M590, un diseñador que requiere bailes separados con panderetas, GSM SIM800L, no le gustó el nivel lógico no estándar de 2.8V, que requiere coordinación incluso con un arduino de tres voltios.
Además, la solución de AiThinker tiene un consumo mínimo de energía (al enviar SMS, no vi una corriente superior a 100 mA). - Antena GSM GPRS 3DBI (en la foto de arriba - una bufanda rectangular con una "cola", durante 9 horas)
- Paquete de inicio para un operador que tiene una buena cobertura en la ubicación de su colmenar.
Sí, el paquete debe activarse primero en un teléfono normal, DESHABILITAR la SOLICITUD DE PIN en la entrada y reponer la cuenta.
Ahora hay muchas opciones con nombres en el estilo de "Sensor", "IoT": tienen tarifas mensuales ligeramente más bajas. - cable dupont 20cm madre madre - 3 piezas (para conectar Arduino a USB-TTL)
- 3 piezas HX711 - ADC para básculas
- 6 células de carga que pesan hasta 50 kg
- 15 metros de cable telefónico de 4 hilos - para conectar módulos de pesas con ARDUINO.
- Fotorresistencia GL5528 (esto es importante, con una resistencia oscura de 1MOhm y una resistencia a la luz de 10-20kOhm) y dos resistencias convencionales de 20k
- Un trozo de cinta adhesiva de doble cara de 18x18 mm de grosor para unir el arduino al módulo de comunicación.
- El soporte de la batería 18650 y, de hecho, la batería en sí misma ~ 2600mAh.
- Un poco de cera o parafina (vela de tableta con lámpara de aroma) - para protección contra la humedad HX711
- Una pieza de viga de madera de 25x50x300mm para la base de las celdas de carga.
- Una docena de tornillos autorroscantes con una arandela de presión de 4.2x19 mm para montar los sensores en la base.
La batería se puede extraer del desmontaje de las computadoras portátiles, muchas veces más baratas que una nueva, y la capacidad será mucho mayor que la del UltraFire chino. Obtuve 1,500 versus 450 (esto es del firewall 6800 ;-)
Además, requerirá manos torcidas, un soldador EPSN-25, colofonia y soldadura POS-60.

Incluso hace 5 años, usé un soldador soviético con una picadura de cobre (no obtuve estaciones de soldadura, lo tomé para una prueba de manejo y terminé con el circuito EPSN).
Pero después de su fracaso y varios monstruos chinos bajo (d) árboles de Navidad, este último se llamó Esparta, algo tan severo como que el nombre se detuvo.
en un producto con un controlador de temperatura.
¡Entonces vamos!

Para comenzar, se sueldan dos LED del módulo GSM (el lugar donde se rodearon en un óvalo naranja)
Insertamos la tarjeta SIM con las almohadillas en la placa de circuito impreso, la esquina biselada en la foto se indica con la flecha.

Luego realizamos un procedimiento similar con el LED en la placa Arduino (el óvalo a la izquierda del chip cuadrado),
Suelde el peine en cuatro contactos (1),
Tomamos dos resistencias de 20k, giramos los cables en un lado, soldamos el cable en el orificio de contacto A5, los cables restantes en el arduinki RAW y GND (2),
Acortamos el fotorresistor a 10 mm y lo soldamos a las conclusiones de las placas GND y D2 (3).
Ahora es tiempo cinta aislante azul cinta de doble cara: péguela en el soporte de la tarjeta SIM del módulo de comunicación y, en la parte superior, arduino, el botón rojo (plateado) está frente a nosotros y se encuentra sobre la tarjeta SIM.
Suelde la potencia: más desde el condensador del módulo de comunicación (4) al pin RAW arduino.
El hecho es que el módulo de comunicación en sí mismo requiere 3.4-4.2V para su fuente de alimentación, y su contacto PWR está conectado a un convertidor reductor, por lo que para la operación del voltaje de iones de litio debe aplicarse sin pasar por esta parte del circuito.
En arduino, por el contrario, iniciamos la fuente de alimentación a través de un convertidor lineal: a bajas corrientes, la caída de voltaje de caída es de 0.1V.
Pero al aplicar voltaje estabilizado a los módulos HX711, eliminamos la necesidad de refinarlos a un voltaje más bajo (y al mismo tiempo aumentar el ruido como resultado de esta operación).
Luego soldamos los puentes (5) entre los contactos de PWR-A1, URX-D4 y UTX-D5, la tierra GND-G (6) y finalmente la energía del soporte de la batería 18650 (7), conectamos la antena (8).
Ahora tomamos el convertidor USB-TTL y conectamos los contactos RXD-TXD y TXD-RXD, GND-GND con los cables Dupont a ARDUINO (peine 1):

En la foto de arriba, la primera versión (de tres) del sistema, que se utilizó para la depuración.
Y ahora, por un tiempo, nos alejamos del soldador y pasamos a la parte del software.
Describiré la secuencia de acciones para Windows:
En primer lugar, debe descargar e instalar / descomprimir el programa Arduino IDE : la versión actual es 1.8.9, pero uso 1.6.4
Por simplicidad, desempaquetamos el archivo en la carpeta C: \ arduino- "your_version_number", dentro tendremos las carpetas / dist, drivers, ejemplos, hardware, java, lib, bibliotecas, referencias, herramientas, así como el archivo ejecutable arduino (entre otros).
Ahora necesitamos una biblioteca para trabajar con el ADC HX711 - el botón verde "clonar o descargar" - descargar ZIP.
El contenido (carpeta HX711-master) se coloca en el directorio C: \ arduino- "your_version_number" \ bibliotecas
Y, por supuesto, el controlador para USB-TTL es del mismo github: desde el archivo desempaquetado, simplemente se inicia el archivo de instalación del instalador.
Ok, ejecuta y configura el programa C: \ arduino- "your_version_number" \ arduino

Vamos al elemento "Herramientas": seleccione la placa "Arduino Pro o Pro Mini", el procesador Atmega 328 3.3V 8 MHz, el puerto es el número distinto del sistema COM1 (aparece después de instalar el controlador CH340 con el adaptador USB-TTL conectado)
Ok, copie el siguiente boceto (programa) y péguelo en la ventana 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); } }
En la primera línea, entre comillas char phone_no [] = "+ 123456789012"; - en lugar de 123456789012 ponemos nuestro número de teléfono con el código del país al que se enviarán los SMS.
Ahora haga clic en el botón de verificación (arriba del número uno en la captura de pantalla anterior) - si está debajo (debajo del triple en la captura de pantalla) "La compilación está completa" - entonces podemos flashear el microcontrolador.
Entonces, USB-TTL está conectado al ARDUINO y a la computadora, colocamos la batería cargada en el soporte (generalmente en un nuevo arduino, el LED comienza a parpadear una vez por segundo).
Ahora el firmware, estamos entrenando para presionar el botón rojo (plateado) del microcontrolador, ¡esto tendrá que hacerse estrictamente en un momento determinado!
Hay Haga clic en el botón "Cargar" (arriba de los dos en la captura de pantalla) y mire cuidadosamente la línea en la parte inferior de la interfaz (debajo de las tres pantallas).
Tan pronto como la inscripción "compilación" cambie a "inicio" - presione el botón rojo (reiniciar) - si todo está bien - el adaptador USB-TTL parpadea alegremente y la inscripción "Descargado" parpadea en la parte inferior de la interfaz
Ahora, mientras esperamos que llegue el SMS de prueba al teléfono, le diré cómo funciona el programa:

En la foto, la segunda versión del soporte de depuración.
La primera vez que se enciende el sistema, verifica los bytes 500 y 501 de la EEPROM; si son iguales, entonces los datos de calibración no se han registrado y el algoritmo pasa a la sección de configuración.
Lo mismo sucede si, cuando se enciende, el fotorresistor está sombreado (con una tapa de un bolígrafo): se activa el modo de restablecimiento de parámetros.
Los medidores de tensión ya deberían estar instalados debajo de las colmenas, ya que simplemente fijamos el nivel inicial de cero y luego medimos el cambio de peso (ahora vendrán ceros, ya que todavía no hemos conectado nada).
En arduino, el LED incorporado del pin 13 parpadeará.
Si no se produce el reinicio, el LED se ilumina durante 12 segundos.
Después de eso, se envía un SMS de prueba con el mensaje "INITIAL BOOT OK" y el voltaje de la batería.
El módulo de comunicación se apaga, y después de 3 minutos, la placa Arduino pone las placas ADC HX711 en modo de suspensión y se queda dormida por sí misma.
Tal demora se realizó para no detectar interferencias de un módulo GSM en funcionamiento (después de apagarlo, se "fuente" durante algún tiempo).
Además, tenemos una interrupción en el fotosensor que funciona en el segundo pin (más la elevación está habilitada por la función pullup).
En este caso, después de disparar durante otros 3 minutos, se verifica el estado del fotorresistor para excluir los positivos repetidos / falsos.
Lo que es característico, sin ningún ajuste, el sistema funciona 10 minutos después del atardecer astronómico en tiempo nublado y después de 20 en tiempo despejado.
Sí, para que cada vez que el sistema no se reinicie, al menos el primer módulo HX711 debe estar conectado (pines DT-D10, SCK-A0)
Luego se toman las lecturas de la celda de carga, se calcula el cambio de peso de la operación anterior (el primer número en la línea después de Hive) y desde el primer inicio, se verifica el voltaje de la batería y esta información se envía en forma de SMS:

Por cierto, ¿recibiste SMS? Felicidades Estamos a medio camino! Si bien la batería se puede quitar del soporte, ya no necesitaremos una computadora.
Por cierto, el centro de control de vuelo resultó ser tan compacto que puede caber en un frasco de mayonesa, en mi caso, una caja translúcida de 30x60x100mm de tamaño (de tarjetas de presentación) encaja perfectamente.
Sí, el sistema inactivo consume ~ 2.3mA - 90% debido al módulo de comunicación - no se apaga por completo, pero entra en modo de espera.

Procedemos a la fabricación de sensores, para empezar, veamos el diseño de los sensores:

Este es el plan de la colmena: vista superior.
Clásicamente, se instalan 4 sensores en las esquinas (1,2,3,4)
Mediremos de manera diferente. O más bien, incluso en el tercero. Como los chicos de BroodMinder hacen diferente:

En este diseño, los sensores se instalan en las posiciones 1 y 2, los puntos 3.4 se basan en el haz.
Entonces solo la mitad del peso cae sobre los sensores.
Sí, tal método tiene menos precisión, pero es difícil imaginar que las abejas construyeron todos los marcos con "lenguas" de los panales a lo largo de una pared de la colmena.
Por lo tanto, propongo reducir los sensores al punto 5 por completo, entonces no hay necesidad de proteger el sistema, y cuando se usan colmenas ligeras, es completamente necesario hacerlo con un sensor.

En general, probamos dos tipos de módulos en el HX711, dos tipos de sensores y dos opciones para conectarlos: con un puente Wheatstone completo (2 sensores) y medio cuando la segunda parte se complementa con resistencias 1k con una tolerancia de 0.1%.
Pero este último método no es deseable y no es recomendado incluso por los fabricantes de sensores, por lo que describiré solo el primero.
Entonces, en una colmena, instalaremos dos celdas de carga y un módulo HX711, el diagrama de cableado es el siguiente:

Desde la placa ADC hasta el arduino hay 5 metros de un cable telefónico de 4 núcleos; recordamos cómo a las abejas no les gustan los dispositivos GSM en la colmena .
En general, en los sensores dejamos "colas" de 8 cm, limpiamos el par trenzado y soldamos todo como en la foto de arriba.

Repito una vez más: ¡observe la polaridad!
Si el cable negro de la celda de carga está conectado al E + de la placa HX711, entonces el rojo va a A +
De lo contrario, en lugar de aumentar de peso, recibirá una reducción, pero no importa, en este caso, es suficiente intercambiar los cables rojos de las celdas de carga (A + y A-) en la placa ADC.
Antes de comenzar la carpintería, coloque cera / parafina en un recipiente adecuado para derretir en un baño de agua.
Ahora tomamos nuestro haz y lo dividimos en tres segmentos de 100 mm.
A continuación, marque una ranura longitudinal de 25 mm de ancho, 7-8 mm de profundidad, con una sierra para metales y un cincel eliminamos el exceso; debe salir un perfil en forma de U.
Cera calentada? - sumergemos nuestros tableros de ADC allí - esto los protegerá de la humedad / niebla:

Lo tenemos todo sobre una base de madera (es necesario tratarlo con un antiséptico contra la descomposición):

Y finalmente, arreglamos los sensores con tornillos:

Había otra opción con una cinta aislante azul, pero por razones de humanidad no la traigo ;-)
Desde el lado de Arduino hacemos lo siguiente:
Limpiamos nuestros cables telefónicos, retorcemos los cables de colores, metálico.
Después de eso, soldamos a los contactos de la placa como en la foto:

Eso es todo, ahora para la verificación final, coloque los sensores en los sectores del círculo, en la parte superior: un trozo de madera contrachapada, ponga a cero el controlador (colocamos la batería con la tapa en el fotodiodo de la pluma).
En este caso, el LED del arduino debería parpadear y debería aparecer un SMS de prueba.
Luego retiramos las tapas de la fotocélula, y vamos a recoger agua en una botella de plástico de 1,5 litros.
Ponemos la botella en madera contrachapada y, si ya han pasado varios minutos desde que la encendimos, volvemos a colocar la tapa en la fotorresistencia (simulando una puesta de sol).
Después de tres minutos, el LED del arduino se iluminará y debería recibir un SMS con un valor de peso de aproximadamente 1 kg en todas las posiciones.
Felicidades ¡El sistema se ha ensamblado con éxito!
Si ahora hacemos que el sistema vuelva a funcionar, entonces en la primera columna del peso obtenemos ceros.
Sí, en condiciones reales es deseable orientar la fotorresistencia verticalmente hacia arriba.
Ahora daré un breve manual sobre el uso de:
- Instale medidores de tensión debajo de las paredes traseras de las colmenas (debajo de la parte delantera sustituya una viga / tabla de ~ 30 mm de espesor)
- Sombree el fotorresistor y coloque la batería: el LED debería parpadear y debería aparecer un SMS de prueba con el texto "INICIAL INICIAL"
- Coloque la unidad central lo más lejos posible de las colmenas y de modo que los cables no interfieran cuando trabaje con abejas.
Cada tarde, después del atardecer, los SMS llegarán con un cambio de peso por día y desde el momento del lanzamiento.
Cuando el voltaje de la batería alcanza los 3.5V, el SMS terminará con la línea "¡¡¡CARGUE LA BATERÍA !!!"
El tiempo de funcionamiento de una batería con una capacidad de 2600 mAh es de aproximadamente un mes.
En el caso de reemplazar la batería, no se recuerdan los cambios diarios en el peso de las colmenas.
Que sigue
- Para descubrir cómo poner todo esto en un proyecto para github
- Comienza 3 familias de abejas en las colmenas del sistema Palivoda (o personas con cuernos)
- Agregue "bollos", una medida de humedad, temperatura y, lo más importante, un análisis del zumbido de las abejas.
Vamos a ocuparlo todo, sinceramente suyo, apicultor eléctrico Andrey
PD Para nuevas publicaciones sobre este tema, vea beefree.xyz