Агуулгын хүснэгт:

LightMeUp! Бодит цагийн хөндлөн платформ бүхий LED зурвасын хяналт: 5 алхам (зурагтай)
LightMeUp! Бодит цагийн хөндлөн платформ бүхий LED зурвасын хяналт: 5 алхам (зурагтай)

Видео: LightMeUp! Бодит цагийн хөндлөн платформ бүхий LED зурвасын хяналт: 5 алхам (зурагтай)

Видео: LightMeUp! Бодит цагийн хөндлөн платформ бүхий LED зурвасын хяналт: 5 алхам (зурагтай)
Видео: SCP-093 Красное море Объект (Все тесты и вторичного сырья Журналы) 2024, Арваннэгдүгээр
Anonim
LightMeUp! Бодит цагийн хөндлөн платформ бүхий LED зурвасын хяналт
LightMeUp! Бодит цагийн хөндлөн платформ бүхий LED зурвасын хяналт
LightMeUp! Бодит цагийн хөндлөн платформ бүхий LED зурвасын хяналт
LightMeUp! Бодит цагийн хөндлөн платформ бүхий LED зурвасын хяналт
LightMeUp! Бодит цагийн хөндлөн платформ бүхий LED зурвасын хяналт
LightMeUp! Бодит цагийн хөндлөн платформ бүхий LED зурвасын хяналт

LightMeUp! Энэ бол миний зохион бүтээсэн систем бөгөөд RGB LED-Strip-ийг бодит цаг хугацаанд хянаж, өртөг багатай, гүйцэтгэлийг өндөр байлгадаг.

Серверийг Node.js дээр бичсэн бөгөөд ингэснээр хөндлөн платформ хийх боломжтой.

Миний жишээн дээр би Raspberry Pi 3B -ийг удаан хугацаагаар ашиглахад ашигладаг, гэхдээ миний Windows PC -ийг жагсаал, дибаг хийхэд ашигладаг.

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 зүү LED зурвас
  • 12V 3A Цахилгаан хангамж
  • Холбогч кабель (хэрэв та талхны самбар ашигладаг бол эрэгтэй, эрэгтэй)
  • Breadboard (заавал биш)
  • 12V DC компьютерийн 2 сэнс (заавал биш)
  • 3х TIP120 Дарлингтон транзистор/ халаагчтай (хэрэв та хөргөх сэнс оруулахыг хүсвэл 4 ширхэг)
  • Улаан ба ногоон гэсэн 2 статусын LED (заавал биш)
  • 6, 7K NTC температурт суурилсан эсэргүүцэл + 6, 7K эсэргүүцэл (заавал биш)
  • USB-Mini-аас USB 2.0 өгөгдлийн кабель (Raspberry Pi-ийн хувьд Arduino-той холбогдох боломжтой)
  • Гаднаас тэжээгддэг USB-Hub (заавал биш, зөвхөн Raspberry Pi-д зориулагдсан)

Алхам 1: Системийг ойлгох

Системийг ойлгох
Системийг ойлгох

LightMeUp! Энэ нь маш энгийн электрон хэлхээнд суурилдаг.

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

LED-Strip-ийн 4pin-д шаардлагатай RED, GREEN, BLUE гэсэн гурван утгыг олж авсны дараа бид TIP120 транзистороо PWM дохиогоор хангахын тулд analogWrite (pin, value) гүйцэтгэдэг.

Энэхүү ХОУХД -ийн дохио нь транзисторыг коллекторт холбогдсон өнгөний зүүг тодорхой түвшинд, бүрэн асаах / унтраах боломжийг олгодог. Тийм ээ, маш их "to" гэсэн үг:)

Гурван транзисторын гаралтыг LED туузны өнгөний тээглүүртэй хольсноор бид үндсэндээ хүссэн өнгөө бий болгож чадна!

Энэхүү ойлголттой болсноор бид энэ төслийн хамгийн том сорилт болох Webocketserver болон түүний Arduino -той цуваа холболтыг даван туулж чадна.

Алхам 2: WebSocketServer бичих

WebSocketServer бичих
WebSocketServer бичих

Одоо бид LED зурвасын хяналтыг бодитоор хангахын тулд өгөгдлийг нэг удаа шинэчлэхгүйгээр нааш цааш нь дамжуулах боломжийг олгодог тодорхой төрлийн вэб сервер үүсгэх ёстой.

Мэдээжийн хэрэг, бодит цагийн харилцаа холбоо боломжгүй, ядаж л хэдэн секундын саатал үргэлжлэх болно, гэхдээ хүний нүдээр харахад энэ нь бодит цаг хугацаатай адил юм.

Хэрэв та Node.js -ийг над шиг ашигладаг бол socket.io номын санг ашиглан үүнийг хялбархан хийж болно. Гэсэн хэдий ч та дуртай програмчлалын хэлээ үргэлж дагаж мөрдөх боломжтой.

Бид вэб зурвасын холболттой ажиллах бөгөөд энэ нь LED зурвасыг ямар өнгөөр тохируулах, эсвэл "LED ON" гэх мэт статусын өгөгдлийг сэргээхгүйгээр хоёр чиглэлд шилжүүлэх боломжийг олгодог.

Серверт байх ёстой, гэхдээ шаардлагагүй өөр нэг чухал онцлог бол энгийн нэвтрэлт юм. Би нэвтрэх үгээ энгийн хэрэглэгчийн нэр, нууц үгийн талбар дээр үндэслэв. Эдгээр мэдээллийг дараа нь серверийн /нэвтрэх маршрутад байрлуулдаг бөгөөд хэрэглэгчийн нэрийг хэрэглэгчийн жагсаалт (.txt файл) болон холбогдох нууц үгийг SHA256 шифрлэгдсэн хэлбэрээр харьцуулдаг. Та хамгийн тухтай суудал дээрээ дуртай ундаагаа ууж байхдаа хөршүүдээ LED зурвасаа хутгахыг хүсэхгүй байна, тийм үү?

Одоо серверийн зүрх, цуваа харилцаа холбоо ирдэг.

Таны сервер цувралаар харилцах боломжтой байх ёстой - Node.js дээр үүнийг "serialport" номын санг ашиглан портыг нээх замаар олж авах боломжтой. Гэхдээ эхлээд сервер байршуулж буй компьютер дээрх arduino портынхоо нэрийг тодорхойл. Таны үйлдлийн системээс хамааран портууд өөр өөр нэртэй байх болно. Windows дээр эдгээр портуудыг "COMx" порт гэж нэрлэдэг бол линукс дээр "/dev/ttyUSBx" гэж нэрлэдэг бөгөөд энд x нь USB портын дугаар юм.

Алхам 3: Цуваа командуудын протокол байгуулах

Цуваа командуудын протокол байгуулах
Цуваа командуудын протокол байгуулах

Дээрх зурган дээр та RGB хяналтыг хариуцдаг жинхэнэ Arduino IDE кодыг харж байна. Энэ алхам нь таны бичсэн сервер болон Arduino самбарыг бие биетэйгээ амжилттай ярилцах явдал юм.

Цуваа портоо амжилттай нээсний дараа та өөрийн хүслийг хангадаг самбар руу тушаал илгээх боломжтой байх ёстой. Жишээлбэл, хэрэв бид HTML вэб хуудсан дээрх өнгө сонгогчийн дээр хуруугаа зурвал RGB кодыг сервер рүү илгээж, дараа нь Arduino руу илгээж, тогтоосон утгыг боловсруулдаг.

Би jscolor -ийг ашигласан бөгөөд тэдгээр нь "onFineChange" нэртэй үйл явдлыг эзэмшдэг өндөр чанартай өнгө сонгох элементийг маш сайн хэрэгжүүлдэг бөгөөд энэ нь таны өгөгдлийг өнгө сонгогчоос үнэ цэнийг нь өөрчлөхөд шууд өгөх боломжийг олгодог.

Зөвлөмж болгож буй: