我刚用Grove Starter Kit Plus购买了Intel Edison Breakout Board Kit我想写一个程序,给电路板一个IP地址,检查一个房间的温度,如果超过该温度,它会打开一个LED 。我可以查看RGB显示器的用途。当我将USB OTG端口连接到我的笔记本电脑时,可以很好地检测到wifi连接,完美接收IP地址并且温度控制正常。该计划按我要求的方式运作。现在的问题。我想执行相同的程序拔掉USB连接,所以我想让这个板独立于PC,就像它是一个独立的设备一样 1)如果我在电路板上上传这个工作程序,拔掉USB,当然只需通过分线板上的插孔提供电源,它就不再工作了,并停在消息上并准备网络连接...... &#34 ;.但英特尔爱迪生有一个集成的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(&#34; Arduino闪烁&#34;)的相同程序,如果没有USB连接到我的笔记本电脑,它就不再工作了[这就是为什么我之前评论了串口的原因]。是因为电路板是如此智能,以至于在第一种情况下检测到串行连接并没有真正发生?
3)关于程序存储的最后一个问题:当我使用arduino IDE编译程序时,它给出了与程序可用内存相关的内存百分比
Sketch is using 103.266 byte (1%) of program memory. The limit is 10.000.000 byte
但英特尔爱迪生拥有4GB的eMMC,为什么程序只有10MB?上传程序的内存是什么?
提前感谢那些试图提供帮助的人
答案 0 :(得分:1)
您知道我该如何检查存储位置?
您可以在串行通讯终端上查看文件。如果你的文件可能有目录,你可以使用linux命令:
cd directory
和ls
如果您知道名字,甚至可以“搜索”该文件。您可以查看this site。
或者您可以使用SCP,FTP客户端程序(如WinSCP)查看爱迪生的文件。
答案 1 :(得分:0)
如果我在董事会上传这个工作程序
你确定你的程序闪存到持久性内存中吗?我不知道这个板子。在大多数情况下,当您的程序仅传输到RAM存储器但未存储在Flash中时会出现这种问题。
Sketch使用103.266字节(1%)的程序存储器。限制是 10.000.000字节
10MB RAM,还是闪存?
据我了解你使用Arduino + Edison?
哪个主板10MB限制对应? Sketch使用103.266字节:是RAM还是Flash?
答案 2 :(得分:-1)
尝试通过putty
输入这些命令ifconfig usb0 down
ifconfig wlan0 down
ifconfig usb0 up
ifconfig wlan0 up
可能会这样做