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

Гэрийн сүлжээний температур мэдрэгч: 7 алхам
Гэрийн сүлжээний температур мэдрэгч: 7 алхам

Видео: Гэрийн сүлжээний температур мэдрэгч: 7 алхам

Видео: Гэрийн сүлжээний температур мэдрэгч: 7 алхам
Видео: Собаку бросили в лесу с коробкой макарон. История собаки по имени Ринго. 2024, Арваннэгдүгээр
Anonim
Гэрийн сүлжээний температур мэдрэгч
Гэрийн сүлжээний температур мэдрэгч

Энэхүү төслийг хэрэгжүүлэхийн тулд юу мэдэх хэрэгтэй вэ:

Та дараах зүйлсийг мэдэх хэрэгтэй:- Электроникийн зарим ур чадвар (гагнах)

- Линукс

- Arduino IDE

(та IDE дээрх нэмэлт самбарыг шинэчлэх шаардлагатай болно:

- ESP самбарыг Arduino IDE ашиглан шинэчлэх/програмчлах.

(вэб дээр зарим сайхан хичээлүүд байдаг)

Үүнийг Arduino Uno эсвэл FTDI (usb to serial adapter) ашиглан хийж болно.

Би Uno -г ашигласан, учир нь надад компьютер дээр сериал порт байхгүй, FTDI байхгүй байсан

Алхам 1: Дэлгүүр хэсээрэй

Дэлгүүр хэсэх
Дэлгүүр хэсэх

Үүнийг хийхийн тулд танд юу хэрэгтэй вэ?

Дижитал температур ба чийгшил мэдрэгчийн хувьд:

- Талхны самбар эсвэл pcb -ийн прототип, гагнуур, гагнуурын төмөр гэх мэт өөр хувилбар …

- Зарим утас

- хоёр үсрэгч

- 10 к ом эсэргүүцэл

- ESP12F (бусад загварууд бас ажиллах боломжтой …)

- DHT22 (DHT11 -ээс арай илүү үнэтэй боловч илүү нарийвчлалтай)

- 3 ширхэг АА цэнэглэдэг батерей, зай эзэмшигч

- Төслөө оруулах жижиг хуванцар хайрцаг

- Хожим нь би зайны багц болон ESP -ийн хооронд хоёр 10uF конденсатор бүхий HT7333 -ийг нэмж оруулахаар төлөвлөж байна.

оролтын хүчдэлийг (VCC) санал болгож буй 3.3V болгон тогтворжуулахын зэрэгцээ ESP -ийг хэт хүчдэлээс хамгаалах.

Сүлжээний хэсгийн хувьд:

- Таны гэрийн WiFi сүлжээ

Сервер хэсгийн хувьд:

- Линукс дээр суурилсан аливаа систем (үргэлж асаалттай байдаг!)

Би Raspberry Pi ашигладаг байсан (үүнийг гаднах IP камерын сервер болгон ашигладаг.)

- gcc хөрвүүлэгч таны сервер кодыг хөрвүүлэх

- өгөгдлийг хадгалах, график үүсгэх rrdtool багц

- apache (эсвэл өөр вэб сервер)

Arduino IDE бүхий таны дуртай компьютер эсвэл зөөврийн компьютер.

Алхам 2: Тохиргоо ба арын дэвсгэр

Тохиргоо ба дэвсгэр зураг
Тохиргоо ба дэвсгэр зураг

IOT гэж хэлж болохгүй WiFi холболтын энэ хувилбарт би ESP12F, DHT22, цэнэглэдэг батерейтай 3 АА зай эзэмшигч ашигласан.

20 минут тутамд ESP нь DHT22 -аас хэмжилт авч, гэрийн WiFi сүлжээний UDP -ээр дамжуулан сервер рүү (Raspberry Pi) илгээдэг. Хэмжилтийг явуулсны дараа ESP нь гүн нойронд ордог. Энэ нь зөвхөн бодит цагийн модулийг асаалттай байлгаснаар гайхалтай хэмнэлттэй болно гэсэн үг юм. Ойролцоогоор 5 секундын турш модуль нь ойролцоогоор 100 мА шаарддаг бөгөөд 20 минутын турш гүн унтахад ердөө 150uA шаардагдана.

Би интернетэд суурилсан үйлчилгээ ашиглахыг хүсээгүй, яагаад гэвэл би үргэлж Raspberry Pi -тэй байдаг бөгөөд ингэснээр серверийн хэсгийг бичих таатай байсан.

Сервер дээр (Raspbian ажилладаг Raspberry Pi) би утгыг энгийн RRD болгон хадгалдаг энгийн UDP сонсогч (сервер) бичсэн. (Tobias Oetiker -ийн RRDtool ашиглан дугуй Робин мэдээллийн сан.)

RRDtool -ийн давуу тал нь та мэдээллийн баазаа нэг удаа үүсгэж, хэмжээ нь хэвээр үлдэнэ. Нэмж хэлэхэд танд цаана нь ажилладаг мэдээллийн сангийн сервер (mySQLd гэх мэт) байх шаардлагагүй. RRDtool нь өгөгдлийн сан үүсгэх, график үүсгэх хэрэгслийг танд өгдөг.

Миний сервер графикуудыг үе үе гаргаж, бүх зүйлийг маш энгийн http хуудсан дээр харуулдаг. Би Raspberry Pi дээрх Apache2 вэб сервертэй холбогдож энгийн хөтөч ашиглан уншсан зүйлээ унших боломжтой болно!

Эцэст нь надад FTDI (USB to Serial) байхгүй байсан тул би Arduino UNO -г ашигласан. Та EX болон UNO -ийн TX, RX, GND -ийг холбох хэрэгтэй. (Мэдэж байна, таны зөн совин RX ба TX -ийг хөндлөн гарахыг хэлж магадгүй … үүнийг туршиж үзсэн ч ажиллахгүй байна.)

Би түвшний хөрвүүлэлт хийгээгүй (UNO: Өндөр = 5V, гэхдээ ESP нь үндсэндээ 3.3V төхөөрөмж юм. Зах зээл дээр өндөр түвшингээ 5 эсвэл 3.3V болгож сонгох боломжтой сайхан FTDI байдаг.

Миний хэлхээ 3 АА цэнэглэдэг батерейгаар тэжээгддэг тул үнэндээ 3 X 1.2V хүчдэлтэй. Дараагийн үе шатанд би аюулгүй байдлын үүднээс батерейны багц болон хэлхээний хооронд HT7333 оруулахыг зорьж байна. шинээр цэнэглэгдсэн батерей нь 1.2 В -оос дээш байх боломжтой бөгөөд ESP нь минутаар тэжээгддэг. 3V ба хамгийн их. 3.6V. Хэрэв би сул дорой байдлынхаа дараа шүлтлэг батерей (3 X 1.5V = 4.5V) тавихаар шийдсэн бол миний ESP шарсан биш болно!

Би бас 10см х 10см хэмжээтэй нарны хавтан ашиглахаар шийдсэн боловч энэ нь тийм ч төвөгтэй зүйл биш юм. Нэг цагт 3 хэмжилт хийснээр (үндсэндээ 3 удаа 5 секунд @ 100mA, үлдсэн хугацаанд @ 100uA) би ижил цэнэглэдэг батерейгаар 1 жилийн турш хэлхээгээ тэжээнэ гэж найдаж байна.

Алхам 3: Arduino - ESP12 хэсэг

Arduino - ESP12 хэсэг
Arduino - ESP12 хэсэг
Arduino - ESP12 хэсэг
Arduino - ESP12 хэсэг

Би энэ төслийг янз бүрийн үе шаттайгаар хийсэн.

ESP12 (өөрөөр хэлбэл ESP8266) -ийг Arduino IDE руу импортлоход туслах хэд хэдэн холбоос байдаг. (Энэ хооронд шийдэгдсэн байж магадгүй алдаанаас болж би хамгийн сүүлийн хувилбарын оронд 2.3.0 хувилбарыг ашиглах шаардлагатай болсон.)

Би ESP -ийг Arduino UNO -ээр (зөвхөн USB -ээр дамжуулж миний компьютерийг цуваа руу холбох гүүр болгон ашигладаг) ESP серийн интерфэйс рүү холбож эхлэв. Үүнийг тайлбарласан тусдаа зааварчилгаа байдаг.

Дууссан төсөлдөө би алдааг олж засварлах шаардлагатай бол утсыг цувралд холбохоор үлдээсэн

Дараа нь та ESP12 утсаа дараах байдлаар холбох хэрэгтэй.

ESP тээглүүр…

GND UNO GND

RX UNO RX

TX UNO TX

EN VCC

GPIO15 GND

Эхэндээ би НҮБ -ын 3.3V -ээс ESP -ээ асаахыг оролдсон боловч хурдан ESP -ийг вандан цахилгаан хангамжаар тэжээх болсон боловч та батерейныхаа багцыг ашиглаж болно.

GPIO0 Би үүнийг END -ийг анивчих (= програмчлах) идэвхжүүлэхийн тулд үүнийг GND холбогчтой холбосон.

Эхний туршилт: холбогчийг нээлттэй байлгаад Arduino IDE дээр цуваа мониторыг эхлүүлнэ үү (115200 baud дээр!).

ESP -ийг асаахад та зарим хог хаягдлыг, дараа нь дараах мессежийг харах ёстой.

Ай-Thinker Technology Co., Ltd бэлэн боллоо

Энэ горимд ESP нь хуучин загварын модем шиг ажилладаг. Та AT командыг ашиглах хэрэгтэй.

Дараах тушаалуудыг туршиж үзээрэй.

AT+RST

болон дараах хоёр команд

AT+CWMODE = 3

БОЛЖ БАЙНА УУ

AT+CWLAP

Энэ нь тухайн бүс нутгийн бүх WiFi сүлжээнүүдийн жагсаалтыг танд өгөх ёстой.

Хэрэв энэ нь ажиллаж байгаа бол та дараагийн алхамд бэлэн байна.

Алхам 4: ESP -ийг сүлжээний цагийн протокол (NTP) үйлчлүүлэгч болгон турших

ESP -ийг сүлжээний цагийн протокол (NTP) үйлчлүүлэгч болгон туршиж үзэх
ESP -ийг сүлжээний цагийн протокол (NTP) үйлчлүүлэгч болгон туршиж үзэх
ESP -ийг сүлжээний цагийн протокол (NTP) үйлчлүүлэгч болгон туршиж үзэх
ESP -ийг сүлжээний цагийн протокол (NTP) үйлчлүүлэгч болгон туршиж үзэх

Arduino IDE дээр File, Examples, ESP8266WiFi хэсэгт NTPClient -ийг ачаална уу.

Үүнийг ажиллуулахын тулд бага зэргийн тохируулга хийх шаардлагатай; Та WiFi сүлжээнийхээ SSID болон нууц үгийг оруулах ёстой.

Одоо GPIO0 -ийг GND руу богиносгосон холбогчийг байрлуул.

ESP -ийг асааж, ноорогоо ESP руу байршуулна уу.

Эмхэтгэсэний дараа ESP руу байршуулах ажлыг эхлүүлэх ёстой. Кодыг татаж авах үед ESP дээрх цэнхэр LED хурдан анивчих болно.

Байршуулах ажил эхлэхээс өмнө IDE -ийг дахин эхлүүлэх, ESP -ийг дахин эхлүүлэх талаар бага зэрэг тоглох шаардлагатай байгааг би анзаарсан.

Ноорог зургийг эмхэтгэх/байршуулахаасаа өмнө цуваа консолыг (= цуваа дэлгэц) хаахаа мартуузай, учир нь энэ нь танд байршуулахаас сэргийлнэ.

Байршуулалт амжилттай болсны дараа та ESP-ийг интернетээс цагийг үр дүнтэй авч байгааг харахын тулд цуваа дэлгэцийг дахин нээж болно.

Гайхалтай, та ESP -ээ програмчилж, WiFi -дээ холбогдоод интернэтээс цаг авсан.

Дараагийн алхам бол бид DHT22 -ийг турших болно.

Алхам 5: DHT22 мэдрэгчийг турших

DHT22 мэдрэгчийг туршиж байна
DHT22 мэдрэгчийг туршиж байна

Одоо нэмэлт утас холбох шаардлагатай байна.

DHT тээглүүр… Мэдрэгчийн 1 -р зүүг (зүүн талд) VCC (3.3V) руу холбоно уу.

Холбох зүү 2 ESP GPIO5 (ноорог дээр DHTPIN)

Мэдрэгчийн 4 -р зүүг (баруун талд) GROUND руу холбоно уу

2 -р зүү (өгөгдөл) -ээс мэдрэгчийн 1 -р зүү (хүч) хүртэл 10K эсэргүүцэл холбоно уу.

NTP тестийн нэгэн адил DHTtester -ийн тоймыг хайж олоод дараах байдлаар засаарай.

DHTPIN 5 -ийг тодорхойлох // бид мэдрэгчтэй холбогдохын тулд GPIO5 -ийг сонгосон#DHTTYPE DHT22 тодорхойлох // бид DHT22 ашиглаж байгаа боловч энэ код/номын сан нь DHT11 -д тохиромжтой

Дахин хэлэхэд цуваа дэлгэцийг хааж, ESP -ийг асааж, ESP -ийг хөрвүүлээд асаана уу.

Хэрэв бүх зүйл хэвийн байгаа бол хэмжилтийг цуваа дэлгэц дээр харах ёстой.

Та мэдрэгчээр бага зэрэг тоглож болно. Хэрэв та үүн дээр амьсгал авбал чийгшил нэмэгдэж байгааг харах болно.

Хэрэв танд (LED бус) ширээний чийдэн байгаа бол мэдрэгч дээр гэрэлтүүлж бага зэрэг халааж болно.

Агуу их! Мэдрэгчийн хоёр том хэсэг одоо ажиллаж байна.

Дараагийн алхамд би эцсийн кодын талаар тайлбар өгөх болно.

Алхам 6: Үүнийг нэгтгэх …

Үүнийг нэгтгэж байна…
Үүнийг нэгтгэж байна…

Дахин нэмэлт утас … энэ нь DeepSleep -ийг боломжтой болгох зорилготой юм.

DeepSleep бол IoT төхөөрөмжүүдийн гайхалтай функц гэдгийг санаарай.

Гэсэн хэдий ч хэрэв таны мэдрэгч DeepSleep -д зориулагдсан бол ESP -ийг дахин програмчлахад хэцүү байж магадгүй тул бид өөр холбогчийг холбох болно.

GPIO16-RST.

Тийм ээ, энэ нь GPIO16 байх ёстой, учир нь энэ нь DeepSleep -ийн дараа бодит цагийн цаг унтрах үед төхөөрөмжийг сэрээхэд зориулагдсан хатуу GPIO юм!

Туршилт хийж байхдаа 15 секундын DeepSleep хийхээр шийдэж болно.

Би дибаг хийж байхдаа програмаа гялалзуулахын тулд холбогчийг GPIO0 руу шилжүүлэх болно.

Татаж авсны дараа би холбогчийг GPIO16 руу зөөж, DeepSleep ажиллах болно.

ESP -ийн кодыг TnHclient.c гэж нэрлэдэг

Та SSID, нууц үг, серверийнхээ IP хаягийг өөрчлөх ёстой.

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

Алхам 7: Аливаа зүйлийн сервер тал

Аливаа зүйлийн сервер тал
Аливаа зүйлийн сервер тал
Аливаа зүйлийн сервер тал
Аливаа зүйлийн сервер тал

UDP нь найдваргүй, TCP нь буруу ойлголт юм.

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

Дашрамд хэлэхэд UDP байхгүй бол интернет ажиллахгүй болно … DNS нь UDP дээр суурилдаг.

Тиймээс би UDP -ийг сонгосон нь маш хөнгөн, хялбар бөгөөд хурдан юм.

Миний WiFi маш найдвартай гэж би боддог тул "OK!" Гэсэн хүлээн авалт хийвэл үйлчлүүлэгч хамгийн ихдээ 3 UDP пакет илгээх болно. хүлээж авдаггүй.

TnHserver-ийн C код TnHServer.c файлд байна.

Кодод үүнийг тайлбарласан хэд хэдэн тайлбар бий.

Бидэнд сервер дээр нэмэлт хэрэгсэл хэрэгтэй болно: rrdtool, apache, магадгүй tcpdump.

Raspbian дээр rrdtool суулгахын тулд та ийм багцыг зүгээр л суулгаж болно: apt-get install rrdtool

Хэрэв та сүлжээний урсгалыг дибаг хийх шаардлагатай бол tcpdump нь apt-get install tcpdump-ийг ашиглахад тохиромжтой.

Графикийг үзэхийн тулд хөтөч ашиглах боломжтой байхын тулд надад вэб сервер хэрэгтэй байсан: apt-get install apache2

Би энэ хэрэгслийг ашигласан: https://rrdwizard.appspot.com/index.php Round Robin Database үүсгэх командыг авахын тулд. Та үүнийг зөвхөн нэг удаа ажиллуулах хэрэгтэй (хэрэв та үүнийг анх удаа зөв хийсэн бол).

rrdtool TnHdatabase.rrd үүсгэх-одоо-10s эхлүүлэх

-"1200" алхам

'DS: Температур: GAUGE: 1200: -20.5: 45.5'

'DS: Чийгшил: GAUGE: 1200: 0: 100.0'

'RRA: ДУНДАЖ: 0.5: 1: 720'

'RRA: ДУНДАЖ: 0.5: 3: 960'

'RRA: ДУНДАЖ: 0.5: 18: 1600'

Эцэст нь би TnHserver -ээ өдөр бүр шөнө дунд дахин эхлүүлэхийн тулд crontab оруулга ашигладаг. Би аюулгүй байдлын үүднээс TnHserver -ийг энгийн хэрэглэгчээр (өөрөөр хэлбэл root биш) ажиллуулдаг.

0 0 * * */usr/bin/pkill TnHserver; /home/user/bin/TnHserver>/dev/null 2> & 1

Та TnHserver ажиллаж байгаа эсэхийг шалгаж болно

$ ps -elf | grep TnHserver

Та үүнийг хийх замаар 7777 порт дээрх пакетуудыг сонсож байгаа эсэхийг шалгаж болно

$ netstat -anu

Идэвхтэй интернет холболт (серверүүд болон суулгасан)

Proto Recv-Q Send-Q орон нутгийн хаяг Гадаад хаягийн муж

udp 0 0 0.0.0.0:7777 0.0.0.0:*

Эцэст нь CreateTnH_Graphs.sh.txt бол график үүсгэх жишээ скрипт юм. (Би скриптүүдийг root хэлбэрээр үүсгэдэг, та үүнийг хийхийг хүсэхгүй байж магадгүй юм.)

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

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