Агуулгын хүснэгт:

IoT Хос температурын мэдээллийн сервер: 12 алхам (зурагтай)
IoT Хос температурын мэдээллийн сервер: 12 алхам (зурагтай)

Видео: IoT Хос температурын мэдээллийн сервер: 12 алхам (зурагтай)

Видео: IoT Хос температурын мэдээллийн сервер: 12 алхам (зурагтай)
Видео: Камера ANBIUX ДВУГЛАЗКА УДИВИЛА после ОБНОВЛЕНИЯ!!! 2024, Оны зургадугаар сарын
Anonim
IoT хос температурын өгөгдлийн сервер
IoT хос температурын өгөгдлийн сервер

Энэ бол зааварчилгаа бичих миний анхны оролдлого тул надад амар байгаарай! Хэрэв та үүнийг тийм ч муу биш гэж бодож байвал анх удаа зохиогчдын уралдаанд надад саналаа өгөөрэй.

Энэ бол хүлэмжийн 2 температурыг алсын зайнаас хянах, нэг нь шалан дээр, нөгөө нь дээвэр дор байх миний төсөл юм. Хэдийгээр би өмнө нь Raspberry Pi's (RPi) ашиглаж байсан боловч энэ төсөлд миний ашиглаагүй хэд хэдэн элементүүдийг оруулсан бөгөөд би замдаа хуучирсан эсвэл буруу байсан хэд хэдэн хичээлийг олж харсан. Энэ бол зам дээр олж авсан Pi Zero & 2 DS18B20+ One Wire дижитал температур мэдрэгчээс ажилладаг хос алсын температурын хяналт хийх мэдлэгийн цуглуулга юм.

Миний сурсан зүйлүүд:

  • Мэдээллийг Интернетийн нэг хэсэг болгон төхөөрөмжөөс авах боломжтой болгох
  • 2 төхөөрөмжтэй 1 утастай интерфэйс
  • Мэдээллийн хамаарал
  • JSON өгөгдөл
  • UFW галт ханыг тохируулж байна
  • Өгөгдлийг харуулахын тулд Freeboard.io ашиглан
  • Програмыг автоматаар ажиллуулахын тулд RPi -ийг тохируулж байна

Эдгээр бүх сэдвийг хялбархан хайж олоход асар их хэмжээний өгөгдөл байдаг, гэхдээ эдгээр бүх тусдаа элементүүдийг хэрхэн яаж нэгтгэх нь тийм ч тодорхой биш байна.

Хангамж

  • Танд Raspberry Pi хэрэгтэй болно (дэлгэц, хулгана, тохируулах зориулалттай гартай боловч дууссан төслийг ажиллуулах үед биш)
  • Ажиллаж буй интернет холболт.
  • Микро USB холбогчтой PSU
  • DS18B20+ Нэг утастай дижитал температур мэдрэгчийн 2 ширхэг. Амазон бол хамгийн хямд нь болохыг би олж мэдсэн
  • 4K7 ом эсэргүүцэл эсвэл би 2 10K ом эсэргүүцэл ашигласан.
  • Жижиг талхны самбар, вандан сандал дээр турших хэдэн эрэгтэй/эмэгтэй утас
  • Эцсийн угсралтын зориулалттай туузны жижиг хэсэг
  • Гагнах, утас хуулах энгийн хэрэгсэл.
  • Дууссан загварыг байрлуулах жижиг хуванцар хайрцаг

Алхам 1: Техник хангамж

Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж

Надад Raspberry Pi Zero W (утасгүй) байсан боловч энэ энгийн төсөл нь RPI -ийн аль нэг дээр сайн ажиллана гэдэгт итгэлтэй байна. Миний семинарын сондгой электрон битийн хайрцагт бусад бүх зүйл байсан (талх, утас, PSU гэх мэт), тиймээс миний худалдаж авах ёстой зүйл бол Амазоноос авсан 2 x 2 ширхэг DS18B20 мэдрэгч юм. Эдгээр нь ус үл нэвтрэх орон сууц, 3м кабельд хялбархан суурилуулсан ердийн DS18B20 чипүүд юм. Кабелаас 3 утас байна:

  • Улаан - хүч - 3.3v зүү 1 -т холбогдоно уу
  • Хар - буцах - газрын зүү 6 -тай холбогдох
  • Шар - өгөгдөл - GPIO4 зүү 7 -т холбогдоно уу

Мэдрэгчид 1-утастай интерфэйсийг ашигладаг бөгөөд холболт хийх, өгөгдөл авахад маш хялбар байдаг. Вэб дээр 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 -ийг өмнө нь ашиглаж байсан тул OS -ийн цэвэр суулгалтаар эхлэхээр шийдсэн бөгөөд SD картаа дахин форматлаж, NOOBS -ийн цэвэр хувилбарыг суулгасан. Дараа нь би Raspian -ийн бүтэн ширээний хувилбарыг (хамгийн сайн сонголт) суулгасан бөгөөд энэ нь энгийн хувилбар дээр байдаггүй PIP & GIT -ийг суулгах болно. Төсөлд надад График хэрэглэгчийн интерфэйс (GUI) хэрэггүй байсан ч энэ нь бүх сонголтыг тохируулах хялбар арга бөгөөд 16gb SD картаар зайны хомсдол үүсээгүй.

Би WI-FI хандалтыг тохируулж, дараа нь бүрэн суулгалт, дараа нь шинэчлэлт, шинэчлэлт гэх мэт шидтэнийг ажиллуулсан. GUI-ийг ашиглан GUI ашиглах нь Command Line Interface (CLI) -ээс илүү хялбар байдаг тул би RPI-ийг шаардлагатай хэмжээгээр тохируулдаг. Би цэснээс тохиргооны цонх руу ороод дараа нь:

  • Системийн таб дээр би нууц үгээ өөрчилж, CLI -ийг ачаалахаар тохируулсан бөгөөд Auto Login -ийг шалгаагүй болно
  • Интерфейс таб дээр би 1 утастай болсон
  • ОК дарж дахин ачааллаа

Хэрэв та ямар ч үед GUI рүү буцах шаардлагатай бол CLI дээр startx гэж бичээрэй

startx

Алхам 3: Алсын хандалтыг зөвшөөрөхийн тулд өгөгдлийн чанарыг тохируулна уу

Алсын хандалтыг зөвшөөрөхийн тулд өгөгдлийн тохиргоог тохируулна уу
Алсын хандалтыг зөвшөөрөхийн тулд өгөгдлийн тохиргоог тохируулна уу
Алсын хандалтыг зөвшөөрөхийн тулд өгөгдлийн тохиргоог тохируулна уу
Алсын хандалтыг зөвшөөрөхийн тулд өгөгдлийн тохиргоог тохируулна уу
Алсын хандалтыг зөвшөөрөхийн тулд өгөгдлийн тохиргоог тохируулна уу
Алсын хандалтыг зөвшөөрөхийн тулд өгөгдлийн тохиргоог тохируулна уу

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

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

Компьютер дээрээ буцаж ирэхэд шинэ төхөөрөмж Dataplicity вэбсайт дээр гарч ирэх ёстой. Төхөөрөмж дээр дарахад RPi терминалын дэлгэц гарч ирнэ.

Энд анхаарах хэдэн зүйл байна:

  • Нэвтрэхийн тулд "su pi" гэж бичнэ үү (супер хэрэглэгчийн хандалтын хувьд), нууц үгээ оруулахыг танаас хүсэх болно (өмнө нь тохируулсан)
  • Та Wormhole -ийг идэвхжүүлэх хэрэгтэй (дараа нь ашиглах болно)
  • Өгөгдлийг дараа нь харуулахын тулд танд Wormhole хаяг хэрэгтэй болно (шаардлагатай бол хуулахын тулд хулганы баруун товчийг дарна уу)

Та энэхүү алсын хандалтыг дараах бүх алхамуудад ашиглах боломжтой бөгөөд өгөгдөл, програм гэх мэтийг хуулах нь RPi дээр шууд байснаас хамаагүй хялбар юм.

Алхам 4: Мэдрэгчийг шалгана уу

Та одоо дараагийн бүх хэсгүүдэд Dataplicity -ийг алсаас RPI руу нэвтрэх эрхийг ашиглаж болно.

Хэрэв одоо бүх зүйл хэвийн байгаа бол та температурыг DS18B20 төхөөрөмжөөс буцааж өгч байгааг харах боломжтой байх ёстой. Би Pi Hut хичээлээр дамжуулан ажилласан боловч ихэнхийг нь хийх шаардлагагүй байсан. Хэрэв та бүрэн мэдээллийг авахыг хүсвэл тэдгээрийг эндээс олж болно:

Чухал зүйл бол төхөөрөмжийн лавлах руу очиж 2 өөр мэдрэгчийг харуулсан эсэхийг шалгах явдал юм.

cd/sys/bus/w1/төхөөрөмжүүд/

Энэ нь 28- ба автобусны мастераас эхэлсэн 2 төхөөрөмжийг харуулах ёстой. Миний шоу:

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 YES

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

YES нь мэдрэгч зөв уншиж байгааг харуулдаг ба 21187 нь 21.187 -ийн Цельсийн температурыг харуулдаг (1000 -д хуваана) Үүнийг давтаж хоёр дахь мэдрэгчийг шалгана уу. Хэрэв хоёулаа зөв уншсан бол Python3 -ийн тусламжтайгаар өгөгдлийг унших боломжтой.

Би Вэб дээрээс олсон дараах кодыг хуулж өөрчилсөн боловч хаанаас гэдгийг нь санахгүй байна. Хэрэв энэ нь таны код шиг харагдаж байвал хулгай хийх зорилгогүй тул уучлаарай. надад мэдэгдээрэй, би таны ажлыг үнэлэх болно.

Төсөл гэж нэрлэгддэг лавлах үүсгээд тэр директор руу шилжүүлээрэй.

mkdir ~/төсөл

cd ~/төсөл

Энэ лавлахад текст засварлагч (нано) ашиглан thermo-test.py нэртэй файл үүсгэн засварлаж болно

sudo nano thermo-test.py

Энэ нь редакторыг нээсэн байх ёстой бөгөөд Dataplicity-ийг ашиглаж байхдаа та доорх кодыг хуулж (thermo-test.py) редактор руу буулгаж болно. Та 2 төхөөрөмжийн нэрийг (28- … эхлэн) дээр дурдсан нэрээр солих шаардлагатай болно. Бүх зүйл зөв болсон тохиолдолд ctrl+X товчлуурыг дарж дуусгахын тулд Y дарж хадгалж, одоо байгаа нэрийг ашиглана уу. Хэрэв та GUI ашиглахыг илүүд үзвэл Тонни ч мөн адил үүнийг хийх болно.

Туршилтын програмыг ажиллуулахын тулд:

sudo python3 thermo-test.py

Сайн байна, энэ нь файлыг python 3 ашиглан ажиллуулж, 10 секунд тутамд 2 температурыг дэлгэц дээр хэвлэх ёстой. Та 1 мэдрэгчийг мөстэй усанд хийж эсвэл үс хатаагчаар зөөлөн дулаацуулснаар бүх зүйл хэвийн байгаа эсэхийг шалгаж болно. Хэрэв бүх зүйл зүгээр юм шиг санагдвал бид цаашаа явж болно!

Алхам 5: UFW галт хана

UFW галт хана
UFW галт хана

Энэхүү RPi нь интернетэд байнга холбогддог байсан тул Галт хана нь сайн санаа байх болно гэж шийдсэн бөгөөд ашиглахад хялбар зүйл бол төвөгтэй галт хана (ufw) юм. Энд маш энгийн заавар байна

Энэ зааварчилгааны зорилго биш боловч товчхондоо: Би маш гүнзгий судлахгүй.

Галт ханыг дараах байдлаар суулгана уу.

sudo apt-get ufw суулгана уу

Анхдагч дүрмийг тохируулах:

sudo ufw анхдагчаар гадагш гарахыг зөвшөөрдөг

sudo ufw анхдагч нь ирж буйг үгүйсгэдэг

Мэдээлэл авахын тулд 80 -р портыг нээнэ үү

sudo ufw зөвшөөрөх 80

Галт ханыг идэвхжүүлнэ үү

sudo ufw идэвхжүүлэх

Статусыг шалгаад бүх зүйл ажиллаж байгаа эсэхийг шалгаарай

sudo ufw статус

Алхам 6: Температурын өгөгдлийг JSON болгон эцэслэх

Температурын өгөгдлийг JSON болгон төгсгөдөг
Температурын өгөгдлийг JSON болгон төгсгөдөг

Тим Фернандогийн блог болон 5 -р хэсэг рүү буцах.

Дээр дурдсан алхмуудыг дагана уу (бид төслийн лавлахыг аль хэдийн үүсгэсэнээс бусад тохиолдолд), бүгд сайн ажиллах ёстой. GIT -ийг ашигласнаар та Tim програмын файлуудыг татаж авах бөгөөд PIP нь шаардлагатай бүх програмыг таны RPi дээр суулгасан эсэхийг шалгах болно. Багцууд бүгд зөв тохируулагдсан эсэхийг шалгахын тулд дахин ачаалах шаардлагатай болсон.

Дараа нь Тимийн програмыг ажиллуул, таны RPi нь эхний мэдрэгчийн JSON өгөгдлийг өгөх ёстой.

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

sudo gunicorn -ийн температур: app -b 0.0.0.0:80

Та блогоор дамжуулан 6 -р хэсэгт очиж, 1 мэдрэгчийн өгөгдлийг олж авах боломжтой.

Та мөн JSON Viewer -ийг ашиглан өгөгдлийг харах боломжтой https://codebeautify.org/jsonviewer "URL -г ачаалах" товчийг дарж өмнө дурдсан Wormhole хаягийг оруулна уу. Зүүн хэсэгт та Цельсийн нэг, Фаренгейтийн хоёр оролтыг харах ёстой.

Алхам 7: Мэдрэгчийг хоёуланг нь дамжуулах

Мэдрэгчийг хоёулангаас нь илгээх
Мэдрэгчийг хоёулангаас нь илгээх

Temperatur.py ба thermo-test.py дээрх кодыг үндэслэн би 2temps.py файлыг өмнөх төслүүд /project /temperature-serve-pi лавлахад үүсгэж, кодыг буулгаж хадгалсан. Дараа нь би гүйсэн

sudo gunicorn 2temps: app -b 0.0.0.0:80

Одоо би JSON Viewer-ийг дахин ажиллуулахдаа temp1 & temp2 гэсэн утгыг олж авсан

Амжилт:)

Алхам 8: Автоматаар эхлүүлэх

Автоматаар эхлэх
Автоматаар эхлэх

Хүлэмжийн цахилгаан эрчим хүч хааяа хаадаг тул би RPi програмыг автоматаар ачаалж, өгөгдлийг баталгаажуулж эхлэхийг хүсч байсан. Хамгийн хялбар арга бол rc.local файлыг засварлаж 0 гарах гарцын яг доод талд шаардлагатай кодыг нэмэх явдал юм шиг байна.

cd гэх мэт

sudo нан 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 гэж нэрлэв.

Нэгдүгээрт, мэдээллийн эх сурвалж нэмж, баруун дээд буланд байгаа ADD дээр дарж, гарч ирэх цонхноос 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)

ADD PANE, дараа нь + дээр дарж эхний виджетийг нэмнэ үү. Та төрөл бүрийн төрлүүдийг сонгож тоглуулж болно, гэхдээ 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 секунд тутамд бүртгэх явдал байж болох ч энэ нь дараа нь ирэх болно.

Зөвлөмж болгож буй: