Orodha ya maudhui:

Kuanzisha Nyumba ya Smart - Mwisho wa Projeto: Hatua 6
Kuanzisha Nyumba ya Smart - Mwisho wa Projeto: Hatua 6

Video: Kuanzisha Nyumba ya Smart - Mwisho wa Projeto: Hatua 6

Video: Kuanzisha Nyumba ya Smart - Mwisho wa Projeto: Hatua 6
Video: Cheki jama alivyo paa na ndege ya kichawi utashangaa 2024, Novemba
Anonim
Kuanzisha Nyumba ya Smart - Mwisho wa Projeto
Kuanzisha Nyumba ya Smart - Mwisho wa Projeto

Projeto apresentado ni sehemu ya mwisho kufanya mpango wa IoT aplicado Smart Home

Kwa sababu hii kuna uwezekano mkubwa wa kumaliza mpango wa mwisho wa huduma inayotumiwa na Nyumba ya Smart, ambayo inajumuisha vituo vya DrangonBoard + Kiunganishi cha Mezzanine, ambayo inaweza kutumika kama sehemu ya kupendeza. informações / dados das "coisas" serão salvados na wingu la AWS. Para uma primeira iteração com a DragonBoard na IoT como umodo, 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 temperatura pre -setada ya utaftaji wa kifaa cha karibu na eneo la uma, kwa kutumia habari inayofaa kwa habari inayofaa kwa sababu ya kufanya hivyo.

Hatua ya 1: Materias Necessários

Materias Necessários
Materias Necessários
Materias Necessários
Materias Necessários
  1. Weka DragonBoard. https://www.amazon.com/DragonBoard-410C-IoT-Start …….
  2. 96Bodi Kiungo Mezzanine
  3. Sensor de luminozidade (LDR) ni kampuni ya Linker Mezzanine.
  4. Sensor de temperatura ni nini kinachounganisha Mezzanine.
  5. Bonyeza kugusa acompanha ya Kiunganishi Mezzanine.
  6. Relé acompanha a Linker Mezzanine, utlizado para ligar o systema de A / C.
  7. LED acompanha na Kiunganishi Mezzanine, ambayo inawakilisha orodha mpya ya huduma.
  8. Instalação das bibliotecas citadas no passo 5.

Hatua ya 2: Uchunguzi, Mtaalam E Conexões

Wakaguzi, Wahusika A Conexões
Wakaguzi, Wahusika A Conexões
Wakaguzi, Wahusika A Conexões
Wakaguzi, Wahusika A Conexões

1. Kiunganishi Mezzanine:

Será needário conectar a placa Mezzanine na joka. Para detalhes, kiungo cha ushauri

2. Mwangaza wa sensorer (LDR)

Kihisi ni sehemu ya Kit da Linker Mezzanine na itabadilisha mfumo wa kuingiza ADC1. Para detalhes técnicos:

3. Sensor de Temperatura

Kihisi ni sehemu ya Kit da Linker Mezzanine na itabadilisha mfumo wa kuingiza ADC2. Para detalhes técnicos:

4. Botão Kugusa

Kihisi ni sehemu ya Kit da Linker Mezzanine na itabadilisha muundo wa D1. Este botão irá ligar / desligar o sistema como um todo. Oesso a este botão é somente local. Para detalhes técnicos: https://linksprite.com/wiki/index.php5? Title = Touch_…

5. Jamaa tena

Unashirikiana na Kit da Linker Mezzanine na ubadilishe njia ya kuingiza D2. Ele será utiizado para ligar / desligar o sistema de A / C. Para detalhes técnicos:

6. LED

O LED ni sehemu ya kit na Kiunganishi cha Mezzanine na itabadilisha muundo wa D4. O inawakilisha wawakilishi wa LED kwa iluminação de uma casa, seja algum cômodo interno da casa ou externo, como a iluminação de um jardim. Kwa sababu ya kupinga 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. Para detalhes técnicos:

7. Sensor de contato magnético

Kihisi hiki kinajumuisha sehemu moja ya sehemu ya Kit da Linker Mezzanine. Ele será usado em uma janela ou no portão de uma garagem for informar se a janela / garagem está aberta ou fechada. O sensor con um conjunto formado for 2 pequenas peças (ver foto do Step acima), o sensor proprimamente dito e um pequeno "imã", ni nini eneo la karibu la kufanya sensorer ya kifaa chako. O sensor sensizado neste projeto foi um N / A (kawaida ya kawaida). Quando o mã não está próximo do sensor, o sensor reportará estado aberto. Quando o imã estiver próximo do sensor, au estado reportado será fechado.

Hatua ya 3: Aplicativo Para Controle Remoto

Aplicativo Para Controle Remoto
Aplicativo Para Controle Remoto

O aplicativo foi desenvolvido com o Mfumo wa Ionic, https://ionicframework.com/. Huduma hii inahitaji kupakuliwa na kutekelezwa kwa njia ya mwisho.

O aplicativo irá se comunicar (ler e atualizar os dados) com a wingu da AWS (AWS IoT- https://aws.amazon.com/iot/), ikiwa ni pamoja na huduma hii inaweza kutumika wakati wa kuweka ubao wa jadi kwa atualização dos status 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 bastrong do valor configurado, as luzes se acenderão automaticamente. Quando a intensidade de luz aumentar além do valor definition, as luzes se apagarão.

- O botão A / C inahusiana tena, ikiwa ni pamoja na maoni yako juu ya A / C kwa kila siku. Também é possível definir o valor desejado da temperatura. Assim que a temperatura da casa estiver maior do the temperatura de acionamento, o A / C será ligado e permanecerá ligado at a temperatura abaixar em 2 graus da tempreatura definida. Kwa mfano, maelezo zaidi ni kama ilivyo kwa 23 graus. Quando a temperatura interior chegar a 24 graus, o A / C será ligado na permanecerá ligado at a temperatura chegar a 20 graus, desligando então. Depois o ciclo se repetirá.

- Garagem inapeana nafasi ya kawaida ya karakana, se aberta ou fechada.

- Temperatura in the apenas informativa and mostra a temperatura do interior da casa.

- Luminosidade ni apesas informativa na most valor da luminosidade atual.

Segue em anexo os arquivos home.html na home.ts contendos os códigos kwa comunicação com wingu AWS na programu ya kufanya.

Hatua ya 4: Criando Uma "coisa" Na AWS IoT

Criando Uma
Criando Uma

Usanidi wa mpango wa kuanzisha IOT na AWS, unaweza kuchagua njia zingine za kufanya kazi:

1) Criar um projeto hakuna AWS IoT inayofaa kiungo:

2) Clique "tengeneza kitu" e então, "Unda kitu kimoja". Je, wewe ni mtu kufanya projeto na sehemu nyingine Ijayo.

3) Tazama, angalia "Unda kitu bila cheti". Mafunzo haya ni ya matumizi ya vyeti vya kutafakari kwa vitendo, kwa sababu hiyo ni kumbukumbu ya habari ya uso wa IOTT.

4) Nesse momento, sua "coisa" unaweza kusoma. Tutaangalia "coisa" hii kwa sababu tunatafuta njia mpya ya kufanya kazi. Nessa inawasilisha maoni yako juu ya maoni ya MQTT ikiwa ni pamoja na huduma kwa wahusika kwa sababu inaweza kutumika kwa njia inayowezekana, ikiwa ni pamoja na uamuzi wa utatuzi wa suluhisho. Hakuna código em Python ikiwa ni pamoja na hii, kwa ajili ya utaftaji wa habari wa hali ya juu. Nas opções também podemos ver a "shadow", ni kwa nini tunataka kujua kuhusu maelezo haya ya dragonboard refletida na AWS Cloud.

Hatua ya 5: Programu Em Python

Kama seguintes bibliotecas serão needárias para a execução do programa:

kuagiza spidevimport wakati kuagiza kuagiza logi kuagiza json kuagiza argparse

kutoka kwa libsoc kuagiza gpio

kutoka wakati wa kuagiza usingizi kutoka tarehe ya kuagiza ya wakati, wakati wa gpio_96 kuagiza GPIO kutoka AWSIoTPythonSDK. MQTTLib kuagiza AWSIoTMQTTClient kutoka AWSIoTPythonSDK. MQTTLib

Soma abaixo código completo kufanya programu:

kuagiza spidevimport wakati kuagiza kuagiza logi kuagiza json kuagiza argparse

kutoka kwa libsoc kuagiza gpio

kutoka wakati wa kuagiza usingizi kutoka kwa tarehe ya kuagiza ya wakati, wakati wa gpio_96 kuagiza GPIO kutoka AWSIoTPythonSDK. MQTTLib ingiza AWSIoTMQTTClient kutoka AWSIoTPythonSDK. MQTTLib ingiza AWSIoTMQTTShadow

GPIO_CS = GPIO.gpio_id ('GPIO_CS') # Analog Port

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

pini = ((GPIO_CS, 'nje'), (BUTTON, 'in'), (RELE, 'nje'), (LED, 'nje'),)

def setdevices (deltaMessagePython):

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

##### AC

ikiwa Rele_Status == 1: gpio.digital_write (RELE, GPIO. HIGH)

ikiwa Rele_Status == 0:

gpio.digital_write (RELE, GPIO. LOW)

##### Sistema de Iluminacao

ikiwa Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) ikiwa Led_Status == 0: gpio.digital_write (LED, GPIO. LOW)

def readadc (gpio):

gpio.digital_write (GPIO_CS, GPIO. HIGH)

wakati. kulala (0.0002) gpio.digital_write (GPIO_CS, GPIO. LOW) r = spi.xfer2 ([0x01, 0xA0, 0x00]) # ADC2 - Joto 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)

saa. (0.0002) gpio.digital_write (GPIO_CS, GPIO. LOW) r = spi.xfer2 ([0x01, 0x80, 0x00]) # ADC1 - Mwangaza gpio.digital_write (GPIO_CS, GPIO. HIGH) adcoutldr = (r [1] << 8) & 0b1100000000 adcoutldr = adcoutldr | (r [2] & 0xff) adcoutldr = str (adcoutldr) sasa = datetime.utcnow () now_str = sasa. wakati wa saa ('% Y-% m-% dT% H:% M:% SZ') temperatura = "{ ".2f}" ("$ aws / mambo / DBpyAWS1116 / kivuli / sasisho", payload_temp, 0) kurudi r

def desliga ():

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

kukimbia (gpio):

mfumo_status = 1

wakati Kweli:

time.sleep (2) button_value = gpio.digital_read (BUTTON) chapa ("----") time.sleep (0.25) if button_value == 1: if system_status == 0: system_status = 1 else: system_status = 0 desliga () ikiwa system_status == 1: value = readadc (gpio) chapa "SYSTEM_STATUS% d"% system_status time.lala (3)

kivuli cha darasaCallbackContainer:

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

# Upigaji Kelele wa kawaida

def customShadowCallback_Delta (ubinafsi, malipo, jibu, ishara): chapisha ("Nimepokea ujumbe wa delta:") # # "DELTA UJUMBE% s"% deltaMessage ### Omba kusasisha hali iliyoripotiwa newPayload = '{"state": {"reported":' + deltaMessage + '}}' deltaMessagePython = json.loads (deltaMessage) setdevices (deltaMessagePython)

spi = spidev. SpiDev ()

kufungua (0, 0) spi.max_speed_hz = 10000 spi.mode = 0b00 spi.bits_per_word = 8

####### Ufafanuzi wa kitu

Uunganisho msingi wa cheti # AWS

myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials (/ / home / / / / / /, "/ home / linaro / shared / AWS /" SUA CHAVE "-private.pem.key", "/ home / linaro / shared / AWS /" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Infinite offline Chapisha foleni ya myMQTTClient.configureDrainingFrequency (2) # Kuondoa: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout (5) # 5 sec #const. coisajsb "," imeunganishwa ", 0)

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

####### Ufafanuzi wa kivuli

# Init AWSIoTMQTTShadowMteja

myAWSIoTMQTTShadowClient = Hakuna myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2.amazonaws.com", 8883) myAWSIoTMQTTShadowClient.configureCredentials ("/ nyumbani / linaro / pamoja / AWS / root- CA.crt "," / nyumba / linaro / iliyoshirikiwa / AWS / "SUA CHAVE" -private.pem.key "," / home / linaro / shared / AWS / "SEU CERTIFICADO-certificate.pem.crt")

# AWSIo TMQTTShadowClient ConfigurationmyAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10) # 10 sec myAWSIoTMQTTSHodentClient

# Unganisha na AWS IoT

myAWSIoTMQTTShadowClient.connect ()

# Unda Kionyeshi cha kifaa na usajili unaoendelea

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

# Sikiza kwenye deltas

kifaaShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)

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

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

ikiwa _name_ == "_main_":

na GPIO (pini) kama gpio: kukimbia (gpio)

Hatua ya 6: Finalização

Finalização
Finalização

Após ter concluido os passos anteriores, deve-se inicializar o sistema executando o código fornecido no passo 5 and inicializar o app através do Ionic, usando o comando Ionic serve.

Ili kupata shida, tumia tena Jaribio la Mteja wa MQTT kufanya AWS, iweze kutambuliwa kama njia ya kutumia mensagens enviadas kwenye joka la joka inayoweza kutekelezwa na fomu ya AWS Cloud: https://us-west-2.console.aws.amazon.com / iotv2 / hom…

Ilipendekeza: