Архив метки: Raspberry Pi

Хозяйке на заметку:

Температурные датчики (DS18B20, которые по технологии 1-wire) я проложил двумя типами проводов:

  • от щедрости – витой парой (2 датчика, в совокупности около 20 метров),
  • от жадности — 4х-жильным телефонным проводом (3 датчика, в совокупности около 40 метров).

Датчики, которые висят на витой паре (используя три провода из 8) – глючат – т.е. с некоторой регулярностью выдают ошибку (тот провод, который подлинее, выдает глючный результат в в ~20% замеров, тот который покороче – редко, но тоже бывает). Те датчики, которые висят на в разы более длинном телефонном проводе, работают, т-т-т, корректно и аккуратно.

Замена датчика на новый ни к чему не привела, при этом на стендовых испытаниях, когда датчики подключены напрямую к Raspberry (через макетную плату), все работает предельно правильно. Стало быть, собака порылась в проводе.

Попробую заменить все провода на телефонный провод, благо это недорохо (300 руб за 100 метров против 1000 руб. за 100 метров витой пары), да и осталось его вроде бы еще.

Если не поможет, стану подозревать, что на показания датчиков влияет электропроводка, которая в одном месте проходит рядом с витой парой и, возможно, наводит там невовремя некое ненужное напряжение. Тогда придется подумать в сторону экранированной витой пары, которая в моей округе меньше, чем бухтой по 300 м. не продается.

Маленькие Муки самообразования или как вывести демона на свет

Некоторое время назад я был свято уверен, что образование, в его текущем виде, отжило мвой срок. Технически, вся информация сейчас есть в интернете – начиная от фундаментальных трудов по любому вопросу, заканчивая практическими случаями. Знай себе, мучай Яндекс с Гуглом и образовывайся.

Однако жеж, не все так феерично получается на практике.

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

Так вот, нашел в интернетах кучу примеров, как прописать эту программку в автозагрузку Линукса. Не с первого раза, но вроде получилось – прописал   ее в rc.local, перезагрузился, скомандовал «ps –eF» – и вот она, работает среди других процессов. И даже мейлы отправляет согласно заложенному алгоритму.

Одна незадача – работает она в фоне, не отображая положенную информацию в терминале. Чую что собака порылась в том, что надо каким то образом указать чтобы программа отображалась в нужном tty, а как это сделать – не знаю. Поиск ничего не дает, такое впечатление, что все нужны демоны, а явно работающие программы не нужны.

Ок, пошел с другого боку. Прописал автозагрузку в etc/xdg/autostart. В «ярлыке» указал, что запускать в Lxterminal. Не с первого раза, но опять таки все заработало. Но образовалась другая засада — во первых, в этом случае программа запускается, только если запущен vncserver, чего на самом деле не хочется, а во вторых – этот самый vnserver не получается вкорячить в автозагрузку, хучь то, как это делается, прописано в сети аж в нескольких вариантах. Но вот не работает и все.

И вот тут бы старший товарищ посмотрел бы опытным взглядом и указал бы на глупую ошибку неопытного программиста , но нету его, все сам по материалам из инету.

В общем, чувствую, еще придется помучаться.

З.Ы. параллельно с упоением читаю что ни попадя про Big Data.  И прям  зреет во мне уверенность, что как закончу с  робосмотрителем, так напишу прогарммулину, которая будет шерстить интернет и на основе этого информационного мусора выдавиать нужные и ненужные прогнозы.

Не программисты мы, но кое-что мОгем…

… или о блок-схеме рефлекторных механизмов полоумного дома:

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

Чтобы привести   мысли в порядок — таки нарисовал схему программы (я понимаю, что с этого, по-хорошему, надо было начать, но я же не настоящий сварщик J)

Может, кому будет интересно посмотреть, покритиковать, дополнить. Каждый пункт – отдельно прописанная функция. То что курсивом – пока еще не написал.

Позже выложу код к кажной функции.

Запуск программы:

  • Определение времени старта
  • Чтение конфигурации из ini файла (целевые значения температуры, критические значения температуры, периодичность проверки, часы формирования email-отчета, список рассылки, etc)
  • Чтение температуры с датчиков
  • Чтение датчика наличия тока (датчика тока пока в наличии нет, планирую найти UPS, который может делится этой инфой с Raspberry)
  • Расчет времени следующего отчета
  • Отчет о запуске системы в консоль
  • Отчет о запуске системы на email
  • Запись показателей температуры в лог

Основной цикл (раз в минуту):

  • Чтение конфигурации из ini файла (чтобы можно было скармливать программе новые установки температуры без перезапуска программы)
  • Чтение температуры с датчиков
  • Чтение датчика наличия тока в сети
    • Если ток отсутствует => отправка email
  • Сравнение температур с критическими показателями
    • Если t < tcrit => отправка сообщения на email, отчет в консоль
  • Сравнение температур с показателями прошлой проверки
    • Если t > tlast +0.2, отчет в консоль, запись температуры в лог
    • Если t< tlast -0.2, отчет в консоль, запись температуры в лог
  • Сравнение температур с целевыми показателями
    • Если t < tnorm -1 and насос выключен => запуск соответствующего насоса, отчет в консоль, смена статуса насоса, определение времени старта насоса
    • Если t > tnorm +1 and насос включен => выключение соответствующего насоса, отчет в консоль, расчет времени работы насоса, запись времени работы насоса в лог
  • Сравнение текущего времени с временем следующего отчета
    • Если текущее время >времени отчета:
      • Отправка email
      • Отчет в консоль
      • Запись температуры в лог
      • Расчет времени следующего отчета

Новости с полей:

1. Прокатил детей на байдарке. Ответственно заявляю – сплавляться по Малой Истре в июле – глупое и бесперспективное занятие. Воды мало, много завалов. Попозже составлю отчетЪ

2. Проложил   часть сети по дому. С розетками для интернету вопросов вроде не возникло, все обжалось и коннектится. А вот с проводами для термодатчиков не все гладко.

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

Есть подозрение, что не хватило 3.3 вольтового напряжения (датчик требует мин 3 Вольта), которое просело из-за длины провода, а также из-за наличия цепи двух датчиков. Вчера уже в ночи было недосуг проверять, но в след. выходные   попробую запитать их от 5 В. Если это не спасет отца русского Скайнета, буду прозванивать цепь.

Параллельно возникли сомнения в работоспособности управляющего контура. Предполагается, что 3.3 В сигнал с распберри будет переключать реле, которое, в свою очередь будет подавать 220 на насосы. На стенде все работало (я к настоящий пацан уже мигал не светодиодами, а нормальными 60-Ваттными лампочками, имитирующими насосы), но вот откроется ли реле от 3,3В сигнала с учетами потерь в 15 метрах витой пары – баальшой вопрос. Пока изучаю что такое транзистор и как с его помощью увеличить напряжение сигнала. Идет туго.

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

А вот еще электронубства вопрос:

Извините, что к вама обращаюсь, сами мы не местные физику подзабыли 🙁

Максимальный ток, который может перенести порт GPIO на Raspberry – 16mA/

Реле для управления насосами, которое я купил в количестве аж четырех штук имеет номинальную мощность катушки 0,2Вт. Получается, что сила тока, которая пойдет на ейное питание от Raspberry = 0.2Вт/5V = 40mA (питание осуществляется от пятивольтного пина). Незадача-с. Несмотря на то, что тестовое подключение и управление реле прошло успешно, поселилось в моей душе боязнь, что в процессе долгой эксплуатации Малинка прикажет долго жить.

Правильно же я понимаю, что ограничить силу тока доп резистором можно, но это может отрицательно сказаться на способности реле срабатывать?

Реле вот такое вот (которое на 5 V):

 

О мирном искусственном разуме или (поло)умный дом

Создание огромных боевых человекоподобных роботов столкнулось с затруднениями при реализации ходовой, поэтому самобеглые существа отложены до осени-зимы, а   все внимание сфокусировано на оседлых роботах.

Вчерась выдрал из скучающего в в отстутствие хозяина робота евойные мозги в виде Raspberry Pi B и начал приспосабливать  их к мирным целям – а именно – к поумнению дома, который на даче.

Для начала присобачил к нему датчик температуры (какая замечательная, хочу сказть, штука, эта ваша технология 1-wire, позволяющая легко подрубать на один пин GPIO сразу несколько датчиков). Нужно это для того, чтобы не нервничать зимой по поводу того, работает ли котел на даче или нет. Соотвественно, первая задача – создание оповещателя о температуре. Читать далее

Недосужего фантазерства псто или Дабы не забыть…

Второй день прихожу с работы в ночи, поэтому заниматься робо игрульками недосуг. А кто не делает, то что?    Тот фантазирует.

Думаю над тем, что делать дальше, когда кейс с энкодерами будет реализован: Читать далее

Диодное порно

Приехали вчерась оптотроны – они же диодно-транзисторные щелевые датчики.

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

Что такое диодно-транзисторный щелевой датчег? Это деталька в виде буквы П, на одной ноге которой находится инфракрасный светодиод, который светит на другую ногу. На другой ноге находится фотодиод, который реагирует на свет светодиода с другой стороны. Если тот светит, то вторая нога пропускает через себя ток, если не светит – то не пропускает.

Итого, получается система, которая определяет, находится что-либо между ног, или нет.

Читать далее

Робот, который натурально убился ап стену

2015-03-21-13.46.53

Сначала мне казалось, что самое сложное – изучить язык и чего то запрограммировать. Потом мне казалось, что сложное – соединить радиодетальки в работающую схему. Самое простое, считал я, — соединить все модули на каком-то шасси, и все худо-бедно заработает.

«Ничего подобного», сказал  бы мой первый робот, если бы умел говорить.

За неимением листовых материалов, решил-таки собирать шасси из железного конструктора: Читать далее

Вчерась приехали моторредукторы и колесы.

маниупулятор, робот, робот-уборщик

Расстройство в том, что двигатели оказались, прямо скажем, не очень мощными и робот может и не взлететь. Плюс, микросхема L293NE, как оказалось, работает тоже не за просто так — напряжение подаваемое на нее от общего источника питания — 5V, напряжение на «силовых» выходах — всего 4,3 вольта. А если работает второй двигатель, то напряжение на первом проседает до 4-х.

Казалось бы, чего проще – подать на «силовой» вход платы нужное моторчегам напряжение в 6 V. Но тогда нужно думать, где брать 5V, необходимые для питания L293 и сонара, которому тоже нужно 5V. И всего получается, что робот должен тащить на себе:

  • 6 пальчиковых аккумов общим напряжением 7.2V, трансформируемых в 5 V для питания L293, сонара и мигающего светодиода (кудаж без него)
  • 5 пальчиковых аккумов общим напряжением 6V, для питания моторчегов
  • повербанк для питания Raspberry

Итого: примерно дохрена

Вывод – пока, в целях эксперимента, буду делать так, все равно основная задача стоит не в полной автономности, а в программировании. Потом надо будет переходить на LiPo. Но это позже. На текущий месяц семейный бюджет по строке «всякая херня» уже исчерпан. J

З.Ы. Кстати, о всякой херне — заказал у кетайцев Raspberry Cam. Через месяц приедет, будем думать над «настоящими» глазами, тем более, что понял примерную схему дальномера из связки «лазер» + HD камера, но об этом позже.

Для полного счастия не хватает энкодеров (скоро будут) и понимания, на чем все это дело собирать – вопрос с основой для шасси остается открытым.