Мазмұны:
- Жабдықтар
- 1 -қадам: 3D басып шығарылған бөлшектер
- 2 -қадам: қақпақты Servo моторына бекітіңіз
- 3 -қадам: NodeMCU ESP8266 схемасын құрыңыз
- 4 -қадам: Arduino коды мен тестін жүктеңіз
- 5 -қадам: қолданыңыз
Бейне: Мысық тағамдарына қол жеткізуді басқару (ESP8266 + Servo Motor + 3D басып шығару): 5 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:23
Бұл жоба мен қарт диабеттік мысық Чазға арналған автоматтандырылған мысықтарға арналған ыдыс жасау процесін қамтиды. Қараңыз, ол инсулин алмастан бұрын таңғы ас ішуі керек, бірақ мен ұйықтамас бұрын оның тамағын алуды ұмытып кетемін, бұл оның тәбетін бұзады және инсулин кестесін бұзады. Бұл ыдыс түн ортасы мен таңғы 7.30 аралығында тағамның қақпағын жабу үшін серво қозғалтқышты пайдаланады. NodeMCU ESP8266 микроконтроллерінің Arduino эскизі кестені басқару үшін Network Time Protocol (NTP) желісін қолданады.
Бұл жоба жас, белсенді мысықтарға сәйкес келмеуі мүмкін. Чаз өте ескі және әлсіз, ол тостағанды ашуға тырыспайды, бірақ мүмкін.
Егер сіз Arduino немесе ESP8266 -да жаңадан болсаңыз, сізге келесі қажетті нұсқаулықтар ұнай алады:
- Нұсқаулықтар Arduino класы
- Нұсқауға болатын заттар заттары класы
Жабдықтар
- 3D принтері (мен Creality CR-10s Pro қолданамын)
- 3D принтер жіп (мен алтын PLA қолданамын)
- NodeMCU ESP8266 wifi микроконтроллері
- USB кабелі (А -дан микробқа дейін)
- USB қуат адаптері
- Микросерво қозғалтқышы
- Кішкене бұрағыш пен бұрандалар
- Қосылатын сым
- Тақырып түйреуіштері
- Перма-прото тақта
Жұмыс үстінде болу үшін YouTube, Instagram, Twitter, Pinterest -те мені қадағалап, ақпараттық бюллетеньге жазылыңыз. Amazon Associate ретінде мен серіктестік сілтемелерімді қолдана отырып, сатып алуларыңыздан табыс табамын.
1 -қадам: 3D басып шығарылған бөлшектер
Мысықтарға арналған ыдыс ұстағыш Арди Лайдың Thingiverse дизайнына негізделген. Мен мысықтың тостағанын орналастыру үшін оны үлкейтіп қойдым, сонымен қатар масштабтау оны тым биік етіп қойғандықтан оны қысқартадым. Мен микросерво қозғалтқышы үшін ұстағышты және кабельдердің ішкі жағына өтетін бірнеше тесікті қостым.
Мен Tinkercad көмегімен микро қақпақтың мүйізіне бекітуге арналған қарапайым қақпақты модельдедім. Сіз менің дизайнымды Tinkercad -тен тікелей ала аласыз және/немесе осы қадамға бекітілген STL жүктей аласыз.
Мен бөліктерді Creality CR-10s Pro принтерінде алтын PLA жіппен басып шығардым.
Ақпаратты ашу: бұл жазу кезінде мен Tinkercad шығаратын Autodesk қызметкерімін.
2 -қадам: қақпақты Servo моторына бекітіңіз
Мен серво мүйізіндегі тесіктердің көлемін ұлғайту үшін кішкене бұрғылау ұшын қолдандым, содан кейін servo -ны 3D басып шығарылған қақпаққа бекіту үшін бұрандаларды қолдандым.
3 -қадам: NodeMCU ESP8266 схемасын құрыңыз
Схема NodeMCU ESP8266 wifi микроконтроллерімен басқарылады. Микросерво қозғалтқышты оңай ажырату үшін мен перма-прото тақтасындағы тақырып түйреуіштерін қолдандым.
Сары серво сымы: NodeMCU D1
Қызыл серво сымы: NodeMCU қуаты (3V3 немесе VIN)
Қара серво сымы: NodeMCU жерге (GND)
4 -қадам: Arduino коды мен тестін жүктеңіз
Қозғалтқыш/қақпақ жинағын 3D басып шығарылған ыдыс ұстағышындағы мотор тәрізді ойыққа орнатыңыз. Қозғалтқыштың жоғарғы бөлігін микроконтроллер тақтасының түйреуіштеріне, ал USB кабелі арқылы компьютерге қосыңыз.
Arduino эскизі ағымдағы уақытты алу үшін Network Time хаттамасын қолданады, содан кейін қақпағы қатаң кодталған кестеге сәйкес ашылады немесе жабылады. Келесі кодты көшіріп алыңыз, Wi -Fi тіркелгі деректерін және UTC уақытын ауыстыруды жаңартыңыз және Arduino IDE көмегімен NodeMCU тақтасына жүктеңіз.
#қосу
#қосу #қосу #қосу ESP8266WiFiMulti wifiMulti; // 'wifiMulti' WiFiUDP UDP деп аталатын ESP8266WiFiMulti класының данасын жасаңыз; // IPAddress timeServerIP жіберу және алу үшін WiFiUDP класының данасын жасаңыз; // time.nist.gov NTP серверінің адресі char char* NTPServerName = «time.nist.gov»; const int NTP_PACKET_SIZE = 48; // NTP уақыт белгісі хабарлама байтының алғашқы 48 байтында NTPBuffer [NTP_PACKET_SIZE]; // кіріс және шығыс пакеттерін ұстауға арналған буфер Servo myservo; // сервоприводты басқару үшін серво объектісін құру // тақталардың көпшілігінде он екі серво объектісін құруға болады int pos = 0; // айнымалы мән servo позициясын сақтау үшін void setup () {myservo.attach (5); // серваны объектіге 5 aka D1 түйісіндегі бекітеді // әдепкі бойынша қақпақты ашыңыз Serial.println («қақпақты ашу»); for (pos = 95; pos> = 0; pos -= 1) {// 95 градустан 0 градусқа дейін ауысады myservo.write (pos); // servo -ға «pos» кідірісіндегі позицияға өтуін айт (15); // серво позицияға жеткенше 15 мс күтеді} Serial.begin (115200); // Компьютерге хабар жіберу үшін сериялық байланысты бастау (10); Serial.println («\ r / n»); startWiFi (); // Кейбір кіру нүктелеріне қосылуға тырысыңыз. Содан кейін қосылудың басталуын күтіңізUDP (); if (! WiFi.hostByName (NTPServerName, timeServerIP)) {// Serial.println NTP серверінің IP мекенжайын алыңыз («DNS іздеу сәтсіз аяқталды. Қайта жүктелуде.»); Serial.flush (); ESP.reset (); } Serial.print («Уақыт сервері IP: / t»); Serial.println (timeServerIP); Serial.println («\ r / nNTP сұранысы жіберілуде…»); sendNTPpacket (timeServerIP); } белгісіз ұзақ интервалNTP = 60000; // NTP уақытын сұрау минут сайын белгісіз ұзақ prevNTP = 0; белгісіз ұзақ lastNTPResponse = millis (); uint32_t timeUNIX = 0; unsigned long prevActualTime = 0; void loop () {unsigned long currentMillis = millis (); if (currentMillis - prevNTP> intervalNTP) {// Егер соңғы NTP сұранысынан бір минут өткен болса prevNTP = currentMillis; Serial.println («\ r / nNTP сұранысы жіберілуде…»); sendNTPpacket (timeServerIP); // NTP сұранысын жіберу} uint32_t time = getTime (); // NTP жауапының келгенін тексеріңіз және (UNIX) уақытын алыңыз, егер (уақыт) {// Егер жаңа уақыт белгісі қабылданған болса, timeUNIX = уақыт; Serial.print («NTP жауабы: / t»); Serial.println (timeUNIX); lastNTPResponse = currentMillis; } if if ((currentMillis - lastNTPRESponse)> 3600000) {Serial.println («Соңғы NTP жауапынан 1 сағаттан астам. Қайта жүктеу.»); Serial.flush (); ESP.reset (); } uint32_t actualTime = timeUNIX + (currentMillis - lastNTPRESponse)/1000; uint32_t EasternTime = timeUNIX - 18000 + (currentMillis - lastNTPRESponse)/1000; if (actualTime! = prevActualTime && timeUNIX! = 0) {// Егер соңғы басып шығарудан бір секунд өткен болса prevActualTime = actualTime; Serial.printf («\ rUTC уақыты: / t%d:%d:%d», getHours (actualTime), getMinutes (actualTime), getSeconds (actualTime)); Serial.printf («\ rEST (-5): / t%d:%d:%d», getHours (EasternTime), getMinutes (EasternTime), getSeconds (EasternTime)); Serial.println (); } // 7:30 am if (getHours (EasternTime) == 7 && GetMinutes (EasternTime) == 30 && GetSeconds (EasternTime) == 0) {// Serial.println қақпағын ашу («қақпақты ашу»); for (pos = 95; pos> = 0; pos -= 1) {// 95 градустан 0 градусқа дейін ауысады myservo.write (pos); // servo -ға «pos» кідірісіндегі позицияға өтуін айт (15); // серво позицияға жеткенше 15ms күтеді}} // түн ортасында if (getHours (EasternTime) == 0 && GetMinutes (EasternTime) == 0 && GetSeconds (EasternTime) == 0) {// Serial қақпағын жабыңыз. println («қақпақты жабу»); for (pos = 0; pos <= 95; pos += 1) {// 0 градустан 95 градусқа дейін // 1 дәрежелі қадамдармен myservo.write (pos); // servo -ға «pos» кідірісіндегі позицияға өтуін айт (15); // серво позицияға жеткенше 15 м күтеді}} /* // тестілеу, егер (getHours (EasternTime) == 12 && GetMinutes (EasternTime) == 45 && GetSeconds (EasternTime) == 0) {// қақпақты жабыңыз Serial.println («қақпақты жабу»); for (pos = 0; pos = 0; pos -= 1) {// 95 градустан 0 градусқа дейін ауысады myservo.write (pos); // servo -ға «pos» кідірісіндегі позицияға өтуін айт (15); // servo позицияға жеткенше 15ms күтеді}} */} void 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 («Қосылу»); while (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 IP мекенжайын Serial.println компьютеріне жіберіңіз («\ r / n»); } void startUDP () {Serial.println («UDP іске қосылады»); UDP.begin (123); // 123 Serial.print портындағы UDP хабарларын тыңдауды бастаңыз («Жергілікті порт: / t»); Serial.println (UDP.localPort ()); Serial.println (); } uint32_t getTime () {if (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 уақыт белгісіне түрлендіру: // Unix уақыты 1970 жылдың 1 қаңтарынан басталады. Бұл NTP уақытында 2208988800 секунд: const uint32_t жетпісжыл = 2208988800UL; // жетпіс жылды шегеріңіз: uint32_t UNIXTime = NTPTime - жетпісжыл; UNIXTime қайтару; } void sendNTPpacket (IPAddress & address) {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 -қадам: қолданыңыз
Сымдарды тостаған ұстағыштың ішкі жағына бағыттаңыз және мысық бергішті USB айнымалы ток адаптері арқылы розеткаға қосыңыз. Қарапайым код қалай жазылады, ол «ашық» күйде жүктеледі және Arduino эскизінде көрсетілген уақыт шегінде қақпақ қалпын өзгертеді.
Бізді қадағалағаныңыз үшін рахмет! Егер сіз өзіңіздің жеке нұсқаңызды жасасаңыз, мен оны төмендегі «Мен жасадым» бөлімінен көргім келеді!
Егер сізге бұл жоба ұнайтын болса, сізге менің кейбіреулерім қызық болуы мүмкін:
- Радуга портреттеріне арналған призма ұстағыш
- Мысық мұнарасы бар фанера сақтау қабырғасы
- Жарықдиодты Mason Jar шамдары (3D басып шығарылған қақпақ)
- 3D принтердің құрғақ қорапшасы
- Төтенше USB қуат көзі (3D басып шығарылған)
- Жарықдиодты жарықдиодты кәмпиттер
- Дренажы бар 3D басып шығарылған геометриялық қондырғышы
- Жарқыраған 3D басып шығарылған гүлдер
- Жарықдиодты скутердің астына қалай қоюға болады (Bluetooth көмегімен)
Жұмыс үстінде болу үшін мені YouTube, Instagram, Twitter және Pinterest -те қадағалаңыз.
Ұсынылған:
Жуынатын табандар - мысық Ковид қол жуу жобасымен кездеседі: 5 қадам (суреттермен)
Аяқ жууға арналған мысықтар - мысық Covid қол жуу жобасымен кездеседі: біз үйде алшақ жүргендіктен, Paws to Wash - бұл қолмен жуудың әдет -ғұрпын насихаттайтын мысықпен сүйкімді кері байланыс таймерін құруға көмектесетін DIY жобасы. Ковид-19 кезінде қол жуу
Қатерлі мысық фиксаторы, Catch -Me мысық ойыншықтары - Мектеп жобасы: 3 қадам
Қатерлі мысықтарды түзетуші, Catch-Me мысық ойыншықтары-Мектеп жобасы: Міне біздің өнім, бұл интерактивті ойыншық тышқан: Catch-Me мысық ойыншық. Міне, біздің қоғамда көптеген мысықтар кездесетін мәселелердің тізімі: Мысықтар қазіргі кезде белсенді емес және ештеңеге көңілсіз күйге түсіп жатыр Көбінесе иелері жұмыспен немесе мектепте және сіздің мамандықтарыңызбен айналысады
ESP8266 RGB LED STRIP WIFI басқару - NODEMCU Wifi арқылы басқарылатын жарықдиодты жолақ үшін IR қашықтан басқару құралы ретінде - RGB LED STRIP смартфонды басқару: 4 қадам
ESP8266 RGB LED STRIP WIFI басқару | NODEMCU Wifi арқылы басқарылатын жарықдиодты жолақ үшін IR қашықтан басқару құралы ретінде | Смартфонды RGB LED STRIP басқару: Сәлеметсіздер ме, балалар, бұл оқулықта біз nodemcu немесе esp8266 -ды RGB жарықдиодты жолағын басқару үшін инфрақызыл қашықтан басқару құралы ретінде қолдануды үйренеміз, ал Nodemcu смартфон Wi -Fi арқылы басқарылады. Негізінде сіз RGB LED STRIP -ті смартфонмен басқара аласыз
Please-open.it көмегімен өзіңіздің қол жеткізуді басқару құрыңыз: 4 қадам
Please-open.it көмегімен өзіңіздің жеке кіру бақылауыңызды құрыңыз: Please-open.it Францияда орналасқан және біз бұл жобада толық уақыт жұмыс жасайтын боламыз. Біз бизнестің (қонақүйлер, кемпингтер, вокзалдар, жалға алу …) икемді шешімдерге ие болғанын қалаймыз және, әрине, төмен бағамен. Әр ішкі деректерді қосыңыз (тағайындау
Үшінші қол ++: электроника мен басқа да нәзік жұмыстарға арналған көп мақсатты көмекші қол.: 14 қадам (суреттермен)
Үшінші қол ++: электроника мен басқа да нәзік жұмыстарға арналған көп қолданыстағы көмекші қол: Мен бұрын электронды дүкендерде сатылатын үшінші қолды/көмекші қолды қолдандым және олардың ыңғайлылығына наразы болдым. Мен клиптерді дәл өзім қалаған жерге ала алмадым немесе орнатуға қажет уақыттан көп уақыт кетті