CoroFence - Тепловой детектор🖖
Компоненты и расходные материалы
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
Приложения и онлайн-сервисы
![]() |
| |||
![]() |
|
Об этом проекте
Текущий глобальный пандемический кризис
Всемирная организация здравоохранения (ВОЗ) рекомендует для предотвращения распространения инфекции «регулярное мытье рук, прикрытие рта и носа при кашле и чихании, тщательное приготовление мяса и яиц. Избегайте тесного контакта с кем-либо, у кого проявляются симптомы респираторного заболевания, такие как кашель и чихание».
Во время путешествий по аэропортам стало обычной практикой пользоваться тепловизорами для обнаружения возможных зараженных путешественников.
Самодельный тепловой извещатель
Хотя в текущей ситуации перед нами стоит задача продолжать нашу работу удаленно в качестве защитного слоя, мы должны избегать контактов с другими, пока ситуация не будет под контролем.
Основная идея состоит в том, чтобы создать тепловизионный детектор, который можно было бы легко развернуть за пределами вашего дома / лаборатории / офиса / шаттла ... чтобы вы могли быть защищены в своей безопасной зоне.
Входные датчики
- Сетчатый глаз
"В отличие от обычных термодатчиков, которые измеряют температуру только определенной точки контакта, Grid-EYE, основанный на технологии MEMS Panasonic, может измерять температуру всей указанной области без какого-либо контакта ; Другими словами, это «бесконтактный датчик с массивом термобатарей». 64 пикселя обеспечивают точное измерение температуры при угле обзора 60 °, обеспечиваемом силиконовой линзой. Grid-EYE использует интерфейс связи I²C, позволяющий измерять температуру со скоростью 1 или 10 кадров / сек. Также доступна функция прерывания. "

- Размеры:11,6 x 4,3 x 8,0 мм (Д x В x Ш)
- Рабочее напряжение:3,3 В или 5,0 В (в зависимости от P / N).
- Диапазон температур объекта измерения:от -20 ° C до 100 ° C (в зависимости от P / N)
- Поле зрения (FoV):60 °.
- Количество пикселей:64 (8 по вертикали x 8 по горизонтали)
- Внешний интерфейс:I²C (быстрый режим)
- Частота кадров:10 кадров / сек или 1 кадр / сек.
Что делает этот датчик идеальным для обнаружения людей с расстояния 1,5 метра и позволяет определять цель на расстоянии 5/7 метров.
- PIR
Нам также нужен триггер, потому что мы хотим также активировать тепловизионную камеру при обнаружении движения. Поэтому датчик PIR - идеальный выбор.
«Датчик PIR обнаруживает человека, перемещающегося на расстоянии примерно 10 м от датчика. Это среднее значение, так как фактический диапазон обнаружения составляет от 5 до 12 м. PIR в основном состоит из пироэлектрического датчика, который может определять уровни инфракрасного излучения. . Для множества важных проектов или предметов, которые необходимо обнаружить, когда человек покинул или вошел в зону. Датчики PIR невероятны, они плоские и требуют минимальных усилий, имеют широкий диапазон линз и просты в взаимодействии. "

Сложите все вместе, как показано ниже:

По завершении подключения (см. Схему ниже) подготовьте коробку для входных датчиков следующим образом:

Визуальный и звуковой выход
- RGB LEED
Мы хотели бы получить мгновенную обратную связь о температуре с помощью базового светодиода RGB, который будет запрограммирован на отображение некоторых цветов, как мы получаем в тепловизионной камере.
- Зуммер
Когда температура превышает нормальные 37 ° C, мы включаем звуковой сигнал, чтобы уведомить вас о возможных опасностях.


Итоговые тесты:
Пока температура нормальная и обнаружено присутствие, горит зеленый свет

// можно установить разные цвета
if (tempC <16) {
setColor (0, 0, 255); // синий
} else if (tempC <15) {
setColor (80, 0, 80); // голубой
} else if (tempC <30) {
setColor (0, 255, 255); // цвет морской волны
} else if (tempC <36) {
setColor (0, 255, 0); // зеленый
} else if (tempC <38) {
setColor (255, 255, 0); // желтый
} else if (tempC <39) {
setColor (255, 20, 20); // пурпурный
}
Чтобы включить звуковой сигнал и красный цвет, проверьте его должным образом, используя паровой утюг для одежды, как случайно обнаружилось позже, когда вы выполняли какие-то домашние дела.

Живите долго и процветайте

В качестве альтернативы вы можете просмотреть температуру в интерфейсе NodeJS и получить данные от Arduino при последовательном подключении с помощью этого терминального приложения.
В дальнейших планах - расширить интеграцию данных с платформой das и начать моделирование.
Следите за прямой трансляцией на @dasData
https://dasdata.co/camera/

Надеюсь, вы будете в безопасности, где бы вы ни находились в этот период в Галактике!
Код
- коронафанс
Coronafence C / C ++
#include#include GridEYE grideye; String heatData; int ledState; unsigned long meetime; uint16_t секунд =3142; // max ==65535int bluePin =8; int greenPin =9; int redPin =10; int buzzPin =11; // выбираем вывод для LEDint inputPin =12; // выбираем входной контакт (для датчика PIR) int pirState =LOW; // мы начинаем, предполагая, что движения не обнаружено int val =0; // переменная для чтения статуса вывода float tempC; void setup () {pinMode (redPin, ВЫХОД); pinMode (greenPin, ВЫХОД); pinMode (bluePin, ВЫХОД); pinMode (buzzPin, ВЫХОД); // объявляем светодиод как выход pinMode (inputPin, INPUT); // объявляем датчик как вход // Запускаем нужный объект I2C Wire.begin (); // Библиотека предполагает "Wire" для I2C, но вы можете передать что-нибудь еще с помощью begin (), если вам нравится grideye.begin (); Serial.begin (115200); } void loop () {char receiveVal; если (Serial.available ()> 0) {receiveVal =Serial.read (); если (получитьVal =='1') {ledState =1; } else ledState =0; } val =digitalRead (inputPin); // считываем входное значение if (val ==HIGH) {// проверяем, является ли вход HIGH // digitalWrite (ledPin, HIGH); // включаем светодиод if (pirState ==LOW) {meetime =millis (); Serial.println («Обнаружено движение!»); // Мы хотим печатать только при изменении вывода, а не состояние pirState =HIGH; getHeatmap (); если (tempC <16) {setColor (0, 0, 255); // синий} else if (tempC <16) {setColor (80, 0, 80); // голубой} else if (tempC <20) {setColor (0, 255, 255); // цвет морской волны} else if (tempC <24) {setColor (0, 255, 0); // зеленый} else if (tempC <28) {setColor (255, 255, 0); // желтый} else if (tempC <37) {setColor (255, 20, 20); // пурпурный} // считываем байты, поступающие от клиента:// char thisChar =client.read (); // возвращаем байты обратно клиенту:// char msg [10] =""; Serial.println (heatData); задержка (1500); }} else {// digitalWrite (ledPin, LOW); // выключаем светодиод if (pirState ==HIGH) {// мы только что отключили noTone (buzzPin); // Остановить звук ... Serial.println ("Движение закончилось!"); setColor (0, 0, 0); // нет meetime =0; // Мы хотим печатать только при изменении вывода, а не состояние pirState =LOW; }}} void getHeatmap () {// Вывести значение температуры каждого пикселя в градусах Цельсия с плавающей запятой // через запятую heatData =""; float previousVal =0; for (unsigned char i =0; i <64; i ++) {if (previousVal> 37) {// мы только что включили Serial.println («Высокая температура!»); setColor (255, 0, 0); // красный тон (buzzPin, 1000); // Отправляем звуковой сигнал с частотой 1 кГц ...} tempC =grideye.getPixelTemperature (i); heatData + =tempC + String (","); previousVal =tempC; } // Заканчиваем каждый кадр переводом строки Serial.println (); // Даем время обработки для пережевывания} void setColor (int red, int green, int blue) {#ifdef COMMON_ANODE red =255 - red; green =255 - зеленый; blue =255 - синий; #endif analogWrite (redPin, красный); analogWrite (greenPin, зеленый); analogWrite (bluePin, синий); }
коронафанс
Код для Arduino IDE, Visual Studio 2019, NodeJS https://github.com/dasdata/coronafenceСхема

Производственный процесс
- Визитная карточка игры «Крестики-нолики»
- Многотемпературный датчик
- Управление паяльником DIY для 862D +
- MotionSense
- Пожарная безопасность 3D-принтера
- Датчик Интернета вещей с Arduino, Yaler и IFTTT
- Отталкивающая электромагнитная левитация Arduino
- Бот для захвата удаленного управления
- Регистратор данных с погодными шарами на базе Arduino
- ArduFarmBot - Часть 2:Удаленная станция и реализация Интернета вещей