IoT-omgevingslicht:Zerynth-lamp
Componenten en benodigdheden
| × | 1 | ||||
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 |
Apps en online services
![]() |
| |||
|
Over dit project
Draadloze standaarden met laag vermogen in combinatie met goedkope, ultraminiatuur LED's, sensoren en communicatieapparatuur hebben van slimme verlichting een katalysator gemaakt voor het internet der dingen en domotica.
In deze tutorial zullen we zien hoe je een NeoPixel LED-strip via mobiel kunt bedienen met behulp van de Zerytnh-app, die een kleurenkiezer en een menu toont voor de selectie van verschillende vooraf geconfigureerde animaties.
Stap 1:Benodigd materiaal





Het project vereist enkele elementen:
- Zerynth Studio :een op meerdere platforms en browser gebaseerde Python-ontwikkelomgeving met functies voor cloudsynchronisatie en bestuursbeheer. Het maakt niet uit welk besturingssysteem je gebruikt, Zerynth draait! Gewoon Zerynth downloaden en installeren (http://www.zerynth.com/zerynth-studio/).
- Zerynth-app: de Zerynth mobiele interface voor slimme objecten en IoT-systemen. Elke mobiele telefoon wordt het display van de objecten en de afstandsbediening. Downloaden:http://www.zerynth.com/zerynth-app/
- Zerynth-schild (hier beschikbaar:https://store.open-electronics.org/index.php?_route_=Shield_ZERYNTH&search=toi ). Een gebruiksklaar multisensorbord dat slimme functies toevoegt aan uw alledaagse voorwerpen
- Arduino DUE of ST Nucleo F401RE of ParticlePhoton . of UDOO of Flip&Clip door Mikroelektronika . Welk board je ook gebruikt, Zerynth is compatibel met meerdere boards! Je kunt alle ondersteunde boards hier vinden:http://www.zerynth.com/zerynth-studio/
- Als je Particle Photon (die een wifi-module aan boord heeft) niet gebruikt, heb je een element nodig dat het bord met internet verbindt, zoals het wifi-schild van Adafruit . U kunt echter elke andere adapter gebruiken die de wifi-chip CC3000 Texas Instruments . monteert (http://www.ti.com/product/cc3000).
- een strip (of een ring) van NeoPixel LED's van Adafruit (hier beschikbaar https://www.adafruit.com/products/1426)
- een glazen of 3D-geprinte lamp . De keuze is aan jou.
Stap 2:Montage

- Gewoon het wifi-schild en het Zerynth-schild meeliften op je Arduino (of ST Nucleo of UDOO). Als je Particle Photon gebruikt, kun je het gewoon meeliften op de speciale connectoren op het Zerynth Shield.
- Sluit de NeoPixel-LED's aan op de bijbehorende poort op het Zerynth Shield.
- Plaats alle borden en de LED's in de lamp.
Stap 3:Programmeren

Zerynth gebruiken is heel eenvoudig!
- verbind en "virtualiseer" je bord (al uitgelegd hier http://bit.ly/Hackster-VIPER-Theremin)
- maak een nieuw project in Zerynth (al uitgelegd hier http://bit.ly/Hackster-IoT-Notes-Printer). Let op:u moet 3 (+1) bestanden maken:main.py, animatie.py, template.html (en project.md)
- kopieer de geposte code
- uplink de code op je bord en je bent klaar!
Na het inschakelen van de lamp zal deze automatisch verbinding maken met het vooraf ingestelde netwerk.
Open vervolgens de Zerynth-app, die op zoek gaat naar Zerynth-objecten die op het netwerk zijn aangesloten, selecteer het object van belang, in dit geval de "Zerytnh-lamp", en u kunt ermee communiceren! In dit geval toont de Zerynth-app een kleurenkiezer en een menu voor de selectie van verschillende vooraf geconfigureerde animaties.
De code is heel eenvoudig en heeft veel opmerkingen. Voor vragen of suggesties kunt u een bericht plaatsen op de Zerynth-communityforums:http://community.zerynth.com/
Stap 4:Maak IoT helderder!

Vond je het leuk? Laten we hardcore worden!
Het Zerynth Shield presenteert een set sensoren en actuatoren, waaronder sensoren voor aanraakdetectie, infrarood LED, microfoon, lichtsensor en temperatuursensor. U kunt beginnen met deze zeer eenvoudige voorbeeldcode om het gewenste gedrag te ontwikkelen. Gebruik het Zerynth-schild om de functionaliteiten van de lamp uit te breiden!
Luigi F. Cerfeda (@L_F_Cerfeda) - Zerynth-team
Code
- main.py
- sjabloon.html
- animatie.py
main.pyPython
############################################### ################################## Zerynth Lamp## Gemaakt door Zerynth Team 2015 CC# Auteurs:G. Baldi , D. Mazzei############################################## ################################### importeer benodigde modulesimport streams from bcm43362 import bcm43362 as wifi_driverfrom wireless import wifiimport animation from toishield import toishield# en importeer de zerynthapp-modulevan zerynthapp importeer zerynthappstreams.serial()# maak verbinding met een wifi-netwerktry:wifi_driver.auto_init() print("Establishing Link...") wifi.link("SSID",wifi.WIFI_WPA2,"password ") print("Ok!") behalve Uitzondering als e:print(e)# sla de template.html op in de boardflash met new_resourcenew_resource("template.html")#### ZerynthApp Setup# ::Javascript naar Python::# de volgende functies worden aangeroepen wanneer knoppen worden ingedruktdef change_color(r, g, b):animatie.setup_color(r, g, b)def change_animation(n):animatie.setup_anim(n)def change_speed(n):animatie .het opzetten van een nim_speed(n)# configureer de Zerynth-app met een naam, een beschrijving en de sjabloon urlvp =zerynthapp.ZerynthApp("Zerynth Lamp", "Try me!", "resource://template.html")# elke keer dat Javascript gebeurtenissen genereert de corresponderende functies heten vp.on("change_color", change_color)vp.on("change_animation", change_animation)vp.on("change_speed", change_speed)# voer de ZerynthApp!vp.run()# uit sinds vp.run start een nieuwe thread, je kunt hier doen wat je wilt! # let's control ledsanimation.start(D6, 24)
template.htmlHTML
Zerynth-lamp
Aangedreven door Zerynth (www.zerynth.com)
animation.pyPython
############################################### ################################## Zerynth Lamp## Gemaakt door Zerynth Team 2015 CC# Auteurs:G. Baldi , D. Mazzei############################################## ###################################Lamp animatie functies van neopixel import ledstrips als neoimport threadinglock =threading.Lock() # de Zerynth-kleur :)color =[0x54,0x9a,0x97]anim =0anim_speed =50leds =Nonelayer0 =Nonelayer1 =Nonelayer2 =Nonenpins =0 gestopt=Falsestopcolor =[0xff,0xff,0xff]# maak alle benodigde lagen# laten we definiëren enkele coëfficiënten voor vloeiende animatie (halve sinusgolf)animation_coefficients =[ 0, 0.2588190451, 0.5, 0.7071067812, 0.8660254038, 0.9659258263, 1, 0.9659258263, 0.8660254038, 0.7071067812, 0.5, 0.2588190451]regenboog =[ (0xff,0x00,0 0xff,0x7f,0x00), (0xff,0xff,0x00), (0x00,0xff,0x00), (0x00,0x00,0xff), (0x4b,0x00,0x82), (0x8f,0x00,0xff)]def setup_anim( n):globale laag0,laag1,laag2,anim # vul lagen met hun beginwaarden l ock.acquire() leds.clear() layer2.clear() layer0.clear() layer1.clear() n=n%4 if n==0:layer0[0]=(100,0,0) layer0[ 1]=(100,0,0) laag0[2]=(100,0,0) laag1[0]=(0,100,0) laag1[1]=(0,100,0) laag1[2]=(0,100, 0) elif n==1:voor x in bereik(npins//2):layer0[x]=(100//(2*x+1),0,0) layer1[npins-x-1]=( 0,100//(2*x+1),0) layer2.clear() elif n==2:layer1.clear() pstep=0 voor x in range(npins):step =x*len(rainbow)/npins rx =(regenboog[int(stap)][0]+regenboog[int(pstep)][0])//4 gx =(regenboog[int(stap)][1]+regenboog[int(pstep)][ 1])//4 bx =(rainbow[int(step)][2]+rainbow[int(pstep)][2])//4 layer0[x]=(rx,gx,bx) pstep=step 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):globale kleur #print(" Color:",r,g,b) color[0]=r color[1]=g color[2]=b# Maak een functie om background animationdef animate_background(delay):global color step=0 while True:if ( anim==3 of anim==0) en niet gestopt: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 () stap +=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):while True:indien niet gestopt:lock.acquire () if anim ==0:layer0.lshift() layer1.rshift() elif anim ==1:layer0.rshift() layer1.rshift() elif anim ==2:layer0.rshift() layer1.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):global leds,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) # start de achtergrondanimatiethread (animate_background,500) # start de voorgrondanimatiethread (animate_foreground,50) terwijl True:# clear leds leds.clear() # nu, verwerf het slot lock.acquire() # voeg de eerste en tweede laag samen leds.merge(layer0) leds.m erge(layer1) # voeg de achtergrondlaag alleen samen waar leds transparant is (0,0,0) leds.merge(layer2,neo.first_color) # laat het slot los lock.release() # en steek hem aan! leds.on() sleep(50)def stop(r,g,b):globaal gestopt globaal stopcolor stopcolor[0]=r stopcolor[1]=g stopcolor[2]=b gestopt=True def hervatten():globaal gestopt gestopt =False setup_anim(anim)
Schema's

Productieproces