@ -33,11 +33,11 @@ Grove сензор влаге у земљишту може се повезати
1. Са Wio Terminal-ом искљученим из рачунара или другог извора напајања, повежите други крај Grove кабла у десну Grove утичницу на Wio Terminal-у када гледате у екран. Ово је утичница најудаљенија од дугмета за напајање.


1. Уметните сензор влаге у земљиште. Има ознаку "највиша позиција" - белу линију преко сензора. Уметните сензор до те линије, али не преко ње.


1. Сада можете повезати Wio Terminal са вашим рачунаром.
@ -55,11 +55,11 @@ IoT уређаји користе низак напон. Иако је то до
> 🎓 [Електромагнети](https://wikipedia.org/wiki/Electromagnet) су магнети који се стварају пропуштањем струје кроз калем жице. Када је струја укључена, калем постаје магнетизован. Када је струја искључена, калем губи магнетизам.


У релеју, контролно коло напаја електромагнет. Када је електромагнет укључен, он повлачи полугу која помера прекидач, затварајући пар контаката и завршавајући излазно коло.


Када је контролно коло искључено, електромагнет се искључује, ослобађајући полугу и отварајући контакте, искључујући излазно коло. Релеји су дигитални актуатори - висок сигнал релеју га укључује, низак сигнал га искључује.
@ -85,7 +85,7 @@ IoT уређаји користе низак напон. Иако је то до
Горња слика приказује Grove релеј. Контролно коло се повезује са IoT уређајем и укључује или искључује релеј користећи 3.3V или 5V. Излазно коло има два терминала, било који може бити напајање или уземљење. Излазно коло може да поднесе до 250V при 10A, што је довољно за низ уређаја који се напајају из електричне мреже. Можете набавити релеје који могу да поднесу чак и веће нивое снаге.


На горњој слици, струја се испоручује пумпи преко релеја. Црвена жица повезује +5V терминал USB напајања са једним терминалом излазног кола релеја, а друга црвена жица повезује други терминал излазног кола са пумпом. Црна жица повезује пумпу са уземљењем на USB напајању. Када се релеј укључи, он завршава коло, шаљући 5V пумпи, укључујући пумпу.
@ -135,7 +135,7 @@ IoT уређаји користе низак напон. Иако је то до
Ако сте радили претходну лекцију о влажности земљишта користећи физички сензор, приметили сте да је било потребно неколико секунди да очитавање влажности земљишта падне након што сте залили биљку. Ово није зато што је сензор спор, већ зато што је потребно време да вода продре кроз земљиште.
💁 Ако сте заливали превише близу сензора, можда сте приметили да је очитавање брзо пало, а затим се поново повећало – ово је узроковано тиме што се вода у близини сензора шири кроз остатак земљишта, смањујући влагу земљишта у близини сензора.


На дијаграму изнад, очитавање влажности земљишта показује 658. Биљка се залива, али ово очитавање се не мења одмах, јер вода још није стигла до сензора. Заливање може чак бити завршено пре него што вода стигне до сензора, а вредност пада како би одразила нови ниво влажности.
@ -157,11 +157,11 @@ IoT уређаји користе низак напон. Иако је то до
> 💁 Ова врста контроле времена је веома специфична за IoT уређај који градите, својство које мерите и сензоре и актуаторе који се користе.


На пример, имам јагоду са сензором влажности земљишта и пумпом коју контролише релеј. Приметио сам да када додам воду, потребно је око 20 секунди да се очитавање влажности земљишта стабилизује. То значи да морам искључити релеј и сачекати 20 секунди пре него што проверим нивое влажности. Радије бих имао премало воде него превише - увек могу поново укључити пумпу, али не могу извадити воду из биљке.


То значи да би најбољи процес био циклус заливања који изгледа овако:
@ -33,7 +33,7 @@ Grove релеј може се повезати на дигитални порт
1. Са Wio Terminal-ом искљученим из вашег рачунара или другог извора напајања, повежите други крај Grove кабла са левом утичницом Grove порта на Wio Terminal-у када гледате у екран. Оставите сензор за влагу земљишта повезан са десном утичницом.


1. Уметните сензор за влагу земљишта у земљу, ако већ није из претходне лекције.
> 💁 Ако сте раније користили тригере у базама података, можете ово замислити као сличан концепт - код који се активира догађајем, као што је убацивање реда.


Ваш код се извршава само када се догађај догоди, ау другим временима није активан. Догађај се догоди, ваш код се учитава и извршава. Ово чини серверлес веома скалабилним - ако се много догађаја догоди истовремено, провајдер облака може извршити вашу функцију онолико пута колико је потребно истовремено на доступним серверима. Недостатак овог модела је што, ако треба да делите информације између догађаја, морате их сачувати негде, као у бази података, уместо да их чувате у меморији.
@ -244,7 +244,7 @@ CLI алат за Azure Functions може се користити за креи
**Симетрична** енкрипција користи исти кључ за шифровање и дешифровање података. И пошиљалац и прималац морају знати исти кључ. Ово је најмање сигуран тип, јер кључ мора бити некако подељен. Да би пошиљалац послао шифровану поруку примаоцу, пошиљалац прво мора да пошаље примаоцу кључ.


Ако кључ буде украден током преноса, или ако пошиљалац или прималац буду хаковани и кључ буде пронађен, енкрипција може бити пробијена.


**Асиметрична** енкрипција користи 2 кључа - кључ за шифровање и кључ за дешифровање, познате као јавни/приватни пар кључева. Јавни кључ се користи за шифровање поруке, али не може се користити за дешифровање, док се приватни кључ користи за дешифровање поруке, али не може се користити за шифровање.


Прималац дели свој јавни кључ, а пошиљалац користи овај кључ за шифровање поруке. Када се порука пошаље, прималац је дешифрује својим приватним кључем. Асиметрична енкрипција је сигурнија јерсе приватни кључ чува приватно од стране примаоца и никада се не дели. Јавни кључ може имати било ко, јерсе може користити само за шифровање порука.
@ -157,7 +157,7 @@ X.509 сертификати су дигитални документи који
Када користите X.509 сертификате, и пошиљалац и прималац ће имати своје јавне и приватне кључеве, као и X.509 сертификате који садрже јавни кључ. Затим размењују X.509 сертификате на неки начин, користећи јавне кључеве једни других за шифровање података које шаљу, и своје приватне кључеве за дешифровање података које примају.


Једна велика предност коришћења X.509 сертификата је што се могу делити између уређаја. Можете креирати један сертификат, отпремити га на IoT Hub, и користити га за све своје уређаје. Сваки уређај затим само треба да зна приватни кључ како би дешифровао поруке које прима од IoT Hub-а.
@ -33,7 +33,7 @@ Grove GPS сензор може да се повезује са Wio Terminal-о
1. Док је Wio Terminal искључен са вашег рачунара или другог извора напајања, повежите други крај Grove кабла са левим Grove прикључком на Wio Terminal-у, гледајући екран. Тоје прикључак најближи дугмету за напајање.


1. Поставите GPS сензор тако да прикључена антена има видљивост ка небу - идеално поред отвореног прозора или напољу. Лакше је добити јаснији сигнал ако ништа не блокира антену.
@ -66,7 +66,7 @@ IoT подаци се обично сматрају неструктуриран
Прве базе података биле су Системи за управљање релационим базама података (RDBMS), или релационе базе података. Оне су такође познате као SQL базе података по Structured Query Language (SQL) који се користи за интеракцију са њима ради додавања, уклањања, ажурирања или претраге података. Ове базе података се састоје од шеме - добро дефинисаног скупа табела података, слично табели. Свака табела има више именованих колона. Када уносите податке, додајете ред у табелу, стављајући вредности у сваку од колона. Ово држи податке у веома крутој структури - иако можете оставити колоне празне, ако желите да додате нову колону, морате то урадити на бази података, попуњавајући вредности за постојеће редове. Ове базе података су релационе - у смислу да једна табела може имати однос са другом.


На пример, ако складиштите личне податке корисника у табели, имали бисте неку врсту интерног јединственог ID за сваког корисника који се користи у реду у табели која садржи име и адресу корисника. Ако затим желите да складиштите друге детаље о том кориснику, као што су његове куповине, у другој табели, имали бисте једну колону у новој табели за ID тог корисника. Када претражујете корисника, можете користити његов ID да добијете његове личне податке из једне табеле и његове куповине из друге.
@ -235,7 +235,7 @@ Azure Storage налози су услуга за складиштење опш
У овој лекцији ћете користити Python SDK да бисте видели како да интерагујете са блоб складиштем.


Подаци ће бити сачувани као JSON блоб са следећим форматом:
@ -110,7 +110,7 @@ Azure Maps, услуга коју сте користили у претходн
Низ координата полигона увек има 1 унос више од броја тачака на полигону, при чему је последњи унос исти као и први, затварајући полигон. На пример, за правоугаоник би било 5 тачака.


На слици изнад налази се правоугаоник. Координате полигона почињу у горњем левом углу на 47,-122, затим се крећу десно до 47,-121, затим доле до 46,-121, затим лево до 46,-122, а затим назад горе до почетне тачке на 47,-122. Ово даје полигону 5 тачака - горњи леви, горњи десни, доњи десни, доњи леви, а затим горњи леви да га затвори.
@ -208,7 +208,7 @@ Azure Maps, услуга коју сте користили у претходн
Када се резултати врате из API позива, један од делова резултата је`distance` измерена до најближе тачке на ивици геозоне, са позитивном вредношћу ако је тачка ван геозоне, и негативном ако је унутар геозоне. Ако је ова удаљеност мања од `searchBuffer`, стварна удаљеност се враћа у метрима, иначе је вредност 999 или -999. 999 значи да је тачка ван геозоне за више од `searchBuffer`, -999 значи да је унутар геозоне за више од `searchBuffer`.


На слици изнад, геозона има `searchBuffer` од 50м.
Традиционално програмирање подразумева узимање података, примену алгоритма на те податке, и добијање резултата. На пример, у претходном пројекту узели сте GPS координате и гео-ограду, применили алгоритам који је обезбедио Azure Maps, и добили резултат да ли је тачка унутар или ван гео-ограде. Унесете више података, добијете више резултата.


Машинско учење обрће овај процес - почињете са подацима и познатим резултатима, а алгоритам машинског учења учи из података. Затим можете узети тај обучени алгоритам, назван *модел машинског учења* или *модел*, и унети нове податке и добити нове резултате.
@ -87,7 +87,7 @@ ML модел који се користи за детекцију слика к
Када је класификатор слика обучен за широк спектар слика, његова унутрашња структура је одлична у препознавању облика, боја и узорака. Трансферно учење омогућава моделу да искористи оно што је већ научио у препознавању делова слике и користи то за препознавање нових слика.


Можете то замислити као књиге за децу о облицима, где када можете препознати полукруг, правоугаоник и троугао, можете препознати једрењак или мачку у зависности од конфигурације ових облика. Класификатор слика може препознати облике, а трансферно учење га учи која комбинација чини чамац или мачку - или зрелу банану.
@ -29,7 +29,7 @@ ArduCam нема Grove утичницу, већ се повезује на SPI
1. Пинови на дну ArduCam-а треба да буду повезани на GPIO пинове на Wio Terminal-у. Да бисте лакше пронашли одговарајуће пинове, залепите налепницу са GPIO пиновима која долази уз Wio Terminal око пинова:


1. Користећи жице за повезивање, направите следеће везе:
@ -297,7 +297,7 @@ Wio Terminal сада може бити програмиран да снима
1. Микроконтролери извршавају ваш код континуирано, тако да није лако покренути нешто попут снимања фотографије без реаговања на сензор. Wio Terminal има дугмад, тако да се камера може подесити да се активира једним од дугмади. Додајте следећи код на крај `setup` функције да конфигуришете дугме C (једно од три дугмета на врху, најближе прекидачу за напајање).


@ -115,7 +115,7 @@ IoT апликације могу се описати као *ствари* (у
IoT уређају је потребан неки вид покретача који указује када је воће спремно за класификацију. Један од покретача за ово могао би бити мерење када је воће на правом месту на транспортној траци мерењем удаљености до сензора.


Сензори близине могу се користити за мерење удаљености од сензора до објекта. Обично емитују зрак електромагнетног зрачења, као што је ласерски зрак или инфрацрвена светлост, а затим детектују зрачење које се одбија од објекта. Време између слања ласерског зрака и повратка сигнала може се користити за израчунавање удаљености до сензора.
@ -35,7 +35,7 @@ Grove сензор удаљености може се повезати са Rasp
1. Са искљученим Raspberry Pi-јем, повежите други крај Grove кабла у један од I²C прикључака означених **I²C** на Grove Base хату који је прикључен на Pi. Ови прикључци се налазе на доњем реду, супротном крају од GPIO пинова и поред слота за камеру.


## Програмирање сензора удаљености
@ -106,7 +106,7 @@ Raspberry Pi сада може бити програмиран да корист
Мерач удаљености је на задњој страни сензора, па се уверите да користите исправну страну приликом мерења удаљености.


> 💁 Овај код можете пронаћи у [code-proximity/pi](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector/code-proximity/pi) фасцикли.
@ -35,7 +35,7 @@ Grove Time of Flight сензор може се повезати са Wio Termin
1. Док је Wio Terminal искључен са вашег рачунара или другог извора напајања, повежите други крај Grove кабла са левим Grove прикључком на Wio Terminal-у, гледајући екран. Ово је прикључак најближи дугмету за напајање. Ово је комбиновани дигитални и IC прикључак.


1. Сада можете повезати Wio Terminal са вашим рачунаром.
@ -101,7 +101,7 @@ Wio Terminal сада може бити програмиран да корист
Мерач растојања налази се на задњој страни сензора, па се уверите да користите исправну страну приликом мерења растојања.


> 💁 Овај код можете пронаћи у [code-proximity/wio-terminal](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector/code-proximity/wio-terminal) фасцикли.
На пример, ако је камера усмерена на полицу која може да држи 8 конзерви парадајз пасте, а детектор објеката детектује само 7 конзерви, онда једна недостаје и треба је допунити.


На слици изнад, детектор објеката је детектовао 7 конзерви парадајз пасте на полици која може да држи 8 конзерви. IoT уређај не само да може послати обавештење о потреби за допуном, већ може и указати на локацију недостајућег артикла, што је важан податак ако користите роботе за допуну полица.
@ -51,7 +51,7 @@ CO_OP_TRANSLATOR_METADATA:
Детекција објеката може се користити за откривање неочекиваних артикала, уз упозорење човека или робота да што пре врати артикал на одговарајуће место.


На слици изнад, конзерва беби кукуруза је стављена на полицу поред парадајз пасте. Детектор објеката је то детектовао, омогућавајући IoT уређају да обавести човека или робота да врати конзерву на њено исправно место.
1. Покрените апликацију са камером усмереном на неке залихе на полици. Видећете фајл `image.jpg`у VS Code прегледачу и моћи ћете да га изаберете како бисте видели оквире.




На слици изнад, оквири се благо преклапају. Ако би то преклапање било много веће, оквири би могли указивати на исти објекат. Да бисте исправно избројали објекте, потребно је игнорисати оквире са значајним преклапањем.
* Тракасти - Тракасти микрофони су слични динамичким микрофонима, осим што имају металну траку уместо дијафрагме. Ова трака се помера у магнетном пољу стварајући електричну струју. Као и динамички микрофони, тракасти микрофони не захтевају напајање за рад.


* Кондензаторски - Кондензаторски микрофони имају танку металну дијафрагму и фиксну металну задњу плочу. Електрична енергија се примењује на обе и како дијафрагма вибрира, статички набој између плоча се мења, генеришући сигнал. Кондензаторски микрофони захтевају напајање за рад - названо *Phantom power*.
@ -84,7 +84,7 @@ CO_OP_TRANSLATOR_METADATA:
> 🎓 Узорковање је процес претварања звучног сигнала у дигиталну вредност која представља сигнал у том тренутку.


Дигитални звук се узоркује коришћењем модулације импулсног кода (PCM). PCM укључује читање напона сигнала и одабир најближе дискретне вредности том напону користећи дефинисану величину.
Wio Terminal већ има уграђен микрофон, који се може користити за снимање звука за препознавање говора.


Да бисте додали звучник, можете користити [ReSpeaker 2-Mics Pi Hat](https://www.seeedstudio.com/ReSpeaker-2-Mics-Pi-HAT.html). Ово је екстерна плоча која садржи 2 MEMS микрофона, као и конектор за звучник и прикључак за слушалице.


Биће вам потребне или слушалице, звучник са 3.5мм прикључком, или звучник са JST конектором, као што је [Mono Enclosed Speaker - 2W 6 Ohm](https://www.seeedstudio.com/Mono-Enclosed-Speaker-2W-6-Ohm-p-2832.html).
@ -35,7 +35,7 @@ Wio Terminal већ има уграђен микрофон, који се мож
1. Поставите ReSpeaker и Wio Terminal тако да GPIO прикључци буду окренути нагоре, са леве стране.
@ -43,33 +43,33 @@ Wio Terminal већ има уграђен микрофон, који се мож
1. Понављајте овај процес низ леву страну GPIO прикључака. Уверите се да су пинови чврсто повезани.




> 💁 Ако су ваши каблови за повезивање у облику траке, држите их заједно - то ће олакшати осигурање да су сви каблови повезани редом.
1. Поновите процес користећи десне GPIO прикључке на ReSpeaker-у и Wio Terminal-у. Ови каблови треба да иду око већ постављених каблова.




> 💁 Ако су ваши каблови за повезивање у облику траке, поделите их у две траке. Провуците их саобе стране постојећих каблова.
> 💁 Можете користити лепљиву траку да држите пинове у блоку како бисте спречили испадање током повезивања.
* Ако користите звучник са JST каблом, повежите гаса JST портом на ReSpeaker-у.


* Ако користите звучник са 3.5мм прикључком или слушалице, уметните их у 3.5мм прикључак.


### Задатак - подесите SD картицу
@ -79,7 +79,7 @@ Wio Terminal већ има уграђен микрофон, који се мож
1. Уметните SD картицу у слот за SD картице на левој страни Wio Terminal-а, одмах испод дугмета за укључивање. Уверите се да је картица потпуно уметнута и да кликне - можда ће вам бити потребан танак алат или друга SD картица да је потиснете до краја.


> 💁 Да бисте извадили SD картицу, потребно је благо је потиснути унутра, након чега ће искочити. Биће вам потребан танак алат, као што је равни шрафцигер или друга SD картица.
Затим кажете LUIS-у који делови ових реченица одговарају ентитетима:


Реченица `подеси тајмер на 1 минут и 12 секунди` има намеру `подеси тајмер`. Такође има 2 ентитета са по 2 вредности:
Текст у говор, како назив сугерише, је процес претварања текста у аудио који садржи текст као изговорене речи. Основни принцип је да се речи у тексту разложе на њихове саставне звуке (познате као фонеме) и да се ти звуци споје у аудио, било коришћењем унапред снимљеног аудио материјала или аудио материјала генерисаног помоћу AI модела.


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


Замислите да градите паметни тајмер који користи енглески од почетка до краја, разумејући изговорени енглески и претварајући гау текст, обрађујући разумевање језика на енглеском, градећи одговоре на енглеском и одговарајући говором на енглеском. Ако желите да додате подршку за јапански, могли бисте почети са превођењем изговореног јапанског у енглески текст, затим задржати језгро апликације истим, а затим превести текст одговора на јапански пре него што одговорите говором. Ово би вам омогућило да брзо додате подршку за јапански, а касније можете проширити апликацију на потпуну подршку за јапански.
Пројекти обухватају пут хране од фарме до стола. То укључује пољопривреду, логистику, производњу, трговину и потрошачку индустрију - све популарна индустријска подручја за IoT уређаје.


> Скетчнот од [Nitya Narasimhan](https://github.com/nitya). Кликните слику за већу верзију.
Seeed Studios су љубазно обезбедили сав хардвер у облику лако доступних комплета:
@ -29,7 +29,7 @@ Seeed Studios су љубазно обезбедили сав хардвер у
**[IoT за почетнике са Seeed и Microsoft - Wio Terminal Starter Kit](https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Wio-Terminal-Starter-Kit-p-5006.html)**
@ -79,7 +79,7 @@ En mikrokontroller (även kallad MCU, kort för microcontroller unit) är en lit
Mikrokontroller är vanligtvis billiga datorenheter, med genomsnittliga priser för de som används i specialtillverkad hårdvara som sjunker till cirka 0,50 USD, och vissa enheter är så billiga som 0,03 USD. Utvecklingskit kan börja så lågt som 4 USD, med kostnader som ökar när fler funktioner läggs till. [Wio Terminal](https://www.seeedstudio.com/Wio-Terminal-p-4509.html), ett mikrokontrollerutvecklingskit från [Seeed studios](https://www.seeedstudio.com) som har sensorer, aktuatorer, WiFi och en skärm, kostar cirka 30 USD.
> 💁 När du söker på Internet efter mikrokontroller, var försiktig med att söka efter termen **MCU**, eftersom detta kan ge många resultat för Marvel Cinematic Universe istället för mikrokontroller.
@ -93,7 +93,7 @@ Utvecklingskit för mikrokontroller har vanligtvis ytterligare sensorer och aktu
En enkortsdator är en liten datorenhet som har alla element av en komplett dator på ett enda litet kort. Dessa enheter har specifikationer som liknar en stationär eller bärbar dator, kör ett fullständigt operativsystem, men är små, använder mindre ström och är betydligt billigare.


Raspberry Pi är en av de mest populära enkortsdatorerna.
[Raspberry Pi](https://raspberrypi.org) är en enkortsdator. Du kan lägga till sensorer och aktuatorer med hjälp av en mängd olika enheter och ekosystem, och för dessa lektioner använder vi ett hårdvaruekosystem som heter [Grove](https://www.seeedstudio.com/category/Grove-c-1003.html). Du kommer att programmera din Pi och använda Grove-sensorerna med Python.


## Installation
@ -112,7 +112,7 @@ Installera det headless Pi OS.
1. I Raspberry Pi Imager, välj **CHOOSE OS**-knappen och välj *Raspberry Pi OS (Other)*, följt av *Raspberry Pi OS Lite (32-bit)*.


> 💁 Raspberry Pi OS Lite är en version av Raspberry Pi OS som inte har desktop-UI eller UI-baserade verktyg. Dessa behövs inte för en headless Pi och gör installationen mindre och uppstarten snabbare.
@ -251,7 +251,7 @@ Skapa Hello World-appen.
1. Öppna denna mapp i VS Code genom att välja *File -> Open...* och välja mappen *nightlight*, klicka sedan på **OK**.


1. Öppna filen `app.py` från VS Code Explorer och lägg till följande kod:
@ -154,11 +154,11 @@ Skapa en Python-applikation som skriver ut `"Hello World"` till konsolen.
1. När VS Code startar kommer det att aktivera den virtuella Python-miljön. Den valda virtuella miljön kommer att visas i statusfältet längst ner:


1. Om VS Code-terminalen redan körs när VS Code startar kommer den inte att ha den virtuella miljön aktiverad i sig. Det enklaste är att stänga terminalen med knappen **Kill the active terminal instance**:


Du kan se om terminalen har den virtuella miljön aktiverad eftersom namnet på den virtuella miljön kommer att vara ett prefix på terminalprompten. Till exempel kan det vara:
@ -229,7 +229,7 @@ Som ett andra "Hello World"-steg kommer du att köra CounterFit-appen och anslut
1. Du behöver starta en ny VS Code-terminal genom att välja knappen **Create a new integrated terminal**. Detta eftersom CounterFit-appen körs i den aktuella terminalen.


1. I denna nya terminal, kör filen `app.py` som tidigare. Statusen för CounterFit kommer att ändras till **Connected** och LED-lampan kommer att tändas.
[Wio Terminal från Seeed Studios](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) är en Arduino-kompatibel mikrokontroller med inbyggd WiFi, sensorer och aktuatorer, samt portar för att lägga till fler sensorer och aktuatorer med hjälp av ett hårdvaruekosystem som kallas [Grove](https://www.seeedstudio.com/category/Grove-c-1003.html).
PlatformIO kommer att ladda ner de komponenter som behövs för att kompilera kod för Wio Terminal och skapa ditt projekt. Detta kan ta några minuter.
@ -179,7 +179,7 @@ Skriv Hello World-appen.
1. Skriv `PlatformIO Upload` för att söka efter uppladdningsalternativet och välj *PlatformIO: Upload*


PlatformIO kommer automatiskt att bygga koden om det behövs innan uppladdning.
@ -195,7 +195,7 @@ PlatformIO har en Serial Monitor som kan övervaka data som skickas över USB-ka
1. Skriv `PlatformIO Serial` för att söka efter Serial Monitor-alternativet och välj *PlatformIO: Serial Monitor*


En ny terminal öppnas, och data som skickas över seriella porten kommer att strömmas in i denna terminal:
@ -41,7 +41,7 @@ De två huvudkomponenterna i en IoT-applikation är *Internet* och *saken*. Låt
### Saken


**Saken** i IoT syftar på en enhet som kan interagera med den fysiska världen. Dessa enheter är vanligtvis små, prisvärda datorer som arbetar med låg hastighet och låg strömförbrukning - till exempel enkla mikrokontroller med några kilobyte RAM (jämfört med gigabyte i en PC) som körs på bara några hundra megahertz (jämfört med gigahertz i en PC), men som ibland förbrukar så lite ström att de kan drivas i veckor, månader eller till och med år på batterier.
@ -67,7 +67,7 @@ I exemplet med en smart termostat skulle termostaten ansluta via hemmets WiFi ti
En ännu smartare version skulle kunna använda AI i molnet med data från andra sensorer anslutna till andra IoT-enheter, såsom rörelsesensorer som upptäcker vilka rum som används, samt data som väder och till och med din kalender, för att fatta beslut om hur temperaturen ska ställas in på ett smart sätt. Till exempel skulle den kunna stänga av värmen om den läser från din kalender att du är på semester, eller stänga av värmen rum för rum beroende på vilka rum du använder, och lära sig från datan för att bli mer och mer exakt över tid.


✅ Vilka andra data skulle kunna hjälpa till att göra en Internetansluten termostat smartare?
@ -135,7 +135,7 @@ Precis som med CPU:n är minnet i en mikrokontroller många gånger mindre än i
Diagrammet nedan visar den relativa storleksskillnaden mellan 192KB och 8GB - den lilla pricken i mitten representerar 192KB.


Programlagring är också mindre än i en PC. En typisk PC kan ha en hårddisk på 500GB för programlagring, medan en mikrokontroller kan ha bara kilobyte eller kanske några megabyte (MB) lagring (1MB är 1 000KB, eller 1 000 000 byte). Wio-terminalen har 4MB programlagring.
@ -211,17 +211,17 @@ I förra lektionen introducerade vi enkortsdatorer. Låt oss nu titta djupare p
[Raspberry Pi Foundation](https://www.raspberrypi.org) är en välgörenhetsorganisation från Storbritannien som grundades 2009 för att främja studier i datavetenskap, särskilt på skolnivå. Som en del av detta uppdrag utvecklade de en enkortsdator, kallad Raspberry Pi. Raspberry Pi finns för närvarande i tre varianter - en fullstor version, den mindre Pi Zero, och en beräkningsmodul som kan byggas in i din slutliga IoT-enhet.


Den senaste iterationen av den fullstora Raspberry Pi är Raspberry Pi 4B. Den har en fyrkärnig (4 kärnor) CPU som körs på 1.5GHz, 2, 4 eller 8GB RAM, gigabit ethernet, WiFi, 2 HDMI-portar som stöder 4k-skärmar, en ljud- och kompositvideoutgångsport, USB-portar (2 USB 2.0, 2 USB 3.0), 40 GPIO-pinnar, en kamerakontakt för en Raspberry Pi-kameramodul och en SD-kortplats. Allt detta på ett kort som är 88mm x 58mm x 19.5mm och drivs av en 3A USB-C strömadapter. Dessa börjar på US$35, mycket billigare än en PC eller Mac.
> 💁 Det finns också en Pi400 allt-i-ett-dator med en Pi4 inbyggd i ett tangentbord.


Pi Zero är mycket mindre, med lägre effekt. Den har en enkelkärnig 1GHz CPU, 512MB RAM, WiFi (i Zero W-modellen), en enda HDMI-port, en mikro-USB-port, 40 GPIO-pinnar, en kamerakontakt för en Raspberry Pi-kameramodul och en SD-kortplats. Den mäter 65mm x 30mm x 5mm och drar väldigt lite ström. Zero kostar US$5, med W-versionen med WiFi US$10.
@ -75,7 +75,7 @@ Några av de mest grundläggande sensorerna är analoga sensorer. Dessa sensorer
Ett exempel på detta är en potentiometer. Detta är en ratt som du kan rotera mellan två positioner och sensorn mäter rotationen.


IoT-enheten skickar en elektrisk signal till potentiometern med en spänning, till exempel 5 volt (5V). När potentiometern justeras ändrar den spänningen som kommer ut på andra sidan. Föreställ dig att du har en potentiometer märkt som en ratt som går från 0 till [11](https://wikipedia.org/wiki/Up_to_eleven), som en volymknapp på en förstärkare. När potentiometern är i helt avstängt läge (0) kommer 0V (0 volt) att komma ut. När den är i helt påslaget läge (11) kommer 5V (5 volt) att komma ut.
@ -112,7 +112,7 @@ Pinnar på IoT-enheter, såsom GPIO-pinnar, kan mäta denna signal direkt som en
Mer avancerade digitala sensorer läser analoga värden och konverterar dem sedan med inbyggda ADC till digitala signaler. Till exempel kommer en digital temperatursensor fortfarande att använda en termoelement på samma sätt som en analog sensor och fortfarande mäta förändringen i spänning som orsakas av termoelementets resistans vid aktuell temperatur. Istället för att returnera ett analogt värde och förlita sig på enheten eller anslutningskortet för att konvertera till en digital signal, kommer en ADC inbyggd i sensorn att konvertera värdet och skicka det som en serie 0:or och 1:or till IoT-enheten. Dessa 0:or och 1:or skickas på samma sätt som den digitala signalen för en knapp, där 1 är full spänning och 0 är 0V.


Att skicka digital data gör det möjligt för sensorer att bli mer komplexa och skicka mer detaljerad data, till och med krypterad data för säkra sensorer. Ett exempel är en kamera. Detta är en sensor som fångar en bild och skickar den som digital data som innehåller den bilden, vanligtvis i ett komprimerat format som JPEG, för att läsas av IoT-enheten. Den kan till och med strömma video genom att fånga bilder och skicka antingen hela bilden bild för bild eller en komprimerad videoström.
@ -164,7 +164,7 @@ Till exempel kan du använda PWM för att kontrollera hastigheten på en motor.
Föreställ dig att du styr en motor med en 5V strömkälla. Du skickar en kort puls till din motor, där spänningen höjs till 5V under två hundradels sekunder (0,02s). Under den tiden kan din motor rotera en tiondels varv, eller 36°. Signalen pausar sedan i två hundradels sekunder (0,02s), och skickar en låg signal (0V). Varje cykel av på och av varar 0,04s. Cykeln upprepas sedan.


Detta innebär att du under en sekund har 25 pulser på 5V som varar 0,02s och roterar motorn, följt av 0,02s paus med 0V där motorn inte roterar. Varje puls roterar motorn en tiondels varv, vilket innebär att motorn gör 2,5 varv per sekund. Du har använt en digital signal för att rotera motorn med 2,5 varv per sekund, eller 150 [varv per minut](https://wikipedia.org/wiki/Revolutions_per_minute) (en icke-standardiserad måttenhet för rotationshastighet).
@ -175,7 +175,7 @@ Detta innebär att du under en sekund har 25 pulser på 5V som varar 0,02s och r
> 🎓 När en PWM-signal är på halva tiden och av halva tiden kallas det för en [50% arbetscykel](https://wikipedia.org/wiki/Duty_cycle). Arbetscykler mäts som procentandelen tid signalen är i på-läge jämfört med av-läge.


Du kan ändra motorhastigheten genom att ändra storleken på pulserna. Till exempel, med samma motor kan du behålla samma cykeltid på 0,04s, men halvera på-pulsen till 0,01s och öka av-pulsen till 0,03s. Du har samma antal pulser per sekund (25), men varje på-puls är hälften så lång. En halvlång puls roterar motorn en tjugondels varv, och vid 25 pulser per sekund kommer motorn att göra 1,25 varv per sekund eller 75rpm. Genom att ändra pulsens längd i en digital signal har du halverat hastigheten på en analog motor.
> 💁 Den högra Grove-sockeln kan användas med analoga eller digitala sensorer och aktuatorer. Den vänstra sockeln är för I2C och digitala sensorer och aktuatorer endast. C kommer att behandlas i en senare lektion.


@ -46,7 +46,7 @@ I denna lektion kommer vi att gå igenom:
Det finns flera populära kommunikationsprotokoll som används av IoT-enheter för att kommunicera med Internet. De mest populära är baserade på publicera/prenumerera-meddelanden via någon form av broker. IoT-enheter ansluter till brokern och publicerar telemetri och prenumererar på kommandon. Molntjänster ansluter också till brokern och prenumererar på alla telemetrimeddelanden och publicerar kommandon antingen till specifika enheter eller till grupper av enheter.


MQTT är det mest populära kommunikationsprotokollet för IoT-enheter och behandlas i denna lektion. Andra protokoll inkluderar AMQP och HTTP/HTTPS.
@ -115,7 +115,7 @@ Ordet telemetri kommer från grekiska rötter och betyder att mäta på distans.
Låt oss återgå till exemplet med den smarta termostaten från Lektion 1.


Termostaten har temperatursensorer för att samla in telemetri. Den skulle troligen ha en inbyggd temperatursensor och kanske ansluta till flera externa temperatursensorer via ett trådlöst protokoll som [Bluetooth Low Energy](https://wikipedia.org/wiki/Bluetooth_Low_Energy) (BLE).
@ -267,11 +267,11 @@ Skriv serverkoden.
1. När VS Code startar kommer det att aktivera den virtuella Python-miljön. Detta kommer att rapporteras i den nedre statusfältet:


1. Om VS Code-terminalen redan körs när VS Code startar kommer den inte att ha den virtuella miljön aktiverad i sig. Det enklaste är att stänga terminalen med knappen **Kill the active terminal instance**:


1. Starta en ny VS Code-terminal genom att välja *Terminal -> New Terminal*, eller trycka på `` CTRL+` ``. Den nya terminalen kommer att ladda den virtuella miljön, med anropet för att aktivera detta som visas i terminalen. Namnet på den virtuella miljön (`.venv`) kommer också att finnas i prompten:
1. Skapa en ny fil i mappen `src` som heter `config.h`. Du kan göra detta genom att välja mappen `src` eller filen `main.cpp` inuti och klicka på knappen **New file** i utforskaren. Den här knappen visas bara när din markör är över utforskaren.


1. Lägg till följande kod i den här filen för att definiera konstanter för dina WiFi-uppgifter:
@ -65,7 +65,7 @@ Varje växtart har olika värden för sin bas-, optimala och maximala temperatur
✅ Gör lite efterforskningar. För några växter du har i din trädgård, skola eller lokala park, se om du kan hitta deras bas-temperatur.


Grafen ovan visar ett exempel på en tillväxthastighet i förhållande till temperatur. Upp till bas-temperaturen sker ingen tillväxt. Tillväxthastigheten ökar upp till den optimala temperaturen och minskar sedan efter att ha nått denna topp. Vid maxtemperaturen upphör tillväxten.
@ -141,7 +141,7 @@ Detta har en stor arbetskraftspåverkan på en stor gård och riskerar att bonde
Genom att samla in temperaturdata med en IoT-enhet kan en bonde automatiskt bli meddelad när växter är nära mognad. En typisk arkitektur för detta är att IoT-enheterna mäter temperaturen och sedan publicerar denna telemetridata över Internet med något som MQTT. Serverkod lyssnar sedan på denna data och sparar den någonstans, till exempel i en databas. Detta innebär att data kan analyseras senare, till exempel ett nattligt jobb för att beräkna dagens GDD, summera GDD för varje gröda hittills och varna om en växt är nära mognad.


Serverkoden kan också komplettera data genom att lägga till extra information. Till exempel kan IoT-enheten publicera en identifierare för att indikera vilken enhet det är, och serverkoden kan använda detta för att slå upp enhetens plats och vilka grödor den övervakar. Den kan också lägga till grundläggande data som aktuell tid, eftersom vissa IoT-enheter inte har den nödvändiga hårdvaran för att hålla reda på en exakt tid eller kräver ytterligare kod för att läsa aktuell tid över Internet.
@ -228,7 +228,7 @@ Den här koden öppnar CSV-filen och lägger till en ny rad i slutet. Raden inne
> 💁 Om du använder en virtuell IoT-enhet, välj kryssrutan för slumpmässighet och ställ in ett intervall för att undvika att få samma temperatur varje gång temperaturen returneras.


> 💁 Om du vill köra detta under en hel dag måste du se till att datorn som din serverkod körs på inte går i viloläge, antingen genom att ändra dina energisparinställningar eller genom att köra något som [detta Python-skript för att hålla systemet aktivt](https://github.com/jaqsparow/keep-system-active).
1. Med Raspberry Pi avstängd, anslut den andra änden av Grove-kabeln till det digitala uttaget märkt **D5** på Grove Base-hatten som är ansluten till Pi. Detta uttag är det andra från vänster, på raden av uttag bredvid GPIO-stiften.


1. Med Wio Terminal frånkopplad från din dator eller annan strömkälla, anslut den andra änden av Grove-kabeln till det högra Grove-uttaget på Wio Terminal när du tittar på skärmen. Detta är uttaget längst bort från strömbrytaren.


@ -37,7 +37,7 @@ UART involverar fysisk kretsdesign som gör det möjligt för två enheter att k
* Enhet 1 skickar data från sin Tx-pinne, som tas emot av enhet 2 på dess Rx-pinne
* Enhet 1 tar emot data på sin Rx-pinne som skickas av enhet 2 från dess Tx-pinne


> 🎓 Data skickas en bit i taget, och detta kallas *seriell* kommunikation. De flesta operativsystem och mikrokontroller har *seriella portar*, det vill säga anslutningar som kan skicka och ta emot seriell data som är tillgängliga för din kod.
@ -66,7 +66,7 @@ SPI-controllrar använder tre kablar, tillsammans med en extra kabel per perifer
| SCLK | Serial Clock | Denna kabel skickar en klocksignal med en hastighet som ställs in av controllern. |
| CS | Chip Select | Controllern har flera kablar, en per periferienhet, och varje kabel ansluts till CS-kabeln på motsvarande periferienhet. |


CS-kabeln används för att aktivera en periferienhet åt gången, och kommunicerar över COPI- och CIPO-kablarna. När controllern behöver byta periferienhet, inaktiverar den CS-kabeln som är ansluten till den aktuellt aktiva periferienheten, och aktiverar sedan kabeln som är ansluten till den periferienhet den vill kommunicera med nästa gång.
@ -127,13 +127,13 @@ Jordfuktighet mäts med gravimetriskt eller volymetriskt vatteninnehåll.
Jordfuktighetssensorer mäter elektrisk resistans eller kapacitans - detta varierar inte bara med jordfuktighet, utan också med jordtyp eftersom komponenterna i jorden kan förändra dess elektriska egenskaper. Idealiskt bör sensorer kalibreras - det vill säga ta avläsningar från sensorn och jämföra dem med mätningar som hittas med en mer vetenskaplig metod. Till exempel kan ett laboratorium beräkna den gravimetriska jordfuktigheten med hjälp av prover från ett specifikt fält som tas några gånger per år, och dessa siffror används för att kalibrera sensorn, matcha sensoravläsningen till den gravimetriska jordfuktigheten.


Grafen ovan visar hur man kalibrerar en sensor. Spänningen fångas för ett jordprov som sedan mäts i ett laboratorium genom att jämföra den fuktiga vikten med den torra vikten (genom att mäta vikten våt, sedan torka i en ugn och mäta torr). När några avläsningar har tagits kan detta plottas på en graf och en linje anpassas till punkterna. Denna linje kan sedan användas för att konvertera jordfuktighetssensoravläsningar tagna av en IoT-enhet till faktiska jordfuktighetsmätningar.
💁 För resistiva jordfuktighetssensorer ökar spänningen när jordfuktigheten ökar. För kapacitiva jordfuktighetssensorer minskar spänningen när jordfuktigheten ökar, så graferna för dessa skulle luta nedåt, inte uppåt.


Grafen ovan visar en spänningsavläsning från en jordfuktighetssensor, och genom att följa den till linjen på grafen kan den faktiska jordfuktigheten beräknas.
1. Sätt in jordfuktighetssensorn i jorden. Den har en "högsta positionslinje" - en vit linje tvärs över sensorn. Sätt in sensorn upp till, men inte förbi, denna linje.


1. Med Wio Terminal frånkopplad från din dator eller annan strömkälla, anslut den andra änden av Grove-kabeln till det högra Grove-uttaget på Wio Terminal när du tittar på skärmen. Detta är uttaget längst bort från strömknappen.


1. Sätt jordfuktighetssensorn i jorden. Den har en "högsta positionslinje" - en vit linje tvärs över sensorn. Sätt sensorn upp till, men inte förbi, denna linje.


@ -55,11 +55,11 @@ Ett relä är en elektromekanisk strömbrytare som omvandlar en elektrisk signal
> 🎓 [Elektromagneter](https://wikipedia.org/wiki/Electromagnet) är magneter som skapas genom att elektricitet passerar genom en spole av tråd. När elektriciteten är påslagen blir spolen magnetiserad. När elektriciteten stängs av förlorar spolen sin magnetism.


I ett relä driver en styrkrets elektromagneten. När elektromagneten är påslagen drar den en spak som flyttar en strömbrytare, stänger ett par kontakter och slutför en utgångskrets.


När styrkretsen är avstängd stängs elektromagneten av, släpper spaken och öppnar kontakterna, vilket stänger av utgångskretsen. Reläer är digitala aktuatorer – en hög signal till reläet slår på det, en låg signal stänger av det.
@ -85,7 +85,7 @@ Elektromagneten behöver inte mycket ström för att aktiveras och dra spaken, d
Bilden ovan visar ett Grove-relä. Styrkretsen ansluts till en IoT-enhet och slår på eller av reläet med 3,3V eller 5V. Utgångskretsen har två terminaler, var och en kan vara ström eller jord. Utgångskretsen kan hantera upp till 250V vid 10A, tillräckligt för en rad nätanslutna enheter. Du kan få reläer som kan hantera ännu högre strömnivåer.


I bilden ovan tillförs ström till en pump via ett relä. Det finns en röd kabel som ansluter +5V-terminalen på en USB-strömkälla till en terminal på utgångskretsen på reläet, och en annan röd kabel som ansluter den andra terminalen på utgångskretsen till pumpen. En svart kabel ansluter pumpen till jord på USB-strömkällan. När reläet slås på slutför det kretsen, skickar 5V till pumpen och slår på pumpen.
@ -135,7 +135,7 @@ Tillbaka i lektion 3 byggde du en nattlampa – en lysdiod som tänds så snart
Om du gjorde den senaste lektionen om jordfuktighet med en fysisk sensor, skulle du ha märkt att det tog några sekunder för jordfuktighetsavläsningen att sjunka efter att du vattnat din växt. Detta beror inte på att sensorn är långsam, utan på att det tar tid för vatten att tränga igenom jorden.
💁 Om du vattnade för nära sensorn kan du ha sett att avläsningen sjönk snabbt och sedan steg igen – detta beror på att vattnet nära sensorn sprider sig genom resten av jorden, vilket minskar jordfuktigheten vid sensorn.


I diagrammet ovan visar en jordfuktighetsmätning 658. Växten vattnas, men denna mätning ändras inte omedelbart eftersom vattnet ännu inte har nått sensorn. Vattningen kan till och med avslutas innan vattnet når sensorn och värdet sjunker för att återspegla den nya fuktighetsnivån.
@ -157,11 +157,11 @@ Hur länge ska reläet vara på varje gång? Det är bättre att vara försiktig
> 💁 Den här typen av timingkontroll är mycket specifik för den IoT-enhet du bygger, egenskapen du mäter och de sensorer och aktuatorer som används.


Till exempel har jag en jordgubbsplanta med en jordfuktighetssensor och en pump som styrs av ett relä. Jag har observerat att när jag tillsätter vatten tar det cirka 20 sekunder för jordfuktighetsavläsningen att stabilisera sig. Detta innebär att jag behöver stänga av reläet och vänta 20 sekunder innan jag kontrollerar fuktighetsnivåerna. Jag föredrar att ha för lite vatten än för mycket - jag kan alltid slå på pumpen igen, men jag kan inte ta bort vatten från plantan.


Detta innebär att den bästa processen skulle vara en bevattningscykel som ser ut ungefär så här:
1. Med Wio Terminal frånkopplad från din dator eller annan strömkälla, anslut den andra änden av Grove-kabeln till den vänstra Grove-porten på Wio Terminal när du tittar på skärmen. Låt fuktighetssensorn för jord vara ansluten till den högra porten.


1. Sätt fuktighetssensorn för jord i jorden, om den inte redan är det från föregående lektion.
@ -72,7 +72,7 @@ Molnleverantören kan sedan använda stordriftsfördelar för att sänka kostnad
Azure är utvecklarmolnet från Microsoft, och det är det moln du kommer att använda i dessa lektioner. Videon nedan ger en kort översikt av Azure:
[](https://www.microsoft.com/videoplayer/embed/RE4Ibng?WT.mc_id=academic-17441-jabenn)
[](https://www.microsoft.com/videoplayer/embed/RE4Ibng?WT.mc_id=academic-17441-jabenn)
@ -41,7 +41,7 @@ Serverlöst, eller serverlös databehandling, innebär att skapa små kodblock s
> 💁 Om du har använt databasutlösare tidigare kan du tänka på detta som samma sak, kod som triggas av en händelse som att infoga en rad.


Din kod körs endast när händelsen inträffar, det finns inget som håller din kod aktiv vid andra tillfällen. Händelsen inträffar, din kod laddas och körs. Detta gör serverlöst mycket skalbart - om många händelser inträffar samtidigt kan molnleverantören köra din funktion så många gånger som behövs samtidigt över de servrar de har tillgängliga. Nackdelen med detta är att om du behöver dela information mellan händelser måste du spara den någonstans, som i en databas, istället för att lagra den i minnet.
@ -244,7 +244,7 @@ Azure Functions CLI kan användas för att skapa en ny Functions-app.
@ -97,15 +97,15 @@ Kryptering finns i två typer – symmetrisk och asymmetrisk.
**Symmetrisk** kryptering använder samma nyckel för att kryptera och dekryptera data. Både avsändaren och mottagaren måste känna till samma nyckel. Detta är den minst säkra typen, eftersom nyckeln måste delas på något sätt. För att en avsändare ska kunna skicka ett krypterat meddelande till en mottagare kan avsändaren först behöva skicka nyckeln till mottagaren.


Om nyckeln blir stulen under överföringen, eller om avsändaren eller mottagaren blir hackad och nyckeln hittas, kan krypteringen knäckas.


**Asymmetrisk** kryptering använder två nycklar – en krypteringsnyckel och en dekrypteringsnyckel, kallad en offentlig/privat nyckelpar. Den offentliga nyckeln används för att kryptera meddelandet, men kan inte användas för att dekryptera det, den privata nyckeln används för att dekryptera meddelandet men kan inte användas för att kryptera det.


Mottagaren delar sin offentliga nyckel, och avsändaren använder denna för att kryptera meddelandet. När meddelandet skickas dekrypterar mottagaren det med sin privata nyckel. Asymmetrisk kryptering är säkrare eftersom den privata nyckeln hålls privat av mottagaren och aldrig delas. Alla kan ha den offentliga nyckeln eftersom den endast kan användas för att kryptera meddelanden.
@ -165,7 +165,7 @@ Dessa certifikat har ett antal fält, inklusive vem den offentliga nyckeln komme
När du använder X.509-certifikat kommer både avsändaren och mottagaren att ha sina egna offentliga och privata nycklar, samt båda ha X.509-certifikat som innehåller den offentliga nyckeln. De utbyter sedan X.509-certifikat på något sätt, använder varandras offentliga nycklar för att kryptera data de skickar och sin egen privata nyckel för att dekryptera data de tar emot.


En stor fördel med att använda X.509-certifikat är att de kan delas mellan enheter. Du kan skapa ett certifikat, ladda upp det till IoT Hub och använda detta för alla dina enheter. Varje enhet behöver då bara känna till den privata nyckeln för att dekryptera meddelanden den tar emot från IoT Hub.
1. Med Wio Terminal frånkopplad från din dator eller annan strömkälla, anslut den andra änden av Grove-kabeln till det vänstra Grove-uttaget på Wio Terminal när du tittar på skärmen. Detta är uttaget som är närmast strömknappen.


1. Placera GPS-sensorn så att den anslutna antennen har fri sikt mot himlen - helst nära ett öppet fönster eller utomhus. Det är lättare att få en tydligare signal utan hinder för antennen.
@ -66,7 +66,7 @@ Databaser är tjänster som gör det möjligt att lagra och söka i data. Databa
De första databaserna var relationsdatabashanteringssystem (RDBMS), eller relationsdatabaser. Dessa är också kända som SQL-databaser efter Structured Query Language (SQL) som används för att interagera med dem för att lägga till, ta bort, uppdatera eller söka i data. Dessa databaser består av ett schema - en väldefinierad uppsättning datatabeller, liknande ett kalkylblad. Varje tabell har flera namngivna kolumner. När du lägger till data lägger du till en rad i tabellen och fyller i värden i varje kolumn. Detta håller data i en mycket rigid struktur - även om du kan lämna kolumner tomma, måste du lägga till en ny kolumn i databasen och fylla i värden för de befintliga raderna om du vill lägga till en ny kolumn. Dessa databaser är relationella - en tabell kan ha en relation till en annan.


Till exempel, om du lagrade en användares personliga uppgifter i en tabell, skulle du ha någon form av internt unikt ID per användare som används i en rad i en tabell som innehåller användarens namn och adress. Om du sedan ville lagra andra detaljer om den användaren, som deras köp, i en annan tabell, skulle du ha en kolumn i den nya tabellen för användarens ID. När du söker upp en användare kan du använda deras ID för att få deras personliga uppgifter från en tabell och deras köp från en annan.
@ -241,7 +241,7 @@ Din Functions-app behöver nu ansluta till blob-lagring för att lagra meddeland
I denna lektion kommer du att använda Python SDK för att se hur man interagerar med blob-lagring.


Data kommer att sparas som en JSON-blob med följande format:
@ -110,7 +110,7 @@ Varje punkt på polygonen definieras som ett longitud-, latitudpar i en array, o
Polygonens koordinat-array har alltid 1 mer post än antalet punkter på polygonen, där den sista posten är densamma som den första, vilket stänger polygonen. Till exempel, för en rektangel skulle det finnas 5 punkter.


I bilden ovan finns en rektangel. Polygonens koordinater börjar i det övre vänstra hörnet vid 47,-122, sedan rör sig till höger till 47,-121, sedan ner till 46,-121, sedan till vänster till 46,-122, och sedan tillbaka upp till startpunkten vid 47,-122. Detta ger polygonen 5 punkter - övre vänster, övre höger, nedre höger, nedre vänster och sedan övre vänster för att stänga den.
@ -208,7 +208,7 @@ När du gör denna förfrågan kan du också skicka ett värde som kallas `searc
När resultaten returneras från API-anropet är en av delarna i resultatet ett `distance`-värde som mäts till den närmaste punkten på kanten av geofencen, med ett positivt värde om punkten är utanför geofencen och ett negativt värde om den är innanför. Om detta avstånd är mindre än sökbufferten returneras det faktiska avståndet i meter, annars är värdet 999 eller -999. 999 betyder att punkten är utanför geofencen med mer än sökbufferten, -999 betyder att den är innanför geofencen med mer än sökbufferten.


@ -61,7 +61,7 @@ De senaste utvecklingarna av dessa sorteringsmaskiner drar nytta av AI och ML, m
Traditionell programmering innebär att du tar data, tillämpar en algoritm på datan och får ett resultat. Till exempel, i det senaste projektet tog du GPS-koordinater och en geofence, tillämpade en algoritm som tillhandahölls av Azure Maps, och fick tillbaka ett resultat om punkten var innanför eller utanför geofencen. Du matar in mer data, du får mer resultat.


Maskininlärning vänder på detta - du börjar med data och kända resultat, och maskininlärningsalgoritmen lär sig från datan. Du kan sedan ta den tränade algoritmen, kallad en *maskininlärningsmodell* eller *modell*, och mata in ny data och få nya resultat.
@ -87,7 +87,7 @@ För att framgångsrikt träna en bildklassificerare behöver du miljontals bild
När en bildklassificerare har tränats för en mängd olika bilder är dess interna funktioner bra på att känna igen former, färger och mönster. Transfer learning gör det möjligt för modellen att ta det den redan har lärt sig om att känna igen bilddelar och använda det för att känna igen nya bilder.


Du kan tänka på detta som lite som barnböcker om former, där när du kan känna igen en halvcirkel, en rektangel och en triangel, kan du känna igen en segelbåt eller en katt beroende på konfigurationen av dessa former. Bildklassificeraren kan känna igen formerna, och transfer learning lär den vilken kombination som gör en båt eller en katt - eller en mogen banan.
1. Stiften på basen av ArduCam måste anslutas till GPIO-stiften på Wio Terminal. För att göra det enklare att hitta rätt stift, fäst GPIO-stiftetiketten som följer med Wio Terminal runt stiften:


1. Använd jumperkablar för att göra följande anslutningar:
@ -297,7 +297,7 @@ Wio Terminal kan nu programmeras för att ta en bild när en knapp trycks in.
1. Mikrokontroller kör din kod kontinuerligt, så det är inte enkelt att trigga något som att ta ett foto utan att reagera på en sensor. Wio Terminal har knappar, så kameran kan ställas in för att triggas av en av knapparna. Lägg till följande kod i slutet av `setup`-funktionen för att konfigurera C-knappen (en av de tre knapparna på toppen, den som är närmast strömbrytaren).


@ -115,7 +115,7 @@ För prototypen kommer du att implementera allt detta på en enda enhet. Om du a
IoT-enheten behöver någon form av trigger för att indikera när frukten är redo att klassificeras. En trigger för detta skulle kunna vara att mäta när frukten är på rätt plats på transportbandet genom att mäta avståndet till en sensor.


Närhetssensorer kan användas för att mäta avståndet från sensorn till ett objekt. De skickar vanligtvis ut en stråle av elektromagnetisk strålning, som en laserstråle eller infrarött ljus, och detekterar sedan strålningen som studsar tillbaka från ett objekt. Tiden mellan att laserstrålen skickas och signalen studsar tillbaka kan användas för att beräkna avståndet till sensorn.
1. Med Raspberry Pi avstängd, anslut den andra änden av Grove-kabeln till en av I²C-kontakterna markerade **I²C** på Grove Base-hatten som är ansluten till Pi. Dessa kontakter finns på den nedre raden, motsatt sida till GPIO-stiften och bredvid kamerakabelns plats.


## Programmera Time of Flight-sensorn
@ -106,7 +106,7 @@ Programmera enheten.
Avståndsmätaren sitter på baksidan av sensorn, så se till att använda rätt sida när du mäter avstånd.


> 💁 Du kan hitta denna kod i mappen [code-proximity/pi](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector/code-proximity/pi).
1. Med Wio Terminal frånkopplad från din dator eller annan strömkälla, anslut den andra änden av Grove-kabeln till det vänstra Grove-uttaget på Wio Terminal när du tittar på skärmen. Detta är uttaget närmast strömknappen. Det är ett kombinerat digitalt och I2C-uttag.


1. Du kan nu ansluta Wio Terminal till din dator.
@ -101,7 +101,7 @@ Wio Terminal kan nu programmeras för att använda den anslutna Time of Flight-s
Avståndsmätaren sitter på baksidan av sensorn, så se till att du använder rätt sida när du mäter avstånd.


> 💁 Du kan hitta denna kod i [code-proximity/wio-terminal](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector/code-proximity/wio-terminal)-mappen.
@ -39,7 +39,7 @@ Objektdetektorer kan användas för lagerkontroll, antingen för att räkna lage
Till exempel, om en kamera pekar på en hylla som kan hålla 8 burkar tomatpuré, och en objektdetektor bara upptäcker 7 burkar, saknas en och behöver fyllas på.


I bilden ovan har en objektdetektor upptäckt 7 burkar tomatpuré på en hylla som kan hålla 8 burkar. IoT-enheten kan inte bara skicka en notifikation om behovet av påfyllning, utan kan även ge en indikation om var den saknade varan finns, viktig information om du använder robotar för att fylla på hyllor.
@ -51,7 +51,7 @@ Ibland kan fel lager finnas på hyllorna. Detta kan bero på mänskliga misstag
Objektdetektering kan användas för att upptäcka oväntade varor, och återigen varna en människa eller robot för att returnera varan så snart den upptäcks.


I bilden ovan har en burk babymajs placerats på hyllan bredvid tomatpurén. Objektdetektorn har upptäckt detta, vilket gör att IoT-enheten kan notifiera en människa eller robot att returnera burken till dess rätta plats.
@ -81,7 +81,7 @@ Som ett användbart felsökningssteg kan du inte bara skriva ut begränsningsram
1. Kör appen med kameran riktad mot några varor på en hylla. Du kommer att se filen `image.jpg` i VS Code Explorer, och du kommer att kunna välja den för att se begränsningsramarna.


@ -13,7 +13,7 @@ En kombination av förutsägelser och deras begränsningsramar kan användas fö
## Räkna lager


I bilden ovan har begränsningsramarna en liten överlappning. Om denna överlappning var mycket större, kan begränsningsramarna indikera samma objekt. För att räkna objekten korrekt behöver du ignorera ramar med en betydande överlappning.
* Band - Bandmikrofoner liknar dynamiska mikrofoner, förutom att de har ett metallband istället för ett membran. Detta band rör sig i ett magnetfält och genererar en elektrisk ström. Precis som dynamiska mikrofoner behöver bandmikrofoner ingen ström för att fungera.


* Kondensator - Kondensatormikrofoner har ett tunt metallmembran och en fast metallbakplatta. Elektricitet appliceras på båda dessa och när membranet vibrerar ändras den statiska laddningen mellan plattorna och genererar en signal. Kondensatormikrofoner behöver ström för att fungera - kallad *Phantom power*.
@ -84,7 +84,7 @@ Ljud är en analog signal som bär mycket finfördelad information. För att kon
> 🎓 Sampling innebär att konvertera ljudsignalen till ett digitalt värde som representerar signalen vid den tidpunkten.


Digitalt ljud samplas med hjälp av Pulse Code Modulation, eller PCM. PCM innebär att läsa spänningen i signalen och välja det närmaste diskreta värdet till den spänningen med en definierad storlek.
@ -15,11 +15,11 @@ I denna del av lektionen kommer du att lägga till högtalare till din Wio Termi
Wio Terminal har redan en inbyggd mikrofon som kan användas för att fånga ljud för taligenkänning.


För att lägga till en högtalare kan du använda [ReSpeaker 2-Mics Pi Hat](https://www.seeedstudio.com/ReSpeaker-2-Mics-Pi-HAT.html). Detta är ett externt kort som innehåller två MEMS-mikrofoner, samt en högtalaranslutning och hörlursuttag.


Du behöver lägga till antingen hörlurar, en högtalare med 3,5 mm kontakt eller en högtalare med JST-anslutning, såsom [Mono Enclosed Speaker - 2W 6 Ohm](https://www.seeedstudio.com/Mono-Enclosed-Speaker-2W-6-Ohm-p-2832.html).
@ -35,7 +35,7 @@ Du kommer också att behöva ett SD-kort för att ladda ner och spela upp ljud.
1. Placera ReSpeaker och Wio Terminal med GPIO-kontakterna uppåt och på vänster sida.
@ -43,33 +43,33 @@ Du kommer också att behöva ett SD-kort för att ladda ner och spela upp ljud.
1. Upprepa detta hela vägen ner på GPIO-kontakterna på vänster sida. Se till att stiften sitter ordentligt.




> 💁 Om dina jumperkablar är anslutna i band, håll dem alla tillsammans - det gör det lättare att säkerställa att du har anslutit alla kablar i rätt ordning.
1. Upprepa processen med de högra GPIO-kontakterna på ReSpeaker och Wio Terminal. Dessa kablar måste gå runt de kablar som redan är på plats.




> 💁 Om dina jumperkablar är anslutna i band, dela dem i två band. Passera ett på varje sida av de befintliga kablarna.
> 💁 Du kan använda tejp för att hålla stiften i ett block för att förhindra att några lossnar medan du ansluter dem.
>
> 
> 
1. Du behöver lägga till en högtalare.
* Om du använder en högtalare med JST-kabel, anslut den till JST-porten på ReSpeaker.


* Om du använder en högtalare med 3,5 mm kontakt eller hörlurar, sätt in dem i 3,5 mm kontaktuttaget.


### Uppgift - ställ in SD-kortet
@ -79,7 +79,7 @@ Du kommer också att behöva ett SD-kort för att ladda ner och spela upp ljud.
1. Sätt in SD-kortet i SD-kortplatsen på vänster sida av Wio Terminal, precis under strömbrytaren. Se till att kortet är helt insatt och klickar på plats - du kan behöva ett tunt verktyg eller ett annat SD-kort för att hjälpa till att trycka det hela vägen in.


> 💁 För att mata ut SD-kortet måste du trycka in det lite och det kommer att matas ut. Du behöver ett tunt verktyg för detta, såsom en platt skruvmejsel eller ett annat SD-kort.
@ -126,7 +126,7 @@ När entiteterna är definierade skapar du intentioner. Dessa lärs av modellen
Du anger sedan för LUIS vilka delar av dessa meningar som motsvarar entiteter:


Meningen `ställ in en timer för 1 minut och 12 sekunder` har intentionen `ställ in timer`. Den har också 2 entiteter med 2 värden vardera:
@ -37,7 +37,7 @@ I denna lektion kommer vi att täcka:
Text till tal, som namnet antyder, är processen att konvertera text till ljud som innehåller texten som talade ord. Den grundläggande principen är att bryta ner orden i texten till deras beståndsdelar (kända som fonem) och sätta ihop ljud för dessa ljud, antingen med förinspelat ljud eller med ljud som genereras av AI-modeller.


@ -130,7 +130,7 @@ För denna lektion behöver du en översättningsresurs. Du kommer att använda
I en idealisk värld bör hela din applikation förstå så många olika språk som möjligt, från att lyssna på tal, till språkförståelse, till att svara med tal. Detta är mycket arbete, så översättningstjänster kan påskynda leveranstiden för din applikation.


Föreställ dig att du bygger en smart timer som använder engelska från början till slut, förstår talad engelska och konverterar det till text, kör språkförståelse på engelska, bygger upp svar på engelska och svarar med engelskt tal. Om du ville lägga till stöd för japanska, skulle du kunna börja med att översätta talad japanska till engelsk text, sedan behålla kärnan i applikationen densamma, och sedan översätta svarstexten till japanska innan du talar svaret. Detta skulle göra det möjligt för dig att snabbt lägga till stöd för japanska, och du kan expandera till att erbjuda fullständigt stöd för japanska senare.
@ -57,7 +57,7 @@ Azure Cloud Advocates på Microsoft är glada att erbjuda en 12-veckors, 24-lekt
Projekten täcker resan för mat från gård till bord. Detta inkluderar jordbruk, logistik, tillverkning, detaljhandel och konsument – alla populära branschområden för IoT-enheter.


> Sketchnote av [Nitya Narasimhan](https://github.com/nitya). Klicka på bilden för en större version.
Seeed Studios har vänligen gjort all hårdvara tillgänglig som lättköpta kit:
@ -29,7 +29,7 @@ Seeed Studios har vänligen gjort all hårdvara tillgänglig som lättköpta kit
**[IoT för nybörjare med Seeed och Microsoft - Wio Terminal Starter Kit](https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Wio-Terminal-Starter-Kit-p-5006.html)**
@ -79,7 +79,7 @@ Mikrocontroller (pia hujulikana kama MCU, kifupi cha microcontroller unit) ni ko
Mikrocontroller kwa kawaida ni vifaa vya kompyuta vya gharama ya chini, na bei ya wastani kwa zile zinazotumika katika vifaa maalum ikishuka hadi karibu dola za Marekani $0.50, na baadhi ya vifaa vikiwa vya bei ya chini kama $0.03. Vifaa vya msanidi programu vinaweza kuanza kwa bei ya chini kama $4, na gharama huongezeka unapoongeza vipengele zaidi. [Wio Terminal](https://www.seeedstudio.com/Wio-Terminal-p-4509.html), kifaa cha msanidi programu cha mikrocontroller kutoka [Seeed studios](https://www.seeedstudio.com) ambacho kina sensa, aktueta, WiFi na skrini kinagharimu karibu dola za Marekani $30.
> 💁 Unapofanya utafutaji wa mikrocontroller mtandaoni, kuwa makini na kutafuta neno **MCU** kwani hili litarudisha matokeo mengi kuhusu Marvel Cinematic Universe, si mikrocontroller.
@ -93,7 +93,7 @@ Vifaa vya msanidi programu vya mikrocontroller kwa kawaida huja na sensa na aktu
Kompyuta ya bodi moja ni kifaa kidogo cha kompyuta ambacho kina vipengele vyote vya kompyuta kamili vilivyomo kwenye bodi moja ndogo. Hivi ni vifaa ambavyo vina vipimo karibu na PC au Mac ya mezani au laptop, vinaendesha mfumo kamili wa uendeshaji, lakini ni vidogo, vinatumia nguvu kidogo, na ni vya bei nafuu sana.


Raspberry Pi ni mojawapo ya kompyuta za bodi moja maarufu zaidi.
[Raspberry Pi](https://raspberrypi.org) ni kompyuta ya bodi moja. Unaweza kuongeza vihisi na vihisishi kwa kutumia vifaa na mifumo mbalimbali, na kwa masomo haya utatumia mfumo wa vifaa unaoitwa [Grove](https://www.seeedstudio.com/category/Grove-c-1003.html). Utatumia Python kuandika programu yako ya Pi na kufikia vihisi vya Grove.


## Usanidi
@ -112,7 +112,7 @@ Sanidi Pi OS isiyo na kichwa.
1. Kutoka Raspberry Pi Imager, chagua kitufe cha **CHOOSE OS**, kisha chagua *Raspberry Pi OS (Other)*, ikifuatiwa na *Raspberry Pi OS Lite (32-bit)*


> 💁 Raspberry Pi OS Lite ni toleo la Raspberry Pi OS ambalo halina UI ya desktop au zana za UI. Hizi hazihitajiki kwa Pi isiyo na kichwa na hufanya usakinishaji kuwa mdogo na muda wa kuwasha haraka.
@ -251,7 +251,7 @@ Unda programu ya Hello World.
1. Fungua folda hii kwenye VS Code kwa kuchagua *File -> Open...* na kuchagua folda *nightlight*, kisha chagua **OK**.


1. Fungua faili `app.py` kutoka kwa kivinjari cha VS Code na ongeza msimbo ufuatao:
@ -154,11 +154,11 @@ Unda programu ya Python kuchapisha `"Hello World"` kwenye koni.
1. Wakati VS Code inazinduliwa, itawasha mazingira ya mtandaoni ya Python. Mazingira ya mtandaoni yaliyochaguliwa yataonekana kwenye upau wa hali ya chini:


1. Ikiwa terminal ya VS Code tayari inaendesha wakati VS Code inapoanza, haitakuwa na mazingira ya mtandaoni yaliyoamilishwa ndani yake. Jambo rahisi kufanya ni kuua terminal kwa kutumia kitufe cha **Kill the active terminal instance**:


Unaweza kujua ikiwa terminal ina mazingira ya mtandaoni yaliyoamilishwa kwani jina la mazingira ya mtandaoni litakuwa kiambishi awali kwenye prompt ya terminal. Kwa mfano, inaweza kuwa:
@ -229,7 +229,7 @@ Kama hatua ya pili ya 'Hello World', utaendesha programu ya CounterFit na kuunga
1. Utahitaji kuzindua terminal mpya ya VS Code kwa kuchagua kitufe cha **Create a new integrated terminal**. Hii ni kwa sababu programu ya CounterFit inaendesha kwenye terminal ya sasa.


1. Katika terminal hii mpya, endesha faili ya `app.py` kama awali. Hali ya CounterFit itabadilika kuwa **Connected** na LED itawaka.
[Wio Terminal kutoka Seeed Studios](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) ni microcontroller inayofanana na Arduino, yenye WiFi na sensa kadhaa pamoja na actuators zilizojengwa ndani, pamoja na sehemu za kuongezea sensa na actuators zaidi, kwa kutumia mfumo wa vifaa unaoitwa [Grove](https://www.seeedstudio.com/category/Grove-c-1003.html).
PlatformIO itapakua vipengele vinavyohitajika kuunda msimbo kwa Wio Terminal na kuunda mradi wako. Hii inaweza kuchukua dakika chache.
@ -179,7 +179,7 @@ Andika programu ya Hello World.
1. Andika `PlatformIO Upload` kutafuta chaguo la kupakia, na uchague *PlatformIO: Upload*


PlatformIO itatengeneza msimbo kiotomatiki ikiwa inahitajika kabla ya kupakia.
@ -195,7 +195,7 @@ PlatformIO ina Serial Monitor inayoweza kufuatilia data inayotumwa kupitia kebo
1. Andika `PlatformIO Serial` kutafuta chaguo la Serial Monitor, na uchague *PlatformIO: Serial Monitor*


Terminal mpya itafunguka, na data inayotumwa kupitia bandari ya serial itatiririka kwenye terminal hii:
@ -41,7 +41,7 @@ Vipengele viwili vya programu ya IoT ni *Intaneti* na *kifaa*. Hebu tuangalie vi
### Kifaa


Sehemu ya **Kifaa** katika IoT inahusu kifaa kinachoweza kuingiliana na ulimwengu wa kimwili. Vifaa hivi mara nyingi ni kompyuta ndogo, za bei nafuu, zinazofanya kazi kwa kasi ndogo na kutumia nguvu kidogo - kwa mfano, microcontrollers rahisi zenye kilobaiti za RAM (tofauti na gigabaiti kwenye PC) zinazofanya kazi kwa mamia machache ya megahertz (tofauti na gigahertz kwenye PC), lakini wakati mwingine hutumia nguvu kidogo sana kiasi kwamba zinaweza kufanya kazi kwa wiki, miezi au hata miaka kwa betri.
@ -67,7 +67,7 @@ Kwa mfano wa thermostat ya kisasa, thermostat ingeunganishwa kwa kutumia WiFi ya
Toleo la kisasa zaidi linaweza kutumia AI kwenye wingu pamoja na data kutoka kwa sensa nyingine zilizounganishwa na vifaa vingine vya IoT kama sensa za uwepo zinazogundua vyumba vinavyotumika, pamoja na data kama hali ya hewa na hata kalenda yako, kufanya maamuzi ya jinsi ya kuweka joto kwa njia ya kisasa. Kwa mfano, linaweza kuzima mfumo wa kupasha joto ikiwa linasoma kutoka kwa kalenda yako kuwa uko likizoni, au kuzima mfumo wa kupasha joto kwa msingi wa chumba kwa chumba kulingana na vyumba unavyotumia, likijifunza kutoka kwa data kuwa sahihi zaidi kwa muda.


✅ Ni data gani nyingine inaweza kusaidia kufanya thermostat inayounganishwa na Intaneti kuwa ya kisasa zaidi?
@ -135,7 +135,7 @@ Kama ilivyo kwa CPU, kumbukumbu kwenye microcontroller ni ndogo sana ikilinganis
Mchoro hapa chini unaonyesha tofauti ya ukubwa kati ya 192KB na 8GB - nukta ndogo katikati inawakilisha 192KB.


Hifadhi ya programu pia ni ndogo kuliko PC. PC ya kawaida inaweza kuwa na diski ngumu ya 500GB kwa hifadhi ya programu, wakati microcontroller inaweza kuwa na kilobytes tu au labda megabytes chache (MB) za hifadhi (1MB ni 1,000KB, au bytes 1,000,000). Wio terminal ina hifadhi ya programu ya 4MB.
@ -211,17 +211,17 @@ Katika somo la mwisho, tulianzisha kompyuta za bodi moja. Sasa tuzichunguze kwa
### Raspberry Pi


[Raspberry Pi Foundation](https://www.raspberrypi.org) ni shirika la hisani kutoka Uingereza lililoanzishwa mwaka 2009 ili kukuza masomo ya sayansi ya kompyuta, hasa katika ngazi ya shule. Kama sehemu ya dhamira hii, walitengeneza kompyuta ya bodi moja, inayoitwa Raspberry Pi. Raspberry Pis kwa sasa zinapatikana katika aina 3 - toleo la ukubwa kamili, Pi Zero ndogo, na moduli ya kompyuta inayoweza kujengwa kwenye kifaa chako cha mwisho cha IoT.


Toleo la hivi karibuni la Raspberry Pi ya ukubwa kamili ni Raspberry Pi 4B. Hii ina CPU ya quad-core (4 core) inayokimbia kwa 1.5GHz, RAM ya 2, 4, au 8GB, gigabit ethernet, WiFi, bandari 2 za HDMI zinazounga mkono skrini za 4k, bandari ya sauti na video ya mchanganyiko, bandari za USB (2 USB 2.0, 2 USB 3.0), pini 40 za GPIO, kiunganishi cha kamera kwa moduli ya kamera ya Raspberry Pi, na nafasi ya kadi ya SD. Yote haya kwenye bodi ya 88mm x 58mm x 19.5mm na inaendeshwa na usambazaji wa nguvu wa USB-C wa 3A. Hizi zinaanza kwa US$35, bei nafuu zaidi kuliko PC au Mac.
> 💁 Pia kuna Pi400 kompyuta yote katika moja yenye Pi4 iliyojengwa ndani ya kibodi.


Pi Zero ni ndogo zaidi, yenye nguvu ndogo. Ina CPU ya msingi mmoja ya 1GHz, RAM ya 512MB, WiFi (katika modeli ya Zero W), bandari moja ya HDMI, bandari moja ya micro-USB, pini 40 za GPIO, kiunganishi cha kamera kwa moduli ya kamera ya Raspberry Pi, na nafasi ya kadi ya SD. Inapima 65mm x 30mm x 5mm, na hutumia nguvu kidogo sana. Zero ni US$5, na toleo la W lenye WiFi ni US$10.
Kifaa cha IoT kitatoa ishara ya umeme kwa potentiometer kwa voltage, kama vile volts 5 (5V). Potentiometer inaporekebishwa inabadilisha voltage inayotoka upande mwingine. Fikiria una potentiometer iliyoandikwa kama kidhibiti kinachokwenda kutoka 0 hadi [11](https://wikipedia.org/wiki/Up_to_eleven), kama kidhibiti cha sauti kwenye amplifier. Wakati potentiometer iko katika nafasi ya kuzimwa kabisa (0) basi 0V (volts 0) itatoka. Wakati iko katika nafasi ya kuwashwa kabisa (11), 5V (volts 5) itatoka.
@ -112,7 +112,7 @@ Pini kwenye vifaa vya IoT kama pini za GPIO zinaweza kupima ishara hii moja kwa
Vihisi vya dijitali vya hali ya juu zaidi husoma thamani za analogi, kisha kuzibadilisha kwa kutumia ADC zilizojengwa ndani kuwa ishara za dijitali. Kwa mfano, kihisi cha joto cha dijitali bado kitatumia thermocouple kwa njia sawa na kihisi cha analogi, na bado kitapima mabadiliko ya voltage yanayosababishwa na upinzani wa thermocouple kwa joto la sasa. Badala ya kurudisha thamani ya analogi na kutegemea kifaa au bodi ya kiunganishi kubadilisha kuwa ishara ya dijitali, ADC iliyojengwa ndani ya kihisi itabadilisha thamani na kuituma kama mfululizo wa 0 na 1 kwa kifaa cha IoT. 0 na 1 hizi zitatumwa kwa njia sawa na ishara ya dijitali kwa kitufe ambapo 1 ni voltage kamili na 0 ni 0V.


Kutuma data ya dijitali kunaruhusu vihisi kuwa vya hali ya juu zaidi na kutuma data ya kina zaidi, hata data iliyosimbwa kwa vihisi salama. Mfano mmoja ni kamera. Hiki ni kihisi kinachokamata picha na kuituma kama data ya dijitali inayojumuisha picha hiyo, kwa kawaida katika muundo uliobanwa kama JPEG, kusomwa na kifaa cha IoT. Inaweza hata kutiririsha video kwa kukamata picha na kutuma ama picha kamili fremu kwa fremu au mkondo wa video uliobanwa.
@ -164,7 +164,7 @@ Kwa mfano, unaweza kutumia PWM kudhibiti kasi ya motor.
Fikiria unadhibiti motor yenye usambazaji wa 5V. Unatuma pigo fupi kwa motor yako, ukibadilisha voltage kuwa ya juu (5V) kwa sekunde mbili ya mia (0.02s). Katika muda huo motor yako inaweza kuzunguka sehemu moja ya kumi ya mzunguko, au 36°. Ishara kisha inasimama kwa sekunde mbili ya mia (0.02s), ikituma ishara ya chini (0V). Kila mzunguko wa kuwasha kisha kuzima hudumu 0.04s. Mzunguko kisha unarudiwa.


Hii inamaanisha kwa sekunde moja unakuwa na mapigo 25 ya 5V ya 0.02s yanayozungusha motor, kila moja ikifuatiwa na pause ya 0.02s ya 0V ambayo haizungushi motor. Kila pigo huzungusha motor sehemu moja ya kumi ya mzunguko, ikimaanisha motor inakamilisha mizunguko 2.5 kwa sekunde. Umetumia ishara ya kidijitali kuzungusha motor kwa mizunguko 2.5 kwa sekunde, au 150 [mizunguko kwa dakika](https://wikipedia.org/wiki/Revolutions_per_minute) (kipimo kisicho rasmi cha kasi ya mzunguko).
@ -175,7 +175,7 @@ Hii inamaanisha kwa sekunde moja unakuwa na mapigo 25 ya 5V ya 0.02s yanayozungu
> 🎓 Wakati ishara ya PWM iko juu kwa nusu ya muda, na chini kwa nusu ya muda inajulikana kama [mzunguko wa wajibu wa 50%](https://wikipedia.org/wiki/Duty_cycle). Mizunguko ya wajibu hupimwa kama asilimia ya muda ambao ishara iko katika hali ya juu ikilinganishwa na hali ya chini.


Unaweza kubadilisha kasi ya motor kwa kubadilisha ukubwa wa mapigo. Kwa mfano, kwa motor ile ile unaweza kuweka muda wa mzunguko ule ule wa 0.04s, na pigo la juu likipunguzwa nusu hadi 0.01s, na pause ya chini ikiongezeka hadi 0.03s. Unakuwa na idadi ile ile ya mapigo kwa sekunde (25), lakini kila pigo la juu ni nusu ya urefu. Pigo la nusu urefu huzungusha motor sehemu moja ya ishirini ya mzunguko, na kwa mapigo 25 kwa sekunde itakamilisha mizunguko 1.25 kwa sekunde au 75rpm. Kwa kubadilisha kasi ya mapigo ya ishara ya kidijitali umepunguza kasi ya motor ya analogi kwa nusu.
> 💁 Soketi ya Grove ya upande wa kulia inaweza kutumika na sensa za analogi au kidijitali na vifaa vya kutenda. Soketi ya upande wa kushoto ni kwa sensa za analogi pekee. C itafundishwa katika somo la baadaye.


@ -46,7 +46,7 @@ Katika somo hili tutashughulikia:
Kuna itifaki kadhaa maarufu za mawasiliano zinazotumiwa na vifaa vya IoT kuwasiliana na Intaneti. Maarufu zaidi zinategemea ujumbe wa kuchapisha/kusubscribe kupitia aina fulani ya broker. Vifaa vya IoT vinaunganishwa na broker na kuchapisha telemetry na kusubscribe kwa amri. Huduma za wingu pia zinaunganishwa na broker na kusubscribe kwa ujumbe wote wa telemetry na kuchapisha amri kwa vifaa maalum, au kwa vikundi vya vifaa.


MQTT ni itifaki maarufu zaidi ya mawasiliano kwa vifaa vya IoT na imeelezwa katika somo hili. Itifaki nyingine ni pamoja na AMQP na HTTP/HTTPS.
@ -115,7 +115,7 @@ Neno telemetry linatokana na mizizi ya Kigiriki inayomaanisha kupima kwa mbali.
Hebu tuangalie tena mfano wa thermostat ya kisasa kutoka Somo la 1.


Thermostat ina sensa za joto za kukusanya telemetry. Inaweza kuwa na sensa moja ya joto iliyojengwa ndani, na inaweza kuunganishwa na sensa nyingi za joto za nje kupitia itifaki ya bila waya kama [Bluetooth Low Energy](https://wikipedia.org/wiki/Bluetooth_Low_Energy) (BLE).
@ -267,11 +267,11 @@ Andika msimbo wa seva.
1. VS Code itakapoanzishwa, itawasha mazingira halisi ya Python. Hii itaonyeshwa kwenye upau wa hali wa chini:


1. Ikiwa Terminal ya VS Code tayari inaendesha wakati VS Code inaanza, haitakuwa na mazingira halisi yaliyoamilishwa ndani yake. Jambo rahisi kufanya ni kuua terminal kwa kutumia kitufe cha **Kill the active terminal instance**:


1. Zindua Terminal mpya ya VS Code kwa kuchagua *Terminal -> New Terminal*, au kubonyeza `` CTRL+` ``. Terminal mpya itapakia mazingira halisi, na wito wa kuamsha hii utaonekana kwenye terminal. Jina la mazingira halisi (`.venv`) pia litakuwa kwenye prompt:
1. Unda faili mpya kwenye folda ya `src` inayoitwa `config.h`. Unaweza kufanya hivi kwa kuchagua folda ya `src`, au faili ya `main.cpp` ndani yake, na kuchagua kitufe cha **New file** kutoka kwa explorer. Kitufe hiki kinaonekana tu wakati mshale wako uko juu ya explorer.


1. Ongeza msimbo ufuatao kwenye faili hii ili kufafanua constants za maelezo ya WiFi yako:
@ -65,7 +65,7 @@ Kila aina ya mmea ina thamani tofauti kwa joto lake la msingi, bora, na la juu.
✅ Fanya utafiti. Kwa mimea yoyote uliyo nayo kwenye bustani yako, shule, au mbuga ya karibu, angalia kama unaweza kupata joto la msingi.


Grafu hapo juu inaonyesha mfano wa grafu ya ukuaji kulingana na joto. Hadi joto la msingi hakuna ukuaji. Kiwango cha ukuaji kinaongezeka hadi joto bora, kisha kushuka baada ya kufikia kilele hiki. Katika joto la juu ukuaji husimama.
@ -141,7 +141,7 @@ Hii ina athari kubwa ya kazi kwenye shamba kubwa, na inahatarisha mkulima kukosa
Kwa kukusanya data ya joto kwa kutumia kifaa cha IoT, mkulima anaweza kuarifiwa kiotomatiki wakati mimea iko karibu na ukomavu. Muundo wa kawaida wa hili ni kuwa na vifaa vya IoT kupima joto, kisha kuchapisha data hii ya telemetry kupitia mtandao kwa kutumia kitu kama MQTT. Nambari ya seva kisha husikiliza data hii na kuihifadhi mahali fulani, kama kwenye hifadhidata. Hii inamaanisha data inaweza kuchambuliwa baadaye, kama kazi ya usiku ya kuhesabu GDD kwa siku, kujumlisha GDD kwa kila zao hadi sasa na kutoa tahadhari ikiwa mmea uko karibu na ukomavu.


Nambari ya seva pia inaweza kuongeza data ya ziada. Kwa mfano, kifaa cha IoT kinaweza kuchapisha kitambulisho kuonyesha ni kifaa gani, na nambari ya seva inaweza kutumia hii kutafuta eneo la kifaa, na mazao gani kinachofuatilia. Pia inaweza kuongeza data ya msingi kama wakati wa sasa kwani baadhi ya vifaa vya IoT havina vifaa vinavyohitajika kufuatilia wakati sahihi, au vinahitaji nambari ya ziada kusoma wakati wa sasa kupitia mtandao.
@ -228,7 +228,7 @@ Faili hii inafungua faili la CSV, kisha inaongeza safu mpya mwishoni. Safu hiyo
> 💁 Ikiwa unatumia Kifaa cha IoT cha Virtual, chagua kisanduku cha random na weka kiwango ili kuepuka kupata joto sawa kila wakati thamani ya joto inarudishwa.


> 💁 Ikiwa unataka kuendesha hii kwa siku nzima, basi unahitaji kuhakikisha kompyuta ambayo msimbo wa seva yako unaendesha haitalala, ama kwa kubadilisha mipangilio ya nguvu, au kuendesha kitu kama [msimbo huu wa Python wa kuweka mfumo ukiwa hai](https://github.com/jaqsparow/keep-system-active).
1. Ukiwa na Raspberry Pi imezimwa, unganisha mwisho mwingine wa kebo ya Grove kwenye soketi ya kidijitali iliyoandikwa **D5** kwenye Grove Base hat iliyounganishwa na Pi. Soketi hii ni ya pili kutoka kushoto, kwenye safu ya soketi karibu na pini za GPIO.


1. Ukiwa na Wio Terminal imekatwa kutoka kwa kompyuta yako au chanzo kingine cha nguvu, unganisha mwisho mwingine wa kebo ya Grove kwenye soketi ya kulia ya Grove kwenye Wio Terminal ukiangalia skrini. Hii ni soketi iliyo mbali zaidi na kitufe cha nguvu.


@ -37,7 +37,7 @@ UART inahusisha mzunguko wa kimwili unaoruhusu vifaa viwili kuwasiliana. Kila ki
* Kifaa cha 1 kinatuma data kutoka pini yake ya Tx, ambayo inapokelewa na kifaa cha 2 kwenye pini yake ya Rx
* Kifaa cha 1 kinapokea data kwenye pini yake ya Rx ambayo imetumwa na kifaa cha 2 kutoka pini yake ya Tx


> 🎓 Data inatumwa kidogo moja kwa wakati, na hii inajulikana kama mawasiliano ya *serial*. Mfumo wa uendeshaji na mikrokontroller nyingi zina *bandari za serial*, yaani miunganisho inayoweza kutuma na kupokea data ya serial inayopatikana kwa msimbo wako.
@ -66,7 +66,7 @@ Vidhibiti vya SPI hutumia nyaya 3, pamoja na waya 1 wa ziada kwa kila kifaa cha
| SCLK | Saa ya Serial | Waya huu hutuma ishara ya saa kwa kiwango kilichowekwa na kidhibiti. |
| CS | Chagua Chipu | Kidhibiti kina waya nyingi, moja kwa kila kifaa cha pembeni, na kila waya inaunganishwa na waya ya CS kwenye kifaa cha pembeni kinacholingana. |


Waya ya CS hutumika kuamsha kifaa kimoja cha pembeni kwa wakati mmoja, kuwasiliana kupitia nyaya za COPI na CIPO. Wakati kidhibiti kinahitaji kubadilisha kifaa cha pembeni, kinazima waya ya CS iliyounganishwa na kifaa cha pembeni kinachotumika kwa sasa, kisha kinaamsha waya iliyounganishwa na kifaa cha pembeni kinachotaka kuwasiliana nacho.
@ -127,13 +127,13 @@ Unyevu wa udongo unapimwa kwa kutumia maudhui ya maji ya gravimetriki au volumet
Sensa za unyevu wa udongo hupima upinzani wa umeme au kapasitansi - hii haibadiliki tu kwa unyevu wa udongo, lakini pia aina ya udongo kwa kuwa vipengele katika udongo vinaweza kubadilisha sifa zake za umeme. Kwa kawaida sensa zinapaswa kurekebishwa - yaani kuchukua vipimo kutoka sensa na kuvilinganisha na vipimo vilivyopatikana kwa kutumia mbinu ya kisayansi zaidi. Kwa mfano, maabara inaweza kuhesabu unyevu wa udongo wa gravimetriki kwa kutumia sampuli za shamba maalum zilizochukuliwa mara kadhaa kwa mwaka, na nambari hizi zikitumika kurekebisha sensa, kulinganisha kipimo cha sensa na unyevu wa udongo wa gravimetriki.


Mchoro hapo juu unaonyesha jinsi ya kurekebisha sensa. Voltage inachukuliwa kwa sampuli ya udongo ambayo kisha inapimwa maabara kwa kulinganisha uzito wa unyevu na uzito wa mkavu (kwa kupima uzito ukiwa unyevu, kisha kukausha kwenye oveni na kupima ukiwa mkavu). Mara vipimo vichache vinapochukuliwa, vinaweza kuwekwa kwenye mchoro na mstari kufaa kwa alama. Mstari huu unaweza kisha kutumika kubadilisha vipimo vya sensa ya unyevu wa udongo vilivyopimwa na kifaa cha IoT kuwa vipimo halisi vya unyevu wa udongo.
💁 Kwa sensa za unyevu wa udongo za upinzani, voltage huongezeka kadri unyevu wa udongo unavyoongezeka. Kwa sensa za unyevu wa udongo za kapasitansi, voltage hupungua kadri unyevu wa udongo unavyoongezeka, kwa hivyo michoro ya hizi ingekuwa na mwelekeo wa chini, si juu.


Mchoro hapo juu unaonyesha kipimo cha voltage kutoka sensa ya unyevu wa udongo, na kwa kufuata mstari kwenye mchoro, unyevu halisi wa udongo unaweza kuhesabiwa.
@ -37,7 +37,7 @@ Unganisha kihisi cha unyevu wa udongo.
1. Ingiza kihisi cha unyevu wa udongo kwenye udongo. Kina mstari wa 'kiwango cha juu zaidi' - mstari mweupe kwenye kihisi. Ingiza kihisi hadi mstari huu lakini usivuke mstari.


@ -33,11 +33,11 @@ Unganisha kihisi cha unyevu wa udongo.
1. Ukiwa na Wio Terminal imekatwa kutoka kwa kompyuta yako au chanzo kingine cha nguvu, unganisha mwisho mwingine wa kebo ya Grove kwenye soketi ya kulia ya Grove kwenye Wio Terminal unapoangalia skrini. Hii ni soketi iliyo mbali zaidi na kitufe cha nguvu.


1. Ingiza kihisi cha unyevu wa udongo kwenye udongo. Kina mstari wa 'kiwango cha juu zaidi' - mstari mweupe kwenye kihisi. Ingiza kihisi hadi mstari huo lakini usivuke mstari huo.


1. Sasa unaweza kuunganisha Wio Terminal kwenye kompyuta yako.
@ -55,11 +55,11 @@ Relay ni swichi ya kielektroniki inayobadilisha ishara ya umeme kuwa harakati ya
> 🎓 [Sumaku za umeme](https://wikipedia.org/wiki/Electromagnet) ni sumaku zinazoundwa kwa kupitisha umeme kupitia coil ya waya. Umeme unapowashwa, coil inakuwa na sumaku. Umeme unapozimwa, coil inapoteza sumaku yake.


Katika relay, mzunguko wa kudhibiti huendesha sumaku ya umeme. Sumaku ya umeme inapowashwa, inavuta lever inayosogeza swichi, kufunga mawasiliano na kukamilisha mzunguko wa nje.


Mzunguko wa kudhibiti unapozimwa, sumaku ya umeme inazimwa, ikiachilia lever na kufungua mawasiliano, kuzima mzunguko wa nje. Relay ni actuators za kidigitali - ishara ya juu kwa relay inaiwasha, ishara ya chini inazima.
@ -85,7 +85,7 @@ Sumaku ya umeme haitaji nguvu nyingi kuamsha na kuvuta lever, inaweza kudhibitiw
Picha hapo juu inaonyesha relay ya Grove. Mzunguko wa kudhibiti unaunganisha na kifaa cha IoT na kuwasha au kuzima relay kwa kutumia 3.3V au 5V. Mzunguko wa nje una vituo viwili, chochote kinaweza kuwa umeme au ardhi. Mzunguko wa nje unaweza kushughulikia hadi 250V kwa 10A, ya kutosha kwa vifaa mbalimbali vinavyotumia umeme wa nyumbani. Unaweza kupata relay zinazoweza kushughulikia hata viwango vya juu vya nguvu.


Katika picha hapo juu, umeme unapelekwa kwa pampu kupitia relay. Kuna waya nyekundu inayounganisha terminal ya +5V ya chanzo cha umeme cha USB na terminal moja ya mzunguko wa nje wa relay, na waya nyekundu nyingine inayounganisha terminal nyingine ya mzunguko wa nje na pampu. Waya nyeusi inaunganisha pampu na ardhi kwenye chanzo cha umeme cha USB. Relay inapowashwa, inakamilisha mzunguko, kutuma 5V kwa pampu, kuiwasha pampu.
@ -135,7 +135,7 @@ Katika somo la 3 ulijenga taa ya usiku - LED inayowashwa mara tu kiwango cha chi
Ikiwa ulifanya somo la mwisho kuhusu unyevu wa udongo kwa kutumia sensa ya kimwili, ungeweza kugundua kuwa ilichukua sekunde chache kwa usomaji wa unyevu wa udongo kushuka baada ya kumwagilia mmea wako. Hii si kwa sababu sensa ni polepole, lakini kwa sababu inachukua muda kwa maji kupenya kwenye udongo.
💁 Ikiwa ulimwagilia maji karibu sana na kihisi, huenda uliona usomaji ukishuka haraka kisha kurudi juu - hii inasababishwa na maji karibu na kihisi kusambaa kwenye sehemu nyingine ya udongo, na kupunguza unyevu wa udongo karibu na kihisi.


Katika mchoro hapo juu, kipimo cha unyevu wa udongo kinaonyesha 658. Mmea unamwagiliwa maji, lakini kipimo hiki hakibadiliki mara moja kwa sababu maji bado hayajafika kwenye kihisi. Kumwagilia maji kunaweza hata kumalizika kabla ya maji kufika kwenye kihisi na thamani kushuka ili kuonyesha kiwango kipya cha unyevu.
@ -157,11 +157,11 @@ Je, relay inapaswa kuwashwa kwa muda gani kila wakati? Ni bora kuwa mwangalifu n
> 💁 Udhibiti wa muda wa aina hii ni maalum sana kwa kifaa cha IoT unachojenga, mali unayopima na vihisi na actuators vinavyotumika.


Kwa mfano, nina mmea wa strawberry na kihisi cha unyevu wa udongo na pampu inayodhibitiwa na relay. Nimegundua kwamba ninapoongeza maji inachukua takriban sekunde 20 kwa kipimo cha unyevu wa udongo kutulia. Hii inamaanisha ninahitaji kuzima relay na kusubiri sekunde 20 kabla ya kuangalia viwango vya unyevu. Ningependelea kuwa na maji kidogo kuliko mengi - naweza kuwasha pampu tena, lakini siwezi kuondoa maji kutoka kwenye mmea.


Hii inamaanisha mchakato bora wa kumwagilia ungekuwa kama:
@ -72,7 +72,7 @@ Mtoa huduma wa wingu anaweza kutumia uchumi wa kiwango kupunguza gharama, kununu
Azure ni wingu la watengenezaji kutoka Microsoft, na hili ndilo wingu utakalotumia kwa masomo haya. Video iliyo hapa chini inatoa muhtasari mfupi wa Azure:
[](https://www.microsoft.com/videoplayer/embed/RE4Ibng?WT.mc_id=academic-17441-jabenn)
[](https://www.microsoft.com/videoplayer/embed/RE4Ibng?WT.mc_id=academic-17441-jabenn)
@ -41,7 +41,7 @@ Serverless, au kompyuta isiyo na seva, inahusisha kuunda vizuizi vidogo vya msim
> 💁 Ikiwa umewahi kutumia vichocheo vya hifadhidata, unaweza kufikiria hili kama kitu sawa, msimbo unaochochewa na tukio kama kuingiza safu.


Msimbo wako unaendeshwa tu tukio linapotokea, hakuna kitu kinachohifadhi msimbo wako ukiwa hai nyakati nyingine. Tukio linatokea, msimbo wako unapakiwa na kuendeshwa. Hii inafanya serverless kuwa na uwezo mkubwa wa kupanuka - ikiwa matukio mengi yanatokea kwa wakati mmoja, mtoa huduma wa wingu anaweza kuendesha kazi yako mara nyingi kadri unavyohitaji kwa wakati mmoja kwenye seva zozote walizonazo. Hasara ya hili ni kwamba ikiwa unahitaji kushiriki taarifa kati ya matukio, unahitaji kuziokoa mahali fulani kama hifadhidata badala ya kuzihifadhi kwenye kumbukumbu.
@ -244,7 +244,7 @@ CLI ya Azure Functions inaweza kutumika kuunda programu mpya ya Functions.
@ -97,15 +97,15 @@ Usimbaji fiche unakuja kwa aina mbili - symmetri na asymmetri.
**Symmetri** hutumia ufunguo sawa kusimba na kufuta data. Mtumaji na mpokeaji wote wanahitaji kujua ufunguo sawa. Hii ni aina isiyo salama zaidi, kwa kuwa ufunguo unahitaji kushirikiwa kwa namna fulani. Ili mtumaji kutuma ujumbe uliofichwa kwa mpokeaji, mtumaji anaweza kwanza kuhitaji kutuma ufunguo kwa mpokeaji.


Ikiwa ufunguo utaibiwa wakati wa usafirishaji, au mtumaji au mpokeaji atavamiwa na ufunguo ukapatikana, usimbaji fiche unaweza kuvunjwa.


**Asymmetri** hutumia funguo 2 - ufunguo wa kusimba na ufunguo wa kufuta, unaojulikana kama jozi ya funguo ya umma/binafsi. Ufunguo wa umma hutumika kusimba ujumbe, lakini hauwezi kutumika kufuta, na ufunguo wa binafsi hutumika kufuta ujumbe lakini hauwezi kutumika kusimba.


Mpokeaji hushiriki ufunguo wake wa umma, na mtumaji hutumia huu kusimba ujumbe. Mara tu ujumbe unapotumwa, mpokeaji hufuta kwa kutumia ufunguo wake wa binafsi. Usimbaji fiche wa asymmetri ni salama zaidi kwa kuwa ufunguo wa binafsi unahifadhiwa na mpokeaji na haujawahi kushirikiwa. Mtu yeyote anaweza kuwa na ufunguo wa umma kwa kuwa unaweza kutumika tu kusimba ujumbe.
@ -165,7 +165,7 @@ Vyeti hivi vina sehemu kadhaa ndani yake, ikiwa ni pamoja na ni nani ufunguo wa
Unapotumia vyeti vya X.509, mtumaji na mpokeaji wote watakuwa na funguo zao za umma na binafsi, pamoja na vyeti vya X.509 vinavyobeba funguo za umma. Kisha wanabadilishana vyeti vya X.509 kwa namna fulani, wakitumia funguo za umma za kila mmoja kuficha data wanayotuma, na funguo zao binafsi kufungua data wanayopokea.


Faida kubwa ya kutumia vyeti vya X.509 ni kwamba vinaweza kushirikiwa kati ya vifaa. Unaweza kuunda cheti kimoja, kukipakia kwenye IoT Hub, na kutumia hiki kwa vifaa vyote vyako. Kila kifaa kinahitaji tu kujua ufunguo binafsi kufungua ujumbe kinachopokea kutoka IoT Hub.
1. Ukiwa umeondoa Wio Terminal kutoka kwa kompyuta yako au chanzo kingine cha umeme, unganisha mwisho mwingine wa kebo ya Grove kwenye soketi ya upande wa kushoto ya Grove kwenye Wio Terminal ukiangalia skrini. Hii ni soketi iliyo karibu zaidi na kitufe cha kuwasha.


1. Weka kihisi cha GPS mahali ambapo antena iliyounganishwa inaweza kuona anga - ikiwezekana karibu na dirisha lililo wazi au nje. Ni rahisi kupata ishara wazi bila kitu chochote kuzuia antena.
@ -66,7 +66,7 @@ Hifadhidata ni huduma zinazokuruhusu kuhifadhi na kuuliza data. Hifadhidata huja
Hifadhidata za kwanza zilikuwa Mfumo wa Usimamizi wa Hifadhidata za Uhusiano (RDBMS), au hifadhidata za uhusiano. Hizi pia zinajulikana kama hifadhidata za SQL kutokana na Lugha ya Uulizaji Iliyopangiliwa (SQL) inayotumika kuingiliana nazo ili kuongeza, kuondoa, kusasisha au kuuliza data. Hifadhidata hizi zina muundo - seti iliyoelezwa vizuri ya meza za data, sawa na lahajedwali. Kila meza ina safu nyingi zilizopewa majina. Unapoweka data, unaongeza safu kwenye meza, ukiweka thamani kwenye kila safu. Hii huweka data katika muundo thabiti - ingawa unaweza kuacha safu tupu, ikiwa unataka kuongeza safu mpya lazima ufanye hivyo kwenye hifadhidata, ukijaza thamani kwa safu zilizopo. Hifadhidata hizi zina uhusiano - kwamba meza moja inaweza kuwa na uhusiano na nyingine.


Kwa mfano, ikiwa ungehifadhi maelezo ya kibinafsi ya mtumiaji kwenye meza, ungekuwa na aina fulani ya ID ya kipekee ya ndani kwa kila mtumiaji inayotumika kwenye safu kwenye meza inayojumuisha jina na anwani ya mtumiaji. Ikiwa ungependa kuhifadhi maelezo mengine kuhusu mtumiaji huyo, kama manunuzi yake, kwenye meza nyingine, ungekuwa na safu moja kwenye meza mpya kwa ID ya mtumiaji huyo. Unapomtafuta mtumiaji, unaweza kutumia ID yake kupata maelezo yake ya kibinafsi kutoka meza moja, na manunuzi yake kutoka nyingine.
@ -241,7 +241,7 @@ Sasa programu yako ya functions inahitaji kuunganishwa na hifadhi ya blob ili ku
Katika somo hili, utatumia Python SDK kuona jinsi ya kuingiliana na hifadhi ya blob.


Data itahifadhiwa kama blob ya JSON yenye muundo ufuatao:
@ -110,7 +110,7 @@ Kila nukta kwenye poligoni hufafanuliwa kama jozi la longitudo na latitudo katik
Safu ya viwianishi vya poligoni daima ina kiingilio 1 zaidi kuliko idadi ya nukta kwenye poligoni, na kiingilio cha mwisho kuwa sawa na cha kwanza, kufunga poligoni. Kwa mfano, kwa mstatili kutakuwa na nukta 5.


Katika picha hapo juu, kuna mstatili. Viwianishi vya poligoni vinaanza upande wa juu-kushoto kwa 47,-122, kisha vinaenda kulia kwa 47,-121, kisha chini kwa 46,-121, kisha kulia kwa 46, -122, kisha kurudi juu kwa nukta ya mwanzo kwa 47, -122. Hii inatoa poligoni nukta 5 - juu-kushoto, juu-kulia, chini-kulia, chini-kushoto, kisha juu-kushoto kufunga.
@ -208,7 +208,7 @@ Wakati unafanya ombi hili, unaweza pia kupitisha thamani inayoitwa `searchBuffer
Wakati matokeo yanarudishwa kutoka kwa simu ya API, moja ya sehemu za matokeo ni `distance` iliyopimwa hadi nukta ya karibu kwenye ukingo wa geofence, na thamani chanya ikiwa nukta iko nje ya geofence, hasi ikiwa iko ndani ya geofence. Ikiwa umbali huu ni chini ya search buffer, umbali halisi unarudishwa kwa mita, vinginevyo thamani ni 999 au -999. 999 inamaanisha kwamba nukta iko nje ya geofence kwa zaidi ya search buffer, -999 inamaanisha iko ndani ya geofence kwa zaidi ya search buffer.


Katika picha hapo juu, geofence ina search buffer ya 50m.
@ -61,7 +61,7 @@ Mageuzi ya hivi karibuni ya mashine hizi za kuchagua yanatumia AI na ML, kwa kut
Programu za jadi ni pale unapochukua data, kutumia algorithimu kwenye data hiyo, na kupata matokeo. Kwa mfano, katika mradi uliopita ulitumia viwianishi vya GPS na geofence, ukatumia algorithimu iliyotolewa na Azure Maps, na ukapata matokeo ya kama sehemu hiyo ilikuwa ndani au nje ya geofence. Ukiingiza data zaidi, unapata matokeo zaidi.


Kujifunza kwa mashine kunabadilisha hili - unaanza na data na matokeo yanayojulikana, na algorithimu ya kujifunza kwa mashine inajifunza kutoka kwa data hiyo. Unaweza kisha kuchukua algorithimu hiyo iliyofundishwa, inayoitwa *mfano wa kujifunza kwa mashine* au *mfano*, na kuingiza data mpya na kupata matokeo mapya.
@ -87,7 +87,7 @@ Ili kufundisha kifaa cha uainishaji wa picha kwa mafanikio, unahitaji mamilioni
Mara tu kifaa cha uainishaji wa picha kinapofundishwa kwa picha mbalimbali, sehemu zake za ndani ni nzuri katika kutambua maumbo, rangi, na mifumo. Kujifunza kwa uhamisho kunaruhusu mfano kutumia kile ambacho tayari kimejifunza katika kutambua sehemu za picha, na kutumia maarifa hayo kutambua picha mpya.


Unaweza kufikiria hili kama vitabu vya maumbo ya watoto, ambapo mara tu unapoweza kutambua nusu duara, mstatili, na pembetatu, unaweza kutambua mashua au paka kulingana na mpangilio wa maumbo haya. Kifaa cha uainishaji wa picha kinaweza kutambua maumbo, na kujifunza kwa uhamisho kunakifundisha mchanganyiko gani unafanya mashua au paka - au ndizi iliyokomaa.
1. Pini kwenye msingi wa ArduCam zinahitaji kuunganishwa kwenye pini za GPIO za Wio Terminal. Ili iwe rahisi kupata pini sahihi, weka stika ya pini ya GPIO inayokuja na Wio Terminal kuzunguka pini:


1. Kwa kutumia nyaya za kuruka, fanya miunganisho ifuatayo:
@ -297,7 +297,7 @@ Wio Terminal sasa inaweza kupangwa kupiga picha wakati kitufe kinapobonyezwa.
1. Microcontrollers huendesha msimbo wako mfululizo, kwa hivyo si rahisi kuanzisha kitu kama kupiga picha bila kujibu kihisi. Wio Terminal ina vitufe, kwa hivyo kamera inaweza kusanidiwa kuanzishwa na moja ya vitufe. Ongeza msimbo ufuatao mwishoni mwa kazi ya `setup` ili kusanidi kitufe cha C (kimoja kati ya vitufe vitatu juu, kilicho karibu zaidi na swichi ya nguvu).


@ -115,7 +115,7 @@ Kwa mfano, utatekeleza yote haya kwenye kifaa kimoja. Ikiwa unatumia kidhibiti m
Kifaa cha IoT kinahitaji aina fulani ya kichocheo kuonyesha wakati matunda yako tayari kuainishwa. Kichocheo kimoja kwa hili litakuwa kupima wakati matunda yako katika eneo sahihi kwenye mkanda wa kusafirisha kwa kupima umbali hadi kwenye kihisi.


Vihisi vya ukaribu vinaweza kutumika kupima umbali kutoka kwa kihisi hadi kwenye kitu. Kwa kawaida hutuma miale ya mionzi ya sumakuumeme kama vile miale ya leza au mwanga wa infraredi, kisha kugundua mionzi hiyo ikirudi kutoka kwenye kitu. Muda kati ya miale ya leza kutumwa na ishara kurudi unaweza kutumika kuhesabu umbali hadi kwenye kihisi.
@ -35,7 +35,7 @@ Unganisha kihisi cha Time of Flight.
1. Ukiwa na Raspberry Pi imezimwa, unganisha mwisho mwingine wa kebo ya Grove kwenye moja ya soketi za I²C zilizowekwa alama **I²C** kwenye Grove Base hat iliyounganishwa na Pi. Soketi hizi ziko kwenye safu ya chini, upande wa pili wa pini za GPIO na karibu na nafasi ya kebo ya kamera.


## Programu ya kihisi cha Time of Flight
@ -106,7 +106,7 @@ Programu kifaa.
Kipima umbali kiko nyuma ya kihisi, kwa hivyo hakikisha unatumia upande sahihi unapopima umbali.


> 💁 Unaweza kupata msimbo huu kwenye folda ya [code-proximity/pi](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector/code-proximity/pi).
@ -35,7 +35,7 @@ Unganisha kihisi cha Time of Flight.
1. Ukiwa umeondoa Wio Terminal kutoka kwa kompyuta yako au chanzo kingine cha umeme, unganisha mwisho mwingine wa kebo ya Grove kwenye soketi ya upande wa kushoto ya Wio Terminal unapoangalia skrini. Hii ni soketi iliyo karibu zaidi na kitufe cha kuwasha. Hii ni soketi ya pamoja ya dijitali na I2C.


1. Sasa unaweza kuunganisha Wio Terminal kwenye kompyuta yako.
@ -101,7 +101,7 @@ Sasa Wio Terminal inaweza kupangwa kutumia kihisi cha Time of Flight kilichounga
Kipima umbali kipo nyuma ya kihisi, kwa hivyo hakikisha unatumia upande sahihi unapopima umbali.


> 💁 Unaweza kupata msimbo huu kwenye folda ya [code-proximity/wio-terminal](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector/code-proximity/wio-terminal).
@ -39,7 +39,7 @@ Vifaa vya kutambua vitu vinaweza kutumika kwa ukaguzi wa hisa, ama kwa kuhesabu
Kwa mfano, ikiwa kamera inaelekezwa kwenye rafu inayoweza kushikilia makopo 8 ya tomato paste, na kifaa cha kutambua vitu kinatambua makopo 7 tu, basi moja linakosekana na linahitaji kuwekwa tena.


Katika picha hapo juu, kifaa cha kutambua vitu kimetambua makopo 7 ya tomato paste kwenye rafu inayoweza kushikilia makopo 8. Si tu kwamba kifaa cha IoT kinaweza kutuma arifa ya hitaji la kuweka bidhaa, lakini pia kinaweza kutoa maelezo ya eneo la bidhaa inayokosekana, data muhimu ikiwa unatumia roboti kuweka bidhaa.
@ -51,7 +51,7 @@ Wakati mwingine bidhaa zisizofaa zinaweza kuwa kwenye rafu. Hii inaweza kuwa kos
Utambuzi wa vitu unaweza kutumika kugundua bidhaa zisizotarajiwa, tena kuarifu binadamu au roboti kurudisha bidhaa mara tu inapogunduliwa.


Katika picha hapo juu, kopo la mahindi ya mtoto limewekwa kwenye rafu karibu na tomato paste. Kifaa cha kutambua vitu kimetambua hili, kuruhusu kifaa cha IoT kuarifu binadamu au roboti kurudisha kopo mahali pake sahihi.
@ -81,7 +81,7 @@ Kama hatua ya kusaidia kutatua matatizo, unaweza si tu kuchapisha masanduku ya m
1. Endesha programu na kamera ikielekezwa kwenye hisa kwenye rafu. Utaona faili ya `image.jpg` kwenye kivinjari cha VS Code, na utaweza kuichagua ili kuona masanduku ya mipaka.


@ -13,7 +13,7 @@ Mchanganyiko wa utabiri na masanduku yao ya mipaka unaweza kutumika kuhesabu his
## Hesabu Hisa


Kwenye picha iliyoonyeshwa hapo juu, masanduku ya mipaka yana mgongano mdogo. Ikiwa mgongano huu ungekuwa mkubwa zaidi, basi masanduku ya mipaka yanaweza kuonyesha kitu kimoja. Ili kuhesabu vitu kwa usahihi, unahitaji kupuuza masanduku yenye mgongano mkubwa.
@ -64,7 +64,7 @@ Maikrofoni huja katika aina mbalimbali:
* **Ribbon** - Maikrofoni za ribbon zinafanana na maikrofoni za dynamic, isipokuwa zina ribbon ya chuma badala ya diaphragm. Ribbon hii husogea kwenye uwanja wa sumaku na kuzalisha mkondo wa umeme. Kama maikrofoni za dynamic, maikrofoni za ribbon hazihitaji nguvu kufanya kazi.


* **Condenser** - Maikrofoni za condenser zina diaphragm nyembamba ya chuma na sahani ya nyuma ya chuma iliyowekwa. Umeme hutumika kwa vyote viwili na diaphragm inapovibrate, chaji ya static kati ya sahani hubadilika na kuzalisha ishara. Maikrofoni za condenser zinahitaji nguvu kufanya kazi - inayoitwa *Phantom power*.
@ -84,7 +84,7 @@ Sauti ni ishara ya analogi inayobeba taarifa za kina sana. Ili kubadilisha ishar
> 🎓 Kuchukua sampuli ni kubadilisha ishara ya sauti kuwa thamani ya kidijitali inayowakilisha ishara hiyo kwa wakati huo.


Sauti ya kidijitali inachukuliwa sampuli kwa kutumia Pulse Code Modulation, au PCM. PCM inahusisha kusoma voltage ya ishara, na kuchagua thamani ya karibu zaidi ya kidijitali kwa voltage hiyo kwa kutumia ukubwa ulioainishwa.
@ -15,11 +15,11 @@ Katika sehemu hii ya somo, utaongeza spika kwenye Wio Terminal yako. Wio Termina
Wio Terminal tayari ina kipaza sauti kilichojengwa ndani, ambacho kinaweza kutumika kurekodi sauti kwa utambuzi wa sauti.


Ili kuongeza spika, unaweza kutumia [ReSpeaker 2-Mics Pi Hat](https://www.seeedstudio.com/ReSpeaker-2-Mics-Pi-HAT.html). Hii ni bodi ya nje yenye vipaza sauti viwili vya MEMS, pamoja na kiunganishi cha spika na tundu la vichwa vya sauti.


Utahitaji kuongeza vichwa vya sauti, spika yenye jack ya 3.5mm, au spika yenye kiunganishi cha JST kama [Mono Enclosed Speaker - 2W 6 Ohm](https://www.seeedstudio.com/Mono-Enclosed-Speaker-2W-6-Ohm-p-2832.html).
@ -35,7 +35,7 @@ Pia utahitaji kadi ya SD kwa ajili ya kupakua na kucheza sauti. Wio Terminal ina
Pini zinapaswa kuunganishwa kwa njia hii:


1. Weka ReSpeaker na Wio Terminal zikiwa na soketi za GPIO zikielekea juu, na upande wa kushoto.
@ -43,33 +43,33 @@ Pia utahitaji kadi ya SD kwa ajili ya kupakua na kucheza sauti. Wio Terminal ina
1. Rudia mchakato huu hadi chini ya soketi za GPIO upande wa kushoto. Hakikisha pini zimeingia vizuri.




> 💁 Ikiwa nyaya zako za jumper zimeunganishwa kwenye riboni, ziache pamoja - itakuwa rahisi kuhakikisha umeunganisha nyaya zote kwa mpangilio.
1. Rudia mchakato huu ukitumia soketi za GPIO upande wa kulia wa ReSpeaker na Wio Terminal. Nyaya hizi zinapaswa kupita kuzunguka nyaya ambazo tayari zimeunganishwa.




> 💁 Ikiwa nyaya zako za jumper zimeunganishwa kwenye riboni, zigawanye kuwa riboni mbili. Pitisha moja kila upande wa nyaya zilizopo.
> 💁 Unaweza kutumia mkanda wa gundi kushikilia pini pamoja ili kuzuia zisitoke wakati wa kuziunganisha.
> 
> 
1. Utahitaji kuongeza spika.
* Ikiwa unatumia spika yenye waya wa JST, iunganishe kwenye bandari ya JST kwenye ReSpeaker.


* Ikiwa unatumia spika yenye jack ya 3.5mm, au vichwa vya sauti, viingize kwenye tundu la jack ya 3.5mm.


### Kazi - sanidi kadi ya SD
@ -79,7 +79,7 @@ Pia utahitaji kadi ya SD kwa ajili ya kupakua na kucheza sauti. Wio Terminal ina
1. Ingiza kadi ya SD kwenye tundu la kadi ya SD upande wa kushoto wa Wio Terminal, chini ya kitufe cha kuwasha. Hakikisha kadi imeingia kabisa na kubofya - unaweza kuhitaji chombo chembamba au kadi nyingine ya SD kusaidia kuisukuma hadi mwisho.


> 💁 Ili kutoa kadi ya SD, unahitaji kuisukuma kidogo na itatoka. Utahitaji chombo chembamba kama bisibisi ya kichwa bapa au kadi nyingine ya SD kufanya hivyo.
@ -126,7 +126,7 @@ Baada ya kufafanua vyombo, unaunda makusudi. Haya yanajifunza na mfano kulingana
Kisha unaiambia LUIS ni sehemu gani za sentensi hizi zinahusiana na vyombo:


Sentensi `weka kipima muda kwa dakika 1 na sekunde 12` ina kusudi la `weka kipima muda`. Pia ina vyombo 2 vyenye thamani 2 kila moja:
@ -37,7 +37,7 @@ Katika somo hili tutashughulikia:
Maandishi hadi sauti, kama jina linavyopendekeza, ni mchakato wa kubadilisha maandishi kuwa sauti inayojumuisha maneno yaliyosemwa. Kanuni ya msingi ni kuvunja maneno katika maandishi kuwa sauti zake za kimsingi (zinazojulikana kama fonimu), na kushona pamoja sauti za fonimu hizo, ama kwa kutumia sauti zilizorekodiwa awali au sauti zinazozalishwa na mifano ya AI.


Mifumo ya maandishi hadi sauti kwa kawaida ina hatua 3:
@ -130,7 +130,7 @@ Kwa somo hili utahitaji rasilimali ya Mtafsiri. Utatumia API ya REST kutafsiri m
Katika ulimwengu bora, programu yako yote inapaswa kuelewa lugha nyingi iwezekanavyo, kutoka kusikiliza sauti, kuelewa lugha, hadi kujibu kwa sauti. Hii ni kazi kubwa, kwa hivyo huduma za tafsiri zinaweza kuharakisha muda wa utoaji wa programu yako.


Fikiria unajenga kipima muda mahiri kinachotumia Kiingereza kutoka mwanzo hadi mwisho, kuelewa Kiingereza kilichozungumzwa na kukibadilisha kuwa maandishi, kuendesha uelewa wa lugha kwa Kiingereza, kuunda majibu kwa Kiingereza na kujibu kwa sauti ya Kiingereza. Ikiwa ungependa kuongeza msaada kwa Kijapani, ungeweza kuanza kwa kutafsiri Kijapani kilichozungumzwa kuwa maandishi ya Kiingereza, kisha kuweka msingi wa programu sawa, kisha kutafsiri maandishi ya majibu kwenda Kijapani kabla ya kuyazungumza. Hii ingeruhusu kuongeza msaada wa Kijapani haraka, na unaweza kupanua kutoa msaada kamili wa Kijapani baadaye.
@ -57,7 +57,7 @@ Waharakati wa Azure Cloud Microsoft wana furaha kutoa mtaala wa wiki 12, masomo
Miradi inahusu safari ya chakula kutoka shambani hadi mezani. Hii inajumuisha kilimo, usafirishaji, utengenezaji, rejareja na matumizi - yote ni maeneo maarufu ya viwanda kwa vifaa vya IoT.


> Sketchnote na [Nitya Narasimhan](https://github.com/nitya). Bonyeza picha kuona toleo kubwa.
Some files were not shown because too many files have changed in this diff
Show More