Пластик Watson для 3d-печати. (Экзотика, резина)

Только что получил новый филамент Ватсон от bestfilament.ru. Пластик этот гибкий, мягкий и прозрачный.

IMG_8278

Поставляется в катушках 1 кг и 0.5 кг. У меня держатель только для катушки 1 кг, поэтому по-быстрому сообразил подвес для этой катушки.

IMG_8298

Сразу в печать! Настройки берем от PLA: 230 градусов на экструдере, 85 на столе. Без охлаждения модели.

IMG_8288

Клей: Ацетон+ABS пластик. Держит отлично, как обычно.

IMG_8293

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

Макро готовой модели:

IMG_4929

IMG_4924

Немного о поставщике:

Bestfilament.ru — самый выгодный пластик, что мне удалось найти (я не сильно старался). При этом пластик хорошего качества. Есть обычный PLA и ABS, экзотика Ватсон (вот этот) и HIPS. Компания находится в Томске, сырье Европа.

 

 

3d принтер и проектирование

Настало время рассказать, чем я занимался январь и февраль.

На новый год у меня появился 3d принтер Mendel Max 1.5. Купил в MakeItLab.

IMG_8215

Сейчас он выгляди так. Что изменилось с момента покупки:

Переехал на кухню. Звуки он производит довольно интересные, но спать при нем невозможно. Принтер поддерживает печать с SD карты, так что остается только подключить питание.

IMG_8216 IMG_8219 Изменена конструкция экструдера на Bowden — когда филамент подается по трубке, а не напрямую с мотора. Это позволяет облегчить каретку в целом.IMG_8220

Следовательно, перемещен мотор экструдера на корпус.

IMG_8228

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

Добавлены и убраны светодиоды, вентиляторы и так далее.

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

Софт

Печать произвожу в cлайсере Cura.

Screen Shot 2016-02-27 at 18.16.32

Проектирование сначала делал в 123D Design.

Screen Shot 2016-02-27 at 18.20.16

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

На данный момент для проектирования я выбрал Fusion 360 от того же Autodesk.

Screen Shot 2016-02-27 at 18.22.49

Множество приятных фишек, щепотка глупостей. Очень много информации в интернете по его функционалу.

Программа бесплатная для некоммерческого использования и бизнеса с заработком меньше $200 000 в год.

Филамент

Сразу с принтером купил PLA от Bestfilament из Томска. Других материалов не пробовал, поэтому сравнивать не с чем.

Был неприятный момент с ним. Пластик посередине катушки пошел кривой, пришлось 2 раза перебрать экструдер. Написал ребятам, выслали мне бесплатно катушку ABS. Очень оперативно и правильно решили вопрос.

IMG_8225

Адгезия

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

IMG_8246

Многие мелочи не рассказал, вы спрашивайте.

IMG_8238 (1)

Пуленепробиваемый код для debounce кнопок на Arduino и Atmega

Screen Shot 2015-11-11 at 03.23.51Дребезжание (bounce) кнопок в устройствах — неприятная вещь. При нажатии на кнопку, перед, собственно, срабатыванием между контактами проскакивают небольшие искры и контакт замыкается/размыкается несколько раз. Таким образом, невозможно просто подключить кнопки, необходимо придумывать компенсацию эффекта дребезга (debounce).

switch_debounce_04_lrgВ сети масса способов решения этой проблемы. Основной способ — ввести временную задержку. Я написал код на основе сетевой мудрости и нарисовал для вас схему подключения. Сразу заметно, что напрямую Atmega припаивать проще и приятней, чем Arduino. У кнопок и светодиодов общая масса (GND), так что на две кнопки три контакта.

В этой схеме при нажатии кнопки возникает замыкание на массу, а в коде прописано срабатывание, когда контакт размыкается. !digitalRead() == TRUE именно при замыкании на массу. Напоминаю, что ! обозначет логическое НЕ.

Для противников огромного количества пассивных элементов в схеме используется инструкция Atmega для включения внутреннего подтягивающего резистора INPUT_PULLUP.

Код:

#define button1 2
#define button2 3
#define light 0
void setup() {
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
attachInterrupt(0, script, FALLING);
attachInterrupt(1, script, FALLING);
pinMode(light, OUTPUT);
}

void script(){
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis();
if (interrupt_time — last_interrupt_time > 150)

//далее пишем свой код, я просто включаю здесь лампочку
{
if (!digitalRead(button1)) {
digitalWrite(light, HIGH);
}
if (!digitalRead(button2)) {
digitalWrite(light, LOW);
}
}
last_interrupt_time = interrupt_time;
}
void loop() {
}

 

Handsontable и jsFiddle. Иногда VPS не нужен.

Screen Shot 2015-11-12 at 20.21.28Screen Shot 2015-11-12 at 20.22.34
Чтобы установить софт на сервер, провайдер предлагает как правило VPS хостинг вместо Shared. VPS (виртуальный частный сервер) это как серьезный компьютер, а Shared — просто файлики и phpMyAdmin. Мы разберем, как обойти это недоразумение и заодно экспортируем из jsFiddle.

Я захотел поставить себе табличный плагин на сайт: Handsontable. Интересующимся темой рекомендую. Эта система — самая продвинутая из всех, что я нашел.

Она устанавливается через пакетный менеджер Bower, за что им отдельное фу. Такие вещи надо делать через apt, и не о чем тут разговаривать.

В любом случае, техподдержка Макхост сказала мне, что это возможно только через VPS. Грусть продлилась недолго. Смотрим:

  1. Handsontable выкладывает все примеры в jsFiddle (еще один замечательный сервис). Берем первый попавшийся пример:

  • Делаем себе на сервере новую папку и в ней вайл index.html
  • Упаковываем из jsFiddle в HTML:
    • Из HTML копируем в начало файла index.html
      • <div id=»basic_example»></div>
    • Из CSS копируем затем.  Переставляем закрывающий тег </style> в конец блока.
      • <script src=»https://code.jquery.com/jquery-1.11.1.min.js»></script>
        <link href=»http://handsontable.com//styles/main.css» rel=»stylesheet»>
        <link href=»http://handsontable.com//bower_components/handsontable/dist/handsontable.full.min.css» rel=»stylesheet»>
        <script src=»http://handsontable.com//bower_components/handsontable/dist/handsontable.full.min.js»></script>
        <style type=»text/css»>
        body {background: white; margin: 20px;}
        h2 {margin: 20px 0;}
        </style>
    • Из JavaScript копируем после этого. Заключаем весь этот блок в теги <script> </script>
      • <script>
        $(document).ready(function () {
        var container = document.getElementById(‘basic_example’);
        var data = function () {
        return Handsontable.helper.createSpreadsheetData(100, 12);
        };
        var hot = new Handsontable(container, {
        data: data(),
        height: 396,
        colHeaders: true,
        rowHeaders: true,
        stretchH: ‘all’,
        columnSorting: true,
        contextMenu: true
        });
        });
        </script>
    • Сохраняем и любуемся: yagodin.com/t2

Резонный вопрос: что произошло?

  • Мы подключили необходимые скрипты с других сайтов. Можете их себе на сайт положить при желании.
  • Упаковали скрипты, стили в один файл, который теоретически должен открываться с любого устройства, на любом сайте.
  • Расправились с экспортом из jsFiddle.

 

Перейти с Arduino на настоящие микроконтроллеры Atmega 168/328 по-быстрому.

Screen Shot 2015-10-01 at 11.23.45Играть с Ардуино весело, однако, это все похоже на детские шалости. В самом деле, подавляющее большинство проектов представляют собой погодные станции, мигалки диодами и подключение датчиков друг к другу. Предположим, не смотря ни на что, вы собрали что-то стоящее. Пора запустить это на настоящем микроконтроллере, уменьшить конструкцию, избавиться от лишнего, да и просто стать чуть круче в том, что называют Making.

Держите проект в Fritzing.

barebones-arduino_Arduino-no-FTDI-SY.fzz

Он позволяет подключить все компоненты как к Arduino (выходы размечены), но работать будет все на микроконтроллере Atmega 168 или 328. Схематика и плата должны в программе развестись автоматически.

Проект доделан на основе выложенного на официальном сайте Fritzing.

Несколько полезных ремарок:

  • Fritzing на моей памяти был программой, которая позволяла модно нарисовать ваш Ардуино проект. Для рисования настоящей схематики и разводки плат использовали Eagle. Оказывается, все это можно делать прямо в Fritzing, по большей части на автомате и даже заказать производство платы на фабрике прямо из программы. Программа бесплатная, наиболее далека от духа Windows, хотя есть и свои глупости в ней. Сохраняйтесь почаще.
  • Микропрограмму пишем в Arduino IDE. Заливаем на чип. Для меня это похоже на чудо, но это правда. Писать можно на Ардуинском С или на AVR C, что позволяет заполучить лучшее из двух миров.
  • Программатор я использую Usbasp, купленный за 200 рублей. Его подключение тоже нарисовано в скетче. Рекомендую не пользоваться комплектным проводом, а подключать напрямую к программатору, чтобы не перепутать контакты местами. Потом разберетесь с проводом.
  • Real-tracking-number-1PCS-USBasp-USB-ISP-5V-AVR-Programmer-USB-ATMEGA8-ATMEGA128-with-shell-1PCS
  • Важно: не прошивайте Arduino Bootloader из Arduino IDE. Работает все и без него, но он выставляет Fuse на микроконтроллере таким образом, что микроконтроллер не работает. Это происходит потому, что Arduino рассчитана на использование с внешним осциллятором (кристаллом), а вы его скорее всего не подключили. На схеме он изображен, но не обязателен. У Atmega есть встроенный осциллятор на 8 MHz.
  • Для манипуляции Фьюзами пользуйтесь AVRFuses. Только, если вы понимаете, что делаете. Я также с помощью этой программы проверяю, отзывается ли микроконтроллер.
  • Для того, чтобы контроллер запустился, необходимо подключить все линии питания (на схеме это GND черные и VCC красные).
  • Для проверки работоспособности не обязательно отключать программатор. Устройства, использующие ту же шину, как правило не мешают друг другу.
  • Установите поддержку Atmega 168 и 328 в Arduino IDE. Мануал и список репозиториев. Там же можете добавить Attiny.
  • Если не прошивается, нажимайте Reset на схеме при заливке программы в контроллер.

 

 

 

Запустить два (или больше) звука в браузере и на iOS.

iphone-html5

К примеру вы делаете браузерную игру. В принципе для одновременного запуска двух звуков на HTML5 ничего делать особо не надо:

<button onclick="playTheFirst()" type="button">PlayFirstTrack</button>
<button onclick="playTheSecond()" type="button">PlaySecondTrack</button>
<audio id="track1" mediagroup=mixmp3 src="FirstTrack.mp3" controls>
</audio>
<audio id="track2" mediagroup=mixmp3 src="SecondTrack.mp3" controls>
</audio>
<script>
        var play1 = document.getElementById("mix1");
        var play2 = document.getElementById("mix2");
function playTheFirst() {
play1.play();
}
function playTheSecond() {
        play2.play();
 }
</script>
  • mp3 должны лежать в доступном месте, проще поставить полноценный линк.
  • Тег mediagroup позволит разделить сниппеты на одной странице. Например, у вас таких скриптов на странице >1 и вы желаете, чтобы каждый управлялся своей кнопкой.
  • На этом сайте я пользуюсь WordPress-сниппетами, конкретно XYZ Html. Просто вставляю туда, чтобы не думать, как там вордпресс все воспринимает.
  • Этот пример работает на yagodin.com/pod

Самое интересное начинается, когда мы пытаемся воспроизвести этот нехитрый прием на смартфоне, а точнее на iPhone. Оказывается, наш любимый телефон полифонию не поддерживает. Предлагается множество вариантов решения этой глупой проблемы, а я расскажу о работающем безотказно. Для этого мне пришлось сделать отдельную html страничку, а не мучать вордпресс.

Я нашел проект lowlag.js, который отлично справляется с задачей. Прямо по lowlag подробно описана установка. Я рекомендую взять код вот этой страницы playground page, скопировать его и изменять под свои нужды.

Как установить:

  • Создаем папку у себя на сервере.
  • Закачиваем туда lowlag.js и распаковываем и закачиваем архив sm2.zip
  • Создаем в той же папке на сервере новый index.html, в который копируем код playground page (⌥⌘U в Safari чтобы открыть код).
  • Создаем папку plucks и закачиваем туда mp3. ( в строке lowLag.init({‘debug’:’both’,’urlPrefix’:’plucks/’ }); указывается эта папка, можете изменить)
  • Правим код страницы index.html: lowLag.load([‘pluck1.mp3′,’pluck.ogg’],’pluck1′); lowLag.load([‘pluck2.mp3′,’pluck2.ogg’],’pluck2′); — имена наших звуков, которые лежат в папке plucks.
  • Правим названия кнопок, их расположение и так далее.

Для большей совместимости рекомендуется звуки также экспортировать в OGG. Также OGG Vorbis – абсолютно бесплатный формат, а MP3 вобще-то платный и производители компрессоров и декомпрессоров платят роялти. В коммерческих продуктах не используйте MP3. Скрипт подхватывает подходящий формат для платформы.

Наверное не стоило этого писать, но обращаясь к папке на сервере, в которой у вас лежат файлы, браузер в первую очередь откроет лежащий в ней index.html, поэтому можно не писать его в строке адреса. Иными словами это эквивалентно: yagodin.com/podt и yagodin.com/podt/index.html

 

Издать и продать свои песенки на стареньком Fruity Loops во всех основных интернет магазинах.

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

Distrokid. Ты просто заходишь на этот сайт и через пару кликов и $19.99 ты публикуешь неограниченное количество песен в iTunes, Google Play, Rdio, Spotify, Deezer, Beats Music, Amazon. Добавили возможность отправить в Tidal и Youtube Music Key (я их не знаю). Означенная сумма — стоимость годовой подписки, по истечении его музыку уберут, а может быть и нет (в хелпе так было написано).Screen Shot 2015-01-21 at 20.53.06

Магазин Альбом Каждая песня Доступно в России
iTunes 60 р 15 р Да
GooglePlay 40 р 10 р Да
Amazon $3.56 $0.89 Да
Deezer 0 0 Да
Rdio Нет
Spotify Нет
Beats Music Нет

Права становятся как следует защищены, у тебя появляется лейбл Records DK, у песен появляется ISRC.

Каков результат? $1.17 в год, кто-то купил в России целый EP из 4 песен, 1 раз нашлось в iTunes Мatch.

Огуречная технология

Однажды я сделал это.

Pikabu дал 40 000 просмотров на youtube. Ребята плакали от смеха, а это был мой первый проект на Ардуино. Давно хотел сделать автоматическую нажималку для этих тупых игр. Особенно после этого проекта, где пришлось хоть немного головой подумать.

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

Совершенно случайно я попробовал токопроводящую краску Bare Conductive. Достаточно нанести ее на экран в нужное место и прикасаться к ней проводом, который подключается к GND.

IMG_4516IMG_4521

Испытано, такая система может проработать более 3 дней без перерыва.

 

Запилил инструкцию на Instructables, который дал еще 14k просмотров исходного видео.

 

Google Spreadsheets и Lookup, который не работает

В Google Sheets много хорошего. По сравнению с Pages и Excel. Один только LOOKUP плохой. Он неточный (рекомендуется использовать INDEX (MATCH) метод). И, что совершенно непонятно,  LOOKUP ищет только в двух столбцах. Пришлось разобраться, как обойти это ограничение и справиться с задачей.

Предположим, у нас была команда следующего вида:

=LOOKUP (a1, B:E, F, 0)

Где a1 – искомое, B:E – диапазон из 4 столбцов, в котором мы ищем, F – столбец, из которого мы хотим вывести результат, 0 – параметр, указывающий, что нам нужно точное соответствие.

Команда по разному может писаться в разных редакторах, но суть одна. И она у меня работала в Pages. В Google Spreadsheets вы получите ошибку, в примере 4 столбика.

Я подобрал замену на языке запросов Google Visualization Engine:

=QUERY(table!B:E,«select E where B contains ‘»&F3&«‘ or C contains ‘»&F3&«‘ or D contains ‘»&F3&«‘»)

Где table!B:E – ссылка на диапазон, где будем искать, F — столбец в листе table, из которого будем выводить результат, A, B, C, D  – столбцы в листе table, в которых будем осуществлять поиск, F3 – клетка с искомым в данном листе.

F3 нужно оформить кавычкой (‘), но при этом она должна быть вне текстового запроса, поэтому наворочены такие страшные кавычки.

Instagram Name Take Back Machine

Recently i discovered a flaw in Instagram.

[Sorry Russian users. This post will be on my bad English]

Well, generally this is not a flaw but using one special technique you can catch username when its crossing through traders. It happens when they change donor username to something less meaningful and then quickly change recipient username to that donor username.

For example the desired name is INSTAGRAMUSERNAME and they want to move it from meaninglessemail1@gmail.com to meaninglessemail2@gmail.com. So on user with first email they change username to INSTAGRAMUSERNAMEuselesssuffix and on second email they change any username to INSTAGRAMUSERNAME. This happens once a week according to my observations.

And i developed a technique how to catch username in the middle of this process.

This is not a hack actually and the flaw it uses cannot be called vulnerability. But it helps when you lost your precious username for any reason and you want it back.

I wrote about this to Instagram support and promised not to release this technique next two days. After that i’ll write post about this.