Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Настоящий проект является окончательной частью проекта, посвященного использованию Интернета вещей в умном доме
Если проект завершен, он является частью окончательного предложения IoT, использующего интеллектуальный дом, который состоит из сенсоров и элементов, соединенных с DrangonBoard + Linker Mezzanine, а также в качестве приложения для использования в качестве ионного informações / dados das "coisas" serão salvados na cloud da AWS. Para uma primeira iteração com a DragonBoard e IoT como um todo, decidiu-se fazer um sistema de acendimento automático de luzes, com um sensor de luminosidade, uma chave liga / desliga para ativar um aparelho de ar-condicionado de ar-condicion -setada e um sensor deximidade que será instalado no portão de uma garagem, com a intenção de informar ao proprietário da casa se o portão encontra-se aberto ou fechado.
Шаг 1: Materias Necessários
- Поместите DragonBoard.
- 96Boards Linker Mezzanine
- Сенсор люминозидада (LDR), который является компаньоном Linker Mezzanine.
- Датчик температуры компаньона Linker Mezzanine.
- Botão touch que acompanha a Linker Mezzanine.
- Relé acompanha a Linker Mezzanine, utlizado para ligar o systema de A / C.
- Светодиодная компоновка Linker Mezzanine, которая представляет собой иллюминатор сервера.
- Instalação das bibliotecas citadas no passo 5.
Шаг 2: Сенсоры, Atuadores E Conexões
1. Мезонин линкера:
Слева необходимо построить мезонин на драконьей доске. Для получения дополнительной информации, справочная ссылка
2. Датчик люминосидады (LDR)
Датчик является частью мезонина Linker Mezzanine и подключен к входу ADC1. Технические детали:
3. Датчик температуры
Датчик является частью мезонина Linker Mezzanine и работает с подключенным ADC2. Технические детали:
4. Botão Touch
Датчик является частью Kit da Linker Mezzanine и работает с подключением к входу D1. Este botão irá ligar / desligar o sistema como um todo. O acesso a este botão é somente local. Техническая информация: https://linksprite.com/wiki/index.php5? Title = Touch_…
5. Реле
Он должен быть частью Kit da Linker Mezzanine и deverá ser conectado na entrada D2. Ele será utiizado para ligar / desligar o sistema de A / C. Para detalhes técnicos:
6. Светодиод
Светодиодный индикатор является частью комплекта Linker Mezzanine и установки, подключенной к входу D4. O LED представляет собой систему иллюминаторов ума каса, seja algum cômodo interno da casa ou externo, como a iluminação de um jardim. Для подключения установлен резистор 10 кОм в серии, чтобы он существовал для уменьшения и использования системы, которая используется в предыдущих проверенных испытаниях, в качестве аналоговых портов. Технические детали:
7. Магнитный датчик
Этот датчик является частью вашего мезонина Linker. Ele será usado em uma janela ou no portão de uma garagem para informar se a janela / garagem está aberta ou fechada. О датчике он соединен с формой на 2 человека (на фото, сделанном шаг за шагом), о датчике, который предназначен для его использования, является приблизительным, чтобы сенсор был изменен или установлен на датчике. Датчик не используется для текущего проекта N / A (normalmente aberto). Quando o ima não está próximo do sensor, o sensor reportará estado aberto. Quando o imã estiver próximo do sensor, o estado reportado será fechado.
Шаг 3: Aplicativo Para Controle Remoto
Применимо для использования в Ionic Framework, https://ionicframework.com/. Для этого необходимо загрузить и установить последнюю версию.
O aplicativo irá se comunicar (ler e atualizar os dados) com a cloud da AWS (AWS IoT- https://aws.amazon.com/iot/), que posteriormente será acessada pela placa dragonboard para atualização dos status dos sensores e atuadores.
- Sistema de Iluminação mostra o estado do sitema de iluminação, ligado ou desligado. Quando o nível de luminosidade baixar do valor configurado, как luzes se acenderão automaticamente. Quando atensidade de luz aumentar além do valor Definido, как luzes se apagarão.
- O botão A / C acionará o relé, que por sua vez acionará o sistema de A / C da casa. Também é Possível Definir o valor desejado da temperatura. Assim que a temperatura da casa estiver maior do que a temperatura de acionamento, o A / C será ligado e permanecerá ligado até a temperatura abaixar em 2 graus da tempreatura Definida. Por excemplo, iremos считает temperatura é de 23 graus. Quando a temperatura interior chegar a 24 graus, o A / C será ligado e permanecerá ligado até a temperatura chegar a 20 graus, desligando então. Depois o ciclo se Repetirá.
- Garagem informará a atual posição da garagem, se aberta ou fechada.
- Temperatura apenas informativa e mostra a temperatura do interior da casa.
- Luminosidade é apesas informativa e mostra o valor da luminosidade atual.
Переходите к другому архиву home.html и home.ts через приложение для общения в облаке AWS и настраивайте приложение.
Шаг 4. Криандо Ума "coisa" на AWS IoT
Для настройки IoT на AWS, после перехода к следующему этапу:
1) Создайте проект без AWS IoT по ссылке:
2) Нажмите «Создать вещь» и «Создать одну вещь». Назначьте проект и нажмите кнопку Next.
3) Na tela seguinte, нажмите em «Создать вещь без сертификата». В этом учебном пособии нет сертификатов, которые используются для практических заданий, и не используются рекомендуемые для использования сертификаты IoT.
4) Nesse momento, sua "coisa" já estará criada. Нажмите, чтобы не нажимать кнопку «Coisa», чтобы использовать его в качестве опций. Несса телепрограмма может быть использована для поиска и устранения неисправностей. Нет código em Python que será apresentado em breve, foram utlizados alguns destes tópicos. Здесь можно использовать «тень», чтобы получить информацию об отражении драконьей доски в облаке AWS.
Шаг 5: Программируйте Em Python
Как следует из библиотеки, необходимой для выполнения программы:
import spidevimport time import logging import json import argparse
из libsoc import gpio
from time import sleep from datetime import date, datetime from gpio_96boards import GPIO from AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTClient from AWSIoTPythonSDK. MQTTLib
Segue abaixo código Complete do programa:
import spidevimport time import logging import json import argparse
из libsoc import gpio
from time import sleep from datetime import date, datetime from gpio_96boards import GPIO from AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTClient from AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTShadowClient
GPIO_CS = GPIO.gpio_id ('GPIO_CS') # Аналоговый порт
КНОПКА = GPIO.gpio_id ('GPIO_A') RELE = GPIO.gpio_id ('GPIO_C') LED = GPIO.gpio_id ('GPIO_G')
контакты = ((GPIO_CS, 'выход'), (КНОПКА, 'in'), (RELE, 'out'), (LED, 'out'),)
def setdevices (deltaMessagePython):
System_Status = deltaMessagePython ['SystemStatus'] Rele_Status = deltaMessagePython ['AC'] Led_Status = deltaMessagePython ['SisIlumi']
##### AC
если Rele_Status == 1: gpio.digital_write (RELE, GPIO. HIGH)
если Rele_Status == 0:
gpio.digital_write (RELE, GPIO. LOW)
##### Sistema de Iluminacao
если Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH), если Led_Status == 0: gpio.digital_write (LED, GPIO. LOW)
def readadc (gpio):
gpio.digital_write (GPIO_CS, GPIO. HIGH)
time.sleep (0.0002) gpio.digital_write (GPIO_CS, GPIO. LOW) r = spi.xfer2 ([0x01, 0xA0, 0x00]) # ADC2 - Температура gpio.digital_write (GPIO_CS, GPIO. HIGH) adcout = (r [1] << 8) & 0b1100000000 adcout = adcout | (r [2] & 0xff) adc_temp = (adcout * 5.0 / 1023-0.5) * 100
gpio.digital_write (GPIO_CS, GPIO. HIGH)
time.sleep (0.0002) gpio.digital_write (GPIO_CS, GPIO. LOW) r = spi.xfer2 ([0x01, 0x80, 0x00]) # ADC1 - Яркость gpio.digital_write (GPIO_CS, GPIO. HIGH) adcoutldr = (r [1] << 8) & 0b1100000000 adcoutldr = adcoutldr | (r [2] & 0xff) adcoutldr = str (adcoutldr) now = datetime.utcnow () now_str = now.strftime ('% Y-% m-% dT% H:% M:% SZ') temperatura = "{:.2f} ". Format (adc_temp) payload_temp = '{" состояние ": {" желаемое ": {" Luminosidade ":' + adcoutldr + '," Temperatura ":' + temperatura + '}}}' myMQTTClient.publish ("$ aws / things / DBpyAWS1116 / shadow / update", payload_temp, 0) вернуть r
def desliga ():
gpio.digital_write (RELE, GPIO. LOW) gpio.digital_write (светодиод, GPIO. LOW)
def run (gpio):
system_status = 1
в то время как True:
time.sleep (2) button_value = gpio.digital_read (BUTTON) print ("----") time.sleep (0.25) if button_value == 1: if system_status == 0: system_status = 1 else: system_status = 0 desliga () если system_status == 1: value = readadc (gpio) print "SYSTEM_STATUS% d"% system_status time.sleep (3)
класс shadowCallbackContainer:
def _init _ (self, deviceShadowInstance): self.deviceShadowInstance = deviceShadowInstance
# Пользовательский обратный вызов Shadow
def customShadowCallback_Delta (self, payload, responseStatus, token): print ("Получено дельта-сообщение:") ### скрипт обновления полезной нагрузки payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["состояние"]) печать "DELTA MESSAGE% s"% deltaMessage ### Запрос на обновление сообщаемого состояния newPayload = '{"state": {"report":' + deltaMessage + '}}' deltaMessagePython = json.loads (deltaMessage) setdevices (deltaMessagePython)
spi = spidev. SpiDev ()
spi.open (0, 0) spi.max_speed_hz = 10000 spi.mode = 0b00 spi.bits_per_word = 8
####### Определение вещи
# Подключение на основе сертификата AWS IoT
myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / linaro, "/ home / linaro / shared / AWS /" SUA CHAVE "-private.pem.key", "/ home / linaro / shared / AWS /" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Бесконечный офлайн Публикация очереди myMQTTClient.configureDrainingFrequency (2) # Слив: 2 Гц myMQTTClient.configureConnectDisconnectTimeout (10) # 10 секунд myMQTTClient.configureMQTTOperationTimeoutTimeout (5) # 5 sec #connectlient. MyMQTTClient () coisajsb "," связанный ", 0)
########################
####### Определение тени
# Init AWSIoTMQTTShadowClient
myAWSIoTMQTTShadowClient = Нет myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2.amazonaws.com" / 8883 / root-2.amazonaws.com (/ AWSIoClient / root) myAWSDOWNWINDOWS / 8883 / root) myAWSiCAD / 8883 / / CA.crt "," / home / linaro / shared / AWS / "SUA CHAVE" -private.pem.key "," / home / linaro / shared / AWS / "SEU CERTIFICADO-certificate.pem.crt")
# AWSIoTMQTTShadowClient configurationmyAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10) # 10 sec myAWSIoTMQTTShadowClient.configureMout 5 sec
# Подключиться к AWS IoT
myAWSIoTMQTTShadowClient.connect ()
# Создать deviceShadow с постоянной подпиской
deviceShadowHandler = myAWSIoTMQTTShadowClient.createShadowHandlerWithName ("DBpyAWS1116", True) shadowCallbackContainer_Bot = shadowCallbackContainer (deviceShadowHandler)
# Слушаем дельты
deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)
#########################
myMQTTClient.publish ("$ aws / things / DBpyAWS1116 / shadow / update", '{"state": {"желаемый": {"SystemStatus": 1, "SisIlumi": 0, "AC": 0, "Garagem": "Fechada", "Temperatura": 25, "Luminosidade": 123}}} ', 0)
если _name_ == "_main_":
с GPIO (контакты) как gpio: run (gpio)
Шаг 6: Finalização
Após ter terminido os passos anteriores, deve-se inicializar o sistema executando o código fornecido no passo 5 e inicializar o app através do Ionic, usando o comando Ionic serve.
Для возможного устранения неполадок рекомендуется использовать функцию MQTT Client TEST для AWS, и она может быть проверена в качестве средств передачи данных в среде Dragonboard, которая используется в облаке AWS: https://us-west-2.console.aws.amazon.com / iotv2 / hom…