Gudras mājas uzsākšana - Projeto fināls: 6 soļi
Gudras mājas uzsākšana - Projeto fināls: 6 soļi
Anonim
Gudras mājas uzsākšana - Projeto fināls
Gudras mājas uzsākšana - Projeto fināls

Projeto apresentado é parte do projeto final do curso de IoT app the Smart Home

O projeto mostrado a seguir é parte do projeto final and 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 informācija/dados das "coisas" seriāla salvados un mākonis da AWS. Para uma primeira iteração com a DragonBoard and IoT como umoo, 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 temperatura 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. darbība. Materias Necessários

Materias Necessários
Materias Necessários
Materias Necessários
Materias Necessários
  1. Novietojiet DragonBoard.
  2. 96Boards Linker Mezzanine
  3. Luminozidade Sensor de Luminozidade (LDR) ir saistīts ar Linker Mezzanine.
  4. Temperatūras sensors kopā ar Linker Mezzanine.
  5. Botão touch que kopā ar Linker Mezzanine.
  6. Atbilstoši Linker Mezzanine, utlizado para ligar vai systema de A/C.
  7. Gaismas diodes pavada Linker Mezzanine, kas attēlo un iluminação a ser ativada.
  8. Instalação das bibliotecas citadas no passo 5.

2. darbība: 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:

Nepieciešamības pakāpe starpstāvu un starpstāvu dēļā. Sīkāk, konsultācijas saite

2. Sensora luminosidāde (LDR)

O sensors ir daļa no Kit da Linker Mezzanine un deverá ser conadoado na entrada ADC1. Sīkāka informācija par téniķiem:

3. Temperatūras sensors

O sensors ir daļa no Kit da Linker Mezzanine un deverá ser conadoado na entrada ADC2. Sīkākas detaļas:

4. Botão Touch

O sensors ir daļa no Kit da Linker Mezzanine un deverá ser conadoado na entrada D1. Este botão irá ligar/desligar o system como um todo. O acesso a este botão é somente local. Sīkāka informācija par televīziju: 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 system de A/C. Para detaļas técnicos:

6. LED

O LED ir daļa no komplekta Linker Mezzanine un deverá ser conadoado na entrada D4. O LED pārstāvis vai sistēma, kas iluminação de uma casa, seja algum cômodo interno da casa ou externo, como and iluminação de um jardim. Ja jūs domājat, ka pretestība ir 10 k ohm, tā var tikt izslēgta, ja tā ir eksistējoša, un tā ir pareizi izmantota, un pēc tam tā var būt pieredze, pārbaudot konfidencialitāti kā portāla analogu. Sīkākas detaļas:

7. Magnētiskais sensors

Este sensor fori comprado a 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 sensors ē um conjunto formado por 2 pequenas peças (ver foto do Step acima), o sensor proprimamente dito e um pequeno "imã", que ao aproximar-se do sensor ir alterar vai estado do sensor. O sensors utlizado neste projeto foi um N/A (normāls aberto). Quando o imã não está próximo do sensor, o sensor reportará estado aberto. Quando o imã estiver próximo do sensor, vai estado reportado será fechado.

3. darbība. Aplicativo Para Controle Remoto

Aplicativo Para Controle Remoto
Aplicativo Para Controle Remoto

Ionic Framework aplikatīvs, https://ionicframework.com/. Svarīgi fazer vai lejupielādēt un instalēt ultimate 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.

- Sistēma de Iluminação mostra vai estado do sitesma de iluminação, ligado ou desligado. Quando o nível de luminosidade baixar do valor configurado, kā 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. Kā piemēru var minēt 23 gadus vecas temperatūras apstākļus. Quando a temperatura interjera chegar a 24 graus, or A/C será ligado e permanencerá ligado até 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.

- Temperatūra un apenatīva informācija un lielākā temperatūra un temperatūra interjerā.

- 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. darbība: Criando Uma "coisa" Na AWS IoT

Kriando Uma
Kriando Uma

Para fazer o setup to IoT with AWS, os seguintes passos deverão ser seguidos:

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

2) Klikšķis "izveidot lietu" un então, "Izveidot vienu lietu". Dê o nome do projeto e clique em Next.

3) Na tela seguinte, clique em "Izveidot lietu bez sertifikāta". Neses apmācība, kas izmanto sertificētus uzdevumus, meklējumus, kā arī ieteikumus fazer vai IoT sem sertifikātus.

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 aimalização dos dados a serem enviados para a Can, assim como é uma ótima ferramenta para traucējummeklēšana. 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 informationção que está na dragonboard refletida na AWS Cloud.

5. solis: Programa Em Python

Kā seguintes bibliotecas serão needárias para a execução do program:

importēt spidevimportēt laiku importēt reģistrēšanu importēt json importēt argparse

no libsoc importa gpio

no laika importēšanas miega no datuma un laika importēšanas datuma, datuma laiks no gpio_96boards importē GPIO no AWSIoTPythonSDK. MQTTLib importē AWSIoTMQTTClient no AWSIoTPythonSDK. MQTTLib

Programmas Segue abaixo código pabeigšana:

importēt spidevimportēt laiku importēt reģistrēšanu importēt json importēt argparse

no libsoc importa gpio

no laika importēšanas miega no datuma un laika importēšanas datuma, datuma laiks no gpio_96boards importē GPIO no AWSIoTPythonSDK. MQTTLib importē AWSIoTMQTTClient no AWSIoTPythonSDK.

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

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

tapas = ((GPIO_CS, 'out'), (BUTTON, "in"), (RELE, "out"), (LED, "out"),)

def setdevices (deltaMessagePython):

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

##### AC

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

ja Rele_Status == 0:

gpio.digital_write (RELE, GPIO. LOW)

##### Sistēma de Iluminacao

ja Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) ja 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 - Temperatūra gpio.digital_write (GPIO_CS, GPIO. HIGH) adcout = (r [1] << 8) & 0b1100000000 adcout = adcout | (r [2] un 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 - Spilgtums 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') temperatūra = "{:.2f} ". Format (adc_temp) payload_temp = '{" state ": {" gribēts ": {" 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):

sistēmas_statuss = 1

kamēr taisnība:

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) print "SYSTEM_STATUS %d" %system_status time.sleep (3)

class shadowCallbackContainer:

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

# Pielāgota ēnu atzvanīšana

def customShadowCallback_Delta (self, payload, responseStatus, token): print ("Saņemts delta ziņojums:") ### payload update script payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["state"]) print "DELTA MESSAGE %s" %deltaMessage ### Pieprasījums atjaunināt paziņoto stāvokli 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

####### Lietas definīcija

# Uz AWS IoT balstīts savienojums

myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/home/lin/s/)/"/home/lin/s/", "/home/linaro/shared/AWS/" SUA CHAVE "-private.pem.key", "/home/linaro/shared/AWS/" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Bezgalīga bezsaistes publicēšana rindā myMQTTClient.configureDrainingFrequency (2) # Drenāža: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sek myMQTTClient.configureMQTTOperationTimeout (5) # myTQT coisajsb "," savienots ", 0)

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

####### Ēnu definīcija

# Init AWSIoTMQTTShadowClient

myAWSIoTMQTTShadowClient = Nav myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2T. WA. COM) CA.crt ","/home/linaro/shared/AWS/"SUA CHAVE" -private.pem.key ","/home/linaro/shared/AWS/"SEU CERTIFICADO-certificate.pem.crt")

# AWSIoTMQTTShadowClient konfigurācijamyAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10) # 10 sek myAWSIoureQQT

# Izveidojiet savienojumu ar AWS IoT

myAWSIoTMQTTShadowClient.connect ()

# Izveidojiet ierīciShadow ar pastāvīgu abonementu

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

# Klausieties deltās

deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)

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

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

ja _name_ == "_main_":

ar GPIO (tapas) kā gpio: palaist (gpio)

6. solis: nobeigums

Finalização
Finalização

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

Lai atrisinātu problēmu, ieteicams izmantot MQTT klienta testu, lai veiktu AWS, un pēc tam pārbaudītu, kā pārbaudīt, kā izmantot, lai pārbaudītu dragonboard un nosūtītu informāciju par AWS Cloud:

Ieteicams: