freeduino + URM04 v2.0 Ultrasonic Sensor + IO Expansion Shield = не работает
- Войдите на сайт для отправки комментариев
Здравствуйте, у меня вопрос о подключении "URM04 V2.0 Ultrasonic sensor" (ультразвуковой дальномер) к плате Freeduino. Подключаю, затем запускаю скетч из примера и ничего не работает. Может кто сталкивался, или что посоветует.
Опишу шаг за шагом свои действия.
1. присоединяю к плате Freeduino (Duemilanove) плату "IO Expansion Shield For Arduino(V5)"
2. переключаю на ней перемычки в rs485.
3. подключаю "URM04 V2.0 Ultrasonic sensor"
4. заливаю скетч по USB проводу и наблюдаю за процессом через "Serial Monitor" в программе Arduino. Скетч гружу из мануала и свой (в конце сообщения), который пытается запустить измерения и затем считать дистанцию.
в это время
- при подключении URM04 мигает светодиодом 4 раза, значит в порядке
- в "Serial Monitor" вижу, что URM04 не отвечает на комманды.
такое ощущение, что не идёт передача данных по RS485. Как можно проверить работоспособность порта?
Свой скетч для тестирования такой:
#include <Metro.h> Metro TriggerMetro = Metro(2000,true); Metro distanceMetro = Metro(200); int EN = 2; byte cmd[7]; byte address = 0x12; boolean start = true; void setup() { pinMode(EN, OUTPUT); Serial.begin(19200); } void loop() { if(TriggerMetro.check()==1) { if(start){// send a command to a different address start=false; digitalWrite(EN, HIGH); for(int j= 0x11;j<0x18;j++){ address=j; trigger(); } digitalWrite(EN, LOW); } } if((distanceMetro.check()==1) && (!start)) { digitalWrite(EN, HIGH); for(int j= 0x11;j<0x18;j++){ address=j; getDistance(); } digitalWrite(EN, LOW); } if (Serial.available()){ digitalWrite(EN, LOW); Serial.println(Serial.read()); } } void trigger()// begin scan { cmd[0]= 0x55; cmd[1]= 0xaa; cmd[2]= address; cmd[3]= 0x00; cmd[4]= 0x01; cmd[5]= cmd[0]+cmd[1]+cmd[2]+cmd[3]+cmd[4]; for(int j=0;j<6;j++){ Serial.print(cmd[j]); } } void getDistance()// { cmd[0]= 0x55; cmd[1]= 0xaa; cmd[2]= address; cmd[3]= 0x00; cmd[4]= 0x02; cmd[5]= cmd[0]+cmd[1]+cmd[2]+cmd[3]+cmd[4]; for(int j=0;j<6;j++){ Serial.print(cmd[j]); } }
попробуй поменять - Serial.begin(115200);
Не помогает.
Пробовал ещё не смотреть за процессом через "Serial Monitor"(мало-ли порт занимаю) а просто моргать диодом если что произойдёт. Нет эффекта.
Думаю, что это либо из-за того, что я не правильно передаю данные(контрольную сумму не правильно считаю, не та ч-та или ещё что), либо аппаратные проблемы. Но как проверить детали без доп. затрат(купить новую деталь или деталь для тестов)?
Может у кого есть заведомо рабочий скетч для этих-же компонентов, или кто знает, как можно их протестировать.
я бы на твоем месте заказал бы этот..
http://www.ebay.com/itm/New-Arduino-Ultrasonic-Module-HC-SR04-Distance-S...
элементарный, дешевый, и работает прекрасно...программируется легко..
Может можно эмулировать работу RS485 подсоединив сенсор URM04 напрямую к портам Freeduino?
Или кинуть провода от выходов rs485(A и B) "IO Expansion Shield" на входы Freeduino?
Да я уже купил этот URM04 V2.0, теперь голову ломаю. Думал круто, если есть разъёмчик на плате именно такой, какой нужно. Но...
Написал о проблеме на форуме производителя девайса (dfrobot.com), там проблему решили. Расширили описание девайса и добавили скетч с примером работы. Хорошо, когда работает такая служба поддержки :)