По результатам поиска в Google - Arduino в Украине не нашлось! Пусть этот блог будет началом!!!

суббота, 25 февраля 2017 г.

Orange Pi PC2 (Development board - с большой буквы)

Как понятно из названия данный пост о Orange Pi PC2
Распиновка

Подготовка системы с нуля:
  1. Скачать образ c десктопом
  2. Записать на флешку с помощью Win32DiskImager
  3. Вставляем, грузимся... все просто
  4. Коннектимся по SFTP из WebShtorm
  5. Устанавливаем Node.js (просто скачиваем и распаковываем архив  для ARM64!!!)
  6. Запускаем (подключившись по SSH) указывая полный путь к обоим файлам например так /home/sergey/node-v6/bin/node /home/sergey/OrangePi/bin/www.js
  7. Сайт доступен по адресу OrangePi в локальной сети с портом указанным при старте приложения
  8. Как установить Motion (Самая засада с тем, что в данный момент камера Logitech c270 - не определяется... в образе с операционкой нет драйверов, а на Orange Pi Zero  - есть!)

--------------- \\ так что пока по этой плате все\\ ---------------

---------\\09.05.2017\\-----------------
9. Установка Hamachi -  у вас установится десктопное приложение, но оно будет писать что Hamachi не установлено...

---------\\10.05.2017\\-----------------
10. Тогда утановим по такой инструкции и если запустим в консоли(как сказанно в интсрукции) то оно не заработает.....
11. После этого сделаем вот это и после этого десктопное приложение будет писать что Hamachi не сконфигурирован... ну дальше все просто.

понедельник, 23 января 2017 г.

Orange Pi Zero идеи проектов и воплощение идей.

Поддавшись общей панике связанной с национализацией Приватбанка решил потратить 10 долларов которые болтались там на интернет карте и купить Orange Pi Zero. Стоил он 8$ + доставка 3 доллара. В общем - не дорого.
Как только плата приехала я стал придумывать что можно из нее сделать. Например:
  1. Установить на нее Node.js и сделать веб сервер
  2. Добавить к  веб серверу камеру  сделать web камеру
  3. Добавить аккумулятор и сделать камеру для съемки Time Lapse
  4. Добавить 3g modem и сделать удаленную web/time lapse камеру
  5. Добавить солнечную панель и систему зарядку аккумуляторов и следать автономную web/time lapse камеру
  6. Приделать к ней arduino и пару моторчиков и сделать управляемую автономную web/time lapse камеру
  7. Беспроводной контроллер управления аквариумом с просмотрим камеры погруженной в аквариум
Ну пока этого достаточно, для начала давайте запустим Orange Pi Zero! Особенность этой платы - отсутствие видео выхода... т.е. коммуникация с ней происходит или через Linux терминал  по SSH или через Remote desktop.

Для начала нужно скачать образ операционной системы Armbian и записать его на флешку.

2. Скачать программу Win32 Disk Imager для записи образа на флешку

Рекомендуется использовать флешку 8 Gb но я записывал на 2 Gb и все поместилось (образ занимает 400-500 Mb) в своем проекте я использую 16 Gb т.к. я собираюсь сохранять фото и видео с камеры.

На сайте Armbian рекомендуют использовать программу Etcher для записи флешки, у меня эта программа два разу убивала флешку и мне приходилось восстанавливать SD  карту по инструкции с помощью системных утилит Windows.

После того как вы запишите образ на флешку она не будет читаться Windows - это нормально. Если потом захотите ее использовать для своих нужд то ее нужно опять оживить по инструкции в видео (удалить partition, создать partition, форматировать).

И так вы сделали флешку и установили ее в Orange Pi Zero! Теперь включаем ее и радуемся! Должен гореть зеленый светодиод(помигать гдето пол минуты - система устанавливается и начать гореть постоянно). И что теперь? Как его использовать?

Дальше идет Linux:
1. Скачать PuTTY
2. Подключить Orange Pi Zero к вашему роутеру кабелем.
3. Посмотреть на роутере какой адрес получила Orange Pi Zero по DHCP (например 192.168.1.3)
4. Открыть PuTTY и подключиться к Orange Pi Zero
Если все сделано правильно то должно появиться такое окно, в котором нужно ввести login: root, password: 1234 при первом входе вам его предложат поменять.

И наконец.... та-да-да! Мы подключились!
Теперь нужно:
1. Установить xrdp (сервер удаленного рабочего стола) - на данном этапе, подключаясь через windows remote desktop вы должны видеть только окно подключения (xrdp) с логином и паролем. 

Далее нужно проделать три пункта:
2. Установить xlde (sudo apt-get install lxde сам рабочий стол Linux)
3. Запустить сессию удаленного рабочего стола (Создать файл sudo nano ~/.xsession(содержание файла по ссылке), в нем закомментировать exec startkde # KDE и раскомментировать # exec startlxde)
5. Перезагрузить Orange Pi Zero и готово:

6. Если не получается - спросить кого-то, кто минимально разбирается в Linux.

Важно!!!

Orange Pi Zero - сильно греется, и если вы хотите что бы она работала длительное время (от  часа и более) при этом не сгорела и не сожгла квартиру то ее нужно охлаждать. Приделать радиатор и кулер.



На Orange Pi Zero есть две микросхемы: процессор и память желательно приклеить на обе. Память немного ниже чем процессор, для выравнивания поверхности я использовал сложенную в несколько раз фольгу промазанную термопастой. Для приклеивания радиатора горячий клей.
Размеры платы и расположение отверстий идеально подходят для крепления кулера. который питается от 5в с платы. (Температуру процессора можно проверять через терминал командой  
cat /sys/class/thermal/thermal_zone0/temp)
Далее можно поменять часовой пояс Orange Pi Zero:
ln -sf /usr/share/zoneinfo/Europe/Kiev /etc/localtime

Еще "приятная" новость, Wifi  у Orange Pi Zero зависает в самое неподходящее время, для этого можно настроить ребут по пропаданию сети или перегрузка драйвера сети в случае ее пропадания.

Если вам уже не нужно работать с Orange Pi Zero, но вам не хочется подключаться и выключать ее через терминал, хорошо бы приделать кнопку выключения или перезагрузки. (вариант 2)

Подключение к Orange Pi Zero по VPN (logmein.com + Hamachi ) - на работает не из коробки пришлось делать еще движения:
1. Качать нужно файл logmein-hamachi_2.1.0.174-1_armhf.deb (именно с armhf.deb в конце)
2. Потом -  sudo ln -s /lib/ld-linux-armhf.so.3 /lib/ld-linux.so.3 (отсюда)
3. Пытаемся:
sudo hamachi login
sudo hamachi attach [ВСТАВЬТЕ ЗДЕСЬ EMAIL LOGMEIN.COM]
sudo hamachi set-nick [ВСТАВЬТЕ ЛОГИН ДЛЯ ВАШЕГО RASPBERRY PI]

4. Создаем сеть на сайте (Ячеистая сеть)
5. Добавляем в сеть (на сайте) Orange Pi Zero - он уже должен быть там виден в разделе ожидает подтверждения для подключения (подтверждаем его.... и добавляем в эту сеть)
6. Добавляем свой компьютер в эту  же сеть (Скачиваем и устанавливаем ВПН клиент на свой комп и подключаемся к той же сети(нужен идентификатор сети  и пароль который вы придумали когда создавали сеть))
7. Cмотрим виртуальный ip Orange Pi Zero  на сайте и спокойно можем к нему подключаться по ssh или RDP

Установка Node.js on Orange Pi Zero идеальный гайд!

Клонируем репозиторий с Node.js приложением, устанавливаем пакеты и далее:
1. Нужно отредактировать $PATH на Orange Pi: nano /etc/environment
и дописть путь к файлу node.js (/root/node-v6/bin), после сохранения перезагрузить, теперь node можно запускать из любой папки.(но это нам  не понадобится см. след шаг)
2. Еще можно настроить запуск node.js сервера сразу после reboot Orange Pi с помощью cron:







  • sudo crontab -e
  • дописать в файл строку: @reboot sudo /root/node-v6/bin/node /root/OrangePi/bin/www.js &      (первый тут путь к ноде, второй - путь к стартовому файлу приложения)
  • также можно добавить еще команды через ; @reboot sudo /root/node-v6/bin/node /root/OrangePi/bin/www.js ; sudo /etc/init.d/motion start
  • теперь перегружаем и видим что сервер запущен!
  • 3. Как проверить глобально установленные пакеты  npm -g ls --depth=0
    4. Обновиться из репозитория(в папке с репозиторием) git pull origin master

    Выполнение shell команд из Node.js

    Очистить порт после отключения от консоли Node.js  kill -9 $(lsof -t -i:3000)

    Просмотр файловой системы Orange Pi Zero с удаленного компьютера по SSH 

    Установка часового пояса sudo cp /usr/share/zoneinfo/Europe/Kiev /etc/localtime






    пятница, 6 сентября 2013 г.

    From Arduino to Raspberry Pi и назад

    В продолжение вопроса построения термопринтера печатающего твиты, почту и т.д. Для управления термопечатающим механизмом я планировал использовать arduino pro mini 5v. А для связи с внешним миром - arduino + Ethernet shield. Проведя обзорный поиск по инету, как вообще быть с почтой, твиттером, и как его потом печатать, я понял, что для реализации на arduino это довольно сложная задача. Тут мне попала в руки (временно) raspberry pi! И я сразу увидел потенциал: во первых интернет (почта, твиттер, и т.д.) работает изначально! Во вторых преобразования там всякие и т.д на Python намного легче, огромное к-во русских сайтов и т.д. по питону. В третьих есть выходы для управления переферией и связи (GPIO.... )
        Как оказалось для управления шаговым двигателем термопринтера и печкой термопринтера нужно очень точно управлять промежутками времени в микросекундах... выдержка из документации на термопринтер:

    5.1 Схемы управления термопринтером Подсистема управления термопечатающим механизмом состоит из следующих основных узлов:
    • драйверы привода шагового двигателя – микросхемы DD1;
    • интерфейс управления термопечатающей головкой;
    • схема измерения температуры печатающей головки;
    • схема обнаружения конца бумажной ленты.


    Рассмотрим работу каждого из этих узлов по отдельности.
    В качестве драйвера привода шагового двигателя используется специализированная микросхема DD1 – BA6845FS. Микросхема содержит два H-моста с выходным током до 1А и низким выходным падением напряжения (сумма падения на обоих выходных транзисторах (“верхнем” и ”нижнем”) типично составляет 0,5 В при протекающем токе 0,4 А).
    Шаговый двигатель печатающего механизма содержит по две обмотки с типовым сопротивлением 15 Ом, максимальное напряжение на линии "+HDR" с учетом падения напряжения на VT4 (платы системной) составляет 7,2 В, поэтому максимальный протекающий через каждую из обмоток ток ограничивается их омическим сопротивлением на уровне 0,5 А. Обе обмотки подключены напрямую к выходам H-мостов микросхемы DD1. Рассмотрим таблицу состояний для вентиля BA6845FS. Под обозначением "+VCC" понимается напряжение, подаваемое на вход питания "VCC" (выводы 11 и 14 DD1), под обозначением "GND" – потенциал на выводах "MGND" (выводы 8, 1 DD1), на логические входы "DIR" и "SD/" (входы 5, 4 и 12,13 соответственно) подаются сигналы логических уровней. 
    Как видно из таблицы, при подаче на вход "SD/" низкого уровня, выходы отключаются, и ток через обмотку не протекает. Входы "DIR" управляют направлением тока, протекающего через обмотки. На всех логических входах микросхемы DD1 микроконтроллер выдает низкий уровень все время в рабочем режиме и режиме микропотребления, за исключением времени печати или перевода бумаги. В этих режимах используются шаговые двигатели механизмов для привода бумажной ленты чека. На линии "MОT" (входы "SD/" DD1, выход 32 микроконтроллера DD1 платы системной) появляются высокие уровни, разрешающие протекание тока через обмотки двигателя, на линиях "PH1" (выход 30 микроконтроллера DD1 платы системной) и "PH2" (выход 31 микроконтроллера DD1 платы системной) появляются меандры, сдвинутые друг относительно друга на четверть периода, как показано на рисунке 3. Период следования сигналов и, следовательно, скорость вращения двигателя зависит от режима работы принтера. В режиме печати скорость подачи бумаги определяется временем активации нагревательных элементов термоголовки, которое зависит от величины питающего напряжения, температуры головки, плотности выводимого текста и параметров, определенных пользователем. Минимальная длительность полупериода фазы при печати пустой строки или прогоне бумаги составляет 1200 мкс. В режиме прогона бумажной ленты скорость вращения двигателя зависит от наличия бумаги, определяемой с помощью датчика. При обнаружении бумаги полупериод равен 1200 мкс, при отсутствии - 8000 мкс.
    Рисунок 3
    Если при нажатии клавиши прогона ленты, двигатель не вращается, вращается слабо или в обратную сторону – то проблема или в сигналах "MOT", "PH1", "PH2", в микросхеме DD1, или в обмотках двигателя, или в соединении в разъеме X4. Проверьте наличие сигналов при помощи осциллографа, нажимая клавишу прогона ленты. Затем проконтролируйте наличие сигналов непосредственно на контактах разъема X4 при отключенном двигателе (возможен отказ одного из выходов DD1), и, наконец, подключите принтер и проверьте прохождение сигналов на шаговый двигатель. Не будет лишним также проверить исправность обмоток двигателя и отсутствие замыканий между ними.
    Печатающий механизм также содержит датчик определения наличия бумаги. Датчик представляет собой оптопару – светодиод (анод - контакт 1 X4, катод - контакт 3 X4) и npn-фототранзистор (эмиттер контакт 3 X4, коллектор контакт 2 X4). При проверке наличия бумаги, которая происходит кратковременно (0,5-1 мс) перед печатью каждой строки и постоянно при прогоне бумаги в случае ее отсутствия, на анод светодиода через ключ VT1 подается напряжение питания, это сделано для снижения энергопотребления, т.к. для нормальной работы светодиоду надо около 20 мА. При наличии бумаги свет отражается и попадает на фототранзистор, открывая его, и на линии "PАР/" (вход 57 микроконтроллера DD1 платы системной) образуется напряжение низкого уровня. Если бумаги нет, фототранзистор закрыт, и на "PАР/" через внутренний резистор микроконтроллера формируется напряжение высокого уровня. То же самое происходит при отключении светодиода. Светодиод включается кратковременно для обнаружения бумаги перед печатью каждой строки и при прогоне бумаги, если последняя не обнаружена.



    Далее рассмотрим интерфейс управления печатающей головкой термопринтера. Данный интерфейс содержит сигналы: "DAT", "CLK" и "LAT/", которые выдаются из микроконтроллера DD1 платы системной (контакты 29, 25, 26) и поступают на управление печатающей головкой термопринтера. Сигнал "DAT" - это сигнал последовательных данных, загружаемых во внутренние регистры печатающей головки. По фронту сигнала "CLK" происходит загрузка одного бита данных. При печати текста сигнал "CLK" имеет вид меандра с частотой от 368 кГц до 900 кГц, сигнал "DAT" также хаотически изменяется. Сигнал "LAT/" является сигналом внутренней перезагрузки, на этом выходе в режиме печати должны появляться короткие отрицательные импульсы длительностью приблизительно 500 нс и частотой прохождения 300 - 800 Гц.

    Работой печатающей головки управляет также сигнал "STB". При наличии сигнала высокого уровня на этом входе логика печатающей головки включает нагревательные элементы, согласно данным загруженным в нее по интерфейсу управления. В режиме печати (но не в режиме прогона ленты) на этой линии формируется высокий уровень.
    Если качество печати низкое и не зависит от параметров настройки или печать вообще отсутствует, то следует проверить линии "CLK", "DAT", "LAT/", "STB" и схему измерения температуры головки и входного напряжения питания. По двум последним параметрам микроконтроллер рассчитывает время активации термоголовки, и при неисправности цепей измерения этих параметров рассчитанное время будет недостаточным для печати. Минимальное время активации - 1 мс.
    Термопечатающая головка содержит полупроводниковый резистор, сопротивление которого зависит от температуры. Микроконтроллеру необходимо знать температуру печатающей головки, чтобы рассчитать время активации нагревательных элементов. Для этого при помощи встроенного АЦП (вход 54 микроконтроллера DD1 платы системной) измеряется напряжение на делителе R19(платы системной)/терморезистор, подаваемое через RC фильтр на R18 и C26 (платы системной). Имеется специальный тест, позволяющий проверить работу данной цепи.
    Схема этого участка.

    Raspberry pi в общем для этого всего этого не подходит т.к. не может работать устойчиво с промежутками времени в микросекундах. Идеально для этого - Аrduino.
    Значит проэкт будет включать часть Raspberry pi (где все будет бурлить на Python  https://temboo.com/) и часть на Аrduino (где будет только алгоритм получения данных в виде строки точек по Serial и непосредственно печать на бумаге этой строки, ну и плюс опрос датчиков)


    Аrduino part

    Arduino со своей функцией digitalWrite() дает частоту меандра только 119кГц - т.е. мин промежуток (период, частота следования) =  119 мс  - это много. не говоря уже о наносекундах....
    void loop() {

    digitalWrite(13, HIGH); // set the LED on


    digitalWrite(13, LOW); // set the LED off

    Автор http://habrahabr.ru/post/141442/ пишет, что можно значительно увеличить скорость работы Arduino с портами если напрямую манипулировать ими. Каждая Arduino имеет порты. Каждый порт — 8 бит, которые сначала надо настроить на запись.
    Пример _скоро будет_

    Это, пока, конечно, теория... но стоит задуматься... для печати мне нужно 2 меандра на шаговый двигатель ( на линиях "PH1" (выход 30 микроконтроллера DD1 платы системной) и "PH2" (выход 31 микроконтроллера DD1 платы системной) появляются меандры, сдвинутые друг относительно друга на четверть периода, как показано на рисунке 3.) и 2 на термопечатающую головку (По фронту сигнала "CLK" происходит загрузка одного бита данных. При печати текста сигнал "CLK" имеет вид меандра с частотой от 368 кГц до 900 кГц, сигнал "DAT" также хаотически изменяется. Сигнал "LAT/" является сигналом внутренней перезагрузки, на этом выходе в режиме печати должны появляться короткие отрицательные импульсы длительностью приблизительно 500 нс и частотой прохождения 300 - 800 Гц.)

    Т.е. нужно будет управлять отдельными пинами порта напрямую создавая там меандры....- во как....

    Управление битами порта arduino

    sbi PIND, 1 // Инвертировать бит 1 у PORTD

    Буду дергать пином туда-сюда с задержкой.... и делать меандр.
    А что с задержкой???
    Буду читать - http://www.myrobot.ru/stepbystep/pr_mcports.php
    http://bb.ssmu.ru/web_server/cvavr/index.php?node=03
    http://eugenemcu.ru/publ/2-1-0-53
    http://vk.com/topic-2044685_28164388

    воскресенье, 25 августа 2013 г.

    среда, 21 августа 2013 г.

    Arduino и термопринтер (thermal printer) (из кассового аппарата Mini 400me) - часть 2

    Поиски схемы кассового аппарата MINI 400ME увенчались успехом!!!
    И теперь я буду встраивать Arduino Pro Mini в MINI 400ME!!!

    Внутри кассовый аппарат состоит из двух плат, поэтому я решил подпаяться напрямую к разъему.
    Я планирую полностью сохранить функциональность аппарата (не курочить его)... Вдруг пригодится! В нем есть аккумулятор, и блок питания который будет работать только при исправном аппарате т.к. всем этим управляет микроконтроллер который стоит в аппарате - ATmega128L. Жаль он не совместим с Arduino. 



    Моменты подключения...:
    1. Родная ATmega128L питается от 3,3 вольт, а моя Arduino Pro Mini от 5 вольт. (в принтере по идее должно быть 5в, там даже шина есть +5х будем мереть)
    2. Два мозга в одном теле - бред..., будем отключать ATmega при включении Arduino подавая низкий уровень на вход RESET( на ISP разъеме.)
    3. Для подключения термопечатающего механизма МТПЛ205R281 (данных на который нет :( ) используются линии DAT, CLK, LAT/, STB. (вопрос - как подавать отрицательные импульсы???) Другой вопрос - подойдет ли для этого функция ShiftOut из Arduino???