Taula de continguts:
- Pas 1: Materias Necessários
- Pas 2: Sensors, Atuadores i connexions
- Pas 3: Aplicatiu per al control remot
- Pas 4: Criando Uma "coisa" Na AWS IoT
- Pas 5: Programa Em Python
- Pas 6: Finalització
Vídeo: Començar una casa intel·ligent: Projeto Final: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
El projecte presentat és part del projecte final del curs d’IoT aplicat a Smart Home
O projecto mostrado a seguir é parte del projecto final a ser presentado no curso de IoT aplicada a Smart Home, que consisteix en sensors i atuadors connectats en DrangonBoard + Linker Mezzanine, amb un aplicatiu desenvolupat com o iònic (a ser inclòs en breu) e as informações / dados das "coisas" serão salvados na cloud da AWS. Para uma primera iteração com a DragonBoard e IoT com a tot, decidiu-se fazer um sistema d’acendiment automàtic de llums, com a sensor de lluminositat, uma chave liga / desliga para ativar um aparelho de ar-condicionado de acuerdo com uma temperatura pre -setada e um sensor de proximitat que serà instal·lat no portat de uma garagem, com a intenció d’informar al propietari da casa se o portó encontra-se obert o fechado.
Pas 1: Materias Necessários
- Col·loca DragonBoard.
- 96Boards Linker Mezzanine
- Sensor de luminozidade (LDR) que acompanha a Linker Mezzanine.
- Sensor de temperatura que acompanha a Linker Mezzanine.
- Botão touch que acompanha a Linker Mezzanine.
- Relé acompanyat a Linker Mezzanine, utilitzat per lligar o sistema d'A / C.
- LED acompanha a Linker Mezzanine, que representarà a il·luminació a ser activat.
- Instalação das bibliotecas citadas no passo 5.
Pas 2: Sensors, Atuadores i connexions
1. Enllaç Mezzanine:
Serà necessari connectar a placa Mezzanine na dragonboard. Per obtenir informació, consulteu l’enllaç
2. Sensor de lluminositat (LDR)
O sensor is part do Kit da Linker Mezzanine e deverá ser connectado na entrada ADC1. Per a detalls tècnics:
3. Sensor de Temperatura
O sensor is part do Kit da Linker Mezzanine e deverá ser connectado na entrada ADC2. Per a detalls tècnics:
4. Botão Touch
O sensor is part do Kit da Linker Mezzanine e deverá ser connectado na entrada D1. Este botão irá ligar / desligar o sistema com a tot. O acesso a este botão és somente local. Per a detalls tècnics: https://linksprite.com/wiki/index.php5? Title = Touch_ …
5. Relé
O relé é parte do Kit da Linker Mezzanine e deverá ser connectado na entrada D2. Serà usat per lligar / desligar o sistema d'A / C. Para detalls tècnics:
6. LED
O LED is part do kit da Linker Mezzanine e deverá ser connectado na entrada D4. O LED representará o sistema de iluminação de uma casa, seja algum cômodo interno da casa o externo, com a il·luminació de jardí. Foi adicionado um resistor de 10k ohm em sério com o já existent per disminuir a corrent utilitzat pelo sistema, ja que em experimenten anteriors verificats-se conflits com as portas analógicas. Per a detalls tècnics:
7. Sensor de contingut magnètic
Aquest sensor ha estat comprès a part i no fa part del Kit da Linker Mezzanine. Se usarà em uma janela ou no portão de uma garagem para informar se a janela / garagem está aberta o fechada. O sensor és un conjunt format per 2 petites peces (ver foto do Step acima), o sensor proprimitament dit i um petit "imà", que fins a aproximar-se a sensor irà alterar o estat do sensor. O sensor utilitzat en aquest projecte va ser um / N (normalment obert). Quan o ima no està proper al sensor, o el sensor reportarà l'estat obert. Quan o estic proper al sensor, o estat informat serà actualitzat.
Pas 3: Aplicatiu per al control remot
O aplicatiu es va desenvolupar amb Ionic Framework, https://ionicframework.com/. Será necessário fazer o download and a installationção da ultima versão.
O aplicativo irá comunicar (ler e atualizar os dados) com a cloud da AWS (AWS IoT- https://aws.amazon.com/iot/), que posteriorment serà accedit a la placa de la placa de drac per a l’actualització dels dos dos sensors i els atuadors.
- Sistema de Iluminação mostra o estat do sitesma de iluminação, ligado o desligado. Quan o nível de luminosidade baixar do valor configurado, as luzes se acenderão automaticamente. Quan la intensitat de la llum augmenta al valor definit, ja que les llums s’apagaran.
- O botão A / C acionará o relé, que por su vez vez acionará o sistema de A / C da casa. Também és possible definir o valor desejado da temperatura. Assim que a temperatura da casa estiver maior do que a temperatura de accionamento, o A / C será ligado e permanecerá ligado até a temperatura abaixar em 2 graus da tempreatura definida. Per exemple, considerem que la temperatura és de 23 graus. Quan una temperatura interior arribi a 24 graus, o A / C serà lligat i permanentment lligat a una temperatura arribar a 20 graus, desligant então. Depois o ciclo se repetirá.
- Garagem informarà a atual posição da garagem, se aberta o fechada.
- Temperatura és apenas informativa e mostra a temperatura do interior da casa.
- Luminosidade é apesas informativa e mostra o valor da luminosidade atual.
Seguiu-ne l'annex com a arxius home.html i home.ts que conté els codis per a la comunicació amb cloud AWS i actualització de l'aplicació.
Pas 4: Criando Uma "coisa" Na AWS IoT
Per fer la configuració de l'IoT a AWS, els següents passos de seguiment seran seguits:
1) Criar um projecteto no AWS IoT atravé do link:
2) Feu clic a "create a thing" i então, "Create a single thing". Dê o nome do projecto e clique em Next.
3) Na tela següent, feu clic a "Crea una cosa sense certificat". Nesse tutorial no usem certificats per qüestions pràctiques, no és recomanable fer un ús de certificats IoT.
4) Nesse moment, sua "coisa" já estará criada. Clique no botão da "coisa" que foi criado per obrir una tela com opcions. Nessa tela podem ver os tópicosMQTT que podem ser usats per fer a atualitzar dos dies a serem enviats per a Could, assim com és uma òptima ferramenta per a la resolució de problemes. No hi ha cap codi en Python que serà presentat en breu, foram utilitzat alguns d'aquests tòpics. Les opcions també podem veure a "shadow", que res més que la informació que hi ha a la dragonboard refletida a AWS Cloud.
Pas 5: Programa Em Python
Les següents biblioteques seran necessàries per a l'execució del programa:
import spidevimport temps importació registre importació importació json importació argparse
des de la importació de libsoc gpio
a partir de l'hora d'importació en suspensió des de la data d'importació de la data i hora, de la data de gpio_96boards importa GPIO de AWSIoTPythonSDK. MQTTLib importació de AWSIoTMQTTClient d'AWSIoTPythonSDK. MQTTLib
Seguiu el codi complet del programa:
import spidevimport temps importació registre importació importació json importació argparse
des de libsoc import gpio
des de la hora d’importació en suspensió des de la data d’importació de la data i hora, des de la data d’importació de gpio_96boards GPIO des d’AWSIoTPythonSDK. MQTTLib importació AWSIoTMQTTClient d’AWSIoTPythonSDK. MQTTLib importació AWSIoTMQTTShadowClient
GPIO_CS = GPIO.gpio_id ('GPIO_CS') # Port analògic
BUTTON = GPIO.gpio_id ('GPIO_A') RELE = GPIO.gpio_id ('GPIO_C') LED = GPIO.gpio_id ('GPIO_G')
pins = ((GPIO_CS, 'out'), (BUTTON, 'in'), (RELE, 'out'), (LED, 'out'),)
def setdevices (deltaMessagePython):
System_Status = deltaMessagePython ['SystemStatus'] Rele_Status = deltaMessagePython ['AC'] Led_Status = deltaMessagePython ['SisIlumi']
##### AC
si Rele_Status == 1: gpio.digital_write (RELE, GPIO. HIGH)
si Rele_Status == 0:
gpio.digital_write (RELE, GPIO. LOW)
##### Sistema de Iluminacao
si Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) si 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] i 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 - Lluminositat 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 ": {" desitjat ": {" Lluminosidade ":' + 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)
execució def (gpio):
sistema_estat = 1
mentre que és cert:
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)
classe shadowCallbackContainer:
def _init _ (self, deviceShadowInstance): self.deviceShadowInstance = deviceShadowInstance
# Devolució de trucada Shadow personalitzada
def customShadowCallback_Delta (self, loadload, responseStatus, token): print ("Rebut un missatge delta:") ### payload update script payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["state"]) print "DELTA MESSAGE% s"% deltaMessage ### Sol·licitud per actualitzar l'estat reportat 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
####### Definició de la cosa
Connexió basada en el certificat IoS # AWS
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 queueing myMQTTClient.configureDrainingFrequency (2) # Drenatge: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 seg myMQTTClient.configureMQTTOperationTimeout (5) # 5 sec #connect (publicar myMQTTClient). coisajsb "," connectat ", 0)
########################
####### Definició d'ombra
# Init AWSIoTMQTTShadowClient
myAWSIoTMQTTShadowClient = Cap myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2.amazonaws.com" / 88Cl) 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 seg myAWSIoTMQTTShadowClient.configureMQ
# Connecteu-vos a AWS IoT
myAWSIoTMQTTShadowClient.connect ()
# Creeu un deviceShadow amb subscripció persistent
deviceShadowHandler = myAWSIoTMQTTShadowClient.createShadowHandlerWithName ("DBpyAWS1116", True) shadowCallbackContainer_Bot = shadowCallbackContainer (deviceShadowHandler)
# Escolta als deltes
deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)
#########################
myMQTTClient.publish ("$ aws / things / DBpyAWS1116 / shadow / update", '{"state": {"desitjat": {"SystemStatus": 1, "SisIlumi": 0, "AC": 0, "Garagem": "Fechada", "Temperatura": 25, "Luminosidade": 123}}} ', 0)
si _name_ == "_principal_":
amb GPIO (pins) com a gpio: run (gpio)
Pas 6: Finalització
Após ter concluido os passos anteriors, s'ha de inicialitzar o executar el sistema o codi fornit no pas 5 i inicialitzar l'aplicació através do Ionic, utilitzant o comandant Ionic serve.
Per a la possibilitat de resoldre problemes, es recomana utilitzar una funció MQTT Client TEST de AWS, on es pot verificar i verificar-se com a enviaments mensuals de la pantalla de dragonboard..amazon.com / iotv2 / hom …
Recomanat:
Llum LED d'escriptori intel·ligent - Il·luminació intel·ligent amb Arduino - Espai de treball Neopixels: 10 passos (amb imatges)
Llum LED d'escriptori intel·ligent | Il·luminació intel·ligent amb Arduino | Espai de treball de Neopixels: ara passem molt de temps a casa estudiant i treballant virtualment, per què no fer que el nostre espai de treball sigui més gran amb un sistema d’il·luminació personalitzat i intel·ligent basat en els LEDs Arduino i Ws2812b. Aquí us mostro com construir el vostre Smart Llum LED d'escriptori que
Converteix un telèfon intel·ligent no utilitzat en una pantalla intel·ligent: 6 passos (amb imatges)
Converteix un telèfon intel·ligent no utilitzat en una pantalla intel·ligent: el tutorial de Deze es troba a Engels, per a la versió del clàssic espanyol. Teniu un telèfon intel·ligent (antic) sense utilitzar? Convertiu-lo en una pantalla intel·ligent amb Fulls de càlcul de Google i paper i llapis seguint aquest senzill tutorial pas a pas. Quan hagis acabat
Làmpada LED intel·ligent controlada per telèfon intel·ligent Bluetooth: 7 passos
Làmpada LED intel·ligent controlada per telèfon intel·ligent Bluetooth: sempre somio amb controlar els meus aparells d’il·luminació. Aleshores algú va fabricar una increïble llum LED de colors. Fa poc em vaig trobar amb una làmpada LED de Joseph Casha a Youtube. Inspirant-me en ell, vaig decidir afegir diverses funcions mantenint la comoditat
Rellotge despertador intel·ligent: un despertador intel·ligent fabricat amb Raspberry Pi: 10 passos (amb imatges)
Rellotge despertador intel·ligent: un rellotge despertador intel·ligent fet amb Raspberry Pi: Heu volgut mai un rellotge intel·ligent? Si és així, aquesta és la solució per a vosaltres. He creat Smart Alarm Clock (Rellotge despertador intel·ligent), aquest és un rellotge que permet canviar l’hora de l’alarma segons el lloc web. Quan l’alarma s’activi, hi haurà un so (brunzidor) i 2 llums
Jardineria intel·ligent i agricultura intel·ligent basades en IoT mitjançant ESP32: 7 passos
Jardineria intel·ligent i agricultura intel·ligent basades en l’IoT que utilitzen ESP32: el món canvia a mesura que l’agricultura passa. Avui en dia, la gent integra electrònica en tots els camps i l’agricultura no n’és una excepció. Aquesta fusió d'electrònica a l'agricultura està ajudant els agricultors i les persones que gestionen els jardins