Оглавление:

IOT123 - I2C MQ2 BRICK: 5 шагов
IOT123 - I2C MQ2 BRICK: 5 шагов

Видео: IOT123 - I2C MQ2 BRICK: 5 шагов

Видео: IOT123 - I2C MQ2 BRICK: 5 шагов
Видео: MQ-2 датчик газов и дыма подключаем к Arduino 2024, Ноябрь
Anonim
IOT123 - I2C MQ2 КИРПИЧ
IOT123 - I2C MQ2 КИРПИЧ
IOT123 - I2C MQ2 КИРПИЧ
IOT123 - I2C MQ2 КИРПИЧ
IOT123 - I2C MQ2 КИРПИЧ
IOT123 - I2C MQ2 КИРПИЧ
IOT123 - I2C MQ2 КИРПИЧ
IOT123 - I2C MQ2 КИРПИЧ

КИРПИЧЫ IOT123 - это модульные блоки DIY, которые можно смешивать с другими КИРПИЧами IOT123, чтобы добавить функциональность узлу или носимому устройству. В их основе лежат двухсторонние прототипы квадратного сечения дюйма с соединенными между собой сквозными отверстиями.

Предполагается, что некоторое количество этих КИРПИЧОВ будет на нескольких узлах (главные MCU - ESP8266 или ATTINY84) на сайте. MCU не нуждается в предварительных знаниях о назначении датчиков или программных потребностях. Он сканирует узлы I2C, а затем запрашивает дамп свойств (данные датчика) от каждого ведомого устройства. Эти КИРПИЧЫ обеспечивают питание 5,0 В, 3,3 В и другую линию AUX, которую можно настроить.

Этот КИРПИЧ I2C MQ2 сбрасывает 3 свойства:

LPG (частей на миллион), CO (PPM), ДЫМ (PPM)

Этот датчик предоставил интересный сценарий: ему нужно как минимум 2 минуты (до 5 минут) для разогрева, затем его необходимо откалибровать в течение 20 секунд перед использованием. Поскольку MCU хоста предназначен только для получения пар имя / значение (и сообщения продолжения), мы ввели свойство «PREPARE». Поскольку его сообщение продолжения - «1» (еще больше), MCU хоста будет продолжать опрашивать КИРПИЧ, пока он не будет готов. Также рекомендуется «прогреть» MQ2 перед использованием, т.е. оставить подключенным к цепи 5 В на 24 часа.

Сначала мы рассмотрим сенсорные блоки типа Keyes, поскольку они поставляются с витаминами (необходимы дополнительные компоненты) и относительно дешевы (я купил 37 за 10 австралийских долларов). Другие платы / схемы будут представлены в I2C BRICKS.

Сквозные отверстия, примыкающие к ATTINY85, остались неиспользованными, чтобы можно было использовать программатор pogo pin, в то время как DIP8 припаян к печатной плате.

Еще одна абстракция - упаковка КИРПИЧОВ в маленькие цилиндры, которые подключаются к концентратору D1M WIFI BLOCK и перекачивают значения на сервер MQTT.

Шаг 1. Материал и инструменты

Материал и инструменты
Материал и инструменты
Материал и инструменты
Материал и инструменты
Материал и инструменты
Материал и инструменты

Есть полный список материалов и источников.

  1. Блок датчиков MQ2 (1)
  2. ATTINY85 20ПУ (1)
  3. 1 "двусторонняя макетная плата (1)
  4. Мужской заголовок 90º (3P, 3P)
  5. Мужской заголовок (2P, 2P)
  6. Перемычка шунта (1)
  7. Монтажный провод (~ 7)
  8. Припой и железо (1)

Шаг 2: Подготовьте ATTINY85

Подготовьте ATTINY85
Подготовьте ATTINY85
Подготовьте ATTINY85
Подготовьте ATTINY85
Подготовьте ATTINY85
Подготовьте ATTINY85
Подготовьте ATTINY85
Подготовьте ATTINY85

AttinyCore от Boards Manager не требуется. Записать загрузчик «EEPROM Retained», «8mHZ Internal» (все конфигурации показаны выше).

Используйте включенный источник; скомпилировать и запрограммировать на ATtiny85.

GIST здесь:

gist.github.com/IOT-123/4c501046d365d01a60…

Вы можете найти более подробную информацию в этих инструкциях:

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…

Лучше всего протестировать через макетную плату, прежде чем продолжить.

Если у вас есть ДАТЧИКИ ASSIMILATE, убедитесь, что адрес ведомого устройства отличается в комбинации хоста ДАТЧИК / MCU, то есть все датчики температуры могут иметь один и тот же адрес, если у вас есть только один датчик температуры на MCU / узле.

Шаг 3: соберите схему

Соберите схему
Соберите схему
Соберите схему
Соберите схему
Соберите схему
Соберите схему
  1. На лицевой стороне вставьте компоненты ATTINY85 (1), 3-полюсные 90-градусные вилочные разъемы (2) (3), 2-полюсные вилочные разъемы (4) (5) и припаяйте сзади.
  2. Сзади проследите оранжевый провод от ORANGE1 до ORANGE2 и припаяйте.
  3. Сзади проследите синий провод от СИНЕГО 1 до СИНЕГО2 и припаяйте.
  4. Сзади проследите зеленый провод от GREEN1 до GREEN2 и припаяйте.
  5. Сзади проследите оголенный провод от SILVER1 до SILVER2 и припаяйте.
  6. Сзади проследите оголенный провод от SILVER3 до SILVER4 и припаяйте.
  7. Сзади проследите черный провод от ЧЕРНОГО1 до ЧЕРНОГО2 и припаяйте.
  8. Сзади проследите черный провод от ЧЕРНОГО3 до ЧЕРНОГО4 и припаяйте.
  9. Сзади проследите красный провод от RED1 до RED2 и припаяйте.
  10. Сзади проследите красный провод от RED3 до RED4 и припаяйте.
  11. Сзади проследите желтый провод от ЖЕЛТОГО1 до ЖЕЛТОГО2 и припаяйте.

Теперь датчик можно подключить напрямую через контакты к печатной плате или с помощью проводов к точкам, указанным на контакте контактов.

Шаг 4: Тестирование

Тестирование
Тестирование
Тестирование
Тестирование
Тестирование
Тестирование

Предполагается, что некоторые из этих КИРПИЧОВ будут находиться на нескольких узлах (MCU - ESP8266 или ATTINY84) в среде. Это модульный тест: проверяет запросы / ответы UNO до тех пор, пока все данные не будут сброшены, затем игнорирует ведомое устройство I2C.

  1. Загрузите код UNO в свой тестовый комплект UNO. Убедитесь, что ADDRESS_SLAVE совпадает с адресом I2C КИРПИЧА.
  2. Подключите 5,0 В на UNO к VCC на BRICK.
  3. Убедитесь, что перемычка для этого контакта включена.
  4. Подключите GND на UNO к GND на КИРПИЧЕ.
  5. Подключите A5 на UNO к SCL на BRICK.
  6. Подключите A4 на UNO к SDA на BRICK.
  7. Подключите подтягивающий резистор 4K7 от SDA к VCC.
  8. Подключите подтягивающий резистор 4K7 от SCL к VCC.
  9. Подключите UNO к компьютеру Dev через USB.
  10. Откройте консоль Arduino и выберите 9600 бод (перезапустите UNO и снова откройте консоль, если необходимо).
  11. Имена и значения свойств должны быть выведены на консоль один раз, после чего слово «сон» повторяется.

Если вы видите «setup», то 3 строки мусора повторяются, возможно, ваши линии SDA и SCL перевернуты на передний план.

Ведущее устройство I2C ведет журнал с ведомого устройства I2C с поддержкой плоттера / метаданных

#включают
# defineADDRESS_SLAVE10
bool _outputPlotterOnly = false;
bool _confirmedMetadata = false;
int _packetSegment = 0;
bool _i2cNodeProcessed = false;
char _property [2] [24] = {"имя", "значение"};
voidsetup () {
Wire.begin (); // подключаемся к шине i2c (адрес для мастера необязательный)
Serial.begin (9600); // запускаем серийник для вывода
задержка (1000);
if (! _outputPlotterOnly) {
Serial.println («настройка»);
Serial.println ();
}
}
voidloop () {
if (_i2cNodeProcessed) {
if (! _confirmedMetadata) {// даем ведомому знать, что нужно начать отправку данных датчика
задержка (1);
Wire.beginTransmission (ADDRESS_SLAVE);
Wire.write (1);
Wire.endTransmission ();
задержка (100);
_confirmedMetadata = true;
}
_i2cNodeProcessed = false;
if (! _outputPlotterOnly) {
Serial.println ();
}
возвращение;
}
Wire.requestFrom (ADDRESS_SLAVE, 16);
_packetSegment ++;
пакет char [16];
intindex = 0;
bool isContinueSegment = false; // continueSegment (третий) 1 = больше, 0 = последний
while (Wire.available ()) {// ведомое устройство может отправить меньше, чем запрошено
char c = Wire.read ();
пакет [индекс] = int (c)> -1? c: ''; // заменяем недопустимые символы пробелами
if (_packetSegment == 3) {
_packetSegment = 0;
isContinueSegment = true;
//Serial.println("------------- ");
//Serial.println(int(c));
//Serial.println("------------- ");
if (int (c) == 48 || int (c) == 86) {// 0 в последнем свойстве
_i2cNodeProcessed = true;
// отправляем значения в MQTT
перерыв;
}
}
index ++;
}
if (! isContinueSegment) {
if (! _outputPlotterOnly) {
Serial.println (пакет);
}
strcpy (_property [_packetSegment - 1], packet); // устанавливаем локальную переменную с именем / значением
}еще{
if (_outputPlotterOnly && _confirmedMetadata) {
if (_i2cNodeProcessed) {
Serial.println (_property [1]);
}еще{
Serial.print (_property [1]);
Serial.print ("");
}
}
}
}

просмотреть rawuno_i2c_generic_sensor_test_w_plotter_v2.ino, размещенный на ❤ на GitHub

Шаг 5. Дальнейшие действия

Базовая схема схемы и уровень программного обеспечения I2C связаны со многими различными датчиками. Главное, с чего нужно начать, - это пакетный контракт между ведущим и ведомым.

Я запланировал / запустил (3D-печать) упакованную сеть датчиков, которые используют эту структуру, и буду ссылаться на нее по мере публикации частей.

Этот БЛОК используется ДАТЧИКОМ MQ2 ASSIMILATE SENSOR.

Рекомендуемые: