İçindekiler:

Akıllı Bir Eve Başlamak - Projeto Final: 6 Adım
Akıllı Bir Eve Başlamak - Projeto Final: 6 Adım

Video: Akıllı Bir Eve Başlamak - Projeto Final: 6 Adım

Video: Akıllı Bir Eve Başlamak - Projeto Final: 6 Adım
Video: Gelsin Hayat Bildiği Gibi - 6.Bölüm 2024, Kasım
Anonim
Akıllı Bir Ev Başlatmak - Projeto Final
Akıllı Bir Ev Başlatmak - Projeto Final

Bir Akıllı Ev için IoT uygulaması için son projeyi sunmak

O projeto çoğu zaman bir bölüm sonu projeto son bir ser asunucu yok IoT uygulamaları bir Akıllı Ev, bütünleşik algılayıcılar ve atuadores conectados ve DrangonBoard + Linker Mezzanine, um aplikasyonları desenvolvido com o ionic (bir hizmet dahil) em bre AWS'de bulutta bilgi/das "coisas" serão salvados. DragonBoard ve Nesnelerin İnterneti ile ilgili tüm işlemler, otomatikleştirme, aydınlatma, aydınlatma, iletişim sensörleri için tüm aşamalar için geçerlidir. - Yakın çevredeki sensörler için herhangi bir bağlantı noktası kurulumu yok, aynı zamanda enformasyon dışında da özel mülkler için en uygun bağlantı noktası.

Adım 1: Gerekli Malzemeler

Gerekli Malzemeler
Gerekli Malzemeler
Gerekli Malzemeler
Gerekli Malzemeler
  1. DragonBoard'u yerleştirin.
  2. 96Boards Linker Mezzanine
  3. Sensör de luminozidade (LDR) ve bir Linker Mezzanine ile birlikte.
  4. Bir Linker Mezzanine ile birlikte sıcaklık sensörü.
  5. Botão touch que acompanha a Linker Mezzanine.
  6. Relé acompanha a Linker Mezzanine, A/C sistemi için utlizado para ligar.
  7. LED ile birlikte bir Bağlantı Ara Kat, aydınlatma ve aydınlatma için.
  8. Instalação das bibliotecas citadas no passo 5.

Adım 2: Sensörler, Atuadores E Conexões

Sensörler, Atuadores E Conexões
Sensörler, Atuadores E Conexões
Sensörler, Atuadores E Conexões
Sensörler, Atuadores E Conexões

1. Bağlayıcı Ara Kat:

Será necessário conectar bir placa Asma kat ve dragonboard. Ayrıntılar için, danışman bağlantısı

2. Sensör aydınlatması (LDR)

O sensör ve kısmi bağlantı Kiti ve Bağlantı Aralığı ve ADC1 girişi. Teknik bilgilerle ilgili ayrıntılar:

3. Sıcaklık Sensörü

O sensör ve kısmi bağlantı Kiti ve Bağlayıcı Ara Kat ve ADC2 girişli bağlantı. Teknik bilgiler:

4. Botão Dokunuşu

O sensor é parte do Kit ve Linker Mezzanine ve devera seri bağlantı D1. Este botão irá lig/desligar o sistema como um todo. O acesso a este botão é bazı yerel. Ayrıntılar için teknik bilgiler:https://linksprite.com/wiki/index.php5?title=Touch_…

5. Rele

D2'ye bağlı olarak Bağlayıcı Ara Kat ve Deverá'ya bağlı olarak. A/C. Para detalhes técnicos sistemi/desligar o sistema utiizado para birimi:

6. LED

O LED é parte do kit ve Linker Mezzanine ve D4 girişli bağlantı serileri. O LED temsili sistemi, aydınlatma sistemi de uma casa, seja algum cômodo interno da casa ou externo, como a iluminação de um jardim. 10k ohm'luk bir dizi direnç için foi ek rezistör, mevcut parasal olarak azalan bir doğrultu kullanımı, pelo sistema, já que em experiências önceki ve doğrulanmış conflitos com gibi portas analógicas com. Teknik ayrıntılar için:

7. Manyetik sensör

En iyi sensörler için bir parça satın alın ve bir parça Linker Mezzanine yapın. Amerika Birleşik Devletleri'nde, garajda herhangi bir yere gitmeden önce, bir janela/garagem'i ziyaret edin. O sensör, 2 pequenas peças (ver foto do Step acima), o sensör proprimamente dito um pequeno "imã", que ao aproximar-se sensör irá alterar o estado do sensörü. O sensör kullanımı, projeto foi um N/A (normalmente aberto). Sensörü araştırmak için araştırma yapmak, sensör raporlarını denetlemek. Quando o imã estiver próximo do sensor, o estado raporu será fechado.

Adım 3: Aplicativo Para Controle Remoto

Aplicativo Para Controle Uzaktan Kumanda
Aplicativo Para Controle Uzaktan Kumanda

O aplicativo foi desenvolvido com o Ionic Framework, https://ionicframework.com/. En son sürümü yüklemek için gerekli güncellemeleri indirin.

AWS'de (AWS IoT- https://aws.amazon.com/iot/) bir bulut ile iletişim kurun.

- Sistema de Iluminação Mostra o estado do sitelerima de iluminação, ligado ou desligado. Otomatik güncellemeler olarak, yeni bir ışıklandırma işlevi görüyor. Quando a intensidade de luz aumentar além do valor definido, luzes se apagarão olarak.

- Klima sistemi veya klima sistemi. Também é olasılık tanımı veya yiğitlik desejado da sıcaklık. Sıcaklığı en aza indirgemek için şu ana kadar bekleyin: Klima, klima, klima, klima, hava sıcaklığı, sıcaklık kontrolü. Örnek olarak, sıcaklığın 23'e ulaştığını düşünün. 24 graus'luk bir sıcaklık iç kabini, o Klima ligado ve permanecerá ligado até bir temperatura chegar bir 20 graus, en son. Depois veya ciclo se tekrar.

- Garagem enformasyon, gerçek bir garajda, se aberta ou fechada.

- Temperatura é apenas informativa ve çoğu zaman bir iç mekan sıcaklığı.

- Luminosidade é apesas informativa ve en fazla yiğitlik ve luminosidade gerçek.

Ana sayfa.html ve ana sayfa.ts uygulamaları için bir bulut AWS ve uygulama ile iletişim kurun.

Adım 4: Criando Uma "coisa" Na AWS IoT

Criando Uma
Criando Uma

Para fazer o kurulum yapmak IoT ve AWS, os seguintes passos deverão ser seguidos:

1) Criar um projeto no AWS IoT atravé do bağlantısı:

2) Clique "bir şey yarat" ve "tek bir şey yarat". Sıradaki.

3) Na tela seguinte, clique em "Sertifika olmadan bir şey yaratın". Nesse öğreticisi mevcut değil, uygulamalar ve uygulamalar için sertifikalar ve uygulamalar için tavsiyeler.

4) Nesse anı, sua "coisa" já estará criada. Clique no botão da "coisa" que foi criado para abrir bir tela com olarak opções. Nessa tela podemos ver os picosMQTT que podem ser usados para fazer bir atualização dos dados bir serem enviados para a Sorun giderme için sorun giderme. Python'dan hiçbir kod yazmaz. AWS Cloud'da bir "gölge" için en iyi uygulamalar, en güncel bilgiler.

Adım 5: Programa Em Python

Seguintes bibliotecas serão necessárias para a execução do programa olarak:

içe aktarma spidevimport zamanı içe aktarma günlüğü içe aktarma json içe aktarma argparse

libsoc ithalat gpio'dan

zamandan itibaren uykuyu datetime'dan içe aktarma tarihinden, gpio_96boards'tan datetime'ı AWSIoTPythonSDK'dan içe aktarın. MQTTLib AWSIoTMQTTClient'i AWSIoTPythonSDK. MQTTLib'den içe aktarın

Programlamayı tamamlayın:

içe aktarma spidevimport zamanı içe aktarma günlüğü içe aktarma json içe aktarma argparse

libsoc import gpio'dan

zamandan itibaren uykuyu datetime'dan içe aktarma tarihinden, tarihsaati gpio_96boards'tan içe aktarma GPIO'yu AWSIoTPythonSDK'dan içe aktarma. MQTTLib AWSIoTMQTTClient'i AWSIoTPythonSDK'dan içe aktarma. MQTTLib'den içe aktarma AWSIoTMQTTShadowClient

GPIO_CS = GPIO.gpio_id('GPIO_CS') #Analog Bağlantı Noktası

DÜĞME = GPIO.gpio_id('GPIO_A') RELE = GPIO.gpio_id('GPIO_C') LED = GPIO.gpio_id('GPIO_G')

pinler = ((GPIO_CS, 'çıkış'), (BUTTON, 'in'), (RELE, 'out'), (LED, 'out'),)

def setdevices(deltaMessagePython):

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

##### AC

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

eğer Rele_Status == 0:

gpio.digital_write(RELE, GPIO. LOW)

##### Sistema de Iluminacao

Led_Status == 1: ise gpio.digital_write(LED, GPIO. HIGH) Led_Status == 0 ise: 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 - Sıcaklık 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 - Parlaklık 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') sıcaklık = "{:.2f}".format(adc_temp) payload_temp = '{"durum":{"arzu edilen": {"Luminosidade": ' + adcoutldr + ', "Temperatura": ' + sıcaklık + '}}}' 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 çalıştır(gpio):

sistem_durumu = 1

Doğru iken:

time.sleep(2) button_value = gpio.digital_read(BUTTON) print ("----") time.sleep(0.25) ise button_value == 1: if system_status == 0: system_status = 1 else: system_status = 0 desliga () eğer system_status == 1: değer = readadc(gpio) "SYSTEM_STATUS %d" yazdırın %system_status time.sleep(3)

sınıf shadowCallbackContainer:

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

# Özel Gölge geri arama

def customShadowCallback_Delta(self, payload, responseStatus, token): print("Bir delta mesajı alındı:") ### payload güncelleme komut dosyası payloadDict = json.loads(payload) deltaMessage = json.dumps(payloadDict["durum"]) yazdır "DELTA MESAJI %s" %deltaMessage ### Bildirilen durumu güncelleme isteği newPayload = '{"state":{"reported":' + 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

####### Şey tanımı

# AWS IoT sertifikası tabanlı bağlantı

myMQTTClient = AWSIoTMQTTClient("DBpyAWS1116") myMQTTClient.configureEndpoint("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials("/home/linaro/root-CAAWSrt", "/home/linaro/shared/AWS/"SUA CHAVE"-private.pem.key", "/home/linaro/shared/AWS/"SEU CERTIFICADO"-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing(- 1) # Sonsuz çevrimdışı Yayın kuyruğu myMQTTClient.configureDrainingFrequency(2) # Boşaltma: 2 Hz myMQTTClient.configureConnectDisconnectTimeout(10) # 10 sn myMQTTClient.configureMQTTOperationTimeout(5) # 5 sec #connect ve myMQTTClient.connect() myMQ(TT yayınlayın) coisajsb", "bağlı", 0)

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

####### Gölge tanımı

# AWSIoTMQTTShadowClient'i başlat

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

# AWSIoTMQTTShadowClient yapılandırmamyAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime(1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout(10) # 10 sn myAWSIoTMQTTShadowClient.configureMQTTOperationTimeout(5) # 5 sec

# AWS IoT'ye bağlanın

myAWSIoTMQTTShadowClient.connect()

# Kalıcı aboneliğe sahip bir deviceShadow oluşturun

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

# Deltaları dinle

deviceShadowHandler.shadowRegisterDeltaCallback(shadowCallbackContainer_Bot.customShadowCallback_Delta)

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

myMQTTClient.publish("$aws/things/DBpyAWS1116/shadow/update", '{"durum":{"istenen": {"SystemStatus":1, "SisIlumi":0, "AC":0, "Garagem": "Fechada", "Sıcaklık": 25, "Luminosidade": 123}}}', 0)

eğer _name_ == "_main_":

gpio olarak GPIO(pinler) ile: run(gpio)

Adım 6: Finalização

Finalização
Finalização

İyonik, İyonik hizmetlerden yararlanma, İyonik hizmetlerden yararlanma.

Olası sorun giderme, bir MQTT İstemcisinin AWS'yi test etmesi için bir işlev önermesi, AWS Cloud'u doğrulamak için onde é é-possive e as mensagens enviadas pela dragonboard está gönderilebilir: https://us-west-2.console.aws.amazon.com/iotv2/hom…

Önerilen: