Jeffrey Cross
Jeffrey Cross

Галилео Пројецт: Креирајте приказ за праћење дана док МАКЕ не погоди Киоске

Слиједи прилагођени извадак из надолазеће књиге, Геттинг Стартед витх Интел Галилео.

Коришћење Интел Галилео-а за умрежене пројекте у кући је природно прилагођено. Са Ардуино пин компатибилношћу, умрежавањем и Линуком, то је моћна али флексибилна плоча. Пошто ове недеље истражујемо повезани дом, желео бих да поделим Галилео пројекат који се уклапа у ту тему. Мислим да повезан дом не значи само пребацивање прекидача и добијање температуре, већ и приказивање информација кориснику.

Направио сам једноставну веб-локацију под називом Колико дана до изласка? што служи једној једноставној сврси: говори вам колико дана до сљедећег броја МАКЕ магазина очекује се да ће стићи на киоске. Подаци се уносе у базу података на основу продукцијских календара које добијам као уредник МАКЕ доприноса. Служи бесплатни ниво Гоогле Апп Енгине-а, а изворни код за сајт је доступан на Гитхуб-у ако желите да погледате како сам га направио.

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

Ваш Галилео може да користи своју Интернет везу преко Етхернета за повезивање са овом УРЛ адресом, узима податке које прима и процени како да их прикаже. Прво, да будемо сигурни да се може повезати са сервером.

НАПОМЕНА: За овај пројекат морат ћете покренути сустав са слике Галилео СД картице, коју можете преузети овдје.

Тестирање везе

  1. Повежите Галилео преко Етхернет кабла са мрежом. Можете га или прикључити директно у слободан порт на рутеру, или ако сте прикључени за Етхернет, укључите га у активни прикључак.
  2. Повежите Галилео на власт.
  3. Повежите рачунар са Галилеом преко УСБ клијентског порта.
  4. Унутар Ардуино ИДЕ, изаберите Филе → Примјери → Етхернет → ВебЦлиент.
  5. Кликните на Уплоад.
  6. Отворите серијски монитор.

Ако је ваша плоча успела да се повеже са сервером, видећете да се текст појављује на серијском монитору (као што је приказано испод). Овај пример програмира ваш Галилео да уради Гоогле претрагу за термин "Ардуино". Како је ХТМЛ одговор са Гоогле сервера примљен, он шаље те знакове серијском монитору.

Сада када сте сигурни да мрежна веза функционише, нека се ваш Галилео повеже са Колико дана до изласка? сервер:

  1. Направите нову скицу и унесите код испод
  2. Отпремите код и отворите серијски монитор.

Ако ради, требало би да видите број сати док МАКЕ не изађе штампан сваких пет секунди у серијском монитору.

воид сетуп () {} воид лооп () {Сериал.принтлн (гетХоурс ()); кашњење (5000); } инт гетХоурс () {цхар оутпут [5]; систем ("цурл хттп://нектмакемагазине.аппспот.цом/симпле> респонсе.ткт"); ФИЛЕ * фп; фп = фопен ("респонсе.ткт", "р"); фгетс (оутпут, 5, фп); фцлосе (фп); повратак атои (оутпут); }

Прва ствар коју можете приметити у горњем коду је да функција петље има само две линије кода. Кашњење (5000) је оно што осигурава да се свака итерација петље догађа само сваких пет секунди. Али шта је са Сериал.принтлн (гетХоурс ()) ;? Унутрашња функција, гетХоурс (), је дефинисана тачно испод функције петље.

Прва линија дефиниције функције указује на то да се наша функција зове гетХоурс и враћа цео број као резултат. Кад год се позове функција из функције подешавања или петље, извршава се код унутар функције. За гетХоурс, он ће захтевати податке са сервера, ускладиштити тај одговор у датотеци, а затим прочитати датотеку и вратити целу вредност која представља број сати које ћете морати да сачекају док не буде доступан нови број МАКЕ.

Након што Линук наредба напише податке у датотеку, а након што је Ардуино скица прочитала ту датотеку, то је само један начин да добијете податке у скицу. Био сам сигуран да ћу показати ову јединствену Галилео функцију јер је то моћан начин повезивања различитих дијелова пројекта заједно јер постоји много начина за читање и писање датотека.

Постоји још једна занимљива ствар у том коду. Рецимо да је сервер послао одговор од 45. Заправо шаље два АСЦИИ знака, а 4 и 5. Када Ардуино прочита те знакове, неће их разумети као цијели број 45, већ два бајта која представљају знакове 4 и 5. То значи да ако требате направити математику са вриједношћу, морате их претворити у цијели број. За то служи функција атои (). Погледат ће низ знакова и извести њихову вриједност као цијели број, који можете користити за аритметику.

Парсинг ЈСОН са Питхоном

Колико дана до изласка? сервер чини овај пример прилично лаким, јер обезбеђује један једноставан податак. Остале услуге могу пружити неколико различитих дијелова података структурираних у позваном формату ЈСОНили ЈаваСцрипт Објецт Нотатион.

ЈСОН је постао стандардни формат за пренос структурираних података преко веба. Ако желите да можете да читате податке са сајта који нуди ЈСОН, мораћете да га анализирате. Пошто је то тешко за Ардуино код, можете користити друге језике да бисте обавили овај посао и проследили одговарајуће информације у Ардуино-ов код.

Да бисте прегледали ЈСОН податке, посетите хттп://нектмакемагазине.аппспот.цом/јсон у свом веб прегледачу.

{тоталХоурс: 1473, нумберНумбер: "38", даисАваи: 61}

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

Доњи код користи Питхон програмски језик за повезивање на ЈСОН феед сервера на хттп://нектмакемагазине.аппспот.цом/јсон и анализира број и број часова.

импорт јсон импорт урллиб2 хттпРеспонсе = урллиб2.урлопен ('хттп://нектмакемагазине.аппспот.цом/јсон') јсонСтринг = хттпРеспонсе.реад () јсонДата = јсон.лоадс (јсонСтринг) принт "Волуме", јсонДата ['волумеНумбер'] , "биће објављен у", јсонДата ['тоталХоурс'], "сати".
  1. Повежите се са Галилеовом командном линијом користећи ССХ, Телнет или серијски
  2. Промените у главни директоријум роот-а
# цд / хоме / роот /
  1. Покрените уређивач текста ви са називом датотеке _јсон-парсе.пи_ да бисте креирали ту датотеку.
# ви јсон-парсе.пи
  1. Дуж леве стране екрана видећете колону тилда (~). Упишите слово и да бисте ушли у режим уметања. "И" ће се појавити у доњем левом углу екрана.
  2. Унесите код одозго у ви.
  3. Притисните тастер за бекство да бисте се пребацили из режима уметања у командни режим. "И" у доњем левом углу ће нестати и видећете уместо тога цртицу.
  4. Откуцајте “: к” и притисните ентер да сачувате датотеку и изађите из ви.
  5. Тестирајте скрипту извршавањем кода из командне линије.
# питхон јсон-парсе.пи

Ако сте све добро добили, требало би да видите следећи излаз у командној линији:

Волуме 38 ће бити објављен 1473.0 сати.

Као што можете видети из горе наведеног примера, парсирање ЈСОН одговора са веб сајта није веома тешко када имате Питхон доступан на Галилеу. Сада једноставно требате повезати одговор од Питхон-а на ваш Ардуино код.

Да бисте пробали то сада, прво измените јсон-парсе.пи:

  1. На Галилеовој командној линији, будите сигурни да сте и даље у роот директоријуму:
# цд / хоме / роот /
  1. Отворите датотеку за уређивање у ви:
# ви јсон-парсе.пи
  1. Упишите слово и да бисте ушли у режим уметања. "И" ће се појавити у доњем левом углу екрана.
  2. Уредите датотеку тако да она одражава код који је наведен испод.
импорт јсон импорт урллиб2 хттпРеспонсе = урллиб2.урлопен ('хттп://нектмакемагазине.аппспот.цом/јсон') јсонСтринг = хттпРеспонсе.реад () јсонДата = јсон.лоадс (јсонСтринг) принт јсонДата ['даисАваи']
  1. У Ардуино ИДЕ, креирајте нову скицу са кодом из доњег кода. Видећете да је веома сличан горе наведеном Ардуино коду. Уместо да зовете цурл из командне линије, он користи Питхон за покретање скрипте коју сте написали.

воид сетуп () {} воид лооп () {Сериал.принтлн (гетДаис ()); кашњење (5000); } инт гетДаис () {цхар оутпут [5]; систем ("питхон /хоме/роот/јсон-парсе.пи> /респонсе.ткт"); ФИЛЕ * фп; фп = фопен ("респонсе.ткт", "р"); фгетс (оутпут, 5, фп); фцлосе (фп); повратак атои (оутпут); }

  1. Отпремите код на плочу и отворите серијски монитор.

Сада би требало да видите одговор од сервера као број дана до следећег издања МАКЕ-а.

Повезивање ЛЦД дисплеја са знаковима

Каква је корист од ове информације ако се може видјети само на серијском монитору? Хајде да повежемо ЛЦД екран да одштампамо ове информације.

Поред делова које сте користили, требаће вам и:

  • Стандардни ЛЦД дисплеј од 16 × 2, доступан од Адафруит, Спаркфун или Макер Схед.
  • Бреадбоард
  • Јумпер вирес
  • 10К или 2К потенциометар

Да бисте повезали ЛЦД са Галилеом:

  1. Искључите вашу Галилео плочу из УСБ порта рачунара и напајања.
  2. Уметните ЛЦД у матичну плочу (ако је потребно, убаците пинове на њега).
  3. Уметните и потенциометар у матичну плочу.
  4. Користећи жице за краткоспојник, повежите потенциометар и ЛЦД на Галилео као што је приказано на доњем дијаграму.

  1. Користећи жице краткоспојника, повежите ЛЦД као што је приказано на доњем дијаграму.

  1. Повежите напајање са Галилеом.
  2. Повежите Галилео са рачунаром преко УСБ-а.
  3. У Ардуино ИДЕ, поставите код испод.

#инцлуде ЛикуидЦристал лцд (12, 11, 5, 4, 3, 2); воид сетуп () {лцд.инит (1,12,255,11,5,4,3,2,0,0,0,0); лцд.негин (16, 2); лцд.сетЦурсор (3, 0); лцд.принт ("дана до"); лцд.сетЦурсор (0, 1); лцд.принт ("МАКЕ ис хере!"); } воид лооп () {лцд.сетЦурсор (0, 0); лцд.принт (""); лцд.сетЦурсор (0, 0); лцд.принт (гетДаис ()); кашњење (30 * 60 * 1000); } инт гетДаис () {цхар оутпут [5]; систем ("питхон /хоме/роот/јсон-парсе.пи> /респонсе.ткт"); ФИЛЕ * фп; фп = фопен ("респонсе.ткт", "р"); фгетс (оутпут, 5, фп); фцлосе (фп); повратак атои (оутпут); }

Сада ћете лако моћи да пратите када ће следећи број МАКЕ-а погодити киоске! Припазите на издавање Почетног корака са Интел Галилеом за Галилео пројекте који су више повезани са мрежом!

Удео

Оставите Коментар