Índice:

IOT123 - I2C MQ2 TIJOLO: 5 etapas
IOT123 - I2C MQ2 TIJOLO: 5 etapas

Vídeo: IOT123 - I2C MQ2 TIJOLO: 5 etapas

Vídeo: IOT123 - I2C MQ2 TIJOLO: 5 etapas
Vídeo: MQ-2 датчик газов и дыма подключаем к Arduino 2024, Novembro
Anonim
IOT123 - I2C MQ2 TIJOLO
IOT123 - I2C MQ2 TIJOLO
IOT123 - I2C MQ2 TIJOLO
IOT123 - I2C MQ2 TIJOLO
IOT123 - I2C MQ2 TIJOLO
IOT123 - I2C MQ2 TIJOLO
IOT123 - I2C MQ2 TIJOLO
IOT123 - I2C MQ2 TIJOLO

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

Material e Ferramentas
Material e Ferramentas
Material e Ferramentas
Material e Ferramentas
Material e Ferramentas
Material e Ferramentas

Há uma lista completa de Bill of Material and Sourcing.

  1. Bloco de sensor MQ2 (1)
  2. ATTINY85 20PU (1)
  3. 1 "Protoboard dupla face (1)
  4. Cabeçalho Masculino 90º (3P, 3P)
  5. Cabeçalho Masculino (2P, 2P)
  6. Jumper Shunt (1)
  7. Fio de conexão (~ 7)
  8. Solda e Ferro (1)

Etapa 2: Prepare o ATTINY85

Prepare o ATTINY85
Prepare o ATTINY85
Prepare o ATTINY85
Prepare o ATTINY85
Prepare o ATTINY85
Prepare o ATTINY85
Prepare o ATTINY85
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

Monte o circuito
Monte o circuito
Monte o circuito
Monte o circuito
Monte o circuito
Monte o circuito
  1. 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.
  2. Na parte traseira, trace um fio laranja de ORANGE1 a ORANGE2 e solde.
  3. Na parte traseira, trace um fio azul de AZUL1 a AZUL2 e solde.
  4. Na parte traseira, trace um fio verde de VERDE1 a VERDE2 e solde.
  5. Na parte traseira, trace um fio desencapado de PRATA1 a PRATA2 e solde.
  6. Na parte traseira, trace um fio desencapado de PRATA3 a PRATA4 e solde.
  7. Na parte traseira, trace um fio preto de BLACK1 a BLACK2 e solde.
  8. Na parte traseira, trace um fio preto de BLACK3 a BLACK4 e solde.
  9. Na parte traseira, trace um fio vermelho de RED1 a RED2 e solde.
  10. Na parte traseira, trace um fio vermelho de RED3 a RED4 e solde.
  11. 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

Testando
Testando
Testando
Testando
Testando
Testando

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.

  1. Carregue o código UNO em seu equipamento de teste UNO. Certifique-se de que ADDRESS_SLAVE corresponda ao endereço I2C de BRICK.
  2. Conecte o 5.0 V no UNO a um VCC no TIJOLO.
  3. Certifique-se de que o jumper desse pino esteja ativado.
  4. Conecte o GND no UNO ao GND no BRICK.
  5. Conecte o A5 em UNO a SCL em TIJOLO.
  6. Conecte o A4 em UNO a SDA em TIJOLO.
  7. Conecte um resistor pull-up 4K7 de SDA para VCC.
  8. Conecte um resistor pull-up 4K7 de SCL para VCC.
  9. Conecte seu UNO ao seu Dev PC com USB.
  10. Abra o console do Arduino. Escolha 9600 baud (reinicie o UNO e reabra o console se for necessário).
  11. 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: