Использование Arduino wireless SD Shield для сохранения данных на SD-карту и отправки на ПК по беспроводной сети
Я использую Arduino Mega для мониторинга входного тока и напряжения четырех различных датчиков. Это прекрасно работает - датчики работают так, как ожидалось, и я могу просматривать результаты через последовательный монитор или Parallax DAQ для Excel.
НАСТРОЙКА
У меня также есть Arduino wireless SD shield (теперь вышедший на пенсию) с модулем XBee (показано на рисунке ниже):
- Страница Arduino Shield
- Страница модуля XBee
Я хотел бы сделать следующее:
- Сохраните выход датчиков тока/напряжения локально на SD-карту
- Отправьте данные по Wi-Fi-соединению для построения графика с помощью plotly API (см. пример здесь).
Я видел кучу учебников о том, как заставить щит работать, но, похоже, не могу понять этого:
- Пример Arduino WiFi shield
- Инструктивные таблицы
- Могу ли я подключиться к Wi-Fi с помощью Arduino, "wireless SD shield" и XBee
Вот мой код (для краткости удалил код датчика тока/напряжения):
#include <SPI.h>
#include <WiFi.h>
#include <SD.h>
void setup() {
// initialize serial and wait for the port to open:
Serial.begin(9600);
while(!Serial) ;
SPI.begin();
Serial.println("Checking WiFi status:");
Serial.print("\tWiFi Status: ");
Serial.println(WiFi.status());
if(WiFi.status() == WL_NO_SHIELD){
Serial.println("\tNo Shield present.\n");
}else{
Serial.println("\tShield found.\n");
}
Serial.println("Initializing SD card:");
if (!SD.begin(53)) {
Serial.println("\tSD card initialization failed.\n");
return;
}else{
Serial.println("\tSD card initialization successful.\n");
}
// attempt to connect using WEP encryption:
Serial.println("Initializing Wifi:");
printMacAddress();
// scan for existing networks:
Serial.println("Scanning available networks...");
listNetworks();
}
void loop() {
delay(5000);
// scan for existing networks:
Serial.println("Scanning available networks:");
listNetworks();
}
void printMacAddress() {
// the MAC address of your Wifi shield
byte mac[6];
// print your MAC address:
WiFi.macAddress(mac);
Serial.print("\tMAC: ");
for(int i = 0; i < 5; i++){
Serial.print(mac[5-i],HEX);
if(i != 5){
Serial.print(":");
}
}
Serial.println(" ");
}
void listNetworks() {
// scan for nearby networks:
Serial.println("** Scan Networks **");
byte numSsid = WiFi.scanNetworks();
// print the list of networks seen:
Serial.print("number of available networks:");
Serial.println(numSsid);
// print the network number and name for each network found:
for (int thisNet = 0; thisNet<numSsid; thisNet++) {
Serial.print(thisNet);
Serial.print(") ");
Serial.print(WiFi.SSID(thisNet));
Serial.print("\tSignal: ");
Serial.print(WiFi.RSSI(thisNet));
Serial.print(" dBm");
Serial.print("\tEncryption: ");
Serial.println(WiFi.encryptionType(thisNet));
}
}
ВЫХОД
Checking WiFi status:
WiFi Status: 255
No Shield present.
Initializing SD card:
SD card initialization successful.
Initializing Wifi:
MAC: 0:0:0:0:0:
Scanning available networks...
** Scan Networks **
number of available networks:0
Не совсем понимаю, что здесь происходит.
@Gautam, 👍2
1 ответ
"Arduino Wireless SD shield" - это не "Arduino WiFi shield".
Код, который у вас есть, предназначен для экрана Wi-Fi Arduino. Но у вас есть беспроводной SD-экран Arduino для модуля XBee. XBee - это не Wi-Fi. Протокол Zigbee отличается от протокола Wi-Fi.
Вы можете сохранять данные на SD-карту с помощью библиотеки SD. Установите библиотеку в диспетчере библиотек и попробуйте примеры.
Arduino WiFi щит: Примечание: Библиотека Wi-Fi Arduino предназначена только для этого экрана и клонов
- Как подключиться к Arduino с помощью WiFi?
- В чем разница между вариантами RF (wifi, xbee, NRF24L01)
- Какой самый дешевый способ добавить Wi-Fi в Arduino?
- Проблема с WiFi на Mega + WiFi R3 ATmega2560 + ESP8266
- Создание файла на SD-карте
- SD-карта не инициализируется
- Печать содержимого файла SD - карты на ЖК-дисплее
- Считывание трех сигналов, последовательно отправляемых по Simulink с Arduino
Спасибо, я могу без проблем записывать на SD-карту. У меня есть щит и модуль XBee, как заставить их работать вместе и обнаруживать/отправлять данные по доступным сетям Wi-Fi?, @Gautam
XBee не может отправлять данные по Wi-Fi, @Juraj
Итак, для чего предназначен щит/модуль? пример Arduino, по-видимому, предполагает, что щит сам по себе способен, по крайней мере, находить сети Wi-Fi и подключаться к ним. Прямо сейчас я даже не могу напечатать Mac-адрес., @Gautam
какой пример? то, о чем вы говорите, относится к WI-FI shield, а не к беспроводному щиту. Протокол Zigbee отличается от протокола Wi-Fi, @Juraj
Я не думаю, что понимаю разницу - если вы это сделаете, можете ли вы указать, как/где я ошибаюсь или что я должен искать? Я инженер - механик без большого опыта в электронике. Я явно заблудился и не хочу задавать миллион неуместных вопросов, чтобы выяснить, что моя первоначальная предпосылка была ошибочной., @Gautam
это программное обеспечение, которое взаимодействует по радиочастотам. Wi-Fi-это другое программное обеспечение, чем Zigbee. они не могут разговаривать друг с другом, @Juraj