Cuprins:
Video: SHIOT: 6 pași
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Acest proiect a fost dezvoltat pentru un sistem de iluminare prin Dweet, și a fost folosit de hardware-ul Dragonborad 410C cu versiunea liniară instalată.
E pentru o dezvoltare a aplicației pentru smartphone a fost utilizat o ionică, e o IDE Visual studio Code.
Pasul 1: Pasul 1: Materiale Uitilizados
1 x Dragonboard 410C
1 x linker Mezanin
1 x led modulo
1 x modul de temperatura
1 x modul de lumină LDR
1 x senzor tactil modulo
2 x modulos rele
1 x teclado USB
1 x mouse usb
1 x monitor Hdmi
conexão com a internet
rezistor de 1k Ohms pentru adaptare la led
Pasul 2: Pasul 2: Montagem
a) Plugue o Linker Mezzanine na placa da Dragonboard 410C
b) Plugue o modulo de temperatura no conector do ADC2 da mezzanine
c) Plugue o modulo de sensor de luminosidade no conector do ADC1 da mezzanine
d) Conectați modulul senzorului fără conector la D1 da mezanin
e) Plugue o modulo de rele no conector do D2 da mezzanine
f) Plugue o modulo Led nu conector do D3 da mezzanine
g) Plugue o modulo de rele no conector do D4 da mezzanine
h) Conectare sau monitorizare fără conector HDMI de pe placa Dragonboard 410C
i) Conectare o tastatură USB pe placa Dragonboard 410C
j) Conectați mouse-ul USB pe placa Dragonboard 410C
l) Plugue a fonte de alimentação na placa Dragonboard 410C
OBS 1: Devido ao modulo LED ter apenas um resistor de 82 Ohms, interfere na medição do sensor de temperatura causando valores negativos când este acționat, sens necesar la utilizarea de um resistor de pelos less de 1k Ohms conforme 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
Pasul 3: Pasul 3: Codigo Python
# importação das bibliotecas spidev e time
import spidev
timpul de import
# importação parcial das bibliotecas
din libsoc import gpio
din gpio_96boards import GPIO
de la import trebuie Dweet
# definição das porta analogica, o sensor de luminozitate și de temperatură serão definidas por endereçamento.
GPIO_CS = GPIO.gpio_id („GPIO_CS”)
# definição das portas digitais
BUTON = 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
pini = ((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
system_status = 1
dweet = Dweet ()
# configurações do bloco de comandă LED și RELE
citește Digital (gpio):
digital = [0, 0]
digital [0] = gpio.digital_read (LED)
digital [1] = gpio.digital_read (RELE)
reveniți digital
Def writeDigital (gpio, digital):
scrie = digital
gpio.digital_write (LED, scrie [0])
gpio.digital_write (RELE, scrie [1])
reveniți digital
# configuração do bloco para o touch, pentru o sistem sau ligar o sistem
def detectaButton (gpio):
status_status global
status = gpio.digital_read (BUTON)
dacă starea == 1:
dacă system_status == 0:
system_status = 1
sis_status = "Ligado"
print ("Estado do Sistema% s"% sis_status)
altceva:
system_status = 0
sis_status = "Desligado"
print ("Estado do Sistema% s"% sis_status)
dweet.dweet_by_name (name = "shiot", data = {"sistema": sis_status})
returnează starea_sistem
# configuração do bloco para leitura da temperatura
read readTemp (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])
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 ("Temperatura:% 2.1f"% adc_temp)
returnează adc_temp
# configuração do bloco para leitura da luminosidade.
read read Lumi (gpio):
gpio.digital_write (GPIO_CS, GPIO. HIGH)
time.sleep (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)
returnează adcout
# execução dos blocos de comandos
dacă _name _ == '_ main_':
cu GPIO (pini) ca gpio:
în timp ce este adevărat:
digital = [0, 0]
dacă detectaButton (gpio) == 1:
lumi = readLumi (gpio)
# verificarea da luminozitatea pentru acționarea do rele do conector D4
dacă lumi <400:
gpio.digital_write (RELE2, GPIO. HIGH)
luz_status = "Ligado"
altceva:
gpio.digital_write (RELE2, GPIO. LOW)
luz_status = "Apagado"
# verificação no dweet for acionamento do led e / ou rele
răspuns = dweet.latest_dweet (name = "shiot")
digital [0] = răspuns ['cu'] [0] ['conținut'] ['led']
digital [1] = răspuns ['with'] [0] ['content'] ['rele']
writeDigital (gpio, digital)
temp = readTemp (gpio)
digital = readDigital (gpio)
#imprime os valores de luminosidade, temperatura
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 = "Ligado"
#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, " sistem ": sis_status})
#tempo para cada leitura
time.sleep (5)
#devido a metodologia do dweet, trebuie să fie configurat sau trebuie înainte de executarea programului python.
Pasul 4: Pasul 4: Dweet
Trebuie să fiu, să te joci.
Trebuie să creați sau să citiți fișiere în cache pe termen scurt, na aba:
POST / dweet / quietly / for / {thing}
- no parametro thing escreva shiot, conforme programa feito no python.
- em conținut escreva:
Que são os para os parametros enviados do dweet for a Dragonboard410C, sendo 0 pentru desligado și 1 pentru ligado.
e clique no botão ÎNCERCAȚI.
Execute o program no terminal da Dragonboard 410C (acesta trebuie să fie conectat la uma rede com internet):
sudo python smart.py
Na aba OBȚINE:
GET / get / dweets / for / {thing}
- no parametro thing escreva shiot, conforme program feito no python.
e clique no botão ÎNCERCAȚI.
Corpul de răspuns la em este ceva similar:
Pasul 5: Pasul 5: Codul Ionic E Virtual Studio
pentru criar pastas și os arquivos pentru necesarii do app
fără prompt de comandă pentru Windows:
ionic start shiot
abra o Visual Studio Code
pentru a construi ca pagini html:
Em SRC => pages => Home => home.html
codigo conforme arquivo homehtml.txt
Em SRC => pages => Home => home.tscodigo conforme arquivo homets.txt
este necesar gerar o dweet.ts pentru comunicare corect HTTP și dweet
na prompt de comanda na pasta do project:
ionic generează furnizorul trebuie să fie
Em SRC => providers => dweet => dweet.ts
codigo conforme arquivo dweetts.txt
importație pentru comunicație
Em SRC => app => app.module.ts
codigo conforme arquivo appmodulets.txt
Pasul 6: Pasul 6: Finalização
Fără prompt de comandă de paste de proiect:
servire ionică
Sera aberto no navegador https:// localhost: 8100 /
Sendo gerado uma tela com Led that you can ser ligado ou desligado com uma "chave liga / desliga".
Sendo gerado uma tela com rele that you can ser ligado ou desligado com uma "chave liga / desliga".
E monitoramento de Temperatura, Iluminação, Luz externa, e Sistema.
mai multe detalii nu funcționează fără Dragon.pdf