цифровая электроника
вычислительная техника
встраиваемые системы

 
» » Информационная система регистрации параметров окружающей среды и обнаружения движения с оповещением по Gmail на основе Raspberry Pi Zero W



Информационная система регистрации параметров окружающей среды и обнаружения движения с оповещением по Gmail на основе Raspberry Pi Zero W

Автор: Mike(admin) от 3-11-2021, 03:55

Порой было бы удобно находясь в дали от дома получать электронные письма с условиями окружающей среды в нем, в том числе и информацию о возможных передвижениях с целью обеспечения безопасности жилища. Данный проект мы и реализуем с помощью Raspberry Pi Zero W, датчика температуры и влажности DHT11, а также ультразвукового датчика HC-SR04.


Информационная система регистрации параметров окружающей среды и обнаружения движения с оповещением по Gmail на основе Raspberry Pi Zero W

DHT11 представляет собой 4-контактный датчик температуры и влажности (один контакт не используется), способный измерять относительную влажность 20–90% и температуру от 0 до 50 °C. Датчик может работать при напряжении от 3 до 5,5 В постоянного тока и обменивается данными с использованием собственного проприетарного протокола OneWire. Этот протокол требует очень точного времени для получения данных от датчика. Низкий и высокий уровни кодируются на проводе по времени. Общее время считывания составляет не более 23,4 мс. Это включает задержку 18 мс, необходимую для начала передачи данных, и окно до 5,4 мс для данных. Отдельные сигналы могут быть от 20 мкс до 80 мкс.


DHT11

Ультразвуковой датчик HC-SR04 использует механизм сонара для определения расстояния до объекта, как это делают летучие мыши. Он предлагает отличное бесконтактное определение дальности с высокой точностью и стабильными показаниями в простом в использовании корпусе.


HC-SR04

Схема подключения компонентов приведена далее.


Информационная система регистрации параметров окружающей среды и обнаружения движения с оповещением по Gmail на основе Raspberry Pi Zero W

Далее приведена распиновка разъема GPIO на Raspberry Pi, которая может помочь вам в подключении датчиков.


Информационная система регистрации параметров окружающей среды и обнаружения движения с оповещением по Gmail на основе Raspberry Pi Zero W

Для управления датчиком мы будем использовать библиотеку Python Adafruit DHT11. Чтобы установить ее, мы клонируем репозиторий git. Войдите в терминал и выполните следующую команду в папке по вашему выбору


git clone https://github.com/adafruit/Adafruit_Python_DHT.git

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


cd Adafruit_Python_DHT

Установите зависимости библиотеки с помощью следующей команды:


sudo apt-get install build-essential python-dev

Затем для установки библиотеки выполните следующую команду:


sudo python setup.py install

Код написан на языке Python и имеет следующий вид:



#импортируем библиотеку RPi.GPIO с именем GPIO 
import RPi.GPIO as GPIO
#импортируем модуль сна из библиотеки времени 
import time
#импортируем клиент протокола SMTP
import smtplib
#Для управления датчиком мы будем использовать библиотеку Python Adafruit DHT11
import Adafruit_DHT
#Параметр GPIO.BCM означает, что вы обращаетесь к контактам по номеру "канал СнК Broadcom"
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
#введем тип используемого датчика 
type=Adafruit_DHT.DHT11
#объявим контакты, используемый датчиком, в форме GPIO
dht11=25
trig=23
echo=24
#установим контакт триггера как OUTPUT, а эхо как INPUT 
GPIO.setup(trig,GPIO.OUT)
GPIO.setup(echo,GPIO.IN)
#установим датчик как INPUT
GPIO.setup(dht11,GPIO.IN)
#создаем один объект SMTP
server=smtplib.SMTP('smtp.gmail.com',587)
#запустить сервер
server.starttls()
#данные для входа в вашу учетную запись
server.login("username@gmail.com","password")

def calculate_distance():
  #установим триггер HIGH
	GPIO.output(trig,GPIO.HIGH)
  #спать 0,00001 с и установить триггер в LOW
	time.sleep(0.00001)
	GPIO.output(trig,GPIO.LOW)
  #сохранить время начала и окончания
	start=time.time()
	stop=time.time()
  #изменим время начала так, чтобы оно было последним, пока эхо не станет HIGH
	while GPIO.input(echo)==0:
		start=time.time()
  #изменим время остановки, чтобы оно было последним, пока эхо не станет LOW
	while GPIO.input(echo)==1:
		stop=time.time()
  #получим длительность вывода эха как HIGH
	duration=stop-start
  #рассчитаем расстояние
	distance=34300/2*duration
  #вернем расстояние
	return distance
    
#начинаем цикл, который никогда не заканчивается
try:
	while True:
    #считываем
		humidity, temperature=Adafruit_DHT.read_retry(type,dht11) 
    #мы сохраним значения, только если они не равны нулю 
		if humidity is not None and temperature is not None:
    #msg - это сообщение, которое будет отправлено
    #msg содержит значения температуры и влажности
            		msg="Temperature = {:.1f} , Humidity = {:.1f}" .format(temperature, humidity)
		if calculate_distance() <50:
      #отправить сообщение   
			server.sendmail("username@gmail.com","receiver@gmail.com",msg)
			print("E-mail sent !")
		time.sleep(1)
except KeyboardInterrupt:
	pass
#закрыть сервер   
server.quit()
##очистить все используемые порты
GPIO.cleanup()

Чтобы запустить код, введите в командной строке следующую команду:


python project.py

Если ультразвуковой датчик обнаружит движение, будет выведено «E-mail sent», и мы получим электронное письмо со всей информацией.


Информационная система регистрации параметров окружающей среды и обнаружения движения с оповещением по Gmail на основе Raspberry Pi Zero W

Информационная система регистрации параметров окружающей среды и обнаружения движения с оповещением по Gmail на основе Raspberry Pi Zero W



© digitrode.ru


Теги: Raspberry Pi Zero




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий