Talaan ng mga Nilalaman:
- Hakbang 1: Pag-setup ng Software
- Hakbang 2: Programming ang Microcontroller
- Hakbang 3: Mga Skematika
Video: Isang $ 1 LED Mood Lamp Na May ATtiny13 at WS2812: 7 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:10
Sundin ang Higit pa ng may-akda:
Ito ay isang low-cost mood lamp na may apat na mga mode.
1. Rainbow spark. Ang isang spark ng ilaw ay gumagalaw paitaas pagkatapos ng oras at unti-unting binabago ang kulay.
2. Rainbow glow. Isang matatag na glow na unti-unting nagbabago ng kulay.
3. Simula ng sunog ng kandila.
4. Patay.
Maaari kang magpalit ng mga mode sa pamamagitan ng pag-tap sa isang pindutan ng ugnayan sa itaas. Ang kasalukuyang mode ay nai-save sa memorya ng EEPROM pagkatapos patayin.
Gaano kaliit ang ATtiny13?
Ang ideya ay upang makakuha ng pinakamataas na tampok mula sa minimum na hardware, isang bagay na mas kumplikado kaysa sa awtomatikong switch o thermometer, isang proyekto na malapit sa gilid ng maliit na microcontroller na ito. Pagkatapos ng lahat, ang mga paghihigpit sa tingin mo ay malikhain, tama ba? Kaya, mukhang ito sa simula.
Ang pinaka-mapaghamong sa proyektong ito ay upang itulak ang lahat ng mga code sa ATtiny13. Ang microcontroller ay may 1K bytes flash at 64 bytes RAM lamang. Oo, kapag sinabi kong "bytes", ang ibig kong sabihin ay ang binubuo ng walong piraso. 64 bytes para sa lahat ng iyong lokal na variable at call stack. Upang linawin ito, isaalang-alang kailangan nating kontrolin ang 8 RGB LEDs. Ang bawat isa sa kanila ay tinukoy ng 3 bytes (isa para sa pula, berde at asul na channel ayon sa pagkakabanggit). Kaya, upang maiimbak lamang ang estado ng 8 LEDs, kakailanganin naming magpatupad ng isang hanay ng 8 istraktura ng 3 bytes bawat isa at ang isang pointer sa simula ng array na ito ay tatagal ng isa pang byte. Samakatuwid, 25 ng 64 bytes ay wala. Ginamit lamang namin ang 39% ng RAM at hindi pa talaga nagsisimula. Bilang karagdagan, upang maiimbak ang pitong pangunahing mga kulay ng bahaghari, kakailanganin mo ang 7 × 3 = 21 bytes, kaya't 72% ng RAM ang wala. Sa gayon, tungkol sa mga pangunahing kulay, pinalalaki ko: hindi namin kailangan ang lahat ng mga ito nang sabay sa RAM at hindi sila nagbabago, kaya maaari silang ipatupad bilang isang pare-pareho na array na maiimbak sa flash sa halip na RAM. Gayunpaman, nagbibigay ito ng pangkalahatang impression tungkol sa ginamit na hardware.
Naaalala ang pahayag ni Knuth tungkol sa maagang pag-optimize, nagsimula ako mula sa pag-prototype ng tatlong mga mode ng lampara nang hiwalay upang makita kung ano ang nangyayari. Hiwalay kong sinubukan ang mga ito upang matiyak na gumagana ang mga ito nang maayos at ang bawat isa ay akma sa aking microcontroller. Tumagal ng ilang gabi upang magawa ito at naging maayos ang lahat … hanggang sa sinubukan kong pagsabayin sila sa loob ng switch statement. Ang avr-size utility ay nag-ulat ng laki ng seksyon ng teksto na 1.5 Kb (na may -s flag ng avr-gcc). Sa sandaling iyon ang aking orihinal na hangarin ay upang grab ang ilang ATtiny25 na may 2Kb flash at maaaring iyon ang masayang wakas ng kuwentong ito.
Ngunit sa paanuman ay naramdaman ko na pagkatapos ng malaki ang pag-optimize ay maaari kong pamahalaan upang pag-urong ang crappy code sa 1Kb. Gayunpaman, tumagal ng isa pang linggo upang mapagtanto na imposible at isa pang linggo upang magawa rin ito. Kailangan kong gupitin ang isang bahaghari sa limang pangunahing mga kulay (nang walang makabuluhang pagkakaiba sa paningin). Inalis ko ang mga pahayag ng kaso at gumamit ng isang kadena ng kung-pagkatapos-kung bawasan ang laki ng binary code. Ang animasyon sa apoy ay nangangailangan ng isang pseudorandom number generator na medyo malaki, kaya ipinatupad ko ang isang pinasimple na bersyon ng LFSR na may pare-pareho ang paunang halaga. Wala akong pakialam sa PRNG buong haba ng ikot at naghahanap lamang ng isang balanse sa paglapag sa pagitan ng laki ng code at "makatotohanang animasyon sa sunog". Nagpatupad din ako ng maraming menor de edad na mga pag-optimize na hindi ko matandaan ngayon at nagawa pang i-flash ang lahat ng mga mode bukod sa apoy sa maliit na tilad. Nang maubusan ako ng mga ideya, ang aking kabuuang code ay tungkol sa 1200 bytes.
Nag-timeout ako at maraming binabasa tungkol sa pag-optimize ng AVR code. Malapit na akong sumuko at muling isulat ang lahat sa wika ng pagpupulong ngunit binigyan ko ito ng huling pagkakataon. Sa panahon ng pangwakas na pagmamadali, pinutol ko ang isang bahaghari sa tatlong pangunahing mga kulay at ginawa ang iba upang makalkula nang mabilis, sinuri ko ang lahat at sinundan ang mga rekomendasyon sa pag-optimize ng AVR at sa wakas…
avrdude: pagsusulat ng flash (1004 bytes):
Pagsusulat | ###Oooooooooooooooo | 100% 0.90s
Hindi na kailangang sabihin na ginamit ko ang halos lahat ng RAM at isang byte lamang ng EEPROM upang mag-imbak ng kasalukuyang mode. Hindi ko ipahiwatig na ito ay isang perpekto at panghuli na pagpapatupad. Gumagana lamang ito at umaangkop sa microcontroller. Sigurado ako, mas magagawa mo ito. Ako talaga. Nais ko lamang ibahagi ang kasiyahan ng paglutas ng isang tila hindi praktikal na problema na itinuturing mong halos imposible sa simula. "Sa gayon, ang pag-hack ay nangangahulugang pagtuklas sa mga limitasyon ng kung ano ang posible …" --Richard Stallman.
Mga Pantustos:
1x ATtiny13 MCU ($ 0.28 = $ 0.24 para sa MCU sa SOP-8 na pakete at $ 0.04 para sa DIP8 Adapter)
8x WS2812 RGB LEDs (Inirerekumenda ko ang isang board o isang piraso ng LED stripe) ($ 0.42)
1x TTP223 Touch button ($ 0.10)
1x Micro USB sa DIP Adapter ($ 0.14)
1x 10kΩ risistor (<$ 0.01)
1x 100nF ceramic capacitor (<$ 0.01)
1x 10–47µF electrolytic capacitor (<$ 0.01)
Kabuuang <$ 0.97
Hakbang 1: Pag-setup ng Software
Kakailanganin mo ang avr-gcc toolchain para sa pag-compile ng source code at avrdude utility para sa pag-upload ng ROM ng microcontroller. Ang proseso ng pag-install ay medyo simple at prangka, ngunit depende ito sa iyong operating system. Kung gumagamit ka ng ilang uri ng GNU / Linux, marahil ay mayroon ka nang tamang mga pakete sa iyong puno ng pag-iimbak. Ang source code ng proyektong ito ay maaaring ma-download dito:
github.com/arduinocelentano/t13_ws2812_lamp
Kakailanganin mo rin ang isang light_ws2812 library:
github.com/cpldcpu/light_ws2812
Kapag nakuha mo na ang avr-gcc toolchain at mga mapagkukunan ng proyekto, patakbuhin ang iyong terminal at i-type ang sumusunod na code:
path ng cd / sa / proyekto
gumawa
Hakbang 2: Programming ang Microcontroller
Kung mayroon kang isang uri ng programmer ng USBASP, ikonekta lamang ito sa Attiny alinsunod sa pinout nito. Karaniwan ay ganito ang hitsura nito ngunit masidhi kong inirerekumenda na suriin ang iyong aktwal na pinout!
Bilang kahalili, maaari kang gumamit ng isang Arduino board bilang isang programmer. Buksan ang Arduino IDE at hanapin ang halimbawa ng Arduino ISP sa menu ng "File → Mga Halimbawa". Matapos i-upload ang sketch, ang iyong Arduino board ay kumikilos bilang isang programmer. Ang mga komento sa sketch code ay magbibigay sa iyo ng isang bakas sa pag-pinout.
Tumakbo ngayon
gumawa ng flash
upang i-flash ang MCU at
gumawa ng piyus
upang itakda ang mga piyus ng piyus.
Hakbang 3: Mga Skematika
Inirerekumendang:
3D Printed LED Mood Lamp: 15 Hakbang (na may Mga Larawan)
3D Printed LED Mood Lamp: Palagi akong nagkaroon ng pagka-akit sa mga lampara, kaya ang pagkakaroon ng kakayahang pagsamahin ang 3D Pagpi-print at Arduino sa mga LED ay isang bagay na kailangan kong ituloy. Ang konsepto ay napaka-simple at ang kinalabasan ay isa sa pinaka kasiya-siyang visual mga karanasan na maaari mong ilagay
Mood Lamp Na May RGB Led: 4 Hakbang
Mood Lamp Na Gamit ang RGB Led: Ang mga proyekto ay maaaring i-install ang unang bersyon ng * sentimientos * gamitin ang Arduino Uno. Primero se necesitan varios materiales como jumpers, leds RGB o Neopixel, dependiendo de cómo se desee hacer. Pinangunahan ng mga gumagamit na ito ang humantong sa RGB tungkol sa
Web Lamp Puzzle LED Lamp Na May ESP32: 5 Mga Hakbang (na may Mga Larawan)
WebApp Puzzle LED Lamp Sa ESP32: Naglalaro ako ng mga LED strip sa loob ng maraming taon, at kamakailan lamang lumipat sa lugar ng isang kaibigan kung saan hindi ako nakagawa ng malalaking pagbabago tulad ng pag-mount ng strip sa mga dingding, kaya pinagsama ko ang lampara na ito isang solong kawad na lalabas para sa lakas at maaaring maging plac
Mood Speaker- isang Napakahusay na Tagapagsalita para sa Musika ng Mood na Patugtugin Batay sa Saklaw na Temperatura: 9 Mga Hakbang
Mood Speaker- isang Napakahusay na Tagapagsalita para sa Musika ng Mood na I-play Batay sa Saklaw na Temperatura: Hoy! Para sa aking proyekto sa paaralan sa MCT Howest Kortrijk, gumawa ako ng Mood Speaker ito ay isang matalinong aparato ng Bluetooth speaker na may iba't ibang mga sensor, isang LCD at WS2812b Kasama ang ledstrip. Nagpe-play ang speaker ng musikang background batay sa temperatura ngunit maaari
DIY LED Light - Modern Desktop Mood Lamp na May Remote: 8 Hakbang (na may Mga Larawan)
DIY LED Light - Modern Desktop Mood Lamp Na May Remote: Sa artikulong ito ay tatalakayin ko ang proseso na ginamit ko upang maitayo ang kahanga-hangang pyramid na hugis LED Mood Lamp. Gumamit ako ng maple para sa pangunahing istraktura at ilang mga mahogany spines para sa karagdagang lakas. Para sa mga ilaw ginamit ko ang mga ilaw na RGB LED na dumating sa isang 16 talampakan