INHOUDSOPGAWE:

Begin met 'n slim huis - Projeto Final: 6 stappe
Begin met 'n slim huis - Projeto Final: 6 stappe

Video: Begin met 'n slim huis - Projeto Final: 6 stappe

Video: Begin met 'n slim huis - Projeto Final: 6 stappe
Video: Лошадь начала топтать гроб во время похорон! Когда тот треснул люди услышали плач! 2024, November
Anonim
Begin met 'n slim huis - Projeto Final
Begin met 'n slim huis - Projeto Final

'N Slim huis kan 'n uiteindelike projek vir die finale gebruik van IoT bied

Ons kan ook 'n afsonderlike en uiteindelike deel van 'n slimme tuiste gebruik om 'n slim tuiste te bekom, wat konsistente de sensores en atuadores conectados van DrangonBoard + Linker Mezzanine kan bied 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 temperatura pre -setada e um sensor de proximidade que será instalado no portão de uma garagem, com a intenção the informar ao proprietário da casa se o portão encontra-se aberto ou fechado.

Stap 1: Materias Necessários

Materias Necessários
Materias Necessários
Materias Necessários
Materias Necessários
  1. Plaas DragonBoard.
  2. 96Boards Linker Mezzanine
  3. Sensor de luminozidade (LDR) is saam met 'n Linker Mezzanine.
  4. Temperatuursensor vir meervoudige verbindings.
  5. Dit is 'n aanraking met 'n Linker Mezzanine.
  6. Verwant aan 'n Linker -mezzanine, wat ook 'n stelsel vir lugversorging kan gebruik.
  7. LED -acompanha en Linker Mezzanine, wat 'n illuminação en ser ativada verteenwoordig.
  8. Instalação das bibliotecas citadas no passo 5.

Stap 2: Sensore, 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. Linker Mezzanine:

Dit is nodig om 'n mezzanine op 'n draakbord te kry. Vir meer inligting, skakel die konsultant

2. Sensor luminosidade (LDR)

Ons sensor is 'n kit vir 'n linker -mezzanine en kan 'n ADC1 -ingang gebruik. Vir meer besonderhede:

3. Temperatuur sensor

Ons sensor is 'n kit vir 'n linker -mezzanine en kan 'n ADC2 -ingang gebruik. Vir meer besonderhede:

4. Botão Touch

Ons sensor is 'n deel van die kit tussen die mezzanine en die versameling van die D1 -eenheid. Este botão irá ligar/desligar o sistema como um todo. O acesso a este botão é somente local. Vir meer besonderhede: https://linksprite.com/wiki/index.php5? Title = Touch_ …

5. Relé

Ons kan ook 'n mezzanine -kit vir die Linker -eenheid gebruik en die D2 -eenheid konnekteer. Ons kan hierdie e -posadres vir A/C. bestudeer:

6. LED

Ons LED -lampe kan saamgestel word met 'n mezzanine -skakelaar en 'n versameling vir D4. Ons LED -lampe bied 'n omskakeling van 'n interne omskakeling, 'n interne ekstern of 'n eksterne funksie. Ons kan ook 'n weerstand van 10 000 ohm gebruik as 'n bestaan wat bestaan uit 'n korrekte gebruik van 'n stelsel, maar ek kan ook ander ervarings verifieer as 'n analoog analoog. Vir meer besonderhede:

7. Sensor de contato magnético

Este sensor foi comprado a parte e não faz parte do Kit da Linker Mezzanine. Ons kan dit nie gebruik nie. Ons sensor het 'n kombinasie van 2 pequenas peças ('n foto van Step acima), of sensor proprimamente dito e um pequeno "imã", wat ao aproximar-se do sensor irá alterar or estado do sensor. O sensor kan 'n volgende projeto foi um N/A (normalment aberto) gebruik. Ons kan nie 'n sensor of 'n sensor rapporteer nie. Ons kan 'n sensor of 'n verslag doen wat ons kan gebruik.

Stap 3: Aplicativo Para Controle Remoto

Aplicativo Para Controle Remoto
Aplicativo Para Controle Remoto

Aplicativo foi desenvolvido com o Ionic Framework, https://ionicframework.com/. Dit is noodsaaklik om dit af te laai en uiteindelik 'n uiteindelike weergawe te kry.

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 sensores e atuadores.

- Sistema de Iluminação mostra o estado do sitesma de iluminação, ligado ou desligado. Ons kan die waarde van ons instelling as 'n outomatiese lus gebruik. Dit is 'n intensiewe manier om die waarde te definieer, aangesien luses se apagarão.

- Ons bied 'n A/C -oplossing aan, wat 'n stelsel van A/C -casa kan bied. Ons kan die temperatuur definieer. Ons kan 'n temperatuur as 'n temperatuur oorweeg om 'n temperatuur te bereik, of 'n A/C -temperatuur kan 'n permanente temperatuur in 'n temperatuur van 2 tempreatura definieer. Byvoorbeeld, dit kan oorweeg word om 'n temperatuur van 23 grade te bereik. Ons kan 'n temperatuur in die binnekant van 'n temperatuur van 24, 'n lugversorging en 'n permanente temperatuur in 'n temperatuur van 20 g, of 'n enkele eenheid, gebruik. Depois o ciclo se repetirá.

- Garagem informará a atual posição da garagem, se aberta ou fechada.

- Temperatuur en aanneming van inligting oor die binnenshuise temperatuur.

- 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.

Stap 4: Criando Uma "coisa" Na AWS IoT

Criando Uma
Criando Uma

Vir die opstelling van IoT en AWS, kan ons ook die volgende funksies gebruik:

1) Skakel na AWS IoT se skakel:

2) Klik "skep 'n ding" en "Skep 'n enkele ding". Klik hier om die volgende te klik.

3) Klik dan op "Skep 'n ding sonder sertifikaat". Ons tutoriale kan ook gebruik word om ons sertifikate te bevraagteken, maar ek kan dit ook aanbeveel vir die gebruik van IoT -sertifikate.

4) Nesse momento, as 'coisa' já estará criada. Klik nie op die "coisa" nie, want dit kan as 'n opmerking gebruik word. Ons kan dit ook gebruik om ons te help met die opsporing van probleme met die oplos van probleme. Geen python kan as 'n ander apresentado vir ons gebruik word nie. Ons kan ook 'n "skaduwee" sien, en dit is 'n inligting oor die draakbord wat na AWS Cloud herlaai word.

Stap 5: Programa Em Python

Aangesien bibliotecas noodsaaklik is vir 'n uitvoerende program:

invoer spidevimport tyd invoer logging invoer json invoer argparse

van libsoc import gpio

vanaf tyd invoer slaap vanaf datum datum invoer, tyd vanaf gpio_96boards invoer GPIO vanaf AWSIoTPythonSDK. MQTTLib invoer AWSIoTMQTTClient vanaf AWSIoTPythonSDK. MQTTLib

Volg die volledige program:

invoer spidevimport tyd invoer logging invoer json invoer argparse

van libsoc import gpio

vanaf tyd invoer slaap vanaf datum datum invoer, tyd vanaf gpio_96boards invoer GPIO vanaf AWSIoTPythonSDK. MQTTLib invoer AWSIoTMQTTClient vanaf AWSIoTPythonSDK. MQTTLib invoer AWSIoTMQTTShadowClient

GPIO_CS = GPIO.gpio_id ('GPIO_CS') #Analoogpoort

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

penne = ((GPIO_CS, 'uit'), (KNOP, 'in'), (RELE, 'uit'), (LED, 'uit'),)

def setdevices (deltaMessagePython):

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

##### AC

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

as Rele_Status == 0:

gpio.digital_write (RELE, GPIO. LOW)

##### Sistema de Iluminacao

as Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) as 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] & 0xff) adc_temp = (advertensie *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) nou = datetime.utcnow () now_str = now.strftime ('%Y-%m-%dT%H:%M:%SZ') temperatuura = "{:.2f} ". Format (adc_temp) payload_temp = '{" state ": {" gewenst ": {" Luminosidade ":' + adcoutldr + '," Temperatura ":' + temperatura + '}}}' myMQTTClient.publish ("$ aws/things/DBpyAWS1116/shadow/update", payload_temp, 0) opgawe r

def desliga ():

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

def run (gpio):

stelselstatus = 1

terwyl dit waar is:

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 () as system_status == 1: value = readadc (gpio) druk "SYSTEM_STATUS %d" %system_status time.sleep (3)

klas shadowCallbackContainer:

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

# Aangepaste skadu -terugbel

def customShadowCallback_Delta (self, payload, responseStatus, token): print ("Ontvang 'n delta -boodskap:") ### payload update script payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["state"]) print "DELTA MESSAGE %s" %deltaMessage ### Versoek om die gerapporteerde toestand op te dateer newPayload = '{"state": {"gerapporteer":' + 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

######## Ding definisie

# AWS IoT -sertifikaatgebaseerde verbinding

myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/home/"/home/"/home/"/home/"/home/"/home/"/home/"/home/"/home/"/home/"/home/"/home/"/home/"/home/"/home/"/home/"/home/"/home/"/home/"/home/"/home/"/home/, "/home/linaro/shared/AWS/" SUA CHAVE "-private.pem.key", "/home/linaro/shared/AWS/" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Oneindig op die regte pad Publiseer tou myMQTTClient.configureDrainingFrequency (2) # Draining: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout (5) # 5 secTCTC (myQTlient) en publiseer my. MinTlient (myQ) coisajsb "," verbind ", 0)

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

######## Skadu definisie

# Eerste AWSIoTMQTTShadowClient

myAWSIoTMQTTShadowClient = Geen myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us" CA.crt ","/home/linaro/shared/AWS/"SUA CHAVE" -private.pem.key ","/home/linaro/shared/AWS/"SEU CERTIFICADO-certificate.pem.crt")

# AWSIoTMQTTShadowClient -konfigurasiemyAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10) # 10 sek myAWSIoTMQThout (5) sek.

# Koppel aan AWS IoT

myAWSIoTMQTTShadowClient.connect ()

# Skep 'n apparaatskadu met volgehoue intekening

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

# Luister op deltas

deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)

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

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

as _naam_ == "_hoof_":

met GPIO (penne) as gpio: hardloop (gpio)

Stap 6: Voltooi

Finalização
Finalização

Ons kan 'n samevatting van die anoniore, die inisieer van die stelsel of die uitvoer van 'n stelsel gebruik, maar ook 'n amptelike app vir Ioniese diens, sowel as vir 'n Ioniese diens.

Vir moontlike probleme op te los, kan ons 'n funksie van MQTT-kliëntetoets vir AWS aanbeveel, en dit kan ook as 'n moontlike weergawe van die draakbord gebruik word om die formule van AWS Cloud te verwerk: https://us-west-2.console.aws.amazon.com/iotv2/hom …

Aanbeveel: