Ретропонедельник №265. Гипсометр
Начинаем неделю с нового экспоната в виртуальном музее sovtech.su. Если предыдущий экспонат ретропонедельника был произведен в 2001 году, то сегодняшний постарше, произведен примерно 1925-1930 годы.
Предназначен для измерения высоты деревьев. Зеркальный гипсометр Фаустмана:
на фото уже отечественный, видно, принцип остался прежним, но сделан попроще.
Идея простая - через отверстие и перекрестье смотрим на макушку дерева. Вторым глазом смотрим на зеркало и примечаем, где оказывается нить отвеса. Точка закрепления отвеса регулируется ползунком, в зависимости от расстояния до дерева. А дальше вступает в тригонометрия, зная длину катета и угол при катете, можно найти длину второго катета.
Телеграм канал найдете сами.
Ноосфера изо льда 9. Прототип огнедышащего прибора "Нооскоп-1"
[Для понимания контекста см. все части]
Вкратце, ноосфера Земли состоит из кристаллов льда, формируемых под действием волны идеи, испускаемой головным мозгом человека или сущности; при этом волна, отражаясь от уже "готовой" снежинки изменяется по подобию формирующей и при прохождении через мозг вызывает проявление несвоих мыслей, а при должной тренеровке восприятия - так называемое откр¤вние.
В комментраиях к другому моему посту из данной серии (см. Ноосфера изо льда 7) один человек (а с этого момента - дорогой друг и коллега) послал мне идею создания некоего огнедышащего прибора, что было однако трудно сделать из-за необходимости строжайшей конспирации такого важного знания.
И вот, я представляю вам плод множества исследований, расчётов и работ почти всех членов нашей так называемой контрольной группы - прибор для сканирования силы потока в разных участках Великого зеркала ноосферы и комплексного исследования процессов, в нём происходящих - "Нооскоп-1".
Принцип работы достаточно прост, потому как пока что готова только опытная модель (см. приложенное изображение): свеча внутри банки выступает в роли источника излучения; экран из фольги выступает в роли защиты от внешнего фона и отражателя; вода внутри нужна для создания более плотной среды (фильтра помех); излучение направляется вверх к так называемому Великому зеркалу ноосферы, отражается и принемается специально настроенным AM-радиоприёмником; проволока, связывающая горлышко банки с антенной, замыкает цепь; а патрон нужен для создания сопративления и дополнительной фильтрации фоновых шумов (см. элекртические цепи).
В итоге мы получаем уникальную звуковую интерпритацию волновых процессов и явлений, протекающих в ноосфере.
Да, пока что точность данного апарата низкая ввиду "кустарности" его конструкции из-за недостатка финансирования у нашей так называемой контрольно-исследовательской группы; однако мы уже направили предложения о коллаборации и обмене опытом в несколько облостных НИИ и в ближайшее время планируем получить гранд.
Что вы думаете по этому поводу? Приходилось ли вам когда-нибудь наблюдать явление так называемого откр¤вения?
Ревелятор (02.06.26) ¤
Лень vs Глушилки. Когда тахеометр не нужен, а ГНСС не работает
✅ Навигация под прицелом: почему в городах и у границ сигнал ГНСС превращается в хаос (спуфинг, джеминг, ионосфера).
✅ Сети базовых станций в РФ: кто дает точные поправки, когда интернета нет? Где покрытие есть, а где его нет и как выкручиваться.
✅ Передача данных без сотовой связи
✅ Нужен ли где-то сейчас тахеометр и почему в нашем учебном центре огромный спрос на старые новые курсы
✅ Ответ на главный вопрос: чем снимать, если ГНСС глушат, а работать нужно в лесу, котловане или под бетонными перекрытиями.
Как я игрался со спектрофотометром ES-2000 он же X-Rite i1 Pro 2
Данный текст не является инструкцией. Основная цель написания - поделиться вещами с которыми сталкивается человек, в чьи цепкие лапки попадает подобный прибор. И вот примерно такие ощущения у меня произошли при первых попытках его использования по назначению.
Предыстория
Подробнее о i1 Pro 2 тут
Так вот. Волею Великого Макаронного Монстра в левой руке у меня оказался спектрик, а в правой принтер на чернилах одного производителя, но с ICC профилем от совершенно других чернил. Искра, буря, безумие открываем профилировщик SAI Flexi и видим такое.
Уже на стартовом экране есть над чем подумать. В небольшой ступор вводит выбор "Сглаживание цветовых переходов". Ну или короче - дизеринг. Их довольно много видов, на том же сайте SAI есть описание актуальных для этого рипа. И вроде как между ними даже есть какая то значительная разница, но я довольно тупой, поэтому просто как все тыкаю Enhanced Stochastic 2 и не выделываюсь. Хотя, эмпирически установлено, что Error Diffusion 2 вроде как ничуть не хуже.
Замечено, что диффузия ошибки значительно дольше рипуется и по загадочным причинам именно на ней каретка принтера гонят только над областями печати, то есть пропускает пустые участки. При использовании стохастики почему то пустые области принтер пропускать не хочет. Возможно это прикол конкретной машины. Доподлинно неизвестно.
Есть интересные галочки балванса серого и профиля переменной точки, но потыркавшись в них я не нашёл знакомых букв и решил, что для начала я туда вообще лезть не буду.
Обзываем как ни будь профиль и попадаем в настройку линеаризации.
С одной стороны, тут вроде бы всё просто. Софтина печатает нам набор патчей, а мы их считываем прибором. С другой, как я понял, запороть данный этап тоже довольно просто.
Из вебинара SAI Flexi, лично я сделал вывод, что в линеаризации мы должны стремиться примерно вот к этому
Если краска растекается - режем лимиты
Если цвет перестаёт меняться - режем лимиты
Стремимся минимально порезать лимиты
Вот такими противоречивыми вещами приходится заниматься. В теории, мы ещё должны добиться перцептивно однородного градиента. То есть визуальная разница между C10 и C20 должна быть такая же как между C90 и C100. Но вроде как этим должен заниматься спектрик.
Способы запороть линеаризацию/характеризацию
Промахнутся по патчу. Это довольно сложно, но можно.
Если печатать на не отъюстированном, с загаженной ПГ или ктулху его знает ещё каком принтере толку от калибровки будет мало. Иначе говоря, принтак должен быть в образцово-показательном состоянии.
Очень хочется взять материал из непригодных обрезков. Я так и сделал. Потом выкинул этот покоцанный ораджет, потому что печатать на кусках материала который где то, сколько то лежал в пыли, грязи и безызвестности можно, но результат будет явно не стабилен.
Вот что бы всякого не случилось я заглянул в графики которые я насканировал.
Насколько я понимаю, подобный график вроде как не совсем шляпа, но по хорошему повод задуматься а нормально ли я тут насканировал. Но опять же, я пока довольно тупой, и ленивый, поэтому забил и просто поехал дальше.
На следующем этапе мы ручками правим лимиты смесовых цветов. Провафлил скрин, но там ничего инересного.
А вот дальше был сюрприз.
Насколько я понял, конкретно эта версия флекси, в силу своей практически легальной, лицензионной природы просто не позволяет построить профиль до конца. По другому объяснить такое поведение я не могу. Вероятно, в йо-хо-хо версиях таких приколов нет, но свободное время кончалось и я пошёл другой путёй.
i1 Profiler помог мне таки доделать профиль. В интернетах, умные люди подсказывают, что можно взять плашки из этой софтины, там же отсканировать и запихать обратно во Flexi. Так я и поступил.
Тут некоторую загадочность представляют режимы сканирования.
М0 - Традиционный. Предполагается лампа накаливания.
М1 - Свет D50 (5000K) + УФ излучение
М2 - Только УФ.
М3 - Режим поляризации для бликующих поверхностей типа лака или металлика. Недоступен для ES 2000. Оно есть в i1 Pro 3 Plus, но это что то на богатом.
И вот вроде даже есть определения, и даже вроде бы слова знакомые, но всё равно понятно слабо. В целом, если мы обратимся к книге Абхай Шармы "Управление цветом", то он пишет, что
М0 обладает высокой воспроизводимостью результатов, но не обязательно высокой точностью
Вот понимайте как хотите. Однако же, рекомендует режим М1.
Долго и вдумчиво читаем плашки, определяемся с источником освещения, создаём ICM профиль и пихаем обратно в рип. Там ещё был этап формирования серого цвета, но я его дропнул, потому что за один день для меня и так получилось дофига впечатлений. Иначе говоря, мне ничё не помешало оставить настройки дефолтными. Хотя, чует моя печень, там как раз довольно важные кнопки.
Итого
К чему я это всё вообще. Данный эксперимент показал, что даже таки откровенно обезьяньим подходом, можно получить какой то профиль просто имея на руках спектрик. Я не испытываю никаких иллюзий насчёт качества проделанной работы и даже вижу, что серый по CMY выглядит доволно странно, лимиты фуллсмик чёрного надо резать сильней и т.д. и т.п. Да даже по фото.
Однако же, изучение данной науки не выглядит непреодолимым препятствием, да и даже так на выходе мы имеем нечто, что более чем способно конкурировать со стоковыми профилями, которые идут в комплекте с оборудованием. Обычно довольно посредственные.
PS
Знатоки профилирования, не бейте пожалуста. Если вам кажется, что в тексте я творю какую то дичь, то скорее всего так оно и есть.
Ссылка на ТГ автора тут - Токсичная печатня.
Узкоспециализированная самоделка для электромонтёра ОПС - "Умный Пробник"
ВНИМАНИЕ! В данной статье используется контакт с сетями 220В! Будьте осторожны и соблюдайте технику безопасности при работе с напряжением 220В!
После очередной попытки проверить фазу отвёрткой-пробником, понял что батарейки там кончились(пробник 5в1), да и мультиметр подвёл - крона "села" и он перестал включаться...
Мне это всё надоело и я решил сделать устройство, которое бы удовлетворяло моим потребностям в нахождении фазы, в поиске скрытой проводки, в измерении резисторов(ходовых при работе ОПС), в измерении светодиодов - и всё это без постоянных замен батареек.
И на свет родилось это (просьба не пинать - я сделал из того, что было под рукой...принтера, к сожалению, нет)
Мозгом прибора выступил "народный" Wemos D1 mini. Дисплей - 0.96" OLED (используется очень часто в самоделках), щупом выступил тот самый щуп, который был у меня(пришлось укоротить). Ну и по мелочи: резисторы, транзисторы, кнопки, переключатели, плата зарядки, акб.
Что умеет прибор:
Проверка фазы\нуля (до 220В) - при "фазе" издаёт непрерывный сигнал(присутствует гальваническая развязка).
Омметр: Проверка резисторов от 1kΩ до 200kΩ (имеется отдельные входы на торце для подключения).
Бесконтактный поиск скрытой проводки (с графической шкалой уровня сигнала, отображением цифры уровня, и потрескиванием с меняющимся тоном при приближении к проводу).
Проверка светодиодов с отображением напряжения падения.
Прозвонка провода на обрыв: При сопротивлении ниже 150 Ом прибор пишет «ЦЕПЬ: ОК» и издает непрерывный сигнал.
Обновление по Wi-Fi (OTA): Упрощает корректировку и настройку прибора либо обновление функций.
Автономность работы: во включенном режиме - 9 часов, в выключенном - пока не сядет li-ion батарея от саморазряда. Учитывая, что замеры, в среднем, происходят не более 2х минут и прибор отключают, то прибор заряжать нужно будет не чаще раза в полгода, год.
Если кого-то заинтересовал данный проект - ниже будут списки с необходимыми деталями и сам скетч под Arduino IDE
Необходимые детали:
Wemos D1 mini (ESP8266) - 1шт.
Дисплей: OLED 0.96" I2C - 1шт.
Динамик с планшета или смартфона на 4-8 Ом - 1шт.
Транзистор BC547- 2шт.
Диоды 1N4148 - 2шт.
Резистор 2.2 МОм (0.25Вт или выше) - 1шт.
Резистор 1 МОм - 1шт.
Резистор (эталон для омметра): 10 кОм - 1шт.
Резистор (для динамика): 100 Ом - 1шт.
Аккумулятор: Li-Po или Li-ion (по размеру вашего корпуса) - 1шт.
Модуль зарядки: TP4056 с разъемом Type-C (с защитой АКБ) - 1шт.
Выключатель: Сдвижной тумблер (SPDT) - 1 шт.
Кнопка: Тактовая кнопка любого, удобного вам, размера - 1шт.
Разъемы для резисторов: любой разъём "мама" - 2шт.
Тыльный контакт: Небольшая металлическая пластина (для касания пальцем) - 1шт.Ещё необходимо поверх щупа, на ту часть, которая внутри корпуса, через изоляцию(термоусадка например) намотать 10-15 витков провода. Один конец этой обмотки оставьте свободным (никуда не подключайте!)., а второй конец припаяйте в точку на плате Wemos, куда приходит защитный резистор 2.2 МОм).
Схема соединения на словах: Щуп к резистору 2.2 МОм а от резистора к базе транзистора BC547.
Коллектор транзистора BC547 к пину 3.3V на Wemos.
Эмиттер транзистора BC547 к пину A0 на Wemos.
Пин A0 на Wemos к резистору 10 кОм а от резистора к GND.
Пин A0 к резистору 1 МОм а от резистора к GND).
Анод первого диода к базе BC547, а катод к 3.3V Wemos.
Анод второго диода к GND, а катод к базе BC547.
Разъем первый к пину 3.3V Wemos.
Разъем второй к пину A0 Wemos.
Контакт (пластина) напрямую к GND.
Дисплей : VCC на 3.3V Wemos.
Дисплей: GND на GND Wemos.
Дисплей: SCL на пин D1 (GPIO5).
Дисплей: SDA на пин D2 (GPIO4).
Тактовая кнопка: одна ножка к пин D3 (GPIO0), а вторая к земле GND.
Динамик: Эмиттер транзистора с землёй GND, базу с D5 через резистор 1k, коллектор с минусом динамика, плюс динамика к +5V платы Wemos.
Резистор 2.2 МОм должен быть припаян максимально близко к самому металлическому щупу и затянут в термоусадку.
Все точки "GND" должны быть соединены между собой!
При монтаже высоковольтных резисторов (2.2 МОм) убедитесь, что между их выводами и другими частями схемы достаточное расстояние (не менее 5-7 мм), чтобы исключить пробой по поверхности платы.
Скетч(код) для Arduino IDE:
#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <WiFiManager.h>
#define NOTE_E7 2637
#define NOTE_C7 2093
#define NOTE_G7 3136
#define NOTE_G6 1568
float avgRaw = 1024.0;
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
const int BTN_PIN = D3;
const int BUZZ_PIN = D5;
const int SENSOR_PIN = A0;
const float R_REF = 11400.0; // Указать точное значение резистора 10k (в данном случае 11.4k)
bool isSleeping = false;
bool otaMode = false;
uint32_t lastActivity = 0;
int currentMode = 0;
void configModeCallback (WiFiManager *myWiFiManager) {
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_6x12_t_cyrillic);
u8g2.drawUTF8(0, 12, "РЕЖИМ НАСТРОЙКИ");
u8g2.drawUTF8(0, 42, "SmartProbe-Config");
u8g2.setCursor(0, 60); u8g2.print("IP: "); u8g2.print(WiFi.softAPIP());
u8g2.sendBuffer();
}
int getP2P() {
int minV = 1024, maxV = 0;
uint32_t start = millis();
while (millis() - start < 28) {
int v = analogRead(SENSOR_PIN);
if (v < minV) minV = v;
if (v > maxV) maxV = v;
}
return (maxV - minV);
}
void wakeUp() {
if (isSleeping) {
u8g2.setPowerSave(0);
for(int i=0; i<255; i+=5) { u8g2.setContrast(i); delay(2); }
u8g2.setContrast(255);
isSleeping = false;
}
lastActivity = millis();
}
void setup() {
WiFi.mode(WIFI_OFF);
WiFi.forceSleepBegin();
pinMode(BTN_PIN, INPUT_PULLUP);
u8g2.begin();
u8g2.enableUTF8Print();
u8g2.setFont(u8g2_font_6x12_t_cyrillic);
if (digitalRead(BTN_PIN) == LOW) {
otaMode = true;
WiFi.forceSleepWake(); delay(10);
WiFi.mode(WIFI_STA);
u8g2.clearBuffer(); u8g2.drawUTF8(0, 20, "ОБНОВЛЕНИЕ ПО Wi-Fi"); u8g2.sendBuffer();
WiFiManager wm;
wm.setAPCallback(configModeCallback);
wm.setConfigPortalTimeout(180);
if (!wm.autoConnect("SmartProbe-Config")) { ESP.restart(); }
ArduinoOTA.setHostname("SmartProbe-V4");
ArduinoOTA.setPassword("1"); // Пароль при обновлении по "воздуху" - Запомни или измени на свой
ArduinoOTA.begin();
u8g2.clearBuffer(); u8g2.drawUTF8(0, 35, "ЖДУ ПРОШИВКУ...");
u8g2.setCursor(0, 55); u8g2.print("IP: "); u8g2.print(WiFi.localIP());
u8g2.sendBuffer();
}
if (!otaMode) {
pinMode(BUZZ_PIN, OUTPUT);
for (int i = 0; i <= 128; i += 8) {
u8g2.clearBuffer(); u8g2.drawLine(i, 0, i, 64);
if (i > 30) u8g2.drawUTF8(15, 30, "УМНЫЙ");
if (i > 70) u8g2.drawUTF8(15, 50, "ПРОБНИК v4 [Wi-Fi]");
u8g2.sendBuffer();
}
int mel[] = { NOTE_E7, NOTE_E7, 0, NOTE_E7, 0, NOTE_C7, NOTE_E7, 0, NOTE_G7, 0, NOTE_G6 };
int tem[] = { 100, 100, 80, 100, 80, 100, 100, 80, 150, 280, 200 };
for (int i = 0; i < 11; i++) {
if (mel[i] == 0) {
delay(tem[i]);
} else {
tone(BUZZ_PIN, mel[i], tem[i]);
delay(tem[i] * 1.35);
}
}
noTone(BUZZ_PIN); lastActivity = millis();
}
}
void loop() {
if (otaMode) { ArduinoOTA.handle(); return; }
int raw = analogRead(SENSOR_PIN);
int p2p = getP2P();
if (digitalRead(BTN_PIN) == LOW || p2p > 50 || (currentMode == 1 && raw > 20)) { wakeUp(); }
if (!isSleeping && (millis() - lastActivity > 1800000)) { u8g2.setPowerSave(1); isSleeping = true; }
if (isSleeping) return;
if (digitalRead(BTN_PIN) == LOW) {
currentMode++; if (currentMode > 2) currentMode = 0;
tone(BUZZ_PIN, 1000 + (currentMode * 500), 100);
while(digitalRead(BTN_PIN) == LOW) delay(10);
lastActivity = millis();
}
u8g2.clearBuffer(); u8g2.setFont(u8g2_font_6x12_t_cyrillic);
u8g2.drawUTF8(0, 10, currentMode == 0 ? "РЕЖИМ: ЩУП" : (currentMode == 1 ? "РЕЖИМ: ПОИСК ПРОВОДА" : "РЕЖИМ: LED"));
u8g2.drawHLine(0, 12, 128);
if (currentMode == 0) {
if (p2p > 40) {
avgRaw = 1024.0;
if (p2p > 800) {
u8g2.drawUTF8(5, 45, "ФАЗА! ~220V"); tone(BUZZ_PIN, 1000);
} else {
u8g2.drawUTF8(5, 45, "НОЛЬ / ПУСТО"); noTone(BUZZ_PIN);
}
}
else {
(raw > 960)
if (raw > 960) {
avgRaw = 1024.0;
u8g2.drawUTF8(5, 45, "НОЛЬ / ПУСТО");
noTone(BUZZ_PIN);
}
else {
if (avgRaw > 1000) avgRaw = (float)raw;
avgRaw = (avgRaw * 0.8) + (raw * 0.2);
float r_un = R_REF * ((1024.0 / avgRaw) - 1.0);
if (r_un > 400000.0) {
u8g2.drawUTF8(5, 45, "НОЛЬ / ПУСТО");
noTone(BUZZ_PIN);
}
else if (r_un < 150) {
u8g2.drawUTF8(5, 45, "ЦЕПЬ: ОК");
u8g2.setCursor(70, 45); u8g2.print((int)r_un); u8g2.print(" Om");
tone(BUZZ_PIN, 2000);
} else {
noTone(BUZZ_PIN); u8g2.setCursor(5, 45); u8g2.print("R: ");
if (r_un > 950) {
u8g2.print(r_un / 1000.0, 1); u8g2.print(" kOm");
} else {
u8g2.print((int)r_un); u8g2.print(" Om");
}
}
}
}
}
else if (currentMode == 1) {
u8g2.drawUTF8(5, 45, "СИГНАЛ: "); u8g2.setCursor(65, 45); u8g2.print(p2p);
int noiseFloor = 31;
if (p2p > noiseFloor) {
tone(BUZZ_PIN, 400 + (p2p - noiseFloor) * 80, 15);
delay(map(constrain(p2p, noiseFloor, 45), noiseFloor, 45, 200, 5));
} else { noTone(BUZZ_PIN); }
}
else {
float v = (raw * 3.3) / 1024.0;
if (v > 0.5 && v < 3.1) {
u8g2.drawUTF8(5, 30, "СВЕТОДИОД ПОДКЛЮЧЕН");
u8g2.setCursor(5, 45);
u8g2.print("V падения: "); u8g2.print(v, 2); u8g2.print(" V");
} else {
u8g2.drawUTF8(5, 45, "ОЖИДАНИЕ LED...");
}
noTone(BUZZ_PIN);
}
u8g2.drawFrame(0, 56, 128, 8);
int barWidth;
if (currentMode == 1) {
barWidth = map(constrain(p2p, 30, 45), 30, 45, 0, 124);
} else {
barWidth = map(constrain(p2p, 750, 1024), 750, 1024, 0, 124);
}
u8g2.drawBox(2, 58, barWidth, 4);
u8g2.sendBuffer();
}
Не забываем скачать библиотеки, объявленные в начале кода: U8g2 (автор: oliver), WiFiManager (автор: tzapu), ядро ESP8266 (уже при начале прошивки выбираем LOLIN(WEMOS) D1 R2 & mini)
в MMU выбираем 16Kb+48kb IRAM, частоту проца 160Mhz
Спасибо за внимание и заранее простите за возможные орфографические ошибки.
UPD:
Видео работы основных режимов https://drive.google.com/file/d/1HaYfwVFuJ-eJx0kla1pdLG4uP5T...
Мерники
Один из незаменимых инструментов на производстве, да и в любых сферах, требующих точное дозирование жидкости - это образцовый мерник.
Я отвечаю за метрологическое обеспечение АЗС, поэтому мерник для меня - святое!!! Если вы тоже работаете на АЗС, то вы меня точно поймете
Хочу поделиться небольшим опытом работы с двумя мерниками вторго разряда М2р-10-01 КМ и М2р-10-01 - инструменты для измерения обьема, оснащенные верхним сливом и не имеющие пеногасителя, изготовленные из углеродистой стали. Обе модели отвечаюьт требованиям ГОСТ, а их уровень погрешности не превышает 0,1%
Первую модель М2р-10-01 КМ от компании "опика" мы используем на стационарном посту уже больше года. Сделана она из углеродистой стали - то настоящий "танк", пережила даже несколько падений, но на ней ни царапины. Очень порадовало в ней смотровое стекло. Обычно на бюджетных мерниках стекло мутное или искажает реальный уровень, а оптика, на удивление, здесь качественная и погрешность при считывании минимальная
Второю модель М2р-10-01 от "контура" мы возим с собой для экспресс-проверки ТРК на удаленных точках. Он очень удобно разьезжает на специальной подставке в машине. Самое важное для меня - воспроизводимость результатов. При проливах показания "плывут", только если виновата сама колонка, а мерник всегда показывает чистую картину.
Поверку прошли с первого раза (первичное свидетельство было в комплекте), документы в порядке. Очень порадовало еще, что есть и паспорт, и четкая маркировка
Что хочу сказать.... Когда речь идет о таких важных измерениях, очень советую не экономить на подобных инструментах (неважно, мерник это, метрошток или что-то другое), а также очень важно вовремя отправлять все на поверку, всем пис)






















