melfice

Мар 302014
 

Весьма интересно началось утро выходного дня — Карих пожаловалась, что у нее ноутбук перестал показывать картинку.
Но после осмотра стало понятно, что на самом деле дисплей показывает, но не работает подсветка.
При перезагрузке подсветка, включается на пару секунд и тухнет. Пришла в голову идея возможного перегрева лампы подсветки. Действительно после 10 минут перерыва подсветка заработала, но сильно мерцала. Вероятно, это следствие старения лампы (ноутбуку уже лет 7) или плохого контакта. Я начал двигать крышку назад вперед пытаясь увидеть реакцию на движение. Но тут я заметил другую вещь, я услышал странный шум-шипение похожий на звук короткого замыкания и почувствовал запах гари электроники. Звук я сначала списал на старые динамики, а гарь на старые перегревающиеся компоненты.
И вот тут я заметил появившуюся деталь, что окончательно дало возможность поставить диагноз. В нижнем левом углу дисплей начал темнеть – это, как правило, следствие сильного нагрева. Пощупав угол, я сразу одернул руку — он раскалился очень сильно. Сразу же выключил ноутбук, чтоб не ухудшать и без того тяжкую ситуацию.

Я не снимал сначала процесс разборки ноутбука, но я опишу процесс сборки. Это то же самое, но в обратном порядке.

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

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

Continue reading »

Янв 162014
 

Вот это поворот! Почта России привезла посылки меньше чем за 3 недели… в новогодние праздники… из Китая!
Удивлен премного и весьма приятно.

Приехала комплектуха всякая на Ардуину. Разом все, что заказал перед отъездом в Турцию. Куча полезной мелочевки.


Блог о компьютерах  и компьютерной технике, Москва, Владимир Лукьянов, Arduino

Дек 232013
 

Как подружить плату Ардуино с символьным дисплеем? Довольно просто! Все ниже по порядку и с подробностями.

Если есть желание получать информацию от Ардуино без подключения к компьютеру и вывода на серийный порт, можно использовать символьный дисплей. Сделать это не так сложно. Полученное удобство от общения неоценимо.
Для работы я использовал символьный LCD-дисплей J204A на базе чипа HD44780, на eBay часто встречается как LCD2004. 4 строки по 20 символов, инвертированный. Куплен с кучей других на eBay, за сущие копейки, от 60 до 100 рублей за штуку. Русский язык не поддерживается по-умолчанию, но это решаемая проблема, об этом как нибудь в следующий раз. И еще коннекторы на схеме не распаяны, придется поработать паяльником.
Для работы с дисплеями используется библиотека LiquidCrystal.h входящая в дефолтную постаку Arduino IDE.

Сам экран.
Блог о компьютерах  и компьютерной технике, Москва, Владимир Лукьянов, Arduino, Дисплей, J204A, HD44780

А результат мы получим вот такой!
Continue reading »

Июн 282013
 

Сегодня ночью внезапно упали apache и mysql на сервере. Конечно, не совсем внезапно, но я не ожидал. Падение произошло из-за переполнения диска, на котором лежат файлы, необходимые для работы этих сервисов. После падения нормально поднялся только Apache.

А вот Mysql стартовать отказывался.
Много гуглил, но ни чего не нашел.
Симптомы были такие: в лог файл ничего не пишет, при попытке запуска через /etc/init.d/mysqld start зависает.

Запустил в режиме отладки /etc/init.d/mysqld start -d и посмотрел, что происходит.
Затык оказался вот тут:

+ ewaitfile 900 /var/run/mysqld/mysqld.sock

Проверка на наличие сокета в течение 900 секунд. Выходит и не подвисал он при запуске, а просто ждал появления файла.
Уменьшил в инициализационном скрипте время до 10 секунд. И увидел, что, не дождавшись появления файла, сервис отказывается стартовать.

Запустил от имени рута. Все ОК.
Внимание. Тут надо быть аккуратным — при запуске от рута создаются файлы в директории /var/lib/mysql вида mysqld-bin.000008
К новому файлу будут права выставлены от имени рута. И если mysql был запущен от рута, то потом надо выставить корректные права на файлы, иначе он не стартанет.

Если от имени root стартует, значит проблема в правах. Сначала я думал, что проблема в доступе к директории /var/run/mysqld,
Потому как он тормозится на проверке наличия сокета mysqld.sock в указной директории. Хотя права доступа были выставлены верно. (более того в инициализационном скрипте прописана правка прав если они не верны)
Даже после создания сокета вручную, сервис стартовал, но сразу крэшился.

/etc/init.d/mysql status
 * status: crashed

Тут появился прогресс — начали писаться логи.

130628 13:03:53 [ERROR] /usr/sbin/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
130628 13:03:53 [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)

Отсюда уже стало понятнее.
Оказалось, что файлы системной БД имели права для рута. Видимо раньше прокатывало и какое-то очередное обновление изменило это, но до ребута сервиса все работало.
файлы лежат тут: /var/lib/mysql/mysql
Как только я задал правильные права для всех файлов в директории сервис прекрасно запустился.

find /var/lib/mysql/mysql -type f |xargs chown mysql:mysql
Май 292013
 

Задача: создать случайный буквенно-цифровой пароль.

Казалось бы очень простой способ создания случайного пароля — это «постучать» по клавиатуре, но в действительности руки тянутся к середине клавиатуры, чтоб не попадать по спецклавишам. Криптостойкость такого пароля падает. Сегодня подобрал такой вариант решения, просто и удобно, но, возможно, не быстро.

head -c100 /dev/random | tr -dc 'a-zA-Z0-9' | head -c10 && echo

Теперь подробнее.

head -c100 выводит первые 100 байт из /dev/random
/dev/random имеет высокий уровень энтропии, т.к. его заполнение основывается на шумах системы, в основном от драйверов. Например, драйвер мыши.
Но если работать удаленно по SSH, то наполнение буфера случайных чисел может быть крайне медленным. Работая локально можно ускорить процесс начав двигать мышкой или нажимая клавиши.
Удаленно я запускал emerge —sync, что тоже пополняло буфер случайных чисел.
/dev/random — может работать медленнее, чем /dev/urandom так как первый выводи случайные последовательности, а второй псевдослучайные.

tr -dc ‘a-zA-z0-9’ отбрасывает все символы не попадающие в диапазон цифр или строчных/прописных английских букв.
head -c10 выводит из всех символов в потоке только 10 первых.
&& echo а это только для перевода строки, чтоб было удобнее просматривать результат.

Май 192013
 

Собирался уже пойти спать примерно 3,5-часа назад, но вдруг что-то случилось с электричеством. Сначала заморгала лампа, потом ребутнулось все, что могло ребутнутся, в том числе и сервак.
Но вот после перезагрузки из ребута он не вышел и выкинул такую ошибку:

 * Udev uses a devtmpfs mounted on /dev to manage devices.
 * This means that CONFIG_DEVTMPFS=y is required
 * in the kernel configuration.


 * ERROR: cannot start udev as udev-mount would not start
 * Mounting /dev/shm ...

Тут и началась веселуха.
Скачал с mirror.yandex.ru новый образ install-amd64-minimal-20130516. Залил его на флешку. Перепробовал все что мог, но запуститься так и не удалось.
Решил, что проблема может быть в образе и не ошибся — скачанная версия, которая вышла неделей раньше, загрузилась без проблем.
Пересобрал ядро с параметрами CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y. Не взлетело. Закрешилось на монтировании файловой системы. Значит не подтянулся файл конфигурации от предыдущего ядра.
Подсунул старый конфиг ядра и добавил в него два новых параметра.
После этого ребут прошел удачно, все сервисы поднялись и благополучно работают.
Но вот спать теперь совсем мало осталось.

Апр 192013
 
Когда я заказывал набор электронных компонентов на eBay, то даже понятия не имел? что для чего нужно и как это будет в дальнейшем использоваться. Сейчас уже с чем-то разобрался, до чего-то еще не успел добраться, но постепенно разберусь. Постепенно дозаказываю компоненты которых не хватает. В основном на Чипе и Дипе, хотя он и довольно дорогой. Лучше покупать не eBay там те же компоненты стоят гораздо дешевле, но сроки.

Большинство информации можно найти на страницах arduino.cc по ходу текста буду добавлять ссылки, где я нашел информацию.
Переходим к прерываниям.
В случае, когда основная программа имеет сравнительно небольшой размер, все события можно обрабатывать в цикле основной программы, но что если программа большая? Если ее размер множество строк, да еще и с временными задержками? В таком случае, возможна ситуация когда внешние нажатия на кнопку могут быть не обработаны или придется долго держать кнопку нажатой. А что если это не кнопка, а внешнее устройство? Чтоб преодолеть эти сложности необходимо использовать прерывания — как только было вызвано прерывание, основной цикл программы будет приостановлен и микроконтроллер начнет исполнение кода функции, которая соответствует прерыванию, а после завершения продолжится выполнение программы там где она была до этого приостановлена.

На платах Arduino есть контакты, используются для сигнализации о прерывании. Ниже в таблице указаны номера прерываний и соответствующие им контакты на плате.

Платы Контакты
int0 int1 int2 int3 int4 int5
Arduino Uno 2 3
Arduino Mega 2 3 21 20 19 18

Continue reading »

Апр 072013
 
Транзистор — один из базовых элементов для управления элементами схемы. Поэтому надо уметь с ними обращаться. Необходимость у меня такая возникла когда я планировал постройку робота колесного. Для того, чтоб вращать колеса будущего робота необходимо было сделать правильную схему подачи напряжения.
У меня есть 4 колеса, каждое только с двумя контактами.

Я хочу, чтоб колеса не только крутились вперед или не крутились. Я хочу, чтоб они крутились назад или вперед, а для этого надо сделать так, чтоб на один контакт сначала приходил плюс, а на другой минус. А потом наоборот. Для решения данной проблемы я придумал такую схему на 4-х транзисторах и двух диодах. Дополнительно, для теста, понадобились два светодиода и один резистор.

Continue reading »

Мар 252013
 

Подружить Arduino с компьютером очень просто. Данные передаются через виртуальный порт RS-232(COM).

Итак переходим к действиям. Три светодиода будут управляться с клавиатуры, нажатием клавиш влево и вправо. Зажигаем первый светодиод и нажимаем клавишу влево, горящий светодиод тухнет, а слева от него загорается. Когда позиция горящего светодиода крайняя, нажатие в ту же сторону приведет к переходу на светодиод с противоположной стороны.
Блог о компьютерах  и компьютерной технике, Москва, Владимир Лукьянов, Arduino

Continue reading »

Мар 172013
 

Почти первая программа для Arduino — своеобразный «Hello, world!». Для того, чтоб понять как работает Arduino в большинстве туториалов предлагают поморгать лампочкой, но это совсем просто и я, поморгав диодом на 13 контакте, пошел дальше.

Вот что будет происходить.

Continue reading »