arduino

Arduino + GSM/GPRS модуль SIM900

Sat, 29/12/2012 - 11:48 -- observer

Ну вот система обрела долгожданный модуль, дополнительную степень свободы - GSM/GPRS связь. Для начала я планирую попробовать его для отправки оповещений по SMS, а также для управления с помощью тех же SMS.

Ардуино - работа в качестве ИК пульта

Wed, 05/09/2012 - 21:40 -- observer

Решил добавить еще одну функцию к своему HomeServer  Это управление устройствами по ИК. То есть всеми домашними устройствами у которых есть пульты дистанционного управления. Радиопульты я уже освоил, теперь остался ИК диапазон. И вот это время пришло.

Arduino IR remote

Обмен сообщениями между скриптами, программами, сервисами и Arduino

Thu, 02/02/2012 - 16:09 -- observer

Новая схема взаимодействия подсистем между собой - система обмена сообщениями на базе RabbitMQ сервера.

RabbitMQ and Arduino

socket server и многопоточность

Mon, 16/01/2012 - 15:36 -- observer

ну вот началось ....

После того как был сделан модуль для общения с COM портом и Ардуиной, возник вопрос как этот модуль будет  получать данные от других программ. То есть выполнять вторую свою функцию.

Есть несколько вариантов. Это может быть socket server, который будет ждать подключения на каком-то порту и принимать/передавать данные. RPC сервер, который будет так же ждать подключения на каком-то порту и выполнять команды. Ну и чтобы пострелять из пушки по воробьям - вариант посложнее и как мне кажется, поинтереснее  это использование очередей сообщений, протокола AMQP и RabbitMQ сервера.

Но остановлюсь пока на socket сервере. Остальное, возможно позже...

Не буду объяснять сам принцип, просто отправлю на пост которым я пользовался сам http://www.demoriz.ru/post-19/  Там все предельно ясно описано, да и поднять отдельный soсket сервер на питоне оказалось не так уж сложно, если без извращений конечно.

Главная проблема, которая сразу возникает при добавлении сервера в уже существующую программу, это остановка основного цикла программы, так как добавленный сервер ждет соединения и держит весь цикл.  Для решения этой проблемы существуют потоки и многопоточность. Чтобы не рыть интернет, а информации по этой теме много и она в основном рассчитана на более подготовленных.  Можно воспользоваться тем что нашел я: http://www.uchi-it.ru/9/11/11.html  http://keysolutions.ru/articles/osnovy-raboty-s-potokami-v-python  Очень внятно написано и понятно начинающим.

Arduino COM port - прием и разбор данных

Sun, 15/01/2012 - 17:13 -- observer

Этот небольшой пост как продолжение темы работы с COM портом, затронутой в посте http://podrugomu.com/node/981. Там я описывал запись данных Ардуиной в порт и разбор их Питоном на стороне компьютера. Теперь же стоит обратная задача - передача данных Ардуине и разбор их на команды.

Задача на первый взгляд не сложная, да и кода не много. Но, что программеру шара, то чайнику - смерть.

Первое это чтение данных из порта функцией Serial.read  в буфер

Второе это разбор буфера на адреса, команды и данные. Я придумал себе такой протокол - unitID,command,data - где unitID - номер устройства, command - команда которая должна быть выполнена этим устройством и data - пакет данных для этой программы, если это необходимо.

Ну и третий этап это обработка команды. Т.е. выполнение ее на плате - например передача на определенный выход каких-то данных (из data) или как показано ниже - включение светодиода.

Arduino - physical computing

Tue, 10/01/2012 - 19:00 -- observer

В моих проектах мне всегда не хватало свободы действий, возможности что-то изменить в строительных модулях, доделать, перестроить под себя, под конкретные задачи. Очень быстро компьютеры перестали казаться таким уж податливым материалом. Негибкое программное обеспечение, в свое время, заставило напрячься и использовать Linux. А ограниченное железо просто останавливало на каком-то этапе. Linux ом дело не ограничилось и пришлось от скриптов перейти к программированию, что открыло просто неограниченные возможности.

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

Arduino

Ситуация изменилась совсем недавно .....  читаем дальше

Arduino - COM port - Python

Mon, 09/01/2012 - 17:24 -- observer

Если не считать мелких опытов с Arduino - мигание светодиодом и тому подобное. Первым, что я решил сделать это подружить Arduino UNO с Python. Чтобы далее управлять платой из своих программ, написанных на Питоне. Сделать это проще всего через COM порт. Небольшой опыт работы с PySerial - питоновской библиотекой для связи с последовательными портами, у меня есть. Ну очень небольшой...

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

Чтобы не следить за тем занят порт или нет и не упустить данные решил сделать посредника, который со стороны компьютера будет брать данные из порта и распределять их между программами. Он же будет принимать данные от программ и укладывать их в порт. Со стороны Arduino аналогичная программа получает данные от устройств, готовит и укладывает их в порт, параллельно возможно делая какие-то прямые выводы из этих данных и управляя другими устройствами. Она же получает данные и команды из порта и раздает их нужным устройствам.

Напрашивается какой-то протокол обмена. Стоит конечно поискать что-то стандартное, но пока необходимо отработать лишь общую схему.