Split Flap Display - Antique Remix: 6 шагов (с изображениями)

Split Flap Display - Antique Remix: 6 шагов (с изображениями)
Split Flap Display - Antique Remix: 6 шагов (с изображениями)
Image
Image
Разделенный дисплей с откидной крышкой - Antique Remix
Разделенный дисплей с откидной крышкой - Antique Remix
Дисплей с разделенным клапаном - Antique Remix
Дисплей с разделенным клапаном - Antique Remix
Дисплей с разделенным клапаном - Antique Remix
Дисплей с разделенным клапаном - Antique Remix

Я всегда хотел поиграть с дисплеем с разделенным клапаном, но до сих пор мне не удавалось заставить его работать удовлетворительно. Во-вторых, во многих сборках также используются элементы, вырезанные лазером, к которым у меня нет доступа. Итак, когда это пришло от Джонаса Бонжана, я обнаружил его на

Я создал один из них, но также хотел встроить в него автономную электронику, и у меня возникла идея сделать его антикварным.

Шаг 1: Шаг 1 - файлы сборки

Шаг 1 - файлы сборки
Шаг 1 - файлы сборки
Шаг 1 - файлы сборки
Шаг 1 - файлы сборки
Шаг 1 - файлы сборки
Шаг 1 - файлы сборки

Начиная с базовых моделей, я переделал почти все детали, кроме закрылков. Помимо встраивания корпуса для платы Wemos, я также добавил кое-что для установки платы привода ULN2003.

Итак, вы видите здесь несколько тестовых сборок, основанных на сочетании оригинальных частей и некоторых модифицированных компонентов. Здесь используются подшипники 625ZZ с внешним диаметром 16 мм и толщиной 5 мм с внутренним диаметром отверстия 5 мм. Хорошие маленькие альтернативы обычным подшипникам fidget / skateboard. Вы можете получить их дешево также в упаковках по 10 штук.

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

Все последние файлы можно найти на

Шаг 2: Шаг 2: Сборка машины

Шаг 2: Сборка машины
Шаг 2: Сборка машины
Шаг 2: Сборка машины
Шаг 2: Сборка машины
Шаг 2: Сборка машины
Шаг 2: Сборка машины

Собрать все это довольно просто, что и привлекло меня в этом дизайне. Есть пара деталей, на которых нужно правильно их собрать. Главный, конечно же, барабан. Вам нужно будет добавить проставку внутри, чтобы она удерживала выступ барабана на одном уровне с механическим упором. Другой - установить все створки, чтобы они не упали на пол. Я попытался собрать сборочное приспособление, но не смог дождаться, в конце концов, и просто использовал много блю-так, чтобы удерживать закрылки на месте. Когда они все выровнены одинаково, верх продолжается, и 2-миллиметровый болт скрепляет все вместе.

Укорочение проводов на шаговом двигателе и на переключателе также необходимо, чтобы все было красиво и аккуратно. Кусочки термоусадки на каждом проводе, чтобы предотвратить короткое замыкание, а также сократить длину всех проводов для Wemos.

Шаг 3: Шаг 3: Программное обеспечение

Шаг 3: Программное обеспечение
Шаг 3: Программное обеспечение

Программное обеспечение предназначено для Wemos D1 Mini R2 и работает на Arduino, если вы удалите части Wi-Fi. Принцип, лежащий в основе этого, заключается в том, чтобы установить датчик конечного останова на прерывание, которое обнуляет положение шагового двигателя. Затем вы можете каждый раз перемещать барабан в желаемое положение, зная, что ноль всегда один и тот же. Чтобы определить шаги, необходимые для каждого закрылка, с учетом количества шагов, которые есть у стандартных двигателей и зубчатой передачи, я просто сделал это задом наперед. Итак, я собрал все это вместе и просто запустил шаговый двигатель, считая шаги для нескольких оборотов, чтобы получить своего рода среднее значение, а затем разделил его на 12. Это вроде как сработало примерно при 225 шагах на закрылки. Затем, чтобы гарантировать, что если вы хотите перейти в исходное положение, вы проедете шаговым двигателем через это значение до 2800 шагов, зная, что перед этим он коснется переключателя исходного положения и будет обнулен. Единственная другая серьезная проблема заключается в том, что я обнаружил две разные схемы подключения этих шаговых двигателей. Старые, которые у меня были, пошли другим путем, и при осмотре вы можете увидеть, что 5 проводов к двигателю были в другом порядке. Однако все последние, которые у меня есть, работают с этим кодом.

Я также использую службу ввода-вывода Adafruit, которая, в свою очередь, получает данные из IFTTT. Вы можете использовать ядро и просто загружать все, что хотите, или вы даже можете управлять им вручную через последовательный порт программирования, набрав количество шагов, которое вы хотите, или использовать m1, m2 и т. Д., Чтобы перейти непосредственно к положению откидной створки для тестирования.

Код:-

// Контроллер разделенной заслонки с использованием Wemos D1 R1 с шаговым двигателем 28BYJ-48

/ ************************* Конфигурация ********************** ************* / // Детали соединения Adafruit IO #define IO_USERNAME "io-username-here" #define IO_KEY "io-key-here" // оставьте поле пустым, поскольку мы получим их через Wifi Manager при запуске #define WIFI_SSID "" #define WIFI_PASS "" // Они настраивают все включения для запуска компонента Wi-Fi и диспетчера настройки #include //https://github.com/esp8266/Arduino #include #include #include "WiFiManager.h" //https://github.com/tzapu/WiFiManager #include // Служба очереди Adafruit, куда мы отправляем данные IFTT, а затем можем их загрузить #include "AdafruitIO_WiFi.h" AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS); // Библиотека драйвера шагового двигателя #include #define HALFSTEP 8 # define HALFSTEP 8 // Значения Wemos для упрощения адресации контактов static const uint8_t D0 = 16; статическая константа uint8_t D1 = 5; статическая константа uint8_t D2 = 4; статическая константа uint8_t D3 = 0; статическая константа uint8_t D4 = 2; статическая константа uint8_t D5 = 14; статическая константа uint8_t D6 = 12; статическая константа uint8_t D7 = 13; статическая константа uint8_t D8 = 15; // Соединительные контакты для шагового контроллера #define motorPin1 D5 // Плата драйвера IN1 #define motorPin2 D6 // Плата драйвера IN2 #define motorPin3 D7 // Плата драйвера IN3 #define motorPin4 D8 // Плата драйвера IN4 // Определение контактов, используемых для обнаружение Home #define home_switch D3 // Контакт 2, подключенный к Home Switch (MicroSwitch) - не лучший контакт, поскольку он останавливает загрузку программы, если она не открыта int incomingByte = 0; // для входящих последовательных данных int flacker = 0; // подсчитываем, для чего закрыта крышка int переходящий остаток = 0; // значение для переноса // требуется позиция чтения const byte numChars = 6; char gotChars [numChars]; // массив для хранения полученных данных boolean newData = false; // Начальное значение возврата к началу отсчета long initial_homing = -1; // Используется для Home Stepper при запуске // Определите шаговый двигатель и контакты, которые он будет использовать. AccelStepper stepper1 (8, motorPin1, motorPin3, motorPin2, motorPin4); // настраиваем канал 'twitterfan', канал, к которому мы подключаемся, чтобы получать обновления AdafruitIO_Feed * twitter = io.feed ("twitterfan"); // Сохраняет данные и статус последнего твита, поэтому мы запускаем только один раз String lasttweet = ""; bool newTweet = false; int tweeter_number; // Здесь все подробности настройки void setup () {Serial.begin (115200); Serial.println («привод раздельной заслонки - 225 ступеней заслонки»); // для тестирования показываем статус WiFi WiFi.printDiag (Serial); WiFiManager wifiManager; // установить обратный вызов Wi-Fi, который вызывается в случае сбоя подключения к предыдущему Wi-Fi, затем вызывается настройка точки доступа wifiManager.setAPCallback (configModeCallback); // сбрасываем сохраненные настройки, не комментируем эту следующую строку, чтобы принудительно провести тестирование WiFi Manager, чтобы вы могли подключиться // использовать свой телефон или планшет для поиска сети Split flap, которая появится // wifiManager.resetSettings (); // устанавливает тайм-аут до выключения портала конфигурации // полезно для повторной попытки или перехода в спящий режим через 240 секунд // это означает, что у вас есть несколько минут для подключения wifiManager.setTimeout (240); if (! wifiManager.autoConnect ("Разделить створку")) {Serial.println (F ("не удалось подключиться, истекло время ожидания")); // сбросить и повторить попытку delay (3000); ESP.reset (); задержка (1000); } // теперь мы подключаемся к сервису ввода-вывода Adafruiti Serial.print (F ("Подключение к вводу-выводу Adafruit")); io.connect (); // настраиваем обработчик сообщений для ленты twitterfan. twitter-> onMessage (twitterMessage); // ждем соединения while (io.status () 0) {while (Serial.available ()> 0 && newData == false) {rc = Serial.read (); если (rc! = endMarker) {ReceiveChars [ndx] = rc; ndx ++; если (ndx> = numChars) {ndx = numChars - 1; }} еще {receiveChars [ndx] = '\ 0'; // завершаем строку ndx = 0; newData = true; }}} // перемещаем шаговый двигатель, если у нас есть входящая последовательная команда void showNewData () {if (newData == true) {flacker ++; Serial.print ("Последовательный cmd… rx ="); Строка cmd = String (ReceiveChars); Serial.print (cmd); Серийный принт (''); if (receiveChars [0] == 'm') {// обозначает команду перемещения m1, m2, m3 и т. д. int flap = atoi (& receiveChars [1]); // int flap_pos = flap * 225 * -1; // использовать это для существующих шаговых двигателей с обратным подключением int flap_pos = flap * 225; Serial.print («убрать закрылки из положения»); Serial.print (stepper1.currentPosition ()); Serial.print («до»); Serial.print (flap_pos); если (stepper1.currentPosition ()toInt ()); newTweet = true; Serial.print (F ("Твитнуть:")); Serial.print (твитер); Serial.println (""); }} // ---------------------------------------------- ------------------------------------------- // это вызывается, когда WiFiManager входит в режим конфигурации, void configModeCallback (WiFiManager * myWiFiManager) {Serial.println (F («Введен в режим конфигурации»)); Serial.println (WiFi.softAPIP ()); // если вы использовали автоматически сгенерированный SSID, распечатайте его Serial.println (myWiFiManager-> getConfigPortalSSID ()); }

Шаг 4: Шаг 4: Выветривание

Шаг 4: выветривание
Шаг 4: выветривание
Шаг 4: выветривание
Шаг 4: выветривание
Шаг 4: выветривание
Шаг 4: выветривание

Не желая использовать однотонный принт, я попытался придать ему вид античного металла. Вы также увидите, что я покрасил баллончик с аэрографом из меди от Vallejo. Сами детали были сначала окрашены в черный матовый автомобильный спрей. Затем я нанесла кистью обожженную умбру и дала ей высохнуть, что сразу придает цвету металлический оттенок. Его просто очистили щеткой и вытерли, а затем добавили немного сырой умбры. Это дешевый акрил из местного художественного магазина, который стоит всего пару фунтов каждый. В случае с бензобаком он был окрашен в зеленый цвет и нарисован сусальным золотом тамия X-12. На него также нанесен спрей глянцевого лака, чтобы придать ему маслянистый вид, который вы ожидаете от бензобака / масляного бака. Последним штрихом было немного необработанной сиены, чтобы придать легкий вид ржавчины, а затем натереть края серебряным листом и отполировать, чтобы создать впечатление изношенных металлических поверхностей.

Шаг 5: Шаг 5: Галерея

Шаг 5: Галерея
Шаг 5: Галерея
Шаг 5: Галерея
Шаг 5: Галерея
Шаг 5: Галерея
Шаг 5: Галерея

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