Mundarija:
- 1 -qadam: Elektrondan boshlash
- 2 -qadam: mexanikni yaratish
- 3 -qadam: Dasturiy ta'minot - asoslari
- 4 -qadam: dasturiy ta'minot - dastur tushunchasi
- 5 -qadam: dasturiy ta'minot - ilovalar
- 6 -qadam: Twitch kengaytmasi orqali boshqarish
- 7 -qadam: Nintendo NES Controller tomonidan nazorat
Video: PixelWall: 7 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Pixel-Table loyihasini bilasizmi? Menda bunday pikselli narsani amalga oshirish fikri bor edi, lekin uni stol sifatida emas, balki devorga qo'yish.
Shunday qilib, men divanda yotib, dam olayotganimda uning ustida o'yin o'ynay olaman.:)
Amalga oshiriladigan o'yinlar:
- Tetris
- Kosmik bosqinchilar
- Ilon
- Pixel Draw
qo'shimcha funktsiyalar:
- Joriy vaqtni ko'rsatish
- Rangli animatsiyalarni ko'rsatish
PixelWall-da ESP8266 bor, shuning uchun u mening uyim-WLAN-ga ulanishi mumkin. Ammo, shuningdek, PixelWall -ni kirish nuqtasi sifatida ishlatish va unga to'g'ridan -to'g'ri ulanish mumkin.
PixelWall -dan foydalanishni osonlashtirish uchun devor ulanganidan keyin nazorat qilish uchun veb -saytni taqdim etadi. Barcha ilovalar veb -sahifa orqali boshqarilishi/ijro etilishi mumkin. Shuning uchun foydalanish uchun hech qanday dasturiy ta'minotni o'rnatish shart emas.
Bundan tashqari, o'yinlarni o'ynashni osonlashtiradigan NES boshqaruvchisi mavjud.
Ochiq manba
Men github -ga qo'ygan barcha dasturiy ta'minot va mexanik chizmalar: https://github.com/C3MA/PixelWallFeel, o'z loyihangiz uchun ishlatishdan xursand bo'ling.
1 -qadam: Elektrondan boshlash
Boshqa loyihada WS2812 LEDli mavjud PCB mavjud. PCB 3 qatordan iborat bo'lib, har bir satrda 12 ta LED mavjud.
Men bu tenglikni 6 marta ishlatishga qaror qildim. Shunday qilib, men 12x18 LED matritsasini olaman.
Birinchi qadam barcha 216 LEDni, 100 ga yaqin kondansatörni va ESP8266 ni lehimlash edi.
Qo'lda lehimlash uchun taxminan 10 soat kerak bo'ladi.
Birinchi tezkor sinovdan so'ng, hamma narsa aniq ekanligini aniqladi.
Shunday qilib, biz mexanik qismga o'tishimiz mumkin.
2 -qadam: mexanikni yaratish
Birinchidan, har bir piksel uchun alohida ajratgich kerak. Fikr gorizontal va vertikal chiziqni V-kesma orqali birlashtirish.
Har bir bantning qalinligi 3 mm va balandligi 17 mm. Ular HDF plastinkasidan lazer yordamida kesiladi.
Lazer kesgichning barcha sketchlari FreeCad -da chizilgan (github loyihasining mexanik papkasida "Leiste" nomi berilgan)
Tarmoq PCB tartibi bilan berilgan. Ustun kengligi 28 mm va qator balandligi 31 mm.
Keyingi savol: PCB tasmalarini qanday tuzatish kerak? Yelimlash unchalik yaxshi emas, chunki agar biror narsa nuqsonli bo'lsa, demontaj qilish mumkin. Shuning uchun men uni buzishga qaror qildim. Ammo vida 3 mm yupqa tasmani ajratib qo'yadi. Shunday qilib, men 3D printer bilan guruh uchun cho'ntak chop etdim (bu github loyihasida "Halter" deb nomlangan qism). Bu ularni PCBda tuzatish uchun juda yaxshi ishladi.
Keyingi qadam - buning uchun ramka olish. Ba'zi onlayn -do'konlar individual rasm ramkalarini kesishni taklif qilishadi. Shunday qilib, men 343 mm x 565 mm o'lchamdagi ramka buyurtma qildim.
Ramka pastki qismida quvvat manbai uchun qo'shimcha teshik oladi.
Men pleksiglas old plastinkasini ham onlayn buyurtma qildim. Bu WN770 opal Milchglasoptik LD45% hajmi: 567x344x2mm
Shaffofligi 45%ni tashkil qiladi.
Barcha qismlarni ramkaga birlashtirish.
Oxirida, orqa tomondan bir nechta chiziqlar vidalanadi, shunda hamma narsa tuzatiladi va tushmaydi.
PixelWall -ni hech qanday WLAN aloqasi bo'lmagan holda ishlash imkoniyatiga ega bo'lish uchun men ixtiyoriy ravishda ramkaning o'ng tomoniga o'rnatiladigan (github loyihasida "Bedieneinheit" deb nomlanadigan) ulanadigan boshqaruv panelini yaratdim.
3 -qadam: Dasturiy ta'minot - asoslari
Qulay vaziyatlardan biri bu PixelWall -da o'yin o'ynash.
Ammo pikselli o'yin yozish uchun har doim foydali disk raskadrovka muhiti kerak bo'ladi. Men ESP8266 tekshirgichini mos ravishda disk raskadrovka qilishni bilmayman. Shunday qilib, men butun kompyuterni simulyatsiya qilishga qaror qildim. ESP kodi Arduino C ++ da yozilgan, shuning uchun men kompyuterda simulyatsiya qilish uchun Visual Studio C ++/CLI tilidan foydalanardim. Standart C ++ va C ++/CLI tili o'rtasida ba'zi farqlar mavjud. Masalan, C ++/CLI -da siz String tipidagi ob'ektni yarata olmaysiz, axlat yig'ish tufayli bunday ob'ektga ob'ekt yoki mos yozuvlar/ko'rsatgich yaratishga ruxsat berilmaydi. C ++/CLI -da siz tutqichlardan foydalanishingiz kerak: String^. Ammo bunday tutqichlar C ++ standartida mavjud emas edi. Shunday qilib, men ikkala dunyoni birlashtirish uchun ijodkor bo'lishim kerak edi. Men buni simulyatsiya uchun o'z Arduino.h faylini yaratish orqali hal qildim. Bu fayl simulyatsiyada "#define String String^" ta'rifi orqali barcha satrlarni bekor qiladi. Bu keng tarqalgan usul emas, lekin u ishlaydi:) Ba'zi kichik kompilyatorlardan tashqari, barcha ESP kodlari Visual Studio C ++/CLIda kompilyatsiya qilinganidan ko'ra.
LED matritsasi
Men yozgan birinchi sinf-LED-matritsa klassi. Bu sinf WS2812 LEDlarini boshqarish va xaritalash bilan shug'ullanadi.
Bu sinf ikki marta yozilgan: bir marta ESP8266 tekshirgichi (LEDMatrixArduino.cpp) uchun, ikkinchisi esa simulyatsiyada GUI formasidagi shakllarni boshqaradi (LEDMatrixGUI.cpp).
Bu sinf alohida LEDni ustun va satr orqali sozlash va tozalashning ba'zi asosiy usullarini taqdim etadi.
Bundan tashqari, u setBrightness funktsiyasini ta'minlaydi. Agar LED o'rnatilgan bo'lsa, bu qiymat hisobga olinadi. Shunday qilib, barcha LED-buyruqlar to'liq nashrida bajarilishi mumkin. Masalan: Agar nashrida 50% ga o'rnatilsa va setLed () funktsiyasi RGBColor (255, 255, 255) bilan chaqirilsa, u LEDni 127, 127, 127 ga o'rnatadi.
LED paneli
LED Matrix sinfining yuqori qismiga men LED panelli sinf qo'ydim. Bu sinf har qanday dastur uchun foydali funktsiyalarni taqdim etadi. U ikkita mustaqil qatlamni ta'minlaydi. Bu dastur uchun foydali bo'lishi mumkin. Masalan, tetris o'yinida: 0 -qavat pastki qismidagi toshlar uchun, 1 -qavat esa tushayotgan toshni ko'rsatish uchun. Shunday qilib, toshning har bir tsikli pastga bir piksel pastga tushadi, dastur faqat 1 -qatlamni tozalab, toshni yangi joyiga chizishi mumkin. Pastki qismidagi barcha toshlarni qayta chizish shart emas.
Bundan tashqari, panel taqdim etadi
printImage - tabassumlar yoki WLAN belgisi kabi ba'zi belgilarni chop etish uchun raqamli raqamli raqam - ma'lum bir pozitsiyada bitta raqamni chop etish uchun Formatlangan raqam - zerosprint sonli prefiksli raqamni chop etish uchun - tamsayı sonini chop etish uchun chiziqli chiziq - ma'lum uzunlikdagi gorizontal chiziqLineV - ma'lum uzunlikdagi gorizontal chiziq.
4 -qadam: dasturiy ta'minot - dastur tushunchasi
Pixel Wall uchun umumiy tushuncha:
- Har bir dastur o'z nomiga ega
- Ilova pixelWall URL manzilini, shu jumladan dastur nomini chaqirish orqali boshlanadi (masalan: 192.168.4.1/tetris)
- Shuningdek, URLda GET parametrlari bo'lishi mumkin, ular ilovaga yuboriladi
- Har bir dastur brauzerda ko'rsatiladigan veb -saytni taqdim etishi kerak.
- Ushbu veb -sayt ixtiyoriy ravishda tezkor o'zaro ta'sir qilish uchun ilovaga veb -ulanishni ochishi mumkin
- Ilova ushbu veb -tarmoq ulanishidan veb -frontendga qayta bog'lanish uchun foydalanishi mumkin.
- Veb -interfeysdan tashqari, dastur qo'shimcha ravishda boshqaruv paneli va NES kontrolleridan tugmachali hodisalarni oladi.
Dastur interfeysi
PixelWall uchun yangi ilovalarni ishlab chiqishni osonlashtirish uchun men "IPixelApp.h" nomli ilovalar uchun interfeys yaratdim. Ushbu interfeys 8 ta ta'rifni o'z ichiga oladi:
- virtual bo'shliqni boshlash () = 0;
- virtual bo'shliq oxiri () = 0;
- virtual bo'shliq pastadir () = 0;
- newWebsocketData virtual bo'shliq (uint8_t * yuk, hajmi_t uzunligi) = 0;
- virtual WebsiteResponse_t getWebsiteResponse (String parametri) = 0;
- virtual bo'sh tugmaEvent () = 0;
- virtual bo'shliq timerTick () = 0;
- virtual String getName () = 0;
start / end - bu funksiya, agar dastur ishga tushsa / tugasa, boshqa dastur ishga tushgani uchun chaqiriladi
pastadir - bu funksiya asosiy dasturning asosiy tsiklidan chaqiriladi. Bu qo'ng'iroq tartibsiz va uzilishdan tashqarida.
newWebsocketData - agar veb -frontend ma'lumot yuborgan bo'lsa, bu funksiya chaqiriladi.
getWebsiteResponse - bu asosiy dastur tomonidan so'rovga javob beradigan veb -sahifani olish uchun ishlatiladi.
buttonEvent - bu boshqaruv panelidagi biron bir tugma bosilgan yoki qo'yib yuborilgan bo'lsa chaqiriladi.
timerTick - bu funksiya har 10ms deb ataladi, bu taymerning uzilishidan kelib chiqadi. U vaqt bazasi uchun ishlatilishi mumkin, lekin vaqtni talab qiladigan narsalarni o'z ichiga olmaydi, chunki bu uzilishli kontekst.
getName - bu URL uchun dastur nomini qaytarishi kerak
5 -qadam: dasturiy ta'minot - ilovalar
Quyidagi 7 ta ilova joriy versiyada amalga oshiriladi:
Standart ilova
Bu PixelWall -ning hozirgi WLAN holatini ko'rsatadigan maxsus dastur. Agar devor hozirgi WLAN -ga ulana oladigan bo'lsa, u tarmoqdan olgan IP -manzilini ko'rsatadi.
Agar buning iloji bo'lmasa (ssid sozlanmagan yoki WLAN mavjud bo'lmasa yoki parol noto'g'ri bo'lsa), u kirish nuqtasini ochadi. Bunday holda siz PixelWall -ga ESP8266 standart kirish nuqtasi IP orqali ulanishingiz mumkin: 192.168.4.1
Veb -interfeysda ushbu ilova 6 ta tugmachani taqdim etadi. Tugmani bosish bilan siz tegishli ilovani ishga tushirishingiz mumkin.
Sozlamalar ilovasi
Bu ilova WLAN SSID va parolni sozlash uchun. Faqat WLAN ma'lumotlarini kiriting va PixelWill -ning keyingi boshlanishida u ushbu WLAN -ga ulanishga harakat qiladi.
O'yinlar
PixelWall -da uchta klassik o'yinlar dasturlashtirilgan:
- Tetris
- Ilon
- Kosmik bosqinchilar
Barcha o'yinlarni veb -interfeys orqali yoki NES boshqaruvchisi bilan o'ynash mumkin.
Rasm ilovasi
Bu PixelWall -da ranglarni ko'rsatadigan dastur. Siz tanlashingiz mumkin, bu kamalakning harakatlanishi, turli xil ranglarning so'nishi, statik rangni ko'rsatish yoki tasodifiy rangli piksellarni ko'rsatish.
Bu piksel
Ushbu ilova yordamida barmog'ingiz bilan veb -interfeysga tegib, har bir pikselni alohida belgilashingiz mumkin. Shunday qilib, siz chiroyli rasmlarni chizishingiz mumkin:)
6 -qadam: Twitch kengaytmasi orqali boshqarish
Twitch -da GetInTouch nomli kengaytma mavjud. Bu kengaytma tomoshabinlar sizning arduino -ni oqim paytida boshqarishi uchun Arduino loyihalarini sizning jonli translyatsiyangizga qo'shishga imkon beradi.
Buning uchun Arduino kutubxonasi Arduinos uchun yozilgan. Ma'lum bo'lishicha, u ESP8266 da ishlaydi.
Uni oqimda ishlatish uchun quyidagi amallarni bajarish kerak:
- GetInTouch kutubxonasini kodga birlashtirish (qo'llanmani ko'ring)
- PixelWall -ni kompyuteringizga USB/RS232 konvertori orqali ulang (bu ESP -ni o'chirish uchun ham ishlatiladi)
- GetInTouch ilovasini saytdan o'rnating
- GetInTouch kengaytmasini Twitch kanalingizga o'rnating (qo'llanmani ko'ring)
7 -qadam: Nintendo NES Controller tomonidan nazorat
Bir muncha vaqt ishlatilgandan so'ng, sensorli mobil telefonda o'ynash unchalik oson emasligi ma'lum bo'ldi. Vaqti -vaqti bilan tugmachalarni o'tkazib yuborasiz, chunki siz tugmani bosib turasizmi yoki yo'qmi, barmog'ingiz haqida hech qanday fikr bildirmaysiz.
Shuning uchun men eski Nintendo NES boshqaruvini sotib olishga qaror qildim. Bu boshqaruvchi juda oddiy interfeysga ega. Bu 3, 3V bilan ishlaydigan 4021 smenali registr. Shunday qilib, uni to'g'ridan -to'g'ri ESP8266 ga ulash mumkin.
Butun voqealar tugmachasi () funktsiyasi orqali ishlaydigan ilovaga yuboriladigan tekshirgichdagi tugmalar.
Tavsiya:
Batareya bilan ishlaydigan ofis. Quyosh panellari va shamol turbinasi: Sharq/G'arbni avtomatik almashtirish bilan quyosh tizimi: 11 qadam (rasmlar bilan)
Batareya bilan ishlaydigan ofis. Quyosh tizimi Sharq/G'arbning avtomatik panellari va shamol turbinasi bilan almashinuvi bilan: Loyiha: 200 kvadrat metrli ofis batareyali bo'lishi kerak. Ofis, shuningdek, ushbu tizim uchun zarur bo'lgan barcha tekshirgichlar, batareyalar va komponentlarni o'z ichiga olishi kerak. Quyosh va shamol energiyasi batareyalarni zaryad qiladi. Faqat kichik muammo bor
NaTaLia ob -havo stantsiyasi: Arduino quyosh energiyasi bilan ishlaydigan ob -havo stantsiyasi to'g'ri yo'l bilan amalga oshirildi: 8 qadam (rasmlar bilan)
NaTaLia ob -havo stantsiyasi: Arduino quyosh energiyasi bilan ishlaydigan ob -havo stantsiyasi to'g'ri yo'lga qo'yildi: 1 yil davomida 2 xil joyda muvaffaqiyatli ishlaganimdan so'ng, men quyosh energiyasi bilan ishlaydigan ob -havo stantsiyasining loyiha rejalari bilan bo'lishaman va uning qanday qilib uzoq vaqt yashay oladigan tizimga aylanganini tushuntiraman. quyosh energiyasidan o'tgan davrlar. Agar ergashsangiz
Twinky bilan eng zo'r Arduino robot bilan tanishing: 7 qadam (rasmlar bilan)
Twinky bilan eng zo'r Arduino roboti bilan tanishing: Salom, men sizga "Jibo" ni o'zim qanday yaratganimni o'rgataman. lekin "Twinky" deb nomlangan, men buni ochib bermoqchiman … Bu nusxa emas! Men ikkiyuzlamachilik bilan qurardim va shundan keyingina shunga o'xshash narsaning mavjudligini tushundim: bu erda
OpenLH: Biologiya bilan ijodiy tajriba o'tkazish uchun ochiq suyuqlik bilan ishlash tizimi: 9 qadam (rasmlar bilan)
OpenLH: Biologiya bilan ijodiy eksperimentlar uchun ochiq suyuqlik bilan ishlash tizimi: Biz bu ishni moddiy, ko'milgan va mujassamlangan o'zaro ta'sir xalqaro konferentsiyasida (TEI 2019) taqdim etganimizdan faxrlanamiz. Tempe, Arizona, AQSh | 17-20 mart. Hamma yig'ish fayllari va qo'llanmalar bu erda mavjud. Oxirgi kod versiyasi
Vaqt o'tishi bilan rasmlar uchun kamera osonlashtirildi: 22 qadam (rasmlar bilan)
Vaqt o'tishi bilan suratga olish uchun kamera osonlashtirildi. Men boshqa ko'rsatmalarni vaqtni tez suratga olish filmlarini suratga olishni tekshirib ko'rdim. U kino qismini juda yaxshi yoritgan. U filmlar yaratish uchun yuklab olishingiz mumkin bo'lgan bepul dasturiy ta'minot haqida gapirib berdi. Men o'z -o'zimga aytdim, men o'ylaymanki, agar men qila olsam