Перейти к публикации
iT4iT.CLUB

Kitsum

Пользователи
  • Публикации

    424
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    234

Все публикации пользователя Kitsum

  1. Kitsum

    Заметки по UNIX

    Для себя любимого буду оставлять тут всякого рода мелочи. При загрузке Linux Ubuntu 14.04 с установленным пакетом Samba 4.1 красуется следующее сообщение (при этом Active Directory не используется) Starting SMB/CIFS File and Active Directory Server. [FAIL] Лечится удалением /etc/init/samba-ad-dc.conf
  2. Kitsum

    Arduino в автомобиле

    @sergon63tlt Уверен, что можно. Допустим, что мы говорим о весьма распространённом OBD2. Думаю, что вполне можно обойтись без CAN SHIELD, если воспользоваться Bluetooth адаптером на базе ELM327 и подключаться к нему с помощью CH-06 или подобного модуля. Это минимизирует затраты и избавит от лишних проводов, да и поможет избежать неприятностей если со стороны контроллера что-то замкнули или т.п По сути, мы получаем контроллер, подключенный по UART к автомобильной сети и теперь мы сами стали частью системы. Осталось разобраться в протоколе передачи данных. Как гласит теория, бортовой компьютер знает все и вся, а сами данные держит у себя под определенными PID. Отправляем номер PID, а в ответ получаем его значение, которое преобразуем в читаемый вид путем некоторых вычислений. Основную часть можно узнать в wikipedia. Например, отправим коды: 0104 - Расчетная нагрузка на двигатель от 0 до 100% 0105 - Температура охлаждающей жидкости двигателя от -40 до 215 градусов Цельсия 010A - Давление топлива от 0 до 765 кПа 010C - Число оборотов двигателя в минуту 010D - Скорость автомобиля 010F - Температура воздуха во впускном коллекторе от -40 до 215 градусов Цельсия 015E - Удельный расход топлива от 0 до 3212,75 литров в час Это лишь малая часть информации, взятая из таблицы Mode 01. Большинство значений рассчитываются по формулам, приведенным в этой же таблице. Кстати, имеется очень интересная библиотека ArduinoOBD и сопутствующие ей статьи: http://freematics.com/pages/products/arduino-obd-adapter/ http://freematics.com/pages/products/arduino-telematics-kit-3/
  3. Kitsum

    Arduino в автомобиле

    Все собирается прямо в приборке и без разборки и пайки не обойтись никак. Но если жалко только ради подсветки браться за инструмент, то можно воспользоваться CAN BUS SHIELD для Arduino или вариантом подешевле в виде MCP2515 и собирать всю информацию об автомобиле. CAN SHIELD http://www.seeedstudio.com/wiki/CAN-BUS_Shield MCP2515 Библиотеки CAN BUS Shield MCP2515 CAN
  4. Kitsum

    Arduino в автомобиле

    @Alex13 Если мы говорим о подсветке приборной панели, то ничего сложного тут нет. Самое главное - найти в проводке или на самой панели сигнал, отвечающий за обороты двигателя. По сути, импульсы представляют из себя ШИМ, нам нужно посчитать количество импульсов в секунду, это и будут обороты двигателя. Возможно, будет какой-то множитель (2) и при 1000 об/мин будем иметь 2000 импульсов/мин, что соответствует примерно 33 импульса/сек. Отсюда можно плясать с анимацией. В случае с RGB лентой изменять цвет можно с помощью аналогичного ШИМ сигнала от самого микроконтроллера.
  5. Kitsum

    Arduino в автомобиле

    На базе светодиодов WS2812 можно баловаться подсветкой приборной панели в зависимости от скорости автомобиля или оборотов двигателя. Аналогичным образом, можно соорудить "ангельские глазки" которые будет иметь базовый цвет белый, а при включении поворота проигрывать желтым цветом анимацию. Но это уже более кропотливая работа в плане эстетики. Некоторые народные умельцы собирают автомобильные компьютеры, при этом показания считывают с диагностического разъема.
  6. @sergon63tlt отключены лишние подтягивающие резисторы встроенные в микроконтроллер и исправил некоторые косяки которые связанные с внедрением функции lock. Хотя на домашнем компьютере версия замка @Alex13 была уже с этими исправлениями... Это еще раз доказывает, что коллективно проект развивается намного быстрее и качественнее.
  7. Обновил программу из этого поста. Пробуйте залить её как есть, не внося никаких изменений. Посмотрим что будет в Serial. И подтяните пины 8 и 4 земле.
  8. Да, изначально скетч писался для электромагнитного замка, но управление нагрузкой это всего лишь пару строчек кода, которые легко переписываются. Львиная доля программы - обработка RFID меток и соответствующая реакция на них. Для того чтобы было понятно, что мы пытаемся изменить, предлагаю с начало разобраться в том, что происходит при подаче питания с пинами управления реле. В самом начале программы смотрим содержимое первого байта EEPROM микроконтроллера. Там должно быть число, указывающее на количество ключей. byte keys_count = EEPROM.read(); В функции Setup происходит инициализация пинов и на них выставляется высокий логический уровень, опять же все ради Китайских реле, это обесточит их. // Реле pinMode(PIN_RELAY_1, OUTPUT); digitalWrite(PIN_RELAY_1, HIGH); pinMode(PIN_RELAY_2, OUTPUT); digitalWrite(PIN_RELAY_2, HIGH); Следующий ключевой момент - принятие решения, открыть замок при отсутствие ключей в памяти и сообщить об этом в Serial или же запереть замок и встать на охрану. if(keys_count > and keys_count < 255) { keysRead(); lock(true); } else { keys_count = ; Serial.println(F("The master key is not in memory. The first presentation to the key will be the master!\n")); lock(false); } Серьезным отличием от электромагнитного замка является наличие функции void lock(bool lock); именно она манипулирует пинами и переключает реле с паузой в 0.4 сек. Заодно фиксирует последнее состояние замка, своего рода программный концевик на двери. void lock(bool lock) { digitalWrite(lock ? PIN_RELAY_1 : PIN_RELAY_2, LOW); delay(400); digitalWrite(lock ? PIN_RELAY_1 : PIN_RELAY_2, HIGH); lockStat = lock; } До момента, описанного в п.3 реле находились в покое и не производили никаких манипуляций с соленоидом. Функция lock, кроме возложенных на неё обязанностей, гарантирует нам, что любое реле будет в работе ровно 0.4 секунды, а затем вернется в свое обычное состояние. Следовательно, если ключ будет отсутствовать в памяти микроконтроллера то по условию в п.3 произойдет вызов lock(false); и это приведет к появлению логического нуля на 6 пине на 0.4 секунды, после вернется логическая единица. Если в EEPROM будет находиться хотя бы один ключ, то произойдет вызов lock(true); и аналогичные манипуляции произойдут с пином 7 - замок закроется. Предлагаю проделать следующее: Просмотреть вывод в Serial начиная с момента подачи питания, возможно там будет подсказка. Модернизировать функцию lock и выводить в Serial все, что происходит с реле void lock(bool lock) { digitalWrite(lock ? PIN_RELAY_1 : PIN_RELAY_2, LOW); Serial.println(lock ? "RELAY CLOSE (PIN 6) ACTIVATED" : "RELAY OPEN (PIN 7) ACTIVATED"); delay(400); digitalWrite(lock ? PIN_RELAY_1 : PIN_RELAY_2, HIGH); Serial.println(lock ? "RELAY CLOSE (PIN 6) DEACTIVATED" : "RELAY OPEN (PIN 7) DEACTIVATED"); lockStat = lock; } Можно, но не обязательно, пару фотографий как это выглядит (собрано). Это вполне ожидаемое поведение т.к после подачи питания, микроконтроллер MFRC522 скорее всего ожидает запись в соответствующие регистры. Уверен, что этим занимается PCD_Init().
  9. Совершенно верно. Изначально подразумевалось использование Китайских реле в качестве управления нагрузкой, а для их работы необходим инвертированный сигнал - HIGH для закрытия и LOW для открытия реле. Естественно, что если выкинуть реле из схемы, то необходимо произвести изменения в коде, на которые указал @Alex13
  10. @Alex13 Кнопка открытия двери и кнопка сброса памяти // Кнопка сброса памяти pinMode(PIN_RESET,INPUT_PULLUP); key_reset.attach(PIN_RESET); key_reset.interval(5); // Кнопка открытия двери pinMode(PIN_OPEN,INPUT_PULLUP); key_open.attach(PIN_OPEN); key_open.interval(5); Сейчас силы брошены на другой проект. Позже опять вернусь к замку.
  11. @Alex13 Внес изменения во все листинги программы опубликованные в теме. Также внес исправление во все схемы.
  12. @sergon63tlt Опишите поэтапно, что нужно выполнять и как должен действовать замок. Чем подробнее тем лучше. Какой из вариантов программы Вы использовали? Мы постараемся Вам помочь.
  13. @Alex13 Ошибки будут всегда, все мы люди и нам свойственно ошибаться. Ищем кусок кода в функции Setup отвечающий за инициализацию пина под кнопку сброса памяти // Кнопка сброса памяти pinMode(PIN_RESET,INPUT_PULLUP); digitalWrite(PIN_RESET, HIGH); key_reset.attach(PIN_RESET); key_reset.interval(5); Необходимо удалить строку digitalWrite(PIN_RESET, HIGH); Данная строка задействовала внутренний подтягивающий резистор микроконтроллера на 20kOm, но по моей невнимательности, на этом пине он не нужен т.к подтягивает пин к питанию а не к земле. Хотя работает и с ним т.к номинал довольно высок. Дополнительный резистор на 4.7kOm не нужен т.к на мой взгляд не дает результата, но натолкнул на мысль об удалении вышеупомянутой строки в коде. Номиналом резистора, подтягивающего пин к питанию можно играться т.к он по сути нужен только для подстраховки, все заведется и без него. Думаю, что стоит проверить уровень напряжения, поступающего на 4-ый пин, возможно его недостаточно для формирования логической единицы, хотя эта же линия используется для формирования единицы 2-ом пине (открытие двери). В любом случае, все это догадки, но одну ошибку в коде исправляют. Нужно больше информации для дальнейшего поиска.
  14. @Alex13 Я пересмотрю все листинги программ, может что-то найду. Но все должно работать, по крайней мере работает на нескольких контроллерах в данный момент. Сама очистка памяти начнется только при длительном удержании кнопки.
  15. Тема является своего рода заметкой по мониторингу источников бесперебойного питания фирмы ippon. Заметкой именно потому, что шаблон был написан уже давно, а статья так и не появилась на свет и как обычно бывает, все постепенно начинает забываться, а наработанная информация растворяться в бытие. Дабы не потерять последние крошки выкидываем оставшиеся наработки. Постепенно тема будет переписана и дополнена. Самым удобным способом мониторинга является, уже знакомый нам по теме с ИБП APC, протокол SNMP. Для подключения устройства в локальную сеть необходимо дополнить его сетевым адаптером UPS Ippon Smart Winner 1500/2000/3000. Сама карточка поддерживает следующие протоколы: HTTP HTTPS IPv4 IPv6 NTP SMTP SNMP v1 SNMP v2c SNMP v3 SSH V1 SSH V2 SSL TCP/IP Telnet На диске, идущем в комплекте, имеется весь необходимый софт и документация. Также, если немного покопаться, можно найти MIB файл со всеми поддерживаемыми OID. На всякий случай мы прикрепим к посту MIB файл на базе которого был создан текущий шаблон. Перед тем как перейти к шаблону хочу отметить, что он содержит макрос {$SNMP_COMMUNITY} значение которого необходимо изменить на используемое вами Community. Шаблон позволяет производить мониторинг следующих параметров: The measured output real complex power in VA Величина отрицательного напряжения аккумуляторной батареи Величина положительного напряжения аккумуляторной батареи Версия прошивки Network Management Card Версия прошивки микропроцессора Время оставшееся до истощения заряда батареи Время прошедшее с момента перехода на работу от батареи Входная мощность Входное напряжение Входной ток Выходная мощность Выходная нагрузка ИБП в процентах от номинальной мощности Выходное напряжение Выходное напряжение Выходной ток Код неисправности ИБП из таблицы Q6 Код предупреждения ИБП из таблицы Q6 Максимальная разрешенная выходная нагрузка Максимальная разрешенная рабочая температура Модель ИБП Название производителя Описание напитанной нагрузки (устанавливается администратором) Описание устройства (устанавливается администратором) Серийный номер Статус батареи Текущее состояние ИБП Температура батареи Температура внутри ИБП Уровень заряда батареи Частота тока на входе Частота тока на выходе Данных параметров должно быть достаточно для создание базовых проверок и триггеров. Мы добавили несколько для основных тревог. И пару базовых графиков. Данный шаблон вполне подойдет для создания на его основе Ваших решений. Мы будем рады увидеть Ваши наработки или помочь Вам в реализации, каких либо идей по мониторингу этих источников бесперебойного питания. EPPC.MIB.zip templates_ups_ippon.xml.zip
  16. @svchekalin Подключение RFID ридера RC522 к Arduino Mega 2560 С программой все практически без изменений. Используем всю туже библиотеку MFRC522.h, и только изменим в настройках два пина - RST и SS. #include <SPI.h> #include <MFRC522.h> #define RST_PIN 5 #define SS_PIN 53 MFRC522 mfrc522(SS_PIN, RST_PIN);
  17. // Автоматическое отключение сигнализации if(alarmTimer != 0) { if(millis()/1000 - alarmTimer > 60) { alarmTimer = 0; digitalWrite(PIN_ALARM_1M, invert ? HIGH : LOW); Serial.println(F("Automatic shutdown of the first signaling channel.\n")); } } else { if(digitalRead(PIN_ALARM_FORCED) and lockStat) { alarmTimer = millis()/1000; digitalWrite(PIN_ALARM_1M, invert ? LOW : HIGH); digitalWrite(PIN_ALARM_LONG, invert ? LOW : HIGH); } }
  18. Kitsum

    Умный дом

    Это уже из мира фантастики. Большой расход электроэнергии Что делать если заказное письмо или какой ни-ть документ вложили в газету или рекламную брошюру На квитанциях за комунальные услуги тоже печатают рекламу Каких габаритов будет механизм пытающийся это все рассортировать Все это привлекает внимание как почтальона так и всех остальных Думаю, что стоит остановиться на попытки определить наличие чего-либо в почтовом ящике и озаботиться передачей этой информации на сервер. Тот в свою очередь передаст сообщение на мобильный телефон через систему Push уведомлений или иным способом.
  19. Проблема на форуме с обработкой C++ синтаксиса, по неизвестной причине удаляется символ "0". Исправил код, проверяйте.
  20. Kitsum

    Умный дом

    Можно с помощью распознавания цвета. Обычно мелкие пакеты белого или желтого цвета. Распознать может сенсор TCS3200. Но это: Привлечет внимание Сожрет аккумулятор (если устройство работает автономно) Ложные срабатывания Подобное можно реализовать в частном доме или почтовый ящик должен быть закреплен непосредственно возле квартиры. А вообще, зачем так заморачиваться если спам из почтового ящика нужно выкидывать в любом случае?
  21. Косяков нет, просто в ходе обсуждения я не видел жизни этой идеи и воспринял её как постоянный режим ON/OFF. Если честно, то я и сейчас не вижу потенциала объединения датчиков сигнализации с замком. Это разные системы и разработать сигнализацию отдельно было бы намного интереснее, а уже потом искать алгоритмы их объединения. Но если очень хочется, то нужно сделать следующее: Добавляем в описании пинов микроконтроллера дополнительную константу. Это будет пин A3. Сразу стоит подтянуть чего к земле через резистор с номиналом 4.7-10kOm. #define PIN_ALARM_FORCED 17 // ALARM FORCED В функции Setup описываем его как вход pinMode(PIN_ALARM_FORCED, INPUT); digitalWrite(PIN_ALARM_FORCED, HIGH); Теперь необходимо найти код, занимающийся обработкой таймера выключения минутного реле сигнализации // Автоматическое отключение сигнализации if(alarmTimer != 0) { if(millis()/1000 - alarmTimer >60) { alarmTimer = 0; digitalWrite(PIN_ALARM_1M, invert ? HIGH : LOW); Serial.println(F("Automatic shutdown of the first signaling channel.\n")); } } и заменить его на // Автоматическое отключение сигнализации if(alarmTimer != 0) { if(millis()/1000 - alarmTimer > 60) { alarmTimer = 0; digitalWrite(PIN_ALARM_1M, invert ? HIGH : LOW); Serial.println(F("Automatic shutdown of the first signaling channel.\n")); } } else { if(digitalRead(PIN_ALARM_FORCED)) { alarmTimer = millis()/1000; digitalWrite(PIN_ALARM_1M, invert ? LOW : HIGH); digitalWrite(PIN_ALARM_LONG, invert ? LOW : HIGH); } } Это должно заставить принудительно подтягивать реле сигнализации при появлении высокого уровня на пине A3. PS: датчик активирующий сигнализацию должен подавать не более 5V на A3 и обязательно иметь общую массу с замком.
  22. Kitsum

    Умный дом

    Оууу. Виноват, не про ту почту подумал, бывает. Можно поставить механический рычаг определяющий прохождение почты через окно ящика и вызывающий прерывание, или инфракрасный светодиод с соответствующим датчиком на дне ящика, для определения фактического наличия почты. Самое интересное, это вопрос связанный и источником энергии и его живучестью...
  23. Kitsum

    Умный дом

    Можно на стороне сервера накидать скрипт, например на PHP, и с помощью Cron стартовать его раз в 5-10 минут. При обнаружении нового сообщения дергать контроллер, а тот в свою очередь будет сверкать, свистеть и махать флагами.
  24. Да, можно. В функции Setup происходит инициализация пинов для управления реле замка // Инициализация используемых пинов // Реле pinMode(PIN_RELAY_1, OUTPUT); digitalWrite(PIN_RELAY_1, HIGH); pinMode(PIN_RELAY_2, OUTPUT); digitalWrite(PIN_RELAY_2, HIGH); Необходимо заменить HIGH на LOW За управление замком отвечает функция lock void lock(bool lock) { digitalWrite(lock ? PIN_RELAY_1 : PIN_RELAY_2, LOW); delay(400); digitalWrite(lock ? PIN_RELAY_1 : PIN_RELAY_2, HIGH); lockStat = lock; } Аналогичным образом необходимо заменить значения LOW и HIGH на противоположные
×
×
  • Создать...