Оглавление:

Табло для крикета с использованием NodeMCU: 9 шагов (с изображениями)
Табло для крикета с использованием NodeMCU: 9 шагов (с изображениями)

Видео: Табло для крикета с использованием NodeMCU: 9 шагов (с изображениями)

Видео: Табло для крикета с использованием NodeMCU: 9 шагов (с изображениями)
Видео: Гайд по Create 1.18.2 - 1.20.1 #5 Беспроводной редстоун. Информация (minecraft java edition) 2024, Ноябрь
Anonim
Image
Image
План
План

Привет! Недавно я познакомился с миром IoT (Интернета вещей), когда наткнулся на самое популярное устройство в этой области, ESP8266. Меня поразило то количество возможностей, которые открыло это крошечное и дешевое устройство. Поскольку в настоящее время я новичок в этом, я решил создать проект с его использованием и попутно учиться. Итак, я начал искать в Интернете проекты и идеи.

Я наткнулся на замечательный проект под названием Arduino Cricket Score Ticker от W. A. Smith. В этом проекте Arduino вместе с Ethernet Shield и SD-картой используется для отображения результатов крикета в реальном времени от Cricbuzz. Этот проект заставил меня задуматься.

Я из Индии, и первое, что приходит на ум после того, как я слышу Индию, - это крикет. Здесь крикет - это религия. Иногда становится сложно сидеть перед телевизором и следить за ходом матча. Так почему бы не сделать что-то, что делает просмотр партитуры простым, беспроводным и портативным. Специальное крошечное устройство, которое показывает достаточно информации, чтобы держать вас в курсе, просто взглянув на него.

Не фанат крикета? Без проблем! Код содержит синтаксический анализатор XML, который можно использовать для получения данных из любого файла XML. Просто используйте правильные функции для получения данных.

Шаг 1: План

План
План

Планируется использовать NodeMCU Development Board (с модулем ESP-12E) для доступа в Интернет и запросить XML-код у Cricbuzz, который содержит всю информацию о текущих / предстоящих матчах. Этот код сохраняется на SD-карте в виде файла.xml. Затем файл считывается с SD-карты для анализа необходимых данных из XML-кода. Я буду использовать код В. А. Смита для анализа информации. Благодаря его усилиям. Посмотрите его проект, если хотите сделать то же самое с помощью Arduino и Ethernet Shield.

Моя идея - сделать его как можно меньше, построить для него специальную печатную плату и корпус. А пока сделаем прототип. Но сначала давайте познакомимся с компонентами, используемыми в этом проекте.

Давайте начнем

Шаг 2: OLED-дисплей

OLED-дисплей
OLED-дисплей
OLED-дисплей
OLED-дисплей

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

Я использую монохромный дисплей с драйвером SSD1306 и интерфейсом I2C (2-проводный). Также доступны версии дисплея SPI. Запускать их - простая задача. Загрузите библиотеки SSD1306 и GFX, необходимые для работы дисплеев. Спасибо Adafruit за написание этих библиотек.

Подключения очень простые.

  • GND к GND
  • VCC до 3,3 В
  • SCL в D1
  • SDA к D2.

Шаг 3: SD-карта и адаптер

SD-карта и адаптер
SD-карта и адаптер

SD-карта хранит XML-файл от Cricbuzz до тех пор, пока вся информация не будет проанализирована. После отображения необходимой информации файл удаляется. Использование SD-карты для хранения XML-файла размером 10–20 КБ немного излишне, но делает синтаксический анализ намного проще и понятнее.

Можно использовать любую карту памяти. Я выбрал карту micro SD из-за ее небольшого форм-фактора. Вы можете напрямую припаять провода к SD-карте, но использование коммутационной платы упрощает работу. Следует отметить, что все SD-карты предназначены для работы от 3,3 В. Это означает, что он не только должен получать питание от 3,3 В, но и связь между микроконтроллером и SD-картой должна иметь логический уровень 3,3 В. Напряжение выше 3,3 В УБИТ ЕГО! Что касается NodeMCU, мы не будем об этом беспокоиться, потому что сам NodeMCU работает на 3,3 В, что нормально. Если вы планируете использовать любой другой микроконтроллер с логическим уровнем 5 В, убедитесь, что ваша коммутационная плата имеет встроенный переключатель уровня (как показано на рисунке). Он в основном преобразует или «сдвигает» 5 В с микроконтроллера на 3,3 В. Использование переключателя уровня вместе с 3,3 В (как я) не влияет на его работу.

SD-карта использует интерфейс SPI для связи. Вывод CS или Chip Select может быть подключен к любому из выводов GPIO. Я выбрал GPIO15 (D8). Просто внесите необходимые изменения в код, если вы использовали пин, отличный от GPIO15.

  • SCK в D5
  • MISO в D6
  • MOSI в D7
  • CS в D8
  • VCC до 3,3 В
  • GND к GND

Отформатируйте SD-карту

Библиотека, которую мы будем использовать, поддерживает файловые системы FAT16 или FAT32. Убедитесь, что вы отформатировали SD-карту до правильного формата.

Шаг 4: Изготовление клавиатуры

Изготовление клавиатуры
Изготовление клавиатуры
Изготовление клавиатуры
Изготовление клавиатуры
Изготовление клавиатуры
Изготовление клавиатуры

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

Можно купить готовую матрицу клавиш, но кнопки у меня лежали. Кроме того, я хотел сделать его как можно меньше. Типичное расположение соединительных строк и столбцов потребует в общей сложности 6 контактов GPIO для матрицы 3 x 3. Это довольно много, учитывая, что будут подключены OLED-дисплей и SD-карта.

Если сомневаетесь, погуглите! Это то, что я сделал и нашел способ, которым понадобится всего 1 контакт для управления всей матрицей. Это стало возможным благодаря матрице делителя напряжения. Резисторы подключены между каждой строкой и столбцом. Когда клавиша нажата, определенная комбинация резисторов подключается последовательно, что создает делитель напряжения. См. Принципиальную схему. Изменяющееся напряжение будет считываться микроконтроллером. Каждая клавиша будет выдавать разное напряжение, поэтому можно легко узнать, какая клавиша была нажата, по выходному напряжению матрицы. Поскольку мы хотим считывать различные уровни напряжения, а теперь только высокие и низкие, нам понадобится аналоговый вывод. К счастью, на NodeMCU есть один аналоговый вывод, обозначенный как A0. Задача решена!

Если вы хотите купить матрицу, проверьте внутренние соединения, показанные на схеме. Может использоваться матрица любых размеров. Обязательно используйте резистор 2,2 кОм между рядами и резистор 680 Ом между столбцами.

Подключение кнопок

Контакты 1 и 2 имеют внутреннее соединение. То же самое с контактами 3 и 4. Когда кнопка нажата, все контакты соединяются вместе. Обратитесь к рисунку, чтобы получить представление о подключении переключателей на монтажной плате.

Я подключил 3-контактный штекер, чтобы его можно было подключить к основной плате позже.

Шаг 5: Собираем все вместе

Собираем все вместе
Собираем все вместе
Собираем все вместе
Собираем все вместе
Собираем все вместе
Собираем все вместе

Вы можете планировать размещение компонентов где угодно. Никаких ограничений на это. Я покажу вам, как я сделал это, чтобы сделать его компактным, так как я хотел что-то, что поместится на ладони. Это может немного запутаться, поэтому попробуйте мой способ, если вам удобно паять. Я решил заполнить обе стороны платы как двухслойную печатную плату. Плата NodeMCU и SD-карты с одной стороны и OLED и клавиатура с другой стороны.

Разъем для SD-карты просто помещается между двумя женскими разъемами, предназначенными для NodeMCU. Я распаял угловые штекерные разъемы, которые поставлялись с коммутационной платой, повернул их и снова припаял так, чтобы контакты шли перпендикулярно вниз, как показано на рисунке. Доступ к слоту для SD-карты становится проще.

Я согнул контакты 4-контактной розетки под прямым углом и припаял ее к медной стороне монтажной платы, как показано на рисунке.

Закройте паяные соединения под клавиатурой, чтобы предотвратить короткое замыкание. Добавьте тонкий кусок жесткого пенопласта (толщиной около 5 мм) между клавиатурой и материнской платой для дополнительной защиты и жесткости. Наконец, припаиваем клавиатуру, которую мы сделали ранее. Паяльник с заостренным наконечником наверняка упростит вашу работу. Сделать его настолько компактным, насколько это возможно, было непросто, но, наконец, это удалось.

Перед включением устройства дважды проверьте все соединения на предмет короткого замыкания

Шаг 6: Настройка клавиатуры

Настройка клавиатуры
Настройка клавиатуры

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

Теперь мы готовы настроить клавиатуру. Вспомните работу клавиатуры. Каждое нажатие клавиши будет выдавать различное напряжение, которое подается на аналоговый вывод NodeMCU. ESP-12E имеет аналого-цифровой преобразователь (АЦП) с разрешением 10 бит. 2 в степени 10 даст 1024. Это означает, что мы будем получать значение от 0 до 1024 для каждой нажатой клавиши. Посмотрим, какие показания мы получим. Но сначала мы должны написать небольшую программу, чтобы получить эти значения. Откройте Arduino IDE, скопируйте и вставьте следующий код и загрузите его в NodeMCU.

int keypadPin = A0;

void setup () {Serial.begin (115200); } void loop () {int r = analogRead (keypadPin); Serial.println (r); }

  • Откройте последовательный монитор. Установите скорость передачи 115200.
  • Теперь нажмите любую кнопку. Вы должны получать постоянные показания на последовательном мониторе. Небольшие колебания - это нормально. Об этом мы позаботимся в основном коде. Сделайте то же самое для каждой клавиши.
  • У каждого ключа должно быть разное чтение.
  • Запишите все значения. Они нам понадобятся позже.

Шаг 7. Давайте закодируем

Давайте код
Давайте код
Давайте код
Давайте код
Давайте код
Давайте код

Загрузите файл Scoreboard.ino, указанный ниже, на свой компьютер и откройте его с помощью Arduino IDE.

Перед загрузкой

1) Установите время обновления табло. Например, 15л на 15 сек.

2) Введите SSID и пароль маршрутизатора, к которому вы хотите подключиться.

3) Внесите необходимые изменения, если вы решили подключить вывод CS SD-карты к выводу, отличному от GPIO15.

4) Помните значения, которые мы записали для всех ключей? Мы должны назначить ключевой номер для каждого значения. Я также говорил вам о колебаниях чтения. Это из-за того, что контакты переключателя не идеальны. В конечном итоге это значение может отклоняться от текущего значения из-за старения контактов, которое добавляет дополнительное сопротивление в цепи, что приводит к изменению напряжения. Мы можем решить эту проблему в коде.

Мы добавим верхний предел и нижний предел значения с запасом 5. Например, я получил значение 617 для ключа 1.

  • Вычтите из него 5. 617 - 5 = 612. Это нижний предел.
  • Теперь добавьте к нему 5. 617 + 5 = 622. Это верхний предел.
  • Прокрутите код до конца. Заполните пространство, отведенное для двух значений в коде, как показано на рисунке.
  • Сделайте это для каждых 9 значений.

если (г> 612 && г <622) {номер ключа = 1; }

Что это значит?

ЕСЛИ показание (r) больше 612 И меньше 622, то нажимается клавиша 1. Любое значение от 612 до 622 будет рассматриваться как ключ 1. Это решает проблему колебания показаний.

Шаг 8: создание кейса

Создание дела
Создание дела
Создание дела
Создание дела
Создание дела
Создание дела
Создание дела
Создание дела

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

Подготовили детали к склеиванию, зачистив края наждачной бумагой. Я использовал Fevi Kwik (супер клей), чтобы соединить все части вместе. После высыхания суперклей оставляет белый осадок. Так что наносите его только между стыками. Работая с суперклеем, нужно действовать быстро и аккуратно, поскольку он быстро схватывается. Акриловый цемент лучше всего подходит для этой работы.

Сделал небольшое отверстие для доступа к USB-порту с помощью файла. Он должен быть достаточно большим, чтобы можно было вставить шнур USB.

Создал сетку 3x3 на передней крышке для кнопок. Это затруднит доступ к кнопкам. Чтобы решить эту проблему, я вырезал квадратные кусочки для каждой клавиши, чтобы их кнопки теперь выходили на поверхность.

После стольких работ по шлифовке, резке, установке и регулировке, наконец, все было готово!

Шаг 9: получайте удовольствие

Повеселись!
Повеселись!

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

После включения он сначала подключается к точке доступа. Инициализирует SD-карту. Он покажет ошибку, если SD-карта не инициализирована.

Список всех совпадений будет отображаться вместе с номером матча.

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

Результаты будут отображаться. Вы можете настроить все, что хотите видеть на дисплее. Я бы не стал слишком углубляться в объяснение кода. Здесь вы можете найти подробное объяснение того, как работает синтаксический анализ.

Чтобы вернуться в меню, удерживайте кнопку НАЗАД (клавиша 8), пока не отобразится страница «Получение результатов…».

Планы на будущее

  • Создайте собственную печатную плату с модулем ESP8266 12-E.
  • Добавьте аккумулятор.
  • Улучшите код с помощью новых функций.

Надеюсь, вам понравилась сборка. Сделай сам и получай удовольствие! Всегда есть место для совершенствования и есть чему поучиться. Придумывайте свои собственные идеи. Не стесняйтесь комментировать любые предложения по сборке. Спасибо, что дожили до конца.

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