فهرست مطالب:

راه حل IoTea LoRa (به روز رسانی 1811) را مشاهده کردید: 5 مرحله
راه حل IoTea LoRa (به روز رسانی 1811) را مشاهده کردید: 5 مرحله

تصویری: راه حل IoTea LoRa (به روز رسانی 1811) را مشاهده کردید: 5 مرحله

تصویری: راه حل IoTea LoRa (به روز رسانی 1811) را مشاهده کردید: 5 مرحله
تصویری: How To Do Stable Diffusion LORA Training By Using Web UI On Different Models - Tested SD 1.5, SD 2.1 2024, جولای
Anonim
راه حل IoTea LoRa را مشاهده کرد (به روز رسانی 1811)
راه حل IoTea LoRa را مشاهده کرد (به روز رسانی 1811)

اینترنت+ در حال حاضر یک مفهوم محبوب است. این بار ما اینترنت و کشاورزی را امتحان کردیم تا باغ چای از طریق اینترنت چای رشد کند.

مرحله 1: موارد مورد استفاده در این پروژه

اجزای سخت افزاری

  • Grove - سنسور دی اکسید کربن (MH -Z16)
  • Grove - سنسور نور دیجیتال
  • Grove - Dust Sensor (PPD42NS)
  • Grove-Oxygen Sensor (ME2-O2-Ф20)
  • سنسور رطوبت و دما خاک
  • LoRa LoRaWAN Gateway - کیت 868 مگاهرتز با رزبری پای 3
  • Grove - Temp & Humi & Barometer Sensor (BME280)

برنامه های نرم افزاری و خدمات آنلاین

Microsoft Visual Studio 2015

مرحله 2: داستان

در کوه منگدینگ در شمال شرقی یاان ، سیچوان ، خط الراس کوه در دریای سبز از غرب به شرق می گذرد. این مکان برای دنگ 36 ساله ، یکی از معدود چای سازان Mengding از نسل خود ، با مزارع 50mu (= 3.3 هکتار) در 1100 متر بالاتر از سطح دریا واقع شده است. دنگ از خانواده چای سازان می آید ، اما حفظ میراث خانوادگی کار ساده ای نیست. چای ما در ارتفاع زیاد در محیطی ارگانیک رشد می کند تا از کیفیت عالی آن اطمینان حاصل شود. اما در عین حال ، تراکم رشد کم است ، هزینه زیاد است و جوانه زدن ناهموار است ، و برداشت چای را سخت می کند. به همین دلیل است که چای های کوهستانی معمولاً محصول کمی هستند و ارزش آنها در بازار منعکس نمی شود. در دو سال گذشته ، دنگ سعی کرده است آگاهی مصرف کنندگان را از چای کوهستانی ارتقا دهد تا ارزش آنها را ارتقا دهد. و هنگامی که با فن ملاقات کرد ، که به دنبال مزارعی برای پیاده سازی فناوری Seeed’s IoTea بود ، تطبیق کاملی برای راه حل ایجاد شد.

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

سخت افزار این پروژه را می توان به 4 قسمت Power ، Sensors ، Node و Gateway تقسیم کرد. مقاله زیر به شما نشان می دهد که چگونه مرحله به مرحله آن را تکمیل کنید.

قسمت قدرت

Power Part عمدتا شامل یک پنل خورشیدی و یک باتری لیتیوم است ، اگر فقط این پروژه را برای نمایش بسازید ، می توانید آنها را نادیده بگیرید. یا می توانید آموزش قبلی را برای نصب قدرت گره دنبال کنید.

بخش حسگرها

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

تصویر
تصویر

همانطور که در تصویر بالا مشاهده می کنید ، سنسور نور دیجیتال همیشه در بالای صفحه قرار دارد تا بتواند اطلاعات نور را جمع آوری کند. سنسورهای تولید گرما در وسط براکت اکریلیک مانند سنسور O2 ، سنسور گرد و غبار و سنسور CO2 نصب شده اند. در نهایت ، سنسور دما و رطوبت در پایین براکت اکریلیک.

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

تصویر
تصویر

Node Part یک Seeeduino LoRaWan است که در جعبه ضد آب نصب شده است ، از طریق اتصالات آب به برق و سنسورها متصل می شود. در میان آنها ، سنسور گرد و غبار به پین دیجیتال D3 LoRaWan ، سنسور CO2 به پین D4 & D5 ، سنسور خاک به پین D6 و D7 ، سنسور O2 به پین آنالوگ A1 و سنسور نور و سنسور نور به پورت I2C متصل می شوند.

توجه: باید بین کابل آبی (Data) سنسور خاک و کابل قرمز (Vcc) یک مقاومت 10k اضافه شود.

Seeeduino LoRaWan هر چند وقت یکبار ارزش سنسورها را جمع آوری کرده و آنها را از طریق LoRa به Gateway ارسال می کند. قالب داده مانند زیر:

{

[0] ، /* دمای هوا (℃)* /[1] ، /* رطوبت هوا (٪)* /[2] ، /* ارتفاع (متر) بایت بالا* /[3] ، /* ارتفاع (متر) بایت کم */[4] ،/ * غلظت CO2 (PPM) بایت بالا */[5] ،/ * غلظت CO2 (PPM) کم بایت */[6] ،/ * غلظت گرد و غبار (عدد/0.01cf) بایت زیاد */[7] ،/ *غلظت گرد و غبار (عدد/0.01cf) بایت کم */[8] ،/ *شدت نور (لوکس) بایت زیاد */[9] ،/ *شدت نور (لوکس) بایت کم */ [10] ، /* غلظت O2 (٪)* /[11] ، /* دمای خاک (℃)* /[12] ، /* رطوبت خاک (٪)* /[13] ، /* ولتاژ باتری (V) */ [14]/ *کد خطای سنسور */}

هر بیت در سنسور خطای کد سنسور دارای تفاوت معنی است ، درست مانند زیر:

{

بیت 0: 1 ؛ / * خطای سنسور فشارسنج */ bit1: 1؛ / * خطای سنسور CO2 */ bit2: 1؛ / * خطای سنسور گرد و غبار */ bit3: 1 ؛ / * خطای حسگر نور */ bit4: 1 ؛ / * خطای سنسور O2 */ bit5: 1؛ / * خطای سنسور خاک */ محفوظ: 2 ؛ / * رزرو شده */}

قسمت دروازه

تصویر
تصویر

Gateway Part یک Raspberry Pi است که ماژول Gateway RHF0M301–868 و PRI 2 Bridge RHF4T002 را به هم متصل کرده است ، در یک جعبه ضد آب نصب شده است و از طریق اتصالات آب به دوربین قدرت و USB متصل می شود. از آنجا که از سیستم عامل تخصصی استفاده می کند ، لطفاً پیکربندی Seeed Wiki را دنبال کنید.

مرحله 4: برنامه نویسی نرم افزار

به عنوان اتصال سخت افزاری ، برنامه نویسی نرم افزار نیز می تواند تقسیم شود ، می توان آن را به 3 قسمت تقسیم کرد: Node ، Gateway و Website.

قسمت گره

اکثر درایورهایی که Node Part به آنها احتیاج داشت در پوشه orig_driver موجود است. کتابخانه های زیر باید دستی نصب شوند:

Adafruit_ASFcore

از آنجا که پروژه پیچیده است ، توصیه می کنیم به جای Arduino IDE از Microsoft Visual Studio استفاده کنید. افزونه ای به نام Visual Micro می تواند به شما کمک کند تا پروژه Arduino را با استفاده از Visual Studio تکمیل کنید ، برای اطلاعات بیشتر اینجا را کلیک کنید.

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

تصویر
تصویر

برای سنسورهایی که قبلاً درایور OOP دارند ، ما آن را برای تطبیق این پروژه دوباره بسته بندی کردیم ، برای دیگران ، ما رانندگان آنها را با استفاده از OOP بازنویسی کردیم. کلاس سنسور در لایه میان افزار برای یکپارچه سازی رابط های سنسورهای واقعی استفاده می شود ، به عنوان مثال ، سنسور فشارسنج می تواند دما ، رطوبت و ارتفاع را همزمان جمع آوری کند ، بنابراین دارای 3 رابط برای به دست آوردن دما ، رطوبت و ارتفاع است. اما آنها دارای نام روش متفاوتی هستند که برنامه بدست آوردن حسگرها را پیچیده تر می کند ، درست مانند این:

فشارسنج-> getTemperature ()؛

فشارسنج-> getHumidity ()؛ فشارسنج-> getAltitude ()؛ //… other_sensor-> getSomeValue ()؛ //…

اما با استفاده از OOP ، به نظر می رسد:

برای (خودکار i = 0 ؛ i getValue () ؛

}

ما همچنین یک کلاس Application را بسته بندی کردیم ، رابط IApplication را پیاده سازی می کند ، روش setup () و loop () در IoTea.ino می تواند متد setup () و loop () را در Application object فراخوانی کند.

توجه: سریال USB فقط برای اشکال زدایی استفاده می شود. پس از اشکال زدایی ، لطفاً نظر دهید که کد اولیه شده است در روش setup ().

قسمت دروازه

برنامه Python Gateway Part در پوشه اصلی برای عکس گرفتن و بارگذاری آنها در سرور Amazon S3 هر ساعت استفاده می شود. قبل از استفاده ، مطمئن شوید fswebcam قبلاً در رزبری پای شما نصب شده است:

sudo apt-get update && sudo apt-get fswebcam را نصب کنید

اگر می خواهید عکس ها را بارگذاری کنید ، AWS خود را با مراحل زیر پیکربندی کنید. ابتدا ، AWS SDK و AWS CLI را با استفاده از این دستورات در Raspberry Pi خود نصب کنید:

sudo pip boto3 را نصب کنید

sudo pip نصب awscli

و سپس AWS CLI را اجرا کنید:

sudo aws را پیکربندی کنید

شناسه کلید AWS ، شناسه دسترسی مخفی AWS و نام منطقه پیش فرض خود را پیکربندی کنید.

اگر دوست ندارید عکس های خود را بارگذاری کنید ، می توانید از مراحل پیکربندی AWS و کدهای نظر در مورد بارگذاری در photo.py صرف نظر کنید. برای اجرای این برنامه پس از هر بار راه اندازی رزبری پای ، می توانید یک عکس با نام فایل در /etc/init.d ایجاد کرده و کد زیر را برای آن بنویسید.

#!/bin/bash

# /etc/init.d/photo ### شروع اطلاعات # ارائه می دهد: seeed_photo # مورد نیاز-شروع: $ remote_fs $ syslog # مورد-توقف: $ remote_fs $ syslog # پیش فرض-شروع: 2 3 4 5 # پیش فرض-توقف: 0 1 6 # توضیحات کوتاه: عکسبرداری initscript # توضیح: این سرویس برای مدیریت عکسبرداری استفاده می شود ### END INIT INFO مورد "$ 1" در شروع) پژواک "شروع به گرفتن عکس" /home/rxhf/photo.py & ؛؛ توقف) پژواک "توقف گرفتن عکس" kill $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}') ؛؛ *) پژواک "استفاده: شروع سرویس عکس | توقف" خروج 1 ؛؛ خروج esac 0

تنظیم مجوز اجرا

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

و آن را آزمایش کنید

sudo /etc/init.d/ شروع عکس

اگر مشکلی وجود ندارد ، آن را متوقف کرده و به برنامه راه اندازی اضافه کنید

sudo /etc/init.d/ توقف عکس

پیش فرض های sudo update-rc.d

توجه: اگر می خواهید پس از راه اندازی رزبری پای دروازه را راه اندازی کنید ، کدهای شروع دروازه را در Seeed Wiki به /etc/rc.local اضافه کنید ، به نظر می رسد:

#!/bin/sh -e

# # rc.local # # این اسکریپت در پایان هر سطح چند کاربره اجرا می شود. # اطمینان حاصل کنید که اسکریپت در صورت موفقیت یا هر # مقدار دیگر در خطا "0" خارج می شود. # # برای فعال یا غیرفعال کردن این اسکریپت ، فقط # بیت اجرا را تغییر دهید. # # به طور پیش فرض این اسکریپت هیچ کاری انجام نمی دهد. # نشانی IP _IP = $ (نام میزبان -I) || را چاپ کنید true اگر ["$ _IP"] ؛ سپس printf "آدرس IP من٪ s / n" "$ _IP" fi cd /home/rxhf/loriot/1.0.2 sudo systemctl stop pktfwd sudo gwrst wget https://cn1.loriot.io/home/gwsw/loriot -risinghf-r… -O loriot-gw.bin chmod +x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io خروج 0

سایت اینترنتی

ما وب سایت را در CentOS 7 مستقر کردیم. مراحل زیر نحوه استقرار را به شما نشان می دهد.

مرحله 1. Python3 را نصب کنید

sudo yum -y epel -release را نصب کنید

sudo yum -y python36 را نصب کنید

مرحله 2. Python pip و محیط مجازی را نصب کنید

wget

sudo python36 get-pip.py sudo pip virtualenv را نصب کنید

Setp 3. وب سایت ما را از GitHub کلون کنید

sudo yum -y git را نصب کنید

git clone

مرحله 4. ایجاد و فعال کردن محیط مجازی

virtualenv -p python36 iotea -hb

cd iotea-hb منبع bin/activ

مرحله 5. کتابخانه های وابسته را نصب کنید

پیپ pymysql را نصب کنید

pip install dbutils pip install flask pip install websocket-client pip install cofigparser

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

sudo yum -y سرور mariadb mariabd را نصب کنید

sudo systemctl فعال mariadb sudo systemctl شروع mariadb mysql -uroot -p

و سپس از iotea_hb.sql برای ایجاد یک جدول استفاده کنید.

مرحله 7. db.ini را ایجاد کنید و این کدها را روی آن بنویسید

[db]

db_port = 3306 db_user = root db_host = localhost db_pass = db_name = iotea

مسیر db.ini را در db.py تغییر دهید

# در db.py

#cf.read ("/data/www/python3_iotea_hb/iotea/conf/db.ini") cf.read ("/home // iotea-hb/db.ini")

مرحله 8. پورت را در app.py تغییر دهید و وب سایت را راه اندازی کنید:

# در app.py

#app.run (اشکال زدایی = درست ، پورت = 6000) app.run (اشکال زدایی = درست ، پورت = 8080)

# در ترمینال

pip install gunicorn gunicorn -w 5 -b 0.0.0.0:8080 برنامه: برنامه

اکنون از 127.0.0.1:8080 در مرورگر وب خود دیدن کنید ، می توانید وب سایت را مشاهده کنید ، اما داده های زمان واقعی نمایش داده نمی شود.

مرحله 9. دریافت اطلاعات loriot

یک ترمینال دیگر باز کنید ، دوباره وارد محیط مجازی شده و برنامه loriot را راه اندازی کنید:

سی دی iotea-hb

منبع بن/فعال سازی gunicorn loriot: برنامه

مدتی صبر کنید ، داده های نمایش داده شده در وب سایت را مشاهده می کنید ، یا می توانید wss را در loriot.py تغییر دهید:

# در loriot.py

#ws = ایجاد_پیوند ("wss: //cn1.loriot.io/app؟ token = vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w ==")

ws = create_connection ()

مرحله 5: عملیات

برای مشاهده داده های زمان واقعی می توانید از وب سایت های ما دیدن کنید:

  • در Ya'an
  • برای تظاهرات

توصیه شده: