Съдържание:

Интелигентна кофа за боклук от Magicbit: 5 стъпки
Интелигентна кофа за боклук от Magicbit: 5 стъпки

Видео: Интелигентна кофа за боклук от Magicbit: 5 стъпки

Видео: Интелигентна кофа за боклук от Magicbit: 5 стъпки
Видео: CS50 2014 - Week 6 2024, Ноември
Anonim
Image
Image

В този урок ще научим как да си направите интелигентна кофа за боклук с помощта на Magicbit dev. дъска с Arduino IDE. Да започнем.

Консумативи

  • Magicbit
  • USB-A към Micro-USB кабел
  • Ултразвуков сензор - HC -SR04 (общ)
  • SG90 Микро-серво мотор

Стъпка 1: История

Хардуерна настройка
Хардуерна настройка

Преди да преминете към проекта, нека да разгледаме какво е интелигентна кофа за боклук. Във всеки дом има една или повече кошчета за прах. Много пъти сте го покривали. Защото това ще предизвика миризма във вашия дом. Така че, когато искате да поставите малко боклук в кофата за боклук, трябва да го отворите. Но ако, когато се приближите до кофата за боклук, за да поставите боклука и автоматично покритието му се отваря, тогава как изглежда това. Луд ааа …. така че това е интелигентната кофа за боклук.

Стъпка 2: Теория и методология

Теорията е много проста. Когато се приближите до кофата за боклук, тя ще ви открие. Ако разстоянието между вас и кофата за боклук е по -малко от определено разстояние, тогава капакът на кофата за боклук ще се отвори автоматично. За да завършим и двата обекта, използваме ултразвуков сензор HC-SRO4 и малки серво мотори. Можете да получите всеки тип цифров серво мотор.

Стъпка 3: Настройка на хардуера

Хардуерна настройка
Хардуерна настройка
Хардуерна настройка
Хардуерна настройка

За този проект използвахме основно три хардуерни компонента. Те са Magicbit, серво мотор и ултразвуков сензор. Връзката между всички тези части е показана на горната фигура.

Ултразвуков сензор, използван 3.3 V за захранване. Затова използвахме десния долен порт на платката Magicbit за свързване на ултразвуков сензор към Magicbit. Но серво моторът се използва 5V за правилна работа, затова използвахме долния ляв порт за свързване на серво мотор с Magicbit. В този случай използваме модул за серво съединител Magic bit. Но ако нямате този модул, можете да използвате три джъмперни проводника за свързване на 5V към 5V, Gnd към Gnd и сигнален щифт към 26 пина на magicbit.

Сега нека разгледаме механичната страна на нашия проект. За отваряне на капака използваме много прост лостов механизъм. Свързахме едната странична скоба за серво към серво. След това свързахме ъгловия отвор в скобата и капака на кофата за боклук, използвайки здрава метална тел. Металният проводник може да се върти по отношение на серво скобата и капака на кофата за боклук. Като изучавате най -доброто изображение и видео, можете да го изградите много лесно.

Стъпка 4: Настройка на софтуера

Настройка на софтуера
Настройка на софтуера

Софтуерната част също е много лесна. Нека разгледаме IDE кода на Arduino и как работи този код.

За задвижване на серво използваме ESP32 серво библиотека. Тази библиотека почти включва в мениджъра на магически битове в Arduino IDE. За да се справим с ултразвуковия сензор използваме newPing библиотека. Това може да бъде изтеглено от следната връзка.

bitbucket.org/teckel12/arduino-new-ping/d…

Изтеглете zip файла и отидете на инструменти> включете библиотека> добавете Zip библиотека в Arduino. сега изберете изтегления си zip файл от новата библиотека с пинове. в кода първо декларираме библиотеки със серво и ултразвукови сензори. Във функцията цикъл винаги проверяваме разстоянието от кофата за боклук до най -близкия преден обект. Ако този ренде е по -голям от 200, тогава разстоянието на изхода на библиотеката е 0. Когато разстоянието е по -ниско от 60 см, то изпълнява for цикъл за отваряне на капака чрез завъртане на серво. Ако разстоянието е по -голямо от 60 см, капакът ще се свали. С помощта на булева променлива винаги проверяваме състоянието на корицата. Ако капакът е свален, само той ще се отвори. Също и обратното. Сега изберете правилния COM порт и платка като magcibit, След това качете кода. Сега вашата интелигентна кофа за боклук е готова за употреба.

Стъпка 5: Arduino код

#включва

#define TRIGGER_PIN 21 #define ECHO_PIN 22 #define MAX_DISTANCE 200 NewPing сонар (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include // включва серво библиотека int разстояние; Servo RadarServo; void setup () {Serial.begin (115200); RadarServo.attach (26); // Дефинира към кой щифт е закъснението на закрепване на сервомотора (3000); } void loop () {// завърта сервомотора от 15 на 165 градуса за (int i = 0; i <= 180; i ++) {RadarServo.write (i); забавяне (50); distance = sonar.ping_cm (); // Извиква функция за изчисляване на разстоянието, измерено от ултразвуковия сензор за всяка степен за (int j = 0; j0) {break; } Serial.print (i); // Изпраща текущата степен в Serial Port Serial.print (","); // Изпраща знак за добавяне точно до предишната стойност, необходима по -късно в IDE за обработка за индексиране на Serial.print (j); // Изпраща текущата степен в Serial Port Serial.print ("*"); Serial.print (1); // Изпраща стойността на разстоянието в Serial Port Serial.print ("/"); // Изпраща знак за добавяне точно до предишната стойност, необходима по -късно в IDE за обработка за индексиране на Serial.print (разстояние); // Изпраща стойността на разстоянието в Serial Port Serial.print ("."); // Изпраща знак за добавяне точно до предишната стойност, необходима по-късно в IDE за обработка за индексиране}} // Повтаря предишните редове от 165 до 15 градуса за (int i = 180; i> = 0; i-) {RadarServo.write (i); забавяне (50); разстояние = sonar.ping_cm (); for (int j = 75; j> = 0; j- = 25) {if (i == 180 && (j == 75 || j == 50 || j == 25)) {продължи; } Serial.print (i); // Изпраща текущата степен в Serial Port Serial.print (","); // Изпраща знак за добавяне точно до предишната стойност, необходима по -късно в IDE за обработка за индексиране на Serial.print (j); // Изпраща текущата степен в Serial Port Serial.print ("*"); Serial.print (-1); // Изпраща стойността на разстоянието в Serial Port Serial.print ("/"); // Изпраща знак за добавяне точно до предишната стойност, необходима по -късно в IDE за обработка за индексиране на Serial.print (разстояние); // Изпраща стойността на разстоянието в Serial Port Serial.print ("."); // Изпраща добавен знак точно до предишната стойност, необходима по -късно в IDE за обработка за индексиране}}}

Препоръчано: