Table des matières:
Vidéo: SHIOT: 6 étapes
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Ce projet a été conçu pour un système d'éclairage via Dweet, et pour l'utilisation du matériel Dragonborad 410C avec une version linux de l'installation.
E para o desenvolvimento do aplicativo para o smartphone utilizado o ionic, e o IDE Visual studio Code.
Étape 1: Étape 1: Matériel utilisé
1 x Dragonboard 410C
1 x éditeur de liens Mezzanine
1 x led modulo
1 x modulo de température
1 x modulo de luminosidade LDR
1 x capteur tactile modulo
2 x modulos rele
1 x usb technique
1 x souris usb
1 x moniteur HDMI
conexão com un internet
résistance de 1k Ohms pour adaptação do led
Étape 2: Étape 2: Montage
a) Plugue o Linker Mezzanine sur la place du Dragonboard 410C
b) Plugue o modulo de temperature no conector do ADC2 da mezzanine
c) Plugue o modulo de sensor de luminosidade no conector do ADC1 da mezzanine
d) Plugue o modulo de sensor toque no conector do D1 da mezzanine
e) Plugue o modulo de rele no conector do D2 da mezzanine
f)Plugue o modulo Led no conector do D3 da mezzanine
g)Plugue o modulo de rele no conector do D4 da mezzanine
h)Plugue o monitor no conector HDMI da placa Dragonboard 410C
i) Plugue o teclado USB na placa Dragonboard 410C
j) Plugue o mouse USB na placa Dragonboard 410C
l) Plugue a fonte de alimentação na placa Dragonboard 410C
OBS 1: Devido ao modulo LED ter apenas um résistance de 82 Ohms, interfère avec le capteur de température causando valores negativos quando é acionado, senso necessário a utilização de um resistance de pelos menos de 1k Ohms conform figura.
OBS 2: Devido ao kit da mezzanine possuir apenas um modulo rele, foi necessário adaptador um modulo rele generico, utilizado no conector D4 da mezzanine, interligando cabo VCC no VCC, GND no GND, e o de sinal no D_G da mezzanine
Étape 3: Étape 3: Codigo Python
#importação das bibliotecas spidev e time
importer spidev
heure d'importation
#importação parcial das bibliotecas
depuis libsoc importer gpio
depuis gpio_96boards importer GPIO
de dweet importer Dweet
# definição das porta analogica, o sensor de luminosidade e de temperature serão definidas por endereçamento.
GPIO_CS = GPIO.gpio_id('GPIO_CS')
# definição das portas digitais
BOUTON = GPIO.gpio_id('GPIO_A')
RELE = GPIO.gpio_id('GPIO_C')
LED = GPIO.gpio_id('GPIO_E')
RELE2 = GPIO.gpio_id('GPIO_G')
#configurações das GPIOS se IN ou OUT
broches = ((GPIO_CS, 'out'), (BUTTON, 'in'), (RELE, 'out'), (LED, 'out'), (RELE2, 'out'),)
#configurações das portas analagicas
spi = spidev. SpiDev()
spi.open(0, 0)
spi.max_speed_hz = 10000
spi.mode = 0b00
spi.bits_per_word = 8
état_système = 1
dweet = Dweet()
#configurações do bloco de commando LED e RELE
def readDigital(gpio):
numérique = [0, 0]
digital[0] = gpio.digital_read(LED)
numérique[1] = gpio.digital_read(RELE)
retour numérique
def writeDigital (gpio, numérique):
écrire = numérique
gpio.digital_write(LED, écriture[0])
gpio.digital_write(RELE, écrire[1])
retour numérique
#configuração do bloco para o touch, para o sistema ou ligar o sistema
def detectaButton(gpio):
état_système global
status = gpio.digital_read(BUTTON)
si état == 1:
si état_système == 0:
état_système = 1
sis_status = "Ligade"
print ("Estado do Sistema %s" %sis_status)
autre:
état_système = 0
sis_status = "Desligado"
print ("Estado do Sistema %s" %sis_status)
dweet.dweet_by_name(name="shiot", data={"sistema":sis_status})
retourner system_status
#configuração do bloco para leitura da temperatura
def readTemp(gpio):
gpio.digital_write(GPIO_CS, GPIO. HIGH)
temps.sommeil(0.0002)
gpio.digital_write(GPIO_CS, GPIO. LOW)
r = spi.xfer2([0x01, 0xA0, 0x00])
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
#print("Température:%2.1f " %adc_temp)
retourner adc_temp
#configuração do bloco para leitura da luminosidade.
def readLumi(gpio):
gpio.digital_write(GPIO_CS, GPIO. HIGH)
temps.sommeil(0.0002)
gpio.digital_write(GPIO_CS, GPIO. LOW)
r = spi.xfer2([0x01, 0x80, 0x00])
gpio.digital_write(GPIO_CS, GPIO. HIGH)
adcout = (r[1] << 8) & 0b1100000000
adcout = adcout | (r[2] & 0xff)
retour annonce
#execução dos blocos de commandos
si _name_=='_main_':
avec GPIO (broches) comme gpio:
tant que vrai:
numérique = [0, 0]
si detectaButton(gpio) == 1:
lumi = lireLumi(gpio)
# verificação da luminosidade para acionamento do rele do conector D4
si lumi < 400:
gpio.digital_write(RELE2, GPIO. HIGH)
luz_status = "Ligado"
autre:
gpio.digital_write(RELE2, GPIO. LOW)
luz_status = "Apagado"
#verificação no dweet para acionamento do led e/ou rele
resposta = dweet.latest_dweet(name="shiot")
digital[0] = resposta['with'][0]['content']['led']
digital[1] = resposta['with'][0]['content']['rele']
writeDigital (gpio, numérique)
temp = readTemp(gpio)
numérique = lireDigital(gpio)
#imprime os valores de luminosidade, temperature
print "Temp: %2.1f\nlumi: %d\nled: %d\nrele: %d\n" %(temp, lumi, digital[0], digital[1])
print ("Luz Externa:%s" %luz_status)
sis_status = "Ligade"
#envio de dados para o dweet
dweet.dweet_by_name(name="shiot", data={"led":digital[0], "rele": digital[1], "Temperatura":temp, "Luminosidade": lumi, "Luz_externa": luz_status, " système":sis_status})
#tempo para cada leitura
heure.sommeil(5)
#devido a metodologia do dweet, deve ser configurado o dweet antes de executar o programa no python.
Étape 4: Étape 4: Dweet
Em dweet.io, clique em PLAY.
Em dweets: Créer ou lire des dweets dans un cache à court terme, na aba:
POST /dweet/silencieusement/pour/{chose}
- aucune chose parametro escreva shiot, conforme programa feito no python.
- em contenu escreva:
Que são os para os parametros enviados do doweet para a Dragonboard410C, sendo 0 para desligado e 1 para ligado.
e clique no botão ESSAYEZ-LE.
Exécutez o programa no terminal da Dragonboard 410C (este deve estar conectado em uma rede com internet):
sudo python smart.py
Na aba OBTENIR:
GET /get/dweets/for/{chose}
- aucune chose parametro escreva shiot, conforme programa feito no python.
e clique no botão ESSAYEZ-LE.
Em Response Body é obtido algo similaire:
{ "this": "succeeded", "by": "getting", "the": "dweets", "with": [{ "chose": "shiot", "created": "2017-12-03T19: 30:11.458Z", "content": { "Temperatura": 25.2688172043, "led": 0, "Luminosidade": 504, "Luz_externa": "Apagado", "sistema": "Ligado ", "rele": 0 } }, envoyer "réussi", identificando que a conexão fo feito com successo e são os parametros osbtidos da Dragonboard410C.
Étape 5: Étape 5: Code du studio virtuel Ionic E
pour les pâtes e os arquivos para necessários do app
pas d'invite de commande pour windows:
shit de démarrage ionique
ouvrir le code Visual Studio
para construir comme paginas html:
Em SRC => pages=> Accueil => home.html
codigo conforme arquivo homehtml.txt
Em SRC =>pages=> Accueil => home.tscodigo conforme arquivo homets.txt
é necessario gerar o dweet.ts para comunicar corretamente HTTP e dweet
na prompt de commande na pasta do projeto:
fournisseur de génération ionique dweet
Em SRC =>fournisseurs=> dweet => dweet.ts
code conforme arquivo dweetts.txt
importation pour la communication
Em SRC =>app=> app.module.ts
codigo conforme arquivo appmodulets.txt
Étape 6: Étape 6: Finalisation
Pas d'invite de commande de pasta do projeto:
service ionique
Sera aberto no navegador
Sendo gerado uma tela com Led que pode ser ligado ou desligado com uma "chave liga/desliga".
Sendo gerado uma tela com rele que pode ser ligado ou desligado com uma "chave liga/desliga".
E monitoramento de Temperatura, Iluminação, Luz externa, e Sistema.
mais detalhes do funcionamento no arquivo Dragon.pdf