Daftar Isi:

Memulai Rumah Pintar - Final Projeto: 6 Langkah
Memulai Rumah Pintar - Final Projeto: 6 Langkah

Video: Memulai Rumah Pintar - Final Projeto: 6 Langkah

Video: Memulai Rumah Pintar - Final Projeto: 6 Langkah
Video: How to Paint a Room | Painting Tips | The Home Depot 2024, Desember
Anonim
Memulai Rumah Pintar - Projeto Final
Memulai Rumah Pintar - Projeto Final

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

O projeto mostrado a seguir é parte do projeto final a ser apresentado no curso de IoT penerapan Smart Home, que terdiri dari sensor dan atuadores conectados dengan DrangonBoard + Linker Mezzanine, um aplikasi desenvolvido com o ionic (ser termasuk) e sebagai em bre informações/dados das "coisas" serão salvados na cloud da AWS. Para uma primeira iteração com a DragonBoard dan IoT como um todo, memutuskan fazer um sistem de acendimento automático de luzes, com um sensor de luminosidade, uma chave liga/desliga para ativar um aparelho de ar-condicionado de acordo sebelum -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.

Langkah 1: Materi yang Diperlukan

Bahan yang Diperlukan
Bahan yang Diperlukan
Materi yang Diperlukan
Materi yang Diperlukan
  1. Tempatkan Papan Naga.
  2. 96Boards Linker Mezzanine
  3. Sensor de luminozidade (LDR) yang menyertai Linker Mezzanine.
  4. Sensor de temperaturea 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 melengkapi Linker Mezzanine, dengan perwakilan yang iluminação dan ser ativada.
  8. Instalação das bibliotecas citadas no passo 5.

Langkah 2: Sensor, Atuadores E Conexões

Sensor, Atuadores E Conexões
Sensor, Atuadores E Conexões
Sensor, Atuadores E Conexões
Sensor, Atuadores E Conexões

1. Linker Mezzanine:

Será necessário conectar a placa Mezzanine na dragonboard. Untuk lebih jelasnya, link konsultan

2. Sensor luminosidade (LDR)

O sensor dan bagian dari Kit da Linker Mezzanine dan deverá ser conectado dan entrada ADC1. Para detalhes técnicos:

3. Sensor Suhu

O sensor dan bagian dari Kit da Linker Mezzanine dan deverá ser conectado dan entrada ADC2. Para detalhes técnicos:

4. Botão Touch

O sensor dan bagian dari Kit da Linker Mezzanine dan deverá ser conectado dan entrada D1. Este botão irá ligar/desligar o sistema como um todo. O acesso a este botão é somente lokal. Para detalhes técnicos:https://linksprite.com/wiki/index.php5?title=Touch_…

5. Rele

O relé é parte do Kit da Linker Mezzanine dan deverá ser conectado na entrada D2. Pilihan untuk ligar/desligar atau sistem A/C. Para detalhes técnicos:

6. LED

O LED dan perlengkapannya untuk Linker Mezzanine dan perangkat yang terhubung dengan entrada D4. O LED representará o sistem iluminação de uma casa, seja algum cômodo interno da casa ou externo, como a iluminação de um jardim. Anda dapat menambahkan resistor 10k ohm ke dalam rangkaian untuk memastikan keberadaan untuk meminimalkan penggunaan yang tepat untuk sistem, dan pengalaman yang sudah terbukti sebelumnya. Para detalhes técnicos:

7. Sensor 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 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 o estado do sensor. O sensor 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 lakukan sensor, o estado reportado será fechado.

Langkah 3: Aplikasi Para Controle Remoto

Aplikasi Para Controle Remoto
Aplikasi Para Controle Remoto

Aplikasi untuk desenvolvido com o Ionic Framework, https://ionicframework.com/. Será perlu fazer atau unduh dan 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 dan tuaadores.

- 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 definido, as luzes 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 definir o valor desejado da suhu. Asim que a suhu da casa estiver utama lakukan que a suhu de acionamento, o A/C será ligado dan permanecerá ligado até a suhu abaixar em 2 graus da tempreatura definida. Sebagai contoh, iremos mempertimbangkan que a temperaturea é de 23 graus. Quando a temperaturea interior chegar a 24 graus, o A/C será ligado dan permanecerá ligado até a temperature chegar a 20 graus, desligando então. Depois o ciclo se repetirá.

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

- Temperatura é apenas informativa dan mostra a temperature do interior da casa.

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

Segue em anxo os arquivos home.html dan home.ts bersaing os códigos para comunicação com a cloud AWS dan atualização melakukan aplikasi.

Langkah 4: Criando Uma "coisa" Na AWS IoT

Criando Uma
Criando Uma

Para fazer o setup melakukan IoT dan AWS, os seguintes passos deverão ser seguidos:

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

2) Klik "buat sesuatu" e então, "Buat satu hal". D o nome do projeto e clique em Next.

3) Na tela seguinte, klik em "Buat sesuatu tanpa sertifikat". Tutorial não iremos utilizar 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 sebagai pilihan. Informasi lebih lanjut tentang topik tertentuMQTT pertanyaan yang akan digunakan untuk mengetahui lebih lanjut dan lebih lengkap untuk dapat menyelesaikan masalah. Tidak ada kode 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 refletida na AWS Cloud.

Langkah 5: Programa Em Python

Sebagai seguintes bibliotecas serão necessárias para a execução do programa:

impor spidevimport waktu impor logging impor json import argparse

dari libsoc impor gpio

dari waktu impor tidur dari tanggal impor datetime, datetime dari gpio_96boards impor GPIO dari AWSIoTPythonSDK. MQTTLib impor AWSIoTMQTTClient dari AWSIoTPythonSDK. MQTTLib

Segue abaixo código selesai untuk melakukan programa:

impor spidevimport waktu impor logging impor json import argparse

dari libsoc impor gpio

dari waktu impor tidur dari tanggal impor datetime, datetime dari gpio_96boards impor GPIO dari AWSIoTPythonSDK. MQTTLib impor AWSIoTMQTTClient dari AWSIoTPythonSDK. MQTTLib impor AWSIoTMQTTShadowClient

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

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

pin = ((GPIO_CS, 'keluar'), (TOMBOL, 'masuk'), (RELE, 'keluar'), (LED, 'keluar'),)

def setdevices(deltaMessagePython):

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

##### AC

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

jika Rele_Status == 0:

gpio.digital_write(RELE, GPIO. LOW)

##### Sistema de Iluminacao

jika Led_Status == 1: gpio.digital_write(LED, GPIO. HIGH) jika Led_Status == 0: gpio.digital_write(LED, GPIO. LOW)

def readadc(gpio):

gpio.digital_write(GPIO_CS, GPIO. HIGH)

waktu.tidur(0.0002) gpio.digital_write(GPIO_CS, GPIO. LOW) r = spi.xfer2([0x01, 0xA0, 0x00])#ADC2 - Suhu 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') temperaturea = "{:.2f}".format(adc_temp) payload_temp = '{"state":{"desired": {"Luminosidade": ' + adcoutldr + ', "Temperatura": ' + temperaturea + '}}}' myMQTTClient.publish ("$aws/things/DBpyAWS1116/shadow/update", payload_temp, 0) mengembalikan r

def desliga():

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

def run (gpio):

sistem_status = 1

sementara Benar:

time.sleep(2) button_value = gpio.digital_read(BUTTON) print ("----") time.sleep(0.25) jika button_value == 1: jika system_status == 0: system_status = 1 else: system_status = 0 desliga () jika system_status == 1: nilai = readadc(gpio) print "SYSTEM_STATUS %d" %system_status time.sleep(3)

kelas shadowCallbackContainer:

def _init_(self, deviceShadowInstance): self.deviceShadowInstance = deviceShadowInstance

# Panggilan balik Bayangan Khusus

def customShadowCallback_Delta(self, payload, responseStatus, token): print("Menerima pesan delta:") ### skrip pembaruan payload payloadDict = json.loads(payload) deltaMessage = json.dumps(payloadDict["state"]) print "DELTA MESSAGE %s" %deltaMessage ### Permintaan untuk memperbarui status yang dilaporkan newPayload = '{"state":{"reported":' + deltaMessage + '}}' deltaMessagePython = json.loads(deltaMessage) setdevices(deltaMessagePython)

spi = spidev. SpiDev()

spi.open(0, 0) spi.max_speed_hz = 10.000 spi.mode = 0b00 spi.bits_per_word = 8

####### Definisi hal

# Koneksi berbasis sertifikat AWS IoT

myMQTTClient = AWSIoTMQTTClient("DBpyAWS1116") myMQTTClient.configureEndpoint("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials("/home/linaro/shared/AWS/root-CA.crt"root-CA.crt", "/home/linaro/shared/AWS/"SUA CHAVE"-private.pem.key", "/home/linaro/shared/AWS/"SEU CERTIFICADO"-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing(- 1) # Infinite offline Publikasikan antrian myMQTTClient.configureDrainingFrequency(2) # Pengeringan: 2 Hz myMQTTClient.configureConnectDisconnectTimeout(10) # 10 detik myMQTTClient.configureMQTTOperationTimeout(5) # 5 detik #sambungkan dan publikasikan myMQTTClient.connect() myMQTTClient(). coisajsb", "terhubung", 0)

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

####### Definisi bayangan

# Init AWSIoTMQTTShadowClient

myAWSIoTMQTTShadowClient = Tidak ada myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint("SEU END-POINT.us-west-2.amazonaws.com", 8883) myAWSIoTMQTTShadowClient/"/home/SOS/configureShadowClient. 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 detik myAWSIoTMQTTShadowClient.configureMQTTOperationTimeout(5) # 5 detik

# Hubungkan ke AWS IoT

myAWSIoTMQTTShadowClient.connect()

# Buat bayangan perangkat dengan langganan terus-menerus

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

# Dengarkan di delta

deviceShadowHandler.shadowRegisterDeltaCallback(shadowCallbackContainer_Bot.customShadowCallback_Delta)

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

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

jika _name_ == "_main_":

dengan GPIO(pin) sebagai gpio: run(gpio)

Langkah 6: Finalisasi

Finalisasi
Finalisasi

Apa yang harus dilakukan untuk menyelesaikan masalah anteriores, pengembangan inisializar atau sistem eksekusi dan eksekusi tanpa sandi 5 dan inisializar aplikasi melakukan Ionic, usando atau komando Servis ionik.

Pemecahan masalah yang mungkin, rekomendasikan untuk bersenang-senang, UJI Klien MQTT lakukan AWS, lakukan verifikasi yang mungkin dilakukan saat mensagens enviadas pela dragonboard está sendo atualizada de forma correta na AWS Cloud:

Direkomendasikan: