Cov txheej txheem:
- Kauj Ruam 1: Cov ntaub ntawv xav tau
- Kauj Ruam 2: Sensores, Atuadores E Conexões
- Kauj Ruam 3: Aplicativo Para Controle Remoto
- Kauj Ruam 4: Criando Uma "coisa" Na AWS IoT
- Kauj Ruam 5: Txoj Haujlwm Em Python
- Kauj Ruam 6: Qhov kawg
Video: Pib Lub Tsev Ntse - Projeto Kawg: 6 Kauj Ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:27
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 as incluido em breve) e 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 ar-condicionado de acordo com uma -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.
Kauj Ruam 1: Cov ntaub ntawv xav tau
- Qhov chaw DragonBoard.
- 96Boards Linker Mezzanine
- Sensor de luminozidade (LDR) que acompanha a Linker Mezzanine.
- Sensor de temperatura que acompanha a Linker Mezzanine.
- Txhawm rau kov qhov sib koom ua ke ntawm Linker Mezzanine.
- Sib txuas nrog Linker Mezzanine, siv rau ligar o systema de A/C.
- LED acompanha a Linker Mezzanine, que sawv cev rau kev lag luam thiab kev ua haujlwm.
- Instalação das bibliotecas citadas tsis muaj passo 5.
Kauj Ruam 2: Sensores, Atuadores E Conexões
1. Linker Mezzanine:
Será necessário conectar a placa Mezzanine na dragonboard. Rau detalhes, kev sab laj txuas
2. Sensor luminosidade (LDR)
O sensor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC1. Rau detalhes técnicos:
3. Sensor ntawm Temperatura
O sensor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC2. Rau detalhes técnicos:
4. Botão Kov
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. Nws yog qhov tseem ceeb tshaj plaws hauv lub nroog. Rau qhov tsis zoo ntawm qhov kev kawm: https://linksprite.com/wiki/index.php5? Title = Touch_…
5. Sib
Kev sib koom ua ke ntawm 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 sawv cev los ntawm lub kaw lus 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. Rau detalhes técnicos:
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 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). Yuav ua li cas thiaj li ua tau zoo rau lub sensor, lossis cov ntawv ceeb toom qhia txog estado aberto. Yuav ua li cas thiaj li ua tau raws li qhov xav tau sensor, lossis cov ntaub ntawv qhia txog kev ua haujlwm.
Kauj Ruam 3: Aplicativo Para Controle Remoto
Aplicativo foi desenvolvido com o Ionic Framework, https://ionicframework.com/. Será necessário fazer o download e instalação thiab ultima versão.
A 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 dos sensores e atuadores.
- Sistema de Iluminação mostra o estado do sitema 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é temperatura abaixar em 2 graus da tempreatura definida. Piv txwv li, iremos considerar que a temperatura é de 23 graus. Quando tus ntsuas kub sab hauv chegar 24 graus, o A/C será ligado e permanentecerá ligado até ntsuas kub chegar 20 graus, desligando então. Depois o ciclo se repetirá.
-Txhua cov ntaub ntawv qhia txog qhov ua tau zoo thiab ua tau zoo, yog tias koj tab tom ua haujlwm.
- Kev ntsuas kub é apenas informativa e mostra a temperatura do internal 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.
Kauj Ruam 4: Criando Uma "coisa" Na AWS IoT
Para 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) Clique "tsim ib yam" e então, "Tsim ib yam nkaus". Tsis txhob sau npe ua ntej thiab nyem rau Next.
3) Tom qab ntawv, nyem rau "Tsim ib yam yam tsis muaj ntawv pov thawj". Nesse nyeem não iremos utilizar os certificados por questões práticas, porém não é recomendado fazer o uso de IoT sem ntawv pov thawj.
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 troubleshooting. Tsis muaj código em Python que será apresentado em breve, foram utlizados alguns destes tópicos. Nas opções também podemos ver a "duab ntxoov ntxoo", que nada mais é que a informação que está na dragonboard refletida na AWS Cloud.
Kauj Ruam 5: Txoj Haujlwm Em Python
Raws li seguintes bibliotecas serão necessárias para a execução do programa:
ntshuam spidevimport lub sijhawm ntshuam logging import json import argparse
los ntawm libsoc ntshuam gpio
los ntawm lub sijhawm ntshuam pw los ntawm hnub tim ntshuam hnub tim, hnub tim los ntawm gpio_96boards ntshuam GPIO los ntawm AWSIoTPythonSDK. MQTTLib ntshuam AWSIoTMQTTClient los ntawm AWSIoTPythonSDK. MQTTLib
Ua raws li cov lus qhia hauv qab no rau qhov program:
ntshuam spidevimport lub sijhawm ntshuam logging import json import argparse
los ntawm libsoc ntshuam gpio
los ntawm lub sijhawm ntshuam pw los ntawm hnub siv sijhawm hnub tim, hnub tim los ntawm gpio_96boards ntshuam GPIO los ntawm AWSIoTPythonSDK. MQTTLib ntshuam AWSIoTMQTTClient los ntawm AWSIoTPythonSDK. MQTTLib ntshuam AWSIoTMQTTShadowClient
GPIO_CS = GPIO.gpio_id ('GPIO_CS') #Analog Chaw nres nkoj
BUTTON = GPIO.gpio_id ('GPIO_A') RELE = GPIO.gpio_id ('GPIO_C') LED = GPIO.gpio_id ('GPIO_G')
pin = ((GPIO_CS, 'tawm'), (BUTTON, 'hauv'), (RELE, 'tawm'), (LED, 'tawm'),)
def setdevices (deltaMessagePython):
System_Status = deltaMessagePython ['SystemStatus'] Release_Status = deltaMessagePython ['AC'] Led_Status = deltaMessagePython ['SisIlumi']
##### AC AW
yog Rele_Status == 1: gpio.digital_write (RELE, GPIO. HIGH)
yog Rele_Status == 0:
gpio.digital_write (RELE, GPIO. LOW)
##### Sistema de Iluminacao
yog Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) yog Led_Status == 0: gpio.digital_write (LED, GPIO. LOW)
def nyeem ntawv (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 - Kub 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 - Luminosity gpio.digital_write (GPIO_CS, GPIO. HIGH) adcoutldr = (r [1] << 8) & 0b1100000000 adcoutldr = adcoutldr | (r [2] & 0xff) adcoutldr = str (adcoutldr) tam sim no = datetime.utcnow () now_str = tam sim no.strftime ('%Y-%m-%dT%H:%M:%SZ') temperatura = "{:.2f} ". Format (adc_temp) payload_temp = '{" state ": {" xav tau ": {" Luminosidade ":' + adcoutldr + '," Temperatura ":' + temperatura + '}}}' myMQTTClient.publish ("$ aws/yam/DBpyAWS1116/shadow/update", payload_temp, 0) return r
def desliga (): cov
gpio.digital_write (RELE, GPIO. LOW) gpio.digital_write (LED, GPIO. LOW)
def khiav (gpio):
system_status = 1
thaum Muaj Tseeb:
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 () yog system_status == 1: tus nqi = readadc (gpio) luam tawm "SYSTEM_STATUS %d" %system_status time.sleep (3)
chav kawm duab ntxoov ntxooCallbackContainer:
def _init _ (tus kheej, deviceShadowInstance): self.deviceShadowInstance = deviceShadowInstance
# Custom Shadow callback
def customShadowCallback_Delta (tus kheej, them nyiaj, tebStatus, token): luam tawm ("Tau txais cov lus xa tuaj:") ### payload hloov tshiab tsab ntawv payloadDict = json.loads (them nyiaj) deltaMessage = json.dumps (payloadDict ["xeev"]) luam tawm "DELTA MESSAGE %s" %deltaMessage ### Thov hloov kho lub xeev uas tau tshaj tawm tshiab
spi = spidev. SpiDev ()
spi.open (0, 0) spi.max_speed_hz = 10000 spi.mode = 0b00 spi.bits_per_word = 8
####### Yam txhais
# AWS IoT daim ntawv pov thawj raws kev txuas
myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials/"/home AWS, "/home/linaro/shared/AWS/" SUA CHAVE "-private.pem.key", "/home/linaro/shared/AWS/" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Infinite offline Pub queuing myMQTTClient.configureDrainingFrequency (2) # Draining: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout (5) # 5 sec #MTT coisajsb "," txuas ", 0)
########################
####### Duab ntxoov ntxoo txhais
# Init AWSIoTMQTTShadowClient
myAWSIo Q QTTShadowClient = ไม่มี 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 sec myAWSIoTMQTTShadowClient.configure 5
# Connect to AWS IoT
myAWSIoTMQTTShadowClient.connect ()
# Tsim lub cuab yeej Duab ntxoov ntxoo nrog rau kev tso npe tas mus li
deviceShadowHandler = myAWSIoTMQTTShadowClient.createShadowHandlerWithName ("DBpyAWS1116", Tseeb) shadowCallbackContainer_Bot = shadowCallbackContainer (deviceShadowHandler)
# Mloog ntawm deltas
deviceShadowHandler.shadowRegisterDeltaCallback (duab ntxoov ntxooCallbackContainer_Bot.customShadowCallback_Delta)
#########################
myMQTTClient.publish ("$ aws/yam/DBpyAWS1116/duab/hloov tshiab", '{"xeev": {"xav tau": {"SystemStatus": 1, "SisIlumi": 0, "AC": 0, "Garagem": "Fechada", "Temperatura": 25, "Luminosidade": 123}}} ', 0)
yog _name_ == "_main_":
nrog GPIO (pins) ua gpio: khiav (gpio)
Kauj Ruam 6: Qhov kawg
Após ter concluido os passos anteriores, deve-se inicializar o sistema executando o código fornecido tsis muaj passo 5 e inicializar o app através ua Ionic, siv los yog comando Ionic pab.
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á sendo atualizada de forma correta na AWS Cloud:
Pom zoo:
Siv Kev Cia Siab Lub Hauv Paus txuas ntxiv txhawm rau Nrhiav Lub Tuam Tsev Tsis Ua Haujlwm Txoj Cai Ua Haujlwm Hauv Koj Tsev Neeg Tsob Ntoo ntawm Kev Tshawb Nrhiav Tsev Neeg: 11 Kauj Ruam
Siv Kev Cia Siab Lub Hauv Paus Txuas Ntxiv kom Nrhiav Lub Tuam Tsev Tsis Ua Haujlwm Ua Haujlwm Hauv Koj Tsev Neeg Tsob Ntoo ntawm Kev Tshawb Nrhiav Tsev Neeg: Lub hom phiaj ntawm cov lus qhia no yog los qhia seb yuav tshawb nrhiav koj tsev neeg tsob ntoo li cas hauv Tsev Neeg Nrhiav rau cov poj koob yawm txwv nrog kev ua haujlwm hauv lub tuam tsev tsis tiav siv Kev Cia Siab lub hauv siab txuas ntxiv. Siv Kev Cia Siab Lub Hauv Paus tuaj yeem ua rau koj qhov kev tshawb nrhiav tsis tiav
Lub Hnab Ntse Hnab Ntse Ntse Computer: 4 Kauj Ruam (nrog Duab)
Lub Hnab Ntse Hnab Ntse Ntse Computer: Qhov no yog "hnab looj tes ntse" nas lub computer uas tuaj yeem siv nrog ib lub PC, Mac, lossis Linux computer. Nws tau tsim los siv Binho Nova ntau tus txheej txheem USB host adapter, uas tso cai rau koj txuas cov ntsuas thiab lwm yam khoom siv rau koj lub khoos phis tawj thiab tom qab ntawd txuas ntxiv
[HASS.IO] Pib Tsim Koj Lub Tsev Ntse Tsis Muaj Coding, Rau Tsawg Tshaj $ 100: 6 Cov Kauj Ruam
[HASS.IO] Pib Tsim Koj Lub Tsev Ntse Tsis Muaj Coding, Rau Tsawg Tshaj $ 100: Tsis ntev los no kuv tau cuam tshuam ib puag ncig thiab ua tiav ua rau kuv lub tsev tsawg dua "ruam". Yog li kuv yuav los qhia yuav ua li cas thiaj ua lub tsev ntse hauv tsev nrog tus nqi qis, ua kom tau zoo uas yuav ua haujlwm tau zoo thiab ruaj khov
Lub Tsev Ua Lub Txias Txias Nrog Ntse Tswj Ua Haujlwm (Lub Freezer Txias): 11 Kauj Ruam (nrog Duab)
Lub Tsev Ua Tub Yees Nrog Lub Ntse Tswj Kev Ua Haujlwm (Deep Freezer): Nyob Zoo Cov Phooj Ywg Qhov no yog Tshooj 2 ntawm DIY lub tub yees raws li peltier module, hauv ntu no peb siv 2 peltier module hloov 1, peb kuj siv lub ntsuas cua sov kom teeb tsa qhov xav tau kom sov me ntsis zog
Kev Paub Lub Ntsej Muag Lub Sij Hawm Tiag: Ib Qhov Kawg-rau-Kawg: 8 Kauj Ruam (nrog Duab)
Kev lees paub lub ntsej muag ntawm lub sijhawm tiag tiag: Qhov Kawg-rau-kawg Txoj Haujlwm: Ntawm kuv qhov kev qhia zaum kawg tshawb fawb txog OpenCV, peb tau kawm AUTOMATIC VISION OBJECT TRACKING. Tam sim no peb yuav siv peb PiCam kom paub lub ntsej muag nyob rau lub sijhawm tiag tiag, zoo li koj tuaj yeem pom hauv qab no: Txoj haujlwm no tau ua tiav nrog qhov zoo heev " Qhib Chaw Khoos Phis Tawj Lub Zeem Muag Vision & qu