Мазмуну:

Акылдуу үйдү баштоо - Projeto Final: 6 кадам
Акылдуу үйдү баштоо - Projeto Final: 6 кадам

Video: Акылдуу үйдү баштоо - Projeto Final: 6 кадам

Video: Акылдуу үйдү баштоо - Projeto Final: 6 кадам
Video: Летний Ламповый стрим. Отвечаем на вопросы. 2024, Ноябрь
Anonim
Акылдуу үйдү баштоо - Projeto Final
Акылдуу үйдү баштоо - Projeto Final

Акылдуу үйдүн IoT апликациясынын акыркы бөлүгүн түзүү

Акылдуу үйдө IoT колдонулбаган финалдык презентациялардын акыркы бөлүктөрү, алар сенсорлордун жана конструкциялардын DrangonBoard + Linker Mezzanine, ошондой эле интерфейске кирүү мүмкүнчүлүгүн камтыйт AWS булутунда "кошумча" маалыматы бар. Биринчиден, DragonBoard жана IoT комо умтулат, автоматтык түрдө автоматтык түрдө автоматтык түрдө иштейт, сенсор да, люминессация да, ошондой эле ар кандай шарттарда да иштейт. -сенсор сенсорлорду орнотууга мүмкүндүк бербейт, бирок алар эч кандай маалыматтын жоктугунан жана информациялоодон баш тартышат.

1 -кадам: Materias Necesários

Materias Nequários
Materias Nequários
Materias Nequários
Materias Nequários
  1. DragonBoard кой.
  2. 96Boards Linker Mezzanine
  3. Sensor de luminozidade (LDR) a Linkomp Mezzanine.
  4. Сенсор де Linker Mezzanine менен иштейт.
  5. Linker Mezzanine менен байланышыңыз.
  6. Link/Mezzanine менен байланышыңыз, ал A/C системасында иштейт.
  7. Светодиод бир Linker Mezzanine менен, жана башка кызматтарды көрсөтөт.
  8. Библиотекалардын көчүрмөлөрүн орнотуу 5.

2 -кадам: Sensores, Atuadores E Conexões

Sensores, Atuadores E Conexões
Sensores, Atuadores E Conexões
Sensores, Atuadores E Conexões
Sensores, Atuadores E Conexões

1. Linker Mezzanine:

Ажыдаар тактасында Mezzanine орнотулган. Пара алуу, кеңеш берүүчү шилтеме

2. Sensor luminosidade (LDR)

ADC1 каталогуна кирүү үчүн сенсордук бөлүкчөлөрдүн жардамы менен катталуучу катмары иштейт. Техничаларды тазалоо:

3. Сенсордук температура

ADC2 каталогуна кирүү үчүн сенсордук бөлүкчөлөрдүн жардамы менен каттоодон өтүңүз. Техничаларды тазалоо:

4. Botão Touch

Оюн сенсорунун жардамы менен D1 катталуучу линзалар менен жабдылган. Кирүү же жок кылуу системасы бул жерде. O acesso a este botão é somente local. Пикирлерди тазалоо: https://linksprite.com/wiki/index.php5? Title = Touch_…

5. Relé

D2ге киргенде, бул дагы Kit2 Linker Mezzanine менен байланышыңыз. A/C. системасынын негизги функциялары бул жерде:/

6. LED

Жарыктандыруучу D4 үчүн Linker Mezzanine менен байланышыңыз. Бул LEDдын системасы дагы, сиз дагы интернетте, тышкы жана тышкы системаңызда, ошондой эле сырттагы маалымат менен да тааныша аласыз. Каршылык көрсөтүүчү резистор 10км болгон учурда, бул системанын жоктугунан, колдонулуучу системанын анализдеринен жана антифриздеринен турат. Техничаларды тазалоо:

7. Sensato de contato magnético

Сенсорлор комплект менен иштөөдө, ошондой эле Linker Mezzanine. Бул жерде эч кандай маалымат жок болгондуктан, сиз өзүңүздү эч нерсе менен байланыштыра албайсыз. Сенсор é um conjunto formado 2 pequenas peças (ver photo do Step acima), or sensors proprimamente dito e um pequeno "imã", que ao aproximar-se do sensor alterar or estado do sensors. Сенсор колдонулбагандан кийин, N/A (нормалдуу аброй). Бул сенсорго же сенсорго отчет берүү. Бул сенсор менен иштөө үчүн эң маанилүү болуп саналат.

3 -кадам: Апликативдик көзөмөлдөө ремотосу

Тандоо Remoto көзөмөлдөө
Тандоо Remoto көзөмөлдөө

Ionic Framework, https://ionicframework.com/ колдонмолору. Жүктөө жана орнотуу керек.

Комуникарды колдонуу (AWS IoT- AWS IoT- https://aws.amazon.com/iot/), бул пункттун ажыдаар тактасы жана абалын аныктоо үчүн сенсордук статуска ээ болуу үчүн..

- Система иллюминациянын сайттары, ошондой эле сайттар. Күчтүү конфигурацияларды жасоо үчүн, алар автоматтык түрдө орнотулат. Күчтүү мааниге ээ болгондой эле, биз дагы буларды көрөбүз.

- A/C акционердик системасы, A/C жана башка системалар менен иштейт. Темпераменттүү мааниге ээ болуу. Температура жана аба ырайынын температурасы дагы өзгөрөт, ал A/C режиминдеги аба ырайынын температурасы абанын температурасынын 2 даражасына чейин жетет. Мисалы, 23 күндүн ичинде кандайдыр бир температураны карап көрүңүз. Ички абанын температурасы 24 сааттан ашпаган абада, аба жана муздак аба температурасы 20 градуска чейин жетет. Кайталоо.

- Карапайым маалымат, ошондой эле сиз өзүңүздү кармайсыз.

- Температура жана информация интерьерде да, температурада да.

- Luminosidade же luminosidade atual информациялык маалымат.

Бул жерде AWS электрондук почта колдонмосу менен байланышыңыз.

4 -кадам: Криандо Ума "coisa" Na AWS IoT

Криандо Ума
Криандо Ума

AWS менен IoT орнотулганда, орнотулган жөндөөлөр төмөнкүдөй:

1) AWS IoT шилтемеси жок проектке шилтеме жасаңыз:

2) Clique "бир нерсени түзүү" жана "Бир нерсени түзүү". Кийинкиге долбоорлоо керек.

3) "Тастыктамасы жок нерсени жаратуу" керек. Үйрөткүчтөр сертификаттардын жардамы менен сертификаттарга ээ болуп, IoT сертификаттарын тапшырууну сунуштайт.

4) Эч нерсеге көңүл бурбоо керек. "Коиса" деген сөз жок болгондуктан, телекоммуникацияны өчүрүү керек. Nessa телеманалдын жардамы менен көйгөйлөрдү оңдоп -түзөө үчүн, сиз өзүңүздүн компьютериңизди оңдоп -түзөй аласыз. Python программасы эч кандай ката кетирген жок, алфавиттик программалар дагы жок кылынат. "Көлөкө" дегенди тандап алгыла, бул AWS Cloud үчүн ажыдаар тактасын жаңыртууга мүмкүндүк берет.

5 -кадам: Python программасы

Библиотекалардын программасы боюнча программаны аткаруу керек:

импорттоо spidevimport убактысын импорттоо журналын импорттоо json import argparse

libsoc импорттук gpio тартып

убакыттан импорттук датадан импорттук датага чейин, gpio_96boardsтен датага GPIO AWSIoTPythonSDK. MQTTLib импорттоо AWSIoTMQTTClient AWSIoTPythonSDK. MQTTLib

Төмөнкү программаны аткарыңыз:

импорттоо spidevimport убактысын импорттоо журналын импорттоо json import argparse

libsoc импорттук gpio тартып

убакыттан импорттук убакыттан datetime импорттоо күнүнө чейин, 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, 'чыгуу'), (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)

##### Система де Илуминакао

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 - Температура 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 - Жарыктык gpio.digital_write (GPIO_CS, GPIO. HIGH) adcoutldr = (r [1] << 8) & 0b1100000000 adcoutldr = adcoutldr | (r [2] & 0xff) adcoutldr = str (adcoutldr) азыр = datetime.utcnow () now_str = азыр.strftime ('%Y-%m-%dT%H:%M:%SZ') тематура = "{:.2f} ". Формат (adc_temp) payload_temp = '{" абал ": {" каалаган ": {" Luminosidade ":' + adcoutldr + '," 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)

def run (gpio):

system_status = 1

чын болсо:

time.sleep (2) button_value = gpio.digital_read (BUTTON) басып чыгаруу ("----") time.sleep (0.25) if button_value == 1: if system_status == 0: system_status = 1 other: system_status = 0 desliga () if system_status == 1: value = readadc (gpio) print "SYSTEM_STATUS %d" %system_status time.sleep (3)

класс shadowCallbackContainer:

def _init _ (өзүн, deviceShadowInstance): self.deviceShadowInstance = түзмөкShadowInstance

# Көнүмүш Shadow кайра чалуу

def customShadowCallback_Delta (өзүнчө, жүктөм, жоопStatus, токен): басып чыгаруу ("Дельта билдирүүсү алынды:") ### пайдалуу жүктөмөнүн скрипт payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["state"]) басып чыгаруу "DELTA MESSAGE %s" %deltaMessage ### Кабарланган абалды жаңыртуу өтүнүчү 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

####### Заттын аныктамасы

# AWS IoT тастыктамасына негизделген байланыш

myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configure/Credentials/"-, "/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 Гц myMQTTClient.configureConnectDisconnectTimeout (10) # 10 сек myMQTTClient.configureMQTTOperationTimeout (5) # 5 сек. MnQntect (my) QualTM coisajsb "," туташкан ", 0)

########################

####### Көлөкө аныктамасы

# Inw AWSIoTMQTTShadowClient

myAWSIoTMQTTShadowClient = эч myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("Ачкыч END-POINT.us-west-2.amazonaws.com", 8883) myAWSIoTMQTTShadowClient.configureCredentials ("/ Башкы бет / linaro / бөлүштү / AWS / root- CA.crt ","/home/linaro/shared/AWS/"SUA CHAVE" -private.pem.key ","/home/linaro/shared/AWS/"SEU CERTIFICADO-certificate.pem.crt")

# AWSIoTMQTTShadowClient конфигурациясыAAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10) # 5TMTimeTimeTimeTM

# AWS IoT менен туташуу

myAWSIoTMQTTShadowClient.connect ()

# Туруктуу жазылуу менен түзмөк көлөкөсүн түзүңүз

deviceShadowHandler = myAWSIoTMQTTShadowClient.createShadowHandlerWithName ("DBpyAWS1116", Чыныгы) shadowCallbackContainer_Bot = shadowCallbackContainer (deviceShadowHandler)

# Дельталарды угуңуз

түзмөкShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)

#########################

myMQTTClient.publish ("$ aws/things/DBpyAWS1116/shadow/update", '{"state": {"хүссэн": {"SystemStatus": 1, "SisIlumi": 0, "AC": 0, "Garagem"): "Fechada", "Temperatura": 25, "Luminosidade": 123}}} ', 0)

эгер _name_ == "_main_":

GPIO (казыктар) менен gpio катары: чуркоо (gpio)

6 -кадам: Финал

Finalização
Finalização

Түшүндүрмөлөр анонтерлерде, системанын аткарылышында же аткарылышында эч кандай пароль жок, 5 электрондук почта колдонмосу ионикалык, иондондук же комондук Иондук кызматты аткарат.

Мүмкүн болгон көйгөйлөрдү чечүү, MWTT Кардарынын AWSти TEST кылуу, AWS Булуттары менен иштөө үчүн, AWS булактарын текшерүү:

Сунушталууда: