1
Ардуино (Arduino) / Re: Arduino UNO WiFi проблем ("WiFi shield not present")
« -: Февруари 27, 2017, 10:21:17 pm »
Аз съм голям новобранец...
Оказа се, че на порт 23 на Ардуиното има постоянно работещ Tcp сървър, който използва TELNET protocol (https://en.wikipedia.org/wiki/Telnet).
Този протокол е на базата на Tcp и най-общо казано е обикновен Tcp протокол, по който се предават стрингове. Поне аз така го разбрах.
Кънекнах се с моя Tcp клиент и о - чудо - работи.
На Ардуиното трябва да работи следната програмка (в опростен вид):
Wifi.read() чете един символ (ако има такъв), идващ от някой от Tcp клиентите (може да са повече от един - пробвах), а Wifi.print(...) съответно изпраща един или повече символи по Tcp канала към всички клиенти (изпраща до 80 символа наведнъж и ако съобщението е по-дълго го изпраща на части).
Изключително просто! На мен ми върши перфектна работа!
Иска да кажа отново защо не успях от първия път. Отначало на тази платформа се опитвах да използвам стандартната WiFi библиотека (https://www.arduino.cc/en/Reference/WiFi). После разбрах, че тя не само че не е за него, но дори е САМО за така наречените shield-ове - допълнителни платки, които се нанизват на Арнуидото и му дават допълнителни възможности. Знам, че някой ми се присмива сега, ама поне да обясня на такива като мен
Докато си правих тестове с тази WiFi библиотека видях, че мога да се кънеквам с Tcp клиент на порт 23 (а също и на порт 80), но нищо не се случваше и затова забравих за това. Докато днес не попаднах на този много хубав пример: https://github.com/arduino-org/arduino-library-arduino-wifi/blob/master/examples/Tools/Wifi2Serial/Wifi2Serial.ino, където се казва:
...connect to the WiFi via a telnet client at the address 192.168.240.1:23 where 192.168.240.1 is the IP of your Arduino Uno Wifi and 23 is the port.
И го пробвах и стана - явно си има постоянно отворен Tcp канал и явно всички го знаят, щом в мрежата не открих нищо, като търсех за Tcp връзка.
Сега се чудя какво има на порт 80
Оказа се, че на порт 23 на Ардуиното има постоянно работещ Tcp сървър, който използва TELNET protocol (https://en.wikipedia.org/wiki/Telnet).
Този протокол е на базата на Tcp и най-общо казано е обикновен Tcp протокол, по който се предават стрингове. Поне аз така го разбрах.
Кънекнах се с моя Tcp клиент и о - чудо - работи.
На Ардуиното трябва да работи следната програмка (в опростен вид):
Код: [Маркирай кода]
#include <UnoWiFiDevEd.h>
void setup() {
Wifi.begin();
}
void loop() {
if (Wifi.available()){
Wifi.print(Wifi.read()); // Така връща на Tcp клиента всичко, което дойде от него.
}
delay(50);
}
Wifi.read() чете един символ (ако има такъв), идващ от някой от Tcp клиентите (може да са повече от един - пробвах), а Wifi.print(...) съответно изпраща един или повече символи по Tcp канала към всички клиенти (изпраща до 80 символа наведнъж и ако съобщението е по-дълго го изпраща на части).
Изключително просто! На мен ми върши перфектна работа!
Иска да кажа отново защо не успях от първия път. Отначало на тази платформа се опитвах да използвам стандартната WiFi библиотека (https://www.arduino.cc/en/Reference/WiFi). После разбрах, че тя не само че не е за него, но дори е САМО за така наречените shield-ове - допълнителни платки, които се нанизват на Арнуидото и му дават допълнителни възможности. Знам, че някой ми се присмива сега, ама поне да обясня на такива като мен
Докато си правих тестове с тази WiFi библиотека видях, че мога да се кънеквам с Tcp клиент на порт 23 (а също и на порт 80), но нищо не се случваше и затова забравих за това. Докато днес не попаднах на този много хубав пример: https://github.com/arduino-org/arduino-library-arduino-wifi/blob/master/examples/Tools/Wifi2Serial/Wifi2Serial.ino, където се казва:
...connect to the WiFi via a telnet client at the address 192.168.240.1:23 where 192.168.240.1 is the IP of your Arduino Uno Wifi and 23 is the port.
И го пробвах и стана - явно си има постоянно отворен Tcp канал и явно всички го знаят, щом в мрежата не открих нищо, като търсех за Tcp връзка.
Сега се чудя какво има на порт 80