Labs is a project based on different hardware and software.
The project is made possible by MinDl, Gryn69, Goremika26, IrinaBelous, KseniiaFilippova who've generously donated dozens of hours in code development and upkeep.
Laboratory 1
- Our lab1 docs
Laboratory 1.1
Lab_1.1 is a project based on Arduino that allows you to control the brightness of a three-color LED from the keyboard.
Lab_1.1 source code is made available on Arduino Uno.
- Our lab_1.1 docs
- Computer - 1
- Arduino UNO - 1
- Wire for connecting an Arduino UNO to a computer - 1
- Small breadboard - 1
- RGB LED - 1
- Wires Male-Male - 4
- 220 Ohm resistor- 1
- Computer - 1
- Arduino UNO - 1
- Wire for connecting an Arduino UNO to a computer - 1
- Small breadboard - 1
- RGB LED - 3
- Wires Male-Male - 19
- 220 Ohm resistor - 3
- Slider switches - 6
Other images with connection in /lab_1/lab_1.1/images
Our code has clear comments, but for you we will write the main points here.
This is a base code for our Project.
//For Arduino Uno
//Determining which pins the RGB LED is connected to
#define R_PIN 6
#define G_PIN 3
#define B_PIN 5
//setup code
void setup() {
//assign the pins a mode of operation(output or input)
pinMode(R_PIN, OUTPUT);
pinMode(G_PIN, OUTPUT);
pinMode(B_PIN, OUTPUT);
}
//loop that will nonestop work on Arduino UNO
void loop() {
//on RGB LED(Red) for second and off
on_off_diod(R_PIN);
//on RGB LED(Green) for second and off
on_off_diod(G_PIN);
//on RGB LED(Blue) for second and off
on_off_diod(B_PIN);
}
//function for on and off RGB LED with one second delay (Function for turning on and off with one second delay the electric current on the pin)
void on_off_diod(int pin){
//on RGB LED on pin (Start electric current transmission on the pin)
digitalWrite(pin, 1);
//second delay
delay(1000);
//off RGB LED on pin (Stop electric current transmission on the pin)
digitalWrite(pin, 0);
}Other code in folder in /lab_1/lab_1.1/code
Click to see task_0
lab_1.1 Task_0 in Tinkercad
This circuit and code allows you to control the brightness of a RGB LED from the keyboard to make one of 16.7 million.
For work you need to write r(number)g(number)b(number). For example:
- Red - r9g0b0
- Green - r0g9b0
- Blue - r0g0b9
Click to see task_1
lab_1.1 Task_1 in Tinkercad
This circuit and code allows you to on and off the brightness of a RGB LED.
It works like this, one second is red, one second is green, one second is blue.
You can't on or off, it just work after upload on Arduino Uno.
Click to see task_2_V1
lab_1.1 Task_2_V1 in Tinkercad
This circuit and code allows you to on and off the brightness of a RGB LED.
It has one mode. You can on and off RGB LED if you write 'g'
Click to see task_2_V2
lab_1.1 Task_2_V2 in Tinkercad
This circuit and code allows you to on and off the brightness of a RGB LED.
It has two modes:
Click to see task_3-4
lab_1.1 Task_3-4 in Tinkercad
This circuit and code allows you to on and off the brightness of a Three RGB LEDs.
It has two modes:
- First mode work like, you need to write r(number)g(number)b(number). Like in task_0. To on off this mode you need to write 'q'.
- Second mode work like, one second is red, one second is green, one second is blue. Like in task_1. To on off this mode you need to write 'w'.
The code is the same as the code in task_2_V2
Click to see task_5_V1
lab_1.1 Task_5_V1 in Tinkercad
This circuit and code allows you to on and off the brightness of a Three RGB LEDs.
It has three modes:
- First mode work like, you need to write r(number)g(number)b(number). Like in task_0. To on off this mode you need to write 'q'.
- Second mode work like, one second is red, one second is green, one second is blue. Like in task_1. To on off this mode you need to write 'w'.
- Third mode work like, first RGB LED red, second RGB LED green, thrid RGB LED blue. To on off this mode you need to write 'e' and switch all slider switches.
The code is the same as the code in task_3-4
Click to see task_5_V2
lab_1.1 Task_5_V2 in Tinkercad
This circuit and code allows you to on and off the brightness of a Three RGB LEDs.
It has two modes:
- First mode work like, one second is red, one second is green, one second is blue. Like in task_1. To on off this mode you need to write 'w'.
- Second mode work like, first RGB LED red, second RGB LED green, thrid RGB LED blue. To on off this mode you need to write 'e'.
For build code and upload on Arduino, you need to download Arduino IDE.
This code work only for Arduino Uno.
Laboratory 1.2
Monkey ping pong
Lab_1.2 is a project based on Arduino that allows you to play ping-pong with flexible sensor.
Lab_1.2 source code is made available on Arduino Uno.
- Our lab_1.2 docs
- Computer - 1
- Arduino UNO - 1
- Wire for connecting an Arduino UNO to a computer - 1
- Small breadboard - 1
- Buttons - 2
- Set of wires
- 4 kΩ Resistor - 4
- Flexible sensor - 2
- Computer - 1
- Arduino UNO - 1
- Wire for connecting an Arduino UNO to a computer - 1
- Small breadboard - 1
- Buttons - 2
- Set of wires
- 4 kΩ Resistor - 6
- Flexible sensor - 4
Other images with connection in /lab_1/lab_1.2/images
Our code has clear comments, but for you we will write the main points here.
This is a base code for our Project.
Arduino code
/*
Сuитыватель показаний датчиков Контекст: Arduino
Сuитывает показания с двух аналоговых входов и двух цифровых входов и выводит их знаuения.
Подклюuения:
Аналоговые датuики — к контактам аналогового ввода A0 и A1 Кнопки — к контактам цифрового ввода 4 и 5
*/
const int leftSensor = A0; // аналоговый ввод для левой руки
const int rightSensor = A1; // аналоговый ввод для правой руки
const int resetButton = 4; // цифровой ввод для кнопки сброса
const int serveButton = 5; // цифровой ввод для кнопки подаuи
int leftReading = 0; // показания датuика левой руки
int rightReading = 0; // показания датuика правой руки
int resetReading = 0; // данные кнопки сброса
int serveReading = 0; // данные кнопки подаuи
void setup() {
// настраиваем последовательное соединение:
Serial.begin(9600);
// configure the digital inputs:
pinMode(resetButton, INPUT);
pinMode(serveButton, INPUT);
}
void loop() {
// сuитываем показания аналоговых датuиков:
leftReading = analogRead(leftSensor);
rightReading = analogRead(rightSensor);
// сuитываем показания цифровых датuиков:
resetReading = digitalRead(resetButton);
serveReading = digitalRead(serveButton);
// Выводим результаты на экран:
Serial.print(leftReading);
Serial.print(',');
Serial.print(rightReading);
Serial.print(',');
Serial.print(resetReading);
Serial.print(',');
/* выводим на экран последнее показание датuика
с помощью функции printlin(), uтобы каждый набор из uетырех показаний был на отдельной строке:
*/
Serial.println(serveReading);
}Processing code
import processing.serial.*;
Serial myPort;
String resultString; // Строuная переменная для результатов
void setup() {
size(480, 130); // устанавливаем размер окна апплета
printArray(Serial.list()); // Выводим на экран все
// доступные последовательные порты
// Hа моем компьютере порт микроконтроллера обыuно
// первый порт в списке,
// поэтому я открываю Serial.list()[0].
// Измените 0 на номер последовательного порта,
// к которому подклюuен ваш микроконтроллер:
String portName = Serial.list()[1];
// открываем последовательный порт:
myPort = new Serial(this, portName, 9600);
// сuитываем байты в буфер, пока не дойдем до символа
// перевода строки (ASCII 10):
myPort.bufferUntil('\n');
}
void draw() {
// задаем цвет фона и заливки для окна апплета:
background(#044f6f);
fill(#ffffff);
// выводим строку в окне:
if (resultString != null) {
text(resultString, 10, height/2);
}
}
/* Метод serialEvent() исполняется автоматиuески в программе каждый раз, когда в буфер записывается
байт со знаuением, определенным в методе bufferUntil() в процедуре setup():
*/
void serialEvent(Serial myPort) {
// Сuитываем данные из последовательного буфера:
String inputString = myPort.readStringUntil('\n');
// Отбрасываем символы возврата каретки
// и перевода строки из строки ввода:
inputString = trim(inputString);
// Оuищаем переменную resultString:
resultString = "";
// Разделяем входную строку по запятым и преобразовываем
// полуuенные фрагменты в целые uисла:
int sensors[] = int(inputString.split(", "));
// Добавляем знаuения к строке результата:
for (int sensorNum = 0; sensorNum < sensors.length; sensorNum++) {
resultString += "Sensor " + sensorNum + ": ";
resultString += sensors[sensorNum] + '\t';
}
// Выводим результат на экран:
println(resultString);
}Other code in folders in /lab_1/lab1.2/code
Click to see Task_0
lab_1.2 Task_0 in Tinkercad
This circuit and code allows you to control 2 ping-pong paddles with flexible sensor and show you the game.
Click to see Task_0_Arduino_ultrasonic_sensor
lab_1.2 Task_0_Arduino_ultrasonic_sensor in Tinkercad
This circuit and code allows you to control 2 ping-pong paddles with ultrasonic sensor and show you the game.
Click to see Task_1-3
lab_1.2 Task_1-3 in Tinkercad
This circuit and code allows you to control 4 ping-pong paddles with flexible sensor and show you the game.
Click to see Task_1-3_Arduino_ultrasonic_sensor
lab_1.2 Task_1-3_Arduino_ultrasonic_sensor in Tinkercad
This circuit and code allows you to control 4 ping-pong paddles with ultrasonic sensor and show you the game.
Click to see Task_4
- Not done
For build code and upload on Arduino, you need to download Arduino IDE and Processing to see the game and play.
This code work only for Arduino Uno.
Laboratory 1.3
Lab_1.3 Это проект основанный на Arduino который позволяет обнаружить нарушение климатических условий.
Lab_1.3 source code is made available on Arduino Uno.
- Our lab_1.3 docs
- Computer - 1
- Arduino UNO - 1
- Wire for connecting an Arduino UNO to a computer - 1
- Small breadboard - 1
- DHT11 - 1
- LCD 16X2 I2C - 1
- MQ-3- 1
- Flame sensor - 1
- 220 Ω resistor - 2
- LED - 1
- RGB LED - 1
- Buzzer - 1
- Water pump - 1
- Relay - 1
- 9V battery - 1
- Ground humidity sensor - 1
- Wires kit
Other images with connection in /lab_1/lab_1.3/images
Our code has clear comments, but for you we will write the main points here.
This is a base code for Task_0.3 for our Project.
// Подключение пинов
#define SENSOR_FLAME_PIN 4
// Переменная для определения огня
int flame;
// Настройка Arduino
void setup()
{
// Определения режимов для пинов
pinMode(SENSOR_FLAME_PIN, INPUT);
// Частота для работы Arduino с компьютером по USB порту
Serial.begin(9600);
}
// Цикл который будет бесконечно работать на Arduino
void loop() {
// Считывание данных с сенсора
flame = digitalRead(SENSOR_FLAME_PIN);
// Если огогнь есть
if (flame == 1){
// Выводить сообщение "Обнаружено пламя" на компьютер
Serial.println("Обнаружено пламя");
// Задержка 150 мс
delay(150);
}
// Если пламени нет
else{
// Выводить сообщение "Пламя не обнаружено" на компьютер
Serial.println("Пламя не обнаружено");
}
// delay(500);
}Other code in folders in /lab_1/lab_1.3/code/
Click to see Task_0.1
Принцип работы этой схемы заключается в том, что датчик DHT11 измеряет температуру и влажность окружающй сренды, считывает эти данные, через Arduino передаёт на дисплей LCD 16X2 I2C, который выводит эти данные.
Click to see Task_0.2
Принцип работы этой схемы заключается в том, что датчик MQ-3 измеряет количество углексилого газа в воздухе и через Arduino посылает показатели на компьютер.
Click to see Task_0.3
Принцип работы этой схемы заключается в том, что датчик Flame Sensor при обнаружении пламени посылает сигнал на Arduino, запускает звуковой и световой сигнал и посылает показатели на компьютер.
Click to see Task_0.4
Принцип работы этой схемы заключается в том, что датчик влажности почвы измеряет уровень влажности окружающей среды, если уровень влажности ниже заданных показателей, посылает сигнал на Arduino, который включает водяной насос для увлажнения и выводит сообщение на компьютер "Pump ON" и "Pump OFF".
Click to see Task_1-6
Объединяем схемы с Task_0.1 по Task_0.4 в одну с помощью беспаечной платы.
Добавляем звуковое и световое оповещения индивидульное для каждого датчика.
Вся информация теперь выводится на дисплей LCD 16X2 I2C.
Теперь водяной насос включается не только от датчика влажности почвы, но и от датчика влажности воздуха.
For build code and upload on Arduino, you need to download Arduino IDE.
This code work only for Arduino Uno.
Laboratory 2
- Our lab2 docs
Laboratory 2.1
Lab_2.1 - это проект на базе Arduino, который позволяет протестировать возможность использования Arduino в качестве сервера, а именно создать собственную точку доступа, подключив Arduino UNO R3 к ESP32. Кроме того, разрабатывается многостраничный веб-сайт с автоматическим обновлением данных системы климат-контроля.
Lab_2.1 Проект можно выполнить на Arduino Uno R3 и NodeMCU 32S.
- Our lab_2.1 docs
- Микроконтроллер Arduino Uno R3 – 1 шт.
- Кабель usb type-b/usb type-a
- Микроконтроллер ESP32S NodeMCU – 1 шт.
- Кабель microUSB/usb type-a
- Компьютер - 1 шт.
- Беспаечная макетная плата – 1 шт.
- Датчик температуры и влажности DHT11 – 1шт.
- Датчик влажности почвы YL38 – 1шт.
- Датчик огня YG1006 – 1 шт.
- Датчик газа MQ 135 – 1 шт.
- Дисплей LCD1602 – 1 шт.
- Buzzer module Low Level Trigger – 1 шт.
- Реле 1-5 В – 1 шт.
- Водяной насос – 1 шт.
- Резистор 10 Ом – 2 шт.
- Светодиод LED красный – 1 шт.
- Светодиод LED зеленый – 1 шт.
- Источник питания 9 В – 1 шт.
- Набор проводов - 1 шт.
Other images with connection in /lab_2/lab_2.1/images
Visio in folder in /lab_2/lab2.1/visio
Our code has clear comments.
Code in folder in /lab_2/lab_2.1/code
- Wire.h - для работыс i2c
- DHT.h - для работы с датчиком DHT11
- MQ135.h - для работы с датчиком MQ135
- WiFi.h - для подключению к WiFi
- WebServer - для создания сервера из esp32
- LiquidCrystal_I2C.h - для работы с LCD i2c дисплея
For build code and upload on Arduino NodeMCU 32S, you need to download Arduino IDE.
This code work only for Arduino Uno and NodeMCU 32S.
Laboratory 2.2
Lab_2.2 - Второй этап носит за собой функцию определения возможностей взаимодействия пользователя с приложением посредством работы с RFID модулем. Также анализируется допустимость переноса данных в клиент сервер и создания многостраничного сайта с различными пользователями с возможностью отправки уведомлений на почту.
Lab_2.2 Проект можно выполнить на NodeMCU 32S.
- Our lab_2.2 docs
- Микроконтроллер ESP32S NodeMCU - 1 шт.
- Кабель microUSB/usb type-a
- Компьютер - 1 шт.
- Buzzer madule Louleveltrigger - 1 шт.
- Беспаечная макетная плата - 1 шт.
- Дисплей LCD1602 - 1 шт.
- Резистор 10 Ом - 2 шт.
- Светодиод LED красный - 1 шт.
- Светодиод LED зеленый - 1 шт.
- RFID-модуль RC522 - 1 шт.
Other images with connection in /lab_2/lab_2.2/images
Visio in folder in /lab_2/lab2.2/visio
Our code has clear comments.
Code in folder in /lab_2/lab2.2/code
- Wire.h - для работыс i2c
- ESP32_MailClient.h - для отправки email
- WiFi.h - для подключению к WiFi
- WebServer - для создания сервера из esp32
- LiquidCrystal_I2C.h - для работы с LCD i2c дисплея
- MFRC522.h - для работы с RFID
- SPI.h - для устройств поддерживающих spi протокол
For build code and upload on Arduino NodeMCU 32S, you need to download Arduino IDE.
This code work only for NodeMCU 32S.
Laboratory 2.3
Lab_2.3 - На третьем этапе производится анализ результатов, полученных на первых двух этапах и последующее создание телеграм бота с интерфейсом напоминаний.
Lab_2.3 Проект можно выполнить на NodeMCU 32S.
- Our lab_2.3 docs
- Беспаечная макетная плата - 1 шт.
- Компьютер - 1 шт.
- Дисплей LCD1602 - 1 шт.
- Плата ESP32S NodeMCU - 1 шт.
- Кабель microUSB/usb type-a
- Датчик звука ky – 038 - 1 шт.
- Датчик света ky – 018 - 1 шт.
Other images with connection in /lab_1/lab_2.3/images
Visio in folder in /lab_2/lab2.3/visio
Our code has clear comments.
Code in folder in /lab_1/lab_2.3/code/
- WiFi.h - для подключению к WiFi
- FastBot.h - esp32 как сервер для телеграмм бота
For build code and upload on Arduino NodeMCU 32S, you need to download Arduino IDE.
This code work only for NodeMCU 32S.
Laboratory 3
- Our lab3 docs
Laboratory 3.1
Lab_3.1 - На первом этапе производится проверка возможности использования компьютера в локальной сети в качестве сервера и оценка работы Arduino Uno в роли микроконтроллера, к которому подключены датчики мониторинга пространства.
Lab_3.1 Проект можно выполнить на Arduino Uno R3 и NodeMCU 32S.
- Our lab_3.1 docs
- Микроконтроллер Arduino Uno R3 – 1 шт.
- Кабель usb type-b/usb type-a
- Компьютер - 1 шт.
- Набор проводов - 1 шт.
- Датчик движения HC-SR501
- Серводвигатель TowerPro SG90 9G
Other images with connection in /lab_3/lab_3.1/images
Visio in folder in /lab_3/lab3.1/visio
Our code has clear comments.
Code in folder in /lab_3/lab_3.1/code
- Arduino Programm language(библиотеки: Servo.h)
- Python(Библиотеки: sqlite3, serial, datetime, csv).
For build code and upload on Arduino NodeMCU 32S, you need to download Arduino IDE.
This code work only for Arduino Uno and NodeMCU 32S.
Laboratory 3.2
Lab_3.2 - На втором этапе исследуется система оповещения пользователя при помощи звукового сопровождения.
Lab_3.2 Проект можно выполнить на NodeMCU 32S.
- Our lab_3.2 docs
- Buzzer madule Louleveltrigger - 1 шт.
- Дисплей LCD1602 – 1 шт.
- Компьютер - 1 шт.
- Микроконтроллер Arduino UNO R3 - 1 шт.
Other images with connection in /lab_3/lab_3.2/images
Visio in folder in /lab_3/lab3.2/visio
Our code has clear comments.
Code in folder in /lab_3/lab3.2/code
- В Arduino Programm language(Библиотеки: LiquidCrystal_I2C.h, GyverMAX7219.h)
- Python(Библиотеки: sqlite3, os, sys, pathlib, django)
For build code and upload on Arduino NodeMCU 32S, you need to download Arduino IDE.
This code work only for NodeMCU 32S.
Laboratory 3.3
Lab_3.3 - На третьем этапе рассматривается вероятность использования компьютера как сервера с подключенным к нему микроконтроллером Raspberry PI. Также производится подключение системы мониторинга с использованием анализа видеонаблюдения.
Lab_3.3 Проект можно выполнить на NodeMCU 32S.
- Our lab_3.3 docs
- Микроконтроллер Raspberry pi 4 b
- Компьютер - 1 шт.
- Кабель usb type-a и type-b .
- Camera 2.2 - 1 шт.
Other images with connection in /lab_1/lab_3.3/images
Visio in folder in /lab_3/lab3.3/visio
Our code has clear comments.
Code in folder in /lab_3/lab_3.3/code/
- Python (picamera2, opencv)
For build code and upload on Arduino NodeMCU 32S, you need to download Arduino IDE.
This code work only for NodeMCU 32S.
Use this project wisely.
Best wishes































