2017-3-24 13:09:50 [显示全部楼层]
查看: 3020|回复: 0

[教程] 在 Edison 上自动启动 Arduino Sketch

[复制链接]
前言
原创文章,转载引用务必注明链接,水平有限,如有疏漏,欢迎指正。
本文使用Markdown写成,为获得更好的阅读体验和正常的链接、图片显示,请访问我的博客原文:

http://www.cnblogs.com/sjqlwy/p/edison_autosketch.html


最近闲鱼入手了一个微软不知道什么的IoT开发箱,里面有个继电器小灯,准备用EDISON测试一下好坏,于是打开Arduino配合手机APP——Blynk,很快烧录完毕测试OK,但是拔掉MicroUSB新上电之后,发现程序没反应了,搜索一下发现Arduino Sketch是不会自动启动的,那么如何解决呢?
1. Edison烧录程序
【官方示意图】右侧三个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/ttyGS0
2.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.service  cat << _EOF_ >> /lib/systemd/system/autosketch.service  [Unit]  Description=Edison Arduino Sketch Autoloader  [Service]  ExecStart=/sketch/sketch.elf /dev/ttyGS0 /dev/ttyGS0  [Install]    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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail