Сен 142014
 

Сделал небольшой обзор купленных на ebay, aliexpress USB хабов.

Заинтересует он больше тех, кто приобретает хабы для различных самоделок.

Меня в частности интересовало качество пайки, расположение разъемов, типы используемых микросхем, поддерживаемый стандарт USB и количество недостающих деталей :)

Большая часть хабов были куплены лично, но по мере “находимости” на просторах интернета будут добавляться и другие.

Если у Вас есть что спросить или добавить пишите тут.

 Опубликовано в 21:10
Сен 072014
 

В давние времена, мониторинг температуры в серверной был делом не дешевым, а главное не тривиальным.

Мне приходилось иметь дело с устройством NetPing, которое по сети, по протоколу SNMP, позволяло считывать данные о температуре и в зависимости от ее значение выполнять заданные действия. Устройство периодически зависало само, потому нужно было мониторить и его, по необходимости дергая питание вручную. Но иного выхода не было – даже эта простая железка в те времена стоила не малых денег, которых в бюджетном учреждении не было.

Сейчас ситуация изменилась и стало доступное огромное количество устройств с различными датчиками, шинами, “не скучными корпусами” по вполне доступной цене.

Но я расскажу, каким образом была решена задача по мониторингу температуры мною.

Были приобретены Arduino Nano, датчик температуры и влажности DHT22 и резистор на 4-6 кОм. Общая стоимость деталей составила 280 рублей.
Continue reading »

 Опубликовано в 14:49
Сен 072014
 

Скрипт arduino-serial.sh:

#!/bin/sh
#Последовательный порт, через который работаем с ардуиной
usbPort="/dev/ttyUSB0"
#Устанавливаем параметры последовательного порта
stty -F $usbPort 9600 raw 9600 -echo -cstopb
#Через две секунды, если порт существует, посылаем данные в порт. А сами продолжаем выполнение скрипта
sleep 2 && test -e $usbPort && echo "$1" | dd of=$usbPort 1>/dev/null 2>/dev/null &
#Читаем одну строку из порта
head -n 1 $usbPort

При запуске скрипта, в параметре передаем строку, которую оправим ардуине:

./arduino-serial.sh test

Через две секунды скрипт выведет в консоль то, что ответила ардуина.

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

Строка которую отправит ардуина в последовательны порт обязательно должна оканчиваться символом переноса (метод Serial.println как раз то что нужно ;) )!

 Опубликовано в 01:47
Июл 222014
 

Столкнулся с необходимостью реализовать многопоточное приложении на языке lua.

Встроенный механизм coroutine (кооперативной многозадачности) “естественно” не подошел.

После долгого гугления был найден кандидат – библиотека  lualanes.

Основными доводами для ее использования стали:

  • реальная многопточность
  • простота использования
  • кроссплатформенность.

Пример многопоточного приложения:

--Подключаем библиотеку LuaLanes
local lanes = require "lanes".configure()
--Подключаем библиотеку LuaSocket (для реализации паузы)
lanes.require("socket")

--Тело первого потока
function firstThread()
    require("socket")
    while true do
		print("First thread")
		socket.sleep(0.5)
    end
end

--Тело второго потока
function secondThread()
    require("socket")
    while true do
		print("Second thread")
		socket.sleep(0.9)
    end
end

--Запускаем первый поток
genFirstThread = lanes.gen( "*",firstThread )()
--Запускаем второй поток
genSecondThread = lanes.gen( "*",secondThread )()

--Уходим в бесконечный цикл
while true do
    socket.sleep(1)
end

Больше примеров можно найти среди исходников библиотеки.

Для себя были собраны deb пакеты (проверены в debian и ubuntu).

И самое главное – библиотека собирается под OpenWRT. Тут можно взять Makefile (позже надеюсь войдет в upstream). А тут лежат собранные для OpenWRT пакеты (в том числе для CyberWRT).

UPD: На 1.08.2014 пакет включен в репозиторий CyberWRT и добавлен в trunk OpenWRT.

 Опубликовано в 23:36
Яндекс.Метрика