CC3000 получает неправильный адрес при подключении к wifi точке доступа
Сначала я попытался использовать библиотеки SparkFun и Adafruit CC3000 с тем, что я на самом деле хотел в качестве программы, но когда это не сработало, примеры для этих библиотек, и я, кажется, всегда сталкиваюсь с одной и той же проблемой.
CC3000 подключится к моей точке доступа, которая использует частный адрес в диапазоне 172.24.1.1 / 24
, и каким-то образом он получит адрес 192.168.1.64
.
Я знаю, что он подключается, так как событие iw отображает MAC-адрес устройства при подключении.
Единственные изменения, которые я внес в исходный код на данный момент, - это ssid и пароль, а также изменение контактов прерывания и vbat в соответствии с конфигурацией платы tinyduino cc3000.
Устройство имеет прошивку 1.34. Вот код.
Конкретный результат, который я получаю от arduino, выглядит следующим образом (обратите внимание, что я прокомментировал отключение внизу):
Connected at 115200
---------------------------------
SparkFun CC3000 - Connection Test
---------------------------------
CC3000 initialization complete
Connecting to: my_wifi_ap
Connected!
CC3000 MAC Address: 70:FF:76:04:B9:5B
IP Address: 192.168.1.62
Subnet Mask: 255.255.255.0
Default Gateway: 192.168.1.254
DHCP Server: 0.0.0.0
DNS Server: 192.168.1.254
SSID: my_wifi_ap
Finished connection test
запуск iw event -f
на моей точке доступа перед запуском теста подключения дает мне следующий результат:
wlan0: new station 70:ff:76:04:b9:5b
Когда другое устройство, например мой телефон, подключается к этой точке доступа, мы получаем 172.24.1.xx
, где xx
- это любое число от 50
до 150
, которое нам назначает DHCP.
ОТРЕДАКТИРОВАНО: Кроме того, если я закомментирую отключение в конце теста, я увижу, что устройство отправляет keepalives каждые три или четыре секунды, используя:
iw dev wlan0 station get 70:ff:76:04:b9:5b // (время бездействия никогда не превышает 4000 мс).
Я не могу выполнить пинг 192.168.1.64
, потому что эта сеть явно недоступна, но попытка выполнить пинг 172.24.1.64
дает мне исключение:
icmp open socket: Operation not permitted
Вывод из примера Adafruit:
RX Buffer : 131 bytes
TX Buffer : 131 bytes
Free RAM: 1221
Initialising the CC3000 ...
Firmware V. : 1.32
MAC Address : 0x70 0xFF 0x76 0x04 0xB9 0x5B
Started AP/SSID scan
Networks found: 20
================================================
...
SSID Name : my_wifi_ap
RSSI : 83
Security Mode: 3
SSID Name : my_other_wifi_ap
RSSI : 67
Security Mode: 3
...
================================================
Deleting old connection profiles
Attempting to connect to my_wifi_ap
Started AP/SSID scan
Connecting to my_wifi_ap...Waiting to connect...Connected!
Request DHCP
IP Addr: 192.168.1.62
Netmask: 255.255.255.0
Gateway: 192.168.1.254
Фактическое подключаемое устройство - это точка доступа Raspberry Pi, которая была настроена с помощью DNSMASQ и hostapd. Конфигурация работает и, как было доказано, работает с другими встроенными сетевыми устройствами.
@Partinarel, 👍1
Обсуждение2 ответа
Добро пожаловать в удивительный мир программного обеспечения Adafruit. Какой-то гений решил, что CC3000 должен сохранять первый адрес, который он когда-либо получал в энергонезависимом хранилище, и с тех пор использовать его независимо от того, что впоследствии может сообщить DHCP. Проверьте источник библиотеки.
Я решил эту проблему, понизив прошивку до версии, предложенной для использования с библиотекой adafruit, но на самом деле это кажется столь же правдоподобной причиной, почему она не работала. Не знаю, почему библиотека Sparkfun тоже не сработала, но это явно НЗП., @Partinarel
Я понял, что использую на плате прошивку версии 1.34, с которой она была настроена, когда я ее получил, и решил, что попробую понизить ее до одного из наборов fir; ware, поставляемых adafruit, чтобы посмотреть, сработает ли это.
Программа модификации прошивки на самом деле не компилировалась в настольной версии arduino ide, поэтому я решил вместо этого использовать codebender.
Я не уверен, должен ли я испытывать разочарование или облегчение, но понижение версии прошивки действительно заставило ее работать. Я использовал файл под названием driverpath_1_11, который, как я полагаю, библиотеки называют версией прошивки 0x113 или 0x118, которая идентифицирует себя как версия прошивки 1.24, которая каким-то образом действительно работала.
Решение находится здесь: https://codebender.cc/sketch:318229
Пины были изменены, чтобы соответствовать фиксированным пингам, используемым tinyduino.
Пожалуйста, примите либо ваш ответ, либо другой, чтобы вопрос считался решенным и не привлекал к себе внимания., @Chris Stratton
- Проблемы с подключением Adafruit Feather M0 к сети
- Как подключиться к Arduino с помощью WiFi?
- ESP8266 не подключается к Wi-Fi
- В чем разница между вариантами RF (wifi, xbee, NRF24L01)
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Можно ли отключить WiFi на ESP8266?
- WebSocketsServer.h: No such file or directory
- Как отключить или остановить точку доступа в ESP8266?
Какое устройство является вашей точкой доступа? Можете ли вы запросить у него IP-адрес
новой станции
? Можете ли вы опубликовать результаты из примера Adafruit?, @SoreDakeNoKotoЯ голосую за то, чтобы закрыть этот вопрос как не относящийся к теме, потому что речь идет о версиях прошивки CC3000, а не об Arduino. Кроме того, постер давно отказался от вопроса, не приняв даже их собственное очевидное решение, и не входил в систему более года, а это означает, что этот не по теме вопрос, скорее всего, останется навсегда заброшенным., @Chris Stratton