В тази статия ще разгледаме PicoIP и LM35: Измерване на температура и управление на реле с Shell скрипт. Скриптът ще управлява реле на базата на измерената температура. Този подход е подходящ за проекти, които използват Bash за автоматизация и управление на хардуер.
Необходими компоненти
- LM35: Аналогов температурен сензор, който генерира напрежение, пропорционално на измерената температура. За да свържете правило сензора към PicoIP, ще ви трябва пин диаграмата (pinout). Нея както и допълнителна информация може да намерите на нашите страници: PicoIP v1.2 и PicoIP v2.
- PicoIP: Устройство за дистанционно управление и мониторинг, което позволява четене на аналогови сигнали и управление на цифрови изходи. Тук ще използваме платформата: PicoIP релеен борд със седем ADC/АЦП входа.
- Shell (Bash): Скриптов език, широко използван за автоматизация на задачи в Unix-базирани системи. Ще използваме разработената от нас Shell библиотека за управление на PicoIP. Може да прочетете и да я намерите на нашата страница: Управление на PicoIP с помощта на SNMP и Shell скриптове.
Shell скрипт за измерване на температура и управление на реле
По-долу е даден Shell скрипт, който измерва температурата с LM35 и управлява реле, базирано на тази температура.
#!/bin/bash
source PicoIP-SNMP_v2.sh # Зареждане на библиотеката за работа с PicoIP
ip=192.168.100.9 # IP адрес на PicoIP устройството
while true
do
val=$(analogRead $ip 3) # Четене на аналоговата стойност от сензора LM35
# Преобразуване на аналоговата стойност в температура (градуси Целзий)
val=$(echo "($val * 3.3 / 1023) * 100" | bc -l)
val=${val:0:5} # Отрязване на резултата до два знака след десетичната запетая
echo "lm35 = " $val "*C" # Отпечатване на измерената температура
# Управление на релето на базата на температурата
if (( $(echo "$val > 28.5" | bc -l) ))
then
digitalWrite $ip 1 8 1 # Включване на релето, ако температурата е над 28.5°C
echo "ON"
else
digitalWrite $ip 1 8 0 # Изключване на релето, ако температурата е 28.5°C или по-ниска
echo "OFF"
fi
sleep 0.5 # Изчакване за 0.5 секунди преди следващото измерване
done
Как работи скриптът?
- Четене на данни от LM35: Сензорът LM35 е свързан към аналогов вход на PicoIP устройството. Скриптът използва функцията analogRead, за да прочете аналоговата стойност, която представлява напрежението, генерирано от LM35.
- Преобразуване на аналоговата стойност в температура: Аналоговата стойност се преобразува в температура по формулата:
Температура = (( аналогова стойност * 3.3 ) / 1023 ) * 100
Тази формула първо конвертира стойността във волтове, а след това я преобразува в градуси Целзий. След това резултатът се отрязва до два знака след десетичната запетая. - Управление на реле: Ако измерената температура е над 28.5°C, скриптът включва релето чрез функцията digitalWrite. Ако температурата е под 28.5°C, релето се изключва.
- Отпечатване на резултата: Скриптът отпечатва текущата температура и състоянието на релето на конзолата за всяка итерация.
Видео от на скрипта от Visual Studio
Заключение
Този Shell скрипт предоставя лесен начин за мониторинг на температурата с помощта на сензора LM35 и устройството PicoIP. Той автоматично включва и изключва реле в зависимост от измерените температурни стойности, което го прави подходящ за различни проекти за автоматизация и контрол на околната среда. С този скрипт можете лесно да интегрирате температурен контрол в своите Bash скриптове и да управлявате хардуерни устройства на база на температурата.