Использование Arduino wireless SD Shield для сохранения данных на SD-карту и отправки на ПК по беспроводной сети

Я использую Arduino Mega для мониторинга входного тока и напряжения четырех различных датчиков. Это прекрасно работает - датчики работают так, как ожидалось, и я могу просматривать результаты через последовательный монитор или Parallax DAQ для Excel.

НАСТРОЙКА

У меня также есть Arduino wireless SD shield (теперь вышедший на пенсию) с модулем XBee (показано на рисунке ниже):

  1. Страница Arduino Shield
  2. Страница модуля XBee

Я хотел бы сделать следующее:

  1. Сохраните выход датчиков тока/напряжения локально на SD-карту
  2. Отправьте данные по Wi-Fi-соединению для построения графика с помощью plotly API (см. пример здесь).

Я видел кучу учебников о том, как заставить щит работать, но, похоже, не могу понять этого:

  1. Пример Arduino WiFi shield
  2. Инструктивные таблицы
  3. Могу ли я подключиться к 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

Не совсем понимаю, что здесь происходит.

, 👍2


1 ответ


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 предназначена только для этого экрана и клонов

,

Спасибо, я могу без проблем записывать на 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