我刚买了一个带有 Grove Starter Kit Plus 的Intel Edison Breakout Board Kit我想编写一个程序,为电路板提供一个 IP 地址,检查房间内的温度,如果超过该温度,它会打开 LED。我可以检查 RGB 显示器的情况。当我将 USB OTG 端口连接到我的笔记本电脑时,wifi 连接被完美检测到,IP 地址被完美接收,温度控制工作正常。该程序按我的要求工作。现在的问题。我想执行相同的程序来拔出 USB 连接,所以我想让这个板独立于 PC,就像它是一个独立的设备一样
1)如果我将这个工作程序上传到板上,拔掉USB,当然只通过分线板上的插孔提供电源,它就不再工作了,并停止在“准备网络连接......”的消息上。但是英特尔爱迪生有一个集成的 wifi 模块,我真的无法理解为什么如果没有与我的笔记本电脑的 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 blinking") 相同的程序,如果没有 USB 连接到我的笔记本电脑,它就不再工作了[这就是我之前评论 Serial 东西的原因]。是不是因为板子很聪明,可以检测到在第一种情况下串行连接并没有真正发生?
3)关于程序存储的最后一个问题:当我使用 arduino IDE 编译程序时,它会给出与程序可用内存相关的内存使用百分比
Sketch is using 103.266 byte (1%) of program memory. The limit is 10.000.000 byte
但是 Intel Edison 有一个 4GB eMMC 那么为什么只有 10MB 可供程序使用呢?程序上传到哪个内存?
提前感谢那些愿意提供帮助的人