Счетчик Фейсбук-лайков из старого электросчетчика

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



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

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

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


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

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

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

  • Привод для счетчика
  • Управляющая программа

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


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







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


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



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

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

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

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

А что в итоге?


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

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

Доработаем в следующей версии.
Поделиться публикацией

Комментарии 25

    +6
    Ожидал в конце статьи увидеть видео :(
      –6
      Не могу плюсануть комментарий выше, поэтому пишу +
        0
        Камера стоит и трансляция видео есть у нас на сайте. Просто в статью это не вставить даже в виде ссылки, это рекламные ограничения хабра.
        +2
        А просверлить в диске отверстие и добавить оптрон вам в голову не пришло?
          0
          Можно же обойтись концевиком (любой кнопкой) и наклеить на диск рычаг.
            0
            Механика менее надёжна, создаёт сопротивление и всё такое. Оптика надёжнее, и по подключению так же просто.
              +2

              Или геркон. По подключению как концевик, и бесконтактно.

            0
            Просверлить в отсутсвующем диске отверстие? :)
              +4
              В этом случае необходимо вокруг уже существующего отверстия создать необходимый диск.
                0
                Тогда уж «внутри» отверстия :)
            +3
            Диск надо было оставить, даже не функциональным. Дыра вместо диска выглядит отстойно.
              +1
              Да просто оставить крутящийся диск-муляж на отдельном двигателе.
                +2

                И подавать на этот отдельный двигатель напряжение синхронно с включением двигателя счётчика. А на сколько диск провернется это же не важно

                  0
                  Вот это хорошая мысль! Попробую так сделать, все равно меняю сервомотор сгоревший.
                0
                Я согласен. Это MVP )
                +2

                При дизлайках нужно в обратную сторону диск прокручивать. Тогда будет виден "баланс"

                  0
                  Никому не интересный факт: на электровозах при рекуперации счетчик действительно мотает назад. И установлен второй, который считает только «экономию».
                  0

                  Микроконтроллер при выключении питается полсекунды от конденсатора и успевает записать текущее значение в EEPROM?

                    0
                    полсекунды для этих целей будет более чем достаточно
                      0
                      у AVR помнится был какой то косяк связанный с этим моментом.
                    +10
                    По стилю изложения напомнило «авокадо мы заменили отварным картофелем, а креветки — поджаренным салом, но в целом ваш рецепт салата из авокадо с креветками нам очень понравился», простите )
                      +1
                      — Оригинальная конструкция, — сказал наконец один из них, — заря автомобилизма. Видите, Балаганов, что можно сделать из простой швейной машинки Зингера? Небольшое приспособление — и получилась прелестная колхозная сноповязалка.
                        0
                        Чтобы наблюдать за ростом лайков, мы поставили онлайн-камеру…
                        WAT?
                          0
                          На сайте висит у нас
                            0
                            а вариант получать количество лайков через curl или еще как небудь?

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое