Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Создание быстрой надежной системы обнаружения пожара с Samsung SAMI, Arduino UNO и Raspberry Pi

Это руководство проведет вас через создание компактной IoT-системы обнаружения пожара, стримящей показания датчика пламени в Samsung SAMI через WebSockets, используя Arduino UNO и Raspberry Pi.

Мы будем использовать простой, готовый ИК-датчик пламени, загрузить легкий скетч в Arduino и запустить Node.js-скрипт на Raspberry Pi, который пересылает данные в SAMI.

Предварительные требования

Для этого туториала вы должны быть знакомы с базовыми API SAMI.

Архитектура

Диаграмма ниже иллюстрирует высокоуровневый поток:

Программные компоненты:

Скачайте программное обеспечение сейчас.

Если у вас нет Raspberry Pi, вы все равно можете следовать шагам. Подключите Arduino к компьютеру с интернетом и запустите Node.js-скрипт на той машине вместо этого.

Шаг 1: Создание и подключение нового типа устройства

  1. Войдите в SAMI Developer Portal. Если у вас нет аккаунта Samsung, создайте его сейчас.
  2. Нажмите «+ New Device Type».
  3. Назовите тип устройства «Flame Sensor» и назначьте уникальный идентификатор, например «com.example.iot.flame».
  4. Нажмите «Create Device Type» и перейдите на страницу типов устройств.

Теперь создайте Manifest для типа устройства «Flame Sensor».

  1. В левой колонке нажмите «Flame Sensor».
  2. Перейдите в «Manifest» и нажмите «+ New Version».
  3. Введите onFire как Field Name и выберите Boolean как Data Type.
  4. Нажмите «Save» и затем «Next: Actions».
  5. Пропустите Actions для этого туториала и нажмите «Save New Manifest».

Простой Manifest автоматически утверждается. Не публикуйте этот тип устройства, так как он предназначен исключительно для учебных целей.

Наконец, подключите новое устройство Flame Sensor через User Portal:

  1. Войдите в SAMI User Portal.
  2. На дашборде нажмите для подключения нового устройства.
  3. Выберите тип устройства «Flame Sensor», который вы только что создали.
  4. Нажмите «Connect Device…». Вы вернетесь на дашборд.
  5. Нажмите иконку настроек добавленного устройства. Во всплывающем окне выберите «GENERATE DEVICE TOKEN…».
  6. Скопируйте device ID и device token — они понадобятся в коде.

Шаг 2: Настройка Arduino

Подключите ИК-датчик пламени к Arduino, как показано на диаграмме выше. Затем загрузите следующий скетч (read_flame_sensor.ino) через Arduino IDE. Скетч считывает датчик каждые 5 секунд (настраиваемо) и отправляет цифровое значение в последовательный порт. В SAMI «0» означает обнаружен огонь; «1» — нет огня.

/* read_flame_sensor.ino */
// Задержка между чтениями
const int delayBetweenReads = 5000; // 5 секунд
// Пин цифрового входа датчика пламени
const int flameDigitalPinIn = 2;
void setup() {
    // Инициализация последовательной связи на 9600 бод
    Serial.begin(9600);
    pinMode(flameDigitalPinIn, INPUT);
}
void loop() {
    // HIGH (1) = нет огня, LOW (0) = огонь обнаружен
    int flameDigitalReading = digitalRead(flameDigitalPinIn);
    Serial.println(String(flameDigitalReading));
    delay(delayBetweenReads);
}

Шаг 3: Настройка Raspberry Pi

Подключите Raspberry Pi к монитору, мыши и клавиатуре. Убедитесь, что у него есть рабочее Ethernet или Wi‑Fi подключение и ОС обновлена:

  1. $ sudo apt-get update
  2. $ sudo apt-get upgrade

Если Node.js еще не установлен, установите ARM-совместимую версию, затем добавьте необходимые пакеты через npm:

  1. $ npm install serialport
  2. $ npm install ws

Подключите последовательный порт Arduino к USB-порту на Raspberry Pi.

Скачайте Node.js-скрипт (send_data_to_sami.js) и замените placeholder-значения для device_id и device_token на скопированные ранее учетные данные.

/* send_data_to_sami.js */
var webSocketUrl = "wss://api.samsungsami.io/v1.1/websocket?ack=true";
var device_id = "YOUR_DEVICE_ID";
var device_token = "YOUR_DEVICE_TOKEN";
var isWebSocketReady = false;
var ws = null;
var serialport = require("serialport");
var SerialPort = serialport.SerialPort;
var sp = new SerialPort("/dev/ttyACM0", {
    baudrate: 9600,
    parser: serialport.parsers.readline("\n")
});
var WebSocket = require('ws');

/** * Получение текущего времени в миллисекундах */
function getTimeMillis(){
    return parseInt(Date.now().toString());
}

// Установка WebSocket-соединения и регистрация устройства
ws = new WebSocket(webSocketUrl, {
    headers: {
        "Authorization": `Bearer ${device_token}`
    }
});
ws.on("open", () => {
    isWebSocketReady = true;
    register();
});
function register() {
    var registerMsg = {
        "topic": "sami/device/register",
        "data": {
            "deviceId": device_id
        }
    };
    ws.send(JSON.stringify(registerMsg));
}
sp.on("data", (data) => {
    if (isWebSocketReady) {
        var message = {
            "topic": "sami/device/telemetry",
            "data": {
                "onFire": data.trim() === "0"
            }
        };
        ws.send(JSON.stringify(message));
    }
});

После запуска скрипта ваши показания датчика пламени будут стримиться в SAMI в реальном времени.

Для более подробной информации обратитесь к полному туториалу: Make a fire detector in minutes with Samsung SAMIIO, Arduino UNO and Raspberry Pi.

Производственный процесс

  1. Создание бюджетного детектора плача ребенка на Raspberry Pi — DIY-руководство
  2. Создайте автоматизированную аэропоническую систему с Raspberry Pi и датчиком влажности
  3. Создание робота на Raspberry Pi и Python: полное руководство
  4. Создание интернет-управляемого видеostreaming-робота на Arduino и Raspberry Pi
  5. Часы реального времени на Arduino с расчётом времени намаза
  6. Управление Roomba Create 2 через Arduino и Android: пошаговое руководство
  7. Вывод изображений на 1.17-дюймовый TFT LCD с Arduino UNO
  8. Точное управление сервоприводом через MPU6050 (Arduino, SG90, MG996R)
  9. Модуль GPS u-blox LEA-6H 02: Интеграция с Arduino и Python
  10. Освоение распознавания и синтеза речи на Arduino Due