1.Espruino Web IDE 常用
web IDE : https://www.espruino.com/ide/
github:https://github.com/espruino
官网:https://www.espruino.com/
教程:https://www.espruino.com/Quick+Start+Code
ESP32包github:https://github.com/espressif/esp-idf
参考:使用视频教程 https://www.zhihu.com/zvideo/1422871978810679296?utm_id=0
如果使用 ESP- IDF则参考: https://blog.51cto.com/u_16213698/10563184
ESP32刷espruino固件官方教程。https://www.espruino.com/ESP32
使用nodejs+espruino+espjs+(NodeMCU esp8266 cp2102开发板)+vue 实现简单的开关灯demo https://article.juejin.cn/post/7204121228017532989
准备3个文件: https://www.espruino.com/binaries/travis/master/espruino_2v23.32_esp32.tgz Espruino官网提供的。
bootloader // 从 ESP-IDF安装目录 components/bootloader/subproject/main 中找到
partitions_espruino // Espruino 的官方网站 https://www.espruino.com/ESP32 能找到 ( Travis cutting-edge builds. 或 您可以从Travis 最新构建)点击这个链接 找到组合的压缩包
espruino_esp32 // Espruino 官网下载固件
首次需要刷入3个文件,第二次升级等操作只需刷入espruino_esp32即可
自己编译则: mac 如果自己编译固件则先安装这些 (一般不需要 ,可跳过)
brew install flex bison gperf // pip
brew install cmake // pip
brew install ninja // pip
brew install ccache // pip
brew install dfu-util // pip
brew install libusb // pip
brew install gcc // pip
pip install esptool
2.实际操作
https://www.espruino.com/Download
在这个下载2v23新固件
然后cd 到 /Users/wanghao/Documents/8.embedded_project/esp/espruino_2v23/espruino_2v23_esp32
看端口号
ls /dev/tty.*
/dev/tty.BLTH /dev/tty.usbmodem585A0957641
/dev/tty.Bluetooth-Incoming-Port /dev/tty.wchusbserial585A0957641
ls /dev/tty.* Get-WmiObject -Class Win32_SerialPort
擦除开发板上的现有固件
python -m esptool --port /dev/tty.wchusbserial585A0957641 erase_flash
win
python esptool.py --port COM1 erase_flash
刷入新固件
python -m esptool
–port “/dev/tty.wchusbserial585A0957641”
–baud 460800
write_flash
-z
–flash_mode “dio”
–flash_freq “80m”
–force
0x1000 bootloader.bin
0x10000 espruino_esp32.bin
0x8000 partitions_espruino.bin
//win
python esptool.py --port COM1 --baud 460800 write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect E:\project\embedded_project\tools\bootloader.bin E:\project\embedded_project\tools\partitions_espruino.bin E:\project\embedded_project\tools\espruino_esp32.bin
升级
python esptool.py --port COM1 --baud 460800 write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0x10000 E:\project\embedded_project\tools\espruino_2v23_esp32.bin
screen /dev/tty.wchusbserial585A0957641 115200 查看端口输出状态
You have pre-1v96 firmware. Upload size is limited by available RAM
Prompt not detected - upload failed. Trying to recover…
mac烧录工具; NodeMCU PyFlasher https://github.com/marcelstoer/nodemcu-pyflasher/releases/tag/v5.0.0
esp32链接驱动下载 CH34 https://www.wch.cn/downloads/CH34XSER_MAC_ZIP.html
CP210X https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
用USB连接线连接电脑和开发板
原文链接:https://blog.csdn.net/huyuyang6688/article/details/124059185
https://www.wch.cn/downloads/CH343SER_EXE.html
0x00 \v23\bootloader.bin
0x10 \v23\espruino_esp32.bin
0x80 \v23\partitions_espruino.bin
flash_download_tool
下载地址:https://www.espressif.com/zh-hans/support/download/other-tools?keys=&field_type_tid%5B%5D=14
使用 参考: https://blog.csdn.net/weixin_42255190/article/details/115461297
3.控制舵机操作例子
1.旋转
function servo_180(pin,angle){
const obj={
0:0.5,
45:1,
90:1.5,
135:2,
180:2.5
};
if(obj[angle]){
analogWrite(pin,obj[angle]/50.0,{freq:20});
}
}
servo_180(D23,180);
2.调接口随机旋转
var wifi = require(‘Wifi’);
var http = require(‘http’);
var ssid = ‘中国人民银行’;
var password = ‘wha16666wha15555’;
// 定义舵机针脚号和角度
var pin = D23;
var LEFT_ANGLE = 0;
var RIGHT_ANGLE = 180;
// 定义轮询时间间隔(以毫秒为单位)
var INTERVAL_MS = 5000;
var timerId = null; // 保存定时器 ID 的变量
wifi.connect(ssid, {password: password}, function(err) {
if (err) {
console.log(err);
return;
}
console.log(‘Connected to WiFi’);
// 启动定时器
timerId = setInterval(function() {
// 发送 HTTP GET 请求
http.get(‘http://www.baidu.com’, function(res) {
res.on(‘data’, function(data) {
//var status = parseInt(data);
var status=getRandomInt(1, 10)%3;
// 根据返回值控制舵机旋转
if (status === 1) {
servo_rotate(pin, LEFT_ANGLE);
} else if (status === 2) {
servo_rotate(pin, RIGHT_ANGLE);
} else {
servo_stop(pin);
}
});
}).on(‘error’, function(err) {
console.log(‘Error on HTTP request:’, err);
});
}, INTERVAL_MS);
});
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function servo_180(pin, angle) {
const obj = {
0: 0.5,
45: 1,
90: 1.5,
135: 2,
180: 2.5
};
if (obj[angle]) {
analogWrite(pin, obj[angle] / 50.0, {freq: 20});
}
}
function servo_rotate(pin, angle) {
servo_180(pin, angle);
}
function servo_stop(pin) {
servo_180(pin, 90); // 停止旋转
}
function clearTimer() {
clearInterval(timerId);
}