
Оглавление:
- Шаг 1. Спецификация материалов
- Шаг 2: Приступаем к созданию основы из дерева и перпекса
- Шаг 3: Диспенсер токенов
- Шаг 4: Определение того, был ли выдан жетон
- Шаг 5: Электроника
- Шаг 6: плата датчика LoRaWAN
- Шаг 7: TTN - Сеть вещей
- Шаг 8: Программное обеспечение
- Шаг 9: загрузка
- Шаг 10: Добавление / удаление тега
- Шаг 11: несколько видеороликов, демонстрирующих работу Coin-O-Matic
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05


В нашем офисе есть торговый автомат, который может принимать как реальные деньги, так и жетоны. Руководство решило, что мы можем получить немного бесплатных сладостей (в определенных пределах), чтобы мы были счастливы и довольны низкой заработной платой, которую мы зарабатываем. Проблема была в том, как бы вы это контролировали? Торговый автомат принадлежит сторонней компании, поэтому о его модификации не могло быть и речи.
Войдите в монету Франкенштейна-O-Matic, создание моего больного ума. Решая, как это сделать, я подумал, что лучше всего подойдут RFID-метки, дайте каждому сотруднику RFID-метку и ведите учет того, сколько раз RFID-метка была проведена. Когда метка проводится, выдается жетон для использования с торговым автоматом (одно бесплатное вентиляционное отверстие). Каждый раз, когда TAG удаляется, записывайте информацию на SD-карту. Номер TAG также загружается в «облако» с помощью LoraWAN. Я уже играл с LoRaWAN и thingsnetwork (TTN) с некоторыми датчиками температуры и влажности, так что у нас есть TTN Gateway. Шлюз TTN - это Raspberry PI 3 с концентратором IMST, подключенным к TTN.
Шаг 1. Спецификация материалов
- Некоторый 3-миллиметровый плексиглас
- Некоторые 1мм плексигласа
- Ардуино Мега
- Arduino Pro Mini
- RFM95 Lora Radio
- Крошечный модуль I2C часов реального времени DS1307 RTC
- Цветной графический 2,2-дюймовый TFT ЖК-дисплей, 240x320, ILI9341
- 2 x 4-канальные двунаправленные преобразователи уровня
- NeoPixel Ring 24 - RGB светодиод WS2812
- Стартовый комплект RFID 13,56 МГц
- ESP8266 ESP12 Тестовая плата WiFi-модуль
- Модуль SD-карты
- 5 кнопок
- 2 х трехцветных светодиода
- Много-много кабельных стяжек
- Множество перемычек на макетных платах
- 40 мм x 40 мм дерево
- 2-канальный релейный модуль 5V 10 AMP
-
Модуль фотоэлектрического датчика инфракрасного луча 5 В постоянного тока
Шаг 2: Приступаем к созданию основы из дерева и перпекса

Началось с создания коробки для размещения всей электроники из 3-миллиметрового Perspex, Perspex и логотипа были вырезаны с помощью станка с ЧПУ. На передней крышке коробки находится экран, кнопки и несколько мигающих светодиодов. Светодиоды представляют собой обычные трехцветные светодиоды, которые циклически меняют цвета, см. Спецификацию.
Затем я использовал деревянный брусок 40 мм x 40 мм, чтобы соорудить место для устройства выдачи монет и желоб, в который можно было бы упасть жетоном. Диспенсер для жетонов состоит из 3 круглых пластин из плексигласа, верхняя и нижняя из плексигласа толщиной 3 мм, а средняя, на которой находится жетон, из плексигласа толщиной 1 мм. Это работает так: средняя пластина поворачивается, берет жетон из стопки и перетаскивает его в отверстие в нижней пластине, а жетон падает в лоток для жетонов в грязные ожидающие руки какого-то голодного сотрудника.
Укладчик жетонов - это старая спринклерная трубка, которую я лежал вокруг, и диаметр был точно таким же, как у жетонов. Я просверлил несколько отверстий в спринклерной трубке, чтобы вы могли видеть, сколько жетонов уложено в стопку для пополнения в случае необходимости. Трубка спринклера была приклеена к верхней пластине из плексигласа.
Шаг 3: Диспенсер токенов



Двигатель для привода средней плиты - синхронный двигатель 220 В переменного тока от…. Понятия не имею, нашел его в коробке с запчастями, пока он медленный и сильный. Вал был приклеен к средней пластине с помощью эпоксидного клея Pratex. Модуль реле срабатывает, и подсоединяется провод под напряжением, чтобы двигатель работал. Я просверлил несколько отверстий в нижней пластине, чтобы противодействовать трению, если это имеет значение, я не знаю. По обе стороны от средней пластины были вырезаны 2 отверстия для «захвата» жетонов. Диаметр отверстий немного больше диаметра жетонов, так что есть некоторая погрешность при захвате жетонов.
Шаг 4: Определение того, был ли выдан жетон


Я использовал для этого модуль фотоэлектрического датчика, мы не хотим изгонять сотрудника, если он / она не получил токен после сканирования тега. теперь бы мы ?. Запись записывается на SD-карту только при успешном обнаружении токена, если токен не был обнаружен, дисплей впадает в ярость, обвиняя службу в компании и что служба отстой.. Никакая запись не записывается в случай, когда нет жетонов для выдачи. Я приклеил фототранзистор ко дну желоба, чтобы жетон ломал луч при прохождении через луч
Шаг 5: Электроника

Arduino Mega - это мозг Coin-o-Matic, все датчики и т. Д. Подключены к Mega.
Arduino Pro Mini и RFM95 Lora Radio - Arduino Pro Mini и Arduino Mega подключены друг к другу через последовательную шину, при сканировании тега номер тега отправляется по последовательной шине от Mega к Pro Mini. Pro Mini все время находится в цикле, как только что-то получено на последовательной шине Pro Mini, номер тега загружается в сеть вещей (TTN) с помощью LoraWan. Я не занимался интеграцией по этому поводу, но я планирую создать экземпляр AWS для хранения и сортировки информации. См. Следующий шаг для получения дополнительной информации.
Tiny RTC DS1307 Модуль I2C часов реального времени - когда Coin-O-Matic загружается, он входит в сеть Wi-Fi и получает время от NTP-сервера через модуль Wi-Fi тестовой платы ESP8266 ESP12, а затем соответственно устанавливает время RTC.
Графический цветной 2,2-дюймовый TFT ЖК-дисплей 240x320 ILI93412 - Основной дисплей, он обычно показывает часы и дает пользователю несколько слов для размышлений.
4-канальные двунаправленные преобразователи уровня - поскольку цифровые контакты Mega имеют напряжение 5 В, мне нужны были преобразователи для безопасного обмена данными с некоторыми модулями.
NeoPixel Ring 24 RGB LED WS2812 - Сделайте немного света, чтобы ошеломить и запутать пользователя
RFID Starter Kit 13,56 МГц - считыватель RFID
Модуль SD-карты - запишите номер тега, дату и время для каждого считывания тега
Кнопки - администратор, у которого есть главный тег, загрузит новые теги, и я использую одну из кнопок, чтобы приостановить отображение, пока они не смогут скопировать номер тега и записи, у кого есть тег. Остальные 4 кнопки подключены, но в настоящее время не используются.
Трехцветный светодиод - больше света, чтобы ошеломить и сбить с толку пользователей
Много-много кабельных стяжек - Попытайтесь навести порядок со всеми проводами
Множество перемычек на макетной плате - Подключите все необходимое
2-канальный релейный модуль 5 В 10 AMP 5 В постоянного тока - Одно реле используется для питания двигателя устройства выдачи монет, а другое - для питания модуля ESP8266, программа модуля ESP8266 также находится в цикле, как только он получает питание, оно включается. войдите в сеть Wi-Fi и выполните вызов времени NTP. Чтобы свести к минимуму вызовы времени NTP, я решил включить его с помощью реле, IE активировал реле, активировал модуль ESP, модуль ESP получил время и реле снова включило модуль … И он также издает приятные щелкающие звуки
Модуль фотоэлектрического датчика инфракрасного светового луча - для определения того, был ли выдан жетон
Шаг 6: плата датчика LoRaWAN

Файлы дизайна Eagle прилагаются, плата сделана мной, но я пользуюсь услугами компании, которая производит саму плату. Эта плата также может использоваться в качестве платы датчика LoRAWAN, она чрезвычайно мала, ~ 37 мм x 54 мм, она поддерживает датчик температуры и влажности DHT 22 или DHT 11 как есть.
Шаг 7: TTN - Сеть вещей

Об этом много информации на сайте
www.thethingsnetwork.org/
По сути, Coin-O-Matic разговаривает через LoraWAN (Arduino Pro Mini с радио RFM95) со шлюзом (Raspberry Pi с концентратором IMST), который подключен к TTN через Интернет, из TTN вы можете выполнять множество интеграций, IE Swagger, AWS, http и т. Д., На картинке выше показаны некоторые смахивания тегов в офисе.
Шаг 8: Программное обеспечение
Программа разделена на 3 части
getNTPtime_instructables - программа ESP8266, перед загрузкой необходимо изменить ssid, пароль и ntpServerName. Я использую базовый программатор FTDI, подключаю землю, TX и RX. Не забудьте выбрать модуль ESP в Arduino IDE и отсортировать контакты на ESP, чтобы перевести его в режим программирования.
Coin-O-Matic_instructables - Программа Coin-O-Matic. Это загружается на Arduino Mega, здесь необходимо изменить номер Master Tag -
byte masterCard [размер карты] = {121, 178, 151, 26};
pro_mini_instructables - Программа LoRaWAN. Это загружается в Pro Mini, см. Схему для получения более подробной информации о том, как подключить радио и какие PIN-коды использовать. Адрес устройства, сетевой сеансовый ключ и сеансовый ключ приложения необходимо изменить после того, как регистрация устройства будет выполнена в TTN, если вы будете использовать ABP.
static const PROGMEM u1_t NWKSKEY [16] = {}; s]
static const u1_t PROGMEM APPSKEY [16] = {};
статическая константа u4_t DEVADDR = 0x; // <- Измените этот адрес для каждого узла!
Шаг 9: загрузка

На видео показано, как реле активируется (реле 1), модуль ESP8266 входит в сеть Wi-Fi, отправляет сигнал времени getNTP и получает время от сервера NTP, после успешного обновления времени реле деактивируется и отключает питание ESP8266. Если что-то пойдет не так и нет успешного обновления времени, Arduino Mega перезагрузится и попытается снова. Модуль ESP8266 и Arduino Mega подключены друг к другу через последовательные порты (Serial2 на Mega), Arduino Mega ожидает ответа от ESP8266, сообщение выглядит как «UNX [и отметка времени эпохи]», Я нахожусь в GMT + 2, поэтому в коде Arduino Mega я добавляю GMT + 2, как показано ниже.
time_t gmtTimeVar = newTimeVar + 7200;
rtc.adjust (DateTime (gmtTimeVar));
Шаг 10: Добавление / удаление тега

Мастер-тег сканируется, и на дисплее отображается, что это главный тег. Новый тег сканируется, и номер тега отображается на экране, что дает пользователю время записать номер и записать, кто получил новый тег. Номер тега будет записан в базу данных, как только пользователь нажмет левую кнопку. Та же процедура выполняется для удаления тега из базы данных.
Шаг 11: несколько видеороликов, демонстрирующих работу Coin-O-Matic

Я использовал node-red для интеграции с Telegram, node-red имеет модуль интеграции с TTN, так что же происходит, когда вы сканируете тег?
- Тег сканируется
- txt на SD-карте читается, чтобы убедиться, что это действительный тег
- Если тег действителен, метка времени с номером тега записывается в текстовый файл на SD-карте.
- Номер тега отправляется через LoRaWAN и Raspberry PI Gateway в сеть TTN.
- Node-red подписывается на сообщения MQTT в сети TTN
- Node-Red отправляет декодированный номер тега HEX в DEC в файл сценария bash, запущенный на сервере локально.
- Сценарий bash сканирует текстовый файл с НОМЕРАМИ и ИМЕНАМИ ТЕГОВ.
- Файл сценария bash загружает сообщение в Telegram BOT с curl, содержащим НОМЕР ТЕГА и имя человека.
Красиво и сложно, мне нравится, как такая простая задача становится оооочень сложной
Дайте мне знать, что вы думаете, в комментариях ниже
Рекомендуемые:
Автоматический гелевый диспенсер для спирта с Esp32: 9 шагов

Автоматический гелевый диспенсер для спирта с Esp32: в руководстве мы увидим, как создать полный прототип, собрать автоматический гелевый диспенсер для спирта с esp32, он будет включать пошаговую сборку, электронную схему, а также исходный код, все пошаговое объяснение шаг
Диспенсер масок Arduino: 11 шагов

Диспенсер для масок Arduino: во-первых, я знаю, что это выглядит немного странно, но для функциональности он должен был выглядеть как маленький белый USS Enterprise. Во-вторых, он предназначен для малых и средних приложений, а не для использования в размерах Costco. стерилизует ваши маски на
Диспенсер для смарт-контактных линз: 8 шагов (с изображениями)

Диспенсер для смарт-контактных линз: в этой инструкции я покажу вам, как сделать свой собственный диспенсер для смарт-контактов
Диспенсер для таблеток: 5 шагов

Диспенсер для таблеток: я учусь в Howest Kortrijk, чтобы показать, что мы узнали в конце года, когда нам нужно было сделать проект. Я решил сделать дозатор таблеток, на котором можно увидеть, когда было принято лекарство. Мне пришла в голову эта идея, потому что иногда они не знают
Система объявления токенов: 5 шагов

Система объявления токенов: в предыдущем руководстве мы увидели, как заставить ваш Arduino говорить. Сегодня мы подробнее рассмотрим ту же тему. Все мы, должно быть, в какой-то момент жизни сталкивались с системой объявлений, может быть, в банке или на вокзале. Вы когда-нибудь выиграли