Оглавление:

Система информации о наличии мест в поезде - FGC: 8 шагов
Система информации о наличии мест в поезде - FGC: 8 шагов

Видео: Система информации о наличии мест в поезде - FGC: 8 шагов

Видео: Система информации о наличии мест в поезде - FGC: 8 шагов
Видео: ПУТЕШЕСТВИЕ ЗА ПРЕДЕЛЫ СОЛНЕЧНОЙ СИСТЕМЫ | ГДЕ НАХОДЯТСЯ ВСЕ ЗОНДЫ? 2024, Июль
Anonim
Информационная система о наличии мест в поездах - FGC
Информационная система о наличии мест в поездах - FGC

Этот проект основан на реализации поезда в масштабе, который позволяет людям, находящимся на станции, знать, какие места свободны. Для выполнения прототипа используется программное обеспечение Arduino UNO вместе с обработкой графической части.

Эта концепция позволит произвести революцию в мире общественного транспорта, поскольку она максимально оптимизирует все сиденья в поезде, обеспечивая использование всех вагонов, а также возможность сбора данных и проведения точных исследований в дальнейшем. на.

Шаг 1. Создание 3D-модели

Дизайн 3D Модель
Дизайн 3D Модель

Прежде всего, мы провели комплексное исследование моделей поездов. На основании всей собранной информации был выбран поезд GTW (производства Stadler Rail), используемый на FGC (Ferrocarrils de la Generalitat de Catalunya).

Позже она была разработана с помощью программного обеспечения 3D PTC Creo, модель для последующей 3D-печати.

Шаг 2: Печать 3D-модели и отделки

Печать 3D-модели и отделки
Печать 3D-модели и отделки

После того, как поезд спроектирован, его передают на 3D-печать. После того, как изделие напечатано, его необходимо отполировать для получения гладкой поверхности.

Этот проект также можно выполнить с существующими моделями поездов.

После печати дается окончательная отделка.

Шаг 3: Компоненты

Компоненты
Компоненты

Для развития этого проекта необходимы следующие компоненты:

- FSR 0.04-4.5LBS (датчик давления).

- резисторы 1,1 кОм

Шаг 4: Кодирование (Arduino и обработка)

Кодирование (Arduino и обработка)
Кодирование (Arduino и обработка)
Кодирование (Arduino и обработка)
Кодирование (Arduino и обработка)
Кодирование (Arduino и обработка)
Кодирование (Arduino и обработка)

Пришло время написать код Arduino, который позволит датчикам отправлять сигнал в программное обеспечение обработки, которое будет передавать информацию в графическом виде.

В качестве датчиков у нас есть 4 датчика давления для Arduino, которые меняют свое сопротивление в зависимости от приложенной к ним силы. Таким образом, цель состоит в том, чтобы воспользоваться сигналом, посылаемым датчиками (когда пассажиры садятся), для изменения графических экранов в Обработке.

Затем мы создаем графическую часть, в которой мы учли графический дизайн Ferrocarrils de la Generalitat de Catalunya, чтобы наилучшим образом воспроизвести реальность.

В процессе обработки был написан код, который напрямую связан с программным обеспечением arduino, таким образом, каждый раз, когда кто-то садится на сиденье, он меняет цвет, позволяя пользователю на платформе поезда узнавать в режиме реального времени доступность мест в поезде..

Здесь вы можете увидеть кодировку

АРДУИНО:

int pot = A0; // Подключаем средний штифт пота к этому штырю pot2 = A1; int pot3 = A2; int pot4 = A3; int lectura1; // переменная для хранения значений горшка;

int lectura2; int lectura3; int lectura4;

void setup () {// инициализируем последовательную связь со скоростью 9600 бод Serial.begin (9600); }

void loop () {String s = ""; // // Llegir sensor1 lectura1 = analogRead (pot); // лектура аналогового значения if (lectura1> 10) {s = "1"; задержка (100); } еще {s = "0"; задержка (100); } Serial.println (s);

}

ОБРАБОТКА:

import processing.serial. *; // эта библиотека обрабатывает последовательный разговор String val = ""; PImage s0000, s0001, s0010, s0011, s0100, s0101, s0110, s0111, s1000, s1001, s1010, s1011, s1100, s1101, s1110, s1111; Последовательный myPort; // Создаем объект из серийного класса

void setup () // запускается только один раз {fullScreen (); background (0); // устанавливаем черный цвет фона myPort = new Serial (this, "COM5", 9600); // задаем параметры объекту последовательного класса, помещаем com, к которому подключен ваш Arduino, и скорость передачи

s0000 = loadImage ("0000.jpg"); s0001 = loadImage ("0001.jpg"); s0010 = loadImage ("0010.jpg"); s0011 = loadImage ("0011.jpg"); s0100 = loadImage ("0100.jpg"); s0101 = loadImage ("0101.jpg"); s0110 = loadImage ("0110.jpg"); s0111 = loadImage ("0111.jpg"); s1000 = loadImage ("1000.jpg"); s1001 = loadImage ("1001.jpg"); s1010 = loadImage ("1010.jpg"); s1011 = loadImage ("1011.jpg"); s1100 = loadImage ("1100.jpg"); s1101 = loadImage ("1101.jpg"); s1110 = loadImage ("1110.jpg"); s1111 = loadImage ("1111.jpg");

s0000.resize (displayWidth, displayHeight); s0001.resize (displayWidth, displayHeight); s0010.resize (displayWidth, displayHeight); s0011.resize (displayWidth, displayHeight); s0100.resize (displayWidth, displayHeight); s0101.resize (displayWidth, displayHeight); s0110.resize (displayWidth, displayHeight); s0111.resize (displayWidth, displayHeight); s1000.resize (displayWidth, displayHeight); s1001.resize (displayWidth, displayHeight); s1010.resize (displayWidth, displayHeight); s1011.resize (displayWidth, displayHeight); s1100.resize (displayWidth, displayHeight); s1101.resize (displayWidth, displayHeight); s1110.resize (displayWidth, displayHeight); s1111.resize (displayWidth, displayHeight);

val = trim (val);} void draw () {if (val! = null) {

если (val.equals ("0001")) {изображение (s0001, 0, 0); } иначе, если (val.equals ("0010")) {изображение (s0010, 0, 0); } иначе, если (val.equals ("0011")) {изображение (s0011, 0, 0); } иначе, если (val.equals ("0100")) {изображение (s0100, 0, 0); } иначе, если (val.equals ("0101")) {изображение (s0101, 0, 0); } иначе, если (val.equals ("0110")) {изображение (s0110, 0, 0); } иначе, если (val.equals ("0111")) {изображение (s0111, 0, 0); } иначе, если (val.equals ("1000")) {изображение (s1000, 0, 0); } иначе, если (val.equals ("1001")) {изображение (s1001, 0, 0); } иначе, если (val.equals ("1010")) {изображение (s1010, 0, 0); } иначе, если (val.equals ("1011")) {изображение (s1011, 0, 0); } иначе, если (val.equals ("1100")) {изображение (s1100, 0, 0); } иначе, если (val.equals ("1101")) {изображение (s1101, 0, 0); } иначе, если (val.equals ("1110")) {изображение (s1110, 0, 0); } иначе, если (val.equals ("1111")) {изображение (s1111, 0, 0); } еще {изображение (s0000, 0, 0); }}}

void serialEvent (Serial myPort) // всякий раз, когда происходит последовательное событие, оно запускается {val = myPort.readStringUntil ('\ n'); // перед продолжением убедитесь, что наши данные не пусты if (val! = null) {// обрезайте пробелы и символы форматирования (например, возврат каретки) val = trim (val); println (val); }}

Шаг 5: Схема

Схема
Схема

После всего программирования пришло время подключить все датчики к плате Arduino UNO.

Датчики размещены на 4 посадочных местах (которые позже будут покрыты тканью) и приварены к кабелям, идущим непосредственно к материнской плате Arduino UNO. Сигнал, полученный на плате, отправляется на компьютер, подключенный через USB, который отправляет информацию в обработку в реальном времени, изменяя цвет сиденья.

Вы можете увидеть схему подключений.

Шаг 6: Тест прототипа

После загрузки кода на плату Arduino и включения обработки и программы Arduino датчики проверяются. На экране вы увидите изменения мест из-за смены изображений на дисплее, информирующих о том, что места заняты и нет.

Шаг 7: настоящий макет

Реальный макет
Реальный макет
Реальный макет
Реальный макет
Реальный макет
Реальный макет
Реальный макет
Реальный макет

Настоящее приложение попытается установить его на поездах и платформах сети FGC для обслуживания путешественников.

Шаг 8: НАСЛАЖДАЙТЕСЬ

НАСЛАЖДАЙТЕСЬ!
НАСЛАЖДАЙТЕСЬ!
НАСЛАЖДАЙТЕСЬ!
НАСЛАЖДАЙТЕСЬ!

Вы, наконец, создали поезд датчиков силы (прототип), который позволяет пользователю на платформе поезда знать, какое место доступно в режиме реального времени.

ДОБРО ПОЖАЛОВАТЬ В БУДУЩЕЕ!

Проект выполнен Марком Годайолем и Федерико Доменеком.

Рекомендуемые: