Съдържание:

RPi-Zero IoT индикатор за събитие / цветна лампа: 6 стъпки (със снимки)
RPi-Zero IoT индикатор за събитие / цветна лампа: 6 стъпки (със снимки)

Видео: RPi-Zero IoT индикатор за събитие / цветна лампа: 6 стъпки (със снимки)

Видео: RPi-Zero IoT индикатор за събитие / цветна лампа: 6 стъпки (със снимки)
Видео: Камера-ЛАМПА с проследяване и идентификация на човек. 2024, Юли
Anonim
RPi-Zero IoT индикатор за събитие / цветна лампа
RPi-Zero IoT индикатор за събитие / цветна лампа
RPi-Zero IoT индикатор за събитие / цветна лампа
RPi-Zero IoT индикатор за събитие / цветна лампа
RPi-Zero IoT индикатор за събитие / цветна лампа
RPi-Zero IoT индикатор за събитие / цветна лампа

Не се изисква допълнителен микроконтролер и не е необходим допълнителен модул HAT. RPi-Zero прави всичко. Още по-добре използвайте RPi-Zero W!

Примерна употреба: Индикатор за състоянието на уеб услугата (например проследяване на DowJonesIndex), индикатор за състоянието на политически или спортни събития, индикатор за настроение, проследяване на сензор, вие го назовавате. Вижте видеоклипа в стъпка 6.

Raspberry-Pi има само една хардуерно поддържана PWM линия. Този проект се нуждае от 3 PWM линии, затова използвах софтуерно управлявана PWM 'c' библиотека (https://wiringpi.com/reference/software-pwm-library/), която вече трябва да е инсталирана.

Разделих обработката на 2 процеса. Едно, задвижвано от прекъсване, превключване на управляващите линии към светодиода, ако е необходимо, получаване на неговите нареждания за марширане от неговия „stdin“поток. Другият е управляван от събития nodeJS сървър, използващ IO на гнездо. Това е за предотвратяване на трептене на светлината, като същевременно се гарантира отзивчивост. Комбинацията обикновено използва по -малко от 5% от процесора. По време на непрекъснати актуализации на цветовете (чрез плъзгачи и/или много клиенти), той може лесно да използва над 50% (особено когато използвате и браузъра в графичния потребителски интерфейс Pi-Zero). Обърнете внимание, че когато настъпи промяна, известията за актуализация излизат до всички клиенти на отворени сокети.

Стъпка 1: Какво ще ви трябва

Какво ще ви трябва
Какво ще ви трябва
Какво ще ви трябва
Какво ще ви трябва
  • Pi-Zero micro-SD карта, препоръчително 8 GB. С Raspbian-Linux или NOOBS
  • RGB Led (използвах този:
  • 3 съпротивления (стойност въз основа на желания ток и/или желаната яркост, 1/8 вата)
  • WiFi, USB ключ (напр. https://www.ebay.com/itm/252018085448) или още по-добре да използвате Raspberry Pi Z-W (с вграден WiFi)
  • калъф (например малък: https://www.ebay.com/itm/131583579374 с повече място:
  • дифузер (вижте примерите в изображението)
  • Кабели и адаптери според нуждите.

По избор, в зависимост от това как искате да свържете компонентите

  • заглавка (https://www.ebay.com/itm/14186077616)
  • джъмпери (https://www.ebay.com/itm/262235387520)
  • правоъгълен микро-USB адаптер (син USB 2.0 OTG R)
  • мини USB хъб, използван само по време на фазата на настройка

Стъпка 2: Настройка на Pi-Zero и подготовка за развитие

Следвайте тази първоначална настройка за вашия PiZero, за да го направите готов за разработка …

След като имате microSD карта с настройка NOOBS, тогава:

Включете microSD картата. Прикрепен е USB хъб с ниска мощност с Wifi ключ, клавиатура и мишка (Можете да използвате безжична мишка и/или клавиатура, така или иначе, но не е вероятно да изисква външно захранване към концентратора). Използвах адаптери и хъб, който вече имах.

Сега свържете монитор и адаптер за захранване на microUSB и той ще се зареди. Продължете и завършете указанията за настройка на Raspbian, Debian Linux, както се вижда в връзката noobs-setup по-горе.

Освен това имах твърде ниска резолюция. Затова добавих тези редове към /boot/config.txt

disable_overscan = 1

hdmi_group = 2 hdmi_mode = 58

Hdmi_mode = 58 работи за моя монитор, вашият може да се нуждае от нещо друго.

вижте: make-raspberry-pi-use-full-resolution-monitor и

raspberrypi.org/documentation/configuration/config-txt.md

След стартиране Pi-Zero влиза в GUI интерфейса.

За да използвам пълния размер на моята microSD карта, използвах raspi-config #1 „Разширяване на файловата система“. От командния ред в прозорец на терминала въведете „sudo raspi-config“Вижте: документация/конфигурация/raspi -config.md

Също така промених тези настройки под № 5 „Опции за интернационализация“

  • Локал: bg_US. UTF-8 UTF-8
  • Часова зона: Америка … Los_Angeles
  • Разположение на клавиатурата: Общ компютър с 105 клавиша (Intl) … Английски (САЩ)

За мен стандартът на клавиатурата на Великобритания (за който Raspbian идва предварително зададен) правеше голяма част от редакциите ми истинска работа.

Променете тези настройки според нуждите, подходящо за вас. Имайте предвид, че трябва да използвате клавишите със стрелки и клавиша Tab, за да навигирате в 'raspi-config'; и след избор може да реагира много бавно.

Не намерих проблем да се свържа с интернет с WiFi-USB ключ (използвах 2 различни). Просто трябваше да въведа паролата си за ключ за достъп до WiFi, като използвам падащо меню в горния десен ъгъл на графичния интерфейс. След като направих това, той автоматично ще се свърже след всяко рестартиране/включване.

Сега бях готов за общо развитие.

За да стигнете до този момент, можете да поемете по много пътища. До този момент не съм давал много подробности тук, но има много методи и конфигурации, описани по -подробно в мрежата. Включително такъв за безглавна настройка, където бихте използвали прозорец на отдалечен ssh терминал на вашия персонален компютър, за да извършите стъпките за разработка, които ще бъдат дадени в тази инструкция.

Стъпка 3: Среда за развитие и инструменти

Среда за развитие и инструменти
Среда за развитие и инструменти
Среда за развитие и инструменти
Среда за развитие и инструменти

За настройката на системата и софтуера, който разработих за проекта, направих НИРД на Raspberry Pi-2; тъй като има четириядрен процесор, който прави сърфирането и разработването на код с множество прозорци много по-бързо. Разбира се, можете да използвате всеки модел Raspberry-Pi, за да реализирате този проект.

За да настроя Node.js (поддръжка на JavaScripting от страна на сървъра на I/O от страна на сървъра) направих следното …

sudo apt-get update

sudo apt-get install nodejs npm

Добавяне на тези nodeJS пакети (npm е Nodejs Package Manager)

npm install express

npm инсталирайте socket.io

Препратки:

www.npmjs.com/package/express Бърза, минималистична уеб рамка

www.npmjs.com/package/socket.io Socket. IO позволява двупосочна комуникация в реално време, базирана на събития

Стъпка 4: Хардуерът

Хардуерът
Хардуерът
Хардуерът
Хардуерът
Хардуерът
Хардуерът
Хардуерът
Хардуерът

Използваните стойности на резистора са различни, тъй като спадът на напрежението и ефективността се различават за трите сегмента на цветовете на LED. Високите изходни нива на GPIO бяха приблизително 3,2 волта. Всеки LED сегмент беше тестван, за да се гарантира, че консумира по -малко от 20ma максимум и около 40ma заедно (<50ma max максимално допустимо общо), с което PiZero може лесно да се справи. Получих възможно най -голяма яркост на изхода, директно задвижвайки светодиода; което е достатъчно за моите нужди. За задвижване на по -високи токове, за много по -ярък изход, могат да се използват междинни задвижващи транзистори с общ аноден светодиод с неговия анод, свързан към линията 5 V. PS: Тъй като различните ми нива на бяло излизат малко синкави, 27 вместо 24 ома щеше да е по -добър избор за мен.

Забележете, че използвах заглавка с мъжки щифтове и свързана към LED краката с F-F джъмпери. Това запази общата височина. Запоявах съпротивленията в средата на джъмперите. Използването на платка или платка без спойка, заедно с използването на правоъгълен micro-USB към USB адаптер за WiFi ключа, направи окончателното сглобяване доста компактно.

За дифузьор препоръчвам топка за пинг-понг (лесно е да се пробие отвор, достатъчно голям, за да вкарате вашия 5-8-10 мм светодиод). Или отрежете горната част на LED крушка (такава, която използва пластмасов дифузер). За това маркирайте линия с острие с фина точка, където искате да изрежете, и използвайте инструмент като Dremel с тънка отрязана приставка. Ако желаете, може да се използва хубав малък стъклен буркан или чаша за пиене. След като сте се спрели на един дифузьор, залепете го до горната част на кутията.

За демонстрации обичам да използвам малка Li-power банка, поставена вътре в кутията. Това устройство изглежда по -впечатляващо напълно безжично. Разбира се, той ще има ограничено време за работа в тази конфигурация. За да продължа нормалната си работа, просто използвам микро-USB адаптер за стена.

Стъпка 5: Софтуер на проекта

Софтуер на проекта
Софтуер на проекта

Използвах две програми, Node.js процес, разговарящ с детски процес чрез неговия stdin поток от данни. Това означава, че всеки може да прави това, което прави най -добре, и да работи като независими процеси със свое собствено темпо.

Ето какво направих: Но не е нужно, тъй като предоставих tar-gzip файл, който съдържа полученото файлово дърво.

NodeJS настройка от страна на сървъра:

cd ~

mkdir node_rgb cd node_rgb mkdir публично

поставете „index.html“и „style.css“в директорията „~/node_rgb/public“въведете „rgbDriver.c“и „rgb_main.js“в директорията „~/node_rgb“

Компилирайте/изградете c процеса 'rgbDriver':

cd ~/node_rgb

cc -o rgbDriver rgbDriver.c -lwiringPi -lpthread

Изтегляне и разширяване на еквивалентността

За да изтеглите node_rgb.tgz (по-долу) на вашия Pi-Zero в домашната си директория (~ pi), можете да направите едно от трите следните:

  1. Изтеглете от браузъра в GUIM на Pi-Zero Преместете файла в ~ pi/
  2. В терминален прозорец, свързан с вас Pi-Zero: cd ~ piwget

    mv FZBF9BDIL6VBHKF.tgz rgb_node.tgz

  3. Изтеглете от браузър на вашия настолен компютър. Използвайте WinSCP, за да го копирате в директорията ~ pi на Pi-Zero

След изпълнението на #1 2 или 3 по -горе …

cd ~

tar -xzvf node_rgb.tgz дърво node_rgb… node_rgb ├── публично │ ├── Dow_Jones_Index.html │ ├── index.html │ └── style.css ├── rgbDriver ├── rgbDriver.c ├─ js ├── start_rgb ├── kill_rgb └── track_dji

Полученият изпълним (отгоре) 'rgbDriver' може да се използва независимо от интерфейсния процес на Node.js.

За да проверите дали този драйвер и хардуерът работят, подайте на драйвера набори от три стойности (от 0-255), разделени с интервал. Като „ехо 255 0 0 |./rgbDriver 'за червено или' echo 0 255 0 |./rgbDriver 'за зелено. Обърнете внимание, че „./“казва на операционната система да намери нашата програма „rgbDriver“в текущата директория. Когато издадете ^c (cntl-c), за да спрете водача, светодиодът може или не може да остане включен. Алтернативно, можете интерактивно да захранвате неговите стойности. Опитайте да напишете тези редове един след друг от командния ред и гледайте светодиода.

./rgbDriver

0 255 0 100 0 100 255 255 0… и т.н … ^c

Уверете се, че нямате два от тези процеси, работещи паралелно.

За да стартирате пълния пакет от софтуерни приложения, включително сървъра Node.js, използвайте тази команда:

sudo възел rgb_main.js

След това използвайте cntl-c, когато искате да спрете сървъра Node.js, Стартирайте го с

sudo възел rgb_main.js &

за да го стартирате на заден план, но след това ще трябва да използвате команда 'sudo kill -9 pid', за да го спрете. Ако тази команда ви се струва чужда, прегледайте резултатите от тези команди: 'man kill' & 'man sudo'.

Използвайте браузър на вашия работен плот, таблет или телефон, който е свързан с вашата локална мрежа. Отидете на https:// raspberrypi: 8080/или ако това не работи, използвайте ip адреса на устройството (получен от cmd 'ifconfig') нещо като 192.168.1.15 плюс спецификацията на порта: 8080 или ако използвате Pi-Zero's GUI: localhost: 8080 ще работи.

Използвайте плъзгачите RGB на страницата, която се показва, и гледайте как RGB-LED лампата ги следва.

Други полезни команди Обърнете внимание, че ако завършите с повече от един „rgbDriver“, работещ едновременно, е вероятно да получите непредсказуемо поведение. Ако опитате да стартирате второ копие на rgb_main.js, това ще доведе до грешка.

Тази команда ще изброи всички свързани процеси:

ps aux | grep rgb

Тази команда ще убие всички nodeJS процеси, заедно с 'rgbDriver' дъщерни процеси:

sudo ps aux | grep възел.*rgb | awk '{print "sudo kill -9" $ 2}' | ш

Самостоятелна операция

За да накарате Pi-Zero да стартира сървърното приложение Node.js, когато се стартира … използвайки любимия си редактор (например nano ~/.bash_profile), въведете следните редове и запишете в ~/.bash_profile

cd node_rgb

sudo възел rgb_main.js &

За да не получавате неприятни съобщения за грешка при отваряне на терминален прозорец, използвайте условно кодиране като скрипта на обвивката във файла „start_rgb“

Когато Pi-Zero работи вградено, без клавиатура, мишка или монитор; графичният потребителски интерфейс ще отнеме минимално време на процесора, тъй като няма да има взаимодействие с потребителя. Не деактивирам автоматичното стартиране на GUI, тъй като Pi-Zero има повече ресурси, отколкото е необходимо, в този случай; и ми харесва да мога да свържа няколко кабела и да го използвам по всяко време в бъдеще. Въпреки това, това не е необходимо, тъй като можете да използвате отдалечен SSH терминал (например PuTTY), за да извършите необходимата поддръжка.

Използва се като монитор за събития

Създадох уеб страница за наблюдение на ежедневната промяна в Dow Jones Index. Източникът му може да се използва като ориентир за вашата собствена страница, която използва някои уеб данни и съответно управлява вашия индикатор Pi-Zero. Тази страница получава своите (json) данни от уеб услуга на Google. Има много форми на уеб услуги, така че ще трябва да проучите тази, която искате да използвате, за да определите кода на JavaScript за достъп до него.

Ако искате да използвате вашето устройство, както и аз, като специален, самостоятелен индикатор за промяна на индекса на Dow, добавете тези редове в края на файла ~/.bash_profile или по желание SSH във и издайте втория команден ред. Ако впоследствие искате да използвате дистанционното управление „kill -9“, полученият процес на браузър на прозрение.

спи 20

epiphany-browser --display =: 0.0 localhost: 8080/Dow_Jones_Index.html &

Индикаторът ще светне в светло сиво при стойност 0. Той става все по -зелен с по -високи стойности. Това е най -яркото чисто зелено на около 250. По -високите, но все пак стойности причиняват първоначално плитка светкавица, до най -дълбока светкавица при около 500. При отрицателна стойност (дневни спадове в Dow) тя прави подобно, но в червено.

АКТУАЛИЗИРАНЕ Май 2018 г.

Създадох нова уеб страница (SolarStorm_devCon.html, прикачена като.txt файл, поради.html файл, който не се качва), която събира информация за GeoMagnetic storm (която може да предскаже опустошителна CME, EMP) и я използва, за да представи цвят скала, отразяваща един вид Geo-Storm 'DevCon' индекс. показващ потенциала на бедствие, дължащо се на електромагнитен импулс (EMP) в резултат на космическото време, вероятно слънчеви изригвания или изхвърляне на коронална маса (CME). Използвайте го така, както бихте използвали „Dow_Jones_Index.html“.

Стъпка 6: Дистанционно управление на уеб страници

Image
Image

В този момент можете да контролирате вашата цветна лампа IOT от всяка точка на вашата локална мрежа. Как да я направите видима в публичния интернет не е част от тази инструкция. Ако настроите публичен IP за вашето устройство, тогава ще трябва използвайте този IP в командата open socket в JavaScript на вашите страници (напр. ~/node_rgb/public/index.html)

Планирам да използвам устройството си Pi-Zero IOT като цветен индикатор в реално време за промяната на деня в Dow Jones Index. Създадох страница, която прави това, която получава json данни от google.com/finance. Освен това създадох няколко уеб страници, за да демонстрирам широкия спектър от приложения за това малко IOT устройство. Вместо да поставя моя PiZero в публичния интернет, аз хоствах страниците на съществуващия ми публичен уеб сървър (в момента @ 71.84.135.81 известен още като: https://raspi.ddns01.com/, когато работи безплатният ми сървър за динамични имена на домейни), който работи на оригинална версия B Raspberry-Pi.

В кода на отдалечените ми страници отворих сокет връзки към 192.168.1.41:8080 Поправих ip на моя Pi-Zero на 192.168.1.41. За да направите по същия начин, следвайте указанията при настройка-raspberry-pi-with-wifi-и-a-static-ip под заглавието: Статичен IP адрес. Така че, ако настроите PiZero да е на 192.168.1.41 в локалната ви мрежа, тези страници, отворени от моя уеб сайт, ще комуникират с вашето устройство, тъй като връзката се осъществява от страна на клиента.

Ето онези страници, които използвах за тестване и работа с моето Pi-Zero IOT осветително устройство. Ако отворите тези страници (https://71.84.135.81/iot/rgbLamp/ известен още като https://raspi.ddns01.com/iot/rgbLamp/ или някоя от страниците, рамкирани на тази страница), клиентският JavaScript ще управлявайте създадената от вас IOT светлина (като се има предвид, че работи на този URL адрес „192.168.1.41:8080“) Ако искате, можете да копирате източника на някоя от тези страници и да промените според вашите предпочитания.

С първата страница можете да настроите устройството си на всеки цвят. LED лампата и цветът, които виждате на уеб страницата, ще проследяват доста добре. Използваните стойности на резистора могат да бъдат променени (както и монитора), за да се съчетаят по -истински. Прекарах малко или никакво време, за да гарантирам, че те съвпадат. Тази страница ще актуализира цвета си, когато някой друг промени цвета и сървърът изпрати актуализираното информационно съобщение.

Една страница е прост светофар, управляван с бутони.

Има страница, предназначена за проследяване на спортни състезания (например футбол, баскетбол, бейзбол), избори или дори адаптирана за набиране на средства или индикатор за ниво на предупреждение на DEFCON. Резултатите (или ангажираните избирателни гласове) могат автоматично да бъдат получени от уеб услуга или да се изтрият от друга уеб страница. Нямам автоматична емисия, която да управлява моята страница Contest_demo. Някой с правилното ноу-хау би могъл да добави драйвер за захранване, за да управлява LED прожектори с висока мощност и да къпе стая (или спортна лента) с цвят на екип, когато те са напред. За съжаление закъснях с тази инструкция за тазгодишните партита на супер-купа, но навреме за изборите през 2016 г.

След това има страница, подобна на тази, която ще използвам, за да превърна устройството си в индикатор за проследяване на Dow Jones. Плъзгачът и бутоните са само на демонстрационната страница на DJI за демонстрационни цели. В източника на тази страница има код, който разработих, за да оцветя отново вдъхновено от зелен екран изображение; с достатъчно коментари, които също може да ви бъдат полезни.

Само първата от тези 4 страници (заедно със страницата, базирана на Pi-Zero index.html) слуша съобщения за актуализация на сървъра и съответно се опреснява. Всички останали изпращат само до сървъра.

Препоръчано: