INHOUDSOPGAWE:

Die Holi-Tie: 8 stappe (met prente)
Die Holi-Tie: 8 stappe (met prente)

Video: Die Holi-Tie: 8 stappe (met prente)

Video: Die Holi-Tie: 8 stappe (met prente)
Video: НОЧЬЮ САМО ЗЛО ПРИХОДИТ В ЭТОТ ДОМ / AT NIGHT, EVIL ITSELF COMES TO THIS HOUSE 2024, Julie
Anonim
Image
Image

Deur gwfongMonkey PatchingVolg meer deur die skrywer:

Verhelderende hondehelling
Verhelderende hondehelling
Beeldhouwerk van staalhart en gesmelte glas
Beeldhouwerk van staalhart en gesmelte glas
Beeldhouwerk van staalhart en gesmelte glas
Beeldhouwerk van staalhart en gesmelte glas
Koperdraad en gesmelte glasvlinder
Koperdraad en gesmelte glasvlinder
Koperdraad en gesmelte glasvlinder
Koperdraad en gesmelte glasvlinder

Oor: Net 'n man wat cool dinge wil maak, meer oor gwfong »

Dit is die Holi-Tie, 'n feestelike das wat ontwerp is om tydens die vakansie gedra te word. Losweg gebaseer op die Ampli-Tie deur Becky Stern wat 'n Flora-bord gebruik, gebruik die Holi-Tie 'n Circuit Python Express (CPX) mikrokontroller om die NeoPixel-animasies en die musiek aan te dryf. 'N Knoppie verander tussen 2 verskillende NeoPixel -animasies. Kapasitiewe raakblokkies verander die NeoPixel -kleure en die animasiesnelheid. Die ander knoppie wissel tussen LED -animasies en musiek. Die ingeboude mikrofoon word gebruik om omringende geraas vir die VU-meteranimasie te meet. En die CPX -luidspreker lewer vakansie -chip -wysies af.

Alles word gekodeer met behulp van die Python -programmeertaal bo -op die CircuitPython -stelsel. Dit word aangedryf deur 'n 3.7V, 500mAH LiPo -battery wat aangepas is om 'n aan/uit -skakelaar te hê.

Daar is twee videogrepe wat die Holi-Tie wys:

  • Voltooi Holi-Tie
  • Binne-in die Holi-Tie

Stap 1: Onderdele en gereedskap

Dele

  • Circuit Playground Express
  • 15x Flora Neopixels
  • Magneetdraad
  • Kleefband met kleefband
  • 500 mAH lipo -battery met JST -aansluiting
  • Candy Cane das
  • Mini skyfie skakelaar, SPDT
  • Krimpbuis

By die verkryging van die onderdele is dit raadsaam om ekstras te koop. Ek het altesaam 20 NeoPixels gehad, waarvan een van die begin af gebreek en een wat ek verwoes het. Die Candy Cane -das was so goedkoop dat ek 'n tweede een gekoop het, ingeval ek die eerste een vernietig het.

Gereedskap

  • Warm gom geweer
  • Soldeerstasie
  • Draadknipper
  • Klein mes
  • Multimeter
  • Rekenaar
  • Aansteker of hittegeweer
  • Draad en naald

Stap 2: Lees die band vas

Lees die band
Lees die band
Lees die band
Lees die band
Lees die band
Lees die band

Die hoofdoel is om toegang tot die binneste kern te kry en lyne af te baken wat aandui waar die LED's geplaas moet word.

Stap 1: Bind die das vas

Dit sal moeilik wees om die band vas te maak as die elektronika op sy plek is. Bind dus die das vas sodat dit goed lyk en die knoop taamlik stewig is en nie sal ontrafel nie. Trek dan versigtig aan die klein punt van die das om die gat oop te maak om die das oor die kop te kry. Dit is die posisie waaraan die das gewerk sal word.

Daar is allerhande verskillende das knope. Ek ken net die een wat ek as kind geleer het, die Windsor. Dit maak nie saak watter knoop gebruik word nie.

Stap 2: Maak die agterkant van die das oop

Ruk die nate aan die een kant van die daslus en die logo oop en dan in die middel van die das. Wees versigtig, want dit moet aan die einde weer vasgemaak word.

Stap 3: Trek lyne waar die LED's geplaas moet word

Om die LED's in die wit streepgedeeltes van die das te laat verskyn, is dit makliker om die middellyn vir elke wit streepgedeelte aan die agterkant van die daskern te vind en dit dan aan die voorkant van die daskern te karteer. Kontroleer of die middellyn 1) in die middel en 2) ewewydig met die streep is. Fynstelling van die LED -posisies sal moontlik wees as dit 'n bietjie af is. Maar dit is die beste om dit nou so naby aan presies as later te kry.

Toets die middelpunt van die lyne deur LED's op die lyne te plaas en die streepstof bo -op te lê. Pas aan waar nodig.

Stap 3: Bevestig die NeoPixels

Bevestig die NeoPixels
Bevestig die NeoPixels
Bevestig die NeoPixels
Bevestig die NeoPixels
Bevestig die NeoPixels
Bevestig die NeoPixels
Bevestig die NeoPixels
Bevestig die NeoPixels

Eintlik maak ons ons eie LED -strook. Ons monteer die LED's eenvoudig op die daskern en verbind dit dan met mekaar.

Stap 1: Plak die NeoPixels aan die kern vas

Plaas 'n bietjie warm gom op die agterkant van die NeoPixel, plaas dit op die middellyne. Vir die gedeeltes met 3 NeoPixels, pas die middelste NeoPixel vertikaal in en plak dit eers vas. Dit sal dit makliker maak om die linker en regter NeoPixel in verhouding tot die middel te plaas, veral omdat die wydte van die das van bo na onder toeneem.

Maak seker dat u al die NeoPixels in dieselfde rigting oriënteer, van links onder na regs bo. As dit nie korrek is nie, werk die strook nie.

'N Opmerking oor die warm gom. Dit is voldoende om die projek te voltooi. Of dit nog jare sal duur, moet u maar sien.

Stap 3: Soldeer die NeoPixels aan mekaar

Omdat ek besluit het om die NeoPixels saam te soldeer in plaas van om geleidende draad te gebruik, werk die gat in die NeoPixel pads bietjie teen ons. Vind net 'n goeie plek op die kussing om die draad aan te soldeer. Moenie die gat met soldeersel vul nie, maar as dit gebeur, sal dit regkom.

Magneetdraad het 'n dun laag isolasie rondom 'n koperkern. Met 'n mes, skraap die isolasie af net aan die ente waar dit gesoldeer sal word. Dit is die beste om die hele omtrek van die draad te skraap.

Stap 4: Toets konneksie

Gebruik 'n multimeter om die konneksie van:

  1. Positiewe verbindings. Daar moet verbinding wees van punt tot stert. Maak seker dat die toetsverbinding op die pads nie die draad is nie.
  2. Grondverbindings. Doen dieselfde toets, maar met die grondblokkies.
  3. Elke data lyn. Verifieer van die een data -pad na die volgende dat daar verbinding is.

Stap 4: Bevestig die Circuit Playground Express

Heg die Circuit Playground Express aan
Heg die Circuit Playground Express aan

Die Circuit Playground Express (CPX) is die kern van die stelsel. Adafruit het talle tutoriale vir hierdie beheerder. Later in hierdie instruksie sal ek 'n paar van die MCU -funksies uitlig.

Stap 1: Soldeer die CPX aan die onderste punt NeoPixel

Sny die gepaste lengtes van die magneetdraad vir die krag, grond en data. Druk hulle deur die banddraadstof sodat hulle die NeoPixel -krag-, grond- en gegewensblokkies raak. Soldeer hulle vas en maak seker dat die bestaande drade op die pads steeds goeie verbinding maak.

Draai dan die bandkern om en plaas die CPX in die verlangposisie. Voer die kragdraad na die VOUT -pad, die gronddraad na enige grondblok en die datadraad na enige I/O -pad behalwe A0. Die kode wat ek geskryf het, gebruik A3.

Toets die konneksie.

Stap 2: Bind die CPX vas

Gebruik 'n draad en 'n naald om enige vier pads op dieselfde afstand te pluk en stik dit vas aan die kern.

Stap 5: Skakel die CPX aan

Skakel die CPX aan
Skakel die CPX aan
Skakel die CPX aan
Skakel die CPX aan
Skakel die CPX aan
Skakel die CPX aan

Die CPX het nie 'n aan/af skakelaar nie. Dit beteken dat die das sodra die battery ingeprop is, aangeskakel word. Dit beteken ook dat die enigste manier om dit uit te skakel, is deur die battery te ontkoppel, wat 'n groot probleem is. 'N Eenvoudige oplossing is om die battery aan/uit te skakel.

Stap 1: Sny die derde pen op die skakelaar af

Een van die nie-middelste penne is nie nodig nie. Sny dit af met die liggaam van die skakelaar.

Stap 2: Soldeer die skakelaar in 'n lyn met 'n batterykabel

Sny die batterygronddraad iewers in die middel. Skuif 'n stuk krimpbuis op elk van die gronddrade. Soldeer een gronddraad aan een van die penne en die ander gronddraad aan die ander pen. Maak seker dat hulle nie aan mekaar raak nie, of dat die soldeer aan die metaalliggaam raak.

Verifieer dat dit nie met 'n multimeter verbind is nie. Skuif die buis oor die gesoldeerde verbindings en krimp dit. Voeg 'n bietjie elektriese band by enige onderdeel wat as gevolg van moegheid kan buig.

Stap 3: Verifieer dat die battery werk

Op hierdie stadium kan die battery in die CPX ingeprop word. As alles goed verloop, moet die skakelaar die CPX kan aan- en uitskakel.

Stap 4: Monteer die battery

Sit 'n bietjie kleefplastiek aan die agterkant van die battery en op die band vas. Dit hou dit op sy plek as die das nie te veel met die hand hanteer word nie.

Stap 6: Die opstel van die Circuit Playground Express

Ek sal nie in detail gaan oor hoe om die CPX op te stel nie. Adafruit doen dit en dan 'n paar. Ek gee 'n paar wenke vir probleme wat ek gereeld ondervind het.

CPX vries

Waarskynlik as gevolg van geheue -probleme, sal die CPX gereeld vries. Die vinnige oplossing is om uit te vee en weer te flits. Soek na "Old Way" in hierdie instruksies. Eintlik is dit 'n paar druk op die knoppie, 'n sleep-en-druppel-knoppie om uit te vee, en dan 'n sleep-en-weer-knoppie om weer te flits.

Waarskuwing: Dit vee alles uit. Alle kode op die CPX gaan verlore.

Om veranderinge aan CPX te stoor, kan probleme veroorsaak

Ek het ontdek dat die python -tydsduur soms in 'n slegte toestand sou wees nadat ek 'n lêer op die CPX gestoor het. Die oplossing is weer begin met die lopietyd van die python deur op die reset -knoppie te druk. Druk dit net een keer. Deur twee keer daarop te druk, begin die herflitsproses.

Dit is riskant om regstreeks op CPX te spaar

As gevolg van die moontlikheid dat die CPX weer geflits moet word, loop u die risiko om al hul kode te verloor. Nadat ek my kode twee keer verloor het, het ek 'n eenvoudige werkstroom gekry. Ek sou my kode op die plaaslike hardeskyf stoor. As dit gereed was om getoets te word op die CPX, sou ek dit eenvoudig kopieer deur 'n eenvoudige implementeringsskrip uit te voer.

Stap 7: Kodering van die Circuit Playground Express

Op hierdie stadium is die CPX en NeoPixels redelik volledig. Geen ander meganiese of elektriese werk hoef daarmee gedoen te word nie. Die res is alles sagteware.

Die kode kan gevind word by my github -rekening. Die kern -python -kode behoort sonder enige veranderinge vir alle bedryfstelsels te werk. Moenie die eksterne Adafruit CircuitPython -biblioteke installeer nie. Hulle word nie gebruik nie.

Hier is 'n opsomming op hoë vlak van wat in die kode aangaan.

Watter insette doen wat?

  • Knoppie A: blaai deur die LED -animasies
  • Knoppie B: blaai deur die liedjies
  • Kapasitiewe raakvlak A1: verander die kleure vir die LED -animasies
  • Kapasitiewe Touch Pad A6: Verander die snelheid van die LED -animasies

3 animasies bestaan, maar slegs 2 is van krag

kode.py

voer pixels af

#import vum meter invoer trappe invoer twinkle … led_animations = [pixelsoff. PixelsOff (pixels), # vumeter. VuMeter (pixels, 100, 400) trap. Stairs (pixels), twinkle. Twinkle (pixels)]

Ek het die Ampli-Tie VU-meterstylkode oorgedra. Dit gebruik die CPX -mikrofoon om klank op te neem en die NeoPixels te verlig op grond van klankamplitude. Ek wou egter meer animasies hê. As gevolg van beperkte geheue beperkings, moes ek kies watter animasies ek wou hê. Die standaard twee, Stairs en Twinkle, werk dus standaard sonder om kodeveranderings aan te bring. Om die VU -meteranimasie uit te voer, moet een of albei die ander animasies kommentaar gelewer word en die VU -meter moet nie kommentaar lewer nie.

Musiekbestuurder en off-line kodering

ysige_die_snowman.py

voer musieknote in as mn

# Frosty the Snowman # Walter E. Rollins lied = [(mn. G4, mn. HLF), (mn. E4, mn. DTQ), (mn. F4, mn. ETH), (mn. G4, mn. QTR), (mn. C5, mn. HLF), …

convert_to_binary.py

liedjies = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] vir lied in liedjies: data = song [0] file = song [1] met oop (lêer, "wb") as bin_file: vir inskrywing in data: print ("writing:" + str (entry)) note = entry [0] dur = entry [1] bin_file.write (struct.pack ("<HH", note, dur))

Ek wou vakansie musiek hê. Die CPX ondersteun beide WAV en toon. WAV -lêers blyk te groot te wees wat lêergrootte en runtime -geheue betref. Deur python -datastrukture te gebruik om toon te hou, en die duur daarvan blyk ook te veel runtime -geheue te gebruik. Ek het dus die Holi-Tie-kode verander om 'n saamgeperste binêre lêer te lees wat slegs die nodige lieddata in 'n saamgeperste binêre formaat bevat. Ek het 'n skrif geskryf wat 'n liedjie in 'n python -datastruktuur lees en dit in die binêre formaat skryf. As die liedjie as binêre data in 'n lêer gekodeer word, is die liedjie klein en dinamies. Sodra die liedjie klaar gespeel is, word die geheue vrygestel.

Dit is triviaal om meer liedjies by te voeg. Vir meer inligting, sien die README.md in liedjies.

Knoppie A Animeer NeoPixels, B speel musiek, maar nie gelyktydig nie

kode.py

def button_a_pressed ():

if music.is_playing (): # Stop musiek as u musiek speel.stop () next_led_animation () def button_b_pressed (): if active_led_animation! = 0: # Begin no-op animasie next_led_animation (0) as musiek.is_playing (): # Toggle musiek aan of af music.stop () anders: music.play ()

Selfs met die meer geheue -doeltreffende musiekbestuurstelsel, kon ek nie 2 animasies vir tydsgeheue inhou nie, terwyl ek een daarvan speel en terselfdertyd 'n liedjie speel. Omdat ek al besluit het om glad nie 'n VU -meter in die geheue te hê nie, wou ek nie die aantal animasies tot 1 verminder nie. Ek het die kode geskryf sodat die animasie speel of die musiek speel, maar nie beide. 'N Ander opsie was om die aantal NeoPixels te verminder, maar dit sou die animasie -koelte verminder.

Python Code Funkiness

Alhoewel ek 'n veteraan sagteware -ontwikkelaar is, het ek nog nooit Python geskryf nie. Nadat ek dit onder die knie gekry het en staar na goeie koderingspraktyke soos inkapseling en modularisering, het ek vinnig agtergekom dat ek te veel runtime -geheue gebruik. Daar is dus 'n redelike bietjie nie-droë kode. Ek moes ook 'n paar MicroPython -tegnieke soos const () gebruik om die geheue -probleme van die werktyd verder te verminder.

Saamgestelde modules

saamstel

#!/bin/bash

samesteller = ~/ontwikkeling/circuitpython/mpy-cross-3.x-windows.exe cd liedjies python3./convert_to_binary.py cd.. vir f in *.py; doen as

Vroeg in die projek het ek die advies van Adafruit gevolg en al die Adafruit CircuitPython -biblioteke op flash gestoor. Dit het egter min ruimte vir my projek gelaat. Om my kode op die CPX te kry, het ek begin om die modules saam te stel en op die MCU te plaas. Dit blyk dat die Holi-Tie nie een van die eksterne biblioteke nodig het nie. Die bestaande biblioteke in die UF2 was voldoende vir hierdie projek. Die bestuur van *.mpy -lêers is 'n bietjie meer doeltreffend, so ek het die proses om die saamgestelde modules te implementeer, behou.

Soos blyk uit die samestelling hierbo, werk ek op 'n Windows -masjien, maar gebruik Unix -hulpprogramme soos bash en python3. Ek gebruik Cygwin om dit te bereik. Hierdie skrif kan maklik vertaal word na DOS -bondel en 'n inheemse Python3 -implementering van Windows.

Stap 8: Knoop die band vas

Knoop die das op
Knoop die das op
Knoop die das op
Knoop die das op

Die laaste stap is om die daskern weer op sy plek te plaas, die das weer aanmekaar te sit en weer vas te maak. Maak seker dat u die CPX toeganklik kan maak. U benodig dit wanneer u die battery vervang of kode verander.

Aanbeveel: