在 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 Sketch
2.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
重启验证,完成。
进一步阅读
在 Edison 上自动启动 Arduino Sketch的更多相关文章
- 树莓派上搭建arduino开发环境
-------------还是博客园上面的格式看这舒服,不去新浪了------------- 为什么要在树莓派上开发arduino呢?总要把树莓派用起来嘛,不然老吃灰. 树莓派使用SSH时没有图形界面 ...
- 树莓派上搭建arduino命令行开发环境
-------------还是博客园上面的格式看这舒服,不去新浪了------------- 为什么要在树莓派上开发arduino呢?总要把树莓派用起来嘛,不然老吃灰. 树莓派使用SSH时没有图形界面 ...
- 在Windows上安装Arduino的步骤
在64位Windows 10机器上测试 Windows Installer从arduino.cc下载并安装最新的Arduino IDE 从git-scm.com下载并安装Git 开始Git GUI并运 ...
- Win10 上 安装Arduino 驱动 和 Arduino IDE 1.6.9
Win10 安装Arduino IDE软件 和 驱动 在Win10 上安装最新的Arduino IDE (1.6.9安装包)很简单,并且不行要手动安装Arduino板子的驱动,整个安装过程都当前的简单 ...
- Arduino命令行编译 树莓派连接Arduino 电脑上编译Arduino代码后 通过树莓派烧写到Arduino上
//本教程针对UNO 1.在file->preferences中找到preferences.txt文件 2:用记事本打开preferences.txt,选择hex文件存放的路径,在最后行加入 b ...
- Edison与Arduino通过USB对接通信
虽然Edison本身就装在一块Arduino扩展板上,但当要接的传感器太多了的时候一个扩展板也不够用了.因此需要再用一Arduino板扩展功能.而两者需要通信才能达到一个整体的效果,因此这里介绍如何用 ...
- Arduino上传数据至贝壳物联并与FPGA进行交互
本篇实现Arduino与FPGA交互,当然也没有什么新的协议,还是基于串口通讯,现在学一个串口通信基本上可以驱动大多数模块了,而且和各种单片机无缝数据交互,Arduino由于其强大的库函数支持,在实现 ...
- Arduino上“Collect2.exe: error: ld returned 5 exit status”错误的解决方法
1.运行环境 Windows xp; Arduino1.6.11 IDE. 2.问题 在Arduino编译时,经常出现如下的错误: collect2.exe: error: ld returned 5 ...
- 了解 ARDUINO 101* 平台
原文链接 简介 作为一名物联网 (IoT) 开发人员,您需要根据项目的不同需求,选择最适合的平台来构建应用. 了解不同平台的功能至关重要. 本文第一部分比较了 Arduino 101 平台和 Ardu ...
随机推荐
- python爬虫基础07-selenium大全1/8-安装和简单使用
Selenium笔记(1)安装和简单使用 本文集链接:https://www.jianshu.com/nb/25338984 简介 Selenium是一个用于Web应用程序测试的工具. Seleniu ...
- Web框架之Django_08 重要组件(form组件、cookie和session组件)
摘要: form组件 cookie组件 session组件 一.form组件 form介绍我们之前在html页面中利用form表单向后端提交数据时候,都需要对用户的输入进行校验,比如校验用户是否输入正 ...
- LeetCode(72) Edit Distance
题目 Given two words word1 and word2, find the minimum number of steps required to convert word1 to wo ...
- The North American Invitational Programming Contest 2018 E. Prefix Free Code
Consider nn initial strings of lower case letters, where no initial string is a prefix of any other ...
- PAT Basic 1029
1029 旧键盘 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在2行中分别给出应该输 ...
- HDU 3507 斜率优化 DP Print Article
在kuangbin巨巨博客上学的. #include <iostream> #include <cstdio> #include <cstring> #includ ...
- luogu3159 [CQOI2012]交换棋子
把每个点拆成 x y z 对于第 i 个点,x->y是表示流入的,y->z是表示流出的. #include <iostream> #include <cstring> ...
- UIDatePicker 显示时间和打印时间不一样
默认是时区为0,如下格式化一下就好啦 UIDatePicker *datePiker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 100, ...
- 论文《Piexel Recurrent Nerual Network》总结
论文<Piexel Recurrent Nerual Network>总结 论文:<Pixel Recurrent Nerual Network> 时间:2016 作者:Aar ...
- TOJ 1203: Number Sequence
1203: Number Sequence Time Limit(Common/Java):1000MS/10000MS Memory Limit:65536KByte Total Submi ...