Arduino UNO + Arduino WIFI shield
- Войдите на сайт для отправки комментариев
Вс, 14/04/2013 - 16:35
Доброго времени суток.
Форум не выдал схожим тем, поэтому решил создать новую. Столкнулся со следующей проблемой:
Обновил успешно firmware na wifi shielde (http://www.dfrobot.com/community/how-to-upgrade-arduino-wifi-shield-firm...), подлючае к UNO, загружаю скечт на проверку доступных сетей - через монитор порта - выдаёт, что wifi shield не найден.
Бороздю интернет и пока не нашел ни совета, ни решения, куда тыкнуться или устанановить в чём причина.
Доброго времени суток.
Форум не выдал схожим тем, поэтому решил создать новую. Столкнулся со следующей проблемой:
Обновил успешно firmware na wifi shielde (http://www.dfrobot.com/community/how-to-upgrade-arduino-wifi-shield-firm...), подлючае к UNO, загружаю скечт на проверку доступных сетей - через монитор порта - выдаёт, что wifi shield не найден.
Бороздю интернет и пока не нашел ни совета, ни решения, куда тыкнуться или устанановить в чём причина.
Код следующий:
char ssid[] = "yourNetwork"; // the name of your network
int status = WL_IDLE_STATUS; // the Wifi radio's status
void setup() {
// initialize serial:
Serial.begin(9600);
// attempt to connect to an open network:
Serial.println("Attempting to connect to open network...");
status = WiFi.begin(ssid);
// if you're not connected, stop here:
if ( status != WL_CONNECTED) {
Serial.println("Couldn't get a wifi connection");
while(true);
}
// if you are connected :
else {
Serial.print("Connected to the network");
}
}
void loop() {
// do nothing
}
Вставка программного кода в тему/комментарий
А по теме - вы уверены что он говорит что "wifi shield не найден"? В скетче не видно что-бы он мог такое сказать. Там есть только "не погу подключится к сети".
Вообщем вначале выясните какую именно проблему вам нужно решать: не видит шилд или не подключается к сети.
Вот этот пример из туториала что выводит?
Вот: Binārās skices izmērs: 6 334 baiti (no maksimālajiem 32 256)
Якобы всё ок...
Монитор сериала выдаёт:
Initializing Wifi...
MAC: 0:0:0:0:0:0
Scanning available networks...
** Scan Networks **
number of available networks:0
Стоит рутер работаюший. ASUS RT-G32.
на роутере включён скрытый ssid? или beacon interval слишком большой? другие, незнакомые с этой сетью устройства, видят её? и попробуйте задать менее тривиальный mac.
ssid - отключен.
beacon interval = 600.
Незнакомые устройства сеть видят.
MAC изменю.
MAC изменю.
Кстати, когда-то наткнулся на грабли - не любые 16-тиричные цифры допустимы в мак-адресе.
Что-бы не разбиратся "что-там-допустипо", можно взять MAC скажем и Ethernet туториала
http://arduino.cc/en/Tutorial/WebServer
И еще, традиционное:
1. Проверте качество подключения
2. Проверте качество питания, если питаетесь от USB - попробуйте внешний блок питания
Ну хотя-бы померяйте тестером что у вас на 5v пине. Сколько раз я бился лбом об стол... а потом выяснялось что проблема в USB порте ноута...
Еще идеи:
У вас же на шилде есть SD карта? Если да, в скетч поиска сетей попробуйте добавить в начало setup()
И еще, может те, там же в setup(), до описка сетей, попробовать повызвать encryptionType() с разными занчениями параметров (особенно AUTO). Вдруг оно и на то какого типа сети ищутся влияет. Может оно, по дефолту, только отрытые сети ищит.
А еще, я надеюсь, вы у вас ничего кроме шилда счас не подключено? ну вообще ничего... ни единого проводочка/кнопки/диода? Особенно к D7 пину?
На шилде разъём для карты SD имеется, но карты в нём нету.
Ну как, у меня дуина R2 подлюченная через усб, к ней сверху шилд с замкнутым IOREF и 3.3V. Всё.
На шилде разъём для карты SD имеется, но карты в нём нету.
А вы все равно попробуйте. Что вы теряете? Четыре строчки скопипастать? И encryptionType() попробуйте.
Потерять точно не потеряю попробовал сделать.
Да не, вропде все правильно сделали.
А если
Сделать?
Выведет что-то вразумительное или опять нули?
2. Проверте качество питания, если питаетесь от USB - попробуйте внешний блок питания
Глупый вопрос: когда подлючу к внешнему блоку питанию, как я проверю, исправно ли работает дуина?
>Опять нули..
Похоже сам шилд не видит.
>как я проверю, исправно ли работает дуина?
Да так же как и от USB проверяли. ПУстите опять скетч и посмотрите обнаруживают ли сети.
Если вопрос "а работает ли сама дуина", то траниционно любой камень проверяется заливкой скетча Blink (снимаете шилд, заливаете Blink смотрите мигает ли диод с частотой 1 герц).
Да так же как и от USB проверяли. ПУстите опять скетч и посмотрите обнаруживают ли сети.
Если вопрос "а работает ли сама дуина", то траниционно любой камень проверяется заливкой скетча Blink (снимаете шилд, заливаете Blink смотрите мигает ли диод с частотой 1 герц).
Подключил к адаптеру, пустил скетч - просит указать COM порт. и потом выдаёт:
avrdude: stk500_getsync(): not in sync: resp=0x00
С дуиной уже игрался, Blink работал, выставлял разные периоды свечения - всё ок.
Уже обсуждалось. При питании от адаптера, USB порт компа не увидит дуину. Поэтому счетч нужно заливать без адаптера.
Подключил к адаптеру, пустил скетч - просит указать COM порт. и потом выдаёт:
Подождите, когда и зачем у нас появился новый элемент адаптер? Зачем вносить дополнительные неизвестные и шансы ошибится? Для начала - только одно изменение. Блок питания от 7 до 12 вольт (лучше 9v), в разъем внешнего питания. Примерно на 500ma, или, что-бы с хорошим запасом на 1A, что-бы уж точно хватило (хотя, конечно если дуина+шилд потребляют больше 500 ma - скорее всего где-то что-то сгорело/замкнуло).
avrdude: stk500_getsync(): not in sync: resp=0x00
Ну это говорит о том, что вы не просто пустили залитый скетч, а еще и пытались заливать через адаптер (неудачно). Причин почему "неудачно" может быть масса. Авторесет, RX/TX перепутали, дравера, не тот порт и т.д. и т.п. Вообщем можно сильно уплыть в сторону. А у нас счас одна задача - просто убедится что шилду хватает питания. Убедится в этом мы может либо померяв что у нас на 5v пине (если там 4.8, 4.9 и просадок не наблюдается - значит дело не в питании), либо взяв внешний блок и попробовав "не глядя". Если проблемы останутся, то мы предполагаем что маловероятно что и USB и блок одновременно дают плохое питание. А значит - проблема в чем-то другом. Если проблемы исчезнут - значит проблемы была в питании.
С дуиной уже игрался, Blink работал, выставлял разные периоды свечения - всё ок.
Ну то что "сама дуина работает" - понятно по тому что вас в Serial монитор данные бегут. Вы просто спросили "как проверить при внешнем блоке". Ну значит заливаете Blink подключаете внешний блок, выдергиваете USB. Если блинк продолжает работать - значит дуина нормально живет от внешнего блока. Подключаем USB, заливаем скетч скана сетей и смотрим что он видит. При этом подключены одновременно и USB (штатный, не адаптер) и блок питания.
Уже обсуждалось. При питании от адаптера, USB порт компа не увидит дуину.
Думаю тогда было-бы не not in sync, а "порт не подключен". IMHO более вероятны проблемы с ресетом. К тому же "при внешнем блоке не видит дуину" - это скорее исключение/заглюки конкретных материнок. У меня, к примеру, комп спокойно видит дуину при питании от внешнего блока. И кстати, вот у меня как раз такая ситуаци когда "внешний блок нужен". Ноут старый, на USB выдает пониженное напряжение. На 5v пине у меня, при питании от USB стоит 4.5v и меньше. И некоторые шилды "глючат", не хватает им питания, пока не подключешь внешний блок. Тогда на 5v, образуется 4.9v и все рабоатет стабильно.
Если блинк продолжает работать - значит дуина нормально живет от внешнего блока. Подключаем USB, заливаем скетч скана сетей и смотрим что он видит. При этом подключены одновременно и USB (штатный, не адаптер) и блок питания.
Blink работает от внешнего блока питания. Подключил USB, залил скетч, подключил блок питания: 12V; 1A
та же самая песня. Всё по 0.
Пошёл я официальному представителю, где покупал дуиновские штучки. Рассказал сколько варинтов уже было проверено..... Ответили, что должно работать! Ага.
Начал тыкаться работник, оказывается сам wifi shield хреного собран. Гдето контакты врут. Зажимал какую то часть платы - видит сети, отпускал - сеть пропадала......
Вот так вот и покупай у оф. представителей за 150 баксов. Жду новый wifi shield.
Пошёл я официальному представителю, где покупал дуиновские штучки. Рассказал сколько варинтов уже было проверено.....
Ну значит не зря время тратили
Вот так вот и покупай у оф. представителей за 150 баксов. Жду новый wifi shield.
На самом деле это как раз довод "за" этого продавца. Во первых - таки понимает что продает, а не просто "купи-продай". Во вторых - готов участвовать в решении проблемы. В третьих - я же так понял отбрыкиватся от замены не стал? А брак - ну так везде он бывает. И при изготовлении, и при транспортировке и при эксплуатации.
В третьих - я же так понял отбрыкиватся от замены не стал?
Не стал.... теперь только ждать. На Нный период времени проект у меня встал.
Или наоборот. Шанс освоить слабо-связанную архитектуру. Не может же быть, что-бы весь проект только из работы с WifFi состоял.
Парсинг всяких комманд, опрос датчиков и т.п. - вполне можно делать. Делаем какой-то слой Connector. У него может быть несколько реализаций. SerialConnector, WifiConnector или даже FakeConnector (с какими-то заранее захардкоженными наборами тестовых посылок/ответов) и т.п. Более того, я часто так делаю даже когда все железо есть в наличии.
Во первых - легче тестить. Тестируешь отдельно бизнес-логику, отдельно - связь, отдельно - работу с датчиками. Во вторых если потом, к примеру потребовалось гнать данные через EthernetShiled - ну просто реализовать еще один вид коннектора. А весь остальной отлаженный скетч - не трогается.
Да и банально - сам код получается четче-прозначней. Заставляет писать в менее связанном стиле. Отделять мухи и котлеты.
alexboy, моё предложение поменять мак адрес вы поняли неправильно. Вы сделали только вывод на экран желаемого адреса.
Верните строки с serial.print в первоначальное состояние.
А строку с объявлением массива дополните инициализатором:
byte mac[6] = {0xDE, 0xAD ... };
я, вероятно, не прав. В доках написано, что WiFi.macAddress - получает мак адрес. А как же его задавать?
Я думал, что тут по аналогии с эзернет модулями: в начале работы нужно задать мак-адрес.
Я думал, что тут по аналогии с эзернет модулями: в начале работы нужно задать мак-адрес.
Нет. В самой библиотеке нет такой возможности. Похоже MAC зашит в саму firmware шилда или вообще в самом чипе.
Если очень хочется - можно порытся/пересобрать прошивку. Вот ее исходинк https://github.com/arduino/wifishield/tree/master/firmware
Или раскурить даташит чипа http://www.hd-wireless.se/index.php?option=com_content&view=article&id=49%3Ahdg104-details&catid=3%3Acontent&Itemid=1 (но для скачивания даташита они хотят регистрации - мне вломно).
Да и вообщем-то раз "при нажатии пальцем заработало" - значит дело было не в маке, а какой-то микротрещене платы или непропае (можно попросить ремонтников-мобильщиков феном погреть плату). Но можно и с маком заморочится, если есть спортивный интересс.
Парсинг всяких комманд, опрос датчиков и т.п. - вполне можно делать. Делаем какой-то слой Connector. У него может быть несколько реализаций. SerialConnector, WifiConnector или даже FakeConnector (с какими-то заранее захардкоженными наборами тестовых посылок/ответов) и т.п. Более того, я часто так делаю даже когда все железо есть в наличии.
Отделять мухи и котлеты.
И в правду.. погорячился я.