Обратный торговый автомат (RVM)
Компоненты и расходные материалы
| | × | 1 | |
| NodeMCU ESP8266 Breakout Board | | × | 1 | |
| Индуктивный датчик приближения, 15 мм | | × | 2 | |
| емкостный датчик приближения, 12 мм | | × | 1 | |
| Микро-серводвигатель SG90 | | × | 2 | |
| Буквенно-цифровой ЖК-дисплей, 16 x 2 | | × | 1 | |
| Ультразвуковой датчик - HC-SR04 (общий) | | × | 2 | |
| | × | 1 | |
| | × | 1 | |
| Однооборотный потенциометр - 100 кОм | | × | 1 | |
| Привод переключателя, головка для кнопки с пружинным возвратом | | × | 1 | |
| | × | 2 | |
| | × | 1 | |
| | × | 1 | |
| Батарея 9 В (стандартная) | | × | 1 | |
| | × | 2 | |
Приложения и онлайн-сервисы
Об этом проекте
МОТИВАЦИЯ:
Куда попадают пластиковые бутылки с водой?
На свалках, плывущих по океанам, рекам и тротуарам. Было приблизительно установлено, что 46 000 кусков пластикового мусора плавают в океане на квадратную милю. Этот пластик убивает животных, вызывает утечку химикатов и разрушает экосистемы. На разложение каждой бутылки может уйти до тысячи лет, при этом происходит утечка опасных и вредных химикатов. Утечка некоторых токсинов может вызвать рак и нарушение репродуктивной функции. При сжигании пластика образуются токсичные выбросы, такие как окись углерода, хлор, соляная кислота, фуны и нитриты. К сожалению, аргумент рециркуляции не имеет большого значения для данного случая, поскольку только 12% из тридцати пяти миллиардов бутылок, используемых в течение года, перерабатываются, а это означает, что рециркулируется только половина того, что вы помещаете в мусорную корзину.
ИДЕЯ:
Интеллектуальная машина для утилизации пластиковых и металлических отходов - это система, которая принимает пластиковые отходы (бутылки) и металлические банки на переработку, а взамен выдает пинты в бумажнике оператору, который перерабатывает отходы. Обратный торговый автомат оснащен датчиком приближения, позволяющим различать разные виды бутылок, и очки начисляются, когда пользователь вводит код на веб-сайте. Это изобретение в целом относится к управлению отходами и переработке пластиковых и металлических отходов (бутылок) в окружающая среда. Засорение пластиковыми отходами в окружающей среде и меньшая готовность перерабатывать пластик представляют постоянную проблему для окружающей среды и всех живых существ.
РАБОТАЕТ:
Обратный торговый автомат - это устройство, которое принимает использованные контейнеры для напитков и возвращает деньги пользователю (обратный типичному торговому циклу). Машины популярны в местах, где действуют законы об обязательной переработке или сдаче контейнеров.
Основные операции включают этапы, на которых переработчик помещает пустую бутылку / банку в приемное отверстие; система горизонтальной подачи позволяет пользователю вставлять контейнеры по одному. Затем бутылка / банка автоматически сканируется с помощью емкостных и индуктивных датчиков приближения. Если значение датчика индуктивного датчика равно 1, то объект пластиковый, а если значение датчика индуктивного датчика равно 0, а значение емкостного датчика равно 1, то объект пластиковый.
Что касается системы вознаграждений, RVM распределяет ценные жетоны, такие как монеты или купоны, при переработке контейнеров с напитками. Затем купоны используются для обмена подарков на прилавке. Однако из-за осведомленности об экологических проблемах и стремления к сокращению использования бумаги печать купонов не приветствуется. Итак, в предлагаемой нами системе при обнаружении пластика на ЖК-экране появляется зашифрованный код. Затем пользователь должен отсканировать код ИЛИ, присутствующий на машине, чтобы перейти на веб-сайт и обменять свои баллы, введя код, который он получил на ЖК-экране.
Существует база данных для пользователя, имеющего учетную запись на сайте обратного автомата по продаже пластика. Чтобы использовать баллы за утилизацию пластика, необходимо иметь учетную запись для входа на сайт.
У машины есть еще одна особенность:если машина заполнена, то сборщики мусора или поставщики рециркуляции уведомляют об этом с помощью приложения. Уровень машины контролируется с помощью ультразвукового датчика и NodeMCU, когда машина заполнена, сборщики информируются, а точное местоположение машины отправляется с помощью глобальной системы позиционирования.
Код
- Сортировка отходов
- Контроль уровня мусорного бака
Сортировка отходов C / C ++
#include // # include "Arduino.h" // # include "Button.h" #include LiquidCrystal lcd (1,2,4,5,6,7); const int knapp =3; int ButtonState =0; // текущее состояние кнопки int oldButtonState =0; const int ledPin1 =10; const int ledPin2 =11; const int buzz1 =12; const int buzz2 =13; const int plasticsensor =A0; int metalsensor =A1; int metalsensor_M =A2; Servo myservo; Servo myservo_M; int pos =90; int pos_M =360; void setup () {pinMode (knapp, INPUT); digitalWrite (knapp, LOW); lcd.begin (16,2); lcd.clear (); myservo.attach (9); myservo_M.attach (8); pinMode (пластиковый датчик, INPUT_PULLUP); pinMode (металлсенсор, INPUT_PULLUP); pinMode (metalsensor_M, INPUT_PULLUP); pinMode (ledPin1, ВЫХОД); pinMode (ledPin2, ВЫХОД); pinMode (buzz1, ВЫХОД); pinMode (buzz2, ВЫХОД); Serial.begin (9600);} недействительный цикл () {lcd.setCursor (0,0); lcd.print ("ВСТАВИТЬ МЕТАЛЛ НА"); lcd.setCursor (0,1); lcd.print («ПРАВАЯ СТОРОНА»); задержка (6000); lcd.clear (); int sensor_read =digitalRead (пластиковый датчик); Serial.println («пластиковый сенсор»); Serial.println (sensor_read); // задержка (10); int sensor_read_m =digitalRead (датчик металла); // Пластиковая корзина Serial.println ("metal sensor1"); Serial.println (sensor_read_m); // задержка (10); int sensor_read_mm =digitalRead (металлсенсор_M); Serial.println (sensor_read_mm); // задержка (10); if ((sensor_read ==1) &&(sensor_read_m! =1)) {for (pos =90; pos <=240; pos + =1) {// изменяется от 0 градусов до 180 градусов // с шагом 1 градус myservo.write (pos); // сообщаем сервоприводу перейти в позицию в переменной 'pos' // delay (5); digitalWrite (ledPin1, HIGH); digitalWrite (buzz1, HIGH); // ждем 15 мс, пока сервопривод достигнет позиции} // delay (5000); for (pos =240; pos> =90; pos - =1) {// изменяется от 0 градусов до 180 градусов // с шагом в 1 градус myservo.write (pos); // задержка (5); }} else {// изменяется от 180 градусов до 0 градусов myservo.write (pos); digitalWrite (ledPin1, LOW); digitalWrite (buzz1, LOW); } if ((sensor_read_mm ==1) &&(sensor_read ==0)) {for (pos_M =360; pos_M> =50; pos_M - =1) {// изменяется от 0 градусов до 180 градусов // с шагом 1 степень myservo_M.write (pos_M); // задержка (5); digitalWrite (ledPin2, HIGH); digitalWrite (buzz2, HIGH); } // сообщаем сервоприводу перейти в позицию в переменной 'pos' // delay (5000); for (pos_M =50; pos_M <=360; pos_M + =1) {// изменяется от 180 градусов до 0 градусов myservo_M.write (pos_M); // сообщаем сервоприводу перейти в позицию в переменной 'pos' // delay (5); // ожидаем 15 мсек, пока сервопривод достигнет позиции}} else {myservo_M.write (pos_M); digitalWrite (ledPin2, LOW); digitalWrite (buzz2, LOW); }}
Мониторинг уровня мусорной корзины C / C ++
#include "ThingSpeak.h" #include #include #include #include #define BLYNK_PRINT Serial #define 4WiFiClient #define # TRIGGERO клиент; статическая константа int RXPin =4, TXPin =5; // GPIO 4 =D2 (подключите Tx GPS) и GPIO 5 =D1 (Подключите Rx GPSstatic const uint32_t GPSBaud =9600; // если скорость передачи 9600 не работает в вашем случае, используйте 4800unsigned long myChannelField =1067056; / / Channel IDconst int ChannelField =1; // Какой канал для записи данных char * myWriteAPIKey ="FMV95MD2A1J7Y8SP"; // Ваша запись ATinyGPSPlus gps; // Объект TinyGPS ++ WidgetMap myMap (V0); // V0 для виртуального вывода карты WidgetSoftwareSerial (RXPin, TXPin); // Последовательное подключение к устройству GPSBlynkTimer timer; // Вы должны получить токен аутентификации в приложении Blynk. Char auth [] ="YVvgHBx9fIM1-yR_2XrGXXkKdIuEmrYL"; // Ваши учетные данные WiFi. // Установить пароль в "" для открытых сетей. char ssid [] ="diksha"; char pass [] ="diksha19"; unsigned int move_index =1; void setup () {Serial.begin (115200); ss.begin (GPSBaud); Blynk.begin (auth, ssid, pass); // timer.setInterval (5000L, checkGPS); pinMode (TRIGGER2, OUTPUT); pinMode (ECHO2, INPUT); pinMode (BUILTIN_LED, OUTPUT); WiFi.mode (WIFI_STA); ThingSpeak. begin (client);} / * void checkGPS () {if (gps.charsProcessed () <10) {Serial.println (F ("GPS не обнаружен:проверьте проводку.")); }} * / void loop () {if (WiFi.status ()! =WL_CONNECTED) {Serial.print ("Попытка подключиться к SSID:"); Serial.println (ssid); while (WiFi.status ()! =WL_CONNECTED) {WiFi.begin (ssid, pass); Serial.print ("."); задержка (100); } Serial.println ("\ nConnected."); } while (ss.available ()> 0) {// скетч отображает информацию каждый раз, когда новое предложение правильно закодировано. if (gps.encode (ss.read ())) Serial.println ("GPS подключен"); // displayInfo (); {если (gps.location.isValid ()) {плавающая широта =(gps.location.lat ()); // Сохранение широты. и Лон. float longitude =(gps.location.lng ()); Serial.print ("LAT:"); Serial.println (широта, 6); // с плавающей точкой до x десятичных знаков Serial.print ("LONG:"); Serial.println (долгота, 6); ThingSpeak.setField (3, широта); ThingSpeak.setField (4, долгота); ThingSpeak.writeFields (myChannelField, myWriteAPIKey); Blynk.virtualWrite (V1, String (широта, 6)); Blynk.virtualWrite (V2, String (долгота, 6)); myMap.location (move_index, широта, долгота, «GPS_Location»); }}} // long duration1, distance1; большая продолжительность2, расстояние2; digitalWrite (TRIGGER2, LOW); delayMicroseconds (2); digitalWrite (TRIGGER2, HIGH); delayMicroseconds (10); digitalWrite (TRIGGER2, LOW); duration2 =pulseIn (ECHO2, HIGH); расстояние2 =(продолжительность2 / 2) / 29,1; if (distance2 <=5) {Blynk.notify ("Пожалуйста !! вылейте мусорное ведро");} Serial.println ("2 ультразвуковых сантиметра:"); Serial.println (distance2); Blynk.virtualWrite (V6, distance2); ThingSpeak.writeField (myChannelField, ChannelField, distance2, myWriteAPIKey); задержка (100); Blynk.run (); timer.run ();}
Схема