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
Немає коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів