5474| 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 WorkaroundArduino sketch stops running after 2 mins on Edison How to create a system service with systemd on Edison and Galileo’s eglibc image |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed