Sisällysluettelo:

Älykkään kodin aloittaminen - Projeto -finaali: 6 vaihetta
Älykkään kodin aloittaminen - Projeto -finaali: 6 vaihetta

Video: Älykkään kodin aloittaminen - Projeto -finaali: 6 vaihetta

Video: Älykkään kodin aloittaminen - Projeto -finaali: 6 vaihetta
Video: Oikeisto suomettumisen rattaissa - Jälkisuomettumisen ruumiinavaus 6 2024, Marraskuu
Anonim
Älykkään kodin aloittaminen - Projeto -finaali
Älykkään kodin aloittaminen - Projeto -finaali

Projeto apresentado é parte do projeto final to curso de IoT aplicado a 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 tiedot/isät "coisas", joka sisältää AWS: n pilven. Paras vaihtoehto on DragonBoard ja 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 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.

Vaihe 1: Materias Necessários

Materias Necessários
Materias Necessários
Materias Necessários
Materias Necessários
  1. Aseta DragonBoard.
  2. 96Boards Linker Mezzanine
  3. LDR (Sensor de luminozidade) sisältää Linker Mezzanine -laitteen.
  4. Lämpötila -anturi liittyy Linker Mezzanineen.
  5. Botão touch que mukana Linker Mezzanine.
  6. Yhdistä Linker Mezzanine -laitteeseen, jossa on ilmastointi tai ilmastointijärjestelmä.
  7. LED -merkkivalo ja Linker Mezzanine, jotka edustavat iluminaaão a ser ativada.
  8. Instalação das bibliotecas citadas no passo 5.

Vaihe 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. Linkkerin mezzanine:

Välttämättömässä tilassa on Mezzanine ja dragonboard. Yksityiskohdat, katso linkki

2. Anturivalaistus (LDR)

O anturi, joka on osa Part Kit Link Link Mezzanine -laitetta ja se on yhdistetty ADC1 -järjestelmään. Lisätietoja yksityiskohdista:

3. Lämpötila -anturi

O -anturi, joka on osa Part Kit Link Link Mezzanine -laitetta ja se on yhdistetty ADC2 -laitteeseen. Lisätietoja yksityiskohdista:

4. Botão Touch

O -anturi, osa Part Kit Link Link Mezzanine ja deverá ser -liitäntä D1. Este botão irá ligar/desligar o system como um todo. O acesso a este botão é somente local. Yksityiskohtaisia tietoja: https://linksprite.com/wiki/index.php5? Title = Touch_…

5. Relé

Vaihtoehtoisesti voit valita Kit da Linker Mezzanine e deverá ser conactado na entrada D2. Ele será utiizado para ligar/desligar o system de A/C. Para detalhes técnicos:

6. LED

O LED -osasarja, jossa on Linker Mezzanine ja deverá ser conactado na Entrada D4. O LED edustaa järjestelmän valaistusta uma casa, seja algum cômodo interno da casa ou externo, como and illuminação de um jardim. Jos vastus on 10 k ohmia, se voi olla yhteensopiva pelin järjestelmän kanssa, ja sen käyttö on sallittua, ja kokemukset anteriores verificou-se conflitos com as portas analógicas. Lisätietoja yksityiskohdista:

7. Sensor de contato magnético

Tämä anturi on tarkoitettu osalle ja faz parte do Kit da Linker Mezzanine -laitteelle. Ele será usado em uma janela ou no portão de uma garagem para informar se a janela/garagem está aberta ou fechada. O anturi on yhdistetty kahdelle eri pequenas (ver foto do Step acima), o sensori proprimamente dito e um pequeno "imã", que ao aproximar-se do sensor on alterar or estado do sensor. O -anturin käyttö ei ole mahdollista (ei normaalia). Quando o imã não está próximo do sensor, o sensor reportará estado aberto. Quando o imã estiver próximo do sensor, tai estado reportado será fechado.

Vaihe 3: Aplicativo Para Controle Remoto

Aplicativo Para Controle Remoto
Aplicativo Para Controle Remoto

Sovellus Ionikehyksen kehittämiseen, https://ionicframework.com/. Pakollinen fazer -lataus tai lataus ja asennuksen viimeinen versio.

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 tai 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 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, or A/C será ligado and permanecerá ligado até a temperatura abaixar em 2 graus da tempreatura definida. Esimerkiksi, iremos harkitsija on lämpötila 23 vuotta. Quando a temperatura interior chegar a 24 graus, or A/C será ligado and permanecerá ligado até a 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.

- Lämpötila ja tiedotustekniikka ja suurin lämpötila ja sisätilojen lämpötila.

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

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

Vaihe 4: Criando Uma "coisa" Na AWS IoT

Criando Uma
Criando Uma

Fazer tai setup do IoT na AWS, os seguintes passos deverão ser seguidos:

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

2) Napsauta "luo asia" ja aloita, "Luo yksi asia". Dê o nome do projeto e clique em Next.

3) Valitse seuraava "Luo asia ilman varmennetta". Nesse -opetusohjelma, jossa käytetään sertifikaatteja, jotka on tarkoitettu etsinnöille, ei suositella fazerin tai IoT -sertifikaatin käyttöä.

4) Nesse momento, sua "coisa" já estará criada. Napsauta "botti", jossa on "coisa" que foi criado para abrir a tela com as opsões. Nessa tela podemos ver os topiaicos Ei cytigo em Python que será apresentado em breve, foram utlizados alguns destes tópicos. Nas opções também podemos ver "varjo", que nada mais é que a informação que está na dragonboard refletida with AWS Cloud.

Vaihe 5: Ohjelma Em Python

Kuten seguintes bibliotecas serão välttämättömyys para a execução do program:

tuonti spidevimport aika tuonti kirjaaminen tuonti json tuonti argparse

libsoc import gpio -ohjelmasta

ajan tuonnin lepotilasta päivämäärän tuontipäivästä, päivämäärän gpio_96boards -tuonnista GPIO: n tuonti AWSIoTPythonSDK: sta.

Segue abaixo código complete program:

tuonti spidevimport aika tuonti kirjaaminen tuonti json tuonti argparse

libsoc import gpio -ohjelmasta

ajan tuonnin lepotilasta päivämäärän tuontipäivästä, päivämäärän gpio_96boardsista tuo GPIO: n AWSIoTPythonSDK: sta. MQTTLib Tuo AWSIoTMQTTClient AWSIoTPythonSDK: sta.

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

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

nastat = ((GPIO_CS, 'ulos'), (BUTTON, 'in'), (RELE, 'out'), (LED, 'out'),)

def set Devices (deltaMessagePython):

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

##### AC

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

jos Rele_Status == 0:

gpio.digital_write (RELE, GPIO. LOW)

##### Sistema de Iluminacao

jos Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) jos 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 - Lämpötila 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 - Luminosity 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') lämpötila = "{:.2f} ". Format (adc_temp) payload_temp = '{" state ": {" toivottu ": {" Luminosidade ":' + adcoutldr + '," Temperatura ":' + lämpötila + '}}}' myMQTTClient.publish ("$ aws/things/DBpyAWS1116/shadow/update", hyötykuorma_temp, 0) return r

def desliga ():

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

def run (gpio):

system_status = 1

vaikka totta:

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)

luokka shadowCallbackContainer:

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

# Muokattu Shadow -soittopyyntö

def customShadowCallback_Delta (self, payload, responseStatus, token): print ("Vastaanotettu delta -viesti:") ### payload update script payloadDict = json.loads (hyötykuorma) deltaMessage = json.dumps (payloadDict ["tila"]) print "DELTA MESSAGE %s" %deltaMessage ### Ilmoitetun tilan päivityspyyntö 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

####### Asian määritelmä

# AWS IoT -varmennepohjainen yhteys

myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/home/root/lin/)/"/home/lin/, "/home/linaro/shared/AWS/" SUA CHAVE "-private.pem.key", "/home/linaro/shared/AWS/" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Infinite offline Julkaise jono myMQTTClient.configureDrainingFrequency (2) # Tyhjennys: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 s myMQTTClient.configureMQTTOperationTimeout (5) #tunnus #yhteys coisajsb "," kytketty ", 0)

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

####### Varjon määritelmä

# Init AWSIoTMQTTShadowClient

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

# AWSIoTMQTTShadowClient -määrityksetAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10) # 10 sekunnin myAWSIoCTQT

# Yhdistä AWS IoT: hen

myAWSIoTMQTTShadowClient.connect ()

# Luo laiteShadow jatkuvalla tilauksella

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

# Kuuntele deltat

deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)

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

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

jos _nimi_ == "_pää_":

GPIO (nastat) gpio: run (gpio)

Vaihe 6: Finalização

Finalização
Finalização

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

Mahdollisten vianmääritysten yhteydessä on suositeltavaa käyttää MQTT-asiakasohjelman testausta AWS-palvelussa, todentaa varmenteet ja todentaa ne mielikuvitukseksi enviadas pelata lohikäärmettä ja lähettää sen muodonmuutos AWS-pilveen:

Suositeltava: