תוכן עניינים:

התחלת בית חכם - גמר Projeto: 6 שלבים
התחלת בית חכם - גמר Projeto: 6 שלבים

וִידֵאוֹ: התחלת בית חכם - גמר Projeto: 6 שלבים

וִידֵאוֹ: התחלת בית חכם - גמר Projeto: 6 שלבים
וִידֵאוֹ: עדן חסון ואודיה - הנשיקה! 😱 2024, יולי
Anonim
התחלת בית חכם - גמר Projeto
התחלת בית חכם - גמר Projeto

Projeto apresentado é parte do projeto final do curso de IoT aplicado a בית חכם

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 incluido em breve) e as informações/dados das "coisas" serão salvados ב- cloud da AWS. Para uma primeira iteração com a DragonBoard e 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 temperatura 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: Materias Necessários

Materias Necessários
Materias Necessários
Materias Necessários
Materias Necessários
  1. מקום DragonBoard.
  2. 96 Boards Linker Mezzanine
  3. Sensor de luminozidade (LDR) que acompanha a Linker Mezzanine.
  4. חיישן טמפרטורה קיבולת ביניים.
  5. Botão touch que acompanha a Linker Mezzanine.
  6. Relé acompanha a Linker Mezzanine, utlizado para ligar or systema de A/C.
  7. LED acompanha a Mellker Mezzanine, que representará a iluminação a ser ativada.
  8. Instalação das bibliotecas citadas no passo 5.

שלב 2: חיישנים, Atuadores E Conexões

חיישנים, Atuadores E Conexões
חיישנים, Atuadores E Conexões
חיישנים, Atuadores E Conexões
חיישנים, Atuadores E Conexões

1. ביניים מקשרת:

הכרחית הכריתה של אזור הביניים על דרקונבורד. בשביל פרטים, קישור ליועץ

2. Luminosidade חיישן (LDR)

O sensor é parte do Kit da Linker Mezzanine e deverá ser conectado and entrada ADC1. לפרטים נוספים:

3. חיישן דה טמפרטורה

O sensor é parte do Kit da Linker Mezzanine e deverá ser conectado and entrada ADC2. לפרטים נוספים:

4. בוטאו טאץ '

O sensor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada D1. Este botão irá ligar/desligar o systema como um todo. O acesso a este botão é somente local. לפרטים נוספים על הטכנולוגיה: https://linksprite.com/wiki/index.php5? Title = Touch_…

5. רלה

O relé é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada D2. Ele serái utiizado for ligar/desligar o sistema de A/C. Para detalhes técnicos:

6. לד

O LED é parte do kit da Linker Mezzanine e deverá ser conectado and entrada D4. O LED representará o systemema 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 for diminuir a corrente utilizada pelo system, yes que em experiências anteriores verificou-se conflitos com as portas analógicas. לפרטים נוספים:

7. Sensor de contato magnético

חיישן Este 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. חיישן אחד יכול להכין 2 צורות (ניתן לראות את הצעדים בשלב זה), או את החיישן המתאים לזה "אימאו", וחייבים אותו בחיינו. O sensor utlizado next projeto foi um N/A (normalmente aberto). חיישן או חיישן, או דיווחים על חיישן. חיישן זה יכול לספק חיישנים, או לאפשר דיווחים.

שלב 3: Aplicativo Para Controle Remoto

Aplicativo Para Controle Remoto
Aplicativo Para Controle Remoto

O aplicativo foi desenvolvido com o Ionic Framework, https://ionicframework.com/. יש צורך בהורדה או בהורדה.

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.

- Sistema de Iluminação mostra o 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 sistema de A/C da casa. Também é possível definir o valor desejado da temperatura. אנו יכולים להעריך את הטמפרטורה של הטמפרטורה, כי תעריפי מיזוג האוויר יכולים להיות קבועים בטמפרטורה של 2 טמפרטורות. לדוגמא, אפשר לקחת בחשבון טמפרטורה של 23 מעלות. כמו כן, חומץ פנימי טמפרטורה 24 גרם, מזגן או מזגן קבוע וטמפרטורה של חומץ 20 גרם. Depois o ciclo se repetirá.

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

- טמפרטורות אינפורמטיביות וטמפרטורות פנימיות.

- 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 ענן AWS e atualização do app.

שלב 4: Criando Uma "coisa" Na AWS IoT

קריאנדו אומה
קריאנדו אומה

עבור ההתקנה של IoT ב- AWS, או מספר התייחסויות:

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

2) לחץ על "צור דבר" והתחבר, "צור דבר אחד". לא ניתן לבצע פרוייקטים או ללחוץ על הבא.

3) לאחר מכן, לחץ על "צור דבר ללא תעודה". מדריך לא ניתן להשתמש בשירותי תעודה עבור שאלות ותשובות, ועוד המלצות מומלצות או תעודות IoT.

4) Nesse momento, sua "coisa" já estará criada. Click 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 fora fazer a atualização dos dados a serem enviados for a Could, assim como é uma ótima ferramenta fora troubleshooting. אין צורך ב Python que será apresentado em breve, foram utlizados alguns destes tópicos. אנו יכולים להציג פודמים של "צל", כיוון שאפשר להודיע על מידע על דרגוןבורד על AWS Cloud.

שלב 5: Programa Em Python

כפי שנאמר bibliotecas serão needsárias para a execução do programa:

יבוא spidevimport זמן יבוא רישום יבוא json יבוא argparse

מ- libsoc import gpio

מעת זמן ייבוא שינה מתאריך הייבוא של datetime, datetime מ- gpio_96boards ייבוא GPIO מ- AWSIoTPythonSDK. MQTTLib ייבוא AWSIoTMQTTClient מ- AWSIoTPythonSDK. MQTTLib

תכונה מלאה של התוכנית:

יבוא spidevimport זמן יבוא רישום יבוא json יבוא argparse

מ- libsoc import gpio

ממועד ייבוא שינה מתאריך הייבוא של datetime, datetime מ- gpio_96boards ייבוא GPIO מ- AWSIoTPythonSDK. MQTTLib ייבוא AWSIoTMQTTClient מ- AWSIoTPythonSDK. MQTTLib יבוא AWSIoTMQTTShadowClient

GPIO_CS = GPIO.gpio_id ('GPIO_CS') #יציאה אנלוגית

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

סיכות = ((GPIO_CS, 'החוצה'), (כפתור, 'in'), (RELE, 'out'), (LED, 'out'),)

def setdevices (deltaMessagePython):

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

##### AC

אם 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 - טמפרטורה 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) עכשיו = datetime.utcnow () now_str = now.strftime ('%Y-%m-%dT%H:%M:%SZ') temperatura = "{:.2f} ". Format (adc_temp) payload_temp = '{" state ": {" wanted ": {" 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 (gpio):

מערכת_סטטוס = 1

בעוד שזה נכון:

time.sleep (2) button_value = gpio.digital_read (BUTTON) הדפסה ("----") time.sleep (0.25) אם button_value == 1: אם system_status == 0: system_status = 1 אחר: system_status = 0 desliga () אם system_status == 1: value = readadc (gpio) הדפס "SYSTEM_STATUS %d" %system_status time.sleep (3)

class classCallbackContainer:

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

# התקשרות צל מחדש בהתאמה אישית

def customShadowCallback_Delta (self, payload, responseStatus, token): print ("קיבל הודעת דלתא:") ### payload update script payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["state"]) הדפסה "DELTA MESSAGE %s" %deltaMessage ### בקשה לעדכן את מצב הדיווח newPayload = '{"state": {"reported":' + 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

######## הגדרת דבר

# חיבור מבוסס תעודת AWS IoT

myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/CA/home/"/home/"/home/, "/home/linaro/shared/AWS/" SUA CHAVE "-private.pem.key", "/home/linaro/shared/AWS/" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (-- 1) # אינסוף לא מקוון פרסם תור myMQTTClient.configureDrainingFrequency (2) # Drrain: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout (5) # 5 secTCTC (פרסם) myQMlTl.cntl (פרק my. MlTl). coisajsb "," מחובר ", 0)

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

######## הגדרת צללים

# Init AWSIoTMQTTShadowClient

myAWSIoTMQTTShadowClient = אין myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END- POINT.us-WS./SonSon.awSon.awSon/wSon/ws. CA.crt ","/home/linaro/shared/AWS/"SUA CHAVE" -private.pem.key ","/home/linaro/shared/AWS/"SEU CERTIFICADO-certificate.pem.crt")

# תצורת AWSIoTMQTTShadowClientmyAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10) # 10 sec myAWSIoTMQThout (5) sec.

# התחבר ל- 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", '{"state": {"wanted": {"SystemStatus": 1, "SisIlumi": 0, "AC": 0, "Garagem": "Fechada", "Temperatura": 25, "Luminosidade": 123}}} ', 0)

אם _name_ == "_ עיקר_":

עם GPIO (סיכות) בתור gpio: הפעלה (gpio)

שלב 6: סיום

Finalização
Finalização

אנו יכולים לבטל את הסיכויים לאתר הנושאים האחרונים, לאפשר הרשמה של מערכת ההפעלה של מערכת ההפעלה או לתפקד ביונית.

על מנת לפתור בעיות, מומלץ להשתמש במבחן לקוח MQTT של AWS, ואפשר גם לוודא שסימני הגדרות של דרגוןבורד אפשר לשלוח את פורמט קורא ל- AWS Cloud: https://us-west-2.console.aws.amazon.com/iotv2/hom …

מוּמלָץ: