সুচিপত্র:

IoTea LoRa সমাধান দেখেছি (1811 আপডেট করুন): 5 টি ধাপ
IoTea LoRa সমাধান দেখেছি (1811 আপডেট করুন): 5 টি ধাপ

ভিডিও: IoTea LoRa সমাধান দেখেছি (1811 আপডেট করুন): 5 টি ধাপ

ভিডিও: IoTea LoRa সমাধান দেখেছি (1811 আপডেট করুন): 5 টি ধাপ
ভিডিও: ঘুমালে মুখ দিয়ে লালা পড়ার কারণ ও প্রতিকার কী || saliva in mouth when sleeping | 2024, নভেম্বর
Anonim
IoTea LoRa সমাধান দেখেছি (আপডেট 1811)
IoTea LoRa সমাধান দেখেছি (আপডেট 1811)

ইন্টারনেট+ এখন একটি জনপ্রিয় ধারণা। এবার আমরা ইন্টারনেট প্লাস কৃষিকে চেষ্টা করেছি যাতে চা বাগান ইন্টারনেট চা বৃদ্ধি পায়।

ধাপ 1: এই প্রকল্পে ব্যবহৃত জিনিসগুলি

হার্ডওয়্যার উপাদান

  • গ্রোভ - কার্বন ডাই অক্সাইড সেন্সর (MH -Z16)
  • গ্রোভ - ডিজিটাল লাইট সেন্সর
  • গ্রোভ - ডাস্ট সেন্সর (PPD42NS
  • গ্রোভ-অক্সিজেন সেন্সর (ME2-O2-Ф20)
  • মাটির আর্দ্রতা এবং তাপমাত্রা সেন্সর
  • LoRa LoRaWAN গেটওয়ে - রাস্পবেরি পাই 3 সহ 868MHz কিট
  • Grove - Temp & Humi & Barometer Sensor (BME280)

সফটওয়্যার অ্যাপ এবং অনলাইন সেবা

মাইক্রোসফট ভিসুয়াল স্টুডিও 2015

ধাপ 2: গল্প

ইয়ান, সিচুয়ানের উত্তর -পূর্বে মেনডিং পর্বতে, পর্বতশৃঙ্গ সবুজের সমুদ্রে পশ্চিম থেকে পূর্ব দিকে চলেছে। 36 বছর বয়সী দেংয়ের জন্য এটি একটি অতি পরিচিত দৃশ্য, তার প্রজন্মের খুব কম মেনডিং চা প্রস্তুতকারকদের মধ্যে একজন, 50 মিটার (= 3.3 হেক্টর) বাগান সমুদ্রপৃষ্ঠ থেকে 1100 মিটার উপরে অবস্থিত। ডেং চা প্রস্তুতকারকদের পরিবার থেকে এসেছে, কিন্তু পারিবারিক উত্তরাধিকার বহন করা সহজ কাজ নয়। “আমাদের চাগুলি একটি জৈব পরিবেশে উচ্চ উচ্চতায় উত্থিত হয় যাতে এর চমৎকার গুণমান নিশ্চিত করা যায়। কিন্তু একই সময়ে, বৃদ্ধির ঘনত্ব কম, খরচ বেশি এবং উদীয়মান অসম, চা ফসল কাটা কঠিন। এ কারণেই উচ্চ-পর্বত চাগুলি সাধারণত ছোট ফসল হয় এবং তাদের মূল্য বাজারে প্রতিফলিত হয় না।”গত দুই বছর ধরে, ডেং উচ্চ-পর্বত চা সম্পর্কে তাদের মূল্য বৃদ্ধির জন্য ভোক্তাদের সচেতনতা বাড়ানোর চেষ্টা করছে। এবং যখন তিনি ফ্যানের সাথে দেখা করলেন, যিনি সিডের আইওটিয়া প্রযুক্তি বাস্তবায়নের জন্য একটি বৃক্ষরোপণ খুঁজছিলেন, তখন সমাধানের জন্য একটি নিখুঁত মিল তৈরি করা হয়েছিল।

ধাপ 3: হার্ডওয়্যার সংযোগ

এই প্রকল্পের হার্ডওয়্যার 4 ভাগে বিভক্ত করা যেতে পারে: পাওয়ার, সেন্সর, নোড এবং গেটওয়ে। ধাপে ধাপে এটি কীভাবে সম্পন্ন করবেন তা নিম্নলিখিত নিবন্ধটি আপনাকে দেখাবে।

পাওয়ার পার্ট

পাওয়ার পার্টে প্রধানত একটি সোলার প্যানেল এবং একটি লিথিয়াম ব্যাটারি থাকে, যদি আপনি শুধু প্রজেক্টের জন্য এই প্রজেক্টটি তৈরি করেন, তাহলে আপনি সেগুলিকে উপেক্ষা করতে পারেন। অথবা আপনি নোড পাওয়ার ইনস্টল করার জন্য পূর্ববর্তী টিউটোরিয়াল অনুসরণ করতে পারেন।

সেন্সর অংশ

সেন্সর অংশে, অনেক সেন্সরের কারণে, আমরা একটি আবহাওয়া স্টেশন ব্যবহার করেছি এবং সেগুলি ইনস্টল করার জন্য এক্রাইলিক বন্ধনীও তৈরি করেছি।

ছবি
ছবি

আপনি উপরের ছবিতে দেখতে পাচ্ছেন, ডিজিটাল লাইট সেন্সর সবসময় উপরে থাকে, যাতে এটি আলোর তথ্য সংগ্রহ করতে পারে। তাপ উৎপন্ন করবে এমন সেন্সরগুলি অ্যাক্রিলিক বন্ধনী, যেমন O2 সেন্সর, ডাস্ট সেন্সর এবং CO2 সেন্সরের মাঝখানে ইনস্টল করা আছে। অবশেষে, এক্রাইলিক বন্ধনী নীচে তাপমাত্রা এবং আর্দ্রতা সেন্সর।

এছাড়াও, মাটির তাপমাত্রা এবং আর্দ্রতা সেন্সর একা মাটিতে স্থাপন করা হয়। নোড অংশ

ছবি
ছবি

নোড পার্ট হল একটি Seeeduino LoRaWan যা একটি ওয়াটারপ্রুফ বক্সে ইনস্টল করা আছে, এটি ওয়াটার জয়েন্টের মাধ্যমে পাওয়ার এবং সেন্সরের সাথে সংযোগ স্থাপন করে। তার মধ্যে, ডাস্ট সেন্সর লোরাওয়ানের ডিজিটাল পিন D3, CO2 সেন্সর পিন D4 এবং D5, মাটি সেন্সর পিন D6 এবং D7, O2 সেন্সর সংযোগ এনালগ পিন A1 এবং লাইট সেন্সর এবং ব্যারোমিটার সেন্সর I2C পোর্টের সাথে সংযোগ স্থাপন করে।

দ্রষ্টব্য: সয়েল সেন্সরের ব্লু (ডেটা) ক্যাবল এবং রেড (ভিসিসি) ক্যাবলের মধ্যে 10k রেসিস্টার যুক্ত করতে হবে।

Seeeduino LoRaWan কিছুক্ষণের মধ্যে সেন্সরের মান সংগ্রহ করে, এবং সেগুলি LoRa এর মাধ্যমে গেটওয়েতে পাঠান। নীচের মত ডেটা ফরম্যাট:

{

[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]/ *সেন্সর ত্রুটি কোড */}

সেন্সর ত্রুটি কোড বাইটের প্রতিটি বিটের একটি ভিন্ন অর্থ রয়েছে, ঠিক নীচের মত:

{

bit0: 1; / * ব্যারোমিটার সেন্সর ত্রুটি */ বিট 1: 1; / * CO2 সেন্সর ত্রুটি */ bit2: 1; / * ডাস্ট সেন্সর ত্রুটি */ বিট 3: 1; / * লাইট সেন্সর ত্রুটি */ বিট 4: 1; / * O2 সেন্সর ত্রুটি */ bit5: 1; / * মাটি সেন্সর ত্রুটি */ সংরক্ষিত: 2; / * সংরক্ষিত */}

গেটওয়ে অংশ

ছবি
ছবি

গেটওয়ে পার্ট হল একটি রাস্পবেরি পাই যা গেটওয়ে মডিউল RHF0M301–868 এবং PRI 2 ব্রিজ RHF4T002 প্লাগ করেছে, এটি একটি ওয়াটারপ্রুফ বক্সে ইনস্টল করা হয়েছে এবং ওয়াটার জয়েন্টের মাধ্যমে পাওয়ার এবং ইউএসবি ক্যামেরার সাথে সংযুক্ত। যেহেতু এটি বিশেষ ফার্মওয়্যার ব্যবহার করে, অনুগ্রহ করে এটি কনফিগার করার জন্য Seeed Wiki অনুসরণ করুন।

ধাপ 4: সফটওয়্যার প্রোগ্রামিং

হার্ডওয়্যার সংযোগ হিসাবে, সফটওয়্যার প্রোগ্রামিংকেও বিভক্ত করা যেতে পারে, এটি 3 ভাগে বিভক্ত করা যেতে পারে: নোড, গেটওয়ে এবং ওয়েবসাইট।

নোড অংশ

নোড পার্টের প্রয়োজনীয় বেশিরভাগ ড্রাইভার ইতিমধ্যেই Origin_driver ফোল্ডারে রয়েছে। নীচের লাইব্রেরিগুলি ম্যানুয়ালি ইনস্টল করা প্রয়োজন:

Adafruit_ASFcore

কারণ প্রকল্পটি জটিল, আমরা আপনাকে Arduino IDE এর পরিবর্তে Microsoft Visual Studio ব্যবহার করার পরামর্শ দিচ্ছি। ভিজ্যুয়াল মাইক্রো নামে একটি প্লাগইন আপনাকে ভিজ্যুয়াল স্টুডিও ব্যবহার করে একটি আরডুইনো প্রকল্পকে বায়ুল্ড করতে সহায়তা করতে পারে, আরও তথ্যের জন্য এখানে ক্লিক করুন।

ভাল পাঠযোগ্যতা এবং রক্ষণাবেক্ষণের জন্য, আমরা এবারে অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ব্যবহার করি। এই প্রকল্পের শ্রেণী চিত্র নীচের মত দেখাচ্ছে:

ছবি
ছবি

সেই সেন্সরগুলির জন্য ইতিমধ্যেই OOP ড্রাইভার আছে, আমরা এই প্রকল্পটিকে মানিয়ে নেওয়ার জন্য এটি পুনরায় বানিয়েছি, অন্যদের জন্য, আমরা ওওপি ব্যবহার করে তাদের ড্রাইভারগুলিকে পুনরায় লিখেছি। মিডলওয়্যার লেয়ারের সেন্সর ক্লাসটি বাস্তব সেন্সরের ইন্টারফেসগুলিকে একত্রিত করতে ব্যবহৃত হয়, উদাহরণস্বরূপ, ব্যারোমিটার সেন্সর একই সময়ে তাপমাত্রা, আর্দ্রতা এবং উচ্চতা সংগ্রহ করতে পারে, তাই তাপমাত্রা, আর্দ্রতা এবং উচ্চতা অর্জনের জন্য এটিতে 3 টি ইন্টারফেস রয়েছে। কিন্তু তাদের পার্থক্য পদ্ধতির নাম আছে, যা সেন্সর মান অর্জনের প্রোগ্রামটিকে আরও জটিল করে তুলবে, ঠিক এইভাবে:

ব্যারোমিটার-> getTemperature ();

ব্যারোমিটার-> getHumidity (); ব্যারোমিটার-> getAltitude (); //… another_sensor-> getSomeValue (); //…

কিন্তু OOP ব্যবহার করে, এটি এইরকম দেখাচ্ছে:

জন্য (অটো i = 0; আমি getValue ();

}

আমরা একটি অ্যাপ্লিকেশন ক্লাস প্যাক করেছি, এটি IApplication ইন্টারফেস বাস্তবায়ন করে, IoTea.ino এ সেটআপ () এবং লুপ () পদ্ধতি প্রয়োগ বস্তুর সেটআপ () এবং লুপ () পদ্ধতিতে কল করতে পারে।

দ্রষ্টব্য: USB সিরিয়াল শুধুমাত্র ডিবাগ করতে ব্যবহৃত হয়। ডিবাগ করার পরে, দয়া করে মন্তব্য করুন এটি সেটআপ () পদ্ধতিতে কোডটি আরম্ভ করে।

গেটওয়ে অংশ

হোম ফোল্ডারে গেটওয়ে পার্টের পাইথন প্রোগ্রামটি ছবি তোলা এবং প্রতি ঘণ্টায় অ্যামাজন এস 3 সার্ভারে আপলোড করতে ব্যবহৃত হয়। আপনি এটি ব্যবহার করার আগে, নিশ্চিত করুন যে fswebcam ইতিমধ্যে আপনার রাস্পবেরি পাইতে ইনস্টল করা আছে:

sudo apt-get update && sudo apt-get fswebcam ইনস্টল করুন

আপনি যদি ছবি আপলোড করতে চান, তাহলে ধাপগুলি অনুসরণ করে আপনার AWS কনফিগার করুন। প্রথমে, এই কমান্ডগুলি ব্যবহার করে আপনার রাস্পবেরি পাইতে AWS SDK এবং AWS CLI ইনস্টল করুন:

সুডো পিপ বোটো 3 ইনস্টল করুন

sudo pip awscli ইনস্টল করুন

এবং তারপর, AWS CLI চালান:

sudo aws কনফিগার

আপনার AWS অ্যাক্সেস কী আইডি, AWS সিক্রেট অ্যাক্সেস আইডি এবং ডিফল্ট অঞ্চলের নাম কনফিগার করুন।

আপনি যদি আপনার ছবি আপলোড করতে পছন্দ না করেন, তাহলে আপনি এডব্লিউএস কনফিগারেশন ধাপগুলি এড়িয়ে যেতে পারেন এবং photo.py এ আপলোড করার বিষয়ে কোডগুলি মন্তব্য করতে পারেন। প্রতিবার রাস্পবেরি পাই বুট করার পরে এই প্রোগ্রামটি চালানোর জন্য, আপনি /etc/init.d এ একটি ফাইলের নাম ছবি তৈরি করতে পারেন এবং এতে নিম্নলিখিত কোডটি লিখতে পারেন।

#!/বিন/ব্যাশ

# /etc/init.d/photo # 0 0 6 &;; stop) echo "ছবি তোলা বন্ধ করুন" হত্যা করুন $ (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/photo শুরু

যদি কোন সমস্যা না হয়, এটি বন্ধ করুন এবং এটি স্টার্টআপ অ্যাপ্লিকেশনে যুক্ত করুন

sudo /etc/init.d/photo স্টপ

sudo update-rc.d ছবির ডিফল্ট

দ্রষ্টব্য: যদি আপনি রাস্পবেরি পাই বুট করার পরে গেটওয়ে স্টার্টআপ করতে চান, তাহলে /etc/rc.local- এ Seeed Wiki- এ গেটওয়ে স্টার্টিং কোড যোগ করুন, এটি দেখতে এরকম দেখা যাক:

#!/বিন/শ -ই

# # rc.local # # এই স্ক্রিপ্টটি প্রতিটি মাল্টিউজার রানলেভেলের শেষে কার্যকর করা হয়। # নিশ্চিত করুন যে স্ক্রিপ্ট সাফল্যে "0 থেকে প্রস্থান করবে" বা অন্য কোন # ত্রুটির মান। # # এই স্ক্রিপ্টটি সক্ষম বা নিষ্ক্রিয় করার জন্য শুধু এক্সিকিউশন # বিট পরিবর্তন করুন। # # ডিফল্টরূপে এই স্ক্রিপ্ট কিছুই করে না। # আইপি ঠিকানা _IP = $ (hostname -I) || প্রিন্ট করুন সত্য যদি ["$ _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. পাইথন 3 ইনস্টল করুন

sudo yum -y ইপেল -রিলিজ ইনস্টল করুন

sudo yum -y python36 ইনস্টল করুন

পদক্ষেপ 2. পাইথন পিপ এবং ভার্চুয়াল পরিবেশ ইনস্টল করুন

wget

sudo python36 get-pip.py sudo pip install virtualenv

সেটপ 3. গিটহাব থেকে আমাদের ওয়েবসাইট ক্লোন করুন

sudo yum -y git ইনস্টল করুন

গিট ক্লোন

ধাপ 4. ভার্চুয়াল পরিবেশ তৈরি এবং সক্রিয় করুন

virtualenv -p python36 iotea -hb

cd iotea-hb উৎস বিন/সক্রিয়

ধাপ 5. নির্ভরশীল লাইব্রেরি ইনস্টল করুন

pip install pymysql

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

ধাপ 6. ডাটাবেস তৈরি করুন

sudo yum -y mariadb mariabd -server ইনস্টল করুন

sudo systemctl mariadb সক্ষম করুন sudo systemctl শুরু mariadb mysql -uroot -p

এবং তারপর একটি টেবিল তৈরি করতে iotea_hb.sql ব্যবহার করুন।

ধাপ 7. db.ini তৈরি করুন এবং এতে এই কোডগুলি লিখুন

[ডিবি]

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 (debug = True, port = 6000) app.run (debug = True, port = 8080)

# টার্মিনালে

pip install gunicorn gunicorn -w 5 -b 0.0.0.0:8080 app: app

এখন আপনার ওয়েব ব্রাউজারে 127.0.0.1:8080 দেখুন, আপনি ওয়েবসাইটটি দেখতে পারেন, কিন্তু রিয়েল-টাইম ডেটা প্রদর্শিত হয় না।

ধাপ 9. লরিওট ডেটা পান

অন্য টার্মিনাল খুলুন, ভার্চুয়াল পরিবেশ পুনরায় প্রবেশ করুন এবং লরিওট অ্যাপ শুরু করুন:

cd iotea-hb

সোর্স বিন/অ্যাক্টিভেট গানিকর্ন লরিওট: অ্যাপ

কিছুক্ষণ অপেক্ষা করুন, আপনি ওয়েবসাইটে ডেটা প্রদর্শিত দেখতে পাবেন, অথবা আপনি loriot.py এ wss পরিবর্তন করতে পারেন:

# loriot.py এ

#ws = create_connection ("wss: //cn1.loriot.io/app? টোকেন = vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w ==")

ws = create_connection ()

ধাপ 5: অপারেশন

আপনি রিয়েল-টাইম ডেটা দেখতে আমাদের ওয়েবসাইট ভিজিট করতে পারেন:

  • ইয়ানে
  • বিক্ষোভের জন্য

প্রস্তাবিত: