Përmbajtje:

Fillimi i një shtëpie të zgjuar - Projeto Final: 6 hapa
Fillimi i një shtëpie të zgjuar - Projeto Final: 6 hapa

Video: Fillimi i një shtëpie të zgjuar - Projeto Final: 6 hapa

Video: Fillimi i një shtëpie të zgjuar - Projeto Final: 6 hapa
Video: Установка маяков под штукатурку. Углы 90 градусов. #12 2024, Nëntor
Anonim
Fillimi i një Shtëpie të Zgjuar - Projeto Final
Fillimi i një Shtëpie të Zgjuar - Projeto Final

Projekto paraqitjen është pjesë e projektit përfundimtar të kursit të aplikimit të IoT në Smart Home

Ojekti më i zakonshëm është seguir é parte do të përfundojë një shërbim të paraqitur pa kursin e aplikimit të IoT në një Smart Home, që përbëhet nga sensores e atuadores conectados në DrangonBoard + Linker Mezzanine, um aplicativo desenvolvido com o ionic (a ser incluido em) informações/dados das "coisas" serão salvados na cloud da AWS. Para uma Primeira iteração com a DragonBoard e IoT como todo, decidiu-se fazer um sistemi 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 temperaturë -setada e um sensor de proximidade që është instaluar pa porta të uma garagem, si një informacion për një pronësi të mundshme që ju lejon të hyni në mbyllje të seancës ose funksionimit.

Hapi 1: Materialet e nevojshme

Materialet e nevojshme
Materialet e nevojshme
Materialet e nevojshme
Materialet e nevojshme
  1. Vendi DragonBoard.
  2. 96Boards Linker Mezzanine
  3. Sensori i ndriçimit luminozidade (LDR) që shoqëron një Mezzanine Linker.
  4. Sensori i temperaturës që shoqërohet me një kat të ndërmjetëm.
  5. Bëj prekje që shoqëron një Linker Mezzanine.
  6. Relo acompanha a Linker Mezzanine, mund të përdoret për një sistem të A/C.
  7. Kompani LED me një kat të ndërmjetëm, që përfaqëson një iluminação dhe një shërbim.
  8. Instalação das bibliotecas citadas no passo 5.

Hapi 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:

Será needário conectar a placa Mezzanine në dragonboard. Për më shumë detaje, lidhja e këshilltarit

2. Sensori luminosidade (LDR)

O sensor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC1. Për detajet e teknikave:

3. Sensori i Temperaturës

O sensor é parte do Kit da Linker Mezzanine e deverá në lidhjen me entradën ADC2. Për detajet e teknikave:

4. Botão Touch

O sensor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada D1. Este botão irá ligar/desligar o sistema como um todo. Oceso a este botão é somente lokale. Për më shumë hollësi teknike: https://linksprite.com/wiki/index.php5? Title = Touch_…

5. Relé

O relé é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada D2. Përdorimi i ligar/desligar o sistema de A/C. Para detalhes técnicos:

6. LED

O LED part parte do kit për Linker Mezzanine e deverá në lidhjen me entradën D4. O LED përfaqësues i sistemit të iluminação në uma casa, sealgum cômodo interno da casa ou externo, como a iluminação de um jardim. Për më tepër, një rezistencë prej 10k ohm i kemi arritur në një sistem ekzistues për të zvogëluar një përdorim të sistemeve të përdorimit të sistemit, si një përvojë anteriores verificou-se conflitos com si porta analogicas. Për detajet e teknikave:

7. Sensor de contato magnético

Este sensor foi comprado a parte e não faz parte do Kit da Linker Mezzanine. Mund të përdorni një umë të vogël ose të mos përdorni ndonjë informacion për një informacion të mëparshëm se të përdorni një garazh ose të përdorni një fechada. O sensor është unt um unt unt unt ado ado por 2 2 2 2 ver ver ver ver ver ver ver ver ver ver ver ver ver ver ver ver ver ver ver ver ver ver ver o o o o sensor o sensor o sensor sensor sensor sensor sensor sensor sensor sensor sensor O sensor mund të përdoret për të gjetur N/A (normalmente aberto). Quando o imã não está próximo do sensor, ose sensor reportará estado aberto. Quando o imã estiver próximo do sensor, ose estado reportado será fechado.

Hapi 3: Aplikoni për Kontrollin Remoto

Aplikues për Kontrollin Remoto
Aplikues për Kontrollin Remoto

Përdorni aplikimet për Kornizën Jonike, https://ionicframework.com/. Áshtë e nevojshme të shkarkoni një instalim dhe të instaloni një version të fundit.

Aplikativo irá se comunicar (ler e atualizar os dados) com a cloud da AWS (AWS IoT- https://aws.amazon.com/iot/), në mënyrë të mëvonshme për të hyrë në plaza dragonboard para atualização dos status dos sensores e atuadores Me

- Sistema e Iluminação mostra o estado do sitesma iluminação, ligado ose desligado. Quando o nível de luminosidade baixar do valor configurado, si luzes se acenderão automatamente. 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 sistemi de A/C da casa. Também é possível definir o valor desejado da temperatura. Pritet që temperatura të jetë në temperaturën më të lartë të temperaturës së ajrit, ose A/C të lidhura me një lidhje të vazhdueshme në një temperaturë të ulur në 2 graus da tempreatura definida. Për shembull, iremos konsideruar temperaturën é de 23 graus. Mbani një temperaturë të brendshme për 24 graus, ose A/C será ligado e permanecerá ligado até a temperatura chegar a 20 graus, desligando então. Depois ciclo se repetirá.

- Garagem informon një pozicion të vazhdueshëm për garagem, se aberta ou fechada.

- Temperatura é apenas informativa e mostra a temperatura do interier da casa.

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

Zgjedhja e faqeve tona në shtëpi. Html dhe home.ts konkurrojnë në programet e komunikimit në lidhje me një cloud AWS dhe atualização për aplikacionin.

Hapi 4: Criando Uma "coisa" Na AWS IoT

Criando Uma
Criando Uma

Para fazës ose konfigurimit të IoT në AWS, në seguintes passos deverão ser seguidos:

1) Criar um projeto pa AWS IoT atravé bëni lidhjen:

2) Kliko "krijoni një gjë" dhe pastaj, "Krijoni një gjë të vetme". Dê o nome do projeto e clique em Next.

3) Na zgjidhni, zgjidhni "Krijoni një gjë pa certifikatë". Mësime të thjeshta që nuk përdorin certifikata për kërkime práticas, por ne nuk rekomandojmë një fazë ose përdorim të certifikatave të IoT.

4) Nesse momento, sua "coisa" já estará criada. Clique no botão da "coisa" que foi criado para abrir a tela com si opções. Ju mund të përdorni një skedar MQTT për të përdorur shërbimet e përdorura për një fazë të caktuar të përdorimit të të dhënave paraprake për një Could, assim com é uma ótima ferramenta për zgjidhjen e problemeve. No código em Python que será apresentado em breve, foram utlizados alguns destes tópicos. Ju mund të lexoni podemos në një "hije", që mund të jetë një informacion që ju lejon të rifilloni dragonboard në AWS Cloud.

Hapi 5: Programi Em Python

As seguintes bibliotecas serão needárias para një ekzekutimi të programit:

import spidevimport kohë import logging import json import argparse

nga gbio importi libsoc

nga koha e importimit gjumi nga data e importimit të datës, koha e datës nga gpio_96boards import GPIO nga AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTClient nga AWSIoTPythonSDK. MQTTLib

Segue abaixo código completeo do programa:

import spidevimport kohë import log log import json import argparse

nga gbio importi libsoc

nga koha e importimit fle nga data e importit data data, ora data nga gpio_96board import GPIO nga AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTClient nga AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTShadowClient

GPIO_CS = GPIO.gpio_id ('GPIO_CS') #Port Analog

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

kunjat = ((GPIO_CS, 'jashtë'), (BUTONI, "brenda"), (RELE, "jashtë"), (LED, "jashtë"),)

def setdevices (deltaMessagePython):

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

##### AC

nëse Rele_Status == 1: gpio.digital_write (RELE, GPIO. HIGHT)

nëse Rele_Status == 0:

gpio.digital_write (RELE, GPIO. LOW)

##### Sistema e Iluminacao

nëse Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) nëse 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 - Temperatura gpio.digital_write (GPIO_CS, GPIO. HIGHT) adcout = (r] << 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 - Shkëlqim gpio.digital_write (GPIO_CS, GPIO. HIGHT) adcoutldr = (] << 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 = '{" gjendja ": {" e dëshiruar ": {" Luminosidade ":' + adcoutldr + '," Temperatura ":' + temperatura + '}}}' myMQTTClient.publish ("$ aws/things/DBpyAWS1116/shadow/update", payload_temp, 0) kthehu r

def desliga ():

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

def run (gpio):

statusi i sistemit = 1

ndërsa e vërtetë:

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 tjetër: system_status = 0 desliga () nëse system_status == 1: value = readadc (gpio) print "SYSTEM_STATUS %d" %system_status time.sleep (3)

klasa shadowCallbackContainer:

def _init _ (vetë, pajisjeShadowInstance): self.deviceShadowInstance = pajisjeShadowInstance

# Kthimi i thirrjes me porosi Shadow

def customShadowCallback_Delta (vetë, ngarkesë, përgjigjeStatus, shenjë): print ("Marrë një mesazh delta:") ### skript i përditësimit të ngarkesës payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["state"]) print "DELTA MESSAGE %s" %deltaMessage ### Kërkesë për përditësimin e gjendjes së raportuar newPayload = '{"state": {"raportuar":' + deltaMessage + '}}' deltaMessagePython = json.loads (deltaMessage) setdevices (deltaMessagePython)

spi = spidev. SpiDev ()

spi.hapur (0, 0) spi.max_speed_hz = 10000 spi.mode = 0b00 spi.bits_per_word = 8

####### Përkufizimi i gjërave

# Lidhje e bazuar në certifikatën AoS IoT

myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/home/lin/CA/lin/, "/home/linaro/shared/AWS/" SUA CHAVE "-private.pem.key", "/home/linaro/shared/AWS/" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Infinite offline Publish queue myMQTTClient.configureDrainingFrekuenca (2) # Kullimi: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout (5) # myconconTQ coisajsb "," lidhur ", 0)

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

####### Përkufizimi i hijes

# Filloni AWSIoTMQTTShadowClient

myAWSIoTMQTTShadowClient = Asnjë myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2.amazonaws.com", 8883) myAWSIoTMQTTShadowClient.configureCredentials ("/ home / linaro / ndarë / AWS / root- 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 secow

# Lidhu me AWS IoT

myAWSIoTMQTTShadowClient.connect ()

# Krijoni një pajisjeShije me pajtim të vazhdueshëm

deviceShadowHandler = myAWSIoTMQTTShadowClient.createShadowHandlerWithName ("DBpyAWS1116", E vërtetë) shadowCallbackContainer_Bot = shadowCallbackContainer (pajisjeShadowHandler)

# Dëgjoni në delta

pajisjeShadowHandler.shadowRegisterDeltaCallback (hijeCallbackContainer_Bot.customShadowCallback_Delta)

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

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

nëse _name_ == "_majt_":

me GPIO (kunjat) si gpio: drejto (gpio)

Hapi 6: Përfundimi

Finalização
Finalização

Após ter concluido os passos anteriores, deve-se inicializar ose sistemi ekzekutues i código fornecido no passo 5 dhe inicializar o app através do Ionic, usando o comando Ionic serve.

Për të zgjidhur problemet, rekomandoni të përdorni një funksionalitet të MQTT Client TEST në AWS, nëse është e mundur të verifikoni si mjete të menjëhershme të dragonboard-it për të dërguar një formë të formës së AWS Cloud: https://us-west-2.console.aws.amazon.com/iotv2/hom…

Recommended: