Mục lục:
- Bước 1: Materias N Needários
- Bước 2: Cảm biến, Atuadores E Conexões
- Bước 3: Aplicativo Para Control Remoto
- Bước 4: Criando Uma "coisa" Na AWS IoT
- Bước 5: Lập trình Em Python
- Bước 6: Finalização
Video: Bắt đầu một ngôi nhà thông minh - Projeto Final: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:34
Projeto apresentado é parte do projeto cuối cùng do curso de IoT aplicado một Ngôi nhà thông minh
O projeto mostrado a seguir é parte do projeto end a ser apresentado no curso de IoT aplicada a Smart Home, quecompe de sensores e atuadores conectados na DrangonBoard + Linker Mezzanine, um aplicativo desenvolvido com o ionic (a ser incluido em breve) e as Informações / dados das "coisas" serão salvados na cloud da AWS. Para uma primeira iteração com a DragonBoard e IoT como um 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 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.
Bước 1: Materias N Needários
- Đặt 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é acompanha a Linker Mezzanine, utlizado para ligar o systema de A / C.
- LED acompanha a Linker Mezzanine, que agentará a iluminação a ser ativada.
- Instalação das bibliotecas citadas no passo 5.
Bước 2: Cảm biến, Atuadores E Conexões
1. Tầng lửng liên kết:
Será needário conectar a sa khoáng Mezzanine na dragonboard. Para detalhes, liên kết tham khảo
2. Độ sáng của cảm biến (LDR)
O sensor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC1. Para detalhes técnicos:
3. Cảm biến de Temperatura
O sensor é parte do Kit da Linker Mezzanine e deverá ser conectado na entrada ADC2. Para detalhes técnicos:
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 o sistema como um todo. O acesso a este botão é somente địa phương. Para detalhes técnicos: 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. Ele será utiizado para ligar / desligar o Sistema de 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 đại diện cho điện thoại di động, đại diện cho đèn LED, cômodo interno da casa ou externo, como a iluminação de um jardim. Foi adicionado um điện trở de 10k ohm em sério com o já beingente para diminuir a Corrente effizada pelo sistema, já que em Experiências anteriores verifyficou-se conflitos com as portas analógicas. Para detalhes técnicos:
7. Cảm biến 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 liên hợp formado por 2 pequenas peças (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 cảm biến 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, o estado reportado será fechado.
Bước 3: Aplicativo Para Control Remoto
O aplicativo foi desenvolvido com o Ionic Framework, https://ionicframework.com/. Será needário fazer o download e a instalação da ultima versão.
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 board dragonboard para atualização dos trạng thái 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 Defdo, as ruzes 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 Defr 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 Defda. Por exelo, iremos coirar que a temperatura é de 23 graus. Quando a temperatura nội thất chegar a 24 graus, o A / C será ligado e permanecerá ligado até a temperatura chegar a 20 graus, desligando então. Depois o ciclo se repeattirá.
- Garagem Informará a atual posição da garam, se aberta ou fechada.
- Temperatura é apenas Informativa e mostra a temperatura do nội thất da casa.
- Luminosidade é apesas Informativa e mostra o valor da luminosidade atual.
Segue em anexo os arquivos home.html e home.ts context códigos para comunicação com một đám mây AWS e atualização làm ứng dụng.
Bước 4: Criando Uma "coisa" Na AWS IoT
Para fazer o setup do IoT na AWS, os seguintes passos deverão ser seguidos:
1) Criar um projeto no AWS IoT atravé do link:
2) Clique "tạo ra một thứ" e então, "Tạo một thứ duy nhất". Dê o nome do projeto e clique em Next.
3) Na tela seguinte, clique em "Tạo một thứ mà không cần chứng chỉ". Nesse hướng dẫn não iremos useizar os Certificados por questões práticas, porém não é recomendado fazer o uso de IoT sem chứng chỉ.
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 Có thể, assim como é uma ótima ferramenta para xử lý sự cố. Không código em Python que será apresentado em breve, foram utlizados alguns destes tópicos. Nas opções também podemos ver a "shadow", que nada mais é que a Informação que está na dragonboard feedbacktida na AWS Cloud.
Bước 5: Lập trình Em Python
Như seguintes bibliotecas serão needárias para a executive do programma:
import spidevimport time import log log import json import argparse
từ libsoc nhập gpio
từ thời gian nhập ngủ từ ngày nhập datetime, datetime từ gpio_96boards nhập GPIO từ AWSIoTPythonSDK. MQTTLib nhập AWSIoTMQTTClient từ AWSIoTPythonSDK. MQTTLib
Segue abaixo código hoàn thành chương trình:
import spidevimport time import log log import json import argparse
từ libsoc nhập gpio
từ thời gian nhập chế độ ngủ từ ngày nhập datetime, datetime từ gpio_96boards nhập GPIO từ AWSIoTPythonSDK. MQTTLib nhập AWSIoTMQTTClient từ AWSIoTPythonSDK. MQTTLib nhập AWSIoTMQTTShadowClient
GPIO_CS = GPIO.gpio_id ('GPIO_CS') #Analog Cổng
BUTTON = GPIO.gpio_id ('GPIO_A') RELE = GPIO.gpio_id ('GPIO_C') LED = GPIO.gpio_id ('GPIO_G')
ghim = ((GPIO_CS, 'out'), (NÚT, 'in'), (RELE, 'out'), (LED, 'out'),)
def setdevices (deltaMessagePython):
System_Status = deltaMessagePython ['SystemStatus'] Rele_Status = deltaMessagePython ['AC'] Led_Status = deltaMessagePython ['SisIlumi']
##### AC
if Rele_Status == 1: gpio.digital_write (RELE, GPIO. HIGH)
nếu Rele_Status == 0:
gpio.digital_write (RELE, GPIO. LOW)
##### Sistema de Iluminacao
if Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) if 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 - Nhiệt độ 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 - Độ sáng gpio.digital_write (GPIO_CS, GPIO. HIGH) adcoutldr = (r [1] << 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 ": {" mong muốn ": {" Luminosidade ":' + adcoutldr + '," Temperatura ":' + temperatura + '}}}' myMQTTClient.publish ("$ aws / things / DBpyAWS1116 / shadow / update", payload_temp, 0) trả về r
def desliga ():
gpio.digital_write (RELE, GPIO. LOW) gpio.digital_write (LED, GPIO. LOW)
def run (gpio):
system_status = 1
trong khi Đúng:
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)
class shadowCallbackContainer:
def _init _ (self, deviceShadowInstance): self.deviceShadowInstance = deviceShadowInstance
# Gọi lại Custom Shadow
def customShadowCallback_Delta (self, payload, responseStatus, token): print ("Đã nhận được thông báo delta:") ### payload update script payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["state"]) print "DELTA MESSAGE% s"% deltaMessage ### Yêu cầu cập nhật trạng thái được báo cáo 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
####### Định nghĩa điều
# Kết nối dựa trên chứng chỉ AWS IoT
myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / linartro / shared, "/ home / linaro / shared / AWS /" SUA CHAVE "-private.pem.key", "/ home / linaro / shared / AWS /" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Infinite offline Xuất bản xếp hàng myMQTTClient.configureDrainingFrequency (2) # Draining: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 giây myMQTTClient.configureMQTTOperationTubimectlientlient. 5 coisajsb "," đã kết nối ", 0)
########################
####### Định nghĩa bóng
# Init AWSIoTMQTTShadowClient
myAWSIoTMQTTShadowClient = Không có myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2.amazonaws.com", 8883) myAWSIo / shared home ' CA.crt "," / home / linaro / shared / AWS / "SUA CHAVE" -private.pem.key "," / home / linaro / shared / AWS / "SEU CERTIFICADO-certificate.pem.crt")
# AWSIoTMQTTShadowClient cấu hìnhmyAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10) # 10 giây myAWSIoTMQTTShadowClient.configure 5 giâyQTTOperation
# Kết nối với AWS IoT
myAWSIoTMQTTShadowClient.connect ()
# Tạo một thiết bịShadow với đăng ký liên tục
deviceShadowHandler = myAWSIoTMQTTShadowClient.createShadowHandlerWithName ("DBpyAWS1116", True) shadowCallbackContainer_Bot = shadowCallbackContainer (deviceShadowHandler)
# Nghe trên delta
deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)
#########################
myMQTTClient.publish ("$ aws / things / DBpyAWS1116 / shadow / update", '{"state": {"mong muốn": {"SystemStatus": 1, "SisIlumi": 0, "AC": 0, "Garagem": "Fechada", "Temperatura": 25, "Luminosidade": 123}}} ', 0)
nếu _name_ == "_main_":
với GPIO (chân) là gpio: run (gpio)
Bước 6: Finalização
Após ter concluido os passos anteriores, deve-se inicializar o sistema Operatingutando o código fornecido no passo 5 e inicializar o app através do Ionic, usando o comando Ionic serve.
Khắc phục sự cố para um Possível, recomenda-se usar a função MQTT Client TEST do AWS, onde é possível verifyficar e as mensagens enviadas pela dragonboard está sendo atualizada de forma correta na AWS Cloud: https://us-west-2.console.aws.amazon.com / iotv2 / hom…
Đề xuất:
Chế tạo một robot đơn giản từ những thứ bạn có thể tìm thấy trong ngôi nhà của mình (phiên bản hotwheel): 5 bước
Chế tạo một robot đơn giản từ những thứ bạn có thể tìm thấy trong nhà của mình (phiên bản hotwheel): Tài liệu hướng dẫn này sẽ hướng dẫn bạn cách tạo một chiếc bánh xe nóng chạy bằng pin đôi A. Bạn sẽ chỉ cần sử dụng những thứ mà bạn có thể tìm thấy trong nhà của mình. Xin lưu ý rằng robot này có thể sẽ không đi thẳng chính xác, một
Máy pha cà phê thông minh - Một phần của Hệ sinh thái Nhà thông minh: 4 bước
Máy pha cà phê thông minh - Một phần của Hệ sinh thái SmartHome: Máy pha cà phê bị tấn công, biến nó thành một phần của Hệ sinh thái nhà thông minh Tôi sở hữu một Máy pha cà phê Delonghi cũ tốt (DCM) (không phải là một chương trình khuyến mãi và muốn nó “thông minh”. Vì vậy, tôi đã hack nó bằng cách cài đặt ESP8266) mô-đun có giao diện với bộ não / bộ vi điều khiển của nó sử dụng
Ngôi nhà thông minh hoàn chỉnh: 9 bước
Ngôi nhà thông minh hoàn chỉnh: Dự án này có thể bật và tắt các tải 6A đơn giản như quạt trần và đèn tùy thuộc vào xếp hạng rơ le. Có thể bật và tắt lên đến 16 tải từ bất kỳ điện thoại nào chạy Android, iOS, Java, Windows hoặc bất kỳ thứ gì dựa trên web. Android có ứng dụng cho
[HASS.IO] Bắt đầu xây dựng ngôi nhà thông minh của bạn mà không cần mã hóa, với giá dưới 100 đô la: 6 bước
[HASS.IO] Bắt đầu xây dựng ngôi nhà thông minh của bạn mà không cần mã hóa, với giá dưới 100 đô la: Gần đây, tôi đã làm rất nhiều thứ và thành công trong việc làm cho ngôi nhà của mình bớt " ngớ ngẩn ". Vì vậy, tôi sẽ chia sẻ cách tạo một hệ thống nhà thông minh với mức giá thấp, khả năng tương thích cao sẽ chạy liên tục và ổn định
Bảo mật thông minh cho ngôi nhà thông minh của bạn: 14 bước
Bảo mật thông minh Ngôi nhà thông minh của bạn: Tôi đang tham gia cuộc thi an toàn và bảo mật. Nếu bạn thích tài liệu hướng dẫn của tôi, vui lòng bỏ phiếu cho nó! Tôi sẽ chỉ cho bạn cách dễ dàng và rẻ tiền để bảo vệ hoàn toàn ngôi nhà của bạn và môi trường của nó. Định cấu hình y