Мазмуну:

IoT Dual Temperature Data Server: 12 кадам (Сүрөттөр менен)
IoT Dual Temperature Data Server: 12 кадам (Сүрөттөр менен)

Video: IoT Dual Temperature Data Server: 12 кадам (Сүрөттөр менен)

Video: IoT Dual Temperature Data Server: 12 кадам (Сүрөттөр менен)
Video: Загадка Титаника : Как они могли не заметить айсберг?! Самая подробная история! 2024, Ноябрь
Anonim
IoT Dual Temperature Data Server
IoT Dual Temperature Data Server

Бул менин Instructable жазууга болгон биринчи аракетим, андыктан мага жеңилдик кылыңыз! Эгер бул өтө деле жаман эмес деп ойлосоңуз, анда биринчи жолу авторлор конкурсунда мага добуш бериңиз.

Бул менин Lock-Down долбоорум, күнөсканада 2 температураны алыстан көзөмөлдөө үчүн, бири полдун деңгээлинде, экинчиси чатырдын астында. Мен мурун Raspberry Pi's (RPi) колдонгон болсом да, бул долбоор мен колдоно элек бир нече элементтерди камтыйт жана жолдо, мен эскирип калган же туура эмес болгон бир нече окуу куралдарын таптым. Бул менин жолумда алынган Pi Zero & 2 DS18B20+ One Wire санариптик температура сенсорлорунан иштөөчү кош алыстан температура мониторун жасоо үчүн менин билимимдин жыйнагы.

Мен билген нерселер:

  • Заттар Интернетинин (IoT) бир бөлүгү катары түзмөктөн маалыматтарды алуу
  • 1-Wire интерфейси 2 түзмөк менен
  • Берилиш
  • JSON дайындары
  • UFW брандмауэрин орнотуу
  • Маалыматтарды көрсөтүү үчүн Freeboard.io колдонуу
  • Программаны автоматтык түрдө иштетүү үчүн RPi конфигурациялоо

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

Жабдуулар

  • Сизге Raspberry Pi керек болот (орнотуу үчүн монитор, чычкан жана клавиатура менен, бирок даяр долбоорду иштеткенде эмес)
  • Иштеп жаткан интернет байланышы.
  • Микро USB туташтыргычы бар PSU
  • DS18B20+ One Wire санарип температура сенсорлорунун 2. Мен Amazon эң арзан деп таптым
  • 4K7 ohm каршылыгы же мен 2 10K ohm каршылыгын колдондум.
  • Скамейкада сыноо үчүн кичинекей нан жана бир нече эркек/ургаачы зымдар
  • Акыркы жыйын үчүн стриптиздин кичинекей бөлүгү
  • Лайкоо жана зым ачуу үчүн жөнөкөй шаймандар.
  • Даяр болгон дизайнды сактоо үчүн кичинекей пластикалык кутуча

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

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

Менде мурунтан эле Raspberry Pi Zero W бар болчу (зымсыз менен), бирок бул жөнөкөй долбоор RPIлердин баарында жакшы иштээрине ишенем. Менин устаканамдагы кызык электрондук биттердин кутусунда башка нерселердин бардыгы бар болчу (нан, зым, PSU ж. Бул кадимки DS18B20 чиптери, жөн эле суу өткөрбөй турган корпуска жана 3м кабелге орнотулган. Кабелден 3 зым бар:

  • Кызыл - күч - 3.3v pin 1ге туташыңыз
  • Кара - кайтуу - жерге төөнөгүч 6 менен туташуу
  • Сары - маалыматтар - GPIO4 пин 7ге туташыңыз

Сенсорлор 1-Wire интерфейсин колдонот жана туташуу жана маалыматтарды алуу абдан оңой болгон. Интернетте 1 түзмөктү туташтыруу үчүн деталдары бар бир нече барактар бар, бирок 2 (же андан көп) туташуу боюнча өтө аз.

Скамейкада тестирлөө үчүн, схема нандын жардамы менен чогултулган. Мен тапкан сабактар маалымат линиясын бурмалоо үчүн 4K7 каршылыгын колдонууну билдиришти, бирок мен таппай койдум жана параллелдүү 2* 10K колдонгон жана ал жакшы эле иштеген. Интернетте RPi схемаларын чогултуу үчүн нан тактасын колдонуу үчүн көптөгөн ресурстар бар, ошондуктан мен аларды бул жерде кайталабайм.

Диаграмма микросхеманын жардамы менен түзүлгөн

2 -кадам: Raspberry Pi OS программалык камсыздоону орнотуу

Raspberry Pi OS программалык камсыздоону орнотуу
Raspberry Pi OS программалык камсыздоону орнотуу
Raspberry Pi OS программалык камсыздоону орнотуу
Raspberry Pi OS программалык камсыздоону орнотуу
Raspberry Pi OS программалык камсыздоону орнотуу
Raspberry Pi OS программалык камсыздоону орнотуу

Мен мурун бул RPi колдонгонум үчүн, мен ОСтин таза орнотуусунан баштоону чечтим, SD картаны кайра форматтадым жана NOOBSтин таза версиясын орноттум. Мен андан кийин Raspianдын толук версиясын (эң мыкты вариант) орноттум, анткени бул LIP версиясында жок PIP & GITти орнотот. Мага долбоор үчүн Графикалык Колдонуучу Интерфейси (GUI) кереги жок болсо да, бул бардык варианттарды орнотуунун оңой жолу жана 16gb SD картасы менен мейкиндик тартыш болгон жок.

Мен WI-FIга кирүүнү орноттум, андан кийин толук орнотууну, анан чеберди жаңыртуу жана жаңыртуу менен иштеттим. GUIди колдонуп, GUIди колдонуу Command Line Interfaceке (CLI) караганда жөнөкөй болгондуктан, мен RPIди керектүү түрдө жөнгө салдым. Мен менюдан конфигурация терезесине бардым, анан:

  • Тутум өтмөгүндө, мен сырсөздү өзгөрттүм, CLIге жүктөө үчүн койдум жана Auto Login белгиси жок
  • Интерфейстер өтмөгүндө мен 1 зымды иштеттим
  • Ок басылды жана кайра жүктөлдү

Эгерде сиз каалаган убакта GUIге кайтууңуз керек болсо, CLIге startx териңиз

startx

3 -кадам: Алыстан кирүүгө уруксат берүү үчүн маалыматтын жөндөөлөрүн орнотуңуз

Алыстан кирүүгө уруксат берүү үчүн Dataplicity орнотуу
Алыстан кирүүгө уруксат берүү үчүн Dataplicity орнотуу
Алыстан кирүүгө уруксат берүү үчүн Dataplicity орнотуу
Алыстан кирүүгө уруксат берүү үчүн Dataplicity орнотуу
Алыстан кирүүгө уруксат берүү үчүн Dataplicity орнотуу
Алыстан кирүүгө уруксат берүү үчүн Dataplicity орнотуу

Мен Dataplicity сайтынан https://blog.dataplicity.com/how-to-build-a-raspb… боюнча абдан пайдалуу блог жазууну таптым жана мунун бир нече бөлүгүн колдондум. Блогдун 3 -бөлүмүндө RPiге алыстан кирүү үчүн Dataplicity орнотулушу сүрөттөлөт. Мен буга чейин Dataplicity колдоно элекмин, бирок айта кетишим керек, мен аны өтө жөнөкөй алыстан кирүү куралы катары сунуштайм. Скриншоттор (жогорудагы блогдо) бир аз эскирсе да, принцип жакшы.

Компьютериңизде Dataplicity.com сайтына өтүп, эсеп жазууну түзүңүз (браузерди GUIде колдонсоңуз болот, бирок RPi Zero боюнча жайыраак). Андан кийин "жаңы түзмөк кошуу" баскычын чыкылдатыңыз жана калкыма терезеде коддун сабы көрсөтүлөт. Андан кийин RPi боюнча CLIге барып, текст сабына териңиз. Эгерде баары жайында болсо, Dataplicity логотиби көрсөтүлөт жана орнотуу программасы иштейт.

Кайра компьютериңизге, жаңы түзмөк азыр Dataplicity веб -сайтында көрүнүшү керек. Түзмөктү чыкылдатыңыз жана RPi үчүн терминалдык экранды көрүшүңүз керек.

Бул жерде белгилей турган бир нече нерсе бар:

  • Кирүү үчүн "su pi" териңиз (супер колдонуучуга кирүү үчүн) жана сизден сырсөз талап кылынат (мурда белгиленгендей)
  • Сиз Wormhole иштетишиңиз керек (кийинчерээк колдонулат)
  • Маалыматтарды кийин көрсөтүү үчүн Wormhole дареги керек болот (керек болгондо көчүрүү үчүн оң баскычын басыңыз)

Сиз бул алыстан кирүүнү кийинки кадамдардын бардыгында колдоно аласыз жана маалыматтарды, программаларды ж.

4 -кадам: сенсорлорду текшерүү

Эми Dataplicity'ди RPIге кийинки бардык бөлүмдөр үчүн алыстан кирүүнү колдоно аласыз.

Эгерде азыр баары жакшы туташкан болсо, анда сиз DS18B20'дон кайтарылган температураларды көрө алышыңыз керек. Мен Pi Hut окуу куралы аркылуу иштедим, бирок мунун көбү талап кылынган жок. Эгерде сиз толук маалымат алгыңыз келсе, аларды бул жерден тапса болот:

Маанилүү биттер - бул түзмөктөрдүн каталогуна өтүү жана 2 башка сенсордун көрсөтүлүшүн текшерүү.

cd/sys/bus/w1/devices/

Бул 28- жана автобус мастери менен башталган 2 түзмөктү көрсөтүшү керек. Меники шоулар:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Бул 2 ID номери маанилүү жана кийинчерээк керек болот! Андан кийин сенсор каталогдорунун бирине өзгөртүңүз:

cd 28-011453ebfdaa

(мисалы) жана андан кийин сенсордон маанини окуу

cat w1_slave

Тексттин 2 сабы көрсөтүлүшү керек:

53 01 4b 46 7f ff 0c 10 2d: crc = 2d Ооба

53 01 4b 46 7f ff 0c 10 2d t = 21187

Ооба, сенсор туура окуп жатканын көрсөтөт жана 21187 21.187деги Цельсий температурасын көрсөтөт (1000ге бөлүү) Экинчи сенсорду текшерүү үчүн муну кайталаңыз. Эгерде экөө тең окуса, анда Python3 менен маалыматтарды окууга өтсөк болот.

Мен Интернеттен тапкан төмөнкү кодду көчүрдүм жана ылайыкташтырдым, бирок кайдан экенин эстей албайм. Эгерде бул сиздин кодуңузга окшош болсо, анда мен эч кандай плагиат ойлонулбагандыктан кечирим сурайм; сураныч, мага кабарлаңыз, мен сиздин ишиңизди моюнга алам.

Долбоор деп аталган каталогду түзүңүз жана ошол каталогго өзгөртүңүз.

mkdir ~/долбоорлор

cd ~/долбоорлор

Бул каталогдо, thermo-test.py деп аталган файлды түзүү жана түзөтүү үчүн текст редакторун (нано) колдонуңуз

sudo нано термо-тест.py

Бул редакторду ачышы керек болчу жана сиз Dataplicity колдонуп жатканыңызда, төмөнкү кодду төмөндө (thermo-test.py) көчүрүп, редакторго чаптаңыз. Сиз 2 түзмөктүн аталышын (28- … баштап) жогоруда белгиленгендерге өзгөртүшүңүз керек болот. Баары туура көрүнгөндө, аягына чыгаруу үчүн ctrl+X баскычын басыңыз, сактап калуу жана учурдагы ысымды колдонуу үчүн кайтуу. Эгерде сиз GUIди колдонууну кааласаңыз, анда Тонни да ошону кылат.

Тест программасын иштетүү үчүн:

sudo python3 thermo-test.py

Баары жакшы, бул файлды python 3 менен аткарып, экранга 2 температураны 10 секунд сайын басып турушу керек. Сиз муздак сууга 1 сенсорду коюу же фен менен акырын жылуу аркылуу баары жайында экенин текшере аласыз. Эгерде баары ойдогудай болсо, анда биз алдыга жыла алабыз!

5 -кадам: UFW Firewall

UFW Firewall
UFW Firewall

Бул RPi интернетке биротоло туташып тургандыктан, мен Firewall жакшы идея болот деп чечтим жана жөнөкөй колдонуу татаал эмес Firewall (ufw). Бул жерде абдан жөнөкөй үйрөткүч бар

Мен тереңирээк түшүнбөйм, анткени бул Нускаманын максаты эмес, бирок кыскасы:

Брандмауэрди орнотуу:

sudo apt-get ufw орнотуу

Демейки эрежелерди коюңуз:

sudo ufw демейки чыгууга уруксат берет

sudo ufw демейки киргенди четке кагат

Dataplicity үчүн 80 портун ачыңыз

sudo ufw 80ге уруксат берүү

Брандмауэрди иштетүү

sudo ufw иштетүү

Статусун текшерип, бардыгы иштеп жатканына ынаныңыз

sudo ufw абалы

6 -кадам: Температура маалыматтарын JSON катары токтотуу

S Температура маалыматын JSON катары бүтүрөт
S Температура маалыматын JSON катары бүтүрөт

Тим Фернандонун блогуна жана 5 -бөлүмүнө кайтуу.

Жогоруда айтылгандай кадамдарды аткарыңыз (биз долбоорлордун каталогун түзбөгөнүбүздөн тышкары) жана баары жакшы иштеши керек. GITти колдонуу менен сиз Тимдин колдонмо файлдарын жүктөп аласыз жана PIP бардык керектүү программалар сиздин RPiге орнотулганын текшерет. Ошондо мен пакеттердин бардыгы туура орнотулганын текшерүү үчүн кайра жүктөөм керек экенин түшүндүм.

Андан кийин Тимдин программасын иштетиңиз жана сиздин RPi андан кийин биринчи сенсор үчүн JSON маалыматын бериши керек.

CD үй/пи/долбоорлор/температура-тейлөө-пи

sudo gunicorn температурасы: колдонмо -b 0.0.0.0:80

Сиз блог аркылуу 6 -бөлүмгө өтсөңүз болот, анда сенсорлордун 1и үчүн маалыматтар берилип жатканын таба аласыз.

Сиз ошондой эле маалыматты көрүү үчүн JSON Viewer колдоно аласыз https://codebeautify.org/jsonviewer "URL жүктөө" баскычын чыкылдатып, мурда белгиленген Wormhole дарегине чаптаңыз. Сол панелде сиз эки жазууну көрүшүңүз керек, бири Цельсий үчүн, экинчиси Фаренгейт үчүн.

7 -кадам: Маалыматты эки сенсордон жөнөтүңүз

Маалыматты эки сенсордон жөнөтүңүз
Маалыматты эки сенсордон жөнөтүңүз

Temperatur.py жана thermo-test.py ичиндеги коддун негизинде, мен 2temps.py файлын /долбоорлор /температура-сервис-пи каталогунда мурдагыдай эле түзөтүп, кодго чаптап, сактап койдум. Мен андан кийин чуркадым

sudo gunicorn 2temps: app -b 0.0.0.0:80

Эми мен JSON Viewerди кайра иштеткенде temp1 & temp2 үчүн баалуулуктарга ээ болдум

Ийгилик:)

8 -кадам: Авто баштоо

Авто баштоо
Авто баштоо

Күнөсканадагы электр энергиясы маал -маалы менен өчүп калгандыктан, мен RPi программаны автоматтык түрдө жүктөп, маалыматтарды далилдей башташын кааладым. Эң жөнөкөй ыкма rc.local файлын түзөтүү жана керектүү кодду төмөндөгү чыгуу 0 сызыгынын үстүнө кошуу болуп көрүнөт.

cd ж

sudo nan rc.local

андан кийин кошуу

уктоо 10

cd home/pi/projects/temperature-serve-pi sudo gunicorn temp04: app -b 0.0.0.0:80 &

  • & Аягында компьютерге сценарийди суб кабыкта иштетүүнү айтат, ошондо сиздин компьютер функциянын бүтүшүн күтпөйт жана жүктөө менен уланат.
  • Уйку 10 [секунд] кызматты баштоодон мурун мурунку бардык операциялар аткарылганын текшерет.

Чыгып, мурункудай сактаңыз. Анан кайра жүктөп, JSON Viewerди кайра иштетип, баары жакшы экенин текшериңиз.

Эгерде сиз автоматтык түрдө иштөөчү программалар жөнүндө көбүрөөк маалымат алгыңыз келсе, бул жерде мыкты окуу куралы бар

9 -кадам: Freeboard.ioдо маалыматтарды көрсөтүү (1)

Freeboard.ioдо маалыматтарды көрсөтүү (1)
Freeboard.ioдо маалыматтарды көрсөтүү (1)

Тимдин блогундагы кадамдар жалпысынан жакшы иштейт; www.freeboard.io сайтында каттоо эсебин түзүңүз, анан жаңы Freeboard түзүңүз, мен SHEDTEMPERATURES деп атадым.

Биринчиден, маалымат булагын кошуңуз, үстүңкү оң жактагы КОШУУ дегенди чыкылдатыңыз жана калкып чыкма терезеден JSONду тандаңыз, маалымат булагына АТЫҢЫЗды бериңиз, мурунтан эле курт тешигинин дарегин URL катары кошуп, THINGPROXY СЫНОО үчүн NO баскычын басыңыз. Температура өтө жай гана өзгөрөт, андыктан ар бир 15 секундда жаңыртуу жакшы. САКТАҢЫЗ.

10 -кадам: Freeboard.ioдо маалыматтарды көрсөтүү (2)

Freeboard.ioдо маалыматтарды көрсөтүү (2)
Freeboard.ioдо маалыматтарды көрсөтүү (2)
Freeboard.ioдо маалыматтарды көрсөтүү (2)
Freeboard.ioдо маалыматтарды көрсөтүү (2)
Freeboard.ioдо маалыматтарды көрсөтүү (2)
Freeboard.ioдо маалыматтарды көрсөтүү (2)
Freeboard.ioдо маалыматтарды көрсөтүү (2)
Freeboard.ioдо маалыматтарды көрсөтүү (2)

Биринчи виджетти кошуу үчүн ADD PANE, анан + дегенди басыңыз. Сиз ар кандай TYPEлерди тандап ойной аласыз, бирок мен Gauge жөн эле жакшы экенин байкадым. Колдонмоңузга ылайыктуу TITLE, UNITS (C), MINIMUM жана MAXIMUM бериңиз. DATASOURCE үчүн + дегенди басыңыз жана жогоруда түзүлгөн булак пайда болот.

Ылдый ачылуучу азыр мурда курулган 2 JSON маалымат булагын (temp2 & temp2) көрсөтүшү керек. Тийиштүү булакты тандап, сактоо дегенди басыңыз.

Экинчи өлчөгүч үчүн муну кайталаңыз жана баарыбыз даярбыз.

Маалыматтар азыр 2 ченегичте көрсөтүлүшү керек жана эгерде сизде дагы эле PRi мониторго туташып турган болсо, анда Freeboard.ioдон келген сурамдарды алар келиши керек.

11 -кадам: Долбоорду бир кутуга куруңуз

Долбоорду бир кутуга куруңуз
Долбоорду бир кутуга куруңуз
Долбоорду бир кутуга куруңуз
Долбоорду бир кутуга куруңуз
Долбоорду бир кутуга куруңуз
Долбоорду бир кутуга куруңуз
Долбоорду бир кутуга куруңуз
Долбоорду бир кутуга куруңуз

Ушул убакка чейин, RPi жана башка компоненттердин баары нан тактасынын жардамы менен отургучка чогултулган. Нан тактасын алмаштыруу үчүн стриптиздин кичинекей бир бөлүгү колдонулган жана коргошундар баары ордуна коюлган.

Жаркыраган кызгылт кичинекей Lego сактоочу куту табылды, ал көп орунга ээ жана RPI өтө ысып кетпейт. кутунун капталдарына тешиктер тешилген жана 3мм нейлон орнотуучу мамылар RPi менен стриптизди ордуна коюу үчүн колдонулган.

GPIO, 3.3v, GND жана маалыматтан талап кылынган 3 гана байланыш бар.

  • 3.3vdc пин 1
  • GND пин 6
  • Маалымат (GPIO4) пин 7

Температура сенсорлоруна USB кубаты жана кабелдери үчүн кутуга тешиктер да кошулган. Баары ордуна коюлгандан кийин, жөргөмүштөр кышкысын жакшы жылуу жер деп ойлобогонун камсыз кылуу үчүн силикон пломбага бир аз кошулду!

12 -кадам: Бүттү

Бүттү
Бүттү
Бүттү
Бүттү

Бул кутуча күнөсканага салынып, USB кубаттагычтан иштейт. Көчөттөр түнкүсүн канчалык суук болгонун текшерүү үчүн эки сенсордун бири күнөскананын чокусуна жакын, экинчиси өсүмдүктүн казанына коюлган.

Бул менин биринчи көрсөтмөм жана мен муну жакшы деп ойлойм деп үмүттөнөм. Эгер кандайдыр бир ката тапсаңыз, мага кабарлаңыз жана мен керектүү жерлерди өзгөртөм. Кийинки кадам маалыматтарды ар бир 60 секундада каттоо болушу мүмкүн, бирок бул кийинчерээк келет.

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