суббота, 16 мая 2015 г.

Настройка роутера (маршрутизатора) на 2 WAN (2 провайдера) : Mikrotik VS ASUS

Если у вас в доме 2 провайдера и вы хотите поддерживать оба канала связи с Интернет тогда есть как минимум 2 способа настройки.

Рассматриваемые способы сводятся к сравнению Dual WAN на базе Mikrotik и ASUS.

Настройка Dual WAN на базе Mikrotik описана тут ( http://lanmarket.ua/stats/mikrotik-routeros-dva-provajdera-balansirovka-marshrutizaciya-firewall-(bez%20skriptov) ),

Реально пользовался микротиком минут 40 что бы понять что даже модель Mikrotik 750GL (с 5×10/100/1000 Мбит/с Ethernet портами ) проигрывает раза в 2-3 по пропускной способности по сравнению с ASUS RT-N66U .

Настройка роутера Асус очень простая (рассматривается случай прихода в квартиру 2ух шнурков Ethernet ) :
1) Переходим в закладку Интернет - Двойной WAN

2) Включаем двойной WAN
3) Выбираем какой LAN порт роутера будет использоваться в роли второго WAN
4) Подключаем кабели Ethernet соответствующие основному и резервному каналу.
5) Выставляем параметры временных задержек перехода на вторичный канал и обратно.
6) Нажимаем кнопку "Применить", если роутер попросит перезагрузиться - разрешаем и ждем.
...
7) Переходим в закладку Интернет - Подключение
8) Тут выставляем параметры подключения которые выдает провайдер каждого канала (статический IP адрес или динамический - DHCP)


После перезагрузки роутера ( где-то секунд  80 ), роутер теперь работает на полную и выдает максимальные параметры доступа к Интернет которые предоставляет сам провайдер.

Так же можно на этом роутере настроить и баллансировку нагрузки - одновременная работа двух каналов Интернет, но тогда не будут работать некоторые службы которые должны "светиться" в интернет.

Чем загружать скетчи в Arduino ? FTDI (FOCA) , Arduino UNO или USBasp ?

У многих возникают вопросы - как заливать скетчи в устройство на базе Ардуино?

1) Используя Arduino UNO

Большое заблуждение у новичков - если сам бутлоадер загрузили с помощью SPI (MISO, MOSI, SCK...) то и скетчи так же должні загружаться. А вот и нет.

Для загрузки скетчев используется другой механизм - последовательній порт микроконтроллера (UART/USART), это есть стандартный и единственный способ на котором построена вся система Ардуино - бутлоадер Ардуино и обслуживает коммуникацию с компьютером посредством именно выводов Rx и Tx, и скетчи заливаются только так.

На родном сайте Ардуино читаем :
Для загрузки скетчей с помощью платы Ардуино УНО нужно вынуть УНОвский микроконтроллер и соединить ваше устройство по такой схеме :

Не забываем, по умолчанию бутлоадер настроен на коммуникацию с кварцем 16МГц на вашем устройстве (макетке). То есть, обязательно нужно ставить кварц 16МГц и обвязку (конденсаторы), иначе получаем ошибку типа "avrdude: stk500 communication error" .

Теперь на ПК в среде Ардуино ставить тип программатора USBtinyISP и указываем ком порт этой платы Ардуино УНО. Теперь всё готово для заливки скетча.


2) Используя FTDI конвертер (на примере FOCA)

Второй способ - использовать любой FTDI совместимый переходник. Я юзаю FOCA от Itead Studiohttp://imall.iteadstudio.com/im120525005.html ). Для этой цели подойдет даже самопальный переходник USB-COM на базе микросхемы FT232R USB UART IC ( http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232R.pdf ).

Принцип программирования скетчей тот же - подключаем макетку (устройство) к этому переходнику (программатору), ставим COM порт этого переходника в Arduino IDE и прошиваем.

Важный момент - Tx микроконтроллера должен соединятся с Rx переходника, и Rx микроконтроллера должен соединятся с Tx переходника. Потому что то что для одной стороны есть передающим пином то для другой стороны - принимающим.

DTR соединяем с выводом RESET микроконтроллера.



3) Используя USBasp

Программатор USBasp можно использовать только для заливки глобальных прошивок : загрузчика Ардуино или же самостоятельно разработанной программы низкого уровня, написанной на С или АСМе для микроконтроллера (тогда нужно отказаться от использования Ардуино концепции).


Загрузка бутлоадера Arduino в ATMega8 с помощью USBasp

Burning the Bootloader (using USBasp clone) to ATMega8

Кроме заливки бутлоадера с помощью платы-донора Ардуино возможен так же процесс прожига с помощью обычных программаторов типа USBasp (USB ISP - как пишут китайцы на корпусах этих программаторов).

 Купить эти программаторы можно прямо на eBay за 1,14 доляра ( например - http://www.ebay.com/itm/Neu-USB-ISP-USBASP-Programmiergerat-Programmierer-fur-Atmel-AVR-ATMega-51-ATTiny-/271870278925?pt=LH_DefaultDomain_77&hash=item3f4cbb3d0d). В хозяйстве однозначно нужно иметь такой тру-программатор что бы в будущем научиться прошивать контроллеры без Ардуино, так как сама программа Ардуино занимает примерно половину памяти микроконтроллера ну и вносит задержки во всех процессах обработки сигналов (нажатия клавих, скорость работы АЦП), в некоторых случаях - в 10 раз (!).

Существует неприятный момент - может понадобиться перепрошить сам программатор USBasp что бы он мог работать с Arduino IDE , в этом случае нужна будет платка фирменного Ардуино или ещё один программатор который будет программировать наш .
В разобранном виде наш подопытный USBasp (USB ISP) выглядит так :


В моем случае было вот что - USB ISP программатор  не работал под Ардуино даже в старой версии 1.0.3 и пришлось обновить прошивку самого программатора.
Для этого, первым делом, вынул из USB порта компьютера этот брелок, разобрал корпус и замкнул 2 контрольные точки  ( обозначенные красными кружками ) : 


Предварительно подключив линии (сигнальные и линии питания) к Ардуино УНО, скачал прошивку для USBasp на родном сайте изобретателя - http://www.fischl.de/usbasp/ ( http://www.fischl.de/usbasp/usbasp.2011-05-28.tar.gz TPI support ).

И прошиваем программатор с помощью программы, например, eXtreme Burner - AVR .

Потом нужно скачать и поставить обновленный драйвер для Виндовс - http://arduino-project.net/USBasp-win-driver-x86-x64-ia64-v1.2.4.zip

Если всё сделано правильно то теперь у вас есть программатор полностью совместимый с Ардуино IDE и протоколом AVRasp.

Теперь осталось соединить микроконтроллер, в который нужно залить бутлоадер Ардуино, и воспользоваться опять программой eXtreme Burner - AVR , открыв в ней файл бутлоадера. Сам файл бутлоадера есть в папке Arduino IDE и называется ATmegaBOOT-prod-firmware-2009-11-07.hex ( по умолчанию тут - C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\atmega8 ).

Опятьт таки, если всё было сделано корректно то на этом процесс прожига бутлоадера Ардуино в ваш микроконтроллер закончен. теперь можно писать программы и паять железо! :)



пятница, 15 мая 2015 г.

Как правильно заливать bootloader в свое устройство на Atmega8 ? ( через Arduino UNO )

Так как же правильно заливать bootloader в свое устройство на (например) Atmega8 через Arduino UNO ?
И как заливать потом скетч в этот самый ардуино который вы собрали на макетке?
Какие типы программаторов можно использовать для прошивки бутлоадера и скетча?

Об этих и других вопросах напишу в этом бложике.

Много всякой воды в интернетах пишут а всё равно не договаривают.

Начнем с того что Arduino это всего лишь программа которая заливается в микроконтроллер и потом дает вам возможность заливать поверх неё свои подпрограммы в тот же микроконтроллер ( скетчи ). Arduino использует те же регистры которые используют тру-программисты когда пишут свои программы для микроконтроллеров БЕЗ использования Arduino. Если вы удивлены что микроконтроллеры можно программить без ардуины то почитайте про концепцию однокристальных ЭВМ хотя бы.


Burning the Bootloader (using Arduino UNO)

В этом примере берется Ардуино УНО (на базе АТМега328) и любой домашний проект на АТМега8.

Итак, суровый список ошибок которые допускают при прожиге "чистых" микроконтроллеров (м-к) пытаясь залить в них bootloader (бутлоадер) Arduino :

1) неправильное соединение RST-MISO-MOSI-SCK-VDD-GND линий
всегда рекомендовано соединять сначала земли (GND, Ground) основной платы и макетницы,
потом сигнальные проводники (RST,MISO,MOSI,SCK) и только потом питание (VDD, +3.3V, +5V)
на самом сайте http://www.arduino.cc/en/Tutorial/ArduinoToBreadboard описан процесс но не расставлены акценты.

Значит, делаем так - всё в лоб (мисо в мисо, моси в моси и т.д.)


2) Неправильный кварц. Для АТмеги8 критично важно поставить кварц именно 16МГц (!) - по умолчанию все настройки и прошивки которые содержит среда разработки ардуины (IDE) заточены именно под 16МГц.

Можно, конечно, поставить и 12 и 8 и что хотите но нужно будет пересчитать контрольные числа которые необходимо будет записать в регистры м-к (так называемые FUSE регистры). Это делать не рекомендую так как вероятность ошибиться возрастает в разы, да и никто не хочет сидеть и лопатить документацию на микроконтроллер - нужно разработать прогу и быстро, минут за 15 ! :)

Значит, ставим 16МГц. Соединяем всё по схеме сверху . Обязательно подаем питание на VCC и AVCC , землю на GND и AGND .

К слову, резистор к питанию не обязательно 10к брать (как говорят на сайте), можно и 16к и меньше 10к - от этого зависит только время "загрузки" - чем больше сопротивление тем медленнее будет происходить сброс м-к, тут можно экспериментировать. Конденсаторы берите строго от 18 до 22 пФ (пикоФарад = 10 в -12 степени Фарад )

Так же обязательно соедините вход RESET микроконтроллера с землей (GND) через конденсатор, примерно 100нФ. В общей сложности, обвеска ресета должна выглядеть так :


Во многих схемах С21 игнорируют и с программаторов линия РСТ сразу идет на пин м-к, но это может в некоторых случаях привести к неспособности прошивки м-к. 


3) Использование самой новой версии Ардуино IDE для прожига. Эта внезапная особенность прошивки бутлоадера в новенькую АТмегу может попортить много нервов.
Во избежание - пользуйте версию 1.0.3 - http://arduino.googlecode.com/files/arduino-1.0.3-windows.zip в противном случае можете получить сообщение консоли вида "avrdude error..."

4) Теперь нужно запрограммить саму платку Ардуино Уно что бы она была софтовым программатором для нашей АТмеги8 :
Для этого выбираем встроенный скетч из примеров под названием ArduinoISP:arduinoISP
Загружаем этот скетч в плату Ардуино.








Выбираем программатор arduino as ISP в меню сервис в подменю программатор.Не забываем вернуть программатор на место,когда будем программировать снова платы arduino.
arduinoISP2

Выбираем в меню микроконтроллер АТМега8 (он в подпункте "Arduino NG or older" или сразу будет ATMega8 - в зависимости от версии программной оболочки):
arduinoISP3
Если Вы просто хотите загрузить в микроконтроллер загрузчик,то необходимо через меню сервис выбрать записать загрузчик,этим вы установите необходимые значения в FUSE регистры. .
После нескольких секунд Arduino BootLoader будет загружен в АТМегу8.


Burning the Bootloader (using USBasp clone)

... продолжение следует

Интро

Всем привет!

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

Первый пост - пошел. :)