ITEADUINO IBOARD и nRF24L01+?
- Войдите на сайт для отправки комментариев
"не было у бабы забот - купила баба порося" (с)
Захотелось сделать кое-что полезное и расширить функциональность тех модулей, что уже дома "обжились".
Купил плату ITEADUINO IBOARD V1.1
Даташит тут: http://iteadstudio.com/store/images/produce/Platform/ArduinoCom/IBoard/iBoard_DS.pdf
Схемотехника тут: http://iteadstudio.com/store/images/produce/Platform/ArduinoCom/IBoard/sch-iboard.pdf
Первые грабли: отсутствие USB (но ничего, уже освоил прошивку через ISP)
С отладкой работы тоже грабли - последовательного порта-то нет :(... видимо, буду "моргать" светодидоами, повешенными на аналогвые выходы/выходы...
Дальше вроде пошло чуть легче: завелся пример, который через веб отдает содержимое SD-карточки (включая вывод содержимого файла). Наверняка просто заведется и запись...
А теперь собственно главная проблема.. как запустить беспроводной модуль (nRF24L01+)? Подключается через SPI (вообще, как и остальные составляющие на данной плате).
Во всех мануалах и примерах предлагается подключать этот модуль следующим образом:
* Pins:
* Hardware SPI:
* MISO -> 12
* MOSI -> 11
* SCK -> 13
* IRQ -> 2
* Configurable:
* CE -> 8
* CSN -> 7
Тут же (судя по схеме) все закоммутировано так:
* Pins:
* MISO -> 6
* MOSI -> 5
* SCK -> 7
* IRQ -> 2
* CE -> 3
* CSN -> 8
Интересно, можно ли это вообще заставить работать? Есть мысли? Или я где-то туплю?
>С отладкой работы тоже грабли - последовательного порта-то нет
http://arduino.cc/hu/Reference/SoftwareSerial не поможет?
>Тут же (судя по схеме) все закоммутировано так:
Вот ту что-то родственное описанно. http://www.elecfreaks.com/480.html, там же внизу есть ссылочка на софтверную реализацию SPI либы. Как я понимаю это именно что-бы можно было рулить на любых пинах.
Можно еще попытася завести в ArduinoIDE новый тип платы, что-бы при ее выборе дефайны MISO, MOSI и т.п. соотвествовали схематике... но я не очень понимая как это заработает. В самом-то чипе железная реализация SPI на другие ноги не переедет... Да и потом при работе с SD картой может помешать.
SoftwareSerial поможет, думаю, если удастся заставить его работать на аналоговых входах...
вообще, на плате есть последовательный интерфейс (выведены D0 и D1) - только надо будет девайс сделать (еще одну дуину задействовать, что-ли?), который будет "слушать" и выводить данные.
Про софтовую реализацию SPI уже тоже думал... но тоже весь в сомнениях, что заработают одновременно все три составляющих модуля (LAN, SD и этот Wireless), а это как раз и есть основная цель...
гугл, кстати, ну никак помогать в этом вопросе не хочет. Вываливаются ссылки только на страницы, где эту плату можно купить... но нигде - как с ней полноценно работать. :(
>(еще одну дуину задействовать, что-ли
Ну а почему бы и нет? Тем более что она уже есть (если бы небыло, можно было-бы ковертер купить или соорудить дешовый колхоз и старого кабеля для мобилки). Если у вас на дуине есть несколько serial портов, можно написать скетч который из одного принимает, в другой отправляет. И наоборот.
Либо вообще тупо. Залить скетч с пустыми loop() и setup(), и выводы D0 D1 одной платы - соеденить с аналогичными выводами другой. Тогду дуина будет работать просто как USB конвертер. То есть вы, фактически камень не используете, а только встроенный FTDI чип.
>но тоже весь в сомнениях, что заработают одновременно все три составляющих модуля (LAN, SD и этот Wireless)
А похоже что выбора-то нет. Все равно они все на разные пины разведены. Правда SD и LAN похоже подведен на хардварный SPI, так что с ним стандартные либы должны заработать. Возможно только с SS пином повозится прийдется.
Сегодня попробую дуину с пустыми loop() и setup() - должно существенно облегчить жизнь при отладке.
По поводу LAN и SD на этой плате - все просто. Они разведены на нормальный хардварный SPI, при этом даже все примеры из штатных библиотек работают без "плясок с бубном". Разводка стандартная оказалась.. а вот беспроводной модуль развели "как получилось", похоже :(
Придется биться с софтовой реализацией SPI...
Правда SD и LAN похоже подведен на хардварный SPI, так что с ним стандартные либы должны заработать.
По поводу LAN и SD на этой плате - все просто. Они разведены на нормальный хардварный SPI, при этом даже все примеры из штатных библиотек работают без "плясок с бубном". Разводка стандартная оказалась.
:)
не думаю что там "какие-то дебилы" разводили. Видимо есть на то причина (что-то типа "нужно одновременно принимать данные от Ethernet и радио). Но вот дать либы и примеры - конечно могли бы. Все-таки ардуина и подобные шилды предназначены для людей котое хотят "включить и заработало". А не вчитыватся в даташиты и разбиратся с протоколами. Им тогда проще отдельными модулями или вообще рассыпухой купить (и дешевле выйдет).
Вот-вот.. о том и речь :)
Причем, пример использования есть. Но там только одновременно используется Ethernet и SD. А вот остальная функциональность - осталась "за кадром" :(
Опыт с "пустой" дуиной в качестве USB-конвертора полностью удался. Очень просто получилось.
Правда, сначала почему-то не хотел заливаться скетч.. оказалось, что после прошивки платы через ISP слетел загрузчик (!!!). Вернул его на место через тот же ISP и все нормально заработало.
Попробую поковырять примеры по ссылка выше. Надеюсь, заработает :)
Еще отличная идея тут родилась (разглядвал свой ящик с "моими прелестями").
Отыскался там OLED-дисплей, работающий по I2C - оказалось, что его предельно просто подключить (4 провода: два на питание и задействовать А4 и А5 - а это все вообще разведено на плате под разъем - так вообще идеально получилось!) - его удобно оказалось использовать в качестве "монитора" для вывода отладочных сообщений (а потом можно и для чего-то более полезного задействовать).
Дисплей это хорошо. Применение ему найти всегда можно. Но IMHO он хорош для вывода инфы вида "что происходит" когда устройство уже в эксплуатации. Что-бы понимать "что происходит" и когда это можно "поправить" кнопками на самом устройстве.
При разработке же, Serial, IMHO намного удобней:
Вообщем скорее он более удобен для "индикации режимов работы" чем для "монитора отладочных сообщений".
Всем доброго времени суток =)
Поделюсь тем что на накопал на ITEADUINO IBOARD и nRF24L01. Я так же как автор данной темы поначалу ничего не мог найти на выше упомянутое железо. Но путем упорного гугления я все же что-то умудрился найти =)
Для начала я хотел разобраться с nRF24L01 понять что это такое и с чем его едят, по началу пробовал разные прошивки для Arduino, но прошивки либо не компилировались(из-за кривизны рук =) ) или выдавали на "Serial" какой-то мусор =( Потом нашел прошивку kusarak.livejournal.com/134100.html, она завелась с первого раза =)
Далее стал думать как заточить эту прошивку под ITEADUINO IBOARD. Пытался запустить радио модуль на других портах не на MOSI, MISO, но все было безуспешно. Подскажите это вообще можно реализовать ?
Потом принялся гуглить. наткнулся на данную тему понял что я не одинок в своих поисках =) Потом каким то случайным образом зашел на сайт ha.ivanfm.com/hardware/iboard и обалдел =) понял что "вот она, вот она прошивка которая мне нужна. ПРОООООООШШИИИИВКААА" =)
Надеюсь написанный мной пост комунть поможет =) прошу не судить строго и если где ошибся поправить =) По мере продвижения своих экспериментов буду еще выкладывать инфу и полезные ссылки =) Пока что список достижений не велик, поднял WebServer и сделал что-то подобное но только веб-страница грузится с флешки, если кому надо могу поделиться. А так же буду очень признателен если вы поделитесь своими наработками =)
Вот за это СПАСИБО!!!
(ушел изучать библиотеки)
P.S. Про веб-сервер со страницами с флешки - КРАЙНЕ интересно, поделитесь :)
P.P.S. как только доведу проект до чего-то осознанного (и что не стыдно показать) - обязательно выложу результат.
(ушел изучать библиотеки)
буду признателел если вы будете добавлять коменты в библиотеку =)
воть простенький вебсервр который читает файл с флешки и выводит его в качестве веб-страници.
Читает файл "TEST1" с флешки и выводит его.
а не пробовали в эту страничку добавить какую-нибудь картинку (gif, jpg) и чтобы она тут же на карте лежала? Нормально отдает?
Пробовал, ради эксперимента добавлял ссылку на картинку (.png) 27КБ но она не отобразилась. Но картинка не отображалась =( По всей видимости надо ее в коде отдавать :
но опять же это всего лишь идея, надо будет попробовать ее реализовать =) ток картинку надо будет взять поменьше.
Я вообще хотел с начала разобраться с радио модулями, а потом с визуализацией, т.к. на мой взгляд с радио будет больше мороки.
Даже если картинка и отобразится, то это будет "вопреки" стандартам. Просто счас браузеры стараются "глотать ошибки и показать хоть что-то". Так что если оно отобразится в одном браузере, не факт что вы что-то увидите в другом :)
Что-бы "было правильно" общатся с клиентом нужно по протоколу http. Для этого либо почитать описание протокола, либо поставить какой-нибудь прокси для дебагинга (я, например, пользую Fiddler) посмотреть, на примере любого сайта, что шлет браузер что-бы запросить картинку, и как она посылается в ответ, с какими заголовками и т.п. И постаратся "сделать так же".
Как минимум, на мой глаз нужно заголовоки
HTTP/1.1 200 OK - ну что-бы браузер знал что все хорошо и ответ таки будет
Content-Type: image/png - что-бы он имел представление какой смысл имеют бинарные данный которые будут в теле.
Content-Length: XXXX - размер сколько данных будет посланно. не уверен в 100% обязательности, но втыкнул-бы.
---------------
Когда заработает так - дальше игратся со всякими Last-Modified,Expires, кешированием и проч. (если картинка не менялась, зачем ее каждый раз читать-отправлять на каждом рефреше странице. И ардуину напрягать, да и с траница будет медленее грузится. Тем более с такого быстрого "сервера"0.
ОСТОРОЖНО!
Всем, кто будет работать с этой платой!
Вчера малость потестировал перефирию к этому модулю. Подключал через I2C OLED-дисплей и платку RTC (DS1307).
Прошивал через ISP. При этом сразу после прошивки все нормально работало (банально выводил на дисплей дату и текущее время).
А вот когда отключил разъем ISP и подключил блок питания - началась свистопляска: на дисплее данные в положенных местах, но данные - произвольные... Подключил опять ISP - и опять все "пучком". Разбираться дальше не стал - пошел спать.
Сегодня мысль "клюнула", что проблемы с модулем RTC. Стал читать спецификации и обнаружил, что на этой плате отстутствует 5В (вся плата работает на 3.3В).
Напряжения питания платы хватает для работы дисплея (нормальный диапазон питания для него как раз 3,3...5В), а вот для часиков - уже мало (они от 5В работают).
А теперь непосредственно предупреждение - если прошиваете эту плату через ISP - ОБЯЗАТЕЛЬНО отключайте nRF24L01+
P.S. вот сегодня проверю, спалил ли я свой беспроводной модуль...
дабы не плодить тем спрошу здесь
предупреждаю сразу гуглил и толком не нашел ответа
вопрос в следующем. как вы запустили пример для этой платы? у меня выплевывает кучу ошибок
вот собственно сам пример
и ошибки
я догадываюсь что надо переименовать классы, не уверен, но на всякий случай попробовал. не получилось. с классами работать не умею к сожалению. прошу помощи
от большинства ошибок удалось избавится, немного осталось
ошибки
эту ошибку не могу исправить. не особо понимаю что делать
вот что в SdFile.h:36
в Print.h:48
что нужно исправить?
почему конфликтует? ведь классы то разные. привязки к Print.h не нашел
Скорей всего Print является базовым классом для SdFat, потому методы/функции, которые называются одинаково "зависимы", во всяком случае при одинаковых параметрах у них должны быть одинаковый тип выходного параметра. Здесь же явно видно void и size_t. Не вдавался в подробности, но как вариант:
1. Исправить описание в SdFat.h, типа: virtual size_t write( uint8_t b);
2. Исправить эту функцию в SdFat.cpp, добавив возврат в конце return .... Что возвращать нужно посмотреть в Print::write и по ситуации.
После этого ошибок компиляции быть не должно.
да Print оказывается базовый класс, в комментариях в библиотеке было написано. исправить не получилось. ошибок еще больше вылезло. ну да фиг с ней, вырезал все про sd карточку, хоть как то завести
надеюсь ustas поделится кодом, хотя в этой теме он писал еще в 2012 году. врядли
Если дашь ссылку на исходную либу, могу попробовать исправить (до состояния компиляции, железа нет, потому не смогу проверить, но под Uno скомпилирую).
http://yadi.sk/d/CXjuENmaEEwun
файлы sd_5100 и SdFat
попробуйте может получится
Выкладываю только измененные файлы.
https://www.dropbox.com/s/a5cto3xk0echrn1/SdFat_fix.zip
Нужно заменить эти три файла в библиотеке SdFat, после этого скетч sd_5100.ino компилируется без ошибок.
Вообще я уже встречал такую ошибку, вполне возможно раньше метод Print::write был virtual void Print::write( uint8_t b);, другого объяснения не могу придумать, иначе бы у авторов библиотек тоже бы не компилировалось. Ладно, не парьте мозг, надеюсь всё заработает.
спасибо большое. скоро проверю
отцепив все что было в коде по обращению к sd вебсервер заработал, что уже радует
+ компилируется))
проверил. работает))
выкладываю, кому нибудь понадобится
http://yadi.sk/d/CXjuENmaEEwun
Файл
IBoard1.1_SdFat
Пример
Iboard_1_1_test