Cuprins:
- Pasul 1: Materias Necessários
- Pasul 2: senzori, conectori și conexiuni
- Pasul 3: Aplicativ Pentru Control Remoto
- Pasul 4: Criando Uma "coisa" Na AWS IoT
- Pasul 5: Programa Em Python
- Pasul 6: Finalização
Video: Începerea unei case inteligente - Proiect final: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Proiectul prezentat este parte a proiectului final al cursului de IoT aplicat la Smart Home
O proiectare mostrado a urma este parte a proiectului final a ser prezentat nu curs de IoT aplicat la Smart Home, care constă în senzori și atuatori conectați în DrangonBoard + Linker Mezzanine, um aplicativ dezvoltat com o ionic (a inclus în scurt) e as informações / dados das "coisas" serão salvados na cloud da AWS. Para uma prima iteração com a DragonBoard e IoT as um tot, 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-condiționat de acord com uma temperatura pre -setada e um sensor de proximitate care va fi instalat no portão de uma garagem, com a intenția de informare a proprietății da casa se o portão encontra-se aberto ou fechado.
Pasul 1: Materias Necessários
- Plasați DragonBoard.
- 96Boards Linker Mezzanine
- Sensor de luminozitate (LDR) care acompanha a Linker Mezzanine.
- Sensor de temperatura care acompanha a Linker Mezzanine.
- Botão touch that acompanha a Linker Mezzanine.
- Relé acompanha a Linker Mezzanine, utlizado for ligar o systema de A / C.
- LED acompanha a Linker Mezzanine, that representará a iluminação a ser ativada.
- Instalação das bibliotecas citadas no passo 5.
Pasul 2: senzori, conectori și conexiuni
1. Linker Mezanin:
Será necessário conectar a placa Mezzanine na dragonboard. Pentru detalii, consultați linkul
2. Luminozitatea senzorului (LDR)
O sensor is part do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC1. Pentru detalii tehnice:
3. Sensor de Temperatura
O sensor is part do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC2. Pentru detalii tehnice:
4. Atingeți Botão
O sensor is parte do Kit da Linker Mezzanine e deverá ser conectado na entrada D1. Este botão irá ligar / desligar o system as um tot. O acesso a este botão este somente local. Pentru detalii tehnice: 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. El va fi utiizat pentru ligar / desligar o sistem de A / C. Para detalii tehnice:
6. LED
O LED este parte a kitului de la Linker Mezzanine și deveră este conectat la intrare D4. O LED representará o sistema de iluminação de uma casa, seja algum cômodo interno da casa ou externo, as a iluminação de um jardim. Foi adicionado um resistor de 10k ohm em sério com o já existent pentru diminuarea a curentei folosite pelo sistem, já que em experiências anteriores verificou-se conflitos com as portas analógicas. Pentru detalii tehnice:
7. Senzor de contact magnetic
Acest senzor a fost inclus în parte și nu face parte din Kit da Linker Mezzanine. El va fi folosit în uma janela ou no portão de uma garagem pentru informare se a janela / garagem está aberta ou fechada. O senzor este un format format de 2 mici părți (ver foto do Step acima), o senzor primordial și um mic "imă", care să se apropie de senzor să altereze sau să stea senzor. O senzor folosit în acest proiect a fost um / N (normal deschis). Când o imagine nu este apropiată de senzor, sau senzorul raportează starea deschisă. Când o imagine este apropiată de senzor, o stare raportată va fi dată.
Pasul 3: Aplicativ Pentru Control Remoto
O aplicație a fost dezvoltată cu Ionic Framework, https://ionicframework.com/. Será necessário fazer o download and a installationção da ultima versão.
O aplicație irá se comunicar (ler e atualizar os dados) com a cloud da AWS (AWS IoT- https://aws.amazon.com/iot/), care posteriormente va fi accesat pela placa dragonboard pentru atualização dos status dos sensores e atuadores.
- Sistema de Iluminação mostra o estado do sitesma de iluminação, ligado ou desligado. Când o nível de luminozitate se descarcă de valoare configurată, ca lumini se acordă automat. Când a intensitate de lumină crește al valorii definite, ca lumini se apagă.
- O botão A / C acionará o relé, care por sua vez acionará o sistema de A / C da casa. Também é possível definir o valor desejado de temperatura. Asim que a temperatura da casa estiver maior do that a temperature de acionamento, o A / C será ligado e permanecerá ligado até a temperatura abaixar em 2 graus da tempreatura definida. De exemplu, considerăm că temperatura este de 23 graus. Când o temperatură interioară ajunge la 24 graus, o A / C va fi legat și va rămâne ligat até la temperatura ajunge la 20 graus, desligando então. 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.
Urmăriți-vă anexele arhivelor home.html și home.ts conțin codurile pentru comunicație cu un cloud AWS și actualizarea aplicației.
Pasul 4: Criando Uma "coisa" Na AWS IoT
Pentru fazer o setup do IoT na AWS, următoarele pasuri deveră sunt urmate:
1) Criar um projeto no AWS IoT atravé do link:
2) Faceți clic pe „creați un lucru” e então, „Creați un singur lucru”. Dê o nome do projeto e clique em Next.
3) În continuare, faceți clic pe "Creați un lucru fără certificat". Nesse tutorial não iremos use os certificados por questões práticas, porém não é recomandado fazer or use of IoT sem certificados.
4) Nesse moment, sua "coisa" já estará criada. Clique no botão da "coisa" that foi criado para abrir a tela com as opções. Nessa tela putem ver os tópicosMQTT that we can ser usados for fazer a atualização dos dados to serem enviados for a Could, asim as é uma ótima toola for troubleshooting. Niciun cod în Python care va fi prezentat pe scurt, foram utlizat unele dintre acestea. În ceea ce privește opțiunile prea putem să vedem o „umbră”, nimic nu mai este o informație care se află în dragonboard refletită în AWS Cloud.
Pasul 5: Programa Em Python
Ca bibliotecă următoare sunt necesare pentru un program de execuție:
import spidevimport timp import logare import json import argparse
din libsoc import gpio
din timp import somn de la data de import datetime, datetime de la gpio_96boards import GPIO din AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTClient din AWSIoTPythonSDK. MQTTLib
Urmăriți codul complet al programului:
import spidevimport timp import logare import json import argparse
din libsoc import gpio
din timp import somn de la data de import datetime, datetime de la gpio_96boards import GPIO din AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTClient din AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTShadowClient
GPIO_CS = GPIO.gpio_id ('GPIO_CS') #Analog Port
BUTON = GPIO.gpio_id ('GPIO_A') RELE = GPIO.gpio_id ('GPIO_C') LED = GPIO.gpio_id ('GPIO_G')
pini = ((GPIO_CS, 'out'), (BUTON, 'in'), (RELE, 'out'), (LED, 'out'),)
def setdevices (deltaMessagePython):
System_Status = deltaMessagePython ['SystemStatus'] Rele_Status = deltaMessagePython ['AC'] Led_Status = deltaMessagePython ['SisIlumi']
##### AC
dacă Rele_Status == 1: gpio.digital_write (RELE, GPIO. HIGH)
dacă Rele_Status == 0:
gpio.digital_write (RELE, GPIO. LOW)
##### Sistema de Iluminacao
dacă Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) dacă Led_Status == 0: gpio.digital_write (LED, GPIO. LOW)
readadc def (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 - Temperatura 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 - Luminozitate gpio.digital_write (GPIO_CS, GPIO. HIGH) adcoutldr = (r] << 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 = '{" state ": {" dorit ": {" Luminosidade ":' + adcoutldr + '," Temperatura ":' + temperatura + '}}}' myMQTTClient.publish ("$ aws / things / DBpyAWS1116 / shadow / update", payload_temp, 0) returnează r
def desliga ():
gpio.digital_write (RELE, GPIO. LOW) gpio.digital_write (LED, GPIO. LOW)
def run (gpio):
system_status = 1
în timp ce este adevărat:
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 () if system_status == 1: value = readadc (gpio) print "SYSTEM_STATUS% d"% system_status time.sleep (3)
clasă shadowCallbackContainer:
def _init _ (self, deviceShadowInstance): self.deviceShadowInstance = deviceShadowInstance
# Rambursare personalizată Shadow
def customShadowCallback_Delta (self, payload, responseStatus, token): print ("A primit un mesaj delta:") ### payload update script payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["state"]) print "DELTA MESSAGE% s"% deltaMessage ### Cerere de actualizare a stării raportate newPayload = '{"state": {"rapòte":' + 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
####### Definiția lucrului
Conexiune bazată pe certificatul AWS IoT
myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / linaro /, "/ home / linaro / shared / AWS /" SUA CHAVE "-private.pem.key", "/ home / linaro / shared / AWS /" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Infinite offline Publish queuing myMQTTClient.configureDrainingFrequency (2) # Draining: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout (5) # 5 sec #connect (publică) coisajsb "," conectat ", 0)
########################
####### Definiția umbrelor
# Init AWSIoTMQTTShadowClient
myAWSIoTMQTTShadowClient = Nici unul myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2.amazonaws.com" / 88C) 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.configureMQ
# Conectați-vă la AWS IoT
myAWSIoTMQTTShadowClient.connect ()
# Creați un deviceShadow cu abonament persistent
deviceShadowHandler = myAWSIoTMQTTShadowClient.createShadowHandlerWithName ("DBpyAWS1116", True) shadowCallbackContainer_Bot = shadowCallbackContainer (deviceShadowHandler)
# Ascultă pe delte
deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)
#########################
myMQTTClient.publish ("$ aws / things / DBpyAWS1116 / shadow / update", '{"state": {"dorit": {"SystemStatus": 1, "SisIlumi": 0, "AC": 0, "Garagem": "Fechada", "Temperatura": 25, "Luminosidade": 123}}} ', 0)
dacă _name_ == "_main_":
cu GPIO (pini) ca gpio: run (gpio)
Pasul 6: Finalização
Após ter concluido os passos anterior, deve-se initializar o system executando o code fornecido no step 5 e initializar o app através do Ionic, folosind o comanda Ionic serve.
Pentru o posibilă depanare, vă recomandăm să folosiți o funcție MQTT Client TEST do AWS, unde este posibil să verificați și cum să trimiteți mesaje de pe dragonboard este actualizat de forma corectă în AWS Cloud: https://us-west-2.console.aws.amazon.com / iotv2 / hom …
Recomandat:
Utilizarea unei chitare Guitar Hero pentru a controla zoomul (numai Windows): 9 pași
Folosirea unei chitare Guitar Hero pentru controlul zoomului (numai pentru Windows): întrucât suntem în mijlocul unei pandemii globale, mulți dintre noi suntem blocați în casă și curățăm întâlnirile de pe Zoom. După un timp, acest lucru poate deveni foarte sumbru și obositor. În timp ce-mi curățam casa, am găsit o chitară veche Guitar Hero care a fost aruncată în
Achiziționarea, amplificarea și filtrarea circuitului de proiectare a unei electrocardiograme de bază: 6 pași
Achiziționarea, amplificarea și filtrarea circuitului de proiectare a unei electrocardiograme de bază: Pentru a finaliza acest instructable, singurele lucruri necesare sunt un computer, acces la internet și unele programe de simulare. În scopul acestui proiect, toate circuitele și simulările vor fi rulate pe LTspice XVII. Acest software de simulare conține
Cum se fac jaluzele cu role inteligente DIY cu comutatoarele inteligente SONOFF ?: 14 pași
Cum să faceți rulouri inteligente cu comutatoare inteligente SONOFF ?: Utilizați modul de interblocare în comutatoarele inteligente SONOFF pentru a vă transforma jaluzelele / jaluzelele obișnuite în inteligente. și să o tragi seara? Oricum, eu sunt
Cum să faci case inteligente folosind ES8266 la Just Rupees 450: 6 pași
Cum să faci case inteligente folosind ES8266 la Just Rupees 450: Iată un tutorial complet pentru realizarea CASELOR SMART folosind NodMCU ESP8266. acest lucru este foarte ușor și cel mai bun mod pentru începători. Începătorul poate începe să învețe despre ESP8266 NodMCU prin acest tutorial
Începerea programării cu o diagramă de flux: 7 pași
Începerea programării cu o diagramă de flux: începeți să utilizați microcontrolerele PIC pentru proiectele dvs.? sunt foarte utile, dar foarte frustrante atunci când programul dvs. nu funcționează. Aceasta este o modalitate de a-ți rezolva ideile prin desenarea unei diagrame. Acesta este modul în care programatorii profesioniști adesea