فهرست مطالب:

چشمه آب بدون تماس: 9 مرحله (همراه با تصاویر)
چشمه آب بدون تماس: 9 مرحله (همراه با تصاویر)

تصویری: چشمه آب بدون تماس: 9 مرحله (همراه با تصاویر)

تصویری: چشمه آب بدون تماس: 9 مرحله (همراه با تصاویر)
تصویری: گوز زدن پریانکا چوپرا هنرپیشه بالیوود در یکی از برنامه های لایف تلویزیونی |C&C 2024, جولای
Anonim
چشمه آب بدون تماس
چشمه آب بدون تماس

در پایان اولین سال تحصیلی من به عنوان دانشجوی MCT ، من موظف شدم پروژه ای بسازم که شامل تمام مهارتهایی باشد که در طول سال از دوره ها کسب کرده بودم.

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

این پروژه با استفاده از سنسور فاصله برای تشخیص اینکه آیا یک فنجان یا لیوان در زیر خروجی آب قرار گرفته است ، چشمه سپس به مدت 60 ثانیه (100 میلی لیتر در دقیقه) به خروجی آب ادامه می دهد. این امر برای سازگاری بیشتر است زیرا تشخیص اینکه شیشه کنار کشیده شده است بسیار دشوار/کند است ، به همین دلیل یک تایمر در محل قرار داده شده است. بعد از اینکه لیوان شما با 100 میلی لیتر آب پر شد ، می توانید 5 ثانیه منتظر بمانید و اگر لیوان هنوز در مقابل سنسور فاصله قرار دارد ، زمان دیگری را پر می کند (این بدان معناست که بین پر کردن دو نوع مختلف 5 ثانیه فاصله وجود دارد. موارد).

تدارکات

اجزاء

- 1x RaspberryPi (من از نسخه 4 استفاده کردم اما ممکن است نسخه های قدیمی نیز کار کنند)- 1x ترانزیستور S8050 یا ترانزیستور 1x PN2222 نیز ممکن است کار کنند- 1x Photoresistor- 1x HC-SR04 (سنسور فاصله فراصوت)- 1x RFID-RC522- 3x متفاوت LED های رنگی (آبی ، زرد ، قرمز)- 1x LCD1602- 1x زنگ فعال- 1x PCF8574- 1x MCP3008- 1x پمپ آب (از پمپ پرستالتیک 12 ولت استفاده شد ، پیوند به این مورد)

- 1 برابر منبع تغذیه DC (12 ولت ، 600 میلی آمپر ساعت)- 1 برابر آجر برق با 3 نقطه- نان بردار 3x (احتمالاً می توانید کمتر استفاده کنید)- T-cobbler برای پین های RaspberryPi GPIO- کابل T-cobbler (برای اتصال بین pi و cobbler)

مواد و ابزار مورد استفاده

- مته ای با مته های زیر:

- 4 میلی متر (برای پیش سوراخ سوراخ ها برای پیچ ها) - 15 میلی متر (برای ایجاد سوراخ برای سنسور فاصله)

- هر پیچ گوشتی- 30 پیچ 45 میلی متری- 6 پیچ 20 میلی متری- 2 لولا برای درب- یک صفحه MDF حدود 130 سانتی متر در 80 سانتی متر- چند فایل

مرحله 1: مونتاژ مدار

مونتاژ مدار
مونتاژ مدار
مونتاژ مدار
مونتاژ مدار
مونتاژ مدار
مونتاژ مدار

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

برای عناصر فعال ما LCD1602 ، زنگ فعال و پمپ پریستالتیک داریم ، از LCD برای نمایش وضعیت استفاده می شود مانند این که کیس باز است یا پمپ در حال کار است و همچنین آدرس IP دستگاه نشان داده می شود ، زنگ صدا هنگامی که پرونده بدون باز کردن مجوز باز می شود ، صدای هشدار دهنده ای ایجاد می کند.

تخته نان و نمای شماتیک مدار را در زیر اضافه کرده ام.

مرحله 2: راه اندازی RaspberryPi ما

برای راه اندازی RaspberryPi ما ، ما نرم افزار تصویربرداری را از سایت Raspberry بارگیری می کنیم ، با این کار می توانید نسخه Raspbian مورد نظر خود را بارگیری کرده و SDCARD خود را برای شما تصویر کنید. بعد از اینکه این ابزار کار خود را انجام داد ، می توانید SDCARD را در Windows Explorer باز کنید ، می توانید پارتیشن بوت RaspberryPi خود را مشاهده کنید. در اینجا ما فایلی به نام cmdline.txt پیدا می کنیم (این فایل را در دفترچه یادداشت باز نکنید ، آن را در Notepad ++ یا هر IDE دیگر باز کنید). ما ip = 169.254.10.1 را به انتهای این فایل اضافه می کنیم تا مطمئن شویم که می توانیم از طریق اترنت به دستگاه خود متصل شویم (مطمئن شوید ENTERS را در انتهای فایل خود اضافه نکنید وگرنه با مشکل مواجه خواهید شد).

اکنون می توانید SDCARD خود را در RaspberryPi خود قرار داده و آن را بوت کنید ، Pi را به رایانه خود متصل کرده و از Putty برای اتصال به Pi خود در SSH استفاده کنید. من از دستور زیر برای اتصال به Pi خود به جای استفاده از Putty استفاده می کنم. "ssh [email protected]" این ممکن است پایان یابد ، بنابراین صبور باشید و منتظر بمانید تا Pi بوت شود. پس از درخواست رمز عبور ، رمز عبور پیش فرض "تمشک" را پر می کنیم. مطمئن شوید که پس از ورود به سیستم این رمز عبور را تغییر دهید تا از دسترسی افراد بد قصد به رزبری پای شما جلوگیری شود.

اکنون Pi خود را پیکربندی می کنیم تا عملکرد لازم را برای کد ما ارائه دهد. برای باز کردن منوی پیکربندی از "sudo raspi-config" استفاده کنید و در اینجا به گزینه های Interfacing بروید.

در اینجا ما گزینه های زیر را روشن می کنیم:- SPI- I2C

برای راه اندازی اتصال اینترنت بی سیم بر روی Pi خود ، این راهنما را دنبال کنید ، پس از انجام موفقیت آمیز این کار ، می توانیم به نصب بسته های مورد نیاز خود برسیم.

بسته ها: (دستورات را به ترتیب که در اینجا ذکر شده اجرا کنید)

موارد زیر برای دریافت آخرین به روزرسانی ها برای به روز رسانی Pi & supt apt & apt upgrade -y

سرور MySQL و webserver- sudo apt install mariadb-server apache2 ما را نصب کنید

من بعداً در این راهنما از MySQL Workbench برای راه اندازی پایگاه داده استفاده خواهم کرد ، اگر از این مورد استفاده نمی کنید و phpmyadmin را ترجیح می دهید ، می توانید این دستور را با دستور زیر نصب کنید ، تا زمانی که از آن استفاده کنید ، از هر مشتری دیگر MySQL آزاد هستید. قادر هستم پایگاه داده را به درستی وارد کنم.- sudo apt phpmyadmin را نصب کنید

پس از انجام همه موارد فوق ، ما باید یک کاربر برای پایگاه داده خود ایجاد کنیم. برای ورود به سرور MySQL خود از "sudo mysql -u root" استفاده کنید ، در اینجا ما یک کاربر به نام db_admin با رمز عبور مربوطه ایجاد می کنیم ، این گذرواژه در جایی در دستورالعمل ها ذکر شده است. همه خصوصیات را روشن * کنید. * به "db_admin"@"٪" شناسایی شده توسط "yourPasswordHere" با یک گزینه اعطا ؛

برای خروج از ترمینال MySQL از دستور "\ q" استفاده کنید.

بسته های پایتون: ما هنوز نیاز به نصب برخی از بسته های پایتون قبل از اقدام داریم ، دستور زیر را اجرا کنید تا مطمئن شوید همه چیز برای یک تجربه بی عیب و نقص وجود دارد.

sudo pip3 install Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev

و همچنین MySQL زیر بسته های پایتون را وصل کنید تا بتوانید python3 -mysql.connector -y را نصب کنید

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

مرحله 3: تنظیم Backend

راه اندازی Backend
راه اندازی Backend

در اینجا می خواهم توضیح دهم که چگونه می توانید پشتیبان را خودتان تنظیم کنید ، ابتدا فایل rar را از زیر بارگیری کرده و آن را در فهرست راهنمای موقت unrar کنید. با FileZilla یا WinSCP با اطلاعات زیر به RaspberryPi خود متصل شوید:

IP: 169.254.10.1 کاربر: pi رمز عبور: تمشک (اگر رمز عبور را تغییر داده اید در اینجا نیز انجام دهید)

سپس می توانید پرونده هایی را که مرتب نکرده اید به هر فهرست راهنمای مورد نظر در فهرست اصلی کاربر pi منتقل کنید. به خاطر سادگی ما در این تنظیم فرض می کنیم که همه پرونده های خود را در فهرست اسناد بارگذاری کرده ایم.

برنامه FTP خود را برای مرحله بعدی باز نگه دارید!

حالا خط فرمان خود را دوباره با اتصال SSH باز کنید زیرا ما نیاز به انجام برخی تغییرات در سرور وب داریم تا frontend بتواند با پشتیبان ارتباط برقرار کند. ما قصد داریم فایل پیکربندی پیش فرض Apache2 را باز کرده و آن را کمی تغییر دهیم: sudo nano /etc/apache2/sites-available/000-default.conf

خطوط زیر را زیر DocumentRoot در فایل پیکربندی که باز کردیم اضافه کنید: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/

برای مثال می توانید به تصویر پیوست شده نگاهی بیندازید.

مرحله 4: راه اندازی Frontend

قبل از انتقال فایل های خود ، باید کاری انجام دهیم تا بتوانیم انتقال فایل های frontend خود را شروع کنیم. خط فرمان خود را با اتصال SSH که قبلاً ایجاد کرده اید باز کنید و از دستور زیر برای تغییر به کاربر اصلی RaspberryPi ما استفاده کنید: "sudo su -"

پس از این ما می توانیم رمز عبور کاربر اصلی خود را با دستور زیر تغییر دهیم: "passwd" این از شما می خواهد که رمز جدیدی وارد کنید ، پس از انجام این کار می توانید به برنامه FTP خود بازگردید و با اعتبار ریشه خود وارد شوید:

IP: 169.254.10.1 کاربر: root رمز عبور:

فایل rar را از زیر بارگیری کرده و آن را در یک پوشه موقت unrar کنید ، می توانید این فایل ها را به RaspberryPi خود به دایرکتوری زیر منتقل کنید/var/www/html/، پس از انجام این کار می توانید از نمای داخلی http دیدن کنید:/ /169.254.10.1 ، هنوز نمی توانید تعامل داشته باشید زیرا پشتیبان هنوز اجرا نشده است ، بعداً در این راهنما نحوه انجام این کار را به شما نشان خواهم داد.

مرحله 5: وارد کردن پایگاه داده برای پروژه ما

وارد کردن پایگاه داده برای پروژه ما
وارد کردن پایگاه داده برای پروژه ما
وارد کردن پایگاه داده برای پروژه ما
وارد کردن پایگاه داده برای پروژه ما

برنامه مدیریت سرور MySQL مورد علاقه خود را باز کنید و با اعتباراتی که در مرحله 2 ایجاد کردیم به Raspberry Pi خود متصل شوید.

dump پایگاه داده را از زیر بارگیری کرده و طبق معمول آن را وارد کنید ، MySQL workbench به File> Open SQL Script بروید و dump پایگاه داده ای را که دانلود کرده اید انتخاب کنید. سپس CTRL + SHIFT + ENTER را فشار دهید و اسکریپت SQL اجرا شود و ساختار برای پایگاه داده باید ایجاد شود.

من اعتبارنامه هایی را که برای RaspberryPi خود استفاده کردم به عنوان مثال در زیر اضافه کردم و چندین تصویر از ساختار پایگاه داده ، می توانید به آن نگاهی بیندازید و سعی کنید ایده کلی از نحوه کار همه چیز بدست آورید.

مرحله 6: راه اندازی پروژه ما

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

قبل از اینکه بتوانیم پروژه خود را راه اندازی کنیم ، باید اعتبار پایگاه داده را در فایل config.py تغییر دهیم ، اگر دستورالعمل ها را دقیقاً همانطور که این راهنما گفته است دنبال کرده اید ، می توانید این موارد را در /home/pi/Documents/Backend/src/config.py پیدا کنید. در اینجا شما باید اعتبار متغیر db_config را تغییر دهید تا با مواردی که قبلاً برای پایگاه داده ایجاد کردیم مطابقت داشته باشد. من یک نمونه از مواردی را که در این فایل در زیر مشاهده خواهید کرد اضافه کرده ام.

پس از آن شما یک فایل.service اضافه می کنیم که این فایل اطمینان حاصل می کند که پروژه ما با شروع RaspberryPi شروع می شود ، مطمئن شوید که دایرکتوری را به طور مناسب در جایی که فایلهای پشتیبان را نصب کرده اید تغییر دهید. برای ایجاد فایل سرویس از دستور زیر استفاده کنید:

[Unit] Description = Water DispenserAfter = mysql.service

[Service] Type = simpleRestart = alwaysRestartSec = 1User = piExecStart =/usr/bin/python3 /home/pi/Documents/Backend/index.py

[نصب] WantedBy = multi-user.target

خطی را که در آن نوشته شده است /home/pi/Documents/Backend/index.py تا جایی که فایلهای پشتیبان خود را نصب کرده اید اصلاح کنید ، اگر این کار را به درستی انجام ندهید ، پروژه به درستی شروع نمی شود! من یک فایل نمونه را در زیر اضافه می کنم.

پس از انجام این کار و خروج از ویرایشگر متن ، می توانیم سرویس را با دستورات زیر فعال کنیم:- sudo systemctl daemon-reload- sudo systemctl enable dispenser

و به عنوان یک برنامه اضافی می توانیم اجرا کنیم: توزیع کننده وضعیت sudo systemctl این اطلاعات در مورد سرویس ما را نشان می دهد ، در صورت فعال بودن یا نبودن ،…

مرحله 7: مورد

مورد
مورد
مورد
مورد
مورد
مورد
مورد
مورد

تبریک می گوییم که تقریباً آنجا هستیم ، من تعدادی عکس اضافه می کنم که ابعاد مورد استفاده در پروژه را به طور دقیق نشان می دهد ، من از صفحات MDF با ضخامت 18 میلی متر استفاده کردم ، شما می توانید به صورت اختیاری از ضخامت متفاوتی استفاده کنید. روکش من می تواند به عنوان راهنمای طراحی شما مورد استفاده قرار گیرد یا می توانید آنچه من ساخته ام را دوباره خلق کنید. (اگر از ضخامت متفاوتی از MDF استفاده می کنید ، نقاشی های من دیگر به شما اجازه نمی دهد طرح من را بسازید ، مطمئن شوید که آن را تطبیق می دهید!) پانل هایی که من ساخته ام:- 2 پانل 32 سانتی متر در 42 سانتیمتر (پانل های جانبی)- 1 پانل 24 سانتیمتر در 32 سانتیمتر (صفحه پایینی)- 2 پانل 16 سانتیمتر در 24 سانتیمتر (صفحه جلویی که ال سی دی در آن می ماند و صفحه مجاور)- 1 پانل 28 سانتیمتر در 24 سانتیمتر (صفحه میانی از جلو دیده می شود)- 1 پانل 30 سانتیمتر در 24 سانتیمتر (صفحه بالا)

مرحله 8: محصول نهایی را تحسین کنید

محصول نهایی را تحسین کنید
محصول نهایی را تحسین کنید
محصول نهایی را تحسین کنید
محصول نهایی را تحسین کنید

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

من خون ، عرق و اشک زیادی برای این پروژه صرف کردم ، بنابراین اگر نظری بگذارید از آن قدردانی می کنم ، هر گونه انتقادی در مورد بهبود آن استقبال می شود!

مرحله نهم: مشکلات

من پروژه را در حالت فعلی خود به عنوان یک نمونه اولیه کار قرار می دهم که می تواند پیشرفت های بیشتری را شاهد باشد.

پایگاه کد پشتیبان به گونه ای ساختار یافته است که می توان یک رابطه اصلی برده را به طور کامل ایجاد کرد ، جایی که یک چشمه به عنوان نمای اصلی عمل می کرد و همه چشمه های دیگر داده ها و تغییرات را در API REST از استاد ایجاد می کردند. همچنین بقایای یک سیستم توکن API در کد وجود دارد زیرا این سیستم باید اجرا شود ، اما بعداً به دلیل محدودیت زمانی قطع شد.

من کد خود را در سرور Gitlab خود بارگذاری کرده ام و در آنجا می توانید به طور کلی کد را مشاهده کنید:

توصیه شده: