সুচিপত্র:

সংযুক্ত লেটারবক্স সৌর চালিত: 12 টি ধাপ (ছবি সহ)
সংযুক্ত লেটারবক্স সৌর চালিত: 12 টি ধাপ (ছবি সহ)

ভিডিও: সংযুক্ত লেটারবক্স সৌর চালিত: 12 টি ধাপ (ছবি সহ)

ভিডিও: সংযুক্ত লেটারবক্স সৌর চালিত: 12 টি ধাপ (ছবি সহ)
ভিডিও: Samsung Q60A vs Samsung Q60T TV Comparison 2024, জুলাই
Anonim
সংযুক্ত লেটারবক্স সৌর চালিত
সংযুক্ত লেটারবক্স সৌর চালিত
সংযুক্ত লেটারবক্স সৌর চালিত
সংযুক্ত লেটারবক্স সৌর চালিত

আমার দ্বিতীয় ইবলের জন্য, আমি আমার সংযুক্ত লেটারবক্স সম্পর্কে আমার কাজগুলি বর্ণনা করব।

এই নির্দেশযোগ্য (+ আরও অনেকগুলি) পড়ার পরে, এবং যেহেতু আমার লেটারবক্সটি আমার বাড়ির কাছে নেই, তাই আমি আমার লেটারবক্সকে আমার ডোমোটিকজ সার্ভারে সংযুক্ত করতে ওপেন গ্রিন এনার্জির কাজ সম্পর্কে অনুপ্রাণিত করতে চেয়েছিলাম।

লক্ষ্য

  • চিঠি আসার সময় টেলিগ্রামের পরামর্শ নিন;
  • একটি পার্সেল আসার সময় টেলিগ্রামের পরামর্শ নিন;
  • অক্ষর / পার্সেলগুলি তুলে নেওয়া হয়েছে কিনা তা পরীক্ষা করুন।

আমার প্রধান সীমাবদ্ধতা

মেইলবক্সটি বাড়ি থেকে অপেক্ষাকৃত দূরে, এবং যেকোনো কিছুতে বিদ্যুৎ সরবরাহ করার জন্য এটিতে একটি বৈদ্যুতিক তার টানানো অসম্ভব ছিল।

আমাকে আরেকটি সমাধান খুঁজে বের করতে হয়েছিল: সৌর শক্তি একটি ভাল সমাধান ছিল!

বিওএম

  • রাস্পবেরি পাই (এমকিউটিটি এবং ডোমোটিকজ অংশগুলি হোস্ট করার জন্য - এখানে বর্ণনা করা হয়নি)
  • একটি টেলিগ্রাম বট অ্যাকাউন্ট
  • ললিন ডি 1 মিনি (বা ওয়েমোস …)
  • প্লাগ-ইন স্ক্রু টার্মিনাল ব্লক সংযোগকারী
  • TP4056 লিথিয়াম ব্যাটারি চার্জিং বোর্ড
  • 6V 2W ফটোভোলটাইক সৌর প্যানেল
  • লি-আয়ন 18650 ব্যাটারি
  • লি-আয়ন ব্যাটারি ধারক
  • PCB DIY সোল্ডারিং কপার প্রোটোটাইপ প্রিন্টেড সার্কিট বোর্ড
  • এনালগ Servo SG90
  • 3 রিড সুইচ (একটি চিঠির জন্য, একটি পার্সেলের জন্য এবং একটি চেকআউটের জন্য)
  • চুম্বক
  • কিছু তার
  • কাঠের টুকরো: যেহেতু কোনো থ্রিডি প্রিন্টার পাইনি, আমি বুঝতে পারলাম আমার নিজের ছোট্ট ঘরটি কাঠের সাথে ইলেকট্রনিক্স যন্ত্রাংশ রিসিভ করতে…
  • অতিরিক্ত ইথারনেট কেবল
  • RJ45 ইথারনেট সংযোগকারী ব্রেকআউট বোর্ড

  • জে-বি ওয়েল্ড
  • কিছু বল বিয়ারিং
  • স্ক্রু, বাদাম, ওয়াশার

ধাপ 1: গ্লোবাল স্কিম

গ্লোবাল স্কিম
গ্লোবাল স্কিম
গ্লোবাল স্কিম
গ্লোবাল স্কিম

সুন্দর আঁকা সবসময় দীর্ঘ বক্তৃতা চেয়ে ভাল;-)

কিন্তু MQTT, Domoticz এবং Telegram সম্পর্কে কয়েকটি ব্যাখ্যা সবসময় স্বাগত!

MQTT (মেসেজ কিউইং টেলিমেট্রি ট্রান্সপোর্ট), একটি মেসেজিং প্রোটোকল, যা IoT (জিনিসপত্রের ইন্টারনেট) বিশ্বে ডিভাইস এবং অন্যান্য সিস্টেমের মধ্যে ডাটা পাঠাতে ব্যবহৃত হয়।

খুব বেশি বিবরণে না গিয়ে, এর ক্রিয়াকলাপ ক্লায়েন্টদের একটি সার্ভারের সাথে সংযুক্ত হওয়ার নীতির উপর ভিত্তি করে। এমকিউটিটিতে ক্লায়েন্টদের সাবস্ক্রাইবার বা প্রকাশক বলা হয় এবং সার্ভারকে ব্রোকার বলা হয়।

এই নির্দেশনায়, আমি কেবলমাত্র একজন প্রকাশক ব্যবহার করি, ললিন আমার লেটারবক্সে যুক্ত: যখন লেটারবক্সে ইনস্টল করা রিড কন্টাক্টের মাধ্যমে চিঠি বা পার্সেল সনাক্ত করা হয় (শেম্যাটিক ধাপ 1), এটি ব্রোকারকে ওয়াইফাইয়ের মাধ্যমে MQTT বার্তা পাঠায় (ধাপ 2)।

ব্রোকার অংশটি মস্কিটো দ্বারা সম্পন্ন করা হয়, যা রাস্পবেরি পাই (ধাপ 3) তে ইনস্টল করা আছে।

Domoticz সম্পর্কে:

সোর্স পেজে বর্ণিত হিসাবে, ডোমোটিকজ একটি "হোম অটোমেশন সিস্টেম", যা আপনাকে বিভিন্ন ডিভাইস নিয়ন্ত্রণ করতে এবং বিভিন্ন প্রোটোকল থেকে ইনপুট গ্রহণ করতে দেয়: এমকিউটিটি একটি সমর্থিত প্রোটোকল …

যত তাড়াতাড়ি তার কাছে তথ্য পৌঁছায় (ধাপ 4), আপনি ইভেন্টগুলি সংজ্ঞায়িত করতে পারেন: লেটারবক্সের ক্ষেত্রে, আমি একটি টেলিগ্রাম বিজ্ঞপ্তি (ধাপ 5) পাঠাতে বেছে নিয়েছি।

অবশেষে, টেলিগ্রাম ক্লায়েন্ট আমার ফোনে কনফিগার করা হয়েছে (এবং আমার স্ত্রীরও! - ধাপ 6): শেষ লক্ষ্যে পৌঁছে গেছে …

ধাপ 2: শেমেটিক / ওয়্যারিং

শেমেটিক / ওয়্যারিং
শেমেটিক / ওয়্যারিং
শেমেটিক / ওয়্যারিং
শেমেটিক / ওয়্যারিং
শেমেটিক / ওয়্যারিং
শেমেটিক / ওয়্যারিং
শেমেটিক / ওয়্যারিং
শেমেটিক / ওয়্যারিং

এনালগ সম্পর্কে একটি শব্দ পড়ে:

প্রথমত, আমি কিছু গবেষণার পর লক্ষ্য করেছি যে ললিন মিনি D1 (পুরাতন Wemos হিসাবে), পিন A0 এর জন্য ভোল্টেজ ডিভাইডারে নির্মিত হয়েছে (R1 এর জন্য 220KΩ এবং R2 এর জন্য 100KΩ বিবেচনা করে - সংযুক্ত ডেটশীটের ডানদিকে দেখুন), 3.2 ভোল্টের অনুমতি দেয় সর্বাধিক এনালগ ইনপুট ভোল্টেজ হিসাবে।

ব্যাটারি থেকে সর্বাধিক আউটপুট ভোল্টেজ 4, 2v (চার্জিং বোর্ড দ্বারা সীমাবদ্ধ) বিবেচনা করা, এবং তাত্ত্বিকভাবে, সর্বাধিক ইনপুট ভোল্টেজ পরিসীমা বাড়ানোর জন্য আপনাকে কেবল একটি বাহ্যিক রেসিটর (R1 সহ সিরিজে) যুক্ত করতে হবে। তারপর, যদি আপনি R1 এর সাথে সিরিজে 100K যোগ করেন, তাহলে আপনার এই ফলাফল হবে:

ভিন * আর 1/(আর 1+আর 2) = ভাউট

4, 2 * 320K/(320K+100K) = 3, 2

আমার সার্কিটে, আমি এর মান সামঞ্জস্য করতে সক্ষম হতে বেছে নিয়েছি, এজন্যই আমি আমার সার্কিটে একটি অ্যাডজাস্টেবল রোধক ব্যবহার করতে পছন্দ করেছি: হয়তো এটি আপনার জন্য অকেজো হবে, কিন্তু আমার পরিস্থিতিতে, আমি এর মান প্রায় 10KΩ এ সেট করেছি ডোমোটিকসে একটি সুসংগত মান …

লক্ষ্য করুন যে A0 পিনের 10 বিট রেজোলিউশন রয়েছে: এর মানে হল যে আপনার স্কেচে, আপনার এনালগ রিডিং 0 থেকে 1024 এর মধ্যে একটি মান ফেরত দেবে।

আমি Domoticz- এ একটি শতাংশ মান পাঠাতে চাই, আমাকে 10, 24 দ্বারা এনালগ পড়ার ফলাফল ভাগ করতে হবে।

ধাপ 3: পাওয়ার ম্যানেজমেন্ট

পাওয়ার ম্যানেজমেন্ট
পাওয়ার ম্যানেজমেন্ট
পাওয়ার ম্যানেজমেন্ট
পাওয়ার ম্যানেজমেন্ট

অবশ্যই, আমি চাই চিঠির বাক্সটি স্বায়ত্তশাসিত হোক। আমার লক্ষ্যে পৌঁছানোর জন্য, আমি এই উপাদানগুলি ব্যবহার করি:

  • 4000mAh এর Li-Ion 18650 ব্যাটারি;
  • একটি সৌর প্যানেল যা 6V / 2W সরবরাহ করতে পারে;
  • একটি TP4056 লিথিয়াম ব্যাটারি চার্জিং বোর্ড।

সবচেয়ে উপযুক্ত সৌর প্যানেল চয়ন করার জন্য, আমি এই উদাহরণ সহ কিছু উদাহরণ দেখেছি: এই উদাহরণে, একটি 5.5V / 0.66W সৌর প্যানেল ব্যবহার করা হয়, এবং সম্ভবত এই উদ্দেশ্যে যথেষ্ট। আমার ক্ষেত্রে, এবং যেহেতু ESP8266 দিনের বেলায় চালু থাকতে হবে এবং ঘরের মুখকে সূর্যের দিকে রাখতে একটি সার্ভো মোটর চালাতে সক্ষম হতে হবে, আমি আরো শক্তিশালী সৌর প্যানেল মডেল (6V / 2W) বেছে নিয়েছি - এটি আমাকে অনুমতি দেয় অন্ধকার শীতের সময় এবং মেঘলা দিনের প্রত্যাশা করা;-)

এছাড়াও, এবং সর্বাধিক শক্তি ব্যয় কমানোর জন্য, আমি নিম্নলিখিত পরিস্থিতি নির্বাচন করেছি:

  • পোষ্টম্যান শুধুমাত্র সকাল and টা থেকে রাত 8 টার মধ্যে অতীত জেনে ইএসপি বাকি রাত গভীর ঘুমে রাখা হয়;
  • ফ্যাক্টরটি শনিবার দুপুর থেকে সোমবার সকালের মধ্যে অতিক্রম করে না: এই সময়ের মধ্যে ইএসপি ডিপস্লিপ মোডেও রাখা হয়।
  • সকাল 7 টা থেকে রাত 8 টার মধ্যে, এবং বিদ্যুৎ খরচ কমানোর জন্য, আমি কেবল ESP- এর নেটওয়ার্ক ইন্টারফেস নিষ্ক্রিয় করি: নেটওয়ার্ক কেবল একটি পার্সেল বা চিঠির আগমনে পুনরায় চালু হয়, তথ্য পাঠানোর জন্য যথেষ্ট সময় Domoticz আমাকে অবিলম্বে সতর্ক করার দরকার নেই এবং নেটওয়ার্ক ইন্টারফেস পুনরায় চালু করার জন্য প্রয়োজনীয় কিছু অতিরিক্ত সেকেন্ড ক্ষতিকারক নয়!

Lolin- এর জন্য ব্যবহার করা বিভিন্ন মোডে ব্যবহার সম্পর্কে কিছু মূল্য - ডেটশীট দেখুন, p18:

  • স্বাভাবিক মোডে (আরএফ ওয়ার্কিং সহ), বিদ্যুৎ খরচ 170mA পর্যন্ত বাড়তে পারে! যেহেতু আমার লেটারবক্স আমার বাড়ি থেকে প্রায় 50 মিটার (এবং ওয়াইফাই সিগন্যালের সীমায় …) আমি মনে করি সংযোগ বজায় রাখার জন্য ব্যবহৃত শক্তি তার সর্বোচ্চ …
  • মডেম-স্লিপে, বিদ্যুৎ খরচ 15mA এ নেমে আসে। কিন্তু আপনি যেমন ডেটশীটে দেখতে পাচ্ছেন, এটি মডেমকে পুরোপুরি বন্ধ করেনি, কারণ ESP "কোন ডেটা ট্রান্সমিশন ছাড়াই একটি Wi-Fi সংযোগ বজায় রাখছে"।
  • গভীর ঘুমে, শক্তি 20uA এ নেমে যায়।

ওয়াইফাই অপ্রয়োজনীয়ভাবে সক্রিয় থাকে না তা নিশ্চিত করার জন্য, আমি নিম্নলিখিত কমান্ডগুলি দিয়ে এটি অক্ষম করতে পছন্দ করি। অনেক বিলম্ব () কল নোট করুন … তাদের ছাড়া, ESP ক্র্যাশ:

WiFi.disconnect ();

বিলম্ব (1000); WiFi.mode (WIFI_OFF); বিলম্ব (1000); WiFi.forceSleepBegin (); বিলম্ব (1);

সামগ্রিকভাবে, কয়েক দিনের অপারেশনের পরে, এটি কাজ করে এবং বিশেষত সঠিকভাবে লোড করা বলে মনে হচ্ছে:

  • এটি আমাকে প্রতি ঘণ্টায় সার্ভোমোটর চালানোর অনুমতি দেয় যাতে সূর্যের দিকে বাড়ি অবস্থান করতে পারে;
  • ব্যাটারির চার্জ লেভেল ডোমোটিকসে পাঠানোর জন্য আমি প্রতি ঘণ্টায় নিজেকে নেটওয়ার্ক ইন্টারফেস পুনরায় সক্রিয় করার অনুমতি দিতে পারি।

ধাপ 4: চুম্বক এবং রিড পরিচিতি ইনস্টল করা

চুম্বক এবং রিড পরিচিতি ইনস্টল করা
চুম্বক এবং রিড পরিচিতি ইনস্টল করা
চুম্বক এবং রিড পরিচিতি ইনস্টল করা
চুম্বক এবং রিড পরিচিতি ইনস্টল করা
চুম্বক এবং রিড পরিচিতি ইনস্টল করা
চুম্বক এবং রিড পরিচিতি ইনস্টল করা

যথারীতি, আমি আমার প্রক্সক্সনকে কাঠের টুকরোতে রিডের জায়গাটি আকৃতিতে ব্যবহার করেছি।

তার গর্তে রিডের যোগাযোগ ঠিক করতে, আমি J-B ওয়েল্ডের কিছুটা ব্যবহার করেছি।

পার্সেল এবং আউটপুট জন্য, টেপ একটি ছোট টুকরা, একটু হ্যাকসো, এবং লক্ষ্য পৌঁছেছে!

আমার লেটারবক্সের সুবিধা হল এটি ধাতু, যা চুম্বকের অবস্থানকে সহজতর করে যাতে এটি রিডস পরিচিতিগুলির সাথে সঠিকভাবে যোগাযোগ করে।

ধাপ 5: আমার লিটল হাউসের সাথে সংযোগ করুন

মাই লিটল হাউজের সাথে সংযোগ স্থাপন করুন
মাই লিটল হাউজের সাথে সংযোগ স্থাপন করুন
মাই লিটল হাউজের সাথে সংযোগ স্থাপন করুন
মাই লিটল হাউজের সাথে সংযোগ স্থাপন করুন

লেটারবক্স থেকে বাড়িতে রিড কন্টাক্টে যাওয়া ক্যাবলটি সহজেই সংযোগ এবং সংযোগ বিচ্ছিন্ন করতে সক্ষম হওয়ার জন্য, আমি একটি ইথারনেট সংযোগকারী ব্যবহার করা বেছে নিয়েছি।

আপনি এই মডেলটি ব্যবহার করতে পারেন অথবা আমার মতই, আমার ড্রয়ারে ঝুলন্ত একটি পুরানো আরডুইনো ইথারনেট ieldাল ব্যবহার করুন: তিনি কষ্ট পাননি, তিনি করাতের সামনে সাহসী ছিলেন, তার মৃত্যু দ্রুত ছিল

এই Arduino ইথারনেট ieldাল সম্পর্কে শুধু একটি শব্দ: 8 টি পৃথক ড্রাইভার থাকার আশা করবেন না … ieldালের ভিতরে 2 টি তারের জোড়া লাগানো হয়েছে … এটি আমাকে অনেক দিন ধরে পাগল করে তুলেছিল !!!

ধাপ 6: ঘরে…

বাড়িতে …
বাড়িতে …
বাড়িতে …
বাড়িতে …

ব্যাটারি হোল্ডার ঠিক করতে, সার্ভো সেট করা এবং RJ45 ফেমাল কানেক্টর ঠিক করার জন্য যথেষ্ট জায়গা।

ধাপ 7: এটা চালু করা যাক …

এটা চালু করা যাক …
এটা চালু করা যাক …
এটা চালু করা যাক …
এটা চালু করা যাক …
এটা চালু করা যাক …
এটা চালু করা যাক …
এটা চালু করা যাক …
এটা চালু করা যাক …

উদ্দেশ্য সূর্যের মুখোমুখি রাখা …

পরিবর্তনযোগ্য হওয়ার ক্ষমতা দিতে, আমি কিছু বাদাম এবং দুটি বল বিয়ারিং সহ একটি অক্ষ হিসাবে একটি দীর্ঘ স্ক্রু ব্যবহার করেছি …

এখন পর্যন্ত, আমি SG90 servo ব্যবহার করেছি (টর্ক: 1.8kg/সেমি 4.8v)।

ঘর ঘুরানোর জন্য (এবং এর কয়েক গ্রাম) যথেষ্ট। অন্যদিকে, আমি নিশ্চিত নই যে এর প্লাস্টিকের গিয়ারগুলি দীর্ঘ সময় ধরে আমার অঞ্চলে বাতাসের ঘন ঘন দমকা প্রতিরোধ করে।

আমি আরেকটি (MG995 টর্ক:.4.k কেজি/সেমি 8.8 ভি) অর্ডার করেছি, খুব ব্যয়বহুল নয়, কিন্তু ধাতব গিয়ার দিয়ে।

আমি যখন এটি পেয়েছি তখন এটি পরবর্তী কাজ হবে: আমি তার আগমনের বিষয়ে আমাকে অবহিত করতে আমার সংযুক্ত লেটারবক্সের উপর নির্ভর করি!

ধাপ 8: কিছু পরীক্ষা

Image
Image

কয়েকটি নোট:

এই স্কেচটি আমাকে দিনের বেলা ঘন্টার পরিবর্তনের অনুকরণ করার জন্য আমাকে সার্ভোর অবস্থান নিয়ন্ত্রণ করতে দেয়।

  • SG90 এর সাথে: কোন অতিরিক্ত প্রয়োজন নেই, এটি ব্যাটারি নিয়ামক থেকে আসা আউট ভোল্টেজের সাথে কাজ করতে পারে।
  • কিন্তু, এমজি 995 এর সাথে:

    • ঘূর্ণনের মোট কোণ একই নয় (বিস্তৃত): এটি কমানোর জন্য আমাকে একটি অতিরিক্ত ফাংশন ব্যবহার করতে হয়েছিল (Servo_Delta ())।
    • সার্ভিসে পর্যাপ্ত ভোল্টেজ প্রদানের জন্য একটি ডিসি/ডিসি স্টেপ আপ প্রয়োজন… অব্যাহত রাখতে…

/*

- SG90 এর সাথে পরীক্ষা: কোন অতিরিক্ত প্রয়োজন নেই, এটি ব্যাটারি কন্ট্রোলার থেকে আসা আউট ভোল্টেজের সাথে কাজ করতে পারে - MG 995 এর জন্য: - Servo_Delta () ফাংশন ব্যবহার করুন … - একটি DC/DC প্রয়োজন অব্যাহত থাকুন: */ #অন্তর্ভুক্ত বুল লগ = সত্য; Servo myservo; #PIN_SERVO D2 // এর জন্য servo পজিশন নির্ধারণ করুন: 7h, 8h, 9h, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h, 19h, 20h, 21h // int Arr_Servo_Pos = {177, 173, 163, 148, 133, 118, 100, 80, 61, 41, 28, 15, 2, 2, 2}; int Arr_Servo_Pos = {180, 175, 165, 150, 135, 120, 102, 82, 63, 43, 30, 15, 0, 0, 0}; পুরাতন; int pos; int i; অকার্যকর সেটআপ () {Serial.begin (115200); } void loop () {for (i = 7; i <= 22; i ++) {old = i; if (i == 7) {if (Logs) Serial.println ("Positionne le servo pour 7 Heure"); myservo.attach (PIN_SERVO); (int index = Arr_Servo_Pos [(sizeof (Arr_Servo_Pos) / sizeof (Arr_Servo_Pos [0])) -1]; সূচক); যদি (লগ) Serial.print ("অ্যাডজাস্টেড মান:"); যদি (লগ) Serial.println (Servo_Delta (সূচী)); বিলম্ব (200); //myservo.write(Servo_Delta(index)); myservo.write (সূচক); } বিলম্ব (15); myservo.write (Arr_Servo_Pos [i-7]); // datach myservo.detach () যখন ঝাঁকুনি আন্দোলন এড়াতে শেষ মান আবার লিখুন; }}} বিলম্ব (2000); }} int Servo_Delta (int মান) {int Temp_val; Temp_val = (মান*0.80) +9; Temp_val ফিরে; }

ধাপ 9: লিটল হাউস

লিটল হাউস
লিটল হাউস
লিটল হাউস
লিটল হাউস
লিটল হাউস
লিটল হাউস

আগেই বলেছি, আমি কোনো থ্রিডি প্রিন্টার পাইনি। তাই আমি পুরাতন সবজি ক্রেট ব্যবহার করার সিদ্ধান্ত নিয়েছি …

সম্ভবত এটি দীর্ঘ আবহাওয়া স্থায়ী হবে না, কিন্তু ততক্ষণে, আমার কাছে অন্য সমাধান (বা একটি 3D প্রিন্টারের মালিক) বিবেচনা করার সময় হবে: কাঠকে রক্ষা করার জন্য, আমি সর্বত্র প্রচুর বার্নিশ যোগ করেছি …

আপনি "সুন্দর পর্দা" দেখতে পারেন … আপনি যখন আপনার স্ত্রীকে কাজটি করতে বলবেন তখনই এমনটি ঘটে ^^

ধাপ 10: স্কেচ

চলছে … কিন্তু স্থিতিশীল বলে মনে হচ্ছে

আমি এখনও কোডে কাজ করছি: যেহেতু এটি একটি নির্দিষ্ট সংস্করণ নয়, আপনার মন্তব্য / পরামর্শ স্বাগত;-)

কিছু মন্তব্য:

  • এগুলি কোডে অনেক বিলম্ব (): এটি ললিনের অনেক ক্র্যাশ এড়ানোর জন্য, বিশেষত একটি শুরু নেটওয়ার্ক বন্ধ করার সময় …
  • আমি সূর্য আজিমুথ পেতে একটি সহজ এবং নির্ভরযোগ্য উপায় খুঁজে পাইনি: সেজন্য আমি যা দেখেছি তার পরিমানের মূল্য নির্ধারণ করেছি … আমার কাছে এটি পেতে একটি ভাল (এবং সহজ) উপায় আছে, আমি আগ্রহী! হয়তো এখানে অধ্যয়নের জন্য একটি ট্র্যাক, এমনকি যদি আমি একটি অনলাইন এপিআই পছন্দ করি তবে আমাকে তারিখ, ঘন্টা এবং ভৌগোলিক অবস্থান অনুসারে সরাসরি আজিমুথ দেয় …
  • স্লিপ টেকনিক সম্পর্কে: যেহেতু লোলিন একটি 32-বিট টেনসিলিকা প্রসেসর, 32-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যার জন্য এর সর্বোচ্চ মান 4294967295 … তারপর, এটি গভীর ঘুমের ব্যবধানে সর্বোচ্চ 71 মিনিট সময় দেয়। এজন্য আমি প্রায় minutes০ মিনিটের জন্য অনেকবার ঘুমিয়েছি।

সম্পাদনা - 2018-10-08:

আমি আবিষ্কার করেছি যে সার্ভোতে প্রচুর ঝাঁকুনি আন্দোলন রয়েছে, বিশেষ করে সংযুক্তির আগে (), বিচ্ছিন্ন () এবং প্রতিবার লোলিন গভীর ঘুম থেকে জেগে ওঠার আগে ()।

একটু বেশি ডেটশীট অধ্যয়ন করার সময়, আমি দুটি জিনিস উপলব্ধি করেছি:

  • ললিন ডেটশীটে, D4 আউটপুট ইতিমধ্যেই BUILTIN_LED- এর সাথে সংযুক্ত …
  • ESP8266ex ডেটশীটে, আমরা শিখি D4 আউটপুট UART 1/U 1 TXD (ইউনিভার্সাল অ্যাসিঙ্ক্রোনাস রিসিভার ট্রান্সমিটার) হিসাবে ব্যবহৃত হয়। এটিও নির্দিষ্ট করা হয়েছে যে এই UART1 মুদ্রণ লগের জন্য ব্যবহৃত হয়।

এই তথ্যগুলি পড়ে, আমি বুঝতে পেরেছিলাম যে D4 আউটপুট একটি ভাল ধারণা ছিল না, বিশেষ করে একটি সার্ভো মোটর পরিচালনা করার জন্য!

সুতরাং, এখন servomotor নিয়ন্ত্রণ করতে ব্যবহৃত আউটপুট হল D2, নীচের কোডটি সেই অনুযায়ী আপডেট করা হয়েছে।

//****************************************

তারিখ ক্রিয়েশন: 08/তারিখ মিস ইন প্রোড: 08/ভার্সন: 0.9.4 ভার্সন আইডিই আরডুইনো: 1.8.6 আপলোড গতি: 921600 টাইপ ডি কার্ট ড্যানস L'IDE: "LOLIN (WEMOS) D1 R2 & mini" Carte physique employée: LOLIN (WEMOS) D1 R2 & mini (https://www.amazon.fr/gp/product/B01ELFAF1S/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1) পিন ফাংশন ESP-8266 পিন ইউটিলাইজেশন লোকেল ------- -------------------------------------------------- ------------------------------------ TX TXD TXD RX RXD RXD A0 এনালগ ইনপুট, সর্বোচ্চ 3.3V ইনপুট A0 টেনশন d'alimentaion D0 IO GPIO16 Connecté à RST (leালা le deep.sleep) D1 IO, SCL GPIO5 D2 IO, SDA GPIO4 Servo moteur D3 IO, 10k Pull-up GPIO0 D4 IO, 10k pull-up, BUILTIN_LED IO2 GPIO2, SCK GPIO14 রিড rel6ve D6 IO, MISO GPIO12 Reed lettre D7 IO, MOSI GPIO13 Reed colis D8 IO, 10k pull-down, SS GPIO15 G Ground GND 5V 5V-3V3 3.3V 3.3V RST Reset RST Connecté à D0 (leালাও গভীর ঘুমান ********************************************; // wifi const char* ssid = "LOL"; const char* password = "LOL"; IPAddress ip (192, 168, 000, 000); IPAddress dns (192, 168, 000, 000); IPAddress গেটওয়ে (192, 168, 000, 000); IPAddress সাবনেট (255, 255, 000, 000); ওয়াইফাই ক্লায়েন্ট ক্লায়েন্ট; // সার্ভো #অন্তর্ভুক্ত #সংজ্ঞায়িত করুন PIN_SERVO D2 Servo myservo; // জন্য সার্ভো অবস্থান: 7h, 8h, 9h, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h, 19h, 20h, 21h int Arr_Servo_Pos = {179, 175, 165, 150, 135, 120, 102, 82, 63, 43, 30, 15, 1, 1, 1}; // রিডস #ডিফাইন PIN_SWITCH_OUT D5 বাইট Old_Switch_State_OUT; বাইট সুইচ_স্টেট_আউট; #PIN_SWITCH_IN_PARCEL D6 বাইট ওল্ড_সুইচ_স্টেট_ইন_পারসেল নির্ধারণ করুন; বাইট সুইচ_স্টেট_ইন_পারসেল; #PIN_SWITCH_IN_LETTER D7 বাইট পুরাতন_সুইচ_স্টেট_ইন_লেটার নির্ধারণ করুন; বাইট সুইচ_স্টেট_ইন_লেটার; স্বাক্ষরবিহীন দীর্ঘ সুইচ প্রেসটাইম; const স্বাক্ষরবিহীন দীর্ঘ DEBOUCE_TIME = 200; // Analog #define PIN_ANALOG A0 // MQTT #inc const const* MQTT_Server_IP = "আপনার MQTT ঠিকানা"; const int MQTT_Server_Port =; int IDX_Letter_Box =; int IDX_Parcel_Box =; int IDX_Letter_Box_Battery =; PubSubClient ClientMQTT (ক্লায়েন্ট); char MQTT_Message_Buff [70]; স্ট্রিং MQTT_Pub_String; // টেনশন ফ্লোট ভিসিসি; // NTP #অন্তর্ভুক্ত সময়_ tnow; int Old_Time = 0; int int_Heures = 0; int int_Minutes = 0; int Int_Sleep_Duration = 63; অকার্যকর সেটআপ () {Serial.begin (115200); নেটওয়ার্ক (সত্য); pinMode (PIN_SWITCH_OUT, INPUT_PULLUP); Old_Switch_State_OUT = digitalRead (PIN_SWITCH_OUT); pinMode (PIN_SWITCH_IN_LETTER, INPUT_PULLUP); Old_Switch_State_IN_LETTER = digitalRead (PIN_SWITCH_IN_LETTER); pinMode (PIN_SWITCH_IN_PARCEL, INPUT_PULLUP); Old_Switch_State_IN_PARCEL = digitalRead (PIN_SWITCH_IN_PARCEL); SendBatteryLevel (); নেটওয়ার্ক (মিথ্যা); // NTP সেট tnow = time (nullptr); Int_Heures = String (ctime (& tnow))। Substring (11, 13).toInt (); Int_Minutes = String (ctime (& tnow))। Substring (14, 16).toInt (); // রাতের জন্য গভীর ঘুম যদি (! ((Int_Heures> = 7) && (Int_Heures <= 20))) {Serial.print ("Sleep pour la nuit ("); Serial.print (Int_Sleep_Duration - Int_Minutes); সিরিয়াল। println ("মিনিট)"); ঘুম (Int_Sleep_Duration - Int_Minutes); }} void loop () {// NTP set tnow = time (nullptr); Int_Heures = String (ctime (& tnow))। Substring (11, 13).toInt (); Int_Minutes = String (ctime (& tnow))। Substring (14, 16).toInt (); // সিরিয়াল.প্রিন্টলন (স্ট্রিং //Serial.println ("Heure:" + String (ctime (& tnow))। Substring (11, 13)); //Serial.println (স্ট্রিং (ctime (& tnow))। সাবস্ট্রিং (11, 13) // Servo management যদি (Old_Time! = Int_Heures) {Old_Time = Int_Heures; if (Int_Heures == 7) {if (Logs) Serial.println ("Positionne le servo pour 7 Heure"); myservo.attach (PIN_SERVO); (int index = Arr_Servo_Pos [(sizeof (Arr_Servo_Pos) / sizeof (Arr_Servo_Pos [0])) -1]; সূচক); বিলম্ব (200); myservo.write (সূচক); } বিলম্ব (15); myservo.write (Arr_Servo_Pos [Int_Heures-7]); // myservo.detach () বিচ্ছিন্ন করার সময় ঝাঁকুনি চলাচল এড়াতে শেষ মানটি আবার লিখুন; } নেটওয়ার্ক (সত্য); SendBatteryLevel (); নেটওয়ার্ক (মিথ্যা); }}} // 13 ঘণ্টার পর শনিবার যদি গভীর ঘুম হয় ((স্ট্রিং (ctime (& tnow)) "Sleep pour le samedi aprés midi ("); if (Logs) Serial.print (Int_Sleep_Duration - Int_Minutes); if (Logs) Serial.println ("minutes)"); ঘুম (Int_Sleep_Duration - Int_Minutes); } // রবিবার গভীর ঘুম যদি (স্ট্রিং (ctime (& tnow))। substring (0, 3) == "Sun") {if (Logs) Serial.print ("Sleep pour le dimanche ("); if (Logs) Serial.print (Int_Sleep_Duration - Int_Minutes); যদি (Logs) Serial.println ("মিনিট)"); ঘুম (Int_Sleep_Duration - Int_Minutes); } // রিডস ব্যবস্থাপনা if (Switch_State_OUT! = Old_Switch_State_OUT) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); যদি (Switch_State_OUT == HIGH) {Serial.println ("courrier relevé!"); নেটওয়ার্ক (সত্য); বিলম্ব (5000); MQTT_Pubilsh (IDX_Letter_Box, 0, "0"); বিলম্ব (5000); MQTT_Pubilsh (IDX_Parcel_Box, 0, "0"); বিলম্ব (5000); নেটওয়ার্ক (মিথ্যা); }} পুরাতন_সুইচ_স্টেট_আউটি = সুইচ_স্টেট_আউটি; } Switch_State_IN_LETTER = digitalRead (PIN_SWITCH_IN_LETTER); if (Switch_State_IN_LETTER! = Old_Switch_State_IN_LETTER) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); যদি (Switch_State_IN_LETTER == HIGH) {Serial.println ("courrier arrvé!"); নেটওয়ার্ক (সত্য); বিলম্ব (5000); MQTT_Pubilsh (IDX_Letter_Box, 1, "Courrier"); বিলম্ব (5000); নেটওয়ার্ক (মিথ্যা); }} Old_Switch_State_IN_LETTER = Switch_State_IN_LETTER; } Switch_State_IN_PARCEL = digitalRead (PIN_SWITCH_IN_PARCEL); if (Switch_State_IN_PARCEL! = Old_Switch_State_IN_PARCEL) {if (millis () - switchPressTime> = DEBOUCE_TIME) {switchPressTime = millis (); যদি (Switch_State_IN_PARCEL == HIGH) {Serial.println ("colis arrvé!"); নেটওয়ার্ক (সত্য); বিলম্ব (5000); MQTT_Pubilsh (IDX_Parcel_Box, 1, "Colis"); বিলম্ব (5000); নেটওয়ার্ক (মিথ্যা); }} Old_Switch_State_IN_PARCEL = Switch_State_IN_PARCEL; }} অকার্যকর SendBatteryLevel () {বিলম্ব (5000); vcc = analogRead (PIN_ANALOG) /10.24; যদি (লগ) Serial.println ("\ tTension relevée:" + স্ট্রিং (vcc, 0)); MQTT_Pubilsh (IDX_Letter_Box_Battery, 0, String (vcc, 0)); বিলম্ব (5000); } অকার্যকর ঘুম (int Min_Duration) {ESP.deepSleep (Min_Duration * 60e6); } অকার্যকর নেটওয়ার্ক (বুল আপডাউন) {যদি (আপডাউন) {সিরিয়াল.প্রিন্ট ("নেটওয়ার্ক শুরু"); WiFi.forceSleepWake (); বিলম্ব (1); // init WIFI WiFi.config (ip, dns, gateway, subnet); WiFi.begin (ssid, password); যখন (WiFi.status ()! = WL_CONNECTED) {বিলম্ব (500); সিরিয়াল.প্রিন্ট ("।"); } বিলম্ব (5000); Serial.println ("।"); Serial.print ("C tConnected - IP Address:"); Serial.println (WiFi.localIP ()); // init MQTT ClientMQTT.setServer (MQTT_Server_IP, MQTT_Server_Port); // Init NTP Serial.print ("T tTime Synch।"); configTime (0, 0," fr.pool.ntp.org "); setenv (" TZ "," CET-1CEST, M3.5.0, M10.5.0/3 ", 0); সময় (সময়) বিলম্ব (1000); WiFi.mode (WIFI_OFF); বিলম্ব (1000); WiFi.forceSleepBegin (); বিলম্ব (1);}} অকার্যকর সংযোগ () {যখন (! ClientMQTT.connected ()) {Serial.print (" MQTT সংযোগের চেষ্টা করুন … "); // সংযোগের চেষ্টা করুন যদি.print (ClientMQTT.state ()); Serial.println ("5 সেকেন্ডে আবার চেষ্টা করুন"); // বিলম্ব পুনরায় চেষ্টা করার আগে 5 সেকেন্ড অপেক্ষা করুন (5000);}}} অকার্যকর MQTT_Pubilsh (int Int_IDX, int N_Value, String S_Value) {যদি (! ClientMQTT.connected ()) পুনরায় সংযোগ (); (Int_IDX) + ", \" ব্যাটারি: ":" + স্ট্রিং (vcc, 0) + ", \" nvalue / ":" + N_Value + ", \" svalue ":" " + S_Value +" / "}"; MQTT_Pub_String.toCharArray (MQTT_Message_Buff, MQTT_Pub_String.length ()+1); ClientMQTT.publish ("domoticz/in", MQTT_Message_Buff); ClientMQTT.disconnect (); }

ধাপ 11: Domoticz

ডোমোটিকজ
ডোমোটিকজ
ডোমোটিকজ
ডোমোটিকজ
ডোমোটিকজ
ডোমোটিকজ

ডোমোটিকসে:

সাধারণ ব্যবহারের জন্য:

  • দুটি "ডামি (কিছুই করে না, ভার্চুয়াল সুইচের জন্য ব্যবহার করুন)" তৈরি করুন:

    1. চিঠির জন্য প্রথম…
    2. পার্সেলের জন্য দ্বিতীয়…
  • তাদের প্রত্যেকের জন্য, বিজ্ঞপ্তিগুলি ব্যক্তিগতকৃত করুন;
  • অবশ্যই, আপনাকে আপনার Tegegram টোকেন সেটআপ করতে হবে।

চ্ছিকভাবে:

আপনার ব্যাটারির চার্জ লেভেল তদারক করার জন্য আপনি একটি "ইউটিলিটি সেন্সর" যোগ করতে পারেন।

টিপস: এখানে আপনি অনেক ফ্রি কাস্টম আইকন পাবেন …

ধাপ 12: উপসংহার

উপসংহার
উপসংহার
উপসংহার
উপসংহার

আশা করি এই নির্দেশিকা আপনাকে সাহায্য করবে:

  • আপনার নিজের সংযুক্ত লেটারবক্স তৈরি করবেন কিনা;
  • অথবা শুধু আপনার প্রকল্পের জন্য কিছু ধারণা দিতে!

যদি আপনার উন্নতির জন্য ধারণা থাকে, আমি শুনছি!

PS: আমার ইংরেজির জন্য দু sorryখিত, গুগল অনুবাদ আমাকে অনেক সাহায্য করে কিন্তু সম্ভবত নিখুঁত নয়;-)

প্রস্তাবিত: