Smart-тыква с использованием технологии IoT (трушний код). Из цикла «Наука+гумор+студенти+Хелловін»
Объяснение смысла происходящего уже было в первом топике «Наука+гумор+студенти+Хелловін» (вот тут), и во втором (тут).
Поэтому просто продолжим жечь грызть гранит науки, смягчая его юмором и немного абсурдом.
______________________________________________________________
Smart-тыква на базе микропроцессора ARM с использованием технологии интернета вещей
Цель: Разработать минимально рабочей образец «умной» тыквы с целью интеллектуализации жилища обычного человека и стать частью всеобщей диджитализации. Исследовать преимущества и недостатки искусственного интеллекта тыквы vs естественного интеллекта человека. Обосновать экспериментальным путем, что тыква-умнее, а человек- инженер.
Содержание:
• Теоретическая часть
• Ход работы
• Код проекта
• Выводы
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Вступление
Теория — когда все знаешь, но ничего не работает. Практика — когда все работает, но не знаешь почему. Когда хочешь как лучше и объединяешь теорию с практикой — получается хуже, чем обычно, потому что ничего не работает и не знаешь почему.
Основной материал
Подобные устройства разрабатываются согласно техническому заданию заказчиков, могут быть укомплектованы сенсорами, системами управления и прочими контроллерами любых широко применяемых типов.
Благодаря развитию робототехники и появлению смарт-технологий стало возможным обеспечить высокий уровень автоматизации тыкв на современном, разработанном непосредственно под цели конкретного производства программном обеспечении с применением любых существующих сегодня управляющих и контролирующих микропроцессорных элементах.
Автоматизированная смарт-тыква — высоко-доходный, прибыльный бизнес и неисчерпаемый источник для научных исследований.
ХОД РАБОТЫ
Шаг 1: Подготовить материалы и инструменты:
• одна тыква средних размеров
• столовая ложка
• миска для мякоти тыквы
• мусорное ведро
• вращающийся инструмент с небольшим фрезерным наконечником
• большие и маленькие кухонные ножи
• микроконтроллер с датчиком wifi (Arduino+nrf25 или ESP8266 или что под рукой)
• светодиоды/светодиодная лента
• датчик звука (buzzer или что под рукой)
• резисторы по 220 Ом
• соединительные провода папа-папа
• любые датчики, которые нашли под рукой/ногой
Шаг 2: Выдолбить тыкву (задолбать вынуть мозг, причем ложкой)
Чтобы выдолбить тыкву, сначала необходимо выполнить соответствующие надрезы и отверстия произвольного диаметра с помощью ножей согласно задуманному шаблону. Затем берем столовую ложку. Очистка внутренней части вырезанной части тыквы может быть выполнена с вогнутой частью ложки, направленной вверх — как обычно едят с ложкой. Внутри тыквы проще
использовать ложку наоборот -выпуклая сторона направлена от тыквы.
Выцарапывая нижние части, легче снова повернуть ложку «в пищу», поскольку это позволяет лучше резать с кривизной и меньше вонзать тыкву.
В конце концов, как только вся мякоть высвободится, можно легко выложить ее в миску, потом в мусорное ведро.
Кроме того, чем более мягкая мякоть удаляется, чтобы продлить жизненный цикл нашего инженерного проекта, особенно, если хранить ее в прохладном месте.
Семечки по желанию можно промыть, просушить и поджарить. Является народным средством от гельминтов [1].
Шаг 3: Электронные мозги (программно-аппаратная платформа)
Чтобы разместить электронику внутри тыквы, лучше всего закрыть дно пластиковым пакетом. Это предотвращает попадание влаги, грязи и тыквы на электронику, а также защищает компоненты от плесени через несколько дней.
В качестве примера собрана и запрограммирована схема и проведен натурный эксперимент с тыквой в качестве платформы для автоматизации освещения в помещении (Рис.1)
Рис.1 Тыква как микропроцессорная платформа автоматизации освещения
КОД ПРОЕКТА
// Include Libraries #include "Arduino.h" #include "NewPing.h" #include "PIR.h" #include "PiezoSpeaker.h" #include "Adafruit_STMPE610.h" #include "Wire.h" // Pin Definitions #define HCSR04_PIN_TRIG 2 #define HCSR04_PIN_ECHO 0 #define PIR_PIN_SIG 12 #define PIEZOSPEAKER_3V3_PIN_SIG 14 #define TCS230_PIN_S1 16 #define TCS230_PIN_S0 15 #define TCS230_PIN_S3 10 #define TCS230_PIN_S2 9 #define TCS230_PIN_OUT 13 // Global variables and defines unsigned int piezoSpeaker_3v3HoorayLength = 6; // amount of notes in melody unsigned int piezoSpeaker_3v3HoorayMelody[] = {NOTE_C4, NOTE_E4, NOTE_G4, NOTE_C5, NOTE_G4, NOTE_C5}; // list of notes. List length must match HoorayLength! unsigned int piezoSpeaker_3v3HoorayNoteDurations[] = {8 , 8 , 8 , 4 , 8 , 4 }; // note durations; 4 = quarter note, 8 = eighth note, etc. List length must match HoorayLength! // object initialization NewPing hcsr04(HCSR04_PIN_TRIG,HCSR04_PIN_ECHO); PIR pir(PIR_PIN_SIG); PiezoSpeaker piezoSpeaker_3v3(PIEZOSPEAKER_3V3_PIN_SIG); Adafruit_STMPE610 touch = Adafruit_STMPE610(); // define vars for testing menu const int timeout = 10000; //define timeout of 10 sec char menuOption = 0; long time0; // Setup the essentials for your circuit to work. It runs first every time your circuit is powered with electricity. void setup() { // Setup Serial which is useful for debugging // Use the Serial Monitor to view printed messages Serial.begin(9600); while (!Serial) ; // wait for serial port to connect. Needed for native USB Serial.println("start"); if (! touch.begin()) Serial.println("Touch controller not found!"); menuOption = menu(); } // Main logic of your circuit. It defines the interaction between the components you selected. After setup, it runs over and over again, in an eternal loop. void loop() { if(menuOption == '1') { // Ultrasonic Sensor - HC-SR04 - Test Code // Read distance measurment from UltraSonic sensor int hcsr04Dist = hcsr04.ping_cm(); delay(10); Serial.print(F("Distance: ")); Serial.print(hcsr04Dist); Serial.println(F("[cm]")); } else if(menuOption == '2') { // Infrared PIR Motion Sensor Module - Test Code bool pirVal = pir.read(); Serial.print(F("Val: ")); Serial.println(pirVal); } else if(menuOption == '3') { // Piezo Speaker - Test Code // The Speaker will play the Hooray tune piezoSpeaker_3v3.playMelody(piezoSpeaker_3v3HoorayLength, piezoSpeaker_3v3HoorayMelody, piezoSpeaker_3v3HoorayNoteDurations); delay(500); } else if(menuOption == '4') { // Resistive Touch screen - 3.7'' Diagonal - Test Code uint16_t x, y; uint8_t z; if (touch.touched()) { // read x & y & z; while (! touch.bufferEmpty()) { Serial.print(touch.bufferSize()); touch.readData(&x, &y, &z); Serial.print("->("); Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", "); Serial.print(z); Serial.println(")"); } touch.writeRegister8(STMPE_INT_STA, 0xFF); // reset all ints } delay(10); } else if(menuOption == '5') { // Disclaimer: The TCS230 Color RGB Sensor is in testing and/or doesn't have code, therefore it may be buggy. Please be kind and report any bugs you may find. } if (millis() - time0 > timeout) { menuOption = menu(); } } // Menu function for selecting the components to be tested // Follow serial monitor for instrcutions char menu() { Serial.println(F("\nWhich component would you like to test?")); Serial.println(F("(1) Ultrasonic Sensor - HC-SR04")); Serial.println(F("(2) Infrared PIR Motion Sensor Module")); Serial.println(F("(3) Piezo Speaker")); Serial.println(F("(4) Resistive Touch screen - 3.7'' Diagonal")); Serial.println(F("(5) TCS230 Color RGB Sensor")); Serial.println(F("(menu) send anything else or press on board reset button\n")); while (!Serial.available()); // Read data from serial monitor if received while (Serial.available()) { char c = Serial.read(); if (isAlphaNumeric(c)) { if(c == '1') Serial.println(F("Now Testing Ultrasonic Sensor - HC-SR04")); else if(c == '2') Serial.println(F("Now Testing Infrared PIR Motion Sensor Module")); else if(c == '3') Serial.println(F("Now Testing Piezo Speaker")); else if(c == '4') Serial.println(F("Now Testing Resistive Touch screen - 3.7'' Diagonal")); else if(c == '5') Serial.println(F("Now Testing TCS230 Color RGB Sensor - note that this component doesn't have a test code")); else { Serial.println(F("illegal input!")); return 0; } time0 = millis(); return c; } } }
Выводы
Выполнив все вышеперечисленные шаги, мы получим свою собственную «умную» тыкву. Уникальна уже сама мысль об этом.
Если ее «интеллект» кажется кому-то сомнительным, то это легко опровергнуть экспериментальным путем — запускаем программно-аппаратную часть тыквы. Работает-вы-инженер. Нет-вы даже не тыква.
Проводим сравнительную характеристику интеллектуальных способностей тыквы и человека (выборка по определенным параметрам). Результаты, как показывает статистика, в пользу тыквы — в 50% случаев.
Авторы
Анна Сарибога, старший преподаватель кафедры электронных устройств и систем КПИ им. И. Сикорского, научный руководитель Noosphere Engineering School KPI, руководитель секции «Smart технології та роботизовані системи». Сайт преподавателя
Алексей Глубенок, студент кафедры электронных устройств и систем (ФЕЛ) КПИ, участник секции «Smart технології та роботизовані системи», учасник хакатона NASA Space Apps и прочее и прочее (яркий представитель подрастающего Smart поколения).
Если у вас возникли какие-либо вопросы, обязательно свяжитесь с авторами проекта: (Анна Сарибога и Алексей Глубенок) и мы ответим как можно скорее: t.me/tykvahack
Литература
[1] Народ. Народное средство, дата неопределена
______________________________________________________________
P.s. Наука — это крайне серьезно! Но, раз в год и Сарибога шутит © Noosphere Engineering School
P.p.s. Для самых смелых (если вы дошли до этих строк, то лонгридов вы точно не боитесь).
Первые 10 читателей, которые удачно имплементируют код, приведенный выше, получат приятнейший и милейший сувенир от Инжиниринговой школы Noosphere. Для этого примените код и отправите видео-запись результата личным сообщением сюда facebook.com/noosphere.engineering или сюда t.me/NoosphereEngineering
Немає коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів