جدول المحتويات:

بدء المنزل الذكي - المشروع النهائي: 6 خطوات
بدء المنزل الذكي - المشروع النهائي: 6 خطوات

فيديو: بدء المنزل الذكي - المشروع النهائي: 6 خطوات

فيديو: بدء المنزل الذكي - المشروع النهائي: 6 خطوات
فيديو: في خطوات عملية - حول بيتك (سمارت هوم) بنفسك! 2024, شهر نوفمبر
Anonim
بدء المنزل الذكي - نهائي Projeto
بدء المنزل الذكي - نهائي Projeto

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

مشروع أكثر من جانب واحد يتم تقديمه نهائيًا من خلال عرض إنترنت الأشياء بمنزل ذكي ، كواحد من أجهزة الاستشعار 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 و 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 -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: Materias Necessários

ماتيرياس Necessários
ماتيرياس Necessários
ماتيرياس Necessários
ماتيرياس Necessários
  1. ضع DragonBoard. https://www.amazon.com/DragonBoard-410C-IoT-Start …
  2. 96Bards Linker Mezzanine https://www.96boards.org/product/linkspritesensork …
  3. مستشعر luminozidade (LDR) que acompanha a Linker Mezzanine.
  4. مستشعر درجة الحرارة التي تتوافق مع ميزانين رابط.
  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. رابط الميزانين:

كونيكتار سيرا بالضرورة لوحة الميزانين على لوح التنين. إزالة الفقرة ، رابط الاستشارة

2. جهاز الاستشعار luminosidade (LDR)

O sensor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC1. الفقرة detalhes técnicos:

3. مستشعر درجة الحرارة

O sensor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC2. الفقرة detalhes técnicos:

4. بوتاو تاتش

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 local. الفقرة detalhes técnicos: https://linksprite.com/wiki/index.php5؟ title=Touch_ …

5. ريليه

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. الصمام

O LED é parte do kit da Linker Mezzanine e deverá ser conectado na entrada D4. O LED يمثلون 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áesentente para diminuir a corrente utilizada pelo sistema، já que em experienceências anteriores verificou-se conflitos com as portas analógicas. الفقرة detalhes técnicos:

7. مستشعر كوناتو مغناطيسي

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 do sensor، o estado reportado será fechado.

الخطوة 3: تطبيق Aplicativo Para Controle Remoto

أبليكاتيفو بارا كونترول ريموتو
أبليكاتيفو بارا كونترول ريموتو

O aplicativo foi desenvolvido com o Ionic Framework، https://ionicframework.com/. لا بد من تنزيل الملفات من هنا.

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 ، مثل luzes se acenderão automaticamente. Quando a hyperidade 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. احتمالية تحديد شجاعة درجة الحرارة. Assim que a tempura da casa estiver maior do que a temperature de acionamento، o A / C será ligado e Permanentecerá ligado até a temperature abaixar em 2 graus da tempreatura Definida. على سبيل المثال ، يعتبر iremos que a tempsura é de 23 graus. Quando a temperatura chegar interior 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.

- درجة الحرارة ، 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: Criando Uma "coisa" Na AWS IoT

كرياندو أوما
كرياندو أوما

الفقرة 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) الزمرة "ابتكار الشيء" ، "ابتكر شيئًا واحدًا". قم بتنفيذ المشروع ثم قم بالتسجيل في التالي.

3) Na tela seguinte ، clique em "أنشئ شيئًا بدون شهادة". برنامج Nesse التعليمي não iremos useizar os certificados porquiryõ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 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 can، assim como é uma ótima ferramenta para الداخل. لا توجد طريقة لاستخدام Python que será apresentado em breve ، Foram utlizados alguns destes tópicos. يمكنك إنشاء نسخ من "الظل" ، يمكنك الحصول على معلومات حول لوحة التنين المعاد تدويرها في سحابة AWS.

الخطوة 5: Programa Em Python

كما seguintes bibliotecas serãoecessárias para a execução do programa:

استيراد spidevimport الوقت استيراد التسجيل استيراد json استيراد argparse

من libsoc استيراد gpio

من وقت استيراد السكون من تاريخ استيراد التاريخ والوقت ، تقوم datetime من لوحات gpio_96 باستيراد GPIO من AWSIoTPythonSDK. MQTTLib استيراد AWSIoTMQTTClient من AWSIoTPythonSDK. MQTTLib

Segue abaixo código Completeo do programa:

استيراد spidevimport الوقت استيراد تسجيل الاستيراد استيراد json argparse

من libsoc استيراد gpio

من وقت استيراد السكون من تاريخ استيراد التاريخ والوقت ، استورد datetime من لوحات gpio_96 GPIO من AWSIoTPythonSDK. MQTTLib استيراد AWSIoTMQTTClient من AWSIoTPythonSDK. MQTTLib استيراد AWSIoTMQTTShadowClient

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 ، "خارج") ،

(BUTTON، "in")، (RELE، "out")، (LED، "out")،)

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 = (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 - اللمعان 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') درجة الحرارة = "{:.2f} ". format (adc_temp) payload_temp = '{" state ": {" required ": {" Luminosidade ":' + adcoutldr + '،" Temperatura ":' + Temperatura + '}}}' myMQTTClient.publish ("$ aws / things / DBpyAWS1116 / shadow / update"، payload_temp، 0) إرجاع r

def desliga ():

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

تشغيل def (gpio):

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: القيمة = 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 ("Received a delta message:") ### تحميل البرنامج النصي لتحديث الحمولة payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["state"]) print "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.configureCredentials ("/ home / linaro / root) ، "/ home / linaro / shared / AWS /" SUA CHAVE "-private.pem.key" ، "/ home / linaro / shared / AWS /" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Infinite offline نشر قائمة الانتظار myMQTTClient.configureDrainingFrequency (2) # Draining: 2 هرتز myMQTTClient.configureConnectDisconnectTimeout (10) # 10 ثوانٍ myMQTTClient.configureMQTTOperationTimeout (5) coisajsb "،" متصل "، 0)

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

####### تعريف الظل

# Init AWSIoTMQTTShadowClient

myAWSIoTMQTTShadowClient = لا شيء myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2.amazonaws.com" ، 8883T) مشترك AWSICADO / myAWSREDOCOW / 8883T. CA.crt "،" / home / linaro / shared / AWS / "SUA CHAVE" -private.pem.key "،" / home / linaro / shared / AWS / "SEU CERTIFICADO-Certificate.pem.crt")

# AWSIoTMQTTShadowClient تكوين myAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1 ، 32 ، 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10) # 10 ثوانٍ myAWSIoTMQTTShadowClient.confation #

# الاتصال بـ AWS IoT

myAWSIoTMQTTShadowClient.connect ()

# إنشاء جهاز ظل مع الاشتراك المستمر

deviceShadowHandler = myAWSIoTMQTTShadowClient.createShadowHandlerWithName ("DBpyAWS1116" ، صحيح) shadowCallbackContainer_Bot = shadowCallbackContainer (deviceShadowHandler)

# استمع في دلتا

deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)

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

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

إذا _name_ == "_main_":

باستخدام GPIO (دبابيس) مثل gpio: تشغيل (gpio)

الخطوة 6: Finalização

Finalização
Finalização

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

استكشاف الأخطاء وإصلاحها لأسباب محتملة ، أوصي باستخدام MQTT Client TEST ، أو AWS ، أو إمكانية التحقق من وجوده مثل بيئة الرجال ، dragonboard está atualizada de forma correta na AWS Cloud: https://us-west-2.console.aws.amazon.com / iotv2 / hom…

موصى به: