Загрузка программ с платы Intel Edison

Я только что купил комплект Intel Breakout Board Kit с Grove Starter Kit Plus. Я хочу написать программу, которая дает плате IP-адрес, проверяет температуру в комнате и, если эта температура превышена, она включает светодиод. Я могу проверить, что происходит с дисплеем RGB. Когда я подключаю USB-порт OTG к моему ноутбуку, соединение Wi-Fi отлично определяется, IP-адрес отлично принимается, и контроль температуры работает нормально. Программа работает так, как я прошу. Теперь вопросы. Я хотел бы выполнить ту же программу, отключив USB-соединение, поэтому я хотел бы сделать эту плату независимой от ПК, как если бы это было автономное устройство

1) если я загружаю эту рабочую программу в плату, отсоединяю USB и, разумеется, подаю только питание через разъем на плате коммутатора, она больше не работает и останавливается на сообщении "подготовка сетевого подключения...". Но у Intel Edison есть встроенный модуль Wi-Fi, и я действительно не могу понять, почему он не может установить интернет-соединение без помощи USB-соединения с моим ноутбуком. Что с этим не так? Как загрузить и запустить эту программу только с источником питания? Это функция установки () моей программы, мы не достигли цикла (), поэтому я не буду публиковать ее

void setup()
{  
// ------ LCD IN ACTION ------ //  
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);

// setting the color for the connection
lcd.setRGB(colorR, colorG, colorB);
lcd.print("preparing network connection...");

// scroll 40 positions (string length) to the left
// to move it offscreen left: 
for (int positionCounter = 0; positionCounter < 40; positionCounter++) 
{
    // scroll one position left:
    lcd.scrollDisplayLeft();
    // wait a bit:
    delay(350);
}


// ------ SERIAL CONNECTION ------ //

// opening the serial connection
//    Serial.begin(9600);      // initialize serial communication


// ------ SETTING I/O PINS ------ //

pinMode(potentiometer, INPUT);      // angle sensor's pin for input.

pinMode(12, OUTPUT);      // set the blue LED pin mode
pinMode(13, OUTPUT);      // set the red LED pin mode
pinMode(pinLed, OUTPUT);  // set the green LED pin mode


// ------ WIFI CONNECTION CONTROLS ------ //

// check for the presence of the wifi shield:
if (WiFi.status() == WL_NO_SHIELD) 
{
//        Serial.println("WiFi shield not present"); 
    while(true);        // don't continue
} 

// check firmware version
String fv = WiFi.firmwareVersion();
//    if( fv != "1.1.0" )
//        Serial.println("Please upgrade the firmware");


// ------ WIFI CONNECTION ------ //

// attempt to connect to Wifi network:
while (status != WL_CONNECTED) 
{ 
//        Serial.print("Attempting to connect to Network named: ");
//        Serial.println(ssid);                   // print the network name (SSID);

    // connect to WPA/WPA2 network. Change this line if using open or WEP network:    
    status = WiFi.begin(ssid, pass);
    // wait 3 seconds for connection:
    delay(3000);
}

server.begin();                           // start the web server on port 70
printWifiStatus();

где

void printWifiStatus() {

  // print the SSID of the network you're attached to:
  //  Serial.print("SSID: ");
  //  Serial.println(WiFi.SSID());
  colorR = 255;
  colorG = 180;
  colorB = 0;
  lcd.clear();
  lcd.setRGB(colorR, colorG, colorB);
  lcd.print(WiFi.SSID());
  delay(3000);

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
//  Serial.print("IP Address: ");
//  Serial.println(ip);
  colorR = 0;
  colorG = 255;
  colorB = 0;
  lcd.setCursor(0, 1);
  lcd.setRGB(colorR, colorG, colorB);
  lcd.print(ip);
  delay(3000);
  /*
  delay(5000);
  colorR = 180;
  colorG = 255;
  colorB = 255;
  lcd.setRGB(colorR, colorG, colorB);
  lcd.noDisplay();
  */

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  //  Serial.print("signal strength (RSSI):");
  //  Serial.print(rssi);
//  Serial.println(" dBm");
  // print where to go in a browser:
  //  Serial.print("To see this page in action, open a browser to http://");
  //  Serial.println(ip);
}


2) всегда о выполнении предварительно загруженных программ: если я загружаю стандартную мигающую программу ArduinoIDE, отсоединяю USB и просто даю блок питания, он работает отлично [это правильно загружается, да], но если я загружаю та же программа с Serial.begin() и Serial.print("Arduino мигает") больше не работает без USB-подключения к моему ноутбуку [именно поэтому я прокомментировал материал Serial раньше]. Это потому, что плата настолько умна, чтобы обнаружить, что в первом случае последовательное соединение на самом деле не происходит?


3) последний вопрос о хранении программ: когда я компилирую программу с помощью arduino IDE, она дает мне процент используемой памяти относительно доступного для программ.

Sketch is using 103.266 byte (1%) of program memory. The limit is 10.000.000 byte 

но Intel Edison имеет 4 ГБ eMMC, так почему программам доступно только 10 МБ? в какую память загружены программы?

Заранее спасибо тем, кто постарается помочь

3 ответа

Знаете ли вы, как я могу проверить, где он хранится?

Вы можете проверить свои файлы на терминале последовательной связи. Если у вас есть возможные каталоги, в которых может находиться ваш файл, вы можете использовать команды linux, такие как:

cd directory а также ls

или даже вы можете "искать" файл, если вы знаете имя. Вы можете проверить этот сайт.

или вы можете использовать клиентские программы SCP, FTP, такие как WinSCP, для просмотра файлов на вашем Edison.

если я загружу эту рабочую программу в доску

Вы уверены, что ваша программа записана в постоянную память? Я не знаю эту доску. В большинстве случаев такие проблемы возникают, когда ваша программа переносится только в оперативную память, но не сохраняется во Flash.

Sketch использует 103,266 байт (1%) памяти программ. Лимит 10.000.000 байт

10 МБ ОЗУ или флэш-память?

Насколько я понимаю, вы используете Arduino + Edison?

Какой лимит платы 10MB соответствует? Sketch использует 103,266 байт: это RAM или Flash?

Попробуйте ввести эти команды через putty

ifconfig usb0 down
ifconfig wlan0 down
ifconfig usb0 up
ifconfig wlan0 up

это может сделать это

Другие вопросы по тегам