Sadržaj:
- Korak 1: Materias Necessários
- Korak 2: Senzori, Atuadores E Conexões
- Korak 3: Aplicativo Para Controle Remoto
- Korak 4: Criando Uma "coisa" na AWS IoT
- Korak 5: Programa Em Python
- Korak 6: Finalização
Video: Pokretanje pametne kuće - Projeto Konačno: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
Projekt je predstavljen par dijelom do projekta koji je konačan do IoT aplikacije Smart Home
O projektu 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 as informacije/dados das "coisas" serão salvados na oblaku u AWS -u. Para umaira primera iteração com a DragonBoard e 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 temperatura temperature 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.
Korak 1: Materias Necessários
- Postavite DragonBoard.
- 96Boards Linker Mezzanine
- Sensor de luminozidade (LDR) que acompanha a Linker Mezzanine.
- Senzor za temperaturu uključuje Linker Mezanin.
- Botão touch que acompanha a Linker Mezzanine.
- Relé acompanha a Linker Mezzanine, utlizado para ligar or system of A/C.
- LED acompanha i Linker Mezzanine, que predstavljaju a iluminação a ser ativada.
- Instalação das bibliotecas citadas no passo 5.
Korak 2: Senzori, Atuadores E Conexões
1. Međuspratni poveznik:
Será neophodário conectar a placa Mezzanine na dragonboard. Za više detalja, konzultantska veza
2. Senzor luminosidade (LDR)
O senzor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC1. Za detaljnije informacije:
3. Senzor temperature
O senzor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC2. Za detaljne informacije:
4. Botão dodir
O senzor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada D1. Este botão irá ligar/desligar o sistemu como um todo. O acesso a este botão é somente local. Za detaljnije informacije: https://linksprite.com/wiki/index.php5? Title = Touch_…
5. Relé
O relé é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada D2. Ele será utiizado para ligar/desligar o sistemu 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 predstavnik o sistemu 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 otpornik 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. Za detaljne informacije:
7. Senzor de contato magnético
Este sensor fori 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 senzoru é um konjunto formirati 2 pequenas peças (ver foto do Step acima), o senzor proprimamente dito e um pequeno "imã", que ao aproximar-se do sensor irá alterar o estado do sensor. O senzor utlizado neste projeto foi um N/A (normalmente aberto). Quando o imã não está próximo do sensor, o senzor reportará estado aberto. Quando o imã estiver próximo do sensor, o estado reportado será fechado.
Korak 3: Aplicativo Para Controle Remoto
O aplicativo foi desenvolvido com o Ionic Framework, https://ionicframework.com/. Será neophodário fazer ili preuzmite e 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 intenzidade 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 sistemu de A/C da casa. Também é possível definir o valor smanjuje temperaturu. Odredite temperaturu koja se može povećati, pa čak i ako temperatura ne prijeđe na aktivacijsku temperaturu, o A/C servo ligado i trajno ligado pri temperaturi abaixar em 2 stupnja prema određenoj tempreaturi. Na primjer, iremos mora uzeti u obzir temperaturu od 23 grasa. Ako temperatura u unutrašnjosti iznosi 24 grasa, o A/C servo ligado i trajno ligado pri temperaturi od 20 grausa, 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 u unutrašnjosti kuće.
- 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.
Korak 4: Criando Uma "coisa" na AWS IoT
Za postavljanje ili postavljanje IoT -a na AWS -u, osigurate passos deverão ser seguidos:
1) Molimo vas da projicirate AWS IoT atravé do link:
2) Klikni "stvori stvar" e então, "Izradi jednu stvar". Dê o nome do projeto e clique em Next.
3) Na tela seguinte, clique em "Napravi stvar bez certifikata". 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) 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 Could, assim como é uma ótima ferramenta para za rješavanje problema. No código em 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 reflektira na AWS Cloud.
Korak 5: Programa Em Python
Kao što seguintes bibliotecas serão needárias para a execução do programa:
import spidevimport time import logging uvoz json import argparse
iz libsoc import gpio
from time import sleep sleep from datetime import date, datetime from gpio_96boards import GPIO from AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTClient from AWSIoTPythonSDK. MQTTLib
Odredite abaixo código kompletno do programa:
import spidevimport vrijeme import logging uvoz json import argparse
iz libsoc import gpio
from time import sleep sleep from datetime import date, datetime from gpio_96boards import GPIO from AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTClient from AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTShadowClient
GPIO_CS = GPIO.gpio_id ('GPIO_CS') #Analog Port
BUTTON = GPIO.gpio_id ('GPIO_A') RELE = GPIO.gpio_id ('GPIO_C') LED = GPIO.gpio_id ('GPIO_G')
pinovi = ((GPIO_CS, 'van'), (BUTTON, 'in'), (RELE, 'out'), (LED, 'out'),)
def setdevices (deltaMessagePython):
System_Status = deltaMessagePython ['SystemStatus'] Rele_Status = deltaMessagePython ['AC'] Led_Status = deltaMessagePython ['SisIlumi']
##### AC
ako je Rele_Status == 1: gpio.digital_write (RELE, GPIO. HIGH)
ako je Rele_Status == 0:
gpio.digital_write (RELE, GPIO. LOW)
##### Sistema de Iluminacao
ako je Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) ako je 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 - Temperatura 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 - Svjetlost gpio.digital_write (GPIO_CS, GPIO. HIGH) adcoutldr = (r [1] << 8) & 0b1100000000 adcoutldr = adcoutldr | (r [2] & 0xff) adcoutldr = str (adcoutldr) sada = datetime.utcnow () now_str = now.strftime ('%Y-%m-%dT%H:%M:%SZ') temperatura = "{:.2f} ". Format (adc_temp) payload_temp = '{" stanje ": {" željeno ": {" Luminosidade ":' + adcoutldr + '," Temperatura ":' + temperatura + '}}}' 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 run (gpio):
sustav_status = 1
dok je istina:
time.sleep (2) button_value = gpio.digital_read (BUTTON) ispis ("----") 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)
klasa shadowCallbackContainer:
def _init _ (self, deviceShadowInstance): self.deviceShadowInstance = deviceShadowInstance
# Prilagođeni povratni poziv u sjeni
def customShadowCallback_Delta (self, payload, responseStatus, token): print ("Primljena delta poruka:") ### Skripta za ažuriranje korisnog tereta payloadDict = json.loads (korisni teret) deltaMessage = json.dumps (payloadDict ["stanje"]) ispis "DELTA MESSAGE %s" %deltaMessage ### Zahtjev za ažuriranje prijavljenog stanja newPayload = '{"stanje": {"prijavljeno":' + 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
####### Definicija stvari
# Veza temeljena na AWS IoT certifikatu
myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentiS ("/home/, "/home/linaro/shared/AWS/" SUA CHAVE "-private.pem.key", "/home/linaro/shared/AWS/" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Beskonačno offline Objavljivanje u redu čekanja myMQTTClient.configureDrainingFrequency (2) # Ispuštanje: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout coisajsb "," povezano ", 0)
########################
####### Definicija sjene
# Init AWSIoTMQTTShadowClient
myAWSIoTMQTTShadowClient = Nitko myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("Seu END-POINT.us-west-2.amazonaws.com", 8883) myAWSIoTMQTTShadowClient.configureCredentials ("/ home / linaro / zajednička / AWS / Korijen- CA.crt ","/home/linaro/shared/AWS/"SUA CHAVE" -private.pem.key ","/home/linaro/shared/AWS/"SEU CERTIFICADO-certificate.pem.crt")
# AWSIoTMQTTSKonfiguracija ShadowClientmyAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10) #IQTonMokiTiTekVid
# Povežite se s AWS IoT -om
myAWSIoTMQTTShadowClient.connect ()
# Izradite sjenu uređaja s trajnom pretplatom
deviceShadowHandler = myAWSIoTMQTTShadowClient.createShadowHandlerWithName ("DBpyAWS1116", True) shadowCallbackContainer_Bot = shadowCallbackContainer (deviceShadowHandler)
# Slušajte na deltama
deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)
#########################
myMQTTClient.publish ("$ aws/things/DBpyAWS1116/shadow/update", '{"stanje": {"željeno": {"SystemStatus": 1, "SisIlumi": 0, "AC": 0, "Garagem": "Fechada", "Temperatura": 25, "Luminosidade": 123}}} ', 0)
ako je _name_ == "_glavni_":
s GPIO (pinovi) kao gpio: run (gpio)
Korak 6: Finalização
Após ter continuido os passos anteriores, deve-se inicializar o sistemu executando o código fornecido no passo 5 e inicializar o app através do Ionic, usando o comando Ionic serve.
Za rješavanje problema, preporučujemo korištenje funkcionalnog TESTA MQTT klijenta do AWS-a, ako je potrebno provjeriti da li je potrebno poslati obavijest o dragonboard-u ili poslati ispravku u AWS Cloud:
Preporučeni:
SmartBox - sustav pametne kuće za vašu sobu: 6 koraka
SmartBox - sustav pametne kuće za vašu sobu: Pozdrav svima! U ovom uputstvu objasnit ću vam kako napraviti sustav pametne sobe. Ovaj sustav sadrži dva uređaja. Opći uređaj sa senzorom vlažnosti i senzorom temperature koji mjeri trenutnu kvalitetu života u vašoj sobi. Ti ćeš
ForgetMeNot - Platforma za obavijesti pametne kuće: 14 koraka (sa slikama)
ForgetMeNot - Platforma za obavijesti o pametnoj kući: Kao zaposleni studenti, trčeći između razreda, poslova i obiteljskih obaveza, skloni smo zaboraviti male stvari. Rođendan dolazi i odlazi a da mi to ne primijetimo, važan rok se propušta zbog čistog zaborava, a ponekad, samo
Automatizacija pametne kuće s utičnicama Energenie - utičnice u blizini: 4 koraka
Pametna kućna automatizacija s utičnicama Energenie - blizinske utičnice: Uvod Postoji puno primjera pametne kućne automatizacije, ali ovaj je jednostavan i vrlo je učinkovito funkcionirao godinu dana u mojoj kući pa se nadam da vam se sviđa. Kad završite, imat ćete uređaj koji može skenirati mrežu
Arduino sustav pametne kuće: 7 koraka
Arduino sustav pametne kuće: U ovom uputstvu pokazat ćemo vam kako stvoriti vlastiti sustav pametne kuće s MATLAB -ovim dizajnerom aplikacija sa Sparkfun crvenom pločom. Ovaj Instructable može se koristiti za lakše razumijevanje MATLAB -ovog dizajnera aplikacija, kao i za korištenje fotoreportera
Sustav pametne kuće: 6 koraka
Sustav pametne kuće: Ova instrukcija pomoći će vam objasniti kako postaviti i koristiti naš sustav pametne kuće pomoću softvera Matlab i hardvera Raspberry Pi. Na kraju ovog uputstva trebali biste moći potpuno koristiti naš proizvod s lakoćom