ዝርዝር ሁኔታ:
- አቅርቦቶች
- ደረጃ 1: 3 ዲ የታተሙ ክፍሎች
- ደረጃ 2: ክዳንን ወደ ሰርቮ ሞተር ያያይዙ
- ደረጃ 3 NodeMCU ESP8266 ወረዳ ይገንቡ
- ደረጃ 4 የአሩዲኖ ኮድ እና ሙከራ ይስቀሉ
- ደረጃ 5: ይጠቀሙበት
ቪዲዮ: የድመት የምግብ ተደራሽነት ቁጥጥር (ESP8266 + Servo Motor + 3D Printing) 5 ደረጃዎች (ከስዕሎች ጋር)
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:29
ይህ ፕሮጀክት ለአዛውንቴ የስኳር ህመምተኛ ድመት ቻዝ አውቶማቲክ ድመት የምግብ ሳህን ለመፍጠር የተጠቀምኩበትን ሂደት ያያል። ይመልከቱ ፣ እሱ ኢንሱሊን ከማግኘቱ በፊት ቁርስ መብላት አለበት ፣ ግን ብዙውን ጊዜ ከመተኛቴ በፊት የምግብ ሳህኑን ማንሳት እረሳለሁ ፣ ይህም የምግብ ፍላጎቱን ያበላሸዋል እና የኢንሱሊን መርሃ ግብሩን ይጥላል። ይህ ምግብ በእኩለ ሌሊት ሰዓታት እና በ 7 30 መካከል ባለው ምግብ ላይ ክዳን ለመዝጋት ሰርቪ ሞተር ይጠቀማል። የ NodeMCU ESP8266 ማይክሮ መቆጣጠሪያ አርዱinoኖ ንድፍ የጊዜ ሰሌዳውን ለመቆጣጠር የአውታረ መረብ ጊዜ ፕሮቶኮል (NTP) ይጠቀማል።
ይህ ፕሮጀክት ለወጣት ፣ የበለጠ ንቁ ለሆኑ ድመቶች ተስማሚ ላይሆን ይችላል። ቻዝ በጣም ያረጀ እና ደካማ ነው ፣ ጎድጓዳ ሳህኑን ለመክፈት ለመሞከር ዝንባሌ የለውም ፣ ግን ይቻላል።
ለአርዱዲኖ ወይም ለ ESP8266 አዲስ ከሆኑ በሚከተሉት ቅድመ -መመሪያዎች ሊደሰቱ ይችላሉ-
- Instructables Arduino ክፍል
- Instructables የነገሮች ክፍል በይነመረብ
አቅርቦቶች
- 3 ዲ አታሚ (እኔ Creality CR-10s Pro እጠቀማለሁ)
- 3 -ል አታሚ ክር (የወርቅ PLA ን እጠቀማለሁ)
- NodeMCU ESP8266 wifi ማይክሮ መቆጣጠሪያ
- የዩኤስቢ ገመድ (ከ A ወደ ማይክሮ ቢ)
- የዩኤስቢ ኃይል አስማሚ
- ማይክሮ ሰርቮ ሞተር
- አነስተኛ ጠመዝማዛ እና ዊልስ
- የሚጣበቅ ገመድ
- የራስጌ ፒኖች
- የፐርማ-ፕሮቶ ቦርድ
እየሠራሁበት ያለውን ለመከታተል በዩቲዩብ ፣ በኢንስታግራም ፣ በትዊተር ፣ በፒንቴሬስት ይከተሉኝ እና ለጋዜጣዬ ይመዝገቡ። እንደ አማዞን ተባባሪ እንደመሆኔ የአጋርነት አገናኞቼን በመጠቀም ከሚያደርጉት ብቁ ግዢዎች አገኛለሁ።
ደረጃ 1: 3 ዲ የታተሙ ክፍሎች
የድመት ምግብ ጎድጓዳ ሳህን በ Thingiverse ላይ በአርዲ ላይ ንድፍ ላይ የተመሠረተ ነው። የድመቴን ጎድጓዳ ሳህን ለማስተናገድ ትልቅ አደረግሁት ፣ እንዲሁም ከፍ ማድረጉ በጣም ከፍ ስላደረገው አጠር አደረግሁት። እኔ ለማይክሮ ሰርቪስ ሞተር መያዣን እና ወደ ውስጠኛው መስመር ለመሄድ ለኬብሎች ሁለት ቀዳዳዎችን ጨመርኩ።
ከማይክሮ ሰርቪው ቀንድ ጋር ለማያያዝ የተነደፈውን Tinkercad ን በመጠቀም ቀለል ያለ ክዳን ሞዴል አድርጌአለሁ። የእኔን ንድፍ በቀጥታ ከቲንክከርድ መውሰድ እና/ወይም ከዚህ ደረጃ ጋር የተገናኙትን STLs ማውረድ ይችላሉ።
ክፍሎቼን በ Creality CR-10s Pro አታሚዬ ላይ ከወርቅ PLA ክር ጋር አተምኩ።
ይፋ ማድረግ - በዚህ ጽሑፍ ጊዜ እኔ Tinkercad ን የሚሠራው የ Autodesk ሠራተኛ ነኝ።
ደረጃ 2: ክዳንን ወደ ሰርቮ ሞተር ያያይዙ
በ servo ቀንድ ላይ ያሉትን ቀዳዳዎች መጠን ለመጨመር ትንሽ ቁፋሮ ተጠቅሜ ነበር ፣ ከዚያ ሰርቪውን ከ 3 ዲ የታተመ ክዳን ጋር ለማያያዝ ዊንጮችን ተጠቀምኩ።
ደረጃ 3 NodeMCU ESP8266 ወረዳ ይገንቡ
ወረዳው በ NodeMCU ESP8266 wifi ማይክሮ መቆጣጠሪያ ቁጥጥር ይደረግበታል። ማይክሮ ሰርቮ ሞተር በቀላሉ እንዲነቀል ለማድረግ በፔርማ-ፕሮቶ ቦርድ ላይ የራስጌ ፒኖችን ተጠቅሜ ነበር ።የ servo ራስጌዎች ከ NodeMCU ጋር ተገናኝተዋል።
ቢጫ servo ሽቦ: NodeMCU D1
ቀይ servo ሽቦ: NodeMCU ኃይል (3V3 ወይም ቪን)
ጥቁር ሰርቪ ሽቦ - NodeMCU መሬት (GND)
ደረጃ 4 የአሩዲኖ ኮድ እና ሙከራ ይስቀሉ
በሳጥን መያዣው 3 ዲ የታተመ ክፍል ላይ የሞተር/ክዳን ስብሰባዎን በሞተር ቅርፅ ባለው ተቆርጦ ይጫኑ። የሞተር ራስጌውን በማይክሮ መቆጣጠሪያ ቦርድ ራስጌ ፒን ላይ ይሰኩ እና ወረዳውን በዩኤስቢ ገመድ ወደ ኮምፒተርዎ ያስገቡ።
የአርዱዲኖ ንድፍ የአሁኑን ጊዜ ለማምጣት የአውታረ መረብ ጊዜ ፕሮቶኮልን ይጠቀማል እና ከዚያ በጠንካራ ኮድ መርሃ ግብር መሠረት ክዳኑን ይከፍታል ወይም ይዘጋል። የሚከተለውን ኮድ ይቅዱ ፣ የ wifi ምስክርነቶችዎን እና የ UTC ጊዜ ማካካሻዎን ያዘምኑ እና አርዱዲኖ አይዲኢን በመጠቀም ወደ ኖድኤምሲዩ ቦርድ ይስቀሉት።
#ያካትቱ
#ያካትቱ #ያካትቱ #ያካትቱ ESP8266WiFiMulti wifiMulti; // ‹wifiMulti› WiFiUDP UDP የሚባለውን የ ESP8266WiFiMulti ክፍል ምሳሌ ይፍጠሩ ፤ // IPAddress timeServerIP ን ለመላክ እና ለመቀበል የ WiFiUDP ክፍል ምሳሌን ይፍጠሩ ፣ // time.nist.gov የ NTP አገልጋይ አድራሻ const char* NTPServerName = "time.nist.gov"; const int NTP_PACKET_SIZE = 48; // NTP የጊዜ ማህተም በመጀመሪያዎቹ 48 ባይት የመልእክት ባይት NTPBuffer [NTP_PACKET_SIZE] ውስጥ ነው ፤ // የገቢ እና የወጪ እሽጎችን Servo myservo ን ለመያዝ ቋት; // አንድ servo ን ለመቆጣጠር የ servo ነገርን ይፍጠሩ // አሥራ ሁለት የ servo ዕቃዎች በአብዛኛዎቹ ሰሌዳዎች ላይ ሊፈጥሩ ይችላሉ int pos = 0; // ተለዋዋጭ የ servo አቀማመጥ ባዶነት ቅንብር () {myservo.attach (5); // አገልጋዩን በፒን 5 aka D1 ላይ ወደ servo ነገር ያያይዘዋል/ክዳኑን በነባሪ Serial.println (“ክዳኑን መክፈት”) ይክፈቱ ፤ ለ (pos = 95; pos> = 0; pos -= 1) {// ከ 95 ዲግሪ ወደ 0 ዲግሪ myservo.write (pos) ይሄዳል ፤ // በተለዋዋጭ 'ፖዝ' መዘግየት (15) ውስጥ ወደ ቦታው እንዲሄድ servo ን ይንገሩት ፤ // አገልጋዩ ወደ ቦታው እንዲደርስ 15ms ይጠብቃል} Serial.begin (115200); // መልዕክቶችን ወደ ኮምፒተር መዘግየት (10) ለመላክ ተከታታይ ግንኙነቱን ይጀምሩ (10) ፤ Serial.println ("\ r / n"); startWiFi (); // ከተወሰኑ የመዳረሻ ነጥቦች ጋር ለመገናኘት ይሞክሩ። ከዚያ ግንኙነቱን ይጠብቁ startUDP (); ከሆነ (! WiFi.hostByName (NTPServerName ፣ timeServerIP)) {// የ NTP አገልጋዩን የአይፒ አድራሻ Serial.println ያግኙ (“የዲ ኤን ኤስ ፍለጋ አልተሳካም። ዳግም ማስጀመር”) ፤ Serial.flush (); ESP.reset (); } Serial.print ("የጊዜ አገልጋይ IP: / t"); Serial.println (timeServerIP); Serial.println ("\ r / n የ NTP ጥያቄን በመላክ ላይ …"); sendNTPpacket (timeServerIP); } ያልተፈረመ ረጅም ክፍተት NTP = 60000; // በየደቂቃው ያልተፈረመ ረዥም prevNTP = 0 የ NTP ጊዜን ይጠይቁ። ያልተፈረመ ረጅም lastNTPResponse = millis (); uint32_t timeUNIX = 0; ያልተፈረመ ረጅም prevActualTime = 0; ባዶነት loop () {ያልተፈረመ ረጅም የአሁኑ ሚሊስ = ሚሊስ (); ከሆነ (currentMillis - prevNTP> intervalNTP) {// ካለፈው NTP ጥያቄ አንድ ደቂቃ ካለፈ prevNTP = currentMillis; Serial.println ("\ r / n የ NTP ጥያቄን በመላክ ላይ …"); sendNTPpacket (timeServerIP); // የ NTP ጥያቄ ይላኩ} uint32_t time = getTime (); // የኤንቲፒ ምላሽ ደርሶ እንደሆነ ያረጋግጡ እና (ጊዜ) ከሆነ (ጊዜ) {// አዲስ የጊዜ ማህተም timeUNIX = ጊዜ ከተቀበለ። Serial.print ("NTP ምላሽ / t"); Serial.println (timeUNIX); lastNTPResponse = currentMillis; } ሌላ ከሆነ ((currentMillis - lastNTPResponse)> 3600000) {Serial.println (“ካለፈው የኤን ቲ ፒ ምላሽ ከ 1 ሰዓት በላይ። ዳግም በመጀመር ላይ”) ፤ Serial.flush (); ESP.reset (); } uint32_t exactTime = timeUNIX + (currentMillis - lastNTPResponse)/1000; uint32_t eastTime = timeUNIX - 18000 + (currentMillis - lastNTPResponse)/1000; ከሆነ (ትክክለኛው ጊዜ! ተከታታይ. ተከታታይ። Serial.println (); } /ከቀኑ 7 30 ጥዋት ከሆነ (getHours (eastTime) == 7 && getMinutes (eastTime) == 30 && getSeconds (eastTime) == 0) {// ክዳኑን ይክፈቱ Serial.println ("ክዳኑን መክፈት"); ለ (pos = 95; pos> = 0; pos -= 1) {// ከ 95 ዲግሪ ወደ 0 ዲግሪ myservo.write (pos) ይሄዳል ፤ // በተለዋዋጭ 'ፖዝ' መዘግየት (15) ውስጥ ወደ ቦታው እንዲሄድ servo ን ይንገሩት ፤ // አገልጋዩ ቦታው ላይ እንዲደርስ 15ms ይጠብቃል}} // እኩለ ሌሊት ከሆነ (getHours (eastTime) == 0 && getMinutes (eastTime) == 0 && getSeconds (eastTime) == 0) {// ክዳኑን Serial ይዝጉ። println ("ክዳኑን መዝጋት"); ለ (pos = 0; pos <= 95; pos += 1) {// በ 1 ዲግሪ myservo.write (pos) ደረጃዎች ከ 0 ዲግሪ ወደ 95 ዲግሪ // ይሄዳል። // በተለዋዋጭ 'ፖዝ' መዘግየት (15) ውስጥ ወደ ቦታው እንዲሄድ servo ን ይንገሩት ፤ // አገልጋዩ ቦታው ላይ እንዲደርስ 15ms ይጠብቃል}} /* // ሙከራ (getHours (eastTime) == 12 && getMinutes (eastTime) == 45 && getSeconds (eastTime) == 0) {// ክዳኑን ይዝጉ Serial.println ("ክዳኑን መዝጋት"); ለ (pos = 0; pos = 0; pos -= 1) {// ከ 95 ዲግሪ ወደ 0 ዲግሪ myservo.write (pos) ይሄዳል ፤ // በተለዋዋጭ 'ፖዝ' መዘግየት (15) ውስጥ ወደ ቦታው እንዲሄድ servo ን ይንገሩት ፤ // አገልጋዩ ቦታው ላይ እንዲደርስ 15ms ይጠብቃል}} */} ባዶ startWiFi () {// ከተወሰኑ የመዳረሻ ነጥቦች ጋር ለመገናኘት ይሞክሩ። ከዚያ ግንኙነት wifiMulti.addAP ("ssid_from_AP_1" ፣ "your_password_for_AP_1") ይጠብቁ ፤ // ሊያገናኙዋቸው የሚፈልጓቸውን የ Wi-Fi አውታረ መረቦችን ያክሉ //wifiMulti.addAP ("ssid_from_AP_2 "፣" your_password_for_AP_2 ") ፤ //wifiMulti.addAP ("ssid_from_AP_3 "," your_password_for_AP_3 "); Serial.println ("ማገናኘት"); ሳለ (wifiMulti.run ()! = WL_CONNECTED) {// መዘግየቱን (Wi-Fi) ለማገናኘት ይጠብቁ (250) ፤ Serial.print ('.'); } Serial.println ("\ r / n"); Serial.print ("ተገናኝቷል"); Serial.println (WiFi. SSID ()); // ከ Serial.print ("IP አድራሻ: / t") ጋር የተገናኘንበትን አውታረ መረብ ይንገሩን ፤ Serial.print (WiFi.localIP ()); // የ ESP8266 የአይፒ አድራሻውን ወደ ኮምፒዩተር Serial.println ("\ r / n") ይላኩ ፤ } ባዶነት startUDP () {Serial.println («UDP ን መጀመር»); UDP.begin (123); // ወደብ 123 Serial.print ("አካባቢያዊ ወደብ: / t") ላይ የ UDP መልዕክቶችን ማዳመጥ ይጀምሩ ፤ Serial.println (UDP.localPort ()); Serial.println (); } uint32_t getTime () {ከሆነ (UDP.parsePacket () == 0) {// ምንም ምላሽ ከሌለ (ገና) 0 ይመልሱ ፤ } UDP.read (NTPBuffer ፣ NTP_PACKET_SIZE) ፤ // ጥቅሉን ወደ ቋት ውስጥ ያንብቡ // የ 4 የጊዜ ማህተሞችን ባይት ወደ አንድ 32-ቢት ቁጥር uint32_t NTPTime = (NTPBuffer [40] << 24) | (NTPBuffer [41] << 16) | (NTPBuffer [42] << 8) | NTPBuffer [43]; // የ NTP ጊዜን ወደ UNIX የጊዜ ማህተም ይለውጡ: // የዩኒክስ ሰዓት በጃንዋሪ 1 ቀን 1970 ይጀምራል። ይህ በ NTP ጊዜ ውስጥ 2208988800 ሰከንዶች ነው። // ሰባ ዓመታትን ቀንስ - uint32_t UNIXTime = NTPTime - ሰባ ዓመት; UNIXTime ን መመለስ; } ባዶ ላክNTPpacket (IPAddress & አድራሻ) {memset (NTPBuffer ፣ 0 ፣ NTP_PACKET_SIZE) ፤ // ሁሉንም ባይት በአቋራጭ ውስጥ ወደ 0 ያዋቅሩ/ NTP ጥያቄን ለመፍጠር የሚያስፈልጉ እሴቶችን ያስጀምሩ NTPBuffer [0] = 0b11100011; // LI ፣ ስሪት ፣ ሞድ // የጊዜ ማህተም የሚጠይቅ ፓኬት ይላኩ - UDP.beginPacket (አድራሻ ፣ 123); // የ NTP ጥያቄዎች ወደብ 123 UDP.write (NTPBuffer ፣ NTP_PACKET_SIZE); UDP.endPacket (); } inline int getSeconds (uint32_t UNIXTime) {UNIXTime % 60 ን ይመልሱ ፤ } inline int getMinutes (uint32_t UNIXTime) {UNIXTime / 60 % 60 መመለስ ፤ } inline int getHours (uint32_t UNIXTime) {UNIXTime / 3600 % 24 መመለስ ፤ }
ደረጃ 5: ይጠቀሙበት
ጎድጓዳ ሳህን መያዣው ውስጥ ሽቦዎችዎን ያዙሩ ፣ እና የዩኤስቢ ኤሲ አስማሚ በመጠቀም የድመት መጋቢዎን ወደ መውጫ ውስጥ ያስገቡ። ቀላሉ ኮድ የተጻፈበት መንገድ ፣ እሱ በ “ክፍት” ሁኔታ ውስጥ መነሳት ማለት ነው ፣ እና በአርዱዲኖ ንድፍ ውስጥ በተገለጹት የግቢያ ገደቦች ላይ የሽፋኑን አቀማመጥ ብቻ ይለውጣል።
ስለተከተሉ እናመሰግናለን! እርስዎ የራስዎን ስሪት ከሠሩ ፣ እኔ ከዚህ በታች በሠራሁት ክፍል ውስጥ ማየት እፈልጋለሁ!
ይህንን ፕሮጀክት ከወደዱት ፣ በሌሎች የእኔ ሌሎች ላይ ሊፈልጉ ይችላሉ-
- ቀስተ ደመና የቁም ስዕሎች የፕሪዝም ባለቤት
- ከድመት ግንብ ጋር የፓንች ማከማቻ ግድግዳ
- የ LED ሜሰን ጃር መብራቶች (3 ዲ የታተመ ክዳን)
- 3 ዲ አታሚ ፊላደር ደረቅ ሣጥን
- የአስቸኳይ የዩኤስቢ የኃይል ምንጭ (3 ዲ ታትሟል)
- የሚያብለጨልጭ LED Gummy Candy
- 3 -ልኬት የታተመ የጂኦሜትሪክ ተክል በእፅዋት ማስወገጃ
- የሚያብረቀርቅ 3 ዲ የታተሙ አበቦች
- በስኩተር ስር (በብሉቱዝ) LED ን እንዴት እንደሚጭኑ
እኔ እየሠራሁ ያለውን ለመከታተል በዩቲዩብ ፣ በኢንስታግራም ፣ በትዊተር እና በፒንቴሬስት ይከተሉኝ።
የሚመከር:
የውሃ/የምግብ ደረጃ አመልካቾች 10 ደረጃዎች (ከስዕሎች ጋር)
የውሃ/የምግብ ደረጃ አመልካቾች -በዚህ አስተማሪ ውስጥ ማይክሮ ፕሮሰሰር ፣ ማይክሮ ተቆጣጣሪዎች ፣ Raspberry Pi ፣ Arduino ወዘተ ሳይጠቀሙ የውሃ ደረጃ አመልካች እንዴት እንደሠራሁ አሳያችኋለሁ። ኤሌክትሮኒክስን በተመለከተ እኔ የተሟላ ነኝ " ዱሚ ". እኔ አንዳንድ የኤሌክትሮኒክ ኮምፕዩተር እጠቀማለሁ
አሳዛኝ የድመት አስተካካይ ፣ ያዝ -እኔ የድመት መጫወቻ - የትምህርት ቤት ፕሮጀክት 3 ደረጃዎች
አሳዛኝ ድመት አስተካካይ ፣ ያዝ-እኔ ድመት መጫወቻ-የትምህርት ቤት ፕሮጀክት-የእኛ ምርት እዚህ ነው ፣ እሱ በይነተገናኝ መጫወቻ መዳፊት ነው-Catch-Me Cat Toy። በእኛ ማህበረሰብ ውስጥ ብዙ ድመቶች የሚያጋጥሟቸው የችግሮች ዝርዝር እነሆ -ድመቶች በአሁኑ ጊዜ እንቅስቃሴ -አልባ እና የመንፈስ ጭንቀት እየሆኑባቸው ነው። አብዛኛዎቹ ባለቤቶች በስራ ወይም በትምህርት ቤት ተጠምደዋል እና የእርስዎ
HeadBot-ለ STEM ትምህርት እና ተደራሽነት የራስ-ሚዛናዊ ሮቦት -7 ደረጃዎች (ከስዕሎች ጋር)
HeadBot-ለ STEM ትምህርት እና ተደራሽነት የራስ-ሚዛናዊ ሮቦት Headbot-ሁለት ጫማ ቁመት ያለው ፣ ራሱን የሚያመጣጠን ሮቦት-የደቡብ ዩጂን ሮቦቲክስ ቡድን (SERT ፣ FRC 2521) ፣ በ FIRST ውስጥ ተወዳዳሪ የሁለተኛ ደረጃ ትምህርት ቤት ሮቦቶች ቡድን ፈጠራ ነው። የሮቦት ውድድር ፣ ከዩጂን ፣ ኦሪገን። ይህ ተወዳጅ የማስተዋወቂያ ሮቦት እንደገና ይሠራል
የአዕምሮዎን ተደራሽነት ማሳደግ 8 ደረጃዎች (ከስዕሎች ጋር)
የአዕምሮዎን ተደራሽነት ማጉላት - ስለዚህ ፣ በካሊፎርኒያ የስነጥበብ ኮሌጅ የፈጠራ ቴክኖሎጂ ቤተ -ሙከራን እመራለሁ። እሱ ለሥነ -ጥበብ እና ለዲዛይን ተማሪዎች ትምህርታዊ ጠላፊ ቦታ ነው። በጣም ግሩም ፣ ትክክል? ከሚኒሶታ ዩኒቨርሲቲ በሜካኒካል ዲግሪ ከተመረቀ በኋላ
የምግብ ካም 18 ደረጃዎች (ከስዕሎች ጋር)
የምግብ ካም - ይህ ፕሮጀክት በ MIT ሚዲያ ላብራቶሪ በተሰራው የምግብ ካሜራ ፕሮጀክት ተመስጦ ነበር። ይህ ፕሮጀክት በሲንጋፖር ውስጥ በ UWCSEA ምስራቅ የኮሌጅ አገልግሎት ኮድ ጥሩ ለሆነ አካል ነው። የዚህ ፕሮጀክት ግብ በማህበረሰባችን የሚባክነውን የምግብ መጠን በ