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.