Índice:
- Etapa 1: Material e Ferramentas
- Etapa 2: Prepare o ATTINY85
- Etapa 3: montar o circuito
- Etapa 4: Teste
- Etapa 5: Próximas etapas
Vídeo: IOT123 - I2C MQ2 TIJOLO: 5 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Os TIJOLOS IOT123 são unidades modulares DIY que podem ser combinadas com outros TIJOLOS IOT123, para adicionar funcionalidade a um nó ou vestível. Eles são baseados em protoboards de dois lados, quadrados, de polegada quadrada com orifícios de passagem interconectados.
Espera-se que vários desses BRICKS estejam em vários nós (MCUs Master - ESP8266 ou ATTINY84) em um site. O MCU não precisa de conhecimento prévio da finalidade dos sensores ou das necessidades de software. Ele faz a varredura em busca de nós I2C e, em seguida, solicita um despejo de propriedade (dados do sensor) de cada escravo. Estes TIJOLOS fornecem 5.0V, 3.3V e outra linha AUX personalizável.
Este I2C MQ2 BRICK despeja 3 propriedades:
GLP (partes por milhão), CO (PPM), SMOKE (PPM)
Este sensor forneceu um cenário interessante: ele precisa de pelo menos 2 minutos (até 5 minutos) para aquecer, então ele precisa calibrar por 20 segundos antes de usar. Como o MCU do host é iniciado apenas na obtenção de pares nome / valor (e uma mensagem de continuação), introduzimos uma propriedade "PREPARE". Como sua mensagem de continuação é "1" (mais por vir), o MCU Host continuará pesquisando o BRICK até que esteja pronto. Também é recomendado "Burn-in" o MQ2 antes de usar, ou seja, deixe conectado ao seu circuito de 5V por 24 horas.
Os blocos de sensores do tipo Keyes serão retirados primeiro, pois vêm com vitaminas (componentes extras necessários) incluídos e são relativamente baratos (comprei 37 por 10AUD). Outras placas / circuitos serão apresentados ao I2C BRICKS.
Os orifícios adjacentes ao ATTINY85 foram deixados sem uso, para permitir um programador de pogo pin enquanto o DIP8 é soldado ao PCB.
Uma outra abstração, empacotando os BRICKS em pequenos cilindros que se conectam a um hub D1M WIFI BLOCK, bombeando os valores para um servidor MQTT, está sendo desenvolvida.
Etapa 1: Material e Ferramentas
Há uma lista completa de Bill of Material and Sourcing.
- Bloco de sensor MQ2 (1)
- ATTINY85 20PU (1)
- 1 "Protoboard dupla face (1)
- Cabeçalho Masculino 90º (3P, 3P)
- Cabeçalho Masculino (2P, 2P)
- Jumper Shunt (1)
- Fio de conexão (~ 7)
- Solda e Ferro (1)
Etapa 2: Prepare o ATTINY85
AttinyCore do gerenciador de placas é necessário. Grave bootloader "EEPROM Retained", "8mHZ Internal" (todas as configurações mostradas acima).
Use a fonte incluída; compilar e programar para o ATtiny85.
O GIST está aqui:
gist.github.com/IOT-123/4c501046d365d01a60…
Você pode encontrar mais detalhes nestas instruções:
www.instructables.com/id/Programming-the-A…
www.instructables.com/id/How-to-Program-AT…
www.instructables.com/id/How-to-program-th…
www.instructables.com/id/Programming-the-A…
www.instructables.com/id/Programming-an-At…
Melhor testar através do breadboard antes de continuar.
Se você tiver SENSORES ASSIMILADOS, certifique-se de que o endereço do escravo seja diferente em uma combinação SENSOR / Host MCU, ou seja, todos os sensores de temperatura podem ter o mesmo endereço, desde que você tenha apenas um sensor de temperatura em um MCU / nó.
Etapa 3: montar o circuito
- Na parte frontal, insira os componentes ATTINY85 (1), cabeçotes macho 3P 90deg (2) (3), cabeçotes macho 2P (4) (5) e solde na parte traseira.
- Na parte traseira, trace um fio laranja de ORANGE1 a ORANGE2 e solde.
- Na parte traseira, trace um fio azul de AZUL1 a AZUL2 e solde.
- Na parte traseira, trace um fio verde de VERDE1 a VERDE2 e solde.
- Na parte traseira, trace um fio desencapado de PRATA1 a PRATA2 e solde.
- Na parte traseira, trace um fio desencapado de PRATA3 a PRATA4 e solde.
- Na parte traseira, trace um fio preto de BLACK1 a BLACK2 e solde.
- Na parte traseira, trace um fio preto de BLACK3 a BLACK4 e solde.
- Na parte traseira, trace um fio vermelho de RED1 a RED2 e solde.
- Na parte traseira, trace um fio vermelho de RED3 a RED4 e solde.
- Na parte traseira, trace um fio amarelo de AMARELO1 a AMARELO2 e solde.
O sensor agora pode ser conectado diretamente por meio de seus pinos ao PCB ou por meio de fios, aos pontos mostrados no contrato do pino.
Etapa 4: Teste
Espera-se que vários desses BRICKS estejam em vários nós (MCUs - ESP8266 ou ATTINY84) em um ambiente. Este é um teste de unidade: verifica as solicitações / respostas UNO até que todos os dados tenham sido descarregados e, em seguida, negligencia o escravo I2C.
- Carregue o código UNO em seu equipamento de teste UNO. Certifique-se de que ADDRESS_SLAVE corresponda ao endereço I2C de BRICK.
- Conecte o 5.0 V no UNO a um VCC no TIJOLO.
- Certifique-se de que o jumper desse pino esteja ativado.
- Conecte o GND no UNO ao GND no BRICK.
- Conecte o A5 em UNO a SCL em TIJOLO.
- Conecte o A4 em UNO a SDA em TIJOLO.
- Conecte um resistor pull-up 4K7 de SDA para VCC.
- Conecte um resistor pull-up 4K7 de SCL para VCC.
- Conecte seu UNO ao seu Dev PC com USB.
- Abra o console do Arduino. Escolha 9600 baud (reinicie o UNO e reabra o console se for necessário).
- Os nomes e valores das propriedades devem ser impressos no console uma vez e, em seguida, a palavra sleep é repetida.
Se você vir "setup", então 3 linhas de lixo repetidas, você pode ter suas linhas SDA e SCL de trás para frente.
Registro I2C Master do escravo I2C com suporte para plotter / metadados
#incluir |
# defineADDRESS_SLAVE10 |
bool _outputPlotterOnly = false; |
bool _confirmedMetadata = false; |
int _packetSegment = 0; |
bool _i2cNodeProcessed = false; |
char _property [2] [24] = {"nome", "valor"}; |
voidsetup () { |
Wire.begin (); // junte-se ao barramento i2c (endereço opcional para mestre) |
Serial.begin (9600); // inicia serial para saída |
atraso (1000); |
if (! _outputPlotterOnly) { |
Serial.println ("configuração"); |
Serial.println (); |
} |
} |
voidloop () { |
if (_i2cNodeProcessed) { |
if (! _confirmedMetadata) {// avise o escravo para começar a enviar dados do sensor |
atraso (1); |
Wire.beginTransmission (ADDRESS_SLAVE); |
Wire.write (1); |
Wire.endTransmission (); |
atraso (100); |
_confirmedMetadata = true; |
} |
_i2cNodeProcessed = false; |
if (! _outputPlotterOnly) { |
Serial.println (); |
} |
Retorna; |
} |
Wire.requestFrom (ADDRESS_SLAVE, 16); |
_packetSegment ++; |
pacote char [16]; |
intindex = 0; |
bool isContinueSegment = false; // continueSegment (the 3rd) 1 = more, 0 = last |
while (Wire.available ()) {// escravo pode enviar menos do que o solicitado |
char c = Wire.read (); |
pacote [índice] = int (c)> -1? c: ''; // substitua caracteres inválidos por espaços |
if (_packetSegment == 3) { |
_packetSegment = 0; |
isContinueSegment = true; |
//Serial.println("------------- "); |
//Serial.println(int(c)); |
//Serial.println("------------- "); |
if (int (c) == 48 || int (c) == 86) {// 0 na última propriedade |
_i2cNodeProcessed = true; |
// envia valores para MQTT |
pausa; |
} |
} |
index ++; |
} |
if (! isContinueSegment) { |
if (! _outputPlotterOnly) { |
Serial.println (pacote); |
} |
strcpy (_property [_packetSegment - 1], pacote); // definir var local com nome / valor |
}outro{ |
if (_outputPlotterOnly && _confirmedMetadata) { |
if (_i2cNodeProcessed) { |
Serial.println (_property [1]); |
}outro{ |
Serial.print (_property [1]); |
Serial.print (""); |
} |
} |
} |
} |
visualizar rawuno_i2c_generic_sensor_test_w_plotter_v2.ino hospedado com ❤ por GitHub
Etapa 5: Próximas etapas
O layout básico do circuito e a camada I2C do software podem ser relacionados a muitos sensores diferentes. A principal coisa a se acertar para começar é o contrato de pacote entre mestre e escravo.
Eu planejei / iniciei uma rede empacotada (impressa em 3D) de sensores que usam esta estrutura e serão vinculados a ela quando as peças forem publicadas.
Este BLOCO é usado pelo SENSOR ASSIMILATE MQ2.
Recomendado:
IOT123 - BLOCO D1M - Conjunto 2xAMUX: 7 etapas (com imagens)
IOT123 - D1M BLOCK - 2xAMUX Conjunto: D1M BLOCKS adiciona caixas táteis, etiquetas, guias de polaridade e breakouts para os populares Wemos D1 Mini SOC / Shields / Clones. Um dos problemas com o chip ESP8266 é que ele tem apenas um pino IO analógico disponível. Este instrutível mostra como montar o 2xA
IOT123 - SENSOR ASSIMILADO: MQ2: 4 etapas
IOT123 - ASSIMILATE SENSOR: MQ2: ASSIMILATE SENSORS são sensores de ambiente que possuem uma camada de abstração de hardware e software adicionada, tornando possível que tipos completamente novos sejam adicionados a um ASSIMILATE SENSOR HUB e as leituras sejam bombeadas para um servidor MQTT sem adição de codin
IOT123 - TIJOLO DE BATERIA LIR2032: 4 etapas
IOT123 - TIJOLO DE BATERIA LIR2032: Os TIJOLOS IOT123 são unidades modulares DIY que podem ser combinadas com outros TIJOLOS IOT123, para adicionar funcionalidade a um nó ou vestível. Eles são baseados em protoboards de dois lados, quadrados de polegada quadrada com orifícios passantes interconectados
IOT123 - TIJOLO DE 3.3V: 4 etapas
IOT123 - TIJOLO DE 3,3 V: Os TIJOLOS IOT123 são unidades modulares DIY que podem ser combinadas com outros TIJOLOS IOT123, para adicionar funcionalidade a um nó ou vestível. Eles são baseados em protoboards de dois lados, quadrados de polegada quadrada com orifícios passantes interconectados
IOT123 - 5PIN ATTINY85 NRF24L01 TIJOLO: 4 etapas
IOT123 - 5PIN ATTINY85 NRF24L01 TIJOLO: ATUALIZAÇÃO: Esta configuração é amplamente acadêmica ou uma base para teste de software / fonte de alimentação. Mesmo quando o PB5 é desabilitado como RESET, ele não lê os valores com precisão usando analogRead: o principal caso de uso para leituras de sensor. Analisará a configuração do ATTINY84