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

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Подписаться на комментарии