Sisukord:
- 1. samm: Materias Necessários
- 2. samm: Sensores, Atuadores E Conexões
- 3. samm: Aplicativo Para Controle Remoto
- 4. samm: Criando Uma "coisa" Na AWS IoT
- Samm: Programa Em Python
- 6. etapp: lõplik
Video: Nutika kodu käivitamine - Projeto finaal: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Projeto apresentado é parte do projeto final to IoT app of 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 breve) e info/dados das "coisas" seroo salvados ja cloud da AWS. Parameeter iteração com DragonBoard and 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 uma 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.
1. samm: Materias Necessários
- Asetage DragonBoard.
- 96Boards Linker Mezzanine
- Valgusandur (LDR) sisaldab Linker Mezzanine'i.
- Temperatuuri andur on Linker Mezzanine'i kaasas.
- Botão touch que kaasas Linker Mezzanine.
- Kasutage linki Mezzanine, utlizado para ligar or systema de A/C.
- LED koos Linker Mezzanine'iga, mis kujutab endast iluminação a ser ativada.
- Instalação das bibliotecas citadas no passo 5.
2. samm: Sensores, Atuadores E Conexões
1. Linker Mezzanine:
Vajalikud konsoolid on plats Mezzanine ja dragonboard. Täpsemalt, vaadake linki
2. Anduri luminosidaad (LDR)
O andur ja parter Link Kit Mezzanine e deverá ser conactado na entrada ADC1. Üksikasjalikud teekonnad:
3. Temperatuuri andur
O andur on osaline komplektis Link Link Mezzanine ja see on ühendatud ADC2 -ga. Üksikasjalikud tecnicos:
4. Botão Touch
O andur on osaline komplektis Link Link Mezzanine ja deverá ser conactado na entrada D1. Este botão irá ligar/desligar o system como um todo. O acesso a este botão é somente local. Üksikasjalikud tecnicos: https://linksprite.com/wiki/index.php5? Title = Touch_…
5. Relé
Orelé é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada D2. Ele será utiizado para ligar/desligar o system de A/C. Paralleelsed tecnicos:
6. LED
O LED -osade komplekt Linker Mezzanine ja deverá ser conactado na Entrada D4. O LED esindab süsteemi, mis pakub iluminaatsioo uma casa, seja algum cômodo interno da casa ou externo, como and illuminação de um jardim. Kui soovite, et takisti oleks 10 k ohmi, siis oleks see hädaolukorras halvasti kasutatav, süsteem oleks korrektne, ja kogemused anteriores verificou-se conflitos com as portas analógicas. Üksikasjalikud teekonnad:
7. Sensor de contato magnético
Este andur, mis ühendab 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 andur on ühemõtteliselt moodustatud 2 pequenas peças (ver foto do Step acima), või sensor proprimamente dito e um pequeno "imã", que ao aproximar-se do sensor irá alterar or estado do sensor. O sensor utlizado neste projeto foi um N/A (normaalne aberto). Quando o imã não está próximo do sensor, või sensor reportará estado aberto. Quando o imã estiver próximo do sensor, või estado reportado será fechado.
3. samm: Aplicativo Para Controle Remoto
Rakenduse Ionic Framework, https://ionicframework.com/ kaudu. Vajalik fazer või allalaadimine ja installeçã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.
- Iluminação mostra või 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 system 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 and permanecerá ligado até a temperatura abaixar em 2 graus da tempreatura definida. Näiteks, iremos kaalub temperatuuri 23 päeva. Quando a Temperature Interior Chegar a 24 graus, või A/C será ligado and permanecerá 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. samm: Criando Uma "coisa" Na AWS IoT
Fazer või seadistuste tegemine IoT ja AWS, os seguintes passos deverão ser seguidos:
1) Criar um projeto no AWS IoT atravé do link:
2) Klõpsake "loo asi" ja sisestage "Loo üks asi". Dê o nome do projeto e clique em Next.
3) Na tela seguinte, clique em "Loo asi ilma sertifikaadita". Nesse juhendaja ei kasuta iremos utilizar os sertifikaate, mis on seotud otsingutega, kuid ei soovita fazerit või IoT sem sertifikaate.
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 tõrkeotsing. 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 e que a informationção que está na dragonboard refletida with AWS Cloud.
Samm: Programa Em Python
Nagu seguintes bibliotecas serão vajadused para ja execução do program:
import spidevimport aeg import logimine import json import argparse
alates libsoc import gpio
ajast importimise unerežiim alates kuupäeva ja aja impordi kuupäevast, kuupäeva aeg gpio_96boardsilt impordib GPIO AWSIoTPythonSDK -st. MQTTLib impordi AWSIoTMQTTClient AWSIoTPythonSDK -st. MQTTLib
Abuex codigo täielik programm:
import spidevimport aeg import logimine import json import argparse
alates libsoc import gpio
ajast importimise unerežiim alates kuupäeva ja aja impordi kuupäevast, kuupäeva aeg gpio_96boardsilt impordib GPIO AWSIoTPythonSDK -st. MQTTLib impordi AWSIoTMQTTClient AWSIoTPythonSDK -st. MQTTLib import AWSIoTMQTTShadowClient
GPIO_CS = GPIO.gpio_id ('GPIO_CS') #Analoogport
NUPP = GPIO.gpio_id ('GPIO_A') RELE = GPIO.gpio_id ('GPIO_C') LED = GPIO.gpio_id ('GPIO_G')
nööpnõelad = ((GPIO_CS, 'väljas'), (BUTTON, 'in'), (RELE, 'out'), (LED, 'out'),)
def setdevices (deltaMessagePython):
System_Status = deltaMessagePython ['SystemStatus'] Rele_Status = deltaMessagePython ['AC'] Led_Status = deltaMessagePython ['SisIlumi']
##### AC
kui Rele_Status == 1: gpio.digital_write (RELE, GPIO. HIGH)
kui Rele_Status == 0:
gpio.digital_write (RELE, GPIO. LOW)
##### Sistema de Iluminacao
kui Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) kui 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 - temperatuur gpio.digital_write (GPIO_CS, GPIO. HIGH) adcout = (r [1] << 8) & 0b1100000000 adcout = adcout | (r [2] ja 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 - heledus 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') temperatuur = "{:.2f} ". Format (adc_temp) payload_temp = '{" state ": {" soovitud ": {" 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):
süsteemi_seis = 1
kuigi tõsi:
time.sleep (2) button_value = gpio.digital_read (NUPP) print ("----") 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)
class shadowCallbackContainer:
def _init _ (ise, deviceShadowInstance): self.deviceShadowInstance = deviceShadowInstance
# Kohandatud varju tagasihelistamine
def customShadowCallback_Delta (ise, kasulik koormus, vastusolek, märk): print ("Vastuvõetud delta -teade:") ### payload update script payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["olek"]) print "DELTA MESSAGE %s" %deltaMessage ### Teavitatud oleku värskendamise taotlus 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
####### Asja määratlus
# AWS IoT sertifikaadipõhine ühendus
myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/home/lin/s/"/a/root/lin/, "/home/linaro/shared/AWS/" SUA CHAVE "-private.pem.key", "/home/linaro/shared/AWS/" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Lõpmatu võrguühenduseta avaldamise järjekord myMQTTClient.configureDrainingFrequency (2) # Tühjendus: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 s coisajsb "," ühendatud ", 0)
########################
####### Varju määratlus
# Init AWSIoTMQTTShadowClient
myAWSIoTMQTTShadowClient = Puudub myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2T. WAW. COM/LINK 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 sek myAWSIoureQQToT
# Ühendage AWS IoT -ga
myAWSIoTMQTTShadowClient.connect ()
# Looge seadmevari püsiva tellimusega
deviceShadowHandler = myAWSIoTMQTTShadowClient.createShadowHandlerWithName ("DBpyAWS1116", True) shadowCallbackContainer_Bot = shadowCallbackContainer (deviceShadowHandler)
# Kuula deltadel
deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)
#########################
myMQTTClient.publish ("$ aws/things/DBpyAWS1116/shadow/update", '{"state": {"soovitud": {"SystemStatus": 1, "SisIlumi": 0, "AC": 0, "Garagem": "Fechada", "Temperatura": 25, "Luminosidade": 123}}} ', 0)
kui _name_ == "_main_":
GPIO (tihvtid) kui gpio: käivita (gpio)
6. etapp: lõplik
Após ter concluido os passos anteriores, deve-se inicializar või system executando o código fornecido no passo 5 e inicializar or app através do Ionic, usando o comando Ionic serve.
Võimalike tõrkeotsingute jaoks soovitame kasutada MQTT-i klienditesti ja teha AWS-i, seejärel kontrollida ja kontrollida, kas see on saadaval ja kuidas seda AWS-i pilti lohistada:
Soovitan:
Tehke nutika kodu juhtimissüsteem STONE HMI displeil: 23 sammu
Tehke nutika kodu juhtimissüsteem STONE HMI Disp'is: Projekti tutvustus Järgnev õpetus näitab teile, kuidas kasutada puuteekraanimoodulit STONE STVC050WT-01 lihtsa kodumasina juhtimissüsteemi loomiseks
ForgetMeNot - nutika kodu teavitusplatvorm: 14 sammu (piltidega)
ForgetMeNot - nutika kodu teavitusplatvorm: hõivatud kolledžiõpilastena, kes liiguvad klasside, töökohtade ja perekohustuste vahel, kipume pisiasjad unustama. Sünnipäev tuleb ja läheb, ilma et me seda märkaksime, oluline tähtaeg jääb unaruse tõttu vahele ja mõnikord lihtsalt
Täielik nutika kodu lisand: 8 sammu
Täielik nutika kodu lisand: minu eelmine projekt " Täielik nutikas kodu " töötab edukalt peaaegu 5 aastat ilma probleemideta. Nüüd, kui otsustasin lisada sellele tagasisidet ilma praegust vooluahelat ja skeemi muutmata. Nii et see lisamine pro
Nutika kodu automatiseerimine Energenie pistikupesadega - läheduspesad: 4 sammu
Nutika kodu automatiseerimine Energenie pistikupesadega - läheduspesad: Sissejuhatus Seal on palju näiteid nutika kodu automatiseerimisest, kuid see on lihtne ja on minu majas aasta aega väga tõhusalt toiminud, nii et loodan, et teile meeldib see. Kui olete lõpetanud, on teil seade, mis suudab võrku skannida
Ubuntu käivitamine ja käivitamine mälupulgalt: 6 sammu
Ubuntu käivitamine ja käivitamine mälupulgalt: operatsioonisüsteemi, näiteks Windowsi, käivitamine mälupulgalt võib mõnikord olla väga kasulik. Saate oma andmed kõvakettalt taastada ja kopeerida need välisele kõvakettale, kui see arvuti ei käivitu ega kontrolli seda arvutit viiruste ja viiruste suhtes