সুচিপত্র:

একটি স্মার্ট হোম শুরু করা - প্রজেটো ফাইনাল: 6 টি ধাপ
একটি স্মার্ট হোম শুরু করা - প্রজেটো ফাইনাল: 6 টি ধাপ

ভিডিও: একটি স্মার্ট হোম শুরু করা - প্রজেটো ফাইনাল: 6 টি ধাপ

ভিডিও: একটি স্মার্ট হোম শুরু করা - প্রজেটো ফাইনাল: 6 টি ধাপ
ভিডিও: স্মার্টভাবে প্রেজেন্টেশন দেবার ৬ টি পদ্ধতি ( 6 Techniques to give smart Presentation) 2024, নভেম্বর
Anonim
একটি স্মার্ট হোম শুরু করা - প্রজেটো ফাইনাল
একটি স্মার্ট হোম শুরু করা - প্রজেটো ফাইনাল

Projeto apresentado é parte do projeto final do 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) 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 amar-condicionado -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: ম্যাটেরিয়াস প্রয়োজনীয়তা

উপাদান প্রয়োজনীয়তা
উপাদান প্রয়োজনীয়তা
উপাদান প্রয়োজনীয়তা
উপাদান প্রয়োজনীয়তা
  1. ড্রাগন বোর্ড রাখুন।
  2. 96 বোর্ড লিঙ্কার মেজানাইন
  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 representará a iluminação a ser ativada।
  8. Instalação das bibliotecas citadas no passo 5।

ধাপ 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. লিঙ্কার মেজানাইন:

Será essentialário conectar a placa Mezzanine na dragonboard। প্যারা ডিটেইলস, কনসালটারের লিঙ্ক

2. সেন্সর luminosidade (LDR)

O সেন্সর é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC1। প্যারা ডিটেলেস টেকনিক:

3. সেন্সর ডি টেম্পেরাটুরা

O সেন্সর é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC2। প্যারা ডিটেলেস টেকনিকো:

4. Botão টাচ

O সেন্সর é 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 local। প্যারা ডিটেলেশ টেকনিক: https://linksprite.com/wiki/index.php5? Title = টাচ_…

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 representará o sistema de iluminação de uma casa, seja algum cômodo interno da casa ou externo, como a iluminação de um jardim। Foi adicionado um resistor de 10k ohm em sério com o já existente para diminuir a corrente utilizada pelo sistema, já que em experiências anteriores verificou-se conflitos com as portas analógicas। প্যারা ডিটেলেস টেকনিকো:

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 সেন্সর m 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 সেন্সর 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।

ধাপ 3: অ্যাপলিক্যাটিভো প্যারা কন্ট্রোল রিমোটো

অ্যাপলিক্যাটিভো প্যারা কন্ট্রোল রিমোটো
অ্যাপলিক্যাটিভো প্যারা কন্ট্রোল রিমোটো

O aplicativo foi desenvolvido com o Ionic Framework, https://ionicframework.com/। Será essentialá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 placa dragonboard para atualização dos status 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 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 temperatura। Assim que a temperatura da casa estiver maior do que a temperatura de acionamento, o A/C será ligado e permanentecerá ligado até a temperatura abaixar em 2 graus da tempreatura definida। উদাহরণস্বরূপ, iremos বিবেচনা করা হয় একটি তাপমাত্রা 23 ডি 23 গ্রাস। Quando a temperatura অভ্যন্তরীণ চেগার a 24 graus, o A/C será ligado e permanentecerá 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।

- Temperatura é apenas informativa e mostra a temperatura do Interior da casa।

- 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: ক্রিয়েন্দো উমা "coisa" Na AWS IoT

ক্রিয়েন্দো উমা
ক্রিয়েন্দো উমা

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

ক্রিয়ার উম প্রজেটো কোন এডব্লিউএস আইওটি অ্যাট্রাভ লিঙ্ক:

2) "একটি জিনিস তৈরি করুন" এবং "একক জিনিস তৈরি করুন" ক্লিক করুন। Dê o nome do projeto e clique em Next।

3) না তেলা সেগুইন্ট, চক্র em "সার্টিফিকেট ছাড়া একটি জিনিস তৈরি করুন"। Nesse 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) নেসেস মোমেন্টো, সুয়া "কোইসা" জে এস্টার ক্রিডা। 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 could, assim como é uma ótima ferramenta para troubleshooting। No código em Python que será apresentado em breve, foram utlizados alguns destes tópicos। Nas opções também podemos ver a "ছায়া", que nada mais é que a informação que está na dragonboard refletida na AWS Cloud।

ধাপ 5: প্রোগ্রাম এম পাইথন

যেমন seguintes bibliotecas serão requárias para a execução do programma:

আমদানি spidevimport সময় আমদানি লগিং আমদানি json আমদানি argparse

libsoc আমদানি gpio থেকে

সময় থেকে আমদানি ঘুম ডেটটাইম আমদানি তারিখ থেকে, gpio_96boards থেকে ডেটাটাইম AWSIoTPythonSDK থেকে GPIO আমদানি করে। MQTTLib আমদানি AWSIoTMQTTClient থেকে AWSIoTPythonSDK. MQTTLib

Segue abaixo código সম্পূর্ণ করার জন্য প্রোগ্রাম:

আমদানি spidevimport সময় আমদানি লগিং আমদানি json আমদানি argparse

libsoc আমদানি gpio থেকে

সময় থেকে আমদানি ঘুম ডেটটাইম আমদানি তারিখ থেকে, gpio_96boards থেকে ডেটাটাইম AWSIoTPythonSDK থেকে GPIO আমদানি করে।

GPIO_CS = GPIO.gpio_id ('GPIO_CS') #অ্যানালগ পোর্ট

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

পিন = ((GPIO_CS, 'আউট'), (বাটন, 'ইন'), (RELE, 'আউট'), (LED, 'আউট'),)

def setdevices (deltaMessagePython):

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

##### এসি

যদি Rele_Status == 1: gpio.digital_write (RELE, GPIO. HIGH)

যদি Rele_Status == 0:

gpio.digital_write (RELE, GPIO. LOW)

##### সিস্টেমা ডি ইলুমিনাকাও

যদি Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) যদি 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 - তাপমাত্রা gpio.digital_write (GPIO_CS, GPIO. HIGH) adcout = (rc = 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 = 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} "। ("$ aws/things/DBpyAWS1116/shadow/update", payload_temp, 0) রিটার্ন r

def desliga ():

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

ডিফ রান (জিপিও):

system_status = 1

যখন সত্য:

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 () যদি system_status == 1: value = readadc (gpio) প্রিন্ট "SYSTEM_STATUS %d" %system_status time.sleep (3)

ক্লাস শ্যাডো কলব্যাক কনটেইনার:

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

# কাস্টম শ্যাডো কলব্যাক

def customShadowCallback_Delta (self, payload, responseStatus, token): print ("একটি ডেল্টা মেসেজ পেয়েছি") ### payload update script payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["state"]) প্রিন্ট "DELTA MESSAGE %s" %deltaMessage ### রিপোর্ট করা রাষ্ট্রকে নতুন আপলোড করার অনুরোধ করুন 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

####### জিনিস সংজ্ঞা

# AWS IoT সার্টিফিকেট ভিত্তিক সংযোগ

myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configure/homecreds/homecreds/homecreds/", "/home/linaro/shared/AWS/" SUA CHAVE "-private.pem.key", "/home/linaro/shared/AWS/" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQue 1) # অসীম অফলাইন প্রকাশ করুন সারিবদ্ধ myMQTTClient.configureDrainingFrequency (2) # ড্রেনিং: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 সেকেন্ড myMQTTClient.configureMQTTOperationTimeout # 5Q. Qnect (MyQQTQ # 5Q এবং MyQQT # 5Q. Qnect (MyQTQ # 5Q. Qnect_MQ030Q) coisajsb "," সংযুক্ত ", 0)

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

####### ছায়া সংজ্ঞা

# Init AWSIoTMQTTShadowClient

myAWSIoTMQTTShadowClient = কোনটি myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("সেউ END-POINT.us-west-2.amazonaws.com", 8883) myAWSIoTMQTTShadowClient.configureCredentials ("/ হোম / linaro / শেয়ারকৃত / ডেস্কটপ AWS / root- CA.crt ","/home/linaro/shared/AWS/"SUA CHAVE" -private.pem.key ","/home/linaro/shared/AWS/"SEU CERTIFICADO-certificate.pem.crt")

# AWSIoTMQTTShadowClient কনফিগারেশন আমার AWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10) # 10 SecureToSQSQTQSQTQSQTQ

# AWS IoT- এর সাথে সংযোগ করুন

myAWSIoTMQTTShadowClient.connect ()

# ক্রমাগত সাবস্ক্রিপশন সহ একটি ডিভাইসশ্যাডো তৈরি করুন

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

# ডেল্টাসে শুনুন

deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)

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

myMQTTClient.publish ("$ aws/things/DBpyAWS1116/shadow/update", '{"state": {"इच्छित": {"SystemStatus": 1, "SisIlumi": 0, "AC": 0, "Garagem": "ফেচাদা", "টেম্পেরাটুরা": 25, "লুমিনোসিডেড": 123}}} ', 0)

যদি _name_ == "_main_":

GPIO (পিন) সহ gpio: run (gpio)

ধাপ 6: Finalização

Finalização
Finalização

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

Para um possível troubleshoot, recomenda-se usar a função MQTT Client TEST do AWS, onde é possível verificar e as mensagens enviadas pela dragonboard está sento atualizada de forma correta na AWS Cloud:

প্রস্তাবিত: