Sisukord:

Nutika kodu käivitamine - Projeto finaal: 6 sammu
Nutika kodu käivitamine - Projeto finaal: 6 sammu

Video: Nutika kodu käivitamine - Projeto finaal: 6 sammu

Video: Nutika kodu käivitamine - Projeto finaal: 6 sammu
Video: Антон Катин Разоблачение. Фонд Neutrino, Sсhutz Capital, Simba Storage. 2024, November
Anonim
Nutika kodu käivitamine - Projeto finaal
Nutika kodu käivitamine - Projeto finaal

Projeto apresentado é parte do projeto final to IoT app of Smart Home

O projeto mostrado a seguir é parte do projeto final a ser apresentado no curso de IoT aplicada a Smart Home, que consiste de sensores e atuadores conectados na DrangonBoard + Linker Mezzanine, um aplicativo desenvolvido com o ionic (a ser incluido em breve) e info/dados das "coisas" seroo salvados ja cloud da AWS. Parameeter iteração com DragonBoard and IoT como um todo, decidiu-se fazer um system de acendimento automático de luzes, com um sensor de luminosidade, uma chave liga/desliga para ativar um aparelho de ar-condicionado de acordo com uma Temperature pre -setada e um sensor de proximidade 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. samm: Materias Necessários

Materias Necessários
Materias Necessários
Materias Necessários
Materias Necessários
  1. Asetage DragonBoard.
  2. 96Boards Linker Mezzanine
  3. Valgusandur (LDR) sisaldab Linker Mezzanine'i.
  4. Temperatuuri andur on Linker Mezzanine'i kaasas.
  5. Botão touch que kaasas Linker Mezzanine.
  6. Kasutage linki Mezzanine, utlizado para ligar or systema de A/C.
  7. LED koos Linker Mezzanine'iga, mis kujutab endast iluminação a ser ativada.
  8. Instalação das bibliotecas citadas no passo 5.

2. samm: Sensores, Atuadores E Conexões

Sensores, Atuadores E Conexões
Sensores, Atuadores E Conexões
Sensores, Atuadores E Conexões
Sensores, Atuadores E Conexões

1. Linker Mezzanine:

Vajalikud konsoolid on plats Mezzanine ja dragonboard. Täpsemalt, vaadake linki

2. Anduri luminosidaad (LDR)

O andur ja parter Link Kit Mezzanine e deverá ser conactado na entrada ADC1. Üksikasjalikud teekonnad:

3. Temperatuuri andur

O andur on osaline komplektis Link Link Mezzanine ja see on ühendatud ADC2 -ga. Üksikasjalikud tecnicos:

4. Botão Touch

O andur on osaline komplektis Link Link Mezzanine ja deverá ser conactado na entrada D1. Este botão irá ligar/desligar o system como um todo. O acesso a este botão é somente local. Üksikasjalikud tecnicos: https://linksprite.com/wiki/index.php5? Title = Touch_…

5. Relé

Orelé é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada D2. Ele será utiizado para ligar/desligar o system de A/C. Paralleelsed tecnicos:

6. LED

O LED -osade komplekt Linker Mezzanine ja deverá ser conactado na Entrada D4. O LED esindab süsteemi, mis pakub iluminaatsioo uma casa, seja algum cômodo interno da casa ou externo, como and illuminação de um jardim. Kui soovite, et takisti oleks 10 k ohmi, siis oleks see hädaolukorras halvasti kasutatav, süsteem oleks korrektne, ja kogemused anteriores verificou-se conflitos com as portas analógicas. Üksikasjalikud teekonnad:

7. Sensor de contato magnético

Este andur, mis ühendab parte e não faz parte do Kit da Linker Mezzanine. Ele será usado em uma janela ou no portão de uma garagem para informar se a janela/garagem está aberta ou fechada. O andur on ühemõtteliselt moodustatud 2 pequenas peças (ver foto do Step acima), või sensor proprimamente dito e um pequeno "imã", que ao aproximar-se do sensor irá alterar or estado do sensor. O sensor utlizado neste projeto foi um N/A (normaalne aberto). Quando o imã não está próximo do sensor, või sensor reportará estado aberto. Quando o imã estiver próximo do sensor, või estado reportado será fechado.

3. samm: Aplicativo Para Controle Remoto

Aplicativo Para Controle Remoto
Aplicativo Para Controle Remoto

Rakenduse Ionic Framework, https://ionicframework.com/ kaudu. Vajalik fazer või allalaadimine ja installeção da ultima versão.

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.

- Iluminação mostra või estado do sitesma de iluminação, ligado ou desligado. Quando o nível de luminosidade baixar do valor configurado, as luzes se acenderão automaticamente. Quando a intensidade de luz aumentar além do valor definido, as luzes se apagarão.

- O botão A/C acionará o relé, que por sua vez acionará o system 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 and permanecerá ligado até a temperatura abaixar em 2 graus da tempreatura definida. Näiteks, iremos kaalub temperatuuri 23 päeva. Quando a Temperature Interior Chegar a 24 graus, või A/C será ligado and 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.

Segue em anexo os arquivos home.html e home.ts contendos os códigos para comunicação com a cloud AWS e atualização do app.

4. samm: Criando Uma "coisa" Na AWS IoT

Criando Uma
Criando Uma

Fazer või seadistuste tegemine IoT ja AWS, os seguintes passos deverão ser seguidos:

1) Criar um projeto no AWS IoT atravé do link:

2) Klõpsake "loo asi" ja sisestage "Loo üks asi". Dê o nome do projeto e clique em Next.

3) Na tela seguinte, clique em "Loo asi ilma sertifikaadita". Nesse juhendaja ei kasuta iremos utilizar os sertifikaate, mis on seotud otsingutega, kuid ei soovita fazerit või IoT sem sertifikaate.

4) Nesse momento, sua "coisa" já estará criada. Clique no botão da "coisa" que foi criado para abrir a tela com as opções. Nessa tela podemos ver os tópicosMQTT que podem ser usados para fazer a atualização dos dados a serem enviados para a Can, assim como é uma ótima ferramenta para tõrkeotsing. No código em Python que será apresentado em breve, foram utlizados alguns destes tópicos. Nas opções também podemos ver a "shadow", que nada mais e que a informationção que está na dragonboard refletida with AWS Cloud.

Samm: Programa Em Python

Nagu seguintes bibliotecas serão vajadused para ja execução do program:

import spidevimport aeg import logimine import json import argparse

alates libsoc import gpio

ajast importimise unerežiim alates kuupäeva ja aja impordi kuupäevast, kuupäeva aeg gpio_96boardsilt impordib GPIO AWSIoTPythonSDK -st. MQTTLib impordi AWSIoTMQTTClient AWSIoTPythonSDK -st. MQTTLib

Abuex codigo täielik programm:

import spidevimport aeg import logimine import json import argparse

alates libsoc import gpio

ajast importimise unerežiim alates kuupäeva ja aja impordi kuupäevast, kuupäeva aeg gpio_96boardsilt impordib GPIO AWSIoTPythonSDK -st. MQTTLib impordi AWSIoTMQTTClient AWSIoTPythonSDK -st. MQTTLib import AWSIoTMQTTShadowClient

GPIO_CS = GPIO.gpio_id ('GPIO_CS') #Analoogport

NUPP = GPIO.gpio_id ('GPIO_A') RELE = GPIO.gpio_id ('GPIO_C') LED = GPIO.gpio_id ('GPIO_G')

nööpnõelad = ((GPIO_CS, 'väljas'), (BUTTON, 'in'), (RELE, 'out'), (LED, 'out'),)

def setdevices (deltaMessagePython):

System_Status = deltaMessagePython ['SystemStatus'] Rele_Status = deltaMessagePython ['AC'] Led_Status = deltaMessagePython ['SisIlumi']

##### AC

kui Rele_Status == 1: gpio.digital_write (RELE, GPIO. HIGH)

kui Rele_Status == 0:

gpio.digital_write (RELE, GPIO. LOW)

##### Sistema de Iluminacao

kui Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) kui 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 - temperatuur gpio.digital_write (GPIO_CS, GPIO. HIGH) adcout = (r [1] << 8) & 0b1100000000 adcout = adcout | (r [2] ja 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 - heledus 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') temperatuur = "{:.2f} ". Format (adc_temp) payload_temp = '{" state ": {" soovitud ": {" Luminosidade ":' + adcoutldr + '," Temperatura ":' + temperatura + '}}}' myMQTTClient.publish ("$ aws/things/DBpyAWS1116/shadow/update", payload_temp, 0) return r

def desliga ():

gpio.digital_write (RELE, GPIO. LOW) gpio.digital_write (LED, GPIO. LOW)

def run (gpio):

süsteemi_seis = 1

kuigi tõsi:

time.sleep (2) button_value = gpio.digital_read (NUPP) print ("----") time.sleep (0.25) if button_value == 1: if system_status == 0: system_status = 1 else: system_status = 0 desliga () if system_status == 1: value = readadc (gpio) print "SYSTEM_STATUS %d" %system_status time.sleep (3)

class shadowCallbackContainer:

def _init _ (ise, deviceShadowInstance): self.deviceShadowInstance = deviceShadowInstance

# Kohandatud varju tagasihelistamine

def customShadowCallback_Delta (ise, kasulik koormus, vastusolek, märk): print ("Vastuvõetud delta -teade:") ### payload update script payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["olek"]) print "DELTA MESSAGE %s" %deltaMessage ### Teavitatud oleku värskendamise taotlus 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

####### Asja määratlus

# AWS IoT sertifikaadipõhine ühendus

myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/home/lin/s/"/a/root/lin/, "/home/linaro/shared/AWS/" SUA CHAVE "-private.pem.key", "/home/linaro/shared/AWS/" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Lõpmatu võrguühenduseta avaldamise järjekord myMQTTClient.configureDrainingFrequency (2) # Tühjendus: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 s coisajsb "," ühendatud ", 0)

########################

####### Varju määratlus

# Init AWSIoTMQTTShadowClient

myAWSIoTMQTTShadowClient = Puudub myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2T. WAW. COM/LINK 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 sek myAWSIoureQQToT

# Ühendage AWS IoT -ga

myAWSIoTMQTTShadowClient.connect ()

# Looge seadmevari püsiva tellimusega

deviceShadowHandler = myAWSIoTMQTTShadowClient.createShadowHandlerWithName ("DBpyAWS1116", True) shadowCallbackContainer_Bot = shadowCallbackContainer (deviceShadowHandler)

# Kuula deltadel

deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)

#########################

myMQTTClient.publish ("$ aws/things/DBpyAWS1116/shadow/update", '{"state": {"soovitud": {"SystemStatus": 1, "SisIlumi": 0, "AC": 0, "Garagem": "Fechada", "Temperatura": 25, "Luminosidade": 123}}} ', 0)

kui _name_ == "_main_":

GPIO (tihvtid) kui gpio: käivita (gpio)

6. etapp: lõplik

Lõplik
Lõplik

Após ter concluido os passos anteriores, deve-se inicializar või system executando o código fornecido no passo 5 e inicializar or app através do Ionic, usando o comando Ionic serve.

Võimalike tõrkeotsingute jaoks soovitame kasutada MQTT-i klienditesti ja teha AWS-i, seejärel kontrollida ja kontrollida, kas see on saadaval ja kuidas seda AWS-i pilti lohistada:

Soovitan: