web3E(用于单片机的以太坊框架)编译环境说明

最近在弄IOT上链的方案,基于树莓派的还好一些,原生支持web3j,单片机就比较麻烦了。我大概搜了一下,2018年有人做了一个web3-arduino,2020年有人做了一个web3e,但这两个都有起码一年没再继续做维护了。所以我在这里做一个编译环境的说明,也差不多是网上能找到与单片机以太坊框架相关的第三篇文章了。

最近在弄IOT上链的方案,基于树莓派的还好一些,原生支持web3j,单片机就比较麻烦了。我大概搜了一下,2018年有人做了一个web3-arduino,2020年有人做了一个web3e,但这两个都有起码一年没再继续做维护了。 而且网上的相关资料就两篇,所以我在这里做一个编译环境的说明,也差不多是网上能找到与单片机以太坊框架相关的第三篇文章了。

硬件准备

首先要买一块esp32的开发板,这里要求尽量买便宜的,二三十块钱的那种就行。另外还要准备一条usb转接线,一台电脑。 然后管店铺要测试程序和测试代码,保证整个硬件和驱动在逻辑上是畅通的。

安装部分

首先是安装Visual Studio Code,这个比较容易安装。 然后是安装platformio,这个需要在线安装,非常的慢,还容易报错。 然后在quick access里面选择projects & configuration,选择creeate new project来新建工程。这里面主要的是board里面,一定要确定你的esp32的架构是什么,然后选择finish。 注意finish过程中会非常的慢的。

建立好了之后,我们要修改两个地方

一个是platformio.ini,里面增加: lib_deps = Web3E 再一个就是在main函数里面增加相关的example。 我们用的是https://github.com/AlphaWallet/Web3E/tree/master/examples 里面的Query Token Balance代码。 该代码的主要功能是可以查询某个以太坊地址里面erc20和erc875的币量

编译及运行程序

点击vscode左下的外星人图标,在project tasks里面,有一个叫做upload and monitor,点击就会自动编译下载,并在串口屏幕进行监控

部分代码说明一

首先是esp32的编程主要是两个函数,一个是void setup(),这个函数是刚开始就启动,并且只启动一次;void loop()是启动后反复循环的函数。

部分代码说明二

const char *ssid = "<YOUR SSID>";
//你的wifi地址
const char *password = "<YOUR WiFi PASSWORD>";
//你的wifi密码
const char *INFURA_HOST = "kovan.infura.io";
//运行的测试网络地址
const char *INFURA_PATH = "/v3/<your Infura token>";    //this is an 
anonymous infura public API key for courtesy testing, please don't use it for production
//你的Infura地址,这个需要在你的Infura网站自行注册
#define NATIVE_ETH_TOKENS "Kovan ETH"                                //if you switch chains you might want to change this
//测试网名称
#define ERC875CONTRACT "0x0b70dd9f8ada11eee393c8ab0dd0d3df6a172876"  //an ERC875 token contract on Kovan
//要测试的erc875代币地址
#define ERC20CONTRACT  "0xb06d72a24df50d4e2cac133b320c5e7de3ef94cb"  //and ERC20 token contract on Kovan
//要测试的erc20代币地址
#define USERACCOUNT "0x835bb27deec61e1cd81b3a2feec9fbd76b15971d"     //a user account that holds Kovan ETH and balances of tokens in the two above contracts 
//要测试的用户地址

部分代码说明三

void setup() 
{
    Serial.begin(115200); //ensure you set your Arduino IDE port config or platformio.ini with monitor_speed = 115200
//设定串口频率
    setup_wifi();
//设定网络
    string userAddress = USERACCOUNT;
//设定用户地址
    queryERC20Balance(ERC20CONTRACT, USERACCOUNT);
//查询erc20币量
    queryERC875Balance(ERC875CONTRACT, USERACCOUNT);
//查询erc875币量
}

放在后面的话

由于需要科学上网的原因,在环境搭建的过程中经常报错;此外web3e很久的不更新和例程较少也是很明显的问题。另外一个问题就是web3e运行的硬件太少,不够灵活。 本人的计划是制作通用性更强,可以在stm32,esp32及8266上可以运行的以太坊接口库,并且给出不需要科学上网就能完成的方案。 并在此基础上,完成通用性的IOT上链方案。

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2021-03-08 15:12
  • 阅读 ( 228 )
  • 学分 ( 8 )
  • 分类:DApp

2 条评论

请先 登录 后评论
问答区块链
问答区块链

工程师

21 篇文章, 367 学分