pATAq 发表于 2017-3-24 13:09:50

在 Edison 上自动启动 Arduino Sketch

前言原创文章,转载引用务必注明链接,水平有限,如有疏漏,欢迎指正。本文使用Markdown写成,为获得更好的阅读体验和正常的链接、图片显示,请访问我的博客原文:
http://www.cnblogs.com/sjqlwy/p/edison_autosketch.html
最近闲鱼入手了一个微软不知道什么的IoT开发箱,里面有个继电器小灯,准备用EDISON测试一下好坏,于是打开Arduino配合手机APP——Blynk,很快烧录完毕测试OK,但是拔掉MicroUSB新上电之后,发现程序没反应了,搜索一下发现Arduino Sketch是不会自动启动的,那么如何解决呢?1. Edison烧录程序https://software.intel.com/sites/default/files/did_feeds_images/cd3fb0c6-25c2-468f-974e-46368a26db64/cd3fb0c6-25c2-468f-974e-46368a26db64-imageId=01e762f1-7f33-433a-9adc-ff785858e9a5.jpg【官方示意图】右侧三个usb接口,从上到下:a. 与中间的MicroUSB接口通过开关选择,同时只能使用一个,基本的USB接口;b. USB-OTG接口,通过USB Gadget驱动实现虚拟串口和Mass Storage存储功能(这个存储一直出问题,暂时没解决,欢迎指教),与主机连接可以烧录Arduino Sketch;c. 系统串口,进行调试和底层开发。使用Blynk实现,手机控制台灯继电器,之前写过详细介绍,代码很简单:    #include <WiFi.h>#include <BlynkSimpleIntelEdisonWiFi.h>​// You should get Auth Token in the Blynk App.// Go to the Project Settings (nut icon).char auth[] = "YourAuthToken";​// Your WiFi credentials.// Set password to "" for open networks.char ssid[] = "YourNetworkName";char pass[] = "YourPassword";​void setup(){    Blynk.begin(auth, ssid, pass);    // Or specify server using one of those commands:    //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8442);    //Blynk.begin(auth, ssid, pass, server_ip, port);}​void loop(){    Blynk.run();}访问官方服务器不稳定的话也可以自己搭建服务器。2. 在Edison上自动启动 Arduino Sketch2.1 手动启动Sketch重新上电之后,Sketch是不会自动运行的,想要手动启动的话,使用如下代码:/sketch/sketch.elf /dev/ttyGS0 /dev/ttyGS02.2 开机自动启动Sketch如果不想那么麻烦还要SSH登录上去手动运行命令,我们可以让Sketch每次自动运行。参考Intel开发者中心的博客:procedure to Autostart the Arduino* Sketch on an Intel® Edison board (中文版),可以实现,但是新版的Edison已经使用systemd取代System V来管理系统启动了,我们新建一个服务:touch /lib/systemd/system/autosketch.servicecat << _EOF_ >> /lib/systemd/system/autosketch.serviceDescription=Edison Arduino Sketch AutoloaderExecStart=/sketch/sketch.elf /dev/ttyGS0 /dev/ttyGS0    WantedBy=basic.target_EOF_# 注意程序必须使用绝对路径试试能不能正常运行:    systemctl start autosketch && systemctl status autosketch如果没有报错并显示Active说明程序已经正确启动了,此时可以观察测试Sketch是否正确运行。设置该服务开机自动启动:systemctl enable autosketch重启验证,完成。进一步阅读Run Arduino sketch on boot Workaround
Arduino sketch stops running after 2 mins on Edison
How to create a system service with systemd on Edison and Galileo’s eglibc image
页: [1]
查看完整版本: 在 Edison 上自动启动 Arduino Sketch