Съдържание:

IoT Dual Temperature Data Server: 12 стъпки (със снимки)
IoT Dual Temperature Data Server: 12 стъпки (със снимки)

Видео: IoT Dual Temperature Data Server: 12 стъпки (със снимки)

Видео: IoT Dual Temperature Data Server: 12 стъпки (със снимки)
Видео: Какого числа от 1 до 31, родился человек, такая у него и вся жизнь 2024, Юни
Anonim
IoT сървър за данни с две температури
IoT сървър за данни с две температури

Това е първият ми опит да напиша Instructable и затова, моля, по -лесно с мен! Ако смятате, че това не е лошо, моля, гласувайте за мен в Първия конкурс за автори.

Това е моят проект за заключване за дистанционно наблюдение на 2 температури в оранжерия, една на нивото на пода и една точно под покрива. Въпреки че преди бях използвал Raspberry Pi (RPi), този проект включваше няколко елемента, които не бях използвал и по пътя открих няколко урока, които са остарели или просто са грешни. Това е моята колекция от знания, за да направя работещ двоен дистанционен температурен монитор от Pi Zero & 2 DS18B20+ едножични цифрови температурни сензори, който беше придобит по пътя.

Неща, за които научих:

  • Предоставяне на данни от устройство като част от Интернет на нещата (IoT)
  • 1-Wire интерфейс с 2 устройства
  • Продължителност на данните
  • JSON данни
  • Настройване на защитната стена на UFW
  • Използване на Freeboard.io за показване на данните
  • Конфигуриране на RPi за автоматично стартиране на програмата

Има огромно количество данни, които могат да бъдат намерени с просто търсене по всички тези теми, но това, което не е толкова ясно, е как да комбинирате всички тези отделни елементи.

Консумативи

  • Ще ви е необходим Raspberry Pi (с монитор, мишка и клавиатура за настройка, но не и при стартиране на готовия проект)
  • Работеща интернет връзка.
  • Захранващ блок с Micro USB конектор
  • 2 на DS18B20+ едножични цифрови температурни сензори. Открих, че Amazon е най -евтиният
  • 4K7 ом резистор или използвах 2 10K ома резистора.
  • Малка дъска и няколко мъжки/женски проводника за тестване на пейката
  • Малко парче лента за окончателно сглобяване
  • Прости инструменти за запояване и сваляне на тел.
  • Малка пластмасова кутия за приютяване на завършения дизайн

Стъпка 1: Хардуер

Хардуер
Хардуер
Хардуер
Хардуер

Вече имах Raspberry Pi Zero W (с безжична връзка), но съм сигурен, че този прост проект ще работи добре на всеки от RPI. В кутията с нечетни електронни битове в моята работилница имаше всичко останало (платка, проводник, захранване и т.н.) и затова всичко, което трябваше да купя, бяха два 2 x DS18B20 сензора от Amazon. Това са нормалните чипове DS18B20, удобно монтирани във водоустойчив корпус и 3 -метров кабел. Има 3 проводника от кабела:

  • Червено - захранване - свържете се към 3.3v щифт 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 (най -горната опция), тъй като това също ще инсталира PIP & GIT, което не позволява версията Lite. Въпреки че не се нуждаех от графичния потребителски интерфейс (GUI) за проекта, това е лесен начин да настроите всички опции и с 16gb SD карта нямаше недостиг на място.

Настроих WI-FI достъп, след това стартирах пълната инсталация и след това съветника с актуализации и надстройки и др. Използвайки графичния интерфейс, аз настроих RPI според нуждите, само защото използването на графичния интерфейс е по-просто от интерфейса на командния ред (CLI). Отидох в прозореца за конфигурация от менюто и след това:

  • В системния раздел промених паролата, зададох за зареждане на CLI и отметнах Автоматично влизане
  • В раздела интерфейси активирах 1-проводник
  • Кликнете върху OK и рестартирайте

Ако трябва да се върнете към GUI по всяко време, просто напишете startx в CLI

startx

Стъпка 3: Настройте Dataplicity, за да разрешите отдалечен достъп

Настройте Dataplicity, за да разрешите отдалечен достъп
Настройте Dataplicity, за да разрешите отдалечен достъп
Настройте Dataplicity, за да разрешите отдалечен достъп
Настройте Dataplicity, за да разрешите отдалечен достъп
Настройте Dataplicity, за да разрешите отдалечен достъп
Настройте Dataplicity, за да разрешите отдалечен достъп

Намерих наистина полезен запис в блога на сайта Dataplicity на адрес https://blog.dataplicity.com/how-to-build-a-raspb… и използвах няколко части от това. Раздел 3 на блога описва настройката на Dataplicity за отдалечен достъп до RPi. Никога преди не съм използвал Dataplicity, но трябва да кажа, че го препоръчвам като много прост инструмент за отдалечен достъп. Въпреки че екранните снимки (в блога по -горе) са малко остарели, принципът е добре.

На вашия компютър отидете на Dataplicity.com и създайте акаунт (можете да използвате браузъра в GUI, но по -скоро бавно на RPi Zero). След това щракнете върху бутона „добавяне на ново устройство“и в изскачащия прозорец се показва ред с код. След това отидете на CLI на RPi и въведете реда с текст. Ако всичко е наред, ще се покаже логото на Dataplicity и ще се стартира инсталационната програма.

Обратно на вашия компютър, новото устройство вече трябва да се появи на уебсайта на Dataplicity. Щракнете върху устройството и трябва да видите терминален екран за вашия RPi.

Тук трябва да се отбележат няколко неща:

  • За да влезете, въведете „su pi“(за достъп на суперпотребител) и ще бъдете подканени да въведете паролата (както е зададена по -рано)
  • Трябва да активирате Wormhole (за използване по -късно)
  • Ще ви е необходим адрес Wormhole за показване на данните по-късно (щракнете с десния бутон, за да копирате, когато е необходимо)

Можете да използвате този отдалечен достъп за всички следващи стъпки и е много по -лесно за копиране на данни, програми и т.н., отколкото директно на RPi.

Стъпка 4: Проверете сензорите

Вече можете да използвате Dataplicity отдалечен достъп до RPI за всички следващи раздели.

Ако сега всичко е свързано добре, трябва да можете да видите как температурите се връщат от DS18B20. Работих чрез урока Pi Hut, но повечето от това не се изискваше. Ако искате пълните подробности, те могат да бъдат намерени тук:

Важните битове са да отидете в директорията на устройствата и да се уверите, че са показани 2 различни сензора.

cd/sys/bus/w1/devices/

Това трябва да показва 2 устройства, започващи с 28- и шината master. Моите показват:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Тези 2 идентификационни номера са важни и ще са необходими по -късно! След това преминете към една от директориите на сензорите:

cd 28-011453ebfdaa

(например) и след това да отчете стойността от сензора

котка 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.

Копирах и адаптирах следния код, който намерих в мрежата, но не мога да си спомня откъде. Ако това прилича на вашия код, тогава се извинявам, тъй като не е имало намерение за плагиатство; моля, уведомете ме и ще призная работата ви.

Създайте директория, наречена Projects, и променете тази директория.

mkdir ~/проекти

cd ~/проекти

В тази директория използвайте текстовия редактор (nano), за да създадете и редактирате файл, наречен thermo-test.py

sudo nano thermo-test.py

Това трябваше да отвори редактора и тъй като използвате Dataplicity, можете просто да копирате следния код по-долу (thermo-test.py) и да го поставите в редактора. Ще трябва да промените 2-те имена на устройства (започвайки от 28- …) до тези, отбелязани по-горе. Когато всичко изглежда правилно, натиснете ctrl+X, за да завършите, Y за запазване и връщане, за да използвате съществуващото име. Ако предпочитате да използвате графичния интерфейс, Тони ще направи същото.

За да стартирате тестовата програма:

sudo python3 thermo-test.py

Всичко е наред, това трябва да изпълни файла с помощта на python 3 и да отпечата на екрана 2 -те температури на всеки 10 секунди. Можете да проверите дали всичко е наред, като поставите 1 сензор в ледена вода или леко затоплите със сешоар. Ако всичко изглежда наред, тогава можем да продължим!

Стъпка 5: UFW защитна стена

UFW защитна стена
UFW защитна стена

Тъй като този RPi щеше да бъде постоянно свързан с интернет, реших, че защитната стена би била добра идея, а лесна за използване е неусложнена защитна стена (ufw). Тук има много прост урок

Няма да навлизам в дълбочина, тъй като това не е целта на тази инструкция, но накратко:

Инсталирайте защитната стена с:

sudo apt-get install ufw

Задайте правилата по подразбиране:

sudo ufw по подразбиране позволяват изходящи

sudo ufw default deny incoming

Отворете порт 80 за Dataplicity

sudo ufw позволяват 80

Активирайте защитната стена

sudo ufw enable

Проверете състоянието и се уверете, че всичко работи

sudo ufw статус

Стъпка 6: S прекратяване на температурните данни като JSON

S прекратяване на температурните данни като JSON
S прекратяване на температурните данни като JSON

Обратно към блога на Тим Фернандо и раздел 5.

Следвайте стъпките, както е посочено (с изключение на това, че вече сме създали директорията на проектите) и всичко трябва да работи добре. С помощта на GIT ще изтеглите файловете на приложението на Тим, а PIP ще се увери, че всички необходими програми са инсталирани на вашия RPi. След това установих, че трябва да рестартирам, за да се уверя, че всички пакети са настроени правилно.

След това стартирайте програмата на Тим и тогава вашият RPi трябва да предоставя JSON данни за първия сензор.

cd home/pi/projects/temperature-serve-pi

температура на sudo gunicorn: приложение -b 0.0.0.0:80

Можете да продължите през блога към раздел 6, където ще откриете, че се предоставят данни за 1 от сензорите.

Можете също да използвате JSON Viewer, за да видите данните https://codebeautify.org/jsonviewer Щракнете върху бутона „зареждане на URL адрес“и поставете в адреса на Wormhole, отбелязан по -рано. В левия прозорец трябва да видите два записа, един за Целзий и един за Фаренхайт.

Стъпка 7: Изпратете данни от двата сензора

Изпращане на данни от двата сензора
Изпращане на данни от двата сензора

Въз основа на кода в temperature.py и thermo-test.py създадох 2temps.py Редактиран както преди в директорията /projects /temperature-serve-pi, поставен в кода и запазен. След това изтичах

sudo gunicorn 2temps: приложение -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 &

  • & В края казва на компютъра да стартира скрипта в подкожух, така че компютърът ви да не чака края на функцията и да продължи с зареждането
  • Sleep 10 [секунди] гарантира, че всички предишни операции са завършени преди стартиране на услугата.

Излезте и запазете както преди. След това рестартирайте и стартирайте отново JSON Viewer, за да проверите дали всичко е наред.

Ако искате повече информация за автоматично стартиращите програми, тук има страхотен урок

Стъпка 9: Показване на данните на Freeboard.io (1)

Показване на данните на Freeboard.io (1)
Показване на данните на Freeboard.io (1)

Стъпките в блога на Тим работят добре, в обобщение; създайте акаунт на www.freeboard.io и след това създайте нов Freeboard, нарекох моя SHEDTEMPERATURES.

Първо добавете източник на данни, щракнете върху ДОБАВИ в горния десен ъгъл и от изскачащия прозорец изберете JSON като тип, дайте на източника на данни ИМЕ, добавете адреса на червеевата дупка от по-рано като URL и щракнете върху НЕ за ИЗПИТВАНЕ НА THINGPROXY. Температурите се променят само много бавно и затова ОБНОВЕТЕ ВСЕКИ 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)

Щракнете върху ДОБАВЯНЕ НА ПАНЕЛ и след това върху +, за да добавите първата джаджа. Можете да избирате и да играете с различни типове, но открих, че Gauge е добре. Дайте подходящо ЗАГЛАВИЕ, ЕДИНИЦИ (C), МИНИМУМ и МАКСИМУМ, които да отговарят на вашето приложение. За ДАННИТЕ ИЗТОЧНИК щракнете върху + и ще се появи източникът, създаден по -горе.

Падащото меню сега трябва да показва 2 -те източника на данни JSON (temp2 & temp2), изградени по -рано. Изберете подходящия източник и щракнете върху запазване.

Повторете това за втория габарит и всичко е готово.

Данните вече трябва да се показват на двата уреда и ако все още имате PRi свързан към монитор, трябва да видите заявките от Freeboard.io, когато пристигнат.

Стъпка 11: Изградете проекта в кутия

Изградете проекта в кутия
Изградете проекта в кутия
Изградете проекта в кутия
Изградете проекта в кутия
Изградете проекта в кутия
Изградете проекта в кутия
Изградете проекта в кутия
Изградете проекта в кутия

До този момент RPi и другите компоненти бяха сглобени на пейката с помощта на макет. След това беше използвано малко парче лента за подмяна на дъската и всички проводници запоени на място.

Беше открита ярко розова малка кутия за съхранение на Lego, която имаше много място и където RPI нямаше да се нагорещи твърде много. дупки бяха пробити в страните на кутията и 3 мм найлонови монтажни колони бяха използвани за задържане на RPi и лентата на място.

Изискват се само 3 връзки от GPIO, 3.3v, GND и данни.

  • 3.3vdc пин 1
  • GND щифт 6
  • Data (GPIO4) пин 7

В кутията също бяха добавени дупки за USB захранване и кабели към температурните сензори. След като всичко беше монтирано на място, беше добавено малко количество силиконов уплътнител, за да се гарантира, че паяците не смятат, че е хубаво топло място за зимуване!

Стъпка 12: Готово

Завършен
Завършен
Завършен
Завършен

Кутията е поставена в оранжерията и се захранва от USB зарядно устройство. Двата сензора бяха поставени един близо до горната част на оранжерията, а другият върху саксия за растения, за да се провери колко студено става разсадът през нощта.

Това е първият ми Instructable и се надявам да мислите, че е добре. Ако откриете някакви грешки, моля, уведомете ме и аз ще поправя, когато е необходимо. Следващата стъпка може да бъде регистрирането на данните на всеки (да речем) 60 секунди, но това ще дойде по -късно.

Препоръчано: