Мазмұны:

RPi-Zero IoT оқиға индикаторы / түс шамы: 6 қадам (суреттермен)
RPi-Zero IoT оқиға индикаторы / түс шамы: 6 қадам (суреттермен)

Бейне: RPi-Zero IoT оқиға индикаторы / түс шамы: 6 қадам (суреттермен)

Бейне: RPi-Zero IoT оқиға индикаторы / түс шамы: 6 қадам (суреттермен)
Бейне: 8 Excel құралдары әркім қолдануы керек 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 процеске бөлдім. Басқару сызықтарын жарықдиодты жарық диодына ауыстыратын, үзіліспен басқарылатын, маршрутты өзінің «стдин» ағынынан алады. Екіншісі - IO ұяшығын қолданатын оқиғаға негізделген nodeJS сервері. Бұл жауап беруді қамтамасыз ету кезінде жарықтың жыпылықтауы сияқты нәрселердің алдын алу үшін. Комбинация әдетте процессордың 5% -дан азын пайдаланады. Түстерді үнемі жаңарту кезінде (жүгірткілер және/немесе көптеген клиенттер арқылы) ол 50% -дан оңай қолдана алады (әсіресе Pi-Zero GUI браузерін пайдаланғанда). Есіңізде болсын, өзгеріс енгізілгенде, барлық ашық клиенттерге жаңартулар туралы хабарламалар шығады.

1 -қадам: Сізге не қажет

Сізге не қажет болады
Сізге не қажет болады
Сізге не қажет болады
Сізге не қажет болады
  • Pi-Zero micro-SD картасы, 8 ГБ ұсынылады. 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 адаптері (Blue USB 2.0 OTG R)
  • шағын USB хаб, тек орнату кезеңінде қолданылады

2-қадам: Pi-Zero орнату және дамытуға дайындық

Оны әзірлеуге дайын болу үшін PiZero үшін осы бастапқы орнатуды орындаңыз …

Егер сізде NOOBS орнатылған microSD картасы болса, онда:

MicroSD картасын розеткаға қосыңыз. Wifi кілтімен, пернетақтасы мен тінтуірі бар қуаты аз USB концентраторы қосылған (Сіз сымсыз тінтуірді және/немесе пернетақтаны қолдана аласыз, бірақ, керісінше, хабқа сыртқы қуат қажет болуы мүмкін). Мен бұрыннан бар адаптерлер мен хабты қолдандым.

Енді монитор мен microUSB қуат адаптерін қосыңыз, ол жүктеледі. Жоғарыдағы noobs-орнату сілтемесінде көрсетілгендей, Raspbian, Debian Linux орнату бойынша нұсқауларды жалғастырыңыз және аяқтаңыз.

Сонымен қатар, менде рұқсат өте төмен болды. Мен бұл жолдарды /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 'Expand Filesystem' таңдауын қолдандым. Пәрмен жолынан терминал терезесінде 'sudo raspi-config' енгізіңіз. Қараңыз: құжаттама/конфигурация/raspi -config.md

Сондай -ақ, мен бұл параметрлерді №5 «Интернационализация опциялары» астында өзгерттім.

  • Тіл: en_US. UTF-8 UTF-8
  • Уақыт белдеуі: Америка… Los_Angeles
  • Пернетақтаның орналасуы: 105-пернелі жалпы компьютер (ағылшын) (ағылшын)

Мен үшін Ұлыбританияның пернетақта стандарты (Raspbian үшін алдын ала орнатылған) менің түзетулерімнің көп бөлігін нақты жұмыс етті.

Бұл параметрлерді сізге сәйкесінше өзгертіңіз. Назар аударыңыз, 'raspi-config' ішінде жылжу үшін көрсеткі мен қойынды пернесін пайдалану қажет; және таңдаудан кейін жауап беру өте баяу болуы мүмкін.

Мен WiFi-USB кілтімен Интернетке қосылу қиын емес деп таптым (мен 2 түрлі қолдандым). Мен GUI-дің жоғарғы оң жағындағы ашылмалы тізімді пайдаланып, WiFi-ге кіру кілтсөзін енгізуім керек болды. Мен мұны жасағаннан кейін, ол кез келген қайта жүктеу/қосудан кейін автоматты түрде қосылады.

Енді мен жалпы дамуға дайын болдым.

Осы деңгейге жету үшін көптеген жолдарды таңдауға болады. Осы уақытқа дейін мен мұнда толық мәлімет бермедім, бірақ интернетте толығырақ сипатталған көптеген әдістер мен конфигурациялар бар. Бұл нұсқаулықта әзірленетін қадамдарды орындау үшін дербес компьютердегі қашықтағы ssh терминал терезесін қолданатын бассыз қондыруға арналған.

3 -қадам: Даму ортасы мен құралдары

Даму ортасы мен құралдары
Даму ортасы мен құралдары
Даму ортасы мен құралдары
Даму ортасы мен құралдары

Жобаға арналған жүйелік конфигурация мен бағдарламалық қамтамасыз ету үшін мен Raspberry Pi-2-де ҒЗТКЖ жасадым; себебі оның төрт ядролы процессоры бар, ол қарауға және кодты дамытуға мүмкіндік береді, бірнеше терезелері бар, әлдеқайда жылдам. Бұл жобаны іске асыру үшін сіз, әрине, Raspberry-Pi кез келген үлгісін қолдана аласыз.

Node.js (оқиғаға негізделген енгізу-шығару серверлік JavaScripting қолдауы) орнату үшін мен келесі әрекеттерді жасадым …

sudo apt-get жаңартуы

sudo apt-get nodejs npm орнатыңыз

Бұл nodeJS пакеттерін қосу (npm - Nodejs пакет менеджері)

npm экспресс орнатыңыз

npm socket.io орнатыңыз

Сілтемелер:

www.npmjs.com/package/express Жылдам, минималистік веб -құрылым

www.npmjs.com/package/socket.io Socket. IO оқиғаға негізделген нақты уақыт режимінде қос бағытты байланысты қамтамасыз етеді

4 -қадам: аппараттық құрал

Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал

Қолданылатын қарсылық мәндері әр түрлі, себебі кернеудің төмендеуі мен тиімділігі барлық үш жарық диодты түс сегменті үшін әр түрлі. GPIO High шығыс деңгейі шамамен 3,2 вольтты құрады. Әр LED сегменті PiZero оңай өңдей алатын максимум 20мадан аз және барлығы 40мА (жалпы рұқсат етілген <50мм) аз тұтынатынына тексерілді. Мен жарық диодты тікелей жүргізе отырып, мүмкіндігінше көп жарық жарықтығын алдым; бұл менің қажеттіліктерім үшін жеткілікті. Жоғары токтарды шығару үшін, әлдеқайда жарқын шығу үшін, аралық жетекті транзисторлар 5В желісіне қосылған анодты жалпы анодты жарықдиодты қолдануы мүмкін еді. мен үшін жақсы таңдау болар еді.

Назар аударыңыз, мен ер түйреуіштері бар тақырыпты қолдандым және жарықдиодты аяқтарға F-F секіргіштерімен қосылдым. Бұл жалпы биіктікті ұстап тұрды. Мен қарсыластарды секіргіштердің ортасына дәнекерледім. Ақысыз тақтаны немесе дәнекерлендіргіш тақтаны пайдаланбау, Wi-Fi кілтіне арналған USB-адаптерінің тік бұрышындағы USB-адаптерін қолдана отырып, соңғы жинақты өте жинақы етті.

Диффузор үшін мен теннис теннисін ұсынамын (5-8-10 мм светодиодты салу үшін жеткілікті үлкен тесік бұрғылау оңай). Немесе жарықдиодты шамның жоғарғы жағын кесіңіз (пластикалық диффузорды қолданыңыз). Бұл таңбаны кесу үшін жіңішке ұшы бар сызық және жіңішке кескіш қондырмасы бар Dremel тәрізді құралды қолданыңыз. Қаласаңыз, кішкене кесілген шыны ыдысты немесе шыны ыдысты қолдануға болады. Бір диффузорды орнатқаннан кейін оны корпустың жоғарғы жағына жабыстырыңыз.

Демонстрациялар үшін мен корпустың ішіне салынған шағын Li-банкін қолданғанды ұнатамын. Бұл құрылғы мүлдем сымсыз әсерлі көрінеді. Әрине, бұл конфигурацияда шектеулі жұмыс уақыты болады. Қалыпты жұмыс істеу үшін мен микро-USB қабырға адаптерін қолданамын.

5 -қадам: Бағдарламалық қамтамасыз ету

Жобалық бағдарламалық қамтамасыз ету
Жобалық бағдарламалық қамтамасыз ету

Мен екі бағдарламаны қолдандым: Node.js процессі балалармен сөйлесу процесі, бұл олардың тұрақты ағыны арқылы. Бұл олардың әрқайсысы не істесе, соны істей алады және өз қарқынымен тәуелсіз процестер ретінде жұмыс жасай алады.

Міне, мен жасадым: Бірақ сізге қажет емес, себебі мен алынған tar-gzip файлын бердім, нәтижесінде файлдық ағаш бар.

NodeJS серверлік реттеу:

cd ~

mkdir node_rgb cd node_rgb mkdir public

'~/node_rgb/public' директориясына 'rgbDriver.c' және 'rgb_main.js' каталогына '~/node_rgb' каталогына 'index.html' және 'style.css' қойыңыз.

«RgbDriver» c процесін құрастырыңыз/құрыңыз:

cd ~/node_rgb

cc -o rgbDriver rgbDriver.c -swiringPi -lpthread

Эквивалентті жүктеу және кеңейту

Node_rgb.tgz (төменде) Pi-Zero-ға үй каталогына (~ pi) жүктеу үшін келесі 3 әрекеттің бірін орындауға болады:

  1. Pi-Zero GUIM браузерінен жүктеу Файлды ~ pi/
  2. Сізге қосылған терминалды терезеде Pi-Zero: cd ~ piwget

    mv FZBF9BDIL6VBHKF.tgz rgb_node.tgz

  3. Жұмыс үстеліндегі компьютерден шолғыштан жүктеп алыңыз. WinSCP көмегімен Pi-Zero каталогына ~ pi көшіріңіз.

Жоғарыдағы №1 немесе 2 орындағаннан кейін…

cd ~

tar -xzvf node_rgb.tgz ағашы node_rgb… node_rgb жалпыға қол жетімді Dow_Jones_Index.html индексі.html және style.css, rgbDriver, rgbDriver.c, rgb_main. js, start_rgb, kill_rgb, track_dji

Нәтижесінде орындалатын (жоғарыдан) 'rgbDriver' Node.js интерфейс процесіне тәуелсіз қолданылуы мүмкін.

Бұл драйвер мен аппараттық құралдың жұмыс істеп тұрғанын тексеру үшін драйверге бос орынмен бөлінген үш мәнді (0-255 аралығында) беру керек. 'Echo 255 0 0 | сияқты./rgbDriver 'қызыл немесе' echo 0 255 0 | Жасыл үшін./rgbDriver '. Назар аударыңыз, «./» ОЖ -ге біздің «rgbDriver» бағдарламасын ағымдағы каталогтан табуға нұсқау береді. Драйверді тоқтату үшін a ^c (cntl-c) шығарғанда, жарық диодты қосулы болуы мүмкін. Сонымен қатар, сіз оның мәндерін интерактивті түрде бере аласыз. Пәрмен жолынан осы жолдарды бірінен соң бірін теріп көріңіз және жарық диодты қараңыз.

./rgbDriver

0 255 0 100 0 100 255 255 0… т.б.… ^c

Сізде параллель жұмыс істейтін осы процестердің 2 -сі жоқ екеніне көз жеткізіңіз.

Node.js серверін қоса бағдарламалық қамтамасыз етудің толық пакетін іске қосу үшін мына пәрменді қолданыңыз:

sudo түйіні rgb_main.js

Node.js серверін тоқтатқыңыз келсе, cntl-c пайдаланыңыз

sudo түйіні rgb_main.js &

оны артқы жағында іске қосу үшін, бірақ содан кейін оны тоқтату үшін 'sudo kill -9 pid' пәрменін қолдану қажет болады. Егер бұл команда сізге бөтен болып көрінсе, мына командалардың шығуын қарастырыңыз: 'man kill' & 'man sudo'.

Жұмыс үстелінде, планшетте немесе телефонда жергілікті желіге қосылған шолғышты қолданыңыз. Http: // raspberrypi: 8080/сілтемесіне өтіңіз немесе егер ол жұмыс істемесе, 192.168.1.15 сияқты порттың спецификациясына ұқсас құрылғының IP-мекен-жайын пайдаланыңыз (8080 немесе Pi-Zero-ны қолдансаңыз) GUI: localhost: 8080 жұмыс істейді.

Пайда болған бетте RGB сырғытпаларын қолданыңыз және RGB-LED шамының қосылып тұрғанын қараңыз.

Басқа пайдалы командалар Есіңізде болсын, егер сіз бір уақытта бірнеше rgbDriver іске қосылсаңыз, сізде күтпеген әрекеттер пайда болуы мүмкін. Егер сіз rgb_main.js екінші көшірмесін іске қосып, іске қоссаңыз, ол қате жібереді.

Бұл пәрмен барлық байланысты процестерді тізімдейді:

ps aux | grep rgb

Бұл команда rgbDriver еншілес процестерімен бірге барлық nodeJS процестерін өлтіреді:

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 индексінің күнделікті өзгеруін бақылау үшін веб -бет жасадым. Оның көзі кейбір веб-деректерді пайдаланатын және сіздің Pi-Zero индикаторыңызды басқаратын жеке парағыңыз үшін нұсқаулық ретінде пайдаланылуы мүмкін. Бұл бет өзінің (json) деректерін Google веб -қызметінен алады. Веб -қызметтердің көптеген түрлері бар, сондықтан сіз оған кіру үшін JavaScript кодын анықтау үшін пайдаланғыңыз келетінін зерттеуіңіз керек.

Егер сіз құрылғыны пайдаланғыңыз келсе, мен сияқты, Dow индексінің арнайы оқшаулау индикаторы бұл жолдарды ~/.bash_profile файлының соңына немесе қалаған SSH қосады және екінші пәрмен жолын шығарады.. Егер сіз кейіннен «kill -9» қашықтан басқару құралын қолданғыңыз келсе, нәтижесінде эпифаниялық -шолғыш процесі жүреді.

ұйықтау 20

epiphany-browser-көрсету =: 0.0 localhost: 8080/Dow_Jones_Index.html &

Индикатор 0 мәнімен ашық сұр түспен жанады. Ол жоғары мәндермен барған сайын жасыл түске айналады. Бұл шамамен 250 шамасындағы таза жасыл түс. Ең жоғары мәндер бастапқыда таяз жарықтықты тудырады, ең тереңі 500 шамасында. Теріс мән үшін (Dow -тің күнделікті тамшылары) ол ұқсас, бірақ қызыл.

ЖАҢАРТУ мамыр 2018

Мен.html файлының жүктелмеуіне байланысты.txt файлы ретінде бекітілген жаңа SolarStorm_devCon.html веб -бетін құрдым, ол GeoMagnetic дауыл туралы ақпаратты жинайды (ол жойқын CME, EMP туралы алдын ала айтуы мүмкін) және оны түс көрсету үшін қолданады. Geo-Storm 'DevCon' индексін көрсететін шкала. ғарыштық ауа райының әсерінен болатын электромагниттік импульстің (ЭҚЖ) апат ықтималдығын көрсететін, шамасы күннің жарылуы немесе корональды массаның шығарылуы (CME). Оны «Dow_Jones_Index.html» қолданғандай қолданыңыз.

6 -қадам: веб -бетті қашықтан басқару

Image
Image

Осы сәтте сіз IOT түсті шамды жергілікті желінің кез келген жерінен басқара аласыз. Оны жалпыға ортақ интернетте қалай көрсету керек - бұл нұсқаулықтың бөлігі емес. Егер сіз құрылғыға жалпы IP орнатсаңыз, сізге қажет. сіздің IP -беттеріңізді JavaScript -те ашық ұяшық пәрменінде пайдаланыңыз (мысалы, ~/node_rgb/public/index.html)

Мен Pi-Zero IOT құрылғысын Dow Jones индексінің күндізгі өзгерісі үшін нақты уақыттағы түс көрсеткіші ретінде қолдануды жоспарлап отырмын. Мен google.com/finance сайтынан json деректерін алатын бетті жасадым, содан кейін осы шағын IOT құрылғысын қолданудың кең ауқымын көрсету үшін бірнеше веб -беттер жасадым. менің жалпыға қолжетімді веб-сервердегі беттерді орналастырды (қазіргі уақытта 71.04.135.81 aka: https://raspi.ddns01.com/ менің тегін динамикалық домендік атау сервері жұмыс істеп тұрғанда), ол B Raspberry-Pi түпнұсқалық нұсқасында жұмыс істейді..

Қашықтағы беттердегі кодта мен 192.168.1.41:8080 розетка қосылымдарын аштым, мен Pi-Zero IP-ін 192.168.1.41-ге бекіттім. Дәл осылай істеу үшін таңқурай-pi-wifi-мен-статикалық-IP-баптау бойынша нұсқауларды орындаңыз: Тұрақты IP-адрес. Егер сіз PiZero-ді жергілікті желіде 192.168.1.41 деп орнатсаңыз., менің веб -сайтымнан ашылған бұл беттер сіздің құрылғыңызбен байланысады, себебі байланыс клиент тарапынан жүзеге асады.

Міне, мен бұрын Pi-Zero IOT жарықтандыру құрылғысын тексеріп, басқаратын беттер. Егер сіз осы беттерді (https://71.84.135.81/iot/rgbLamp/ aka https://raspi.ddns01.com/iot/rgbLamp/ немесе сол бетте жиектелген беттердің біреуін) ашсаңыз, клиенттік JavaScript болады. жасалынған IOT жарығын жүргізіңіз (егер ол «192.168.1.41:8080» сілтемесінде жұмыс істейтін болса). Қаласаңыз, сол беттердің кез келгенінің көзін көшіріп, өз қалауыңыз бойынша өзгерте аласыз.

Бірінші бетте құрылғыны кез келген түске орнатуға болады. Жарықдиодты шам және веб -бетте көрген түс өте жақсы бақыланады. Қолданылатын қарсылық мәндерін дәл сәйкестендіру үшін оларды өзгертуге болады (сонымен қатар монитор). Мен олардың сәйкес келуін қамтамасыз ету үшін аз уақыт жұмсадым. Кез келген адам түсін өзгертсе және сервер жаңартылған ақпарат хабарламасын жіберсе, бұл бет өзінің түсін жаңартады.

Бір бет - бағдаршаммен басқарылатын қарапайым түйме.

Спорттық жарысты (мысалы, футбол, баскетбол, бейсбол), сайлауды бақылауға арналған, немесе тіпті қаражат жинауға немесе DEFCON дабыл деңгейінің мәнеріне бейімделген бет бар. Ұпайларды (немесе берілген сайлау дауыстарын) автоматты түрде веб -қызметтен алуға немесе басқа веб -бетті өшіруге болады. Менде Contest_demo бетін басқаратын автоматты беріліс жоқ. Ноу-хауы бар адам қуатты светодиодты шамдарды қосуға және алдыда команданың түсі бар бөлмені (немесе спорттық штангаға) жууға қуат драйверін қосуы мүмкін. Өкінішке орай, мен биылғы суперкубок партиялары үшін бұл нұсқаулықтан тым кеш қалдым, бірақ 2016 жылғы сайлауға.

Содан кейін мен құрылғыны Dow Jones бақылау көрсеткішіне айналдыру үшін қолданатын бетке ұқсас бет бар. Жүгірткі мен түймелер көрсету мақсатында DJI демонстрациялық бетінде ғана. Бұл беттің көзінде жасыл экраннан шабыттандырылған суретті қайта бояу үшін мен жасаған код бар; жеткілікті түсініктемелермен сіз оны пайдалы деп санай аласыз.

Осы 4 беттің тек біріншісі (Pi-Zero негізіндегі index.html бетімен бірге) серверді жаңарту туралы хабарларды тыңдайды және сәйкесінше жаңартады. Қалғанының бәрі серверге жіберіледі.

Ұсынылған: