Πίνακας περιεχομένων:

Έναρξη έξυπνου σπιτιού - Τελικός Projeto: 6 βήματα
Έναρξη έξυπνου σπιτιού - Τελικός Projeto: 6 βήματα

Βίντεο: Έναρξη έξυπνου σπιτιού - Τελικός Projeto: 6 βήματα

Βίντεο: Έναρξη έξυπνου σπιτιού - Τελικός Projeto: 6 βήματα
Βίντεο: Ολοκληρώστε το μάθημα React Query σε μια ώρα | TanStack Query v4 για αρχάριους 2024, Νοέμβριος
Anonim
Έναρξη ενός έξυπνου σπιτιού - Projeto Final
Έναρξη ενός έξυπνου σπιτιού - Projeto Final

Προεπισκόπηση é parte do projeto final do curso de IoT aplicado a Smart Home

Όσο για το τελευταίο και για το τελευταίο, μπορείτε να χρησιμοποιήσετε το IoT για το Smart Home, που αποτελείται από τις αρχές και τις συνδέσεις με το DrangonBoard + Linker Mezzanine, και τις εφαρμογές που χρειάζεστε για να το κάνετε αυτό informações/dados das "coisas" serão salvados na cloud da AWS. Para uma Primeira iteração com a DragonBoard e IoT como 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 -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: Απαιτήσεις υλικών

Materias Necessários
Materias Necessários
Materias Necessários
Materias Necessários
  1. Τοποθετήστε το DragonBoard.
  2. 96Boards Linker Mezzanine
  3. Sensor de luminozidade (LDR) que acompanha a Linker Mezzanine.
  4. Sensor de temperatura que acompanha a Linker Mezzanine.
  5. Botão touch que acompanha a Linker Mezzanine.
  6. Βοηθήστε τον σύνδεσμο στον ημιώροφο, που χρησιμοποιείται για τη σύνδεση του συστήματος κλιματισμού.
  7. LED acompanha a Linker Mezzanine, που αντιπροσωπεύει έναν φωτισμό και μια υπηρεσία.
  8. Instalação das bibliotecas citadas no passo 5.

Βήμα 2: Sensores, 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:

Será needário conectar a placa Mezzanine και dragonboard. Για περισσότερες πληροφορίες, συμβουλευτικός σύνδεσμος

2. Αισθητήρας luminosidade (LDR)

O sensor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC1. Για περισσότερες λεπτομέρειες:

3. Sensor de Temperatura

O sensor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC2. Για περισσότερες λεπτομέρειες:

4. Botão Touch

O sensor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada D1. Este botão irá ligar/desligar ή sistema como um todo. O acesso a este botão é somente local. Για περισσότερες λεπτομέρειες: 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. Ελέγξτε τη χρήση των συστημάτων 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 εκπρόσωπος του συστήματος φωτισμού για το uma casa, το οποίο μπορεί να χρησιμοποιηθεί για εσωτερικούς χώρους ή εξωτερικούς χώρους, καθώς και για εικονογράφηση του χώρου. Λόγω της αντίστασης 10k ohm em sério com ή já υπάρχουσα για να μειώσετε τη χρήση ενός συστήματος, μπορείτε να δοκιμάσετε anteriores verificou-se conflitos com as portas analógicas. Για περισσότερες λεπτομέρειες:

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 um unt unt unt ado 2 2 2 2 2 2 2 ver ver ver (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). Quando o imã não está próximo do sensor, o sensor reportará estado aberto. Quando o imã estiver próximo do sensor, ή estado reportado será fechado.

Βήμα 3: Aplicativo Para Controller Remoto

Aplicativo Para Controlle Remoto
Aplicativo Para Controlle Remoto

Εφαρμογή για την εφαρμογή του Ionic Framework, https://ionicframework.com/. Είναι απαραίτητο να κατεβάσετε και να εγκαταστήσετε μια τελευταία έκδοση.

Εφαρμόζοντας την επικοινωνία (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 ή 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 permanecerá ligado até a temperatura abaixar em 2 graus da tempreatura definida. Για παράδειγμα, μπορείτε να λάβετε υπόψη σας μια θερμοκρασία 23 βαθμών. Διατηρήστε μια εσωτερική θερμοκρασία για 24 ώρες, για κλιματισμό και κλιματισμό, για θερμοκρασία και θερμοκρασία 20 βαθμών, αν θέλετε. 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.

Επιλέξτε την αρχική σελίδα home.html e home.ts contendos os códigos για την επικοινωνία με ένα cloud AWS και atualização για εφαρμογή.

Βήμα 4: Criando Uma "coisa" Na AWS IoT

Κριάντο Ούμα
Κριάντο Ούμα

Για την εγκατάσταση του IoT και του AWS, ορίστε τις δυνατότητες που σας αφορούν:

1) Criar um projeto no AWS IoT atravé do link:

2) Κλικ "δημιουργήστε ένα πράγμα" και μετά, "Δημιουργήστε ένα μόνο πράγμα". Dê o nome do projeto e clique em Next.

3) Επιλέξτε, επιλέξτε "Δημιουργήστε ένα πράγμα χωρίς πιστοποιητικό". Nesse tutorial που δεν χρησιμοποιούν τα πιστοποιητικά για την αναζήτηση περιπτώσεων, δεν μπορούν να προταθούν για τη χρήση των πιστοποιητικών IoT.

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 για την αντιμετώπιση προβλημάτων. No código em Python que será apresentado em breve, foram utlizados alguns destes tópicos. Λάβετε υπόψη σας ότι μπορείτε να βρείτε μια "σκιά", που θα σας πληροφορήσει ότι θα βρείτε πληροφορίες για το dragonboard refletida στο AWS Cloud.

Βήμα 5: Programa Em Python

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

εισαγωγή spidevimport ώρα εισαγωγής καταγραφής εισαγωγή json εισαγωγή argparse

από libsoc εισαγωγή gpio

από ώρα εισαγωγής ύπνου από ημερομηνία ημερομηνίας εισαγωγής ημερομηνία, ημερομηνία ώρας από gpio_96boards εισαγωγή GPIO από AWSIoTPythonSDK. MQTTLib εισαγωγή AWSIoTMQTTClient από AWSIoTPythonSDK. MQTTLib

Segue abaixo código completeo programa:

εισαγωγή spidevimport ώρα εισαγωγής καταγραφής εισαγωγή json εισαγωγή argparse

από libsoc εισαγωγή gpio

από ώρα εισαγωγής ύπνου από ημερομηνία εισαγωγής ημερομηνίας, ώρα δεδομένων από gpio_96boards εισαγωγή GPIO από AWSIoTPythonSDK. MQTTLib εισαγωγή AWSIoTMQTTClient από AWSIoTPythonSDK. MQTTLib εισαγωγή AWSIoTMQTTShadowClient

GPIO_CS = GPIO.gpio_id ('GPIO_CS') #Αναλογική θύρα

ΚΟΥΜΠΙ = GPIO.gpio_id ('GPIO_A') RELE = GPIO.gpio_id ('GPIO_C') LED = GPIO.gpio_id ('GPIO_G')

καρφίτσες = ((GPIO_CS, 'out'), (ΚΟΥΜΠΙ, "in"), (RELE, "out"), (LED, "out"),)

def setdevices (deltaMessagePython):

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

##### ΜΕΤΑ ΧΡΙΣΤΟΝ

εάν Rele_Status == 1: gpio.digital_write (RELE, GPIO. HIGH)

αν Rele_Status == 0:

gpio.digital_write (RELE, GPIO. LOW)

##### Sistema de Iluminacao

εάν Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) εάν 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 - Temperature gpio.digital_write (GPIO_CS, GPIO. HIGH) adcout = (r] << 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 =] << 8) & 0b1100000000 adcoutldr = adcoutldr | (r [2] & 0xff) adcoutldr = str (adcoutldr) now = datetime.utcnow () now_str = now.strftime ('%Y-%m-%dT%H:%M:%SZ') temperatura = "{:.2f} ". Format (adc_temp) payload_temp = '{" κατάσταση ": {" επιθυμητό ": {" 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):

system_status = 1

ενώ True:

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 () εάν system_status == 1: value = readadc (gpio) εκτύπωση "SYSTEM_STATUS %d" %system_status time.sleep (3)

class shadowCallbackContainer:

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

# Προσαρμοσμένη επανάκληση σκιάς

def customShadowCallback_Delta (self, payload, respondStatus, token): print ("Έλαβε ένα δέλτα μήνυμα:") ### payloadDcript script payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["state"]) print "DELTA MESSAGE %s" %deltaMessage ### Αίτημα ενημέρωσης της αναφερόμενης κατάστασης 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

####### Πράξη ορισμός

# Σύνδεση βασισμένη σε πιστοποιητικό IoT # AWS

myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/home/lin/CA/lin/, "/home/linaro/shared/AWS/" SUA CHAVE "-private.pem.key", "/home/linaro/shared/AWS/" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Infinite offline Publish queue myMQTTClient.configureDrainingFrequency (2) # Draining: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout (5) coisajsb "," συνδεδεμένο ", 0)

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

####### Ορισμός σκιάς

# Έναρξη AWSIoTMQTTShadowClient

myAWSIoTMQTTShadowClient = Καμία myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2.amazonaws.com", 8883) myAWSIoTMQTTShadowClient.configureCredentials ("/ home / linaro / μοιράστηκε / AWS / root- 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 SecureMainTow

# Συνδεθείτε στο AWS IoT

myAWSIoTMQTTShadowClient.connect ()

# Δημιουργήστε μια συσκευήΣκιά με επίμονη συνδρομή

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

# Ακούστε στα δέλτα

deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)

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

myMQTTClient.publish ("$ aws/things/DBpyAWS1116/shadow/update", '{"κατάσταση": {"επιθυμητό": {"SystemStatus": 1, "SisIlumi": 0, "AC": 0, "Garagem": "Fechada", "Temperatura": 25, "Luminosidade": 123}}} ', 0)

αν _name_ == "_main_":

με GPIO (καρφίτσες) ως gpio: τρέξτε (gpio)

Βήμα 6: Finalização

Finalização
Finalização

Após ter concluido os passos anteriores, deve-se inicializar ή sistema exeando o código fornecido no passo 5 και inicializar o app através do Ionic, usando o comando Ionic σερβίρισμα.

Για να μπορέσετε να αντιμετωπίσετε προβλήματα, συνιστάται να χρησιμοποιήσετε μια λειτουργία MQTT Client TEST για AWS, μπορείτε να επιβεβαιώσετε ότι μπορείτε να στείλετε μια μορφή από το dragonboard στο AWS Cloud:

Συνιστάται: