Lorapromini - um nó Lorawan de baixa potência
Um nó do sensor de Lorawan, baseado no ATMEGA328P MCU (Arduino Pro Mini) e RFM95W/SX1276 LORA Transceptor.

O módulo pode ser usado:
- Colete vários valores climáticos com sensores ambientais. Veja sensor ambiental (clima/clima)
- Diga se a transportadora de cartas colocou novas letras em sua caixa de correio. Consulte o monitor da caixa de correio
- Notifique se alguém tocou a campainha
- Aja um botão sem fio
- E muito mais ...
Características
- MCU do sono profundo e sensores entre transmissões de dados
- Dois insumos de interrupção poderiam usar para acordar o MCU e os sensores do sono profundo
- Confirme as mensagens de dados não confirmados
- Consumo de energia ultra baixa. Abaixo de 10μA com todos os recursos e sensores
- Entrada de energia 3.5-6V:
- Bateria (Li-Ion ou Li-Socl2 funciona bem)
- Bateria com carregador solar
- Suporte ao sensor
- BME280 (umidade, pressão barométrica e temperatura ambiente)
- Maxim ds18b20 (+)/ds18s20 (+)/ds1822 sensor de temperatura de 1 fio
Aviso
Lorapromini não cuida da conformidade com a limitação do ciclo de trabalho. Selecione apenas intervalos de transmissão que estão dentro dos limites legais (1%/0,1%). Observe também que as entradas de interrupção podem causar transmissões adicionais se essa função for ativada.
Pedidos de PCB
☝️ Eu ainda tenho alguns PCBs restantes. Se você estiver interessado, entre em contato comigo. Os detalhes de contato podem ser encontrados aqui: https://github.com/foorschtbar ou visite minha loja Tindie:
Exemplo de aplicações
Sensor ambiental (clima/clima)
- Download de radiação escudo STL
- Compre luz solar de LED à prova d'água

Monitor da caixa de correio
- Download do caso STL
- Comprar interruptores de palheta normalmente abertos



Mais fotos


As coisas da configuração da pilha
- Lorawan Version
MAC V1.0.3
Como usar
- Fabricar o PCB. Aqui você encontra os arquivos Gerber
- Monte o PCB. Aqui você encontra a lista de materiais (BOM)
- ATENÇÃO: A versão atual (v3.1) do PCB não tem cabeçalho ISP! Um atatega328p pré-queimado deve ser instalado. Recebi um de uma placa do Arduino Pro Mini (3,3V 8 MHz), porque um Arduino completamente montado é mais barato que um único chip
- Firmware de configuração flash (veja como piscar)
- Inicie a calibração de tensão do menu
- Inicie o construtor de configurações de configuração
- Meça a tensão com um multímetro
- Insira a tensão multímetro e o valor analógico na calculadora Volts por bit (VPB) para obter o fator VPB.
- Se você tiver uma fonte de alimentação ajustável, tente tensões diferentes para encontrar o melhor fator. Aviso: a tensão máxima é de 6 volts
- Preencha os outros campos, como ativação Methode, Session Keys e EUIS
- Escreva a configuração para a EEPROM usando o menu de configuração
- Verifique a configuração escrita via menu de configuração
- Firmware de depuração ou liberação flash (veja como piscar)
- Terminar
Como piscar
avrdude-F -v -c arduino -p atmega328p -P <COM PORT> -b 57600 -D -U flash:w:<FIRMWARE FILE>:i
Exemplo:
avrdude -F -v -c arduino -p atmega328p -P COM4 -b 57600 -D -U flash:w:firmware_1.0_config.hex:i
Firmware Changelog
Versão 2.7
- Corrigido um problema de redefinir o gatilho de interrupção muito cedo.
Versão 2.6
- Segunda tentativa de resolver o atraso desnecessário devido à limitação do ciclo de trabalho. O transbordamento do Timer0 congela o MCU após cerca de 20 transmissões.
Versão 2.5
- Corrigido Problema com a limitação do ciclo de trabalho
- Imprecisão fixa do MCU Deepsleep
Versão 2.4
- Uma interrupção externa durante uma transmissão termina a transmissão e inicia uma nova transmissão.
- Modo de verificação de link ativado
Versão 2.3
Versão 2.2
- Um atraso de envio adicional entre 0 e 20s foi adicionado para evitar sobreposições entre diferentes nós com exatamente o mesmo intervalo de envio
- Algumas otimizações de memória flash
Versão 2.1
- Melhor (Debug) Loging para saída serial
- BME envia -127 ° C (link ds18x) se nenhum sensor foi encontrado
Versão 2.0
- Adicionar pinos de interrupção acordados e acordados
- Opção adicionada para desativar pinos de interrupção
- Opção adicionada para uplink confirmado
- Mensagem de dados de Lorawan alterados
- Estado adicionado de pinos de interrupção
- Byte de versão maior e menor combinada em um byte único (4 bits para maiores e 4 bits para menores)
Versão 1.1
- Somente para testar o pipeline de IC
Versão 1.0
PCB Changelog
Versão 3.2
- C7 corrigido (substituído 10UF por 100NF)
Versão 3.1
- Adicionado campo branco para especificar o ID do nó
Versão 3.0
- Removido Arduino Pro Mini Dauther PCB
- Adicionado atmga328p direto ao PCB
- Pinos adicionados para GPIOs não utilizados
- Adicionado D2 e D3 com pulldowns e conector como interrupções externas (precisam de FW v2.0 ou superior)
Versão 2.2
- Adicionado pino RST ao conector para programação
Versão 2.1
- Conector adicionado para programação
Versão 2.0
- PCB menor
- Bordas arredondadas
- Corrigido o problema com o mapeamento de pinos a bordo do DS18X
Versão 1.0
TTS Payload Formatter (anteriormente TTN Payload Decoder)
function decodeUplink ( input ) {
var bytes = input . bytes ;
var itrTrigger = ( bytes [ 0 ] & 0x1 ) !== 0 ; // Message was triggered from interrupt (bit 0)
var itr0 = ( bytes [ 0 ] & 0x2 ) !== 0 ; // Interrupt 0 (bit 1)
var itr1 = ( bytes [ 0 ] & 0x4 ) !== 0 ; // Interrupt 1 (bit 2)
var bat = ( bytes [ 1 ] << 8 ) | bytes [ 2 ] ; // Battery
var fwversion = ( bytes [ 3 ] >> 4 ) + "." + ( bytes [ 3 ] & 0xf ) ; // Firmware version
var temp1 = ( bytes [ 4 ] & 0x80 ? 0xffff << 16 : 0 ) | ( bytes [ 4 ] << 8 ) | bytes [ 5 ] ; // BME Temperature
var humi1 = ( bytes [ 6 ] << 8 ) | bytes [ 7 ] ; // BME Humidity
var press1 = ( bytes [ 8 ] << 8 ) | bytes [ 9 ] ; // BME Pressure
var temp2 =
( bytes [ 10 ] & 0x80 ? 0xffff << 16 : 0 ) | ( bytes [ 10 ] << 8 ) | bytes [ 11 ] ; // DS18x Temperature
var mbStatus = "UNKNOWN" ;
if ( itr0 ) {
mbStatus = "FULL" ;
} else if ( itr1 ) {
mbStatus = "EMPTY" ;
}
return {
data : {
interrupts : {
itr0 : itr0 ,
itr1 : itr1 ,
itrTrigger : itrTrigger ,
} ,
extra : {
mbStatus : mbStatus ,
mbChanged : itrTrigger ,
} ,
fwversion : fwversion ,
bme : {
temperature : temp1 / 100 ,
humidity : humi1 / 100 ,
pressure : press1 ,
} ,
ds18x : {
temperature : temp2 / 100 ,
} ,
battery : bat / 100 ,
} ,
warnings : [ ] ,
errors : [ ] ,
} ;
} Pendência