فهرست مطالب:

سنسور دمای شبکه خانگی: 7 مرحله
سنسور دمای شبکه خانگی: 7 مرحله

تصویری: سنسور دمای شبکه خانگی: 7 مرحله

تصویری: سنسور دمای شبکه خانگی: 7 مرحله
تصویری: نحوه تست سنسور دمای کولر گازی 2024, نوامبر
Anonim
سنسور دمای شبکه خانگی
سنسور دمای شبکه خانگی

آنچه برای ساخت این پروژه باید بدانید:

شما باید در مورد موارد زیر بدانید:- برخی از مهارت های الکترونیکی (لحیم کاری)

- لینوکس

- آردوینو IDE

(شما باید تخته های اضافی را در IDE به روز کنید:

- به روز رسانی/برنامه نویسی یک برد ESP از طریق Arduino IDE.

(چند آموزش خوب در وب موجود است)

این را می توان با استفاده از Arduino Uno یا با استفاده از FTDI (آداپتور usb به سریال) انجام داد.

من از Uno خود استفاده کردم زیرا هیچ پورت سریال در رایانه من وجود نداشت و FTDI نداشتم

مرحله 1: به خرید بروید

برو خرید
برو خرید

برای تحقق این امر به چه چیزی نیاز خواهید داشت؟

برای سنسور دما و رطوبت دیجیتال:

- یا یک تخته نان یا جایگزینی مانند نمونه اولیه PCB ، لحیم کاری ، لحیم کاری …

- مقداری سیم

- دو پرش کننده

- یک مقاومت 10k اهم

- ESP12F (سایر مدلها نیز ممکن است کار کنند …)

- DHT22 (کمی گرانتر از DHT11 اما دقیق تر)

- 3 عدد باتری قابل شارژ AA و نگهدارنده باتری

- یک جعبه پلاستیکی کوچک برای قرار دادن پروژه خود در آن

- در مرحله بعد قصد دارم یک HT7333 با دو خازن 10uF بین بسته باتری و ESP اضافه کنم

برای تثبیت ولتاژ ورودی (VCC) تا 3.3 ولت توصیه شده اما همچنین برای محافظت از ESP در برابر اضافه ولتاژ.

برای بخش شبکه:

- شبکه وای فای خانگی شما

برای قسمت سرور:

- هر سیستم مبتنی بر لینوکس (همیشه روشن است!)

من از Raspberry Pi استفاده کردم (که از آن بعنوان سرور برای دوربین های IP خارج از من نیز استفاده می کنم.)

- کامپایلر gcc برای کامپایل کد سرور شما

- بسته rrdtool برای ذخیره داده ها و ایجاد نمودار

- apache (یا وب سرور دیگر)

رایانه شخصی یا لپ تاپ مورد علاقه شما با Arduino IDE روی آن.

مرحله 2: راه اندازی و پس زمینه

راه اندازی و پس زمینه
راه اندازی و پس زمینه

در این نسخه از وای فای متصل - نه به IOT - سنسور دما و رطوبت ، از ESP12F ، DHT22 و نگهدارنده باتری 3 AA با باتری های قابل شارژ استفاده کردم.

ESP هر 20 دقیقه یک اندازه گیری از DHT22 می گیرد و آن را از طریق UDP در سرور (Raspberry Pi) در شبکه WiFi خانه من ارسال می کند. پس از ارسال اندازه گیری ها ، ESP به خواب عمیق می رود. این بدان معناست که فقط ساعت واقعی زمان ماژول کار می کند و در نتیجه در مصرف انرژی فوق العاده صرفه جویی می شود. به مدت 5 ثانیه ، ماژول به حدود 100mA نیاز دارد ، سپس در طول 20 دقیقه خواب عمیق فقط 150uA.

من نمی خواستم از هیچ سرویس مبتنی بر اینترنت استفاده کنم زیرا من Raspberry Pi خود را دارم که به هر حال همیشه روشن است و به این ترتیب من از نوشتن قسمت سرور نیز لذت بردم.

روی سرور (Raspberry Pi که Raspbian را اجرا می کند) من یک شنونده ساده UDP (سرور) نوشته ام که مقادیر را در یک RRD ساده ذخیره می کند. (پایگاه داده گرد رابین با استفاده از RRDtool توسط Tobias Oetiker.)

مزیت RRDtool این است که یکبار پایگاه داده خود را ایجاد می کنید و اندازه آن ثابت می ماند. در هر صورت نیازی نیست که سرور پایگاه داده (مانند mySQLd) در پس زمینه اجرا شود. RRDtool به شما ابزار ایجاد پایگاه داده و تولید نمودارها را می دهد.

سرور من نمودارها را به صورت دوره ای ایجاد می کند و همه چیز را در یک صفحه بسیار ساده http نمایش می دهد. من می توانم با اتصال به سرور وب Apache2 در Raspberry Pi با یک مرورگر ساده به خواندن مطالب خود بپردازم!

در نهایت ، من FTDI (USB to Serial) نداشتم بنابراین از Arduino UNO خود استفاده کردم. شما باید TX ها و RX ها و GND ESP و UNO را وصل کنید. (من می دانم ، غریزه شما ممکن است به شما بگوید که از RX و TX عبور کنید … آن را نیز امتحان کنید ، کار نمی کند.)

من تبدیل سطح انجام ندادم (UNO: High = 5V اما ESP اساساً یک دستگاه 3.3V است … تعدادی FTDI خوب در بازار وجود دارد که حتی می توانید سطح بالای خود را 5 یا 3.3V انتخاب کنید.

مدار من توسط 3 باتری AA قابل شارژ تغذیه می شود - بنابراین در واقع 3 X 1.2V. در مرحله بعد من قصد دارم HT7333 را بین بسته باتری و مدار برای ایمنی قرار دهم. باتری های تازه شارژ شده می توانند بیش از 1.2 ولت داشته باشند و ESP باید با حداقل دقیقه تغذیه شود. 3 ولت و حداکثر 3.6 ولت همچنین اگر تصمیم بگیرم - در لحظه ضعف - باتری های قلیایی (3 X 1.5V = 4.5V) بگذارم ESP من سرخ نمی شود!

من همچنین استفاده از پنل خورشیدی 10 در 10 سانتی متر را در نظر گرفتم ، اما ارزش هیچ زحمتی را نداشت. با انجام 3 اندازه گیری در ساعت (اساساً 3 ثانیه 5 ثانیه @ حداکثر 100 میلی آمپر و بقیه زمان @ 100uA) ، امیدوارم مدارم را به مدت 1 سال با همان باتری های قابل شارژ تغذیه کنم.

مرحله 3: قسمت آردوینو - ESP12

قسمت آردوینو - ESP12
قسمت آردوینو - ESP12
قسمت آردوینو - ESP12
قسمت آردوینو - ESP12

من این پروژه را در مراحل مختلف انجام دادم.

چندین پیوند وجود دارد که به شما کمک می کند ESP12 (معروف به ESP8266) را به Arduino IDE وارد کنید. (مجبور شدم از نسخه 2.3.0 به جای آخرین نسخه استفاده کنم ، زیرا ممکن است در این مدت مشکل برطرف شده باشد …)

من با اتصال ESP از طریق Arduino UNO (فقط به عنوان پل ارتباطی بین کامپیوتر از طریق USB به سریال) به رابط سریال ESP شروع کردم. دستورالعمل های جداگانه ای وجود دارد که این موضوع را توضیح می دهد.

در پروژه به پایان رسیده من سیمها را برای اتصال به سریال در صورت نیاز به عیب یابی رها کردم. RX

سپس باید ESP12 خود را به صورت زیر سیم کشی کنید:

پین های ESP…

GND UNO GND

RX UNO RX

TX UNO TX

EN VCC

GPIO15 GND

در ابتدا من سعی کردم ESP خود را از طریق 3.3V در UNO تغذیه کنم ، اما سریعاً به تغذیه ESP خود با منبع تغذیه نیمکت حرکت کردم ، اما شما می توانید از باتری خود نیز استفاده کنید.

GPIO0 این مورد را با یک بلوز به GND وصل کردم تا چشمک زدن (= برنامه نویسی) ESP فعال شود.

اولین آزمایش: بلوز را باز بگذارید و یک مانیتور سریال را در Arduino IDE (در 115200 baud!) شروع کنید.

چرخه قدرت ESP ، شما باید برخی از شخصیت های آشغال و سپس یک پیام مانند:

شرکت فناوری Ai-Thinker Technology 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 را بارگیری کنید.

برای به کار انداختن آن نیازی به اصلاحات جزئی نیست. شما باید SSID و رمز عبور شبکه WiFi خود را وارد کنید.

حالا بلوز را کوتاه کنید ، GPIO0 را به GND کوتاه کنید.

ESP را روشن کنید و طرح را در ESP بارگذاری کنید.

پس از کامپایل ، بارگذاری در ESP باید شروع شود. چراغ آبی روی ESP با بارگیری کد به سرعت چشمک می زند.

من متوجه شدم که باید کمی با راه اندازی مجدد IDE بازی کنم ، قبل از اینکه بارگذاری کار کند ، ESP را دوباره راه اندازی کنم.

قبل از شروع تدوین/بارگذاری طرح ، حتماً کنسول سریال (= مانیتور سریال) را ببندید زیرا این امر مانع از بارگذاری می شود.

هنگامی که بارگذاری با موفقیت انجام شد ، می توانید مانیتور سریال را دوباره باز کنید تا ESP به طور م theثر از اینترنت وقت بگیرد.

عالی است ، شما ESP خود را برنامه ریزی کرده اید ، به WiFi خود متصل شده اید و از اینترنت وقت گرفته اید.

در مرحله بعد DHT22 را آزمایش می کنیم.

مرحله 5: آزمایش سنسور DHT22

آزمایش سنسور DHT22
آزمایش سنسور DHT22

اکنون مقداری سیم کشی اضافی مورد نیاز است.

پین های DHT… پین 1 (در سمت چپ) سنسور را به VCC (3.3V) وصل کنید

اتصال پین 2 ESP GPIO5 (DHTPIN در طرح)

پین 4 (در سمت راست) سنسور را به GROUND وصل کنید

یک مقاومت 10K را از پایه 2 (داده) به پین 1 (قدرت) سنسور وصل کنید.

مشابه آزمایش NTP ، بروید طرح DHTtester را بیابید و آن را به روش زیر تغییر دهید:

#تعریف DHTPIN 5 // ما GPIO5 را برای اتصال به سنسور انتخاب کردیم#تعریف DHTTYPE DHT22 // زیرا از DHT22 استفاده می کنیم اما این کد/کتابخانه نیز برای DHT11 مناسب است

مجدداً مانیتور سریال را ببندید ، ESP را چرخه کنید و ESP را کامپایل و فلش کنید.

اگر همه چیز خوب پیش رفت ، باید اندازه ها را در مانیتور سریال نشان دهید.

می توانید کمی با سنسور بازی کنید. اگر روی آن نفس بکشید ، می بینید که رطوبت بالا می رود.

اگر لامپ رومیزی (غیر LED) دارید ، می توانید روی سنسور بتابید تا کمی گرم شود.

عالی! دو قسمت بزرگ سنسور در حال کار است.

در مرحله بعد در مورد کد نهایی نظر خواهم داد.

مرحله ششم: ترکیب آن…

کنار هم قرار دادن…
کنار هم قرار دادن…

دوباره مقداری سیم کشی اضافی … این کار به منظور امکان خواب عمیق است.

به یاد داشته باشید ، DeepSleep یک عملکرد باورنکردنی برای دستگاه های IoT است.

با این حال ، اگر سنسور شما برای DeepSleep متصل شده باشد ، برنامه ریزی مجدد ESP دشوار است ، بنابراین ما قصد داریم یک اتصال جامپر دیگر بین

GPIO16-RST.

بله ، باید GPIO16 باشد ، زیرا این GPIO است که برای بیدار کردن دستگاه هنگام خاموش شدن ساعت واقعی بعد از DeepSleep ، متصل است!

در حین آزمایش ، می توانید تصمیم بگیرید که 15 ثانیه DeepSleep را انجام دهید.

وقتی اشکال زدایی می کردم ، جامپر را به GPIO0 منتقل می کردم تا بتوانم برنامه خود را فلش کنم.

پس از اتمام بارگیری ، من jumper را به GPIO16 منتقل می کنم تا DeepSleep کار کند.

کد ESP TnHclient.c نام دارد

شما باید SSID ، رمز عبور و آدرس IP سرور خود را تغییر دهید.

خطوط اضافی کد وجود دارد که می توانید از آنها برای عیب یابی یا آزمایش تنظیمات خود استفاده کنید.

مرحله 7: سمت سرور چیزها

سمت سرور چیزها
سمت سرور چیزها
سمت سرور چیزها
سمت سرور چیزها

این یک سوء تفاهم رایج است که UDP غیرقابل اعتماد است و TCP…

این به همان اندازه احمقانه است که گفتن چکش مفیدتر از پیچ گوشتی است. آنها به سادگی ابزارهای بسیار مفید متفاوتی هستند و هر دو کاربردهای خود را دارند.

به هر حال ، بدون UDP اینترنت کار نمی کند … DNS بر اساس UDP است.

بنابراین ، من UDP را انتخاب کردم زیرا بسیار سبک ، آسان و سریع است.

من فکر می کنم WiFi من بسیار قابل اعتماد است ، بنابراین اگر تأیید "خوب!" حداکثر 3 بسته UDP ارسال می شود. دریافت نمی شود

کد C برای TnHserver در فایل TnHServer.c است.

چندین نظر در کد وجود دارد که آن را توضیح می دهد.

ما به برخی ابزارهای اضافی در سرور نیاز داریم: rrdtool ، apache و شاید tcpdump.

برای نصب rrdtool در Raspbian می توانید بسته را به این شکل نصب کنید: apt-get install rrdtool

اگر می خواهید ترافیک شبکه را اشکال زدایی کنید ، tcpdump مفید است apt-get install tcpdump

من به یک سرور وب نیاز داشتم تا بتوانم از مرورگر برای مشورت با نمودارها استفاده کنم: apt-get install apache2

من از این ابزار استفاده کردم: https://rrdwizard.appspot.com/index.php برای ایجاد فرمان ایجاد پایگاه داده گرد رابین. شما فقط باید یک بار آن را اجرا کنید (اگر بار اول درست آن را دریافت کنید).

rrdtool ایجاد TnHdatabase.rrd-شروع کنید -10s

-قدم '1200'

'DS: دما: GAUGE: 1200: -20.5: 45.5'

'DS: رطوبت: GAUGE: 1200: 0: 100.0'

'RRA: AVERAGE: 0.5: 1: 720'

'RRA: AVERAGE: 0.5: 3: 960'

'RRA: میانگین: 0.5: 18: 1600'

در نهایت ، من از یک ورودی crontab برای راه اندازی مجدد TnHserver خود هر روز در نیمه شب استفاده می کنم. من TnHserver را به عنوان یک کاربر معمولی (یعنی نه ریشه) به عنوان احتیاط امنیتی اجرا می کنم.

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 تولید می کنم ، ممکن است مایل به انجام این کار نباشید.)

با استفاده از یک صفحه وب بسیار ساده می توانید نمودارها را از هر مرورگری در شبکه خانگی خود مشاهده کنید.

توصیه شده: