Простейший пример моста не сработает - Ардуино Юнь
Я попытался изменить пример Температурной веб-панели (находится в arduino-1.5.6-rw/library /Bridge/examples/TemperatureWebPanel) для датчика освещенности. К сожалению, кажется, что даже самый простой результат приема и передачи по Wi-Fi не работает! Я даже прокомментировал рабочую часть, чтобы просто отправить назад некоторый текст в браузер, как вы можете видеть, но я все еще ничего не вижу в браузере:
#include <Bridge.h>
#include <YunServer.h>
#include <YunClient.h>
// Listen on default port 5555, the webserver on the Yun
// will forward there all the HTTP requests for us.
YunServer server;
String startString;
long hits = 0;
void setup() {
Serial.begin(9600);
// For debugging, wait until the serial console is connected.
/*delay(4000);
while(!Serial);
Bridge.begin();
*/
// Bridge startup
pinMode(13, OUTPUT);
Bridge.begin();
digitalWrite(13, HIGH);
pinMode(A0, INPUT);
// Listen for incoming connection only from localhost
// (no one from the external network could connect)
server.listenOnLocalhost();
server.begin();
// get the time that this sketch started:
Process startTime;
startTime.runShellCommand("date");
while (startTime.available()) {
char c = startTime.read();
startString += c;
}
Serial.println("yeah\n");
Serial.println(startTime);
}
void loop() {
// Get clients coming from server
Serial.println("a\n");
YunClient client = server.accept();
// There is a new client?
if (client) {
Serial.println("Client!\n");
// read the command
String command = client.readString();
client.print('(This should definitely be sent over bridge)');
/*command.trim(); //kill whitespace
Serial.println(command);
// is "temperature" command?
if (command == "temperature") {
// get the time from the server:
Process time;
time.runShellCommand("date");
String timeString = "";
while (time.available()) {
char c = time.read();
timeString += c;
}
Serial.println(timeString);
int sensorValue = analogRead(A0);
// convert the reading to millivolts:
client.print("Current time on the Yún: ");
client.println(timeString);
client.print("<br>Current value: ");
client.print(sensorValue);
client.print("<br>This sketch has been running since ");
client.print(startString);
client.print("<br>Hits so far: ");
client.print(hits);
}*/
// Close connection and free resources.
client.stop();
hits++;
}
delay(50); // Poll every 50ms
}
Я вижу "а" несколько раз в последовательном мониторе, но никогда не вижу ничего в arduino.local/arduino/temperature
URL, просто пустой ответ.
Кроме того, через некоторое время кажется, что Юнь отключился от сети, недоступной через http или ssh. Как отладить проблему, подобную этой, учитывая, что ssh является основным способом связи с этим компьютером?
4 ответа
После пошаговой отладки моей собственной конфигурации, я обнаружил, что код никогда не продвигался выше Bridge.begin().
После дальнейшего изучения я обнаружил, что стандартная скорость передачи данных по мосту 250000 больше не соответствует скорости передачи данных ядра 115200.
Изменение на: Bridge.begin(115200)
... исправил проблему для меня.
Чтобы определить скорость вашего ядра, запустите cat /proc/cmdline
из терминала в юн
Смотрите эту ссылку для получения дополнительной информации: https://groups.google.com/forum/
Если это не ваша проблема, рассмотрите возможность добавления отладочной информации (например, Serial.print()) в фактические исходные файлы для Bridge.cpp и т. Д. К сожалению, похоже, что разработчики Arduino/Linino часто вносят критические изменения и не иметь ресурсы для обновления документации, примеров и т. д.
Если вы работаете в Windows, не используйте arduino.local, потому что Windows имеет проблемы с разрешением этого хоста. Вы пробовали с IP-адресом? Вы должны передать свой сценарий через Wi-Fi, а не через последовательный порт (в arduino. Идеально, вы должны изменить порт). Вы создали путь 'arduino/www/'
Вам нужна карта micro SD, подключенная к вашей Yún с папкой с именем "arduino" в корне. Внутри папки "arduino" должен быть каталог с именем "www". Вам необходимо загрузить эскиз через WiFi, чтобы передать содержимое локальной папки "www". Вы не можете передавать файлы через USB. После загрузки вы можете открыть свой любимый браузер и перейти по http://arduino.local/sd/TemperatureWebPanel.
Вы должны открыть http://yuns_ip/sd/TemperatureWebPanel
если вы используете Yun Shield, вам необходимо закомментировать команды последовательного интерфейса или удалить все ссылки на последовательный порт, поскольку мост и последовательный порт используют один и тот же последовательный порт. Столкнулся с той же проблемой - не было связи.