فهرست مطالب:

TheAir - پروژه سنسور گاز: 10 مرحله
TheAir - پروژه سنسور گاز: 10 مرحله

تصویری: TheAir - پروژه سنسور گاز: 10 مرحله

تصویری: TheAir - پروژه سنسور گاز: 10 مرحله
تصویری: واقعا رفتم جزیره لختیها لخت مادرزاد شدم 2024, جولای
Anonim
TheAir - پروژه سنسور گاز
TheAir - پروژه سنسور گاز

مونوکسید کربن و دی اکسید کربن که به عنوان CO و CO2 نیز شناخته می شوند. گازهایی که در غلظتهای بالا در یک اتاق بسته ، بی رنگ ، بی بو ، بی مزه و صریحاً خطرناک هستند. اگر به عنوان مثال در یک اتاق دانشجویی که به شدت منزوی است ، جریان هوا خوب نیست و به دلایلی زندگی می کنید ، توستر هنگام نان تست نویز عجیبی ایجاد می کند. سپس ممکن است با این گازها تماس داشته باشید و وقتی این اتفاق می افتد ، امیدواریم که فقط با یک سردرد کوچک به پایان برسد ، زیرا در غلظت بالا ممکن است شما را ناتوان یا حتی بکشد (هرچند بسیار نادر).

بنابراین تصمیم گرفتم به این پروژه برسم. ایده من ساده است ، از فن ها برای ایجاد جریان هوا استفاده کنید. هوای خوب داخل و هوای بد به اصطلاح. برای استفاده بیشتر ، یک سنسور دما اضافی ، یک دکمه برای طرفداران فعال سازی دستی و همچنین یک وب سایت برای کسانی که مایل به مشاهده آمار و/یا فعال کردن فن ها از رایانه خود هستند ، اضافه کردم.

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

تدارکات

  • رزبری پای 3+
  • شارژر کوچک USB 5V/2.5A
  • کارت Micro-sd
  • سنسورها

    • MQ-7 (CO)
    • MQ-135 (CO2)
    • DS18B20 (دما)
  • 2 عدد فن 12 ولت DC
  • 2 ترانزیستور 2n2222
  • صفحه نمایش LCD 16*2
  • دکمه فشاری
  • MCP3008
  • مبدل سطح منطقی
  • کابل اترنت (به دلایل راه اندازی)

مرحله 1: راه اندازی رزبری پای

راه اندازی رزبری پای
راه اندازی رزبری پای
راه اندازی رزبری پای
راه اندازی رزبری پای

قبل از کار با Rpi ، ما به نرم افزاری نیاز داریم.

  • WinSCP یا FilleZilla (اگر می خواهید فایل ها را از رایانه خود به Rpi منتقل کنید اختیاری است)
  • دیسک Win32 یا Etcher (که شما بیشتر آن را ترجیح می دهید)
  • بتونه یا MobaXterm (که شما بیشتر ترجیح می دهید)
  • تصویر Raspbian با رومیزی

قبل از شروع ، می خواهم اشاره کنم که هنگام ساخت این آموزش ، وقتی برنامه ای را بر دیگری انتخاب می کنم ، به این معنی نیست که من آن را توصیه می کنم. به عنوان مثال ، من دوست دارم از etcher استفاده کنم ، زیرا کاربر پسند تر است ، اما Win32 گزینه پشتیبان گیری را دارد. حالا این خارج از سیستم من است ، بیایید شروع کنیم.

اگر قبلاً Rpi دارید که به شبکه wifi شما متصل است ، به مرحله 3 بروید.

ابتدا می خواهیم از Etcher برای قرار دادن تصویر Raspbian بر روی کارت SD خود استفاده کنیم. حالا قبل از بیرون آوردن کارت sd ، برخی از "چیزها" را در فایل cmdline.txt تغییر می دهیم ، که در تصویر یافت می شود. فایل.txt را باز کنید -> این خط "ip = 169.254.10.1" (بدون علامت نقل قول) را در انتهای خط (همه در 1 خط) اضافه کنید -> ذخیره فایل

در مرحله دوم یک پوشه خالی به نام "ssh" در پارتیشن بوت (بدون علامت نقل قول) ایجاد کنید.

پس از آن می توانید با خیال راحت Microsd را خارج کرده و در Rpi قرار دهید.

دلیل IP استاتیک سخت کدگذاری شده ، سهولت اتصال به Rpi است. اگر به دلایلی Rpi IP با DHCP ندارد ، به راحتی از ip استاتیک استفاده کنید.

مرحله 2: ایجاد اتصال و اتصال Rpi Wireless به شبکه محلی خود

ایجاد اتصال و اتصال Rpi بی سیم به شبکه محلی خود
ایجاد اتصال و اتصال Rpi بی سیم به شبکه محلی خود
ایجاد اتصال و اتصال Rpi بی سیم به شبکه محلی خود
ایجاد اتصال و اتصال Rpi بی سیم به شبکه محلی خود
ایجاد اتصال و اتصال Rpi بی سیم به شبکه محلی خود
ایجاد اتصال و اتصال Rpi بی سیم به شبکه محلی خود
ایجاد اتصال و اتصال Rpi بی سیم به شبکه محلی خود
ایجاد اتصال و اتصال Rpi بی سیم به شبکه محلی خود

ما قصد داریم Rpi را بوت کنیم -> کابل اترنت را بین کامپیوتر و Rpi وصل کنید.

  1. بتونه را شروع کنید و این را پر کنید:

    • نام میزبان (یا آدرس IP): 169.254.10.1
    • بندر: 22
  2. یک ترمینال ظاهر می شود و نام کاربری و رمز عبور پیش فرض را وارد می کنید:

    • نام کاربری: pi
    • رمز عبور: تمشک

اکنون که به صورت محلی به rpi متصل شده ایم ، می خواهیم Rpi به وای فای شما متصل شود.

  1. اضافی: "sudo raspi-config" را تایپ کنید
  2. در اینجا شما باید رمز عبور را برای کاربر pi تغییر دهید (دلایل ایمنی)
  3. سپس به گزینه های محلی سازی بروید -> تغییر زمان (زمان مناسب را انتخاب کنید) -> سپس به کشور Wifi بروید -> کشور را انتخاب کنید.
  4. raspi-config را ببندید و راه اندازی مجدد کنید.
  5. هنگام ورود به سیستم ، موقتاً خود را به عنوان کاربر اصلی -> sudo -i معرفی کنید
  6. این دستور را بنویسید تا شبکه خود را به Rpi اضافه کنید (کد زیر لیست)

    • رمز عبور = "رمز عبور" (با علامت نقل قول)
    • نام شبکه = "SSID"
    • به یاد داشته باشید که از دو استفاده کنید >>! مهم است!

اکو "رمز عبور" | wpa_passphrase "SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

حالا دوباره راه اندازی مجدد کنید

هنگام اتصال مجدد ، IP خود را با تایپ کردن بررسی کنید:

ifconfig

و wlan0 را در کنار inet تیک بزنید.

اکنون که اتصال اینترنت داریم ، اجازه دهید یک به روز رسانی "سریع" انجام دهیم.

به روز رسانی sudo apt

sudo apt dist -upgrade -y

این ممکن است مدتی طول بکشد.

مرحله 3: سنسور DS18B20 (دما)-1 سیم

سنسور DS18B20 (دما)-1 سیم
سنسور DS18B20 (دما)-1 سیم
سنسور DS18B20 (دما)-1 سیم
سنسور DS18B20 (دما)-1 سیم

با هر پروژه ای ، همیشه اتفاق خاصی وجود دارد که باید انجام شود یا در غیر این صورت لحظه ای کار نخواهد کرد.

این بار ما آن را با سنسور درجه حرارت DS18B20 داریم که به 1 سیم نیاز دارد که دلیل آن را توضیح نمی دهم ، اما نحوه عملکرد آن را حداقل توضیح خواهم داد.

برای این منظور باید به raspi-config در Rpi ، صفحه آبی زیبا بازگردیم.

  1. به گزینه های Interfacing بروید
  2. 1-Wire را انتخاب کرده و گزینه enable را انتخاب کنید.

انجام شده…

فقط شوخی می کنم.

حالا باید /boot/config.txt را تنظیم کنیم

sudo nano /boot/config.txt

این خط را در پایین اضافه کنید.

# onewire را فعال کنید

dtoverlay = w1-gpio

حالا sudo آن را راه اندازی مجدد کنید و اکنون کار ما تمام شده است.

برای بررسی اینکه آیا کار می کند یا خیر ، سنسور را به Rpi وصل کنید ، سپس به ترمینال برگردید و این کد را تایپ کنید (در مرحله اتصال سخت افزار به نحوه اتصال سنسور دما مراجعه کنید).

cd/sys/bus/w1/devices/w1_bus_master1

ls

شما باید چیزی با اعداد و حروف به رنگ آبی تیره در بالا سمت چپ مشاهده کنید ، مطمئن شوید که این اطلاعات را بعداً هنگام کار با کد github بنویسید.

اگر به دلایلی کار نمی کند ، این پیوند را که عمیق تر است ، بررسی کنید.

مرحله 4: MCP3008 - سنجش آنالوگ

MCP3008 - سنجش آنالوگ
MCP3008 - سنجش آنالوگ
MCP3008 - سنجش آنالوگ
MCP3008 - سنجش آنالوگ

همانطور که ما تغییراتی را در سنسور دما ایجاد کردیم ، باید برخی دیگر از تغییرات را برای سنسورهای دیگر انجام دهیم ، زیرا آنها باید در داده های آنالوگ بخوانیم. در اینجا که MCP3008 مفید است ، ما همچنین باید رابط SPI را تغییر دهیم.

sudo raspi-config

به Interfacing Options بروید -> SPI را انتخاب کنید -> فعال کنید.

سپس پایان دهید.

مرحله 5: سخت افزار

ما به طور کامل با Rpi کار نکرده ایم ، اما به اندازه ای که بتوانیم شروع به ساخت و کنار هم قرار دادن سخت افزار کنیم.

برخی توصیه ها این است که هنگام ساختن ارتباطات خود را کاملاً بررسی کنید تا مطمئن شوید که Rpi را منفجر نمی کنید.

همچنین ، در شماتیک متوجه خواهید شد که برخی از اجزا فقط یکبار روی آن قرار دارند ، حتی اگر ما با بیش از 1 جزء مشابه کار می کنیم. این فقط بدان معنی است که شما باید همان روند ساخت آن 1 جزء را تکرار کنید. 1 استثنا کوچک وجود دارد ، سنسورهای mq-x نیازی به مبدل سطح اضافی یا MCP3008 ندارند. فقط یک کابل سبز اضافی (به صورت pdf) به مبدل سطح و MCP3008 اضافه کنید.

ویرایش اضافی: طرفداران باید از ترانزیستور به عنوان سوئیچ استفاده کنند. من از یک ترانزیستور 2n2222A برای 1 فن استفاده می کنم ، زیرا 2 فن ممکن است بار سنگینی باشند.

اگر ترانزیستوری دارید که می تواند جریان بیشتری را کنترل کند ، آخرین قسمت این مرحله را رد کنید.

اگر شما مانند من ندارید ، باید این کار را انجام دهید ، 1 فن = 1 ترانزیستور ، 2 فن = 2 ترانزیستور و غیره (هر فن آن ترانزیستور + دیود خود را مانند pdf).

همچنین بعداً در مرحله 7 باید کد را به app.py در backend_project اضافه کنید: کد Git….

مرحله 6: ایجاد پایگاه داده Mariadb

ایجاد پایگاه داده Mariadb
ایجاد پایگاه داده Mariadb

همانطور که از عنوان آن مشخص است ، ما یک پایگاه داده ایجاد می کنیم تا جایی برای ذخیره داده های حسگر خود داشته باشیم.

اول از همه ، Mariadb را در Rpi بارگیری کنید.

sudo apt-get نصب mariadb-server

پس از نصب ، اجازه دهید از آن استفاده کنیم.

ریشه mysql -u

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

اجازه دهید هم اکنون یک کاربر ایجاد کنیم

CREATE USER 'user'@'٪' IDENTIFIED BY 'userdb'؛

اعطای همه امتیازات بر روی *. * به user '@'٪ 'با GRANT OPTION.

خصوصیات فلاش ؛

برای خروج و راه اندازی مجدد سریع سرویس ، Ctrl + C را فشار دهید:

راه اندازی مجدد سرویس sudo mysql

ورود با نام کاربری: کاربر و رمز عبور: userdb:

mysql -u کاربر -p

اکنون زمان ایجاد پایگاه داده است.

CREATE DATABASE project_db DEFAULT CHARACTER SET utf8؛

USE project_db

یک جدول "historiek" (به معنی تاریخ) ایجاد کنید.

ایجاد "TABLE" در صورت عدم وجود "historiek" ("id" INT NOT NULL AUTO_INCREMENT ،

`sensorID` VARCHAR (5) NOT NULL،` datum` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP، `waarde` FLOAT (4) NULL DEFAULT 0، PRIMARY KEY (` id`)) ENGINE = InnoDB؛

و voila ، پایگاه داده ساخته شده است.

مرحله 7: کد Github و آزمایش

کد Github و آزمایش
کد Github و آزمایش

در حال نزدیک شدن به پایان پروژه خود هستیم.

قبل از دریافت کد ، ما باید چند ماژول را به Rpi وارد کنیم:

pip3 Flask_MySQL را نصب کنید

pip3 flask-socketio را نصب کنید

pip3 install -U flask -cors

pip3 spidev را نصب کنید

اکنون برای کارکردن به کد نیاز داریم ، ترمینال را وارد کنید:

git clone

بررسی کنید که آیا پوشه وجود دارد با:

ls

اکنون به 2 پایانه نیاز دارید ، بنابراین می توانید روی ترمینال راست کلیک کرده و روی Duplicate session کلیک کنید:

با استفاده از دستور cd به backend_project and temperature بروید.

در حال حاضر قبل از شروع برنامه ها برای اهداف آزمایش. آیا هنوز مرحله 3 را با سنسور 1 سیم به یاد می آورید که در آن باید برخی اعداد را یادداشت کنید؟ اگر نگرانی دارید ، نگران نباشید ، کافی است دوباره به مرحله 3 نگاهی سریع بیندازید.

ما قصد داریم این اعداد را به کد اضافه کنیم زیرا هنگام استفاده از آن باید سنسور صحیح را بشناسد.

ترمینال با پوشه دما ، app.py را پیدا خواهید کرد. ما قصد باز کردن آن را داریم.

sudo nano app.py

به دنبال تابع "def temperatuur ():" بگردید ، در آنجا باید "**" را با اعدادی که نوشته اید جایگزین کنید. در مورد من ، این خط کد را دریافت می کنم (هر شماره منحصر به فرد است).

sensor_file_name = '/sys/devices/w1_bus_master1/28-0316a4be59ff/w1_slave

زمان آزمایش. هر دو پایانه را در پوشه backend_project و دما تایپ کنید:

python3 app.py

اکنون مرحله 5 را به خاطر بسپارید: سخت افزاری که در صورت استفاده از چند فن و ترانزیستور باید کد اضافه کنید؟

خوب ، اگر نه به مرحله 5 بازگردید.

حالا ما باید کد را همانطور که اشاره کردم به app.py در backend_project اضافه کنیم. برای سهولت کار ، نمونه ای از این مورد را در کد ارائه کردم. هر خط کد نظر که دارای "fan1" است ، آن خطوط و voila را کامنت نکنید ، اکنون می توانید از 2 طرفدار استفاده کنید.

اگر می خواهید از بیش از 2 فن استفاده کنید ، همان کد را در زیر آن کپی و جایگذاری کنید اما با شماره ای متفاوت. نقطه ضعف این کار شخصی بیشتر برای شما و gpio.pins کمتر در دسترس است. هیچ مزیتی برای این وجود ندارد که من می دانم.

مرحله 8: کد را در Boot Up اجرا کنید

کد را در Boot Up اجرا کنید
کد را در Boot Up اجرا کنید

ما می خواهیم این 2 اسکریپت پایتون در لحظه بوت شدن Rpi ما اجرا شوند و در صورت خرابی یک اسکریپت ، باید خود به خود راه اندازی مجدد شود. برای انجام این کار ، ما 2 سرویس ارائه می دهیم.

برای این کار تایپ کنید:

sudo nano /etc/systemd/system/temperature.service

این را برای یک temperature.service کپی و جایگذاری کنید:

[واحد] توضیحات = خدمات دما بعد از = multi-user.target

[سرویس] نوع = ساده

ExecStart =/usr/bin/python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/temperature/app.py

StandardInput = tty-force

راه اندازی مجدد = در صورت خرابی

RestartSec = 60s

[نصب]

WantedBy = multi-user.target

ببندید و دوباره انجام دهید اما سپس برای backend_project.service:

اولین متن باز:

sudo nano /etc/systemd/system/backend_project.service

سپس دوباره کپی و جایگذاری کنید:

[واحد] توضیحات = سرویس پروژه پشتیبان

After = multi-user.target

[سرویس]

نوع = ساده

ExecStart =/usr/bin/python3 /home/pi/Documents/nmct-s2-project-1-TheryBrian/backend_project/app.py

StandardInput = tty-force

راه اندازی مجدد = در صورت خرابی

RestartSec = 60s

[نصب]

WantedBy = multi-user.target

ذخیره کن و ببند.

قسمت آخر این را تایپ می کند:

sudo systemctl daemon-reload

sudo systemctl فعال کردن temperature.service راه اندازی مجدد مجدد sudo

اکنون 2 اسکریپت پایتون ما باید به طور خودکار در بوت اجرا شود.

مرحله 9: راه اندازی وب سایت

هنگامی که مخزن را بارگیری کردید ، باید پوشه ای نیز به نام front داشته باشید. این جایی است که مطالب مربوط به وب سایت است.

قبل از استفاده از پوشه ابتدا به apache نیاز داریم. راهنمای موجود در این پیوند را برای apache دنبال کنید.

وقتی آماده شدی به محلی که پوشه جلویی در آن قرار دارد بروید:

cd /Documents /nmct-s2-project-1-TheryBrian

سپس تایپ کنید:

sudo mv front/var/www/html

وقتی این کار انجام شد ، به پوشه html بروید ، برای کارهای خسته کننده (تقصیر من) آماده شوید.

cd/var/www/html/

سپس وارد پوشه جلویی شوید و همه چیز را به پوشه html منتقل کنید.

مثال:

sudo mv css/var/www/html

سپس پوشه جلویی را حذف کنید.

و ما همه چیز را تمام کرده ایم.

موفق باشید:).

مرحله 10: اختیاری - نمونه اولیه مینیاتوری

اختیاری - نمونه اولیه مینیاتوری
اختیاری - نمونه اولیه مینیاتوری
اختیاری - نمونه اولیه مینیاتوری
اختیاری - نمونه اولیه مینیاتوری

به دلایل آزمایش ، من یک نمونه اولیه از یک جعبه با تمام سخت افزار داخل آن تهیه کردم تا بتوانم ببینم آیا همه چیز به سفارش کار می کند یا خیر.

به طور معمول این پروژه در مقیاس بزرگتری انجام می شود. به عنوان مثال: یک اتاق ، یک خانه ، یک کارخانه ، یک فروشگاه و غیره…

اما بدیهی است قبل از شروع به ایجاد سوراخ در دیوارها (قافیه زیبا). ابتدا می خواهیم ببینیم آیا کار می کند یا خیر. در واقع نیازی به ساخت جعبه برای آزمایش ندارید ، اما انجام برخی کارها همیشه سرگرم کننده است.

در اینجا مثال من است.

توصیه شده: