1.什么是Hacklab WebIDE

Hacklab WebIDE是阿里云物联网云端开发环境,Hacklab WebIDE提供远程的Linux服务,并预先安装了物联网开发需要的环境,能实现AliOS Things的云端编译,本地烧录的功能。简单的说,就是一款集成了编译环境,永不掉线并且只要有网可以随时开发工程的在线IDE。网址为https://hacklab.aliyun.com。

1.1 优势

对于阿里云这款hacklab的编译器来说,从我个人使用的角度来看,优势主要有以下几点

  • 不用安装环境,直接远程开发。
  • 不需要很高的电脑配置,只要装上浏览器就可以开发,编译速度不受电脑性能限制。
  • 不用带电脑,只要有自己的账号,就可以实现办公室,家里或者其他外出环境下进行开发。
  • 工程用git进行管理,可进行协调开发工作。
  • 可实现在线调试,在线下载的功能。
  • 可直接对接阿里云物联网平台,方便设备与云的联调,节省嵌入式开发调试时间。

1.2 趋势

随着物联网与网络技术的快速发展,越来越多的工具层出不穷,嵌入式开发必然会走向快速产品成型的道路。当芯片的性能越来越强大,这时就不用再考虑内存和性能的问题,可以用Arduino将产品快速成型,直接很快的推向市场。这才是物联网与嵌入式的快速开发模式。有市场就有需求,有需求就有产品,我认为WebIDE是一种很好的嵌入式开发模式,这样的开发方式加快产品的成型速度,借助阿里云物联网平台,就算是几个人也能做出很不错的物联网产品。

2. 使用方法

由于Hacklab WebIDE还是在不断完善和功能扩展的阶段,所以在使用时文档信息并不是很全面,需要自己摸索的地方很多。下面一步一步的尝试使用,并且实现在我们自己的esp32开发板上的联调工作。

2.1 功能介绍

注册和进入阿里云物联网平台,然后通过自己的阿里云平台账号和密码进入https://hacklab.aliyun.com。

通过查看文件列表,可以看到这是一个标准的Linux操作系统,直接看一下这台电脑的性能

CPU是Platinum(铂金) 8163,采用的是intel的至强处理器。

这是阿里云第四代服务器采用的CPU,Skylake架构,主频2.5GHz,计算性能问题。8163这款型号在intel官网上并没有相关信息,应该是阿里云向阿里云定制的,与之相近的Intel Xeon Platinum 8168,价格是$5890,约合¥38900元。

此类服务器提供的ECS实例族包括通用型实例g5、计算型实例c5、内存型实例r5、本地 SSD 型实例 i2、突发性能实例 t5、超级计算集群计算型实例规格族 scc、通用型神龙云服务器规格族 ebmg5等。

所以对于开发及编译来说,根本没有问题。

查看一下Linux的版本信息

采用的是Ubuntu16.04。

2.2 编译第一个程序

既然是已经集成好的Linux开发环境,那么直接可以编译运行一个测试程序。下面我们直接从gcc来进行程序的编译。内部已经集成好了arm-Linux的编译环境。

然后,简单测试一下编译和运行。

在工程目录下新建一个文件夹

编写一个Hallo Hacklab的C语言程序

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5. printf("hello Hacklab!\n");
  6. }

在命令行输入

  1. gcc test.c -o test

编译完成后,直接运行即可看到结果

2.3 搭建esp32的开发环境

以上测试了WebIDE的简单使用方法,下面来连接esp32的硬件设备进行开发测试。

可以通过搜索库来进行。例如我们使用的开发板类型是M5Stack。

直接进去搜索我们需要的库进行开发。

第一步:选择创建工程

第二步:填写工程相关的信息

可以看到工程配置完成

接着编写测试代码。这里编写一个在LCD上显示图形的程序

  1. #include <M5Stack.h>
  2. // the setup routine runs once when M5Stack starts up
  3. void setup() {
  4. // initialize the M5Stack object
  5. M5.begin();
  6. // Lcd display
  7. M5.Lcd.fillScreen(WHITE);
  8. delay(500);
  9. M5.Lcd.fillScreen(RED);
  10. delay(500);
  11. M5.Lcd.fillScreen(GREEN);
  12. delay(500);
  13. M5.Lcd.fillScreen(BLUE);
  14. delay(500);
  15. M5.Lcd.fillScreen(BLACK);
  16. delay(500);
  17. // text print
  18. M5.Lcd.fillScreen(BLACK);
  19. M5.Lcd.setCursor(10, 10);
  20. M5.Lcd.setTextColor(WHITE);
  21. M5.Lcd.setTextSize(1);
  22. M5.Lcd.printf("Display Test!");
  23. // draw graphic
  24. delay(1000);
  25. M5.Lcd.drawRect(100, 100, 50, 50, BLUE);
  26. delay(1000);
  27. M5.Lcd.fillRect(100, 100, 50, 50, BLUE);
  28. delay(1000);
  29. M5.Lcd.drawCircle(100, 100, 50, RED);
  30. delay(1000);
  31. M5.Lcd.fillCircle(100, 100, 50, RED);
  32. delay(1000);
  33. M5.Lcd.drawTriangle(30, 30, 180, 100, 80, 150, YELLOW);
  34. delay(1000);
  35. M5.Lcd.fillTriangle(30, 30, 180, 100, 80, 150, YELLOW);
  36. }
  37. // the loop routine runs over and over again forever
  38. void loop(){
  39. //rand draw
  40. M5.Lcd.fillTriangle(random(M5.Lcd.width()-1), random(M5.Lcd.height()-1), random(M5.Lcd.width()-1), random(M5.Lcd.height()-1), random(M5.Lcd.width()-1), random(M5.Lcd.height()-1), random(0xfffe));
  41. M5.update();
  42. }

点击编译,发现有错误。选择编译开始进行编译

这是因为没有找到头文件,因为我们没有安装M5Stack的库。

选择相应的库

然后再做编译就可以了。

编译过程中,会出现两个错误。直接屏蔽掉就好了,目前暂时不做详细说明。

编译完成后,可以看到如下的效果

固件及环境已经搭建完成。

2.4 建立开发板与云平台的连接

由于esp32用的是串口进行下载,所以需要一个串口代理,将串口设备转移到远程WebIDE上。阿里云的Hacklab就提供了这样一个工具。

M5Stack串口驱动

要建立连接,需要开发板与电脑的串口进行连接。串口驱动型号是CP210x系列

解压后直接安装即可。

Device Agent简介

Hacklab IDE device agent是一个运行在本地开发机、将物理开发板通过浏览器连接到云端IDE开发环境的后台程序,接下来文档中的device agent就是指这个后台程序。

上图是云端IDE、Device Agent和设备之间运行时的关系示意,Device Agent和设备通过设备的串口进行通讯。Device Agent内置连接认证机制,确保每个用户的Device Agent只能连接到自己的云端IDE工作空间。

我们提供了可运行在64位Windows, Mac以及Linux上的Device Agent程序。接下来就介绍如何快速在本地机器上快速运行 Device Agent.

下载后解压压缩包

然后就可以看到串口代理了。

可以看到有两个设备在线,由于电脑上插入两个设备,可以看到两个,点击下面一个可以看到设备信息。

远程串口打印

可以通过远程串口进行信息打印。程序进行稍微修改

编译后,点击下载程序

运行后,通过串口打印,就可以看到信息了

此时,可以看到串口打印信息,同时,也可以看到M5Stack上显示图形画面。

可以确定,代码已经正常的下载进去。

3.优势与特点

通过Hacklab WebIDE进行远程调试ESP32,建立ESP32的开发环境,类似的建立esp8266开发环境也是如此。通过建立在线开发环境,远程服务器可以永不关机,下次环境直接用。同时节省了环境搭建的麻烦。

其实通过Hacklab WebIDE还有其他的优势,比如可以很方便的与阿里云物联网平台进行联调,这一块后面再慢慢涉及。

总之,工欲善其事必先利其器,有了好的工具和装备,才能更好的,更加高效的完成工作。

Hacklab WebIDE在线调试ESP32笔记的更多相关文章

  1. STM32F407 STLINK 在线调试 个人笔记

    配置的部分请看本博客STM32分类下的环境配置篇目 开始调试 一些按键 查看寄存器 查看变量值 选中变量,右键,add to watch

  2. ESP32学习笔记(一) 环境搭建与下载

    ESP32学习笔记(一) 环境搭建与下载 作者:Nevel 博客:nevel.cnblogs.com 转载请保留出处 前几天刚入手了ESP32模块,趁着放假有时间,我们先把ESP32的编译环境搭建好 ...

  3. ESP32 学习笔记 - Ubuntu安装

    最近买了一个ESP32的开发板,以前只玩过ESP8266,没经验只能自己一步步摸索 现在把学习的过程记录下来,以免过了一段时间就忘记了 第一步安装 VMware 可以在我的网盘下载 链接:https: ...

  4. ESP32 学习笔记 - 环境搭建

    打开终端 输入命令 sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-seria ...

  5. ESP32的ULP 协处理器笔记

    1.ULP 协处理器是一个功耗极低的协处理器设备,无论主 CPU 是处于正常运行模式还是 Deep-sleep 模式,ULP 协处理器都可以独立运行.超低功耗协处理器的补充使得 ESP32 能够胜任一 ...

  6. ESP32省电模式连接WIFI笔记

    基于ESP-IDF4.1版本 main.c文件如下: #include <string.h> #include "freertos/FreeRTOS.h" #inclu ...

  7. ESP32 开发笔记(十二)LittlevGL 添加自定义字体和物理按键

    LittlevGL 添加自定义字体获取字库 ttf 文件可以从一些网站上获取字库文件,比如请注意字体许可证 生成源文件使用 LittlevGL 提供的字库文件转换工具,将 ttf 字库文件转换为源文件 ...

  8. ESP32高分辨率计时器笔记

    尽管FreeRTOS提供了软件计时器,但这些计时器有一些限制: 最大分辨率等于RTOS滴答周期 计时器回调从低优先级任务分派 硬件计时器不受这两个限制,但是通常它们使用起来不太方便.例如,应用组件可能 ...

  9. ESP32使用SPIFFS文件系统笔记

    基于ESP-IDF4.1 1 #include <stdio.h> 2 #include <string.h> 3 #include <sys/unistd.h> ...

随机推荐

  1. LeetCode 1154. 一年中的第几天

    给你一个按 YYYY-MM-DD 格式表示日期的字符串 date,请你计算并返回该日期是当年的第几天. 通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类 ...

  2. Java之分布式事务TCC

    看这个博客吧! 挺好的. 理论:https://www.cnblogs.com/jajian/p/10014145.html 实践:https://www.cnblogs.com/sessionbes ...

  3. flutter 常用plugins

    搜索plugins flutter plugins搜索地址 谷歌官方plugins https://pub.dev/packages?q=http 到这个链接里面去搜索 https://github. ...

  4. 小D课堂 - 新版本微服务springcloud+Docker教程_4-02 微服务调用方式之ribbon实战 订单调用商品服务

    笔记 2.微服务调用方式之ribbon实战 订单调用商品服务     简介:实战电商项目 订单服务 调用商品服务获取商品信息         1.创建order_service项目         2 ...

  5. Go项目实战:打造高并发日志采集系统(二)

    日志统计系统的整体思路就是监控各个文件夹下的日志,实时获取日志写入内容并写入kafka队列,写入kafka队列可以在高并发时排队,而且达到了逻辑解耦合的目的.然后从kafka队列中读出数据,根据实际需 ...

  6. php7与其他版本共存

    转自: https://zhangge.net/5088.html php7编译安装 https://zhangge.net/5075.html

  7. 重点做EUR/USD、EUR/JPY、GBP/USD。

    这三种货币对,几乎每天都有合适的行情.

  8. MariaDB知识点总结02--日志+备份

    一.日志 1.查询日志 记录每一条sql语句,建议不开启,因为如果访问量较大,会占用相当大的资源,影响性能; vim /etc/my.cnf.d/server.cnf general_log = ON ...

  9. python 之魔法方法

    描述符就是将某种特殊类型的类的实例指派给另一个类的属性 例如下面的示例 class MyDecriptor(): def get(self,instance,owner): print("g ...

  10. python tarfile模块

    TarFile类对于就是tar压缩包实例. 其由member块组成, member块则包括header块和data块. 每个member以TarInfo对象形式描述. 所以TarFile就是TarIn ...