Распберри Пи

Изградите сопствену метеоролошку станицу Распберри Пи

Изградите сопствену метеоролошку станицу Распберри Пи
Распберри Пи Сенсе Хат је додатна плоча која се може користити са Распберри Пи рачунарима са једном плочом. Шешир Распберри Пи Сенсе има 8 × 8 ЛЕД дисплеј и џојстик са 5 тастера, а испоручује се са следећим сензорима:

  1. Жироскоп
  2. Акцелерометар
  3. Магнетометар
  4. Температура
  5. Притисак на барометру
  6. Влажност

У овом чланку ћу вам показати како да креирате веб апликацију засновану на Питхон АПИ-ју помоћу метеоролошке станице температура, притисак на барометру, и влажност сензори Распберри Пи Сенсе Хат-а. Да бисте наставили са овим чланком, требаће вам следеће:

  1. Распберри Пи 3 или Распберри Пи 4 са мрежном повезаношћу.
  2. Модул Распберри Пи Сенсе Хат.
  3. Микро-УСБ (Распберри Пи 3) или УСБ Типе-Ц (Распберри Пи 4) адаптер за напајање.
  4. МицроСД картица од 16 ГБ или 32 ГБ са ОС Распберри Пи.
  5. Лаптоп или стони рачунар за ВНЦ приступ удаљеној радној површини или ССХ приступ Распберри Пи-у.

БЕЛЕШКА: У овом чланку ћемо се повезати са Распберри Пи даљински преко ВНЦ или ССХ користећи безглаво подешавање Распберри Пи. Ако не желите даљински да приступите Распберри Пи преко ССХ или ВНЦ, мораћете да повежете монитор, тастатуру и миша са Распберри Пи.

Да бисте сазнали како да флешујете слику Распберри Пи ОС-а на мицроСД картицу, погледајте Како инсталирати и користити Распберри Пи Имагер. Ако вам је потребна помоћ при инсталирању Распберри Пи ОС на ваш Распберри Пи, прочитајте Како инсталирати Распберри Пи ОС на Распберри Пи 4. Ако вам је потребна помоћ око безглавог подешавања Распберри Пи, погледајте Како инсталирати и конфигурисати ОС Распберри Пи на Распберри Пи 4 без спољног монитора.

Повезивање шешира Распберри Пи Сенсе Хат са Распберри Пи

Комплет Распберри Пи Сенсе Хат долази са плочом за додатак Распберри Пи Сенсе Хат, 40-пинским заглављем мушко-женско и неким завртњима и одстојницима.

Да бисте могли да причврстите плочу Сенсе Хат на Распберри Пи, морате да повежете 40-пинско заглавље на Сенсе Хат. Спојите мушке иглице 40-пинског мушко-женског заглавља на Сенсе Хат, као што је приказано на сликама испод.

Рачунари са једном плочом Распберри Пи имају 4 рупе које се могу користити за причвршћивање додатних плоча или кућишта. Да бисте причврстили додатну плочу, уметните завртње са задње стране Распберри Пи, као што је приказано на сликама испод.

Затим спојите одстојник на вијак.

Једном када додате сва четири завртња и одстојнике, ваш Распберри Пи би требао изгледати као онај приказан на слици испод.

Повежите Распберри Пи Сенсе Хат са 40-пинским ГПИО мушким заглављем Распберри Пи, као што је приказано на сликама испод.

БЕЛЕШКА: Будите пажљиви док одспајате Распберри Пи Сенсе Хат од заглавља Распберри Пи 40-пинског ГПИО-а како бисте избегли савијање затича Распберри Пи ГПИО.

Са четири преостала вијка причврстите Распберри Пи Сенсе Хат, као што је приказано на сликама испод.

Укључивање Распберри Пи

Сада када је Распберри Пи Сенсе Хат повезан са Распберри Пи, убаците мицроСД картицу са Распберри Пи ОС у утор за мицроСД картицу Распберри Пи, повежите кабл за напајање са Распберри Пи и укључите га.

Инсталирање Распберри Пи Сенсе Хат Питхон библиотеке

Да бисте користили Распберри Пи Сенсе Хат на Распберри Пи, тхе чул-шешир Питхон библиотека мора бити инсталирана на ОС Распберри Пи. Тхе чул-шешир Библиотека је доступна у службеном спремишту пакета ОС Распберри Пи.

Да бисте инсталирали Распберри Пи чул-шешир Питхон библиотека на ОС Распберри Пи, прво ажурирајте кеш спремишта АПТ пакета следећом наредбом:

$ судо апт упдате

Затим покрените следећу команду:

$ судо апт инсталирај сенсе-хат -и

Инсталирање Питхон библиотеке Фласк Мицро Веб Фрамеворк

Користићемо Фласк Питхон фрамеворк за креирање наше временске апликације. Фласк можете инсталирати из званичног спремишта пакета ОС Распберри Пи помоћу следеће наредбе:

$ судо апт инсталирај питхон3-фласк -и

Креирање директорија пројеката

Добра је идеја створити директоријум пројекта за организовање датотека пројекта. Да бисте креирали директоријум пројекта ~ / рад, користите следећу команду:

$ мкдир ~ / рад

Када се креира директоријум пројекта, дођите до директорија пројекта на следећи начин:

$ цд ~ / рад

Тестирање шешира Распберри Пи

Да бисмо тестирали да ли Распберри Пи Сенсе Хат ради, можемо написати једноставну тестну Питхон скрипту. Можете створити нову Питхон скрипту која се зове тест.пи са нано уређивач текста на следећи начин:

$ нано тест.пи

Унесите следећи код у тест.пи датотека. Увоз линије 1 СенсеХат од сенсе_хат модул, ред 3 креира а СенсеХат објект и чува референцу у смисао променљива, а линије 5-6 постављају боју свих 8 × 8 ЛЕД на црвену. Када завршите, притисните + Икс затим И и .

Можете покренути тест.пи Питхон скрипта са следећом наредбом:

$ питхон3 тест.пи

8 × 8 ЛЕД матрица треба да светли црвеном бојом као што је приказано на доњој слици.

Да бисте искључили ЛЕД диоде Сенсе Хат-а, покрените јасно() метода без икакве вредности боје у тест.пи Питхон скрипту, као што је приказано на снимку екрана испод, и покрените тест.пи Поново Питхон скрипта.

ЛЕД диоде Сенсе Хат-а сада би требало да се искључе, као што је приказано на доњој слици.

Ако Сенсе Хат ради исправно, пређите на следећи одељак.

Добијање временских података из Сенсе Хат-а

Податке о сензорима из Сенсе Хат-а можете врло лако добити помоћу чул-шешир Питхон библиотека. Да бисте преузели податке сензора из Сенсе Хат-а, можете створити нову Питхон скрипту реад_сенсор_дата.пи као што следи:

$ нано реад_сенсор_дата.пи

Унесите следећи код у реад_сенсор_дата.пи Питхон датотека.

фром сенсе_хат импорт СенсеХат
од времена увозни сан
сенсе = СенсеХат ()
смисао.јасно()
вхиле Труе:
темпЦ = смисао.гет_температуре ()
темпФ = темпЦ * (9/5) + 32
притисак = осећај.гет_прессуре ()
влажност = осећај.гет_хумидити ()
принт ("Температура:%.2 ° Ц /%.2ф ° Ф \ н "% (темпЦ, темпФ))
принт ("Притисак:%.2ф мб \ н "% (притисак))
принт ("Влажност:%.2ф %% \ н \ н "% (влажност))
спавање (5)

Када завршите, притисните + Икс затим И и .

У коду изнад, редови 1 и 2 увозе све потребне библиотеке, ред 4 креира а СенсеХат објекта, а линија 5 искључује све ЛЕД диоде Сенсе Хат-а помоћу јасно() метода. Петља вхиле у реду 7 је бесконачна петља која ће заувек покретати код у редовима 8-16.

У реду 8, гет_температуре () метода се користи за очитавање података о температури (у степенима Целзијуса) са сензора влажности Сенсе Хат-а. У реду 9, подаци о температури се претварају из степени Целзијуса у степене Фахренхеита. У реду 10, гет_прессуре () метода се користи за очитавање података о ваздушном притиску (у милибарима) са сензора притиска Сенсе Хат-а. У реду 11, гет_хумидити () метода се користи за очитавање података о влажности (у%) са сензора влажности Сенсе Хат-а.

Редови 13-15 користе се за испис података сензора на конзолу, а редови 16 користе се за чекање 5 секунди пре поновног очитавања података сензора.

Можете покренути реад_сенсор_дата.пи Питхон скрипта на следећи начин:

$ питхон3 реад_сенсор_дата.пи

Након покретања скрипте, подаци сензора ће се исписати на конзолу.

Сада када можемо да читамо податке сензора са Сенсе Хат-а, притисните + Ц да заустави програм.

Израда веб апликације Веатхер Статион

У овом одељку ћемо вам показати како да користите веб оквир Питхон Фласк за креирање временског АПИ-ја и временске апликације. Апликација за време приступиће АПИ-ју за податке о времену и приказати податке о времену у реалном времену. Сав код о коме се говори у овом одељку доступан је на ГитХуб-у на сховон8 / распберри-пи-сенсе-хат-веатхер-апп.

Прво створите а сервер.пи Питхон скрипта у директоријуму пројекта на следећи начин:

$ нано сервер.пи

Унесите следећи код у сервер.пи Питхон датотека.

из тиквице увоз Боца
из тиквице импорт јсонифи
из увоза тиквице рендер_темплате
из увоза тиквице урл_фор
фром сенсе_хат импорт СенсеХат
апп = чутура (__ име__)
апликација.цонфиг ['СЕНД_ФИЛЕ_МАКС_АГЕ_ДЕФАУЛТ'] = 0
сенсе = СенсеХат ()
смисао.јасно()
са апликацијом.тест_рекуест_цонтект ():
урл_фор ('статиц', име датотеке = 'стиле.цсс ')
урл_фор ('статиц', филенаме = 'апп.јс ')
@апликација.роуте ('/ апи')
деф апи ():
темпЦ = смисао.гет_температуре ()
темпФ = темпЦ * (9/5) + 32
притисак = осећај.гет_прессуре ()
притисакПси = притисак * 0.0145038
притисакП = притисак * 100
влажност = осећај.гет_хумидити ()
ретурн јсонифи (
"температура": "Ц": темпЦ, "Ф": темпФ,
"притисак": "мб": притисак, "хПа": притисак,
"пси": притисакПси, "П": притисакП,
„влага“: влага
)
@апликација.рута('/')
деф хоме ():
ретурн рендер_темплате ('./кућа.хтмл ')

Затим притисните + Икс затим И и да спаси сервер.пи Питхон скрипта.

У горњем коду, редови 1-5 увозе све потребне библиотеке, ред 7 креира апликацију Фласк, ред 11 креира објекат СенсеХат, а ред 12 искључује све ЛЕД диоде Сенсе Хат-а. Ред 8 онемогућава веб кеширање за апликацију Фласк. Будући да је ова апликација лагана, нема потребе за кеширањем. Ако желите да измените апликацију, онемогућавање веб кеширања ће знатно олакшати тестирање.

Линије 18-31 очитавају податке сензора из Сенсе Хат-а и враћају АПИ податке у ЈСОН формату на ХТТП ГЕТ захтев у / апи крајња тачка веб сервера. Линије 37-39 враћају почетну страницу веб апликације за временске прилике на / крајња тачка веб сервера. Почетна страница се приказује са кућа.хтмл датотека, која би требала бити у предлошци / директоријум директорија пројекта.

Линије 14-16 се користе за омогућавање приступа стил.цсс и апликација.јс статичке датотеке. Ове датотеке би требале бити у статиц / директоријум директорија пројекта. Тхе стил.цсс датотека се користи за обликовање датотеке кућа.хтмл почетну страницу и апликација.јс датотека се користи за тражење АПИ података из / апи крајњу тачку и ажурирајте временске податке на кућа.хтмл страницу сваких 5 секунди.

Направите статиц / и предлошци / директоријум у директоријуму пројекта на следећи начин:

$ мкдир -в статиц, предлошци

Створити кућа.хтмл датотека у предлошци / директоријум како следи:

$ нано предлошци / дом.хтмл

Унесите следећи код у кућа.хтмл датотека.





Метеоролошка станица Распберри Пи
хреф = "урл_фор ('статиц', филенаме =" стиле.цсс ")" />



Метеоролошка станица Распберри Пи



Температура












Притисак




















Влажност











Затим притисните + Икс затим И и да спаси кућа.хтмл датотека.

Створити стил.цсс датотека у статиц / директоријум како следи:

$ нано статички / стил.цсс

Унесите следеће кодове у стил.цсс датотека.

@импорт урл ('хттпс: // фонтови.гооглеапис.цом / цсс2?породица = Робото & дисплаи = свап ');
*
попуњавање: 0;
маржа: 0;
породица фонтова: 'Робото', санс-сериф;

тело
позадина: # 737373;

х1
дисплеј блок;
боја: # 79ДЦ7Б;
поравнање текста: центар;
тежина фонта: 400;
позадина: # 000;
попуњавање: 0.5ем 0;

х2
дисплеј блок;
позадина: # 000;
боја: #ффф;
поравнање текста: центар;
тежина фонта: 400;
величина фонта: 1ем;

.дата-цонтент
маржа: 10пк;
обруб: 2пк пуна црна;
радијус границе: 5пк;
боја позадине: # 79ДЦ7Б;

.дата-ров
дисплеј: флек;
флек-правац: ред;

.дата-целл
ширина: 100%;
висина: 80пк;
дисплеј: флек;
алигн-итемс: центер;
јустифи-цонтент: центар;
фонт-веигхт: болд;
величина фонта: 1.5ем;
боја: # 006902;

.дата-целл: ховер
позадина: # ФФЕ891;
боја: # АА8600;
курсор: показивач;

Затим притисните + Икс затим И и да спаси стил.цсс датотека.

Направите апликација.јс датотека у статиц / директоријум како следи:

$ нано статиц / апп.јс

Унесите следећи код у апликација.јс датотека.

прозор.аддЕвентЛистенер ('лоад', главни);
функција маин ()
функција гетАПИДата ()
вар хттп = нови КСМЛХттпРекуест ();
хттп.онреадистатецханге = фунцтион ()
ако је ово.реадиСтате === 4 && ово.статус === 200)
упдате (ЈСОН.рашчланити (ово.респонсеТект));


хттп.отворено ("ГЕТ", "/ апи", тачно);
хттп.сенд ();

ажурирање функције (апиДата)
вар темпЦ = документ.гетЕлементБиИд ("темпЦ");
вар темпФ = документ.гетЕлементБиИд ("темпФ");
вар прессуреМб = документ.гетЕлементБиИд ("прессуреМб");
вар прессуреПси = документ.гетЕлементБиИд ("прессуреПси");
вар прессуреХпа = документ.гетЕлементБиИд ("притисакХпа");
вар прессуреП = документ.гетЕлементБиИд ("притисакП");
вар влажност = документ.гетЕлементБиИд ("влажност");
темпЦ.иннерХТМЛ = парсеФлоат (апиДата.температура.Ц).фиксно (2) + "° Ц";
темпФ.иннерХТМЛ = парсеФлоат (апиДата.температура.Ф).фиксно (2) + "° Ф";
притисакМб.иннерХТМЛ = парсеФлоат (апиДата.притиска.мб).тоФикед (2) + "мб";
притисакПси.иннерХТМЛ = парсеФлоат (апиДата.притиска.пси).тоФикед (2) + "пси";
притисакХпа.иннерХТМЛ = парсеФлоат (апиДата.притиска.хПа).фиксно (2) + "хПа";
притисакП.иннерХТМЛ = парсеФлоат (апиДата.притиска.П).фиксно (2) + "П";
влажност.иннерХТМЛ = парсеФлоат (апиДата.влажност).тоФикед (2) + "%";

функција апликација ()
прозор.сетИнтервал (фунцтион ()
гетАПИДата ();
, 5000);

апликација();

Затим притисните + Икс затим И и да спаси апликација.јс датотека.

Овде, линија 1 покреће главни() функција када се веб страница заврши са учитавањем. У главни() функција, гетАПИДата () функција преузима податке АПИ-ја времена помоћу АЈАКС-а и позива ажурирање() функцију (у реду 10) након што подаци буду успешно дохваћени. Тхе ажурирање() функција ажурира елемент веб странице користећи АПИ податке.

У реду 20, документ.гетЕлементБиИд () метода се користи за добијање референце елемента веб странице са ид-ом темпЦ. Ред 28 се користи за замену садржаја елемента веб странице који има ид темпЦ са температуром (у Целзијусима) из АПИ-ја. На исти начин, садржај свих веб елемената (редови 21-26) замењују се њиховим одговарајућим АПИ подацима.

У апликација() функција, гетАПИДата () позива се сваких 5 секунди (5000 милисекунди) да би се подаци о времену ажурирали у апликацији за време. Коначно, у реду 46, апликација() функција се извршава.

Да бисте тестирали веб апликацију, унесите следећу команду:

$ ФЛАСК_АПП = сервер.пи фласк рун --хост = 0.0.0.0

Апликација за временске прилике требало би да ради на порту 5000 (подразумевано).

Да бисте тестирали да ли Веатхер АПИ ради, покрените следећу команду:

$ цурл -с хттп: // лоцалхост: 5000 / апи |. | јсон_пп

Као што видите, подаци АПИ-ја времена се штампају на конзоли. Према томе, АПИ ради.

Да бисте тестирали апликацију Веатхер, посетите хттп: // лоцалхост: 5000 из веб прегледача Цхромиум. Апликација Веатхер требало би да се учита у веб прегледач, али у почетку не би требало приказивати временске податке.

Након неколико секунди, временска апликација треба да заврши са преузимањем временских података из АПИ-ја и прикаже их.

У било ком тренутку можете притиснути + Ц да заустави веб сервер.

Стварање Системд услуге за Веатхер Веб апликацију

У овом одељку ћемо вам показати како да направите системску датотеку услуге за временску апликацију тако да ће аутоматски покренути након покретања.

Прво створите а метеоролошка станица.услуга датотеку у директоријуму вашег пројекта на следећи начин:

$ нано метео-станица.услуга

Унесите следеће редове кода у метеоролошка станица.услуга датотека.

[Јединица]
Опис = Веб апликација Распберри Пи Веатхер Статион помоћу шешира Распберри Пи Сенсе
После = мрежа.мета
[Услуга]
ВоркингДирецтори = / хоме / пи / ворк
Окружење = ФЛАСК_АПП = сервер.пи
Окружење = ФЛАСК_ЕНВ = производња
ЕкецСтарт = / уср / бин / фласк рун --хост = 0.0.0.0
СтандардОутпут = наследити
СтандардЕррор = наследити
Рестарт = увек
Корисник = пи
[Инсталирај]
ВантедБи = вишекориснички.мета

Затим притисните + Икс затим И и да спаси метеоролошка станица.услуга датотека.

Копирајте метеоролошка станица.услуга датотеке у / етц / системд / систем / директоријум са следећом наредбом:

$ судо цп -в метео-станица.сервис / етц / системд / систем /

Поново учитајте системд демоне да би промене ступиле на снагу на следећи начин:

$ судо системцтл даемон-релоад

Тхе метеоролошка станица услуга системд би тренутно требала бити неактивна, као што је приказано на снимку заслона испод.

$ судо системцтл статус метео-станице.услуга

Покрените метеоролошка станица сервис са следећом командом:

$ судо системцтл покрени метео-станицу.услуга

Као што видите, метеоролошка станица услуга је сада покренута.

$ судо системцтл статус метео-станице.услуга

Сад кад је метеоролошка станица услуга ради, можете је додати у системско покретање система Распберри Пи ОС следећом командом:

$ судо системцтл омогућава метео-станицу.услуга

Поново покрените Распберри Пи следећом командом:

$ судо ребоот

Једном када се Распберри Пи покрене, метеоролошка станица услуга би требала бити покренута, као што је приказано на снимку екрана испод.

$ судо системцтл статус метео-станице.услуга

Приступ апликацији Веатхер са других уређаја

Да бисте приступили апликацији за временске прилике са других уређаја у вашој кућној мрежи, морате знати ИП адресу вашег Распберри Пи. ИП адресу вашег Распберри Пи 4 можете пронаћи из веб интерфејса за управљање кућног рутера. У нашем случају, ИП адреса је 192.168.0.103, али ова адреса ће за вас бити другачија, зато је обавезно замените овом адресом у свим наредним корацима.

Ако имате приступ конзоли Распберри Пи, можете покренути следећу команду да бисте пронашли и ИП адресу.

$ хостнаме -И

Једном када сазнате ИП адресу вашег Распберри Пи, можете јој приступити са било ког уређаја у вашој кућној мрежи. Као што је приказано на снимку екрана испод, приступили смо апликацији за временске прилике са Андроид паметног телефона.

Закључак

У овом чланку смо вам показали како да користите Распберри Пи Сенсе Хат за изградњу временске станице Распберри Пи. Користили смо чул-шешир Питхон библиотека за издвајање временских података из Распберри Пи Сенсе Хат-а. Затим смо користили микро веб оквир Фласк Питхон за стварање временског АПИ-ја и веб апликације. Веб апликација добија временске податке из временског АПИ-ја сваких 5 секунди како би веб апликација била у току са најновијим временским подацима.

Инсталирајте најновији Долпхин Емулатор за Гамецубе & Вии на Линук
Долпхин Емулатор вам омогућава да играте изабране игре Гамецубе и Вии на Линук Персонал Цомпутерс (ПЦ). Долпхин Емулатор је слободно доступан и емула...
Како се користи ГамеЦонкуерор Цхеат Енгине у Линуку
Чланак покрива водич о коришћењу ГамеЦонкуерор варалице у Линуку. Многи корисници који играју игре на Виндовс-у често користе апликацију „Цхеат Енгине...
Најбољи емулатори играће конзоле за Линук
Овај чланак ће навести популарни софтвер за емулацију играће конзоле доступан за Линук. Емулација је слој компатибилности софтвера који опонаша хардве...