zoukankan      html  css  js  c++  java
  • 在 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

    重启验证,完成。

    进一步阅读

  • 相关阅读:
    记好这24个ES6方法,用于解决实际开发的JS问题
    es6 扩展运算符 剩余运算符 ...
    Django基础006--在pycharm中将项目配置为Django项目
    Django基础005-Django开发的整体过程
    Django基础-004 上下文管理器&中间件&前端公共代码复用
    Django基础-003 配置Django自带的后台管理,操作数据库
    Django基础-002 Models的属性与字段
    jconsole和jstack
    Django基础-001
    前端009-vue框架
  • 原文地址:https://www.cnblogs.com/sjqlwy/p/edison_autosketch.html
Copyright © 2011-2022 走看看