Índice:
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Por favor, leia a introdução e a etapa 2 do meu instrutivo sobre como construir um monitor de 1 fio Arduino (144 caracteres) para obter mais informações sobre a situação e as bibliotecas disponíveis. Conforme explicado lá, usaremos a biblioteca OneWire-Hub (emulador de dispositivo escravo OneWire) da orgua (preste atenção, há outros garfos por aí) para construir dispositivos genéricos de 1 fio (por exemplo, sensores) usando um Arduino.
Etapa 1: Software
O mais importante é fazer um dispositivo que possa retornar basicamente qualquer tipo de valor de maneira simples. O que significa que o software padrão pode ser usado para ler todos os valores diretamente (nenhuma conversa ou manipulação binária necessária). Para isso, precisamos de um dispositivo padrão de 1 fio muito simples que possa retornar flutuadores e seja amplamente suportado. A única escolha que conheço é o termômetro DS18B20 (o monitor de bateria DS2438 também é interessante e útil, mas bastante complexo e, portanto, lento entre outras desvantagens). A biblioteca OneWire-Hub contém um exemplo chamado DS18B20_asInterface que faz exatamente o que precisamos. Ele cria um monte de DS18B20, dos quais cada um representa um valor flutuante que queremos retornar de nosso (s) sensor (es). As restrições aqui são a resolução e os valores devem estar na faixa de -55, 0… 125, 0. Isso pode ser facilmente alcançado - no pior caso, reescalonar - e é realmente melhor do que os valores que podem ser representados por, e. os valores do DS2438 (1,5 a 10 V). Alternativamente, um intervalo maior de valores pode ser definido usando:
setTemperatureRaw (static_cast (value * 16.0f));
mas a leitura e o processamento desses valores podem não ser suportados por todos os softwares, pois estão fora das especificações.
O que você deve estar ciente é que inicialmente o número máximo de escravos é restrito a 8, mas pode ser alterado em "OneWireHub_config.h" aumentando HUB_SLAVE_LIMIT até 32. Além disso, você deve ter certeza de adotar ONEWIRE_TIME_MSG_HIGH_TIMEOUT se necessário por seu Rede de 1 fio (por exemplo, x10), conforme explicado na Etapa 2 da tela de 1 fio do Arduino (144 caracteres). E para usar a versão IDE> = 1.8.3 para compilar e fazer upload do código para o seu Arduino.
Aqui, como exemplo, o código do dispositivo que construí recentemente. Como presumo que você não use a mesma combinação de sensores que uso, não entrarei em detalhes aqui, verifique o código e faça perguntas se precisar de ajuda.
Etapa 2: Hardware
Basicamente, qualquer coisa que você possa conectar a um Arduino pode ser usado como seu sensor de escolha. A única restrição é que a leitura do sensor deve ser o mais rápido possível, a fim de ter tempo suficiente para que a comunicação de 1 fio ocorra (confira a Etapa 2 do meu instrutivo sobre o display de 1 fio do Arduino (144 caracteres) a fim para obter um exemplo).
Um exemplo de hardware possível poderia ser uma estação meteorológica como, por exemplo:
https://shop.boxtec.ch/wetter-messer-p-41289.html
Além disso, ou em vez de, você pode usar o próprio Arduino como seu sensor. Você pode ler mais sobre isso em meu instrutivo sobre os recursos menos conhecidos do Arduino - os valores possíveis são a tensão da fonte e a temperatura interna.
Aqui, como exemplo, uma imagem do dispositivo que construí recentemente. Como presumo que você não use a mesma combinação de sensores que uso, não entrarei em detalhes aqui, verifique o código e faça perguntas se precisar de ajuda.
Etapa 3: teste o dispositivo
Conecte-o à sua rede e verifique em seu software se todos os IDs de ROM estão presentes e os valores que eles retornam como temperatura.
Etapa 4: Apêndice: ATtiny85
Dispositivos únicos (limitação de memória) também podem ser feitos em um ATtiny85. Isso requer algumas etapas enquanto programamos o ATtiny85 usando o Arduino Uno como ISP com a ajuda do IDE do Arduino:
-
Links
- https://playground.boxtec.ch/doku.php/arduino/att…
- https://sebastian.expert/could-not-find-usbtiny-d…
- https://learn.sparkfun.com/tutorials/tiny-avr-pro…
- https://forum.arduino.cc/index.php?topic=425532.0
- https://forum.arduino.cc/index.php?topic=128963.0
- use Arduino IDE> = 1.8.3
-
instalar a opção ATtiny para IDE
- Arquivo> Preferências> URLs adicionais do gerenciador de placas:
- Ferramentas> Placa: ??? > Gerente de Conselhos …
- procure por: "minúsculo" e instale
-
fazer upload do esboço do ISP para um Uno
Arquivo> Exemplos> ArduinoISP> ArduinoISP
-
insira ATtiny85 no soquete de programação (força zero) e conecte-o:
- Arduino Pin MOSI D11 para ATtiny Pin 5
- Arduino Pin MISO D12 para ATtiny Pin 6
- Arduino Pin SCK D13 para ATtiny Pin 7
- Arduino Pin Reset D10 para ATtiny Pin 1
- Arduino Pin GND para ATtiny Pin 4
- Arduino Pin VCC para ATtiny Pin 8
- (> = Limite de 10uF no pino de RESET do Arduino Uno pode ser necessário)
-
selecione ATtiny85 (veja a imagem):
- Placa: "ATtiny25 / 45/85"
- Temporizador 1 Relógio: "CPU"
- B. O. D.: "B. O. D. desativado"
- LTO (1.6.11 + apenas): "Desativado"
- Chip: "ATtiny85"
- Relógio: "8 MHz (interno)" (compatível com ATtiny85 e ATtiny84)
- Relógio: "16 MHz (PLL)" (configuração alternativa apenas para ATtiny85)
- Porta: ???
-
selecione Programador:
Ferramentas> Programador: "Arduino as ISP" (NÃO "ArduinoISP"!)
-
definir as configurações do fusível (relógio, etc.):
Ferramentas> Gravar Bootloader
- carregue este código (o LED de erro do programador precisa estar desligado, caso contrário, reinicie-o)
-
Layout do pino ATtinyX5 (ATtiny85):
- Pino 1: PB5 (RST)
- Pino 2: PB3 (A3) - opcionalmente conectado via 220ohm a 1 <-TX
- Pino 3: PB4 (A2) - conectado a DATA de 1 fio
- Pino 4: GND - conectado ao GND
- Pino 5: PB0 (PWM) - conectado ao sensor I2C SDA
- Pino 6: PB1 (PWM) - conectado ao LED com 4,7k ao GND
- Pino 7: PB2 (A1) - conectado ao sensor I2C SCL
- Pino 8: VCC - conectado a 5V
Trabalhar com ATTiny85 requer um pouco mais de trabalho, pois você precisa obter bibliotecas adicionais para comunicação I2C (adafruit / TinyWireM) e saída serial (TinyDebugSerial). Além disso, como a memória é bastante limitada, você pode querer trabalhar muito com #define, por exemplo, para remover a depuração serial. No exemplo você pode ver tudo isso junto.
Para testar, o primeiro passo é verificar se o LED pisca com a frequência correta, 0,5 Hz. Em seguida, conecte-o ao barramento de 1 fio e verifique o novo dispositivo.
Recomendado:
[Home IoT] Dispositivo ESP8266 MQTT cliente: 7 etapas
[Home IoT] ESP8266 MQTT Client Device: É interessante que usando um MCU habilitado para WiFi barato com o protocolo MQTT para controlar os dispositivos, como o alimentador automático de água para o meu gato. Aqui está o meu blog para obter mais informações detalhadas (https://regishsu.blogspot.com/2019/07/home-iot-esp…Spe
IOT123 - ESCRAVO DE PROTOTIPAGEM DE TIJOLO I2C: 3 etapas
IOT123 - ESCRAVO DE PROTOTIPAGEM DE TIJOLO I2C: Ao desenvolver o mais recente ASSIMILATE ACTOR (KY-019 RELAY), uma placa de desenvolvimento genérica foi criada para me poupar algum trabalho extra em minha mesa. Ele tem a pinagem padrão do I2C IOT123 BRICK, mas permite conexões personalizadas ao sensor do ATT
IOT123 - BLOCOS D1M - Conjunto genérico: 7 etapas
IOT123 - BLOCOS D1M - Conjunto genérico: Ao prototipar ou criar circuitos para seus projetos, uma vez que os componentes são soldados a um PCB, há um limite para sua reutilização em outros circuitos devido a danos na soldagem. É aí que entram os BLOCOS D1M. Eles são um sistema de revestimento / empilhamento f
Hijacker de switch genérico: 3 etapas
Hijacker de switch genérico: este artigo descreve como construir um dispositivo microcontrolador de estado sólido que controla switches físicos. É muito barato de fazer (4 $ ou mais), supondo que você tenha um programador de microcontrolador. O circuito em si é de complexidade trivial. Este P
Modificar um carregador USB para carro genérico para carregar um iPod Nano de terceira geração: 4 etapas
Modificar um carregador USB para carro genérico para carregar um iPod Nano de 3ª geração: Eu tenho um iPod Nano de 3ª geração. Ele detecta que está conectado, mas se recusa a cobrar de um adaptador de carga > USB genérico, mas não gostei de comprar um cabo adaptador ou outro carregador específico para o iPod, então já modifiquei um