1. Введение
В данной работе представлена система сенсорной сети мониторинга размыва морского трубопровода, основанная на активной термометрии. Поскольку термокабели излучают тепло, распределенные цифровые датчики температуры DS18B20 записывают информацию о температуре с течением времени. Воздействие, вызванное размывом, и свободный натяг можно определить путем анализа температурных кривых. Открытие трубопровода и свободный пролет дают общую информацию о развитии размыва трубопровода в зависимости от температуры. Анализ значений разности выявляет изменяющиеся модели поведения теплопередачи для линейного источника тепла в сценариях отложений и воды. Предлагаемая сенсорная сеть продемонстрировала значительные преимущества по сравнению с традиционным методом мониторинга размыва трубопровода, такие как низкая стоимость, высокая точность и гибкая конструкция. Он обеспечивает многообещающий подход к мониторингу размыва морского трубопровода, который особенно подходит для прибрежной среды.
2. Фон
В этом руководстве мы создаем систему мониторинга размыва на основе технологии цифрового зондирования DS18B20, которая предназначена для прибрежной среды. Когда происходит размыв трубопровода, верхняя поверхность трубопровода сначала подвергается воздействию потока воды, и по мере продолжения размыва трубопровод освобождается. Для наблюдения за общим развитием размыва трубопровода термокабели укладывают как на верхнюю, так и на нижнюю поверхность трубопровода. Один, расположенный на верхней поверхности, способен обнаруживать условия воздействия на трубопровод, тогда как нижний на поверхности предоставляет информацию о свободном пролете.
Для измерения температуры в данном исследовании использовался цифровой датчик температуры DS18B20. DS18B20s (5 мм Ш × 30 мм Д) имели широкий диапазон рабочих температур от −50°C до 125°C и точность 0,1°C. Температуры измерялись почти каждые 10 с. Каждый термокабель мог использовать шестнадцать DS18B20, а расстояние между ними составляло один метр.
В этом руководстве показано, как можно смоделировать необычное поведение с помощью Raspberry Pi с подключениями GPIO к датчикам DS18B20. Модель обнаружения аномалий была применена для включения красного света при обнаружении аномального поведения. Пожалуйста, посетите мой код Github, чтобы загрузить исходный код:
Части
В этой схеме вы будете подключать датчик температуры к разъему GPIO вашего Raspberry Pi и использовать Python для измерения температуры в том месте, где вы поместите датчик. Датчик, поставляемый в комплекте, находится на конце длинного провода и является водонепроницаемым, что позволит вам легко измерять температуру в комнате, за окном или даже в чашке с водой. Помните, что электроника и вода плохо сочетаются, поэтому держите воду подальше от остальной части комплекта и Raspberry Pi!
Прежде чем строить схему, посмотрите на дополнительные детали, которые вы собираетесь использовать.
Датчик температуры
Датчик, поставляемый в комплекте, представляет собой «Dallas DS18B20», запаянный в металлическую трубку и удлинённый проводами, и выглядит как на фото выше. Датчик внутри трубки выглядит как устройство на картинке выше.
Датчик имеет последовательный интерфейс 1-Wire, что означает, что он отправляет цифровые сообщения через свой выходной контакт на Raspberry Pi. Pi читает эти сообщения и помещает их в «файл устройства», который похож на текстовый файл. Вы можете читать этот файл так же, как и любой другой текстовый файл, хотя и не можете его редактировать.
Когда Raspberry Pi получит хорошее сообщение от датчика, в «файле устройства» появятся две строки. Первый будет заканчиваться на «YES», а второй — на «t=xxxxx», где «xxxxx» — температура в 1/1000 градуса Цельсия. Например: a3 01 4b 46 7f ff 0e 10 d8 : crc=d8 YES a3 01 4b 46 7f ff 0e 10 d8 t=32768
Это означает, что температура составляет 32,8°C.
Код на этом листе использует дополнительную библиотеку Python, которая называется W1ThermSensor. Инструкции по установке библиотеки находятся на рабочем листе 1.
Датчик имеет три провода (или ножки); черный — «земля» (GND), красный — источник питания (3,3 В), а белый или желтый — выход датчика. Вкрутите их в прилагаемую клеммную колодку в порядке (слева направо) красный, желтый, черный.
Резистор
В этой схеме используется дополнительный резистор номиналом 4,7 кОм (или 4700 Ом). Вы можете определить резистор 4,7 кОм по цветным полосам вдоль корпуса. На резисторе будет четыре или пять цветных полос:
• При наличии четырех полос цвета будут желтыми, фиолетовыми, красными и золотыми.
• При наличии пяти полос цвета будут желтыми, фиолетовыми, черными, коричневыми и коричневыми.
Резистор используется как «подтягивающий» для линии передачи данных и требуется для обеспечения стабильной передачи данных путем подачи питания на сигнальную цепь.
Построение цепи
Перед построением этой схемы вы должны выключить Raspberry Pi.
Вы должны оставить схему светодиода и зуммера подключенными к макетной плате и добавить эту новую схему на другой конец.
Схема будет использовать другой контакт «земли» (GND), который будет действовать как «отрицательный» или 0-вольтовый конец батареи. Один из контактов с маркировкой 3v3 будет обеспечивать питание датчика. 3v3 означает, что это блок питания на 3,3 вольта.
Используйте две перемычки типа «мама-папа», чтобы соединить контакты GND и 3v3 GPIO с двумя нижними рядами отверстий на макетной плате. Совместите цвета, отмеченные на макетной плате — красный и синий — с перемычками от Pi — подключите 3 на 3 к красному ряду, а GND к синему ряду. Эти две «рельсы» (как их еще называют) обеспечивают заземление и питание всей макетной платы.
Подсоедините датчик температуры, как показано, с помощью перемычки «папа/папа», идущей к нижней «рейке», прикрепленной к земле Pi (GND). Подключите красный провод с помощью перемычки к «рейке» 3 на 3 внизу. Это подает питание на датчик температуры.
Если у вас возникли проблемы с вдавливанием проводов в отверстия макетной платы, используйте ножку резистора или перемычки, чтобы направить их на место.
Желтый провод входит в столбец с одним концом резистора 4,7 кОм и другой перемычкой (показанной желтым), которая идет к контакту 4 GPIO. Программа будет считывать температуру с этого контакта.
Другой конец резистора следует вставить в другую колонку макетной платы, между красным проводом датчика температуры и перемычкой, подключенной к «рейке» 3v3.
Шаг 1: Используемые инструменты
Главные части:
• Ваш малиновый пи
• Макет на 400 точек
• Датчик температуры (DS18B20)
• 1 резистор 4,7 кОм
• 3 перемычки «папа-мама»
- 3 перемычки «папа-папа»
Шаг 2: Установите температурный диапазон
Измените код, чтобы загорались светодиоды и звучал зуммер при следующих условиях:
1. Загорается синий светодиод, когда температура близка к 0°C — точность датчика составляет 0,1°C, поэтому загорается синий светодиод, когда температура равна или ниже 0,1°C.
2. Зажгите синий светодиод, когда температура ниже 28°C.
3. Зажгите красный светодиод и подайте звуковой сигнал, когда температура превысит 28°C.
Если вам нужно включить его, нажмите [OK] и перезагрузите Pi. Проведите простой тест, чтобы убедиться, что все в порядке:
Наконец-то пришло время подключить макетную плату к вашему Pi! Вам нужно будет подключить три соединительных провода от макетной платы к контактам, которые торчат вдоль верхней части вашего Pi.
Это совпадет со схемой на шаге 1. Для каждого из трех проводов, которые мы пометили цветом, вам нужно будет подключить «гнездовой» конец (тот, с отверстием) вашего пускового провода. на булавку на Pi с мужским (да, заостренным) концом в макетную плату.
[Совет начинающим]Знать, какой вывод на Pi, поначалу немного сбивает с толку. Вот схема в помощь. Вокруг штыревой «головки» на плате нарисована белая линия, в одном из четырех углов — вырез. Эта выемка указывает, в каком направлении следует читать номера контактов.
Перед этим я рекомендую вам выключить Raspberry Pi, чтобы случайно не перепутать провода.
- Красный соединительный провод: подключите его от красной (положительной +) шины питания макетной платы к контакту 1 на вашем Pi (см. фотографии и диаграмму на рис. 4). (Ток 3,3 В)
- Черный соединительный провод: подключите его от сине-черной (минусовой) шины питания макетной платы к контакту 9 на вашем Pi. (GND)
- Желтый соединительный провод: подключите его от шины среднего контакта термометра к контакту 7 на Pi. (GPIO4)
Шаги 1 и 2. Подключите шины питания к заземлению вашего Pi и источнику питания 3,3 В.
Шаг 3 — подключите провод данных вашего термометра (средний контакт)
Теперь ваш Pi подключен и готов к работе! Следующий шаг — запустить некоторый код, чтобы считать температуру с вашего Pi и сделать ее доступной через Интернет.
Шаг 4: Код для чтения вашего датчика температуры
Сначала загрузите код с GitHub или скопируйте приведенный ниже пакет: anomaly_detection.py и сохраните его в созданной директории.
# Import Libraries import os import glob import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) # Initialize the GPIO Pins GPIO.setup(24, GPIO.OUT) #Blue Light GPIO.setup(18, GPIO.OUT) #RED Light GPIO.setup(22, GPIO.OUT) #buzzer os.system("modprobe w1-gpio") # Turns on the GPIO module os.system("modprobe w1-therm") # Turns on the Temperature module # Find the correct Device file that holds the temperature data base_dir = "/sys/bus/w1/devices/" device_folder = glob.glob(base_dir + "28*")[0] device_file = device_folder + "/w1_slave" # A function that reads the sensors data def read_temp_raw(): f = open(device_file, "r") # opens the temperature device file lines = f.readlines() # Returns the text f.close() return lines # Convert the value of the sensor into a temperature def read_temp(): lines = read_temp_raw() # Read the temperature "device file" # While the first line does not contain "YES", wait for 0.2s # and then read the device file again. while lines[0].strip()[-3:] != "YES": time.sleep(0.2) lines = read_temp_raw() # Look for the position of the "=" in the second line of the evice file. equals_pos = lines[1].find("t=") # If the "=" is found, convert the rest of the line after the # "=" into degrees Celsius, then degrees Fahrenheit if equals_pos != -1: temp_string = lines[1][equals_pos+2:] temp_c = float(temp_string) / 1000.0 temp_f = temp_c * 9.0/ 5.0 + 32.0 return temp_c, temp_f # Print out the temperature until the program is stopped while True: temp_c, tempf = read_temp() print(temp_c) time.sleep(1) if temp_c > 28.0: print ("above 28") GPIO.output(18, GPIO.HIGH) # Red Lights on GPIO.output(22, GPIO.HIGH) # Buzzer On time.sleep(0.5) GPIO.output(18, GPIO.LOW) GPIO.output(22, GPIO.LOW) else: print ("below 28") GPIO.output(24, GPIO.HIGH) # Blue Lights On time.sleep(0.5) GPIO.output(24, GPIO.LOW) GPIO.cleanup()
Шаг 5: Заключение
Алгоритм K-средних может быть эффективен в случае свободного поиска. Хотя это простой тест. На практике может быть несколько сотен или даже несколько тысяч точек замера температуры. К точкам отбора проб, расположенным на близком расстоянии от центра каждой группы, следует относиться с особым вниманием. Используя алгоритм кластеризации K-средних, легко реализовать автоматическое определение условий размыва морского трубопровода.
Как всегда, я надеюсь, что этот проект поможет другим найти свой путь в захватывающий мир электроники!
Для получения подробной информации и окончательного кода посетите мой репозиторий GitHub:
Шаг 6: Ссылки
Датчики можно подключить параллельно к Raspberry Pi, используя контакты питания GPIO4, Ground и 3V3, с резистором 4,7 кОм между GPIO4 и питанием 3V3 (см. рис. ниже).
Датчики DS18B20 можно подключать с помощью перемычек, но рекомендуется припаивать датчики к проводам для длительного использования.
После загрузки в Raspberry Pi (здесь, в каталоге «Документы») из интерфейса командной строки Raspberry Pi (например, через SSH-соединение) можно создать файл bash для автоматического запуска сценария при каждом запуске компьютера с использованием задание CRON. Это особенно важно в
в случае сбоя питания или при установке системы мониторинга: мониторинг запускается автоматически, также можно отслеживать сбой питания. Для автоматического запуска системы мониторинга используется отдельный bash-скрипт (Дополнительный материал S2, «launcher.sh»), поскольку он позволяет поддерживать разные версии Python-скрипта без необходимости изменения задания CRON.
nano launcher.sh # создание и редактирование файла bash
chmod 755 launcher.sh
Каталог «logs» был создан в каталоге «Documents» для журналов.
файлы. Работа CRON была
создан с помощью «sudo crontab -e»:
@reboot sh /home/pi/Documents/launcher.sh ›/home/pi/Documents/logs/launcher_log 2 › &1
Настройка системы оповещения с отправкой сообщений по электронной почте. Простая система оповещения, активируемая температурой выше или ниже порогового значения, не может быть использована в случае с помещением для выращивания, так как при открытии ожидаются изменения температуры, которые вызовут срабатывание оповещения. блок выращивания для манипуляций с насекомыми. Таким образом
был разработан более настраиваемый порог, при котором оповещение срабатывает в случае, если средняя температура за определенный период времени достигает порога. Для каждого датчика можно использовать разные минимальные и максимальные пороговые значения, как в представленном здесь случае.
Панель мониторинга. Если информация о мониторинге температуры должна быть пересмотрена несколькими людьми с графическими визуализациями, рекомендуется работать с копиями исходных файлов на сервере, а не с самим Raspberry Pi. В представленном здесь случае информационную панель в HTML можно создавать каждый день в 7:30 утра на сервере.
В этой статье о методе представлена простая, но мощная система мониторинга температуры по низкой цене и с высокой эффективностью. Он основан на компьютере Raspberry Pi и датчиках температуры DS18B20.