Kazalo:

Zagon pametnega doma - Projeto Končni: 6 korakov
Zagon pametnega doma - Projeto Končni: 6 korakov

Video: Zagon pametnega doma - Projeto Končni: 6 korakov

Video: Zagon pametnega doma - Projeto Končni: 6 korakov
Video: Hacked Jacuzzi, JDK 18, Kotlin 1.7.0, ECMAScript 2022 and new Amazon products [MJC News #10] 2024, December
Anonim
Zagon pametnega doma - Projeto Final
Zagon pametnega doma - Projeto Final

Projekt je predstavljen kot del projekta, ki končno uporablja IoT aplikacijo 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 as informações/dados das "coisas" serão salvados na oblaku v AWS. Para umaira primera iteração com a DragonBoard e 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 temperatura temperature pred -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. korak: Potrebni materiali

Potrebni materiali
Potrebni materiali
Potrebni materiali
Potrebni materiali
  1. Postavite DragonBoard.
  2. 96Boards Linker Mezzanine
  3. Senzor luminozidade (LDR), ki ga spremlja Linker Mezzanine.
  4. Senzor za temperaturo, ki ga spremlja Linker Mezzanine.
  5. Botão touch que acompanha in Linker Mezzanine.
  6. Predvajajte povezavo med mezaninom, ki je namenjena sistematiki klimatske naprave.
  7. LED acompanha in Linker Mezzanine, ki je predstavljen in osvetljen in serviran.
  8. Instalação das bibliotecas citadas no passo 5.

2. korak: Senzorji, Atuadores E Conexões

Senzorji, Atuadores E Conexões
Senzorji, Atuadores E Conexões
Senzorji, Atuadores E Conexões
Senzorji, Atuadores E Conexões

1. Mezanin povezovalnika:

Será neophodário conectar a placa Mezzanine na dragonboard. Za več podrobnosti, povezava na posvetovanje

2. Senzor luminosidade (LDR)

O senzorju in paru do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC1. Za podrobnejše informacije:

3. Senzor temperature

O senzorju in paru do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC2. Za podrobnejše informacije:

4. Botão Touch

O senzorju é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada D1. Este botão irá ligar/desligar o sistemu como um todo. O acesso a este botão é somente local. Za podrobnejše informacije: 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. Ele será utiizado para ligar/desligar o sistemu A/C. Para podrobnosti técnicos:

6. LED

O LED é parte do kit za Linker Mezzanine in deverá ser conectado na entrada D4. O LED zastopnik o sistemu de iluminação de uma casa, seja algum cômodo interno da casa ou externo, como a iluminação de um jardim. Naslednji upor 10 k ohm em sério com o já existente para diminuir a corrente utilizada pelo sistema, já que em experiências anteriores verificou-se conflitos com kot portas analógicas. Za podrobnejše informacije:

7. Sensor de contato magnético

Este senzor za kompatibilnost in 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 senzorju je treba ustvariti 2 pequena peças (ver foto do Step acima), o senzorju, ki ga je treba spremeniti, peko "imã", ki se približuje senzorju, spreminjati ali spreminjati senzor. O senzor utlizado neste projeto foi um N/A (normalmente aberto). Quando o imã não está próximo do sensor, o senzorju reportará estado aberto. Quando o imã estiver próximo do sensor, o estado reportado será fechado.

3. korak: Aplicativo Para Controle Remoto

Aplikacija Para Controle Remoto
Aplikacija Para Controle Remoto

O aplicativo foi desenvolvido com o Ionic Framework, https://ionicframework.com/. Será neophodário fazer ali download in a 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/), que posteriormente será acessada pela placa dragonboard para atualização dos status dos sensores e 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 configuration, as luzes se acenderão automaticamente. Quando a intenzide 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 sistemu de A/C da casa. Também é possível definir o valor znižuje temperaturo. Določite temperaturo, ki je v vsakem primeru višja od nastavljene temperature, o A/C será ligado in trajno ligado pri temperaturi abaixar em 2 graus da tempreatura definida. Na primer, iremos upošteva temperaturo 23 stopinj. Če imate temperaturo v notranjosti 24 gramov, segrevanje klimatske naprave in trajno ligado pri temperaturi 20 gramov, je potrebno. Depois o ciclo se repetirá.

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

- Temperature é apenas informativa e mostra a temperature in 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. korak: Criando Uma "coisa" na AWS IoT

Criando Uma
Criando Uma

Če želite nastaviti ali nastaviti IoT na AWS, se osredotočite na deverão ser seguidos:

1) Poiščite projekcijo brez povezave AWS IoT na povezavi:

2) Klikni "ustvari stvar" e então, "Ustvari eno stvar". Dê o nome do projeto e clique em Next.

3) Na tela seguinte, clique em "Ustvari stvar brez certifikata". Nesse tutorial não iremos utilar os certificados por questões práticas, porém 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 atualização dos dados a serem enviados para a Could, assim como é uma ótima ferramenta za odpravljanje težav. 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 é que a informação que está na dragonboard reflektira na AWS Cloud.

5. korak: Programa Em Python

Kot seguintes bibliotecas serão needárias para a execução do programa:

uvoz spidevimport čas uvoz beleženje uvoz json uvoz argparse

iz 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

Nadaljevanje dokončanja celotnega programa:

uvoz spidevimport čas uvoz beleženje uvoz json uvoz argparse

iz 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') #Analogna vrata

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

nožice = ((GPIO_CS, "ven"), (BUTTON, 'in'), (RELE, 'out'), (LED, 'out'),)

def setdevices (deltaMessagePython):

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

##### AC

če je Rele_Status == 1: gpio.digital_write (RELE, GPIO. HIGH)

če je Rele_Status == 0:

gpio.digital_write (RELE, GPIO. LOW)

##### Sistema de Iluminacao

če je Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH), če je 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. 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 - Svetilnost gpio.digital_write (GPIO_CS, GPIO. HIGH) adcoutldr = (r [1] << 8) & 0b1100000000 adcoutldr = adcoutldr | (r [2] & 0xff) adcoutldr = str (adcoutldr) zdaj = datetime.utcnow () now_str = zdaj.strftime ('%Y-%m-%dT%H:%M:%SZ') temperatura = "{:.2f} ". Format (adc_temp) payload_temp = '{" stanje ": {" želeno ": {" 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):

system_status = 1

medtem ko je res:

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 () if system_status == 1: value = readadc (gpio) natisnite "SYSTEM_STATUS %d" %system_status time.sleep (3)

razred shadowCallbackContainer:

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

# Povratni klic v senci po meri

def customShadowCallback_Delta (self, payload, responseStatus, žeton): print ("Prejeto sporočilo delta:") ### Skript za posodobitev payload payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["stanje"]) print "DELTA MESSAGE %s" %deltaMessage ### Zahteva za posodobitev prijavljenega stanja newPayload = '{"stanje": {"prijavljeno":' + 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

####### Opredelitev stvari

# Povezava na podlagi potrdila AWS IoT

myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentiS ("/home/, "/home/linaro/shared/AWS/" SUA CHAVE "-private.pem.key", "/home/linaro/shared/AWS/" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Neskončno Objava v čakalni vrsti myMQTTClient.configureDrainingFrequency (2) # Draining: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout coisajsb "," povezan ", 0)

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

####### Definicija sence

# Init AWSIoTMQTTShadowClient

myAWSIoTMQTTShadowClient = Nič myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2.amazonaws.com", 8883) myAWSIoTMQTTShadowClient.configureCredentials ("/ home / linaro / shared / AWS / root- CA.crt ","/home/linaro/shared/AWS/"SUA CHAVE" -private.pem.key ","/home/linaro/shared/AWS/"SEU CERTIFICADO-certificate.pem.crt")

# AWSIoTMQTTShadowClient konfiguracijamyAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10) #IsQTonMoTiToMoToMoToMoToMojeKljuč

# Povežite se z AWS IoT

myAWSIoTMQTTShadowClient.connect ()

# Ustvarite senco naprave s trajno naročnino

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

# Poslušajte na deltah

deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)

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

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

če _name_ == "_maj_":

z GPIO (zatiči) kot gpio: run (gpio)

Korak 6: Dokončanje

Dokončanje
Dokončanje

Após ter compleido os passos anteriores, deve-se inicializar o sistemu executando o código fornecido no passo 5 e inicializar o app através do Ionic, usando o comando Ionic serve.

Če želite odpraviti težave, priporočamo, da uporabite funkcijski preizkus odjemalca MQTT za AWS, če želite preveriti, ali so sporočila poslana, ali pa dragonboard poslano, da posodobite obliko popravkov v oblaku AWS: https://us-west-2.console.aws.amazon.com/iotv2/hom…

Priporočena: