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



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

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

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


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

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

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

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

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


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







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


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



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

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

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

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

А что в итоге?


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

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

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

Комментарии (17)


  1. evgenij_byvshev
    29.11.2018 18:00
    +3

    Ожидал в конце статьи увидеть видео :(


    1. Anton23
      29.11.2018 19:43

      Не могу плюсануть комментарий выше, поэтому пишу +


  1. k0ldbl00d
    29.11.2018 18:12
    +1

    А просверлить в диске отверстие и добавить оптрон вам в голову не пришло?


    1. Demon_i
      29.11.2018 18:29

      Можно же обойтись концевиком (любой кнопкой) и наклеить на диск рычаг.


      1. k0ldbl00d
        29.11.2018 19:06

        Механика менее надёжна, создаёт сопротивление и всё такое. Оптика надёжнее, и по подключению так же просто.


        1. Iv38
          29.11.2018 20:29
          +1

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


    1. shushu
      30.11.2018 05:47

      Просверлить в отсутсвующем диске отверстие? :)


      1. T_Sun
        30.11.2018 09:20
        +1

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


  1. Barsuk
    29.11.2018 18:24
    +2

    Диск надо было оставить, даже не функциональным. Дыра вместо диска выглядит отстойно.


    1. GennPen
      29.11.2018 20:23
      +1

      Да просто оставить крутящийся диск-муляж на отдельном двигателе.


      1. savagebk
        29.11.2018 21:49
        +1

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


  1. bugdesigner
    29.11.2018 20:08
    +1

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


    1. AlexanderG
      30.11.2018 14:57

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


  1. tormozedison
    29.11.2018 23:01

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


    1. Ksiw
      30.11.2018 11:44

      полсекунды для этих целей будет более чем достаточно


  1. spc
    30.11.2018 09:30
    +1

    По стилю изложения напомнило «авокадо мы заменили отварным картофелем, а креветки — поджаренным салом, но в целом ваш рецепт салата из авокадо с креветками нам очень понравился», простите )


  1. batman12345
    30.11.2018 10:49

    — Оригинальная конструкция, — сказал наконец один из них, — заря автомобилизма. Видите, Балаганов, что можно сделать из простой швейной машинки Зингера? Небольшое приспособление — и получилась прелестная колхозная сноповязалка.