Мазмуну:

LightMeUp! реалдуу убакытта кросс-платформалуу LED Strip Control: 5 кадам (сүрөттөр менен)
LightMeUp! реалдуу убакытта кросс-платформалуу LED Strip Control: 5 кадам (сүрөттөр менен)

Video: LightMeUp! реалдуу убакытта кросс-платформалуу LED Strip Control: 5 кадам (сүрөттөр менен)

Video: LightMeUp! реалдуу убакытта кросс-платформалуу LED Strip Control: 5 кадам (сүрөттөр менен)
Video: ЭСКИ ҮЙДӨГҮ ЧЫНЫГЫ ЖИН! ЖИН МЕНЕН ЭСКИ ҮЙДӨГҮ ТҮН! 2024, Июль
Anonim
LightMeUp! реалдуу убакытта кайчылаш платформалуу LED Strip Control
LightMeUp! реалдуу убакытта кайчылаш платформалуу LED Strip Control
LightMeUp! реалдуу убакытта кайчылаш платформалуу LED Strip Control
LightMeUp! реалдуу убакытта кайчылаш платформалуу LED Strip Control
LightMeUp! реалдуу убакытта кайчылаш платформалуу LED Strip Control
LightMeUp! реалдуу убакытта кайчылаш платформалуу LED Strip Control

LightMeUp! Мен RGB LED-Stripти реалдуу убакытта көзөмөлдөө үчүн ойлоп тапкан система, ал эми чыгымдын төмөндүгүн жана иштин жогорку деңгээлин сактап турат.

Сервер Node.js тилинде жазылган жана ошол себептен кайчылаш платформа.

Менин мисалда, мен Raspberry Pi 3Bди узак мөөнөттүү колдонуу үчүн колдоном, бирок менин Windows компьютерим демонстрация жана мүчүлүштүктөрдү оңдоо үчүн.

4pin-тилкеси Arduino Nano типтеги тактасы тарабынан көзөмөлдөнөт, ал сериялык берилген буйруктарды аткарат, PWM сигналдарын +12VDCди тилкенин тиешелүү түстүү пинине которгон үч транзисторго жөнөтөт.

LightMeUp! система ошондой эле өзүнүн температурасын текшерет, 60 ° C (140 ° F) жогору болгондон кийин, схеманын иштөө мөөнөтүн жакшыртуу үчүн өзүн муздатуу үчүн корпуска орнотулган 12VDC компьютердин эки күйөрманы күйгүзүлөт.

LightMeUpтун дагы бир өзгөчөлүгү! Bombay-Sapphire Gin бөтөлкөсүн жарыктандыруу болуп саналат, бирок бул Нускаманын фокусу эмес.

Окуудан ырахат алыңыз:)

Жабдуулар

  • Arduino Nano (же башка ATmega328 / жогору негизделген микроконтроллер)
  • Node.js орнотулган Raspberry Pi 3 Model B (же башка компьютер)
  • 12V RGB 4-Pin LED тилкеси
  • 12V 3A Электр энергиясы менен камсыздоо
  • Өткөргүч кабелдер (эркек-эркек, эгерде сиз нанды колдонсоңуз, албетте)
  • Нан тактасы (милдеттүү эмес)
  • 2 12V DC компьютер күйөрмандары (милдеттүү эмес)
  • 3x TIP120 Дарлингтон транзистору/ радиатор (эгер сиз муздатуучу күйөрмандарды кошкуңуз келсе 4)
  • 2 абалдын LEDлары кызыл жана жашыл (милдеттүү эмес)
  • 6, 7K NTC температурага негизделген резистор + 6, 7K каршылыгы (милдеттүү эмес)
  • USB-Miniден USB 2.0ге маалымат кабели (Raspberry Pi үчүн Arduino менен байланышуу үчүн)
  • Сырттан иштетилген USB-хаб (милдеттүү эмес, Raspberry Pi үчүн гана)

1 -кадам: Системаны түшүнүңүз

Системаны түшүнүү
Системаны түшүнүү

LightMeUp! абдан жөнөкөй электрондук схемага негизделген.

Бизде кандайдыр бир компьютер бар (бул учурда Raspberry Pi), ал биздин микроконтроллер тактасы менен сериялык түрдө байланышат. Бул такта анда "RGB (255, 255, 255)" сыяктуу конкреттүү сериялык буйруктарды аткарат, бул биздин LED-тилкебизди агартып коет.

Биз 4pin LED-Strip үчүн RED, GREEN жана BLUE үчүн үч маанибизди алгандан кийин, PWM сигналы менен TIP120 транзисторубузду камсыз кылуу үчүн analogWrite (pin, value) аткарабыз.

Бул PWM сигналы транзистордун коллектору жерге туташкан тиешелүү түстүү пинди белгилүү бир даражага же толугу менен күйгүзүү / өчүрүү мүмкүнчүлүгүн берет. Ооба, көп "to" лар:)

Үч транзистордун чыгышын LED тилкелеринин түстүү казыктарына аралаштыруу менен биз негизинен каалаган түстү түзө алабыз!

Эми бул түшүнүк менен, биз бул долбоордун эң чоң көйгөйүнө, вебсокеттердин жана анын Arduino менен сериялык байланышына кол сала алабыз.

2 -кадам: WebSocketServer жазуу

WebSocketServer жазуу
WebSocketServer жазуу

Эми, биз реалдуу убакытта LED тилкесин башкарууга жетүү үчүн, бир жолу сергитпестен, маалыматтарды алдыга жана артка өткөрүүгө мүмкүндүк берген белгилүү бир веб -серверди түзүшүбүз керек.

Сураныч, реалдуу убакытта баарлашуу мүмкүн эмес экенин унутпаңыз, ар дайым эң аз дегенде бир нече миллисекунд кечигүү болот, бирок адамдын көз алдында бул реалдуу убакытка салыштырмалуу.

Буга мен сыяктуу Node.js колдонсоңуз, socket.io китепканасын колдонуу менен оңой эле жетүүгө болот. Бирок, албетте, сиз дайыма сүйүктүү программалоо тилин кармансаңыз болот.

Биз веб-сокет туташуусу менен иштейбиз, ал бизге LED тилкесин кайсы түскө орнотууну кааласаңыз, же "LED ON" сыяктуу статустук маалыматтарды жаңыртуусуз өткөрүп берүүгө мүмкүндүк берет.

Дагы бир абдан маанилүү өзгөчөлүк серверде болушу керек, бирок кереги жок - жөнөкөй кирүү. Мен логинимди жөнөкөй колдонуучу аты менен сырсөз талаасына негиздедим. Бул маалымат бөлүктөрү сервердин /кирүү маршрутуна жайгаштырылат, ал колдонуучунун атын колдонуучулардын тизмесине (.txt файлы) жана ага тиешелүү сырсөздү SHA256-шифрленген түрүндө салыштырат. Сиз эң ыңгайлуу отургучта сүйүктүү суусундукту ичип жатканда кошуналарыңыздын LED лентасы менен баш аламандыкты каалабайсыз, туурабы?

Эми сервердин жүрөгү, сериялык байланыш келет.

Сиздин сервер сериалдык байланышта болушу керек - Node.jsте "serialport" китепканасын колдонуп портту ачуу менен жетишүүгө болот. Бирок адегенде серверди жайгаштырган компьютериңиздеги arduino портуңуздун атын аныктаңыз. Иштетүү тутумуңузга жараша, порттордун башка аттары болот, б.а. Windowsто бул порттор "COMx" порттору деп аталат, ал эми Linuxто "/dev/ttyUSBx" деп аталат, мында x - USB порттун саны.

3 -кадам: Сериялык буйруктардын протоколун түзүү

Сериялык буйруктардын протоколун түзүү
Сериялык буйруктардын протоколун түзүү

Жогорудагы сүрөттө сиз RGB көзөмөлү үчүн жооптуу болгон чыныгы Arduino IDE кодун көрөсүз. Бул кадамдын максаты-өз алдынча жазылган серверди жана Arduino тактасын бири-бири менен ийгиликтүү сүйлөшүү.

Сериялык портуңузду ийгиликтүү ачкандан кийин, каалоолоруңузга жооп берген тактага буйруктарды жөнөтө алышыңыз керек. Мисалы, эгер биз HTML веб -баракчасындагы түс тандагычтын үстүнө манжа тартсак, RGB коду серверге жөнөтүлүп, аны Arduinoго жөнөтөт, ошондо ал коюлган баалуулуктарды иштетет.

Мен jscolor колдондум, алар түстөрдү тандоочу элементтин эң сонун аткарылышына ээ, ал "onFineChange" аттуу иш -чарага ээ, ал процесстериңизди түс тандагычтан баалуулуктар өзгөрөөр замат берет.

Сунушталууда: