Мазмуну:
- 1 -кадам: Электрондук менен баштоо
- 2 -кадам: Механикти түзүү
- 3 -кадам: Программалык камсыздоо - Негиздери
- 4 -кадам: Программалык камсыздоо - Колдонмо Концепциясы
- 5 -кадам: Программалык камсыздоо - Тиркемелер
- 6 -кадам: Twitch Extension аркылуу көзөмөлдөө
- 7 -кадам: Nintendo NES Controller тарабынан көзөмөл
Video: PixelWall: 7 кадам (Сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Сиз Pixel-Table долбоорун билесизби? Менде мындай пикселдик нерсени ишке ашыруу идеясы бар болчу, бирок аны столго эмес, дубалга орнотуу.
Мен диванда жатып, эс алып жатып анын үстүндө оюн ойной алам.:)
Ишке ашырылган оюндар:
- Тетрис
- Space Invaders
- Snake
- Pixel Draw
кошумча функциялар болуп төмөнкүлөр саналат:
- Учурдагы убакытты көрсөтүү
- Түс анимацияларын көрсөтүү
PixelWallда ESP8266 бар, ошондуктан ал менин үйүмө WLANга туташа алат. Бирок PixelWallды кирүү чекити катары колдонууга жана ага түз туташууга да болот.
Менин PixelWall колдонууну оңой кылуу үчүн, дубал туташкандан кийин көзөмөлдөө үчүн веб -сайтты жеткирет. Бардык колдонмолор веб -баракча аркылуу башкарылат/ойнотулат. Андыктан колдонуу үчүн кандайдыр бир программаны орнотуунун кажети жок.
Кошумча NES контролери бар, ал оюндарды ойнотууну жеңилдетет.
Ачык булак
Мен githubга койгон бардык программалык камсыздоо жана механикалык чиймелер: https://github.com/C3MA/PixelWallFeel free to use its own project.
1 -кадам: Электрондук менен баштоо
Башка долбоордон WS2812 светодиоддору бар болгон PCB бар. ПХБда 3 катар бар, ар бир катарда 12 LED бар.
Мен бул ПКБны 6 жолу колдонууну чечтим. Ошентип, мен 12x18 LED матрицасын алам.
Биринчи кадам бардык 216 LEDди, болжол менен 100 конденсаторду жана ESP8266 ширетүү болду.
Кол менен ширетүү 10 саатка жакын убакытты талап кылган.
Биринчи тез тесттен кийин түшүндүм: баары иштеп жатат.
Ошентип, биз механикалык бөлүккө бара алабыз.
2 -кадам: Механикти түзүү
Биринчиден, бизге ар бир пиксел үчүн өзүнчө бөлмө керек. Идея V-кесип аркылуу горизонталдык жана вертикалдык диапазонду бириктирүү.
Ар бир топтун калыңдыгы 3 мм жана бийиктиги 17 мм. Алар HDF пластинасынан лазер менен кесилет.
Ласктер үчүн бардык эскиздер FreeCadда тартылган (github долбоорунун механикалык папкасында "Leiste" деп аталган)
Тор ПКБнын жайгашуусу менен берилет. Анын туурасы 28мм жана бийиктиги 31мм.
Кийинки суроо: ПХБдагы тилкелерди кантип оңдоо керек? Желимдөө анчалык деле жакшы идея эмес, анткени эгерде кандайдыр бир кемчилик болсо, аны ажыратуу мүмкүн. Ошентип, мен аны бузууну чечтим. Бирок бурама 3 мм жука тилкени бөлүп салат. Ошентип, мен 3D принтер менен топтун чөнтөгүн басып чыгардым (бул github долбоорунда "Halter" деп аталган бөлүк). Бул аларды PCBде оңдоо үчүн абдан жакшы иштеген.
Кийинки кадам - бул үчүн алкак алуу. Кээ бир онлайн дүкөндөр бар, алар жеке сүрөт жээкчелерин кесүүнү сунушташат. Ошентип, мен 343мм х 565мм өлчөмдөгү кадрга заказ кылдым.
Рамка ылдый жагында электр менен камсыздоо үчүн кошумча тешик алат.
Плексиглас алдыңкы плитасы мен дагы интернеттен заказ кылдым. Бул WN770 опал Milchglasoptik LD45% өлчөмү: 567x344x2mm
Анын тунуктугу 45%ды түзөт.
Бардык бөлүктөрдү кадрга бириктирүү.
Акыр -аягы, баары оңдолуп, түшүп кетпеши үчүн, арткы жагына бир нече тилкелер сайылат.
Эч кандай WLAN байланышы жок pixelWallдын иштөө мүмкүнчүлүгүнө ээ болуу үчүн, мен фреймдин оң жагына (github долбоорунда "Bedieneinheit" деп аталат) кошулуучу башкарылуучу панелди түздүм.
3 -кадам: Программалык камсыздоо - Негиздери
Колдонуунун бир жолу - PixelWallда оюндарды ойноо.
Бирок пикселдик оюн жазуу үчүн ар дайым пайдалуу мүчүлүштүктөрдү оңдоо чөйрөсү керек болот. Мен ESP8266 контроллерин туура жол менен мүчүлүштүктөрдү чыгаруунун кандай жолун билбейм. Ошентип, мен компьютердеги бүт кодду окшоштурууну чечтим. ESP коду Arduino C ++ тилинде жазылган, ошондуктан мен компьютердеги симуляция үчүн Visual Studio C ++/CLI тилин колдондум. Стандарттык C ++ менен C ++/CLI тилинин ортосунда айрым айырмачылыктар бар. Мисалы, C ++/CLIде String түрүндөгү объектти түзө албайсыз, таштандыларды чогултууга байланыштуу мындай объектке объект же шилтеме/көрсөткүчтү түзүүгө жол берилбейт. C ++/CLIде сиз туткаларды колдонушуңуз керек: String^. Бирок мындай туткалар C ++ стандартында болгон эмес. Ошентип, эки дүйнөнү бириктирүү үчүн чыгармачыл болушум керек болчу. Мен муну симуляция үчүн жеке Arduino.h файлын түзүү менен чечтим. Бул файл симуляцияда бардык саптарды "#define String String^" аныктамасы аркылуу жокко чыгарат. Бул жалпы жол эмес, бирок ал иштейт:) Кээ бир кичинекей компиляторлордон башка бардык ESP коддору Visual Studio C ++/CLIде компиляцияланат.
LED Matrix
Мен жазган биринчи класс LED-Matrix класс. Бул класс WS2812 светодиоддорун көзөмөлдөөнү жана карта түзүүнү карайт.
Бул класс эки жолу жазылган: бир жолу ESP8266 контроллери үчүн (LEDMatrixArduino.cpp) жана симуляциядагы Form GUIдеги фигураларды башкара турган дагы бирөө (LEDMatrixGUI.cpp).
Бул класс жеке LED диапазонун орнотуу жана тазалоо үчүн кээ бир негизги ыкмаларды берет.
Мындан тышкары, ал setBrightness функциясын камсыз кылат. Бул көрсөткүч LED коюлса каралат. Ошентип, бардык LED орнотулган буйруктар толук жарыктыкта аткарылышы мүмкүн. Мисалы: Жарыктык 50% га коюлса жана setLed () функциясы RGBColor (255, 255, 255) менен чакырылган болсо, анда LEDди 127, 127, 127ге коёт.
LED панели
LED Matrix классынын үстүнө мен LED Panel классын койдум. Бул класс каалаган тиркеме үчүн пайдалуу функцияларды камсыз кылат. Бул эки көз карандысыз катмарды камсыз кылат. Бул колдонмо үчүн пайдалуу болушу мүмкүн. Мисалы, тетрис оюнунда: layer0 астындагы бекитилген таштар үчүн, ал эми layer1 - түшкөн ташты көрсөтүү. Ошентип, ар бир цикл таш бир пикселдин түбүнө түшөт, тиркеме 1 катмарын тазалап, ташты жаңы абалына тарта алат. Анын түбүндөгү бардык бекитилген таштарды кайра тартуунун кажети жок.
Кошумча панель камсыз кылат
printImage - смайликтер же WLAN символу сыяктуу кээ бир сүрөтчөлөрдү басып чыгарууDigit - белгилүү бир позицияда бир цифраны басып чыгарууFormatedNumber - префикстери бар сандарды басуу zerosprintNumber - бүтүн санды басып чыгарууLineH - горизонталдык конкреттүү узундуктаLineV - белгилүү узундуктагы горизонталдык сызык
4 -кадам: Программалык камсыздоо - Колдонмо Концепциясы
Пиксел дубалынын жалпы түшүнүгү:
- Ар бир колдонмонун өзүнүн аты бар
- Колдонмо pixelWall URL дарегине, анын ичинде колдонмонун атына баштоо менен башталат (мисалы: 192.168.4.1/tetris)
- URL ошондой эле GET параметрлерине ээ болушу мүмкүн, алар колдонмого жөнөтүлөт
- Ар бир колдонмо браузерде көрсөтүлгөн веб -сайтты жеткириши керек.
- Бул веб -сайт ыктыярдуу түрдө тез аракеттенүү үчүн колдонмого вебсокет туташуусун ача алат
- Колдонмо бул вебсокет туташуусун кайра веб фронт менен байланышуу үчүн колдоно алат.
- Веб -интерфейстен тышкары, колдонмо башкаруу панелинен жана NES контроллеринен кошумча баскычтарды алат.
Колдонмо интерфейси
PixelWall үчүн жаңы тиркемелерди иштеп чыгууну жеңилдетүү үчүн, мен "IPixelApp.h" аттуу тиркемелер үчүн интерфейс түздүм. Бул интерфейс 8 аныктаманы камтыйт:
- виртуалдык боштук баштоо () = 0;
- virtual void end () = 0;
- virtual void loop () = 0;
- newWebsocketData виртуалдык жараксыздыгы (uint8_t * жүгүн, size_t узундугун) = 0;
- виртуалдык WebsiteResponse_t getWebsiteResponse (String parameter) = 0;
- Virtual void buttonEvent () = 0;
- виртуалдык боштук timerTick () = 0;
- виртуалдык String getName () = 0;
баштоо / аяктоо - бул функция, эгерде тиркеме башталса / бүтсө, чакырылат, анткени башка тиркеме башталат
цикл - бул функция негизги программанын башкы циклинен чакырылат. Бул чалуу жөнсүз жана үзгүлтүктөн тышкары.
newWebsocketData - бул функция веб -фронтто маалыматтарды жөнөтсө чакырылат.
getWebsiteResponse - бул башкы программа тарабынан веб -баракчаны алуу үчүн колдонулат, ал суроо -талапка жооп бериши керек.
buttonEvent - бул башкаруу панелиндеги кандайдыр бир баскыч басылганда же бошотулганда чакырылат.
timerTick - бул функция ар бир 10ms деп аталат, таймердин үзгүлтүккө учурашынан улам. Бул убакыт базасы үчүн колдонулушу мүмкүн, бирок эч кандай интенсивдүү нерселерди камтыбашы керек, анткени анын үзгүлтүккө учуроочу контексти.
getName - бул URL үчүн колдонмонун атын кайтарышы керек
5 -кадам: Программалык камсыздоо - Тиркемелер
Төмөнкү 7 колдонмо учурдагы версияда ишке ашырылат:
Демейки колдонмо
Бул PixelWallдын учурдагы WLAN абалын көрсөтүүчү атайын колдонмо. Эгерде дубал азыркы WLANга туташа алса, анда ал тармактан алган IP дарегин көрсөтөт.
Эгер бул мүмкүн болбосо (ssid орнотулбаган же WLAN жок болсо же сырсөз туура эмес болсо), ал Accesspoint ачат. Бул учурда сиз PixelWallга ESP8266дан демейки Accesspoint IP аркылуу туташа аласыз: 192.168.4.1
Желе интерфейсинде бул колдонмо 6 баскычты сунуштайт. Баскычты басуу менен сиз тийиштүү Колдонмону баштай аласыз.
Орнотуулар колдонмосу
Бул WLAN SSID жана паролду орнотуу үчүн колдонмо. Жөн гана WLANыңыздын грамоталарын киргизиңиз жана PixelWillдин кийинки башталышында бул WLANга туташууга аракет кылат.
Оюндар
PixelWallда программаланган үч классикалык оюн бар:
- Тетрис
- Snake
- Space Invaders
Бардык оюндарды веб -интерфейс же NES контроллери аркылуу ойнотсо болот.
Сүрөт колдонмосу
Бул PixelWallда түстөрдү көрсөтүүчү колдонмо. Сиз жылып турган асан -үсөн болобу, ар кандай түстөр өчүп баратабы, статикалык түстү көрсөтөбү же жөн эле туш келди түстүү пикселдерди көрсөтө аласызбы, тандай аласыз.
Pixel It
Бул колдонмо менен сиз Webinterface манжаңыз менен таптап, ар бир пикселди өзүнчө орното аласыз. Ошентип, сиз кээ бир кооз сүрөттөрдү тарта аласыз:)
6 -кадам: Twitch Extension аркылуу көзөмөлдөө
Twitchте GetInTouch аттуу кеңейтүү бар. Бул кеңейтүү Arduino долбоорлорун жандуу агымга интеграциялоого мүмкүндүк берет, ошондо көрүүчүлөр агым учурунда сиздин ардуинону башкара алышат.
Бул үчүн Arduino китепканасы Arduinos үчүн жазылган. Бирок ал ESP8266 менен да иштээри белгилүү болду.
Аны Агымда колдонуу үчүн төмөнкү кадамдар керек:
- GetInTouch китепканасын кодго интеграциялоо (окуу куралын караңыз)
- PixelWall'ды компьютериңизге USB/RS232 конвертери аркылуу туташтырыңыз (бул ESPти күйгүзүү үчүн дагы колдонулат)
- GetInTouch тиркемесин веб -сайттан орнотуңуз
- GetInTouch кеңейтүүсүн Twitch каналыңызга орнотуңуз (окуу куралын караңыз)
7 -кадам: Nintendo NES Controller тарабынан көзөмөл
Бир аз колдонгондон кийин, уюлдук телефондо ойноо оңой эмес экени көрүнүп турат. Мезгил -мезгили менен сиз баскычтарды сагынып каласыз, анткени сиз баскычтын үстүндө же жокпуңуз, бирок манжаңызда эч кандай пикир жок.
Ошондуктан мен эски Nintendo NES контроллерин сатып алууну чечтим. Бул контроллер абдан жөнөкөй интерфейске ээ. Бул жөн эле 4021 нөөмөт реестри, ал 3, 3V менен иштейт. Ошентип, аны ESP8266 менен түз байланыштырса болот.
ButtonEvent () функциясы аркылуу иштеп жаткан колдонмого жөнөтүлгөн контроллердеги бардык баскыч окуялары.
Сунушталууда:
Батарея менен иштөөчү LED Light (s) Solar Charging менен: 11 кадам (Сүрөттөр менен)
Батарея менен иштөөчү LED Жарыгы (лары) Күндүн кубаттуулугу менен: Аялым самын жасоону үйрөтөт, анын сабактарынын көбү кечинде болчу, кышында бул жерде саат 16:30 чамасында караңгы кирип калат, анын кээ бир окуучулары бизди табууда кыйналышкан. үй Бизде маңдайкы жазуу бар болчу, бирок көчө лигасы менен да
Батарея менен иштеген офис. Күн системасы Чыгыш/Батыш Күн панелдери жана шамал турбинасы менен: 11 кадам (Сүрөттөр менен)
Батарея менен иштеген офис. Күн системасы Чыгыш/Батыш Күн панелдери жана шамал турбинасы менен которулат: Долбоор: 200 чарчы фут офис батарея менен иштеши керек. Офис ошондой эле бул система үчүн зарыл болгон бардык контроллерлерди, батареяларды жана компоненттерди камтышы керек. Күн жана шамал энергиясы батареяларды заряддайт. Кичине гана көйгөй бар
Howto: Rpi-imager жана сүрөттөр менен Raspberry PI 4 Headless (VNC) орнотуу: 7 кадам (Сүрөттөр менен)
Howto: Rpi-imager жана сүрөттөр менен Raspberry PI 4 Headless (VNC) орнотуу: Мен бул блогумда кызыктуу долбоорлордун топтомунда бул Rapsberry PI колдонууну пландап жатам. Аны текшерүүдөн тартынбаңыз. Мен Raspberry PIди колдонууну каалагам, бирок жаңы жерде клавиатура же чычкан жок болчу. Мен Raspberry орнотконума бир топ убакыт болду
Battle City Remake GameGo менен Makecode Arcade менен: 4 кадам (сүрөттөр менен)
Battle City Remake GameGo менен Makecode Arcade: GameGo - бул TinkerGen STEM билим берүү тарабынан иштелип чыккан Microsoft Makecode менен шайкеш ретро оюн портативдик консолу. Бул STM32F401RET6 ARM Cortex M4 чипине негизделген жана STEM педагогдоруна же жөн эле ретро видео түзүүнү жакшы көргөн адамдар үчүн жасалган
Жөнөкөй кадамдар жана сүрөттөр менен компьютерди кантип ажыратуу керек: 13 кадам (сүрөттөр менен)
Жөнөкөй кадамдар жана сүрөттөр менен компьютерди кантип ажыратуу керек: Бул компьютерди кантип ажыратуу керектиги жөнүндө көрсөтмө. Негизги компоненттердин көбү модулдук жана оңой эле алынып салынат. Ошентсе да, бул боюнча уюштуруу маанилүү. Бул сизди бөлүктөрдү жоготпоого, ошондой эле кайра чогултууга жардам берет