Talaan ng mga Nilalaman:

Pagsisimula ng isang Smart Home - Pangwakas na Projeto: 6 na Hakbang
Pagsisimula ng isang Smart Home - Pangwakas na Projeto: 6 na Hakbang

Video: Pagsisimula ng isang Smart Home - Pangwakas na Projeto: 6 na Hakbang

Video: Pagsisimula ng isang Smart Home - Pangwakas na Projeto: 6 na Hakbang
Video: Paano Tumalino? | i level up ang isip. Di pa huli ang lahat. 2024, Nobyembre
Anonim
Pagsisimula ng isang Smart Home - Final ng Projeto
Pagsisimula ng isang Smart Home - Final ng Projeto

Projeto apresentado ito bahagi gawin ang pangwakas na projeto do curso de IoT aplicado isang Smart Home

O projeto mostrado a seguir é parte do projeto final a ser apresentado no curso de IoT aplicada a Smart Home, que compre de sensores and atuadores conectados na DrangonBoard + Linker Mezzanine, um aplicativo desenvolvido com o ionic (a ser incluido em breve) e as informações / magiging das "coisas" servo salvados na cloud at AWS. Para uma primeira iteração com a DragonBoard at IoT como um todo, decidiu-se fazer um sistema de acendimento automático de luze, com um sensor de luminosidade, uma chave liga / desliga para ativar um aparelho de ar-condicionado de acordo com uma temperatura pre -setada e um sensor de proximidade que será installado 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.

Hakbang 1: Materias Necessários

Materias Necessários
Materias Necessários
Materias Necessários
Materias Necessários
  1. Ilagay ang DragonBoard.
  2. 96Boards Linker Mezzanine
  3. Sensor de luminozidade (LDR) que acompanha a Linker Mezzanine.
  4. Sensor de temperatura que acompanha a Linker Mezzanine.
  5. Ang botão touch que acompanha isang Linker Mezzanine.
  6. Iugnay ang isang Linker Mezzanine, utlizado para sa ligar o systema de A / C.
  7. Ang LED acompanha isang Linker Mezzanine, ay kumakatawan sa isang iluminação a ser ativada.
  8. Instalação das bibliotecas citadas no passo 5.

Hakbang 2: 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:

Kailangan mong magtatag ng isang placa Mezzanine na dragonboard. Para sa mga detalhes, link ng consultar

2. Sensor luminosidade (LDR)

O sensor ay bahagi ng Kit ng Linker Mezzanine upang mai-koneksyon ang entrada ng ADC1. Para sa detalhes técnicos:

3. Sensor de Temperatura

O sensor ay bahagi ng Kit ng Linker Mezzanine upang mai-koneksyon ang entrada ng ADC2. Para detalhes técnicos:

4. Botão Touch

O sensor ay bahagi ng Kit ng Linker Mezzanine at ang iyong koneksyon ay entrada D1. Este botão irá ligar / desligar o sistema como um todo. O acesso a este botão é somente local. Para detalhes técnicos: https://linksprite.com/wiki/index.php5? Title = Touch_…

5. Relé

O relé é parte do Kit da Linker Mezzanine and deverá ser conectado na entrada D2. Mag-sign up para sa ligar / desligar o sistema de A / C. Para detalhes técnicos:

6. LED

O LED ay bahagi ng kit ng Linker Mezzanine at ang iyong koneksyon ay entrada D4. O LED representará o sistema de iluminação de uma casa, seja algum cômodo interno da casa ou externo, como a iluminação de um jardim. Ang tanong na ito ay maaaring labanan ang 10k na araw na ito ay nararapat na mag-iwan ng isang paraan upang magamit ang isang sistema, upang makaranas ng mga anteriores verificou-se conflitos com bilang portas analógicas. Para detalhes técnicos:

7. Sensor de contato magnético

Ang sensor na ito ay nagsasama ng isang bahagi at nais na gawin ang Kit at Linker Mezzanine. Magagamit mo ang lahat sa lahat ng oras mo no portão de uma garagem para sa impormasyon tungkol sa isang janela / garagem está aberta ou fechada. O sensor ay umuugnay sa pormularyo ng 2 pequenas peças (ver foto do Step acima), o sensor proprimamente dito at um pequeno "imã", kung saan ang aproximar-se do sensor ay maaaring baguhin o estado gawin sensor. O sensor utlizado Neste projeto foi um N / A (normalmente aberto). Quando o imã 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.

Hakbang 3: Aplicativo Para Controle Remoto

Aplicativo Para Controle Remoto
Aplicativo Para Controle Remoto

O aplicativo foi desenvolvido com o Ionic Framework, https://ionicframework.com/. Kailangan mong fazer o i-download ang isang instalaçã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/), posteriormente será acessada pela placa dragonboard para atualização dos status dos sensores and atuadores.

- Sistema de Iluminação mostra o estado do sitesma de iluminação, ligado ou desligado. Quando o nível de luminosidade baixar do valor configurado, as luze se acenderão automaticamente. Quando a intensidade de luz aumentar além do valor definido, as luze 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. Mag-isip ng isang temperatura mula sa casa estiver mula sa lugar ng acionamento, o A / C na serye ligado at permanenteng ligado até isang temperatura abaixar em 2 graus da tempreatura definida. Para sa exemplo, iremos considerar que a temperatura é de 23 graus. Quando a temperatura interior chegar a 24 graus, o A / C sa loob ng ligado at permanenteng ligado sa isang temperatura chegar isang 20 graus, desligando então. Depois o ciclo se repetirá.

- Garagem informará a atual posição da garagem, se aberta ou fechada.

- Temperatura ay nakakaalam ng impormasyon at karamihan sa temperatura gawin ang panloob na daanan.

- Luminosidade é apesas informativa at mostra o valor da luminosidade atual.

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

Hakbang 4: Criando Uma "coisa" Na AWS IoT

Criando Uma
Criando Uma

Para sa fazer o pag-set up ng IoT na AWS, ang mga seguintes passos deverão ser seguidos:

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

2) Clique "lumikha ng isang bagay" at kung paano, "Lumikha ng isang solong bagay". Huwag mong gawin ang projeto at i-clique ang susunod.

3) Sa tela seguinte, clique em "Lumikha ng isang bagay nang walang sertipiko". Nesse tutorial nano iremos utilizar os certificados por questões práticas, porem não é recomendado fazer o uso de IoT sem certificados.

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 Could, assim como é umatima ferramenta para sa pag-troubleshoot. Walang código em Python que será apresentado em breve, foram utlizados alguns destes tópicos. Natapos ang mga ito sa mga podemos ng isang "anino", na naka-link sa iyo upang makapagbigay ng impormasyon tungkol sa dragonboard refletida na AWS Cloud.

Hakbang 5: Programa Em Python

Bilang seguintes bibliotecas serão kinakailangan para sa isang execução do programa:

mag-import ng oras ng pag-import ng spidevimport import json import argparse

mula sa libsoc import gpio

mula sa oras na pag-import ng pagtulog mula sa datime date ng pag-import, datime mula sa gpio_96boards import GPIO mula sa AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTClient mula sa AWSIoTPythonSDK. MQTTLib

Segue abaixo código completeo do programa:

i-import ang oras ng pag-import ng spidevimport import json import argparse

mula sa libsoc import gpio

mula sa oras na pag-import ng pagtulog mula sa datime date ng pag-import, datime mula sa gpio_96boards import GPIO mula sa AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTClient mula sa AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTShadowClient

GPIO_CS = GPIO.gpio_id ('GPIO_CS') # Port ng analog

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

mga pin = (((GPIO_CS, 'out'), (BUTTON, 'in'), (RELE, 'out'), (LED, 'out'),)

mga setting ng def (deltaMessagePython):

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

### ### AC

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

kung Rele_Status == 0:

gpio.digital_write (RELE, GPIO. LOW)

### ### Sistema de Iluminacao

kung Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) kung Led_Status == 0: gpio.digital_write (LED, GPIO. LOW)

def readadc (gpio):

gpio.digital_write (GPIO_CS, GPIO. HIGH)

time.s Sleep (0.0002) gpio.digital_write (GPIO_CS, GPIO. LOW) r = spi.xfer2 ([0x01, 0xA0, 0x00]) # ADC2 - Temperatura 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.s Sleep (0.0002) gpio.digital_write (GPIO_CS, GPIO. LOW) r = spi.xfer2 ([0x01, 0x80, 0x00]) # ADC1 - Luminosity gpio.digital_write (GPIO_CS, GPIO. HIGH) adcoutldr = (r [1] << 8) & 0b1100000000 adcoutldr = adcoutldr | (r [2] & 0xff) adcoutldr = str (adcoutldr) now = datime.utcnow () now_str = now.strftime ('% Y-% m-% dT% H:% M:% SZ') temperatura = "{:.2f} ". Format (adc_temp) payload_temp = '{" state ": {" nais ": {" Luminosidade ":' + adcoutldr + '," Temperatura ":' + temperatura + '}}}' myMQTTClient.publish ("$ aws / bagay / DBpyAWS1116 / anino / update", payload_temp, 0) ibalik ang r

def desliga ():

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

def run (gpio):

system_status = 1

habang Totoo:

time.s Sleep (2) button_value = gpio.digital_read (BUTTON) print ("----") time.s Sleep (0.25) kung button_value == 1: kung system_status == 0: system_status = 1 pa: system_status = 0 desliga () kung system_status == 1: halaga = readadc (gpio) i-print ang "SYSTEM_STATUS% d"% system_status time.sulog (3)

klase ng aninoCallbackContainer:

def _init _ (sarili, aparatoShadowInstance): self.deviceShadowInstance = deviceShadowInstance

# Customback na Shadow callback

def customShadowCallback_Delta (self, payload, responseStatus, token): print ("Nakatanggap ng isang delta message:") ### payload update script payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["state"]) print "DELTA MESSAGE% s"% deltaMessage ### Kahilingan na i-update ang naiulat na statePayload = '{"state": {"naiulat":' + 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

#### ### Ang kahulugan ng bagay

# Koneksyon batay sa sertipiko ng AWS IoT

myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home /St-root /, "/ home / linaro / shared / AWS /" SUA CHAVE "-private.pem.key", "/ home / linaro / shared / AWS /" SEU CERTIFICADO "-certavale.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Walang katapusang offline I-publish ang queuing myMQTTClient.configureDrainingFrequency (2) # Draining: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout (5Tl # mycnect) coisajsb "," konektado ", 0)

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

#### ### Shadow kahulugan

# Init AWSIoTMQTTShadowClient

myAWSIoTMQTTShadowClient = Wala ang myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2.amazonaws.com", 8883) mySubli /AWSCuef / myCuideSAW / myCuide / mySubin / myCuideSAW / myCuide / myCuide / mySubin / myCuideSAW / myCuentContent CA.crt "," / home / linaro / shared / AWS / "SUA CHAVE" -private.pem.key "," / home / linaro / shared / AWS / "SEU CERTIFICADO-certificate.pem.crt")

# AWSIoTMQTTShadowClient configuryaAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10) # 10 sec myAWSIoTMQTTShadleClientTimefimeTimefimeTimefimeTimefimeTimefimeTimeTimeTimeTimeTimeTimeTimeTimeTimeTimeTimeTimeTimeTimeTwitter

# Kumonekta sa AWS IoT

myAWSIoTMQTTShadowClient.connect ()

# Lumikha ng isang aparatoIlarawan sa patuloy na subscription

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

# Makinig sa deltas

aparatoShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)

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

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

kung _name_ == "_main_":

may GPIO (mga pin) bilang gpio: run (gpio)

Hakbang 6: Finalização

Finalização
Finalização

Ang mga ito ay maaaring magtapos sa mga anteriores, mag-iwan ng opisyal na pagpapatupad ng código fornecido na walang passo 5 at ang opisyal na app na gagamitin ang Ionic, usando o comando Ionic na maglingkod.

Para sa mga posibleng pag-troubleshoot, muling pagsasaayos ng isang MQTT Client TEST gawin ang AWS, maaari itong tiyakin bilang mensagens enviadas pela dragonboard está sendo atualizada de forma correta na AWS Cloud: https://us-west-2.console.aws.amazon.com / iotv2 / hom…

Inirerekumendang: