Daftar Isi:
- Langkah 1: Materi yang Diperlukan
- Langkah 2: Sensor, Atuadores E Conexões
- Langkah 3: Aplikasi Para Controle Remoto
- Langkah 4: Criando Uma "coisa" Na AWS IoT
- Langkah 5: Programa Em Python
- Langkah 6: Finalisasi
Video: Memulai Rumah Pintar - Final Projeto: 6 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
Projeto apresentado é parte do projeto final do curso de IoT menerapkan Smart Home
O projeto mostrado a seguir é parte do projeto final a ser apresentado no curso de IoT penerapan Smart Home, que terdiri dari sensor dan atuadores conectados dengan DrangonBoard + Linker Mezzanine, um aplikasi desenvolvido com o ionic (ser termasuk) e sebagai em bre informações/dados das "coisas" serão salvados na cloud da AWS. Para uma primeira iteração com a DragonBoard dan IoT como um todo, memutuskan fazer um sistem de acendimento automático de luzes, com um sensor de luminosidade, uma chave liga/desliga para ativar um aparelho de ar-condicionado de acordo sebelum -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.
Langkah 1: Materi yang Diperlukan
- Tempatkan Papan Naga.
- 96Boards Linker Mezzanine
- Sensor de luminozidade (LDR) yang menyertai Linker Mezzanine.
- Sensor de temperaturea 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 melengkapi Linker Mezzanine, dengan perwakilan yang iluminação dan ser ativada.
- Instalação das bibliotecas citadas no passo 5.
Langkah 2: Sensor, Atuadores E Conexões
1. Linker Mezzanine:
Será necessário conectar a placa Mezzanine na dragonboard. Untuk lebih jelasnya, link konsultan
2. Sensor luminosidade (LDR)
O sensor dan bagian dari Kit da Linker Mezzanine dan deverá ser conectado dan entrada ADC1. Para detalhes técnicos:
3. Sensor Suhu
O sensor dan bagian dari Kit da Linker Mezzanine dan deverá ser conectado dan entrada ADC2. Para detalhes técnicos:
4. Botão Touch
O sensor dan bagian dari Kit da Linker Mezzanine dan deverá ser conectado dan entrada D1. Este botão irá ligar/desligar o sistema como um todo. O acesso a este botão é somente lokal. Para detalhes técnicos:https://linksprite.com/wiki/index.php5?title=Touch_…
5. Rele
O relé é parte do Kit da Linker Mezzanine dan deverá ser conectado na entrada D2. Pilihan untuk ligar/desligar atau sistem A/C. Para detalhes técnicos:
6. LED
O LED dan perlengkapannya untuk Linker Mezzanine dan perangkat yang terhubung dengan entrada D4. O LED representará o sistem iluminação de uma casa, seja algum cômodo interno da casa ou externo, como a iluminação de um jardim. Anda dapat menambahkan resistor 10k ohm ke dalam rangkaian untuk memastikan keberadaan untuk meminimalkan penggunaan yang tepat untuk sistem, dan pengalaman yang sudah terbukti sebelumnya. Para detalhes técnicos:
7. Sensor 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 conjunto 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 sensor 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 lakukan sensor, o estado reportado será fechado.
Langkah 3: Aplikasi Para Controle Remoto
Aplikasi untuk desenvolvido com o Ionic Framework, https://ionicframework.com/. Será perlu fazer atau unduh dan 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 placa dragonboard para atualização dos status dos sensores dan tuaadores.
- 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 suhu. Asim que a suhu da casa estiver utama lakukan que a suhu de acionamento, o A/C será ligado dan permanecerá ligado até a suhu abaixar em 2 graus da tempreatura definida. Sebagai contoh, iremos mempertimbangkan que a temperaturea é de 23 graus. Quando a temperaturea interior chegar a 24 graus, o A/C será ligado dan permanecerá ligado até a temperature chegar a 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 dan mostra a temperature do interior da casa.
- Luminosidade é apesas informativa dan mostra o valor da luminosidade atual.
Segue em anxo os arquivos home.html dan home.ts bersaing os códigos para comunicação com a cloud AWS dan atualização melakukan aplikasi.
Langkah 4: Criando Uma "coisa" Na AWS IoT
Para fazer o setup melakukan IoT dan AWS, os seguintes passos deverão ser seguidos:
1) Criar um projeto no AWS IoT atravé do link:
2) Klik "buat sesuatu" e então, "Buat satu hal". D o nome do projeto e clique em Next.
3) Na tela seguinte, klik em "Buat sesuatu tanpa sertifikat". 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 sebagai pilihan. Informasi lebih lanjut tentang topik tertentuMQTT pertanyaan yang akan digunakan untuk mengetahui lebih lanjut dan lebih lengkap untuk dapat menyelesaikan masalah. Tidak ada kode 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 refletida na AWS Cloud.
Langkah 5: Programa Em Python
Sebagai seguintes bibliotecas serão necessárias para a execução do programa:
impor spidevimport waktu impor logging impor json import argparse
dari libsoc impor gpio
dari waktu impor tidur dari tanggal impor datetime, datetime dari gpio_96boards impor GPIO dari AWSIoTPythonSDK. MQTTLib impor AWSIoTMQTTClient dari AWSIoTPythonSDK. MQTTLib
Segue abaixo código selesai untuk melakukan programa:
impor spidevimport waktu impor logging impor json import argparse
dari libsoc impor gpio
dari waktu impor tidur dari tanggal impor datetime, datetime dari gpio_96boards impor GPIO dari AWSIoTPythonSDK. MQTTLib impor AWSIoTMQTTClient dari AWSIoTPythonSDK. MQTTLib impor AWSIoTMQTTShadowClient
GPIO_CS = GPIO.gpio_id('GPIO_CS') #Port Analog
TOMBOL = GPIO.gpio_id('GPIO_A') RELE = GPIO.gpio_id('GPIO_C') LED = GPIO.gpio_id('GPIO_G')
pin = ((GPIO_CS, 'keluar'), (TOMBOL, 'masuk'), (RELE, 'keluar'), (LED, 'keluar'),)
def setdevices(deltaMessagePython):
System_Status = deltaMessagePython['SystemStatus'] Rele_Status = deltaMessagePython['AC'] Led_Status = deltaMessagePython['SisIlumi']
##### AC
jika Rele_Status == 1: gpio.digital_write(RELE, GPIO. HIGH)
jika Rele_Status == 0:
gpio.digital_write(RELE, GPIO. LOW)
##### Sistema de Iluminacao
jika Led_Status == 1: gpio.digital_write(LED, GPIO. HIGH) jika Led_Status == 0: gpio.digital_write(LED, GPIO. LOW)
def readadc(gpio):
gpio.digital_write(GPIO_CS, GPIO. HIGH)
waktu.tidur(0.0002) gpio.digital_write(GPIO_CS, GPIO. LOW) r = spi.xfer2([0x01, 0xA0, 0x00])#ADC2 - Suhu 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) now = datetime.utcnow() now_str = now.strftime('%Y-%m-%dT%H:%M:%SZ') temperaturea = "{:.2f}".format(adc_temp) payload_temp = '{"state":{"desired": {"Luminosidade": ' + adcoutldr + ', "Temperatura": ' + temperaturea + '}}}' myMQTTClient.publish ("$aws/things/DBpyAWS1116/shadow/update", payload_temp, 0) mengembalikan r
def desliga():
gpio.digital_write(RELE, GPIO. LOW) gpio.digital_write(LED, GPIO. LOW)
def run (gpio):
sistem_status = 1
sementara Benar:
time.sleep(2) button_value = gpio.digital_read(BUTTON) print ("----") time.sleep(0.25) jika button_value == 1: jika system_status == 0: system_status = 1 else: system_status = 0 desliga () jika system_status == 1: nilai = readadc(gpio) print "SYSTEM_STATUS %d" %system_status time.sleep(3)
kelas shadowCallbackContainer:
def _init_(self, deviceShadowInstance): self.deviceShadowInstance = deviceShadowInstance
# Panggilan balik Bayangan Khusus
def customShadowCallback_Delta(self, payload, responseStatus, token): print("Menerima pesan delta:") ### skrip pembaruan payload payloadDict = json.loads(payload) deltaMessage = json.dumps(payloadDict["state"]) print "DELTA MESSAGE %s" %deltaMessage ### Permintaan untuk memperbarui status yang dilaporkan newPayload = '{"state":{"reported":' + deltaMessage + '}}' deltaMessagePython = json.loads(deltaMessage) setdevices(deltaMessagePython)
spi = spidev. SpiDev()
spi.open(0, 0) spi.max_speed_hz = 10.000 spi.mode = 0b00 spi.bits_per_word = 8
####### Definisi hal
# Koneksi berbasis sertifikat AWS IoT
myMQTTClient = AWSIoTMQTTClient("DBpyAWS1116") myMQTTClient.configureEndpoint("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials("/home/linaro/shared/AWS/root-CA.crt"root-CA.crt", "/home/linaro/shared/AWS/"SUA CHAVE"-private.pem.key", "/home/linaro/shared/AWS/"SEU CERTIFICADO"-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing(- 1) # Infinite offline Publikasikan antrian myMQTTClient.configureDrainingFrequency(2) # Pengeringan: 2 Hz myMQTTClient.configureConnectDisconnectTimeout(10) # 10 detik myMQTTClient.configureMQTTOperationTimeout(5) # 5 detik #sambungkan dan publikasikan myMQTTClient.connect() myMQTTClient(). coisajsb", "terhubung", 0)
########################
####### Definisi bayangan
# Init AWSIoTMQTTShadowClient
myAWSIoTMQTTShadowClient = Tidak ada myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint("SEU END-POINT.us-west-2.amazonaws.com", 8883) myAWSIoTMQTTShadowClient/"/home/SOS/configureShadowClient. 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 detik myAWSIoTMQTTShadowClient.configureMQTTOperationTimeout(5) # 5 detik
# Hubungkan ke AWS IoT
myAWSIoTMQTTShadowClient.connect()
# Buat bayangan perangkat dengan langganan terus-menerus
deviceShadowHandler = myAWSIoTMQTTShadowClient.createShadowHandlerWithName("DBpyAWS1116", True) shadowCallbackContainer_Bot = shadowCallbackContainer(deviceShadowHandler)
# Dengarkan di delta
deviceShadowHandler.shadowRegisterDeltaCallback(shadowCallbackContainer_Bot.customShadowCallback_Delta)
#########################
myMQTTClient.publish("$aws/things/DBpyAWS1116/shadow/update", '{"state":{"diinginkan": {"SystemStatus":1, "SisIlumi":0, "AC":0, "Garagem": "Fechada", "Temperatura": 25, "Luminosidade": 123}}}', 0)
jika _name_ == "_main_":
dengan GPIO(pin) sebagai gpio: run(gpio)
Langkah 6: Finalisasi
Apa yang harus dilakukan untuk menyelesaikan masalah anteriores, pengembangan inisializar atau sistem eksekusi dan eksekusi tanpa sandi 5 dan inisializar aplikasi melakukan Ionic, usando atau komando Servis ionik.
Pemecahan masalah yang mungkin, rekomendasikan untuk bersenang-senang, UJI Klien MQTT lakukan AWS, lakukan verifikasi yang mungkin dilakukan saat mensagens enviadas pela dragonboard está sendo atualizada de forma correta na AWS Cloud:
Direkomendasikan:
Rumah Pintar oleh Raspberry Pi: 5 Langkah (dengan Gambar)
Smart Home oleh Raspberry Pi: Sudah ada beberapa produk di luar sana yang membuat flat Anda lebih pintar, tetapi kebanyakan dari mereka adalah solusi eksklusif. Tapi mengapa Anda membutuhkan koneksi internet untuk menyalakan lampu dengan smartphone Anda? Itulah salah satu alasan bagi saya untuk membangun Smar saya sendiri
Cara Membuat Rumah Pintar Menggunakan Modul Relai Kontrol Arduino - Ide Otomasi Rumah: 15 Langkah (dengan Gambar)
Cara Membuat Rumah Pintar Menggunakan Modul Relay Kontrol Arduino | Ide Otomasi Rumah: Dalam proyek otomatisasi rumah ini, kami akan merancang modul relai rumah pintar yang dapat mengontrol 5 peralatan rumah tangga. Modul relai ini dapat dikontrol dari Ponsel atau smartphone, remote IR atau remote TV, sakelar Manual. Relai pintar ini juga dapat merasakan
Memulai Otomatisasi Rumah: Memasang Asisten Rumah: 3 Langkah
Memulai Dengan Otomatisasi Rumah: Memasang Asisten Rumah: Kami sekarang akan memulai seri otomatisasi rumah, di mana kami membuat rumah pintar yang memungkinkan kami mengontrol hal-hal seperti lampu, speaker, sensor, dan sebagainya menggunakan hub pusat bersama dengan asisten suara. Pada postingan kali ini, kita akan belajar bagaimana cara memasukkan
Cara yang Sangat Sederhana untuk Memulai Otomasi Rumah Menggunakan Modul DIY: 6 Langkah
Cara yang Sangat Sederhana untuk Memulai Otomasi Rumah Menggunakan Modul DIY: Saya sangat terkejut ketika saya memutuskan untuk mencoba menambahkan beberapa sensor DIY ke asisten rumah. Menggunakan ESPHome sangat sederhana dan dalam posting ini, kita akan belajar cara mengontrol pin GPIO dan juga mendapatkan suhu & data kelembaban dari jaringan nirkabel
Cara Memulai Situs Web/Server Rumah: 5 Langkah
Cara Memulai Situs Web/Server Rumah: Saya melakukan ini selama akhir pekan karena saya bosan, jadi nikmatilah