PicoIP и LM35: Измерване на температура и управление на реле с Shell скрипт

PicoIP и LM35 Измерване на температура и управление на реле с Shell скрипт

В тази статия ще разгледаме 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

Как работи скриптът?

  1. Четене на данни от LM35: Сензорът LM35 е свързан към аналогов вход на PicoIP устройството. Скриптът използва функцията analogRead, за да прочете аналоговата стойност, която представлява напрежението, генерирано от LM35.
  2. Преобразуване на аналоговата стойност в температура: Аналоговата стойност се преобразува в температура по формулата:
    Температура = (( аналогова стойност * 3.3 ) / 1023 ) * 100
    Тази формула първо конвертира стойността във волтове, а след това я преобразува в градуси Целзий. След това резултатът се отрязва до два знака след десетичната запетая.
  3. Управление на реле: Ако измерената температура е над 28.5°C, скриптът включва релето чрез функцията digitalWrite. Ако температурата е под 28.5°C, релето се изключва.
  4. Отпечатване на резултата: Скриптът отпечатва текущата температура и състоянието на релето на конзолата за всяка итерация.

Видео от на скрипта от Visual Studio

Заключение

Този Shell скрипт предоставя лесен начин за мониторинг на температурата с помощта на сензора LM35 и устройството PicoIP. Той автоматично включва и изключва реле в зависимост от измерените температурни стойности, което го прави подходящ за различни проекти за автоматизация и контрол на околната среда. С този скрипт можете лесно да интегрирате температурен контрол в своите Bash скриптове и да управлявате хардуерни устройства на база на температурата.