Luz ambiente IoT:Lâmpada Zerynth
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Aplicativos e serviços online
| ||||
|
Sobre este projeto
Padrões sem fio de baixo consumo de energia combinados com LEDs ultra-miniaturizados, sensores e dispositivos de comunicação tornaram a iluminação inteligente um catalisador para a Internet das Coisas e automação residencial.
Neste tutorial veremos como controlar uma faixa de LED NeoPixel via celular usando o App Zerytnh, que mostra um seletor de cores e um menu para a seleção de várias animações pré-configuradas.
Etapa 1:Material necessário
O projeto requer alguns elementos:
- Zerynth Studio :um ambiente de desenvolvimento Python multi-plataforma e baseado em navegador com sincronização em nuvem e recursos de gerenciamento de placa. Não importa qual sistema operacional você usa, o Zerynth é executado! Basta fazer o download do Zerynth e instalá-lo (http://www.zerynth.com/zerynth-studio/).
- Aplicativo Zerynth: a interface móvel Zerynth para objetos inteligentes e sistemas IoT. Qualquer dispositivo móvel se tornará a tela de objetos e o controle remoto. Download:http://www.zerynth.com/zerynth-app/
- Escudo Zerynth (disponível aqui:https://store.open-electronics.org/index.php?_route_=Shield_ZERYNTH&search=toi). Uma placa multi-sensores pronta para usar que adiciona funções inteligentes aos seus objetos da vida cotidiana
- Arduino DEVIDO ou ST Nucleo F401RE ou ParticlePhoton . ou UDOO ou Virar e cortar por Mikroelektronika . Não importa qual placa você use, Zerynth é compatível com várias placas! Você pode encontrar todos os detalhes das placas suportadas aqui:http://www.zerynth.com/zerynth-studio/
- Se você não usa o Particle Photon (que tem um módulo wi-fi integrado), é necessário um elemento que conecte a placa à web, como o escudo wi-fi de Adafruit . No entanto, você pode usar qualquer outro adaptador que monte o chip wi-fi CC3000 Texas Instruments (http://www.ti.com/product/cc3000).
- uma tira (ou anel) de NeoPixel LEDs da Adafruit (disponível aqui https://www.adafruit.com/products/1426)
- um vidro ou lâmpada impressa em 3D . A escolha é sua.
Etapa 2:montagem
- Basta adicionar o escudo wi-fi e o escudo Zerynth ao seu Arduino (ou ST Nucleo ou UDOO). Se você usar o Particle Photon, basta colocá-lo nos conectores dedicados do Zerynth Shield.
- Conecte os LEDs NeoPixel à porta relacionada no Escudo Zerynth.
- Coloque todas as placas e LEDs na lâmpada.
Etapa 3:Programação
Usar Zerynth é muito fácil!
- conecte e "virtualize" sua placa (já explicado aqui http://bit.ly/Hackster-VIPER-Theremin)
- crie um novo projeto em Zerynth (já explicado aqui http://bit.ly/Hackster-IoT-Notes-Printer). Atenção:você precisa criar 3 (+1) arquivos:main.py, animation.py, template.html (e project.md)
- copie o código postado
- conecte o código no painel e pronto!
Depois de ligar a lâmpada, ele se conectará automaticamente à rede predefinida.
Depois é só abrir o App Zerynth, que irá em busca dos objetos Zerynth conectados à rede, selecionar o objeto de interesse, neste caso a "Lâmpada Zerytnh", e você poderá interagir com ele! Neste caso, o Zerynth App mostra um seletor de cores e um menu para a seleção de várias animações pré-configuradas.
O código é muito simples e contém muitos comentários. Em caso de dúvidas ou sugestões, sinta-se à vontade para postar nos fóruns da comunidade Zerynth:http://community.zerynth.com/
Etapa 4:torne a IoT mais brilhante!
Você gostou? Vamos começar!
O Zerynth Shield apresenta um conjunto de sensores e atuadores, incluindo sensores para detecção de toque, LED infravermelho, microfone, sensor de luz e sensor de temperatura. Você pode começar a partir deste código de exemplo muito simples para desenvolver o comportamento de sua preferência. Use o Escudo Zerynth para estender as funcionalidades da Lâmpada!
Luigi F. Cerfeda (@L_F_Cerfeda) - equipe Zerynth
Código
- main.py
- template.html
- animation.py
main.py Python
######################################################### ############## Lâmpada Zerynth ## Criado pela Equipe Zerynth 2015 CC # Autores:G. Baldi , D. Mazzei ######################################################## ############ Importar módulos necessários importar streams de bcm43362 importar bcm43362 como wi-fi_driverde importação sem fio importar wi-fiimportar animação de importação paraishield toishield # e importe o módulo zerynthapp de zerynthapp import zerynthappstreams.serial () # conecte-se a uma rede wi-fitry:wifi_driver.auto_init () print ("Estabelecendo Link ...") wifi.link ("SSID", wifi.WIFI_WPA2, "senha ") print (" Ok! ") exceto Exceção como e:print (e) # salve o template.html no flash board com new_resourcenew_resource (" template.html ") #### ZerynthApp Setup # ::Javascript para Python::# as seguintes funções serão chamadas quando os botões são pressionadosdef change_color (r, g, b):animation.setup_color (r, g, b) def change_animation (n):animation.setup_anim (n) def change_speed (n):animation .configurar um nim_speed (n) # configurar o aplicativo Zerynth com um nome, uma descrição e o modelo urlvp =zerynthapp.ZerynthApp ("Zerynth Lamp", "Try me!", "resource://template.html") # everytime Javascript gera eventos as funções correspondentes são chamadas vp.on ("change_color", change_color) vp.on ("change_animation", change_animation) vp.on ("change_speed", change_speed) # execute o ZerynthApp! vp.run () # desde que vp.run inicia um novo tópico, você pode fazer o que quiser aqui! # vamos controlar ledsanimation.start (D6, 24)
template.html HTML
Lâmpada Zerynth
Powered by Zerynth (www.zerynth.com)
animation.py Python
######################################################### ############## Lâmpada Zerynth ## Criado pela Equipe Zerynth 2015 CC # Autores:G. Baldi , D. Mazzei ######################################################## #################################################################################################################################################################################################################################################################################). # a cor Zerynth:) color =[0x54,0x9a, 0x97] anim =0anim_speed =50leds =Nonelayer0 =Nonelayer1 =Nonelayer2 =Nonenpins =0 interrompido =Falsestopcolor =[0xff, 0xff, 0xff] # criar todas as camadas necessárias # vamos definir alguns coeficientes para animação suave (meia onda sinusal) animation_coefficients =[0, 0.2588190451, 0.5, 0.7071067812, 0.8660254038, 0.9659258263, 1, 0.9659258263, 0.8660254038, 0.707.067812, 0.5, 0.2588190451 0xff, 0x7f, 0x00), (0xff, 0xff, 0x00), (0x00,0xff, 0x00), (0x00,0x00,0xff), (0x4b, 0x00,0x82), (0x8f, 0x00,0xff)] def setup_anim ( n):camada global 0, camada 1, camada 2, anim # preencher camadas com seus valores iniciais l ock.acquire () leds.clear () layer2.clear () layer0.clear () layer1.clear () n =n% 4 se n ==0:layer0 [0] =(100,0,0) layer0 [ 1] =(100,0,0) camada 0 [2] =(100,0,0) camada 1 [0] =(0,100,0) camada 1 [1] =(0,100,0) camada 1 [2] =(0,100, 0) elif n ==1:para x no intervalo (npins // 2):camada0 [x] =(100 // (2 * x + 1), 0,0) camada1 [npins-x-1] =( 0,100 // (2 * x + 1), 0) layer2.clear () elif n ==2:layer1.clear () pstep =0 para x no intervalo (npins):passo =x * len (arco-íris) / npins rx =(arco-íris [int (passo)] [0] + arco-íris [int (pstep)] [0]) // 4 gx =(arco-íris [int (passo)] [1] + arco-íris [int (passo)] [ 1]) // 4 bx =(arco-íris [int (etapa)] [2] + arco-íris [int (pstep)] [2]) // 4 camada 0 [x] =(rx, gx, bx) pstep =etapa elif n ==3:layer0.clear () layer1.clear () anim =n lock.release () def setup_anim_speed (n):global anim_speed anim_speed =n def setup_color (r, g, b):global color #print (" Color:", r, g, b) color [0] =r color [1] =g color [2] =b # Crie uma função para lidar com animação de fundo animate_background (delay):global color step =0 enquanto True:if ( anim ==3 ou anim ==0) e não parado:lock.acquire () layer2.setal l (int (color [0] * animation_coefficients [step] / 2), int (color [1] * animation_coefficients [step] / 2), int (color [2] * animation_coefficients [step] / 2)) lock.release () step + =1 if step> =len (animation_coefficients):step =0 else:lock.acquire () layer2.clear (); layer2.setall (stopcolor [0], stopcolor [1], stopcolor [2]) lock.release () sleep (delay + 500-5 * anim_speed) def animate_foreground (delay):enquanto True:se não for parado:lock.acquire () se anim ==0:camada0.lshift () camada1.rshift () elif anim ==1:camada0.rshift () camada1.rshift () elif anim ==2:camada0.rshift () camada1.rshift () elif anim ==3:layer0.lshift () layer1.lshift () lock.release () else:lock.acquire () layer0.clear () layer1.clear () lock.release () sleep (delay + 100-anim_speed ) def start (pin, numpins):leds globais, layer0, layer1, layer2, npins npins =numpins leds =neo.LedStrip (pin, numpins) layer0 =neo.LedStrip (pin, numpins) layer1 =neo.LedStrip (pin, numpins) layer2 =neo.LedStrip (pin, numpins) setup_anim (0) setup_anim_speed (50) # iniciar o thread de animação em segundo plano (animate_background, 500) # iniciar o thread de animação em primeiro plano (animate_foreground, 50) enquanto True:# limpar leds leds.clear () # agora, adquira o bloqueio lock.acquire () # mescle a primeira e a segunda camada leds.merge (layer0) leds.m erge (layer1) # mesclar a camada de fundo apenas onde leds é transparente (0,0,0) leds.merge (layer2, neo.first_color) # libere o bloqueio lock.release () # e ilumine-o! leds.on () sleep (50) def stop (r, g, b):global parado global stopcolor stopcolor [0] =r stopcolor [1] =g stopcolor [2] =b parado =True def resume ():global parado parado =Falso setup_anim (anim)
Esquemas
Processo de manufatura