Съдържание:
- Стъпка 1: Необходими материали
- Стъпка 2: Чувства, Atuadores E Conexões
- Стъпка 3: Aplicativo Para Controle Remoto
- Стъпка 4: Criando Uma „coisa“на AWS IoT
- Стъпка 5: Програма Em Python
- Стъпка 6: Финализация
Видео: Стартиране на интелигентен дом - Projeto Финал: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
Проектът е представен като част от окончателното изпълнение на IoT приложение за интелигентен дом
O projeto mostrado a seguir é parte do projekto final a ser apresentado no curso de IoT aplicada a Smart Home, que consiste de sensores e atuadores conectados на DrangonBoard + Linker Mezzanine, um aplicativo desenvolvido com o ionic (a ser incluido em breve) e as информация/dados das "coisas" serão salvados в облак в AWS. Para umaira Prime 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 температура на температурата преди -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: Необходими материали
- Поставете DragonBoard.
- 96Boards Linker Мецанин
- Сензор за луминозидада (LDR), който включва и мецанин на Linker.
- Сензорът за температура включва и мецанин на Linker.
- Botão touch que acompanha a Linker Mezzanine.
- Препоръчайте мезонин на Linker, утвърден за система от климатик.
- LED придружаващ Linker мецанин, който представлява представител и осветител и сервиз.
- Instalação das bibliotecas citadas no passo 5.
Стъпка 2: Чувства, Atuadores E Conexões
1. Линкер мецанин:
Será neophodário conectar a placa Мецанин на dragonboard. За подробности, връзка към консултанта
2. Сензорна луминозидада (LDR)
O сензорът е част от Kit da Linker Mezzanine и е свързан със свързване към entrada ADC1. За подробности в технологиите:
3. Сензор за температура
O сензорът е част от Kit da Linker Mezzanine и е свързан със свързване към entrada ADC2. За подробности в технологиите:
4. Botão Touch
O сензорът е част от Kit da Linker Mezzanine e deverá ser conectado на entrada D1. Este botão irá ligar/desligar o system 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 на entrada D2. Ele será utiizado para ligar/desligar o system de A/C. Para podrobhes técnicos:
6. LED
O LED é част от комплекта за Linker Mezzanine e deverá ser conectado на entrada D4. O LED представител за система за осветяване от uma casa, seja algum cômodo interno da casa ou externo, como a iluminação de um jardim. За да добавите резистор от 10 k ohm em sério com o já existente para diminuir a corrente utilizada pelo system, já que em experiências anteriores verificou-se conflitos com като portas analógicas. За подробности в технологиите:
7. Sensor de contato magnético
Естествен сензор за съвместимост с част от комплекта да Linker Мецанин. Ele será usado em uma janela ou no portão de uma garagem para informar se a janela/garagem está aberta ou fechada. O сензорът е създаден чрез конвенционален формат от 2 пекени (ver foto do Step acima), или сензорът е пропримаментен и е пекно "imã", който се приближава до сензора, който се променя или променя до сензора. O сензорът не е проектиран за N/A (нормално аберто). Quando o imã não está próximo do sensor, o senzor reportará estado aberto. Quando o imã estiver próximo do sensor, o estado reportado será fechado.
Стъпка 3: Aplicativo Para Controle Remoto
O aplicativo foi desenvolvido com o Ionic Framework, https://ionicframework.com/. Será neophodário fazer или изтеглете и инсталирайте до крайната версия.
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 an интенсидада de luz aumentar além do valor definido, както luzes се apagarão.
- O botão A/C acionará o relé, que por sua vez acionará относно системата на A/C da casa. Também é possível definir o valor desejado da temperature. Определете температурата, която ще се покаже досега по -висока от температурата на действие, o A/C серия лигатура и постоянна лигада при температура abaixar em 2 граус да определите температурата. Например, можете да вземете предвид, че температурата е 23 градуса. Внимавайте за температура в интериора на 24 часа, на A/C серия и постоянна лигатура при температура на температура 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 за comunicação com облак AWS и atualização do app.
Стъпка 4: Criando Uma „coisa“на AWS IoT
За да направите настройка на IoT на AWS, можете да настроите пасовете на сървъри:
1) Проектирайте без AWS IoT атракция за връзка:
2) Кликнете „създайте нещо“и въведете „Създайте едно нещо“. Dê o nome do projeto e clique em Next.
3) Na tela seguinte, кликнете върху „Създайте нещо без сертификат“. Nesse tutorial não iremos utilizar os certificados por questões práticas, porém não é recomendado fazer o uso de IoT sem certificados.
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. Нашите опции за настройка на "сянка", която е известна с информацията, която се намира на драконовата дъска, отразена в AWS Cloud.
Стъпка 5: Програма Em Python
Както Seguintes bibliotecas serão needárias para a execução do programa:
внос spidevimport време импортиране регистриране импорт json внос argparse
от libsoc import gpio
от време за импортиране на сън от дата за импортиране datetime, datetime от gpio_96boards импортиране на GPIO от AWSIoTPythonSDK. MQTTLib импортиране на AWSIoTMQTTClient от AWSIoTPythonSDK. MQTTLib
Segue abaixo código completeto do program:
внос spidevimport време импортиране регистриране импорт json внос argparse
от libsoc import gpio
от време за импортиране на сън от дата за импортиране дата -дата, дата -час от 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, 'out'), (BUTTON, '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') температура = "{:.2f} ". Format (adc_temp) payload_temp = '{" състояние ": {" желано ": {" Luminosidade ":' + adcoutldr + '," Температура ":' + температура + '}}}' 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
докато е вярно:
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)
клас shadowCallbackContainer:
def _init _ (self, deviceShadowInstance): self.deviceShadowInstance = deviceShadowInstance
# Персонализирано обратно обаждане на Shadow
def customShadowCallback_Delta (self, payload, responseStatus, token): print ("Получено делта съобщение:") ### скрипт за актуализация на payload payloadDict = json.loads (полезен товар) deltaMessage = json.dumps (payloadDict ["състояние"]) печат "DELTA MESSAGE %s" %deltaMessage ### Искане за актуализиране на отчетеното състояние newPayload = '{"състояние": {"докладвано":' + 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.configureCredentiS (/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) # Източване: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 сек myMQTTClient.configureMQTTOperationTimeout # myQnect coisajsb "," свързан ", 0)
########################
####### Определение на сянка
# Init AWSIoTMQTTShadowClient
myAWSIoTMQTTShadowClient = Няма myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2.amazonaws.com", 8883) myAWSIoTMQTTShadowClient.configureCredentials ("/ Начало / linaro / споделен / AWS / на директорията CA.crt ","/home/linaro/shared/AWS/"SUA CHAVE" -private.pem.key ","/home/linaro/shared/AWS/"SEU CERTIFICADO-certificate.pem.crt")
# AWSIoTMQTTShadowClient конфигуриране myAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10)
# Свържете се с AWS IoT
myAWSIoTMQTTShadowClient.connect ()
# Създайте deviceShadow с постоянен абонамент
deviceShadowHandler = myAWSIoTMQTTShadowClient.createShadowHandlerWithName ("DBpyAWS1116", True) shadowCallbackContainer_Bot = shadowCallbackContainer (deviceShadowHandler)
# Слушайте на делтата
deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)
#########################
myMQTTClient.publish ("$ aws/things/DBpyAWS1116/shadow/update", '{"state": {"желан": {"SystemStatus": 1, "SisIlumi": 0, "AC": 0, "Garagem": "Fechada", "Temperature": 25, "Luminosidade": 123}}} ', 0)
ако _name_ == "_main_":
с GPIO (пинове) като gpio: run (gpio)
Стъпка 6: Финализация
Após ter compleido os passos anteriores, deve-se inicializar o system executando o código fornecido no passo 5 e inicializar o app através do Ionic, usando o comando Ionic serve.
За да отстраните неизправностите, препоръчайте да използвате функционален MQTT клиентски ТЕСТ за AWS, като можете да проверите дали можете да изпращате съобщения, като изпратите драконова дъска, за да изпратите корекция на AWS Cloud:
Препоръчано:
Направете система за управление на интелигентен дом на STONE HMI Disp: 23 стъпки
Направете система за управление на интелигентен дом на STONE HMI Disp: Въведение в проекта Следният урок ви показва как да използвате STONE STVC050WT-01 модула за сензорен дисплей, за да направите проста система за управление на домакински уреди
Система за интелигентен дом Alexa, използваща релейния модул NodeMCU: 10 стъпки
Система за интелигентен дом Alexa, използваща релейния модул NodeMCU: В този проект на IoT направих системата за автоматизация на Alexa Smart Home, използвайки NodeMCU ESP8266 & Релейни модули. Можете лесно да управлявате светлина, вентилатор и други домакински уреди с гласовата команда. За да свържете интелигентния високоговорител Echo Dot с
Отдалечен интелигентен дом: 5 стъпки
Дистанционен интелигентен дом: Материал: dunne gelamineerde hout platen. 1 x основна плоча с диаметър 1 cmkleine nagels 2 x връзки за хляб plakbandveel кабели с диаметър 0,3 cmveel jumper kabels gereedschap: boormachinelijmpistoolsoldeerboutschroevendra
Как да си направим интелигентен дом с помощта на модул за реле за управление Arduino - Идеи за домашна автоматизация: 15 стъпки (със снимки)
Как да си направим интелигентен дом с помощта на модул за реле за управление Arduino | Идеи за домашна автоматизация: В този проект за домашна автоматизация ще проектираме интелигентен домашен релейен модул, който може да управлява 5 домакински уреди. Този релейен модул може да се управлява от мобилен телефон или смартфон, дистанционно IR или дистанционно за телевизор, ръчно превключване. Това интелигентно реле също може да усети
Направи си сам интелигентен дом с Google Assistant и Arduino: 6 стъпки
Направи си сам интелигентен дом с Google Assistant и Arduino: Кой не иска интелигентен дом? Едно от най -хубавите неща, които можете да направите, е да превключите осветлението или други уреди във вашия дом чрез гласово управление. С помощта на приложението Google Home и асистента на Google това наистина е сладко …… Вие не