Мазмуну:

RPi-Zero IoT Event Indicator / Color Lamp: 6 Steps (Сүрөттөр менен)
RPi-Zero IoT Event Indicator / Color Lamp: 6 Steps (Сүрөттөр менен)

Video: RPi-Zero IoT Event Indicator / Color Lamp: 6 Steps (Сүрөттөр менен)

Video: RPi-Zero IoT Event Indicator / Color Lamp: 6 Steps (Сүрөттөр менен)
Video: Night 2024, Июль
Anonim
RPi-Zero IoT Event Indicator / Color Lamp
RPi-Zero IoT Event Indicator / Color Lamp
RPi-Zero IoT Event Indicator / Color Lamp
RPi-Zero IoT Event Indicator / Color Lamp
RPi-Zero IoT Event Indicator / Color Lamp
RPi-Zero IoT Event Indicator / Color Lamp

Эч кандай кошумча микро контроллер, & HAT кошумча модулу талап кылынбайт. RPi-Zero баарын кылат. Жакшыраак RPi-Zero W колдонуңуз!

Үлгү колдонуу: Веб -кызматтын мамлекеттик индикатору (мис. DowJonesIndexти көзөмөлдөө), Саясий же спорттук иш -чаралардын абалынын индикатору, маанай жарыгы, сенсорго көз салуу, сиз аны атаңыз. Видеону 6 -кадамда көрүңүз.

Raspberry-Pi бир гана PWM линиясын колдойт. Бул долбоорго 3 PWM линиясы керек, ошондуктан мен PWM 'c' китепканасын колдонгон программаны колдондум (https://wiringpi.com/reference/software-pwm-library/), аны орнотуу керек.

Мен иштетүүнү 2 процесске бөлдүм. Бир, үзгүлтүккө учураган, башкаруу линияларын LEDге керектүү түрдө которуу, анын "стдин" агымынан марш заказдарын алуу. Экинчиси, IO сокетин колдонгон окуяга негизделген nodeJS сервери. Бул жооп берүүнү камсыз кылуу менен жарыктын жарк этип кетпеши үчүн. Адатта, комбинация процессордун 5% дан азын колдонот. Түстөрдү үзгүлтүксүз жаңыртуу учурунда (слайдерлер жана/же көптөгөн кардарлар аркылуу) 50% дан ашыгын колдоно алат (айрыкча браузерди Pi-Zero GUIде колдонгондо). Көңүл буруңуз, өзгөртүү келгенде, жаңыртуу эскертмелери бардык ачык розетка кардарларына чыгат.

1 -кадам: Сизге эмне керек

Сизге эмне керек
Сизге эмне керек
Сизге эмне керек
Сизге эмне керек
  • Pi-Zero микро 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 Hub тиркелди (Сиз зымсыз чычканды жана/же клавиатураны колдонсоңуз болот, бирок, албетте, хабга тышкы кубат талап кылынат). Мен адаптерлерди жана буга чейин болгон хабымды колдондум.

Эми мониторду жана 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 баскычтуу (Intl) PC… Кыргызча (АКШ)

Мен үчүн Улуу Британиянын клавиатура стандарты (Raspbian алдын ала коюлган) менин түзөтүүлөрүмдүн көбүн чыныгы түйшүккө айлантты.

Бул орнотууларды сизге ылайыктуу түрдө өзгөртүңүз. "Raspi-config" ичинде чабыттоо үчүн жебе баскычтарын жана өтмөк баскычын колдонуу керек экенин эске алыңыз; жана тандоодон кийин жооп берүү өтө жай болушу мүмкүн.

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

Эми мен жалпы өнүгүүгө даяр болчумун.

Бул жерге жетүү үчүн көптөгөн жолдорду басып өтүүгө болот. Ушул убакка чейин мен бул жерде майда -чүйдөсүнө чейин маалымат берген жокмун, бирок интернетте кеңири сүрөттөлгөн көптөгөн ыкмалар жана конфигурациялар бар. Бул инструкцияда иштелип чыгуучу кадамдарды жасоо үчүн жеке компьютериңиздеги алыскы ssh терминал терезесин колдоно турган башсыз орнотуу үчүн бирөө.

3 -кадам: Өнүгүү чөйрөсү жана куралдар

Өнүгүү чөйрөсү жана куралдар
Өнүгүү чөйрөсү жана куралдар
Өнүгүү чөйрөсү жана куралдар
Өнүгүү чөйрөсү жана куралдар

Мен долбоор үчүн иштелип чыккан тутумдун конфигурациясын орнотуу жана программалык камсыздоо үчүн Raspberry Pi-2де R&D жасадым; анткени анын төрт ядролуу процессору бар жана бир нече терезелери бар, кодду иштеп чыгууну тездетет. Бул долбоорду ишке ашыруу үчүн, албетте, Raspberry-Pi моделин колдонсоңуз болот.

Node.jsти орнотуу үчүн (окуяга негизделген I/O сервердик JavaScripting колдоосу) мен төмөнкүлөрдү кылдым …

sudo apt-get update

sudo apt-get nodejs npm орнотуу

Бул nodeJS топтомдорун кошуу (npm Nodejs Package Manager)

npm express орнотуу

npm socket.io орнотуу

Шилтемелер:

www.npmjs.com/package/express Тез, минималисттик веб -алкак

www.npmjs.com/package/socket.io Socket. IO реалдуу убакытта эки багыттуу окуяга негизделген байланышты иштетет

4 -кадам: Аппараттык

Аппараттык
Аппараттык
Аппараттык
Аппараттык
Аппараттык
Аппараттык
Аппараттык
Аппараттык

Бардык үч LED түстүү сегменттер үчүн чыңалуунун төмөндөшү жана эффективдүүлүгү айырмаланып, колдонулган каршылыктын мааниси ар башка. GPIO Жогорку чыгаруу деңгээли бардыгы болжол менен 3,2 вольтту түздү. Ар бир LED сегменти PiZero оңой башкара турган 20мадан аз жана болжол менен 40маны (<50ма максималдуу уруксат берилген) аз керектээрин текшерүү үчүн текшерилген. Мен мүмкүн болушунча көп жарыктын жарыгын алдым, түздөн -түз LED айдап; бул менин муктаждыктарым үчүн көп. Жогорку агымдарды айдап чыгуу үчүн, бир кыйла жаркыраган өндүрүш үчүн, аралык дисктеги транзисторлор 5V линиясына туташкан жалпы аноддук LED менен колдонулушу мүмкүн. мен үчүн жакшы тандоо болмок.

Байкасаңыз, мен эркек төөнөгүчтөрдүн башын колдонуп, LED буттарына F-F секиргичтери менен туташтым. Бул жалпы бийиктигин сактап калды. Мен каршылаштарды секирүүчүлөрдүн ортосуна коштум. Электрондук тактаны же ширетпөөчү тактайды колдонбостон, Wi-Fi түйүнү үчүн USB адаптерине туура бурчтуу микро-USB колдонуу менен, акыркы жыйынды бир топ компакт кылды.

Диффузор үчүн мен пинг-понг шарын сунуштайм (5-8-10 мм диоддук диодду киргизүү үчүн жетишерлик чоң тешик бургулоо оңой). Же LED лампочкасынын үстүн кесип салыңыз (Пластикалык диффузорду колдонот). Бул белгини белгилөө үчүн, сиз кескиңиз келген, учу кесилген өткүр сызыкты жана жука кесилген тиркемеси бар 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' киргизиңиз.

C процессин түзүңүз/rgbDriver:

cd ~/node_rgb

cc -o rgbDriver rgbDriver.c -swiringPi -lpthread

Эквиваленттүүлүктү жүктөө жана кеңейтүү

Node_rgb.tgzди (төмөндө) Pi-Zeroго үй каталогуна (~ pi) жүктөө үчүн, сиз төмөндөгү үчөөнүн бирин жасай аласыз:

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

    mv FZBF9BDIL6VBHKF.tgz rgb_node.tgz

  3. Компьютериңиздеги браузерден жүктөп алыңыз. WinSCPти Pi-Zero ~ папкасына көчүрүү үчүн колдонуңуз.

Жогорудагы #1 2 же 3тү аткаргандан кийин…

cd ~

tar -xzvf node_rgb.tgz дарагы node_rgb… node_rgb ├── ачык js, start_rgb, kill_rgb, track_dji

Натыйжада аткарылуучу (жогорудан) 'rgbDriver' Node.js интерфейс процессине көз карандысыз колдонулушу мүмкүн.

Бул драйвердин жана жабдыктын иштеп жаткандыгын текшерүү үчүн, боштук менен ажыратылган үч маанидеги топтомдорду (0-255) айдоочуга бергиле. Like 'echo 255 0 0 |./rgbDriver 'кызыл же' echo 0 255 0 | жашыл үчүн./rgbDriver '. Белгилей кетсек, "./" ОСке биздин каталогу биздин "rgbDriver" программасын табууну айтат. Айдоочуну токтотуу үчүн a ^c (cntl-c) чыгарганда, жол чырагы күйүп калышы мүмкүн. Же болбосо, интерактивдүү түрдө анын баалуулуктарын бере аласыз. Команда сабынан бул саптарды биринин артынан бирин терип көрүңүз жана LEDди көрүңүз.

./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 дарегин (cmd 'ifconfig' алынган) колдонуңуз: 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 Indexтин күнүмдүк өзгөрүүсүн көзөмөлдөө үчүн веб баракча түздүм. Булакты кээ бир веб-маалыматтарды колдонгон жана ошого жараша Pi-Zero индикаторуңузду айдаган өз баракчаңыз үчүн көрсөтмө катары колдонсо болот. Бул баракча өзүнүн (json) маалыматтарын Google веб кызматынан алат. Веб -сервистердин көптөгөн түрлөрү бар, андыктан сиз ага кирүү үчүн JavaScript кодун аныктоо үчүн колдонгуңуз келген нерсени изилдөөңүз керек болот.

Эгерде сиз түзмөгүңүздү колдонууну кааласаңыз, мен сыяктуу эле, Dow Index өзгөртүү индикатору бул саптарды ~/.bash_profile файлынын аягына же каалаган SSHге кошуп, экинчи буйрук сабын чыгарат.. Эгерде сиз кийинчерээк алыстан башкарууну колдонууну кааласаңыз, "өлтүрүү -9" натыйжасында эпифания -браузер жараяны.

уктоо 20

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

Көрсөткүч 0 маанисинде ачык боз түстү жарыктандырат. Ал жогорку мааниге ээ болгон сайын жашыл болуп калат. Бул эң жаркын таза жашыл, болжол менен 250. Жогорку, бирок баалуулуктар адегенде тайыз жарк, 500гө жакын эң терең жарк этүүгө алып келет. Терс мааниде (Dowтун күнүмдүк тамчылары) ал окшош, бирок кызыл түстө.

UPDATE Май 2018

Мен жаңы веб -баракча (SolarStorm_devCon.html,.htxt файлы жүктөлбөгөндүктөн.txt файлы катары тиркелди) түздүм, ал GeoMagnetic бороон -чапкын маалыматын чогултат (ал кыйратуучу CME, EMPти алдын ала айтат) жана аны түс көрсөтүү үчүн колдонот Geo-Storm 'DevCon' индексин чагылдырган масштаб. космостук аба ырайынан, болжол менен күндүн жарылуусунан же Короналдык массалык эжекциядан (CME) келип чыккан Электромагниттик импульстун (EMP) кесепетинен кырсыктын потенциалын көрсөтүүдө. Аны "Dow_Jones_Index.html" колдонгон сыяктуу колдонуңуз.

6 -кадам: Алыстан Web баракчасын башкаруу

Image
Image

Бул жерде сиз IOT түстүү лампаңызды жергиликтүү тармагыңыздын каалаган жеринен башкара аласыз. Аны жалпыга ачык интернетте кантип көрсөтсөңүз болот, эгер бул сиздин түзмөгүңүз үчүн ачык IP орнотсо, анда сизге керек болот. барактарыңыздын JavaScriptиндеги ачык сокет буйругундагы IPди колдонуңуз (мис. ~/node_rgb/public/index.html)

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

Алыскы барактардагы коддо мен 192.168.1.41:8080 үчүн розетка туташууларын ачтым, мен Pi-Zero IPиди 192.168.1.41ге бекиттим. Ушундай кылыш үчүн, малина-пи-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" url дарегинде иштейт) Эгер кааласаңыз, ошол барактардын бирин булактан көчүрүп, өзүңүз каалагандай өзгөртө аласыз.

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

Бир барак - бул светофор көзөмөлдөгөн жөнөкөй баскыч.

Спорттук мелдешти (мисалы, футбол, баскетбол, бейсбол), шайлоону көзөмөлдөө үчүн иштелип чыккан баракча бар, же ал тургай фонд көтөрүүчүгө же DEFCON эскертүү деңгээлинин стили индикаторуна ылайыкташтырылган. Упайлар (же берилген добуштар) автоматтык түрдө веб -кызматтан алынышы же башка веб -баракчадан алынышы мүмкүн. Менин Contest_demo баракчамды башкарган автоматтык түрмөк жок. Туура ноу-хауга ээ болгон бирөө, алдыда турганда, жогорку кубаттуулуктагы светодиоддук чырактарды иштетүү жана команданын түсү бар бөлмөдө (же спорттук тилкеде) жуунуу үчүн кубаттуу драйверди кошо алмак. Тилекке каршы, мен быйылкы суперкеңеш партиялары үчүн бул көрсөтмө менен өтө кеч калдым, бирок 2016-жылдагы шайлоого.

Андан кийин, мен аппаратты Dow Jonesтун көзөмөлдөө индикаторуна айландыруу үчүн колдоно турган баракчага окшош барак бар. Слайдер жана баскычтар көрсөтүү максатында DJI демо барагында гана. Бул баракчанын булагында жашыл экрандан шыктандырылган сүрөттү кайра түстөө үчүн иштелип чыккан код бар; жетиштүү комментарийлер менен сиз дагы аны пайдалуу деп таба аласыз.

Бул 4 барактын биринчиси гана (Pi-Zero негизделген index.html баракчасы менен бирге) сервердин жаңыртуу билдирүүлөрүн угат жана ошого жараша жаңыртат. Калганынын баары серверге гана жөнөтүлөт.

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