Mục lục:

Bắt đầu một ngôi nhà thông minh - Projeto Final: 6 bước
Bắt đầu một ngôi nhà thông minh - Projeto Final: 6 bước

Video: Bắt đầu một ngôi nhà thông minh - Projeto Final: 6 bước

Video: Bắt đầu một ngôi nhà thông minh - Projeto Final: 6 bước
Video: ACC - Rainbow Ball Bị Rơi Vỡ Tan Tành Và Cái Kết. 2024, Tháng mười một
Anonim
Khởi động Ngôi nhà Thông minh - Projeto Final
Khởi động Ngôi nhà Thông minh - Projeto Final

Projeto apresentado é parte do projeto cuối cùng do curso de IoT aplicado một Ngôi nhà thông minh

O projeto mostrado a seguir é parte do projeto end a ser apresentado no curso de IoT aplicada a Smart Home, quecompe 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 cloud da AWS. Para uma primeira iteração com a DragonBoard e IoT como um todo, decidiu-se fazer um Sistema 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.

Bước 1: Materias N Needários

Materias N Needários
Materias N Needários
Materias N Needários
Materias N Needários
  1. Đặt 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. Botão touch que acompanha a Linker Mezzanine.
  6. Relé acompanha a Linker Mezzanine, utlizado para ligar o systema de A / C.
  7. LED acompanha a Linker Mezzanine, que agentará a iluminação a ser ativada.
  8. Instalação das bibliotecas citadas no passo 5.

Bước 2: Cảm biến, 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. Tầng lửng liên kết:

Será needário conectar a sa khoáng Mezzanine na dragonboard. Para detalhes, liên kết tham khảo

2. Độ sáng của cảm biến (LDR)

O sensor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC1. Para detalhes técnicos:

3. Cảm biến de Temperatura

O sensor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC2. Para detalhes técnicos:

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. O acesso a este botão é somente địa phương. Para detalhes técnicos: 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 Sistema de A / C. Para detalhes técnicos:

6. LED

O LED é parte do kit da Linker Mezzanine e deverá ser conectado na entrada D4. O LED đại diện cho điện thoại di động, đại diện cho đèn LED, cômodo interno da casa ou externo, como a iluminação de um jardim. Foi adicionado um điện trở de 10k ohm em sério com o já beingente para diminuir a Corrente effizada pelo sistema, já que em Experiências anteriores verifyficou-se conflitos com as portas analógicas. Para detalhes técnicos:

7. Cảm biến de contato magnético

Este sensor foi 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 sensor é um liên hợp 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 o estado do sensor. O cảm biến 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.

Bước 3: Aplicativo Para Control Remoto

Aplicativo Para Contrale Remoto
Aplicativo Para Contrale Remoto

O aplicativo foi desenvolvido com o Ionic Framework, https://ionicframework.com/. Será needário fazer o download e 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 board dragonboard para atualização dos trạng thái 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 configurado, as luzes se acenderão automaticamente. Quando a intensidade de luz aumentar além do valor Defdo, as ruzes 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 Defr o valor desejado da temperatura. Assim que a temperatura da casa estiver maior do que a temperatura de acionamento, o A / C será ligado e permanecerá ligado até a temperatura abaixar em 2 graus da tempreatura Defda. Por exelo, iremos coirar que a temperatura é de 23 graus. Quando a temperatura nội thất chegar a 24 graus, o A / C será ligado e permanecerá ligado até a temperatura chegar a 20 graus, desligando então. Depois o ciclo se repeattirá.

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

- Temperatura é apenas Informativa e mostra a temperatura do nội thất da casa.

- Luminosidade é apesas Informativa e mostra o valor da luminosidade atual.

Segue em anexo os arquivos home.html e home.ts context códigos para comunicação com một đám mây AWS e atualização làm ứng dụng.

Bước 4: Criando Uma "coisa" Na AWS IoT

Criando Uma
Criando Uma

Para fazer o setup do IoT na AWS, os seguintes passos deverão ser seguidos:

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

2) Clique "tạo ra một thứ" e então, "Tạo một thứ duy nhất". Dê o nome do projeto e clique em Next.

3) Na tela seguinte, clique em "Tạo một thứ mà không cần chứng chỉ". Nesse hướng dẫn não iremos useizar os Certificados por questões práticas, porém não é recomendado fazer o uso de IoT sem chứng chỉ.

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 Có thể, assim como é uma ótima ferramenta para xử lý sự cố. Không 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 feedbacktida na AWS Cloud.

Bước 5: Lập trình Em Python

Như seguintes bibliotecas serão needárias para a executive do programma:

import spidevimport time import log log import json import argparse

từ libsoc nhập gpio

từ thời gian nhập ngủ từ ngày nhập datetime, datetime từ gpio_96boards nhập GPIO từ AWSIoTPythonSDK. MQTTLib nhập AWSIoTMQTTClient từ AWSIoTPythonSDK. MQTTLib

Segue abaixo código hoàn thành chương trình:

import spidevimport time import log log import json import argparse

từ libsoc nhập gpio

từ thời gian nhập chế độ ngủ từ ngày nhập datetime, datetime từ gpio_96boards nhập GPIO từ AWSIoTPythonSDK. MQTTLib nhập AWSIoTMQTTClient từ AWSIoTPythonSDK. MQTTLib nhập AWSIoTMQTTShadowClient

GPIO_CS = GPIO.gpio_id ('GPIO_CS') #Analog Cổng

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

ghim = ((GPIO_CS, 'out'), (NÚT, 'in'), (RELE, 'out'), (LED, 'out'),)

def setdevices (deltaMessagePython):

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

##### AC

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

nếu Rele_Status == 0:

gpio.digital_write (RELE, GPIO. LOW)

##### Sistema de Iluminacao

if Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) if 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 - Nhiệt độ 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 - Độ sáng 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') temperatura = "{:.2f} ". Format (adc_temp) payload_temp = '{" state ": {" mong muốn ": {" Luminosidade ":' + adcoutldr + '," Temperatura ":' + temperatura + '}}}' myMQTTClient.publish ("$ aws / things / DBpyAWS1116 / shadow / update", payload_temp, 0) trả về r

def desliga ():

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

def run (gpio):

system_status = 1

trong khi Đúng:

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

# Gọi lại Custom Shadow

def customShadowCallback_Delta (self, payload, responseStatus, token): print ("Đã nhận được thông báo delta:") ### payload update script payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["state"]) print "DELTA MESSAGE% s"% deltaMessage ### Yêu cầu cập nhật trạng thái được báo cáo 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

####### Định nghĩa điều

# Kết nối dựa trên chứng chỉ AWS IoT

myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / linartro / shared, "/ home / linaro / shared / AWS /" SUA CHAVE "-private.pem.key", "/ home / linaro / shared / AWS /" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Infinite offline Xuất bản xếp hàng myMQTTClient.configureDrainingFrequency (2) # Draining: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 giây myMQTTClient.configureMQTTOperationTubimectlientlient. 5 coisajsb "," đã kết nối ", 0)

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

####### Định nghĩa bóng

# Init AWSIoTMQTTShadowClient

myAWSIoTMQTTShadowClient = Không có myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2.amazonaws.com", 8883) myAWSIo / shared home ' CA.crt "," / home / linaro / shared / AWS / "SUA CHAVE" -private.pem.key "," / home / linaro / shared / AWS / "SEU CERTIFICADO-certificate.pem.crt")

# AWSIoTMQTTShadowClient cấu hìnhmyAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10) # 10 giây myAWSIoTMQTTShadowClient.configure 5 giâyQTTOperation

# Kết nối với AWS IoT

myAWSIoTMQTTShadowClient.connect ()

# Tạo một thiết bịShadow với đăng ký liên tục

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

# Nghe trên delta

deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)

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

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

nếu _name_ == "_main_":

với GPIO (chân) là gpio: run (gpio)

Bước 6: Finalização

Finalização
Finalização

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

Khắc phục sự cố para um Possível, recomenda-se usar a função MQTT Client TEST do AWS, onde é possível verifyficar e as mensagens enviadas pela dragonboard está sendo atualizada de forma correta na AWS Cloud: https://us-west-2.console.aws.amazon.com / iotv2 / hom…

Đề xuất: