Счётчик лайков в Facebook из старого электросчётчика

Мы сделали физический счётчик лайков страницы студии в Facebook. Из старого электросчётчика. В основе программируемая плата Iskra Neo от «Амперки» (аналог «Ардуино») и сервомотор постоянного вращения.

Чтобы наблюдать за ростом лайков, мы поставили онлайн-камеру, направленную на счётчик, и вынесли сюда кнопку лайков (мы, конечно, хотим набрать лайков на страницу, но не только). Ещё мне нравится разбираться с электроникой и управлять вещами через интернет.

Это первый опыт.

Как это сделано

Электроника для получения лайков уже была собрана и опробована в проекте «Амперки», её достаточно только собрать. Оказалось, что это не так просто, когда я захотел вместо «Искры» сделать всё на Arduino Uno. Не получилось из-за разных принципов работы с UART(через него получает сигналы WiFi-модуль). Чтобы не писать программный UART, пришлось забить на «Ардуино» и использовать оригинальную Iskra Neo.

Модуль не может запрашивать количество лайков напрямую у страницы в Facebook, так как не работает с HTTPS. Чтобы обойти ограничение на сервер, вешается PHP-скрипт, который узнаёт количество лайков и выдаётся в виде переменной. А модуль уже обращается к адресу этого PHP-скрипта с помощью AT-команд. (Помните, раньше модему можно было сказать ATDP XXX, где XXX — это телефонный номер, и он начинал по нему звонить? Вот это они и есть.)

Электроника была готовая. Оставшиеся задачи я разделил на две части.

  1. Привод для счётчика.
  2. Управляющая программа.

Привод для счётчика

Было бы здорово сделать элегантное решение подключения счётчика с подачей тока на оригинальные катушки. Тогда можно было и оставить вращающийся диск и по минимуму вмешиваться в конструкцию. Но это сложно реализовать, поэтому отложили до следующей версии. Сейчас в счётчике сервомотор постоянного вращения прикреплён напрямую к шестерням, вращающим счётчик.

Управляющая программа

Сначала я посчитал, на сколько миллисекунд нужно включать мотор, чтобы он поворачивал диск на один оборот. Получилось примерно 1650 мс. Тут же выяснилось, что это число меняется от напряжения в сети (а оно почему-то иногда скачет) и от гуляния колёсиков счётчика. Они были разработаны лет 50 назад и плюс-минус полцифры тогда роли не играли.

Вот оригинальное устройство для получения лайков из интернета

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

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

В программе предусмотрена переменная, которая хранит количество лайков на физическом счётчике. При выключении питания она сохраняется в EPROM и при включении оттуда же берётся обратно.

Это нужно, чтобы при отключении от сети знали, на сколько надо поправить счётчик.

В итоге

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

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

Доработаем в следующей версии.

0
58 комментариев
Написать комментарий...
Лев Толстой

Задумка хорошая, а вот реализация убогая.

Чтобы узнать точное количество градусов, на которое мотор повернул колёсики, понадобится датчик вроде датчика положения дроссельной заслонки на автомобиле, это сложно

Выпили ямку на краю диска и поставь микропереключатель с рычажком - будет тебе счётчик оборотов. Сделаешь две таких и будет инкрементальный энкодер. Микрик заведи на прерывания той же ардуины.

И вообще изначально это надо было делать на ESP модуле.

Ответить
Развернуть ветку
Artyom Petrovich
Автор

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

Ямка на краю диска покажет только оборот диска целиком. А он может повернуться на 300 градусов вместо 360, и как это отслеживать? Там механику надо дорабатывать вместе с электроникой.

Ответить
Развернуть ветку
Лев Толстой
А он может повернуться на 300 градусов вместо 360, и как это отслеживать?

Зачем? Один оборот диска - одно переключение цифры. Надо точнее - энкодер поставь на вал движка.

Ответить
Развернуть ветку
Лев Толстой

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

Ответить
Развернуть ветку
55 комментариев
Раскрывать всегда