
Não, essa não é uma oferta comercial; é o custo dos componentes do sistema que você pode coletar após a leitura do artigo.
Um pouco de fundo:
Algum tempo atrás, eu decidi pegar abelhas, e elas apareceram ... por toda a temporada, mas não saíram do inverno.
E isso apesar do fato de que tudo parecia estar indo bem - atração do outono, esquentando diante do frio.
A colméia era um sistema Dadan de madeira clássico com 10 quadros de uma placa de 40 mm.
Mas naquele inverno, até os apicultores experientes perderam muito mais do que o normal por causa das variações de temperatura.
Então surgiu a idéia de um sistema de monitoramento de condições de colméia.
Após a publicação de vários artigos sobre o Habr-e e a comunicação no fórum dos apicultores, decidi ir do simples ao complexo.
O peso é o único parâmetro indiscutível, mas, como regra, os sistemas existentes monitoram apenas uma seção de "referência".
Se algo der errado com ele (por exemplo, fuga de um enxame, doença de abelha), os indicadores se tornam irrelevantes.
Portanto, decidiu-se monitorar a alteração de peso de três colmeias ao mesmo tempo com um microcontrolador e adicionar os outros "pãezinhos" depois.
O resultado é um sistema autônomo com um tempo de execução de cerca de um mês com uma única carga da bateria 18650 e o envio de estatísticas uma vez por dia.
Tentei simplificar o design o máximo possível, para que ele pudesse ser repetido mesmo sem esquemas, de acordo com uma fotografia.
A lógica do trabalho é a seguinte: no primeiro start / reset, as leituras dos sensores instalados sob as colmeias são armazenadas na EEPROM.
Além disso, todos os dias, após o pôr do sol, o sistema "acorda", lê o testemunho e envia SMS com uma mudança de peso por dia e a partir do momento em que é ligado.
Além disso, o valor da tensão da bateria é transmitido e, quando ela é baixada para 3,5 V, é emitido um aviso sobre a necessidade de carregamento, porque abaixo de 3,4 V o módulo de comunicação não liga e as indicações de peso já estão "flutuando".
"Você se lembra como tudo começou. Tudo foi a primeira vez e novamente."

Sim, era um conjunto de "ferro" que era originalmente, embora apenas células e fios de carga sobrevivessem até a versão final, mas primeiro as primeiras coisas.
De fato, o compartimento de cabos não é necessário, mas acabou sendo o mesmo preço que 30m sem problemas.
Se você não tem medo de desmontar 3 LEDs smd e meio ponto de solda normal (saída) - então vá!
Portanto, precisamos do seguinte conjunto de equipamentos / materiais:
- Arduino Pro Mini 3V
Você deve prestar atenção ao microchip do conversor linear - deve ser exatamente 3,3V - no chip de marcação KB 33 / LB 33 / DE A10 - os chineses misturaram algo comigo e todo o lote
as placas de circuito na loja eram de reguladores de 5 volts e quartzo de 16 MHz. - USB-Ttl em um chip CH340 - você pode até 5 volts, mas, durante o firmware do microcontrolador, o Arduino precisará ser desconectado do módulo GSM, para não queimar o último.
As placas no chip PL2303 não funcionam no Windows 10. - Módulo de comunicação GSM Goouu Tech IOT GA-6-B ou AI-THINKER A-6 Mini.
Por que você parou nisso? O Neoway M590 - um projetista que exige danças separadas com pandeiros, o GSM SIM800L - não gostou do nível lógico de 2,8 V não padrão, exigindo coordenação mesmo com um arduino de três volts.
Além disso, a solução da AiThinker possui um consumo mínimo de energia (ao enviar SMS, não vi uma corrente acima de 100mA). - Antena GSM GPRS 3DBI (na foto acima - um lenço retangular com uma “cauda”, por 9 horas)
- Pacote inicial para um operador com boa cobertura no local do seu apiário.
Sim, o pacote deve primeiro ser ativado em um telefone comum, DESATIVAR o PEDIDO DE PIN na entrada e reabastecer a conta.
Agora, existem muitas opções com nomes no estilo de "Sensor", "IoT" - eles têm taxas mensais um pouco mais baixas. - dupont wire 20cm mãe mãe - 3 unid. (para conectar o Arduino ao USB-TTL)
- 3pcs HX711 - ADC para balanças
- 6 células de carga com peso até 50 kg
- 15 metros de cabo telefônico de 4 núcleos - para conectar módulos de peso com o ARDUINO.
- Fotorresistor GL5528 (isso é importante, com uma resistência escura de 1MOhm e uma resistência à luz de 10-20kOhm) e dois resistores convencionais de 20k
- Um pedaço de fita adesiva dupla face de 18x18 mm de espessura - para conectar o arduino ao módulo de comunicação.
- O suporte da bateria 18650 e, de fato, a própria bateria ~ 2600mAh.
- Um pouco de cera ou parafina (vela de tablet com lâmpada de aroma) - para proteção contra umidade HX711
- Um pedaço de viga de madeira 25x50x300mm para a base das células de carga.
- Uma dúzia de parafusos autorroscantes com uma arruela de pressão de 4,2x19 mm para montar sensores na base.
A bateria pode ser retirada da desmontagem dos laptops - muitas vezes mais baratos que os novos, e a capacidade será muito maior do que a do UltraFire chinês - consegui 1.500 contra 450 (isso é do firewall 6800 ;-)
Além disso, serão necessárias mãos tortas, ferro de solda EPSN-25, resina e solda POS-60.

Há cinco anos, usei um ferro de solda soviético com uma picada de cobre (não consegui estações de solda - tomei-o para um test drive e terminei o circuito EPSN).
Mas após seu fracasso e vários monstruosos chineses sob (d) árvores de Natal, este último foi chamado Esparta - algo tão grave quanto o nome parou
em um produto com um controlador de temperatura.
Então vamos lá!

Para começar, dois LEDs são soldados no módulo GSM (o local em que foram circulados em um oval laranja)
Nós inserimos o cartão SIM com os blocos na placa de circuito impresso, o canto chanfrado da foto é indicado pela seta.

Em seguida, realizamos um procedimento semelhante com o LED na placa Arduino (o oval à esquerda do chip quadrado),
Solde o pente em quatro contatos (1),
Tomamos dois resistores de 20k, torçamos os fios de um lado, soldamos o torção no orifício de contato A5, os demais fios nos arduques RAW e GND (2),
Reduzimos o fotorresistor para 10 mm e o soldamos às conclusões das placas GND e D2 (3).
Agora é hora fita isolante azul fita dupla face - cole-a no suporte do cartão SIM do módulo de comunicação e, na parte superior - arduino - o botão vermelho (prateado) está voltado para nós e está localizado acima do cartão SIM.
Solde a energia: mais do capacitor do módulo de comunicação (4) ao pino RAW do arduino.
O fato é que o próprio módulo de comunicação requer 3,4-4,2V para sua fonte de alimentação e seu contato PWR é conectado a um conversor abaixador, de modo que, para operação a partir de íons de lítio, a tensão deve ser aplicada contornando esta parte do circuito.
No arduino, pelo contrário, iniciamos a fonte de alimentação através de um conversor linear - em correntes baixas, a queda de tensão de queda é de 0,1V.
Mas, ao fornecer uma tensão estabilizada aos módulos HX711, eliminamos a necessidade de refiná-los em uma tensão mais baixa (e ao mesmo tempo aumentamos o ruído como resultado dessa operação).
Em seguida, soldamos os jumpers (5) entre os contatos de PWR-A1, URX-D4 e UTX-D5, o terra GND-G (6) e, finalmente, a energia do suporte da bateria 18650 (7), conecte a antena (8).
Agora pegamos o conversor USB-TTL e conectamos os contatos RXD-TXD e TXD-RXD, GND-GND com os fios da Dupont ao ARDUINO (pente 1):

Na foto acima - a primeira versão (de três) do sistema, que foi usada para depuração.
E agora, por algum tempo, nos desviamos do ferro de soldar e passamos à parte do software.
Vou descrever a sequência de ações para o Windows:
Primeiro, você precisa baixar e instalar / descompactar o programa IDE do Arduino - a versão atual é 1.8.9, mas eu uso o 1.6.4
Por uma questão de simplicidade, descompactamos o arquivo na pasta C: \ arduino- "your_version_number", onde teremos / dist, drivers, exemplos, hardware, java, lib, bibliotecas, referências, pastas de ferramentas, além do arquivo executável do arduino (entre outros).
Agora precisamos de uma biblioteca para trabalhar com o HX711 ADC - o botão verde "clonar ou baixar" - faça o download do ZIP.
O conteúdo (pasta HX711-master) é colocado no diretório C: \ arduino- "your_version_number" \ library
E, é claro, o driver para USB-TTL é do mesmo github - do arquivo descompactado, o arquivo SETUP do instalador é simplesmente iniciado.
Ok, execute e configure o programa C: \ arduino- "your_version_number" \ arduino

Vamos para o item "Ferramentas" - selecione a placa "Arduino Pro ou Pro Mini", o processador Atmega 328 3.3V 8 MHz, a porta é o número diferente do COM1 do sistema (aparece após a instalação do driver CH340 com o adaptador USB-TTL conectado)
Ok, copie o seguinte esboço (programa) e cole-o na janela do IDE do Arduino
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); } }
Na primeira linha, entre aspas char phone_no [] = "+ 123456789012"; - em vez de 123456789012, inserimos nosso número de telefone com o código do país para o qual o SMS será enviado.
Agora clique no botão de verificação (acima do número um na captura de tela acima) - se a compilação estiver abaixo (abaixo do triplo na captura de tela), podemos piscar o microcontrolador.
Assim, o USB-TTL está conectado ao ARDUINO e ao computador, colocamos a bateria carregada no suporte (geralmente em um novo arduino, o LED começa a piscar uma vez por segundo).
Agora o firmware - estamos treinando para pressionar o botão vermelho (prateado) do microcontrolador - isso precisará ser feito estritamente em um determinado momento !!!
Existe Clique no botão "Upload" (acima dos dois na captura de tela) e observe atentamente a linha na parte inferior da interface (nas três telas).
Assim que a inscrição "compilação" for substituída por "download" - pressione o botão vermelho (redefinir) - se estiver tudo bem - o adaptador USB-TTL pisca com alegria e a inscrição "Downloaded" na parte inferior da interface
Agora, enquanto aguardamos a chegada do SMS de teste no telefone, mostrarei como o programa funciona:

Na foto - a segunda versão do suporte de depuração.
Na primeira vez em que o sistema é ligado, ele verifica os bytes 500 e 501 da EEPROM; se forem iguais, os dados de calibração não foram gravados e o algoritmo segue para a seção de configuração.
O mesmo acontece se, quando ligado, o fotorresistor estiver sombreado (com uma tampa de uma caneta) - o modo de redefinição de parâmetro é ativado.
Os strain gauges já devem ser instalados sob as colmeias, pois simplesmente fixamos o nível inicial de zero e medimos a mudança de peso (agora zeros virão, pois ainda não conectamos nada).
No arduino, o LED embutido do pino 13 pisca.
Se a redefinição não ocorrer, o LED acenderá por 12 segundos.
Depois disso, um SMS de teste é enviado com a mensagem "INICIAL BOOT OK" e a voltagem da bateria.
O módulo de comunicação é desligado e, após 3 minutos, a placa Arduino coloca as placas ADX HX711 no modo de suspensão e adormece sozinha.
Esse atraso foi feito para não capturar interferências de um módulo GSM em funcionamento (depois de desligá-lo, ele "fontes" por algum tempo).
Além disso, temos uma interrupção no fotossensor trabalhando no segundo pino (mais a elevação é ativada pela função pullup).
Nesse caso, depois de disparar por mais 3 minutos, o estado do fotorresistor é verificado para excluir positivos repetidos / falsos.
O que é característico, sem nenhum ajuste, o sistema funciona 10 minutos após o pôr do sol astronômico em tempo nublado e após 20 em tempo claro.
Sim, para que toda vez que o sistema não reinicie, pelo menos o primeiro módulo HX711 deve ser conectado (pinos DT-D10, SCK-A0)
Em seguida, são feitas as leituras das células de carga, calculada a alteração de peso da operação anterior (o primeiro número na linha após o Hive) e, desde o primeiro início, a tensão da bateria é verificada e essas informações são enviadas na forma de SMS:

A propósito, você recebeu SMS? Parabéns! Estamos a meio caminho! Enquanto a bateria puder ser removida do suporte, não precisaremos de mais um computador.
A propósito, o centro de controle de vôo acabou sendo tão compacto que pode caber em uma jarra de maionese, no meu caso, uma caixa translúcida de tamanho 30x60x100mm (de cartões de visita) se encaixa perfeitamente.
Sim, o sistema adormecido consome ~ 2.3mA - 90% devido ao módulo de comunicação - ele não desliga completamente, mas entra no modo de espera.

Prosseguimos na fabricação de sensores, para começar, vamos tocar no layout dos sensores:

Este é o plano da colméia.
Classicamente, 4 sensores são instalados nos cantos (1,2,3,4)
Vamos medir de forma diferente. Ou melhor, mesmo no terceiro. Como os caras do BroodMinder fazem diferente:

Neste projeto, os sensores são instalados nas posições 1 e 2, os pontos 3.4 são baseados na viga.
Então, apenas metade do peso cai nos sensores.
Sim, esse método tem menos precisão, mas é difícil imaginar que as abelhas construam todos os quadros com "línguas" dos favos de mel ao longo de uma parede da colméia.
Então, proponho reduzir os sensores para o ponto 5 completamente - então não há necessidade de proteger o sistema e, ao usar colmeias de luz, é completamente necessário fazer um sensor.

Em geral, testamos dois tipos de módulos no HX711, dois tipos de sensores e duas opções para conectá-los - com uma ponte Wheatstone completa (2 sensores) e meio quando a segunda parte é complementada com resistores de 1k com uma tolerância de 0,1%.
Mas o último método é indesejável e nem recomendado pelos fabricantes de sensores, portanto descreverei apenas o primeiro.
Portanto, em uma seção, instalaremos duas células de carga e um módulo HX711, o diagrama de fiação é o seguinte:

Da placa ADC ao arduino, existem 5 metros de cabo telefônico de 4 núcleos - lembramos como as abelhas não gostam de dispositivos GSM na colméia .
Em geral, nos sensores deixamos "caudas" de 8 cm, limpamos o par trançado e vendemos tudo como na foto acima.

Repito mais uma vez - observe a polaridade!
Se o fio preto da célula de carga estiver conectado ao E + da placa HX711, o vermelho passará para A +
Caso contrário, em vez de ganhar peso, você receberá uma redução, mas isso não importa, neste caso, basta trocar os fios vermelhos das células de carga (A + e A-) na placa ADC.
Antes de iniciar a carpintaria, coloque cera / parafina em um recipiente adequado para derreter em banho-maria.
Agora pegamos nossa viga e dividimos em três segmentos de 100 mm
Em seguida, marcamos uma ranhura longitudinal de 25 mm de largura e 7-8 mm de profundidade. Usando uma serra e um cinzel, removemos o excesso - um perfil em forma de u deve sair.
Cera aquecida? - mergulhamos nossas placas ADC lá - isso as protegerá da umidade / névoa:

Temos tudo em uma base de madeira (é necessário tratá-lo com um anti-séptico por decomposição):

E, finalmente, consertamos os sensores com parafusos:

Havia outra opção com uma fita isolante azul, mas por razões de humanidade eu não a trago ;-)
Do lado do Arduino, fazemos o seguinte:
Limpamos nossos cabos telefônicos, enrolamos os fios coloridos, minúsculos.
Depois disso, soldamos os contatos do quadro como na foto:

É isso, agora, para a verificação final, coloque os sensores nos setores do círculo, em cima - um pedaço de madeira, zere o controlador (coloque a bateria com a tampa no fotodiodo da caneta-tinteiro).
Nesse caso, o LED no arduino deve piscar e um SMS de teste deve aparecer.
Depois, removemos as tampas da fotocélula e vamos coletar água em uma garrafa de plástico de 1,5 litro.
Colocamos a garrafa no compensado e, se já passaram vários minutos após ligá-la, colocamos a tampa de volta no fotorresistor (simulando um pôr do sol).
Após três minutos, o LED do arduino acenderá e você deverá receber um SMS com um valor de peso de cerca de 1 kg em todas as posições.
Parabéns! O sistema foi montado com sucesso!
Se agora fizermos o sistema funcionar novamente, na primeira coluna do peso obteremos zeros.
Sim, em condições reais, é desejável orientar o fotorresistor verticalmente para cima.
Agora vou dar um breve manual sobre o uso de:
- Instale extensômetros sob as paredes traseiras das colmeias (sob a frente, substitua uma viga / placa com aproximadamente 30 mm de espessura)
- Proteja o fotorresistor e coloque a bateria - o LED deve piscar e um SMS de teste com o texto "INICIAL BOOT OK" deve aparecer
- Posicione a unidade central o mais longe possível das colmeias e para que os fios não interfiram ao trabalhar com abelhas.
Todas as noites, após o pôr do sol, o SMS chega com uma alteração de peso por dia e a partir do momento do lançamento.
Quando a tensão da bateria atingir 3,5V, o SMS terminará com a linha "!!! CHARGE BATTERY !!!"
O tempo de operação de uma bateria com capacidade de 2600mAh é de cerca de um mês.
No caso de substituição da bateria, as alterações diárias no peso das colmeias não são lembradas.
O que vem a seguir?
- Para descobrir como colocar tudo isso em um projeto para o github
- Inicie 3 famílias de abelhas nas colméias do sistema Palivoda (ou pessoas com chifres)
- Adicione "pãezinhos" - uma medida de umidade, temperatura e o mais importante - uma análise do zumbido das abelhas.
Vamos ocupar tudo, sinceramente, o apicultor elétrico Andrey
PS Para novas publicações sobre esse tópico, consulte beefree.xyz