Arduino

Arduino

Uno / Nano / 101 ……
开源、便宜、无尽创想
ESP物联网

ESP物联网

掌控板
ESP8266 / ESP32
App Inventor

App Inventor

手机平板应用开发
……
卡片电脑

卡片电脑

树莓派
虚谷号
3D打印

3D打印

三维立体绘图
打印机操作及技巧
激光切割

激光切割

2D矢量绘图
切割机操作及技巧
大开眼界

大开眼界

围观神级作品
学习软硬兼施
源创分享

源创分享

自撰美文
经验分享

Nodemcu v3 的使用方法

haojunmei 发表了文章 • 1 个评论 • 1038 次浏览 • 2018-06-30 10:18 • 来自相关话题

上个星期,我骗走了老师了一块esp8266,是由nodemcu做整块开发板 我拿到了一个星期,才知道怎么用 先看下面 打开Arduino IDE-> 首选项 -> 附加开发板管理器网址,填入:http://arduino.e ...查看全部
上个星期,我骗走了老师了一块esp8266,是由nodemcu做整块开发板
我拿到了一个星期,才知道怎么用
先看下面
打开Arduino IDE-> 首选项 -> 附加开发板管理器网址,填入:http://arduino.esp8266.com/stable/package_esp8266com_index.json
然后重启ide
 如图

下一步是打开开发板管理器,你有小飞机就开小飞机
等待一会
搜索8266
如图

安装2.3.0版本
安装好选择nodemcu 1.0
比特率不要相信板子上的9600
反正默认就好
 
接下来是上传一个测试程序
选择示例中的esp8266➡blink
上传
程序中注释已经翻译
在下面
 

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);     //设置D0口为输出模式
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, LOW);   // 设置D0为LOW
                                    // 但实际上LED是开着的
                                    // 只不过不亮
  delay(1000);                      // 等待一秒
  digitalWrite(LED_BUILTIN, HIGH);  // 把D0口设置为HIGH
  delay(2000);                      // 等待2秒(让我们能看清楚)
}
 
记得在D0口接个LED,不然你怎么做都没用
这篇文章结束
暑假我会把这个坑填完
 

ESP8266和OLED组合版的Arduino&LUA示例代码

admin 发表了文章 • 0 个评论 • 193 次浏览 • 2018-06-10 00:34 • 来自相关话题

https://github.com/lspoplove/D-duino   https://github.com/ThingPulse  ...查看全部

ESP8266使用Arduino IDE开发

admin 发表了文章 • 2 个评论 • 266 次浏览 • 2018-06-09 11:36 • 来自相关话题

1、在Arduino IDE首选项添加开发板管理器地址 http://arduino.esp8266.com/stable/package_esp8266com_index.json ...查看全部
1、在Arduino IDE首选项添加开发板管理器地址
http://arduino.esp8266.com/stable/package_esp8266com_index.json
2018-06-09_11-42-34.png

2、在开发板管理器搜索8266并安装
2018-06-09_11-41-14.png

ESP8266使用MicroPython开发

admin 发表了文章 • 0 个评论 • 133 次浏览 • 2018-06-09 11:27 • 来自相关话题

MicroPython tutorial for ESP8266官网页面 1、下载固件   2、下载固件烧录工具   Mac&Linux:pip install esptool 或者 pip3 install e ...查看全部
MicroPython tutorial for ESP8266官网页面
1、下载固件
 
2、下载固件烧录工具
  Mac&Linux:pip install esptool 或者 pip3 install esptool
  Windows:
 
3、终端访问:
  Mac&Linux:
  Windows:下载putty工具

ESP with PubSubClient.h

陈峻宇 发表了文章 • 1 个评论 • 115 次浏览 • 2018-06-08 21:45 • 来自相关话题

关于ESP-32的使用

陈峻宇 发表了文章 • 3 个评论 • 412 次浏览 • 2018-06-08 15:20 • 来自相关话题

搭建环境 1.确认你的arduino IDE是不是最新版本。 PS:我之前就是因为没安装最新版本就搭建不了的。 2.找到arduino IDE里的   文件>>首选项中的附加开发板管理器网址。 ...查看全部
搭建环境
1.确认你的arduino IDE是不是最新版本。
PS:我之前就是因为没安装最新版本就搭建不了的。
2.找到arduino IDE里的   文件>>首选项中的附加开发板管理器网址

a.PNG

把下面的东东复制到弹出的框框里
https://git.oschina.net/dfrobot/FireBeetle-ESP32/raw/master/package_esp32_index.json
完成以后,重启arduino IDE,找到 工具>>开发板>>开发板管理器。等待一会以后,搜索ESP-32.
选择最新版本,点“安装”。
然后就完事了。
 
使用WiFi.h
你得把原来的arduino IDE 的WiFi.h剪切到其他地方。
不然
因为编译器优先级问题,你用的是原来的库,因为不兼容,所以编译错误。
[b]函数介绍[/b]

实现建议使用mqtt协议,本文以mqtt协议为例
#include 
#include
必不可少的两个库。PS:第二个是IDE自带的mqtt协议的库。
WiFiClient espClient;
PubSubClient client(espClient);
全局变量的定义(mqtt协议的)
WiFi.begin(ssid, password);
wifi连接。ssid是wifi名,password是密码。
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.print(".");
}
这个过程必不可少。是等待连接成功。等超过两秒,多半是失败了,
这时要重启以及检查路由器。
WiFi.localIP()
这个函数可以获得局域网的IP地址
如果以上代码都以运行完了,那wifi就连上了
 
MQTT协议
总的来说,这是一个比较省电的协议了。十分适合做物联网。
client.setServer(mqtt_server, pass);

这个函数用来连接服务器
mqtt_server服务器的地址,而pass端口
 
接下来有个要手打的函数。是用来保证与服务器的连接以及订阅的——reconnect()。
我直接把代码贴出来
void reconnect()//建立连接
{
while (!client.connected())
{
Serial.print("Attempting MQTT connection...");
if (client.connect("ESP32Client")) {Serial.println("connected");}
else
{
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 500 ms");
delay(1000);
}
}
if(bk)//mqtt订阅
{
bk=false;
client.subscribe(title);
delay(2000);
client.setCallback(callback);
}
}


title是订阅的标题。
PS:有兴趣的同学自行了解一下标题是什么。bk是一个bool值(还是全局变量),标记订阅过没有
只能这么订阅,不要问我为啥,这是玄学callback是识别函数
通常他回传的都是字符串。
所以可以暴力识别(双重for循环)。
追求运行速度自行百度一下KMP,AC自动机,后缀自动机等字符串识别算法。
PS:大约30分钟以后,mqtt订阅会取消
 
上传数据函数
client.publish(mqtt_topic,mqttmsg);

mqtt_topic是数据标题(通常在物联网里是你设备的编码),mqttmsg是你要传的字符串,必须严格按照网站给的格式上传
注意事项:mqttmsg的长度大于120就会挂掉的
 
ESP-32的引脚

900px-ESP32pinout.png


ESP-32由于不兼容任何一块arduino原生板,所以引脚是要特别小心的。
  • 数字口:在原生arduino中,数字口x就写成x,but,在ESP中,数字口x要写成Dx
  • 模拟口:和原生一样——Ax。

 最最最变态的来了,它不可以用AnalogWrite(),你会编译错误,这就很尴尬了。
先来看看下面的代码
//设置通道 0
#define LEDC_CHANNEL_0 0
//设置 13 位定时器
#define LEDC_TIMER_13_BIT 13
//设置定时器频率位 5000Hz
#define LEDC_BASE_FREQ 5000
//设置 LED 灯
#define LED_PIN D9
int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by
//设置 led 灯的亮度
void ledcAnalogWrite(uint32_t value, uint32_t valueMax = 255) {
//计算占空比
uint32_t duty = (LEDC_BASE_FREQ / valueMax) * min(value, valueMax);
//设置占空比
ledcWrite(LEDC_CHANNEL_0, duty);
}
void setup() {
ledcSetup(LEDC_CHANNEL_0, LEDC_BASE_FREQ, LEDC_TIMER_13_BIT);
ledcAttachPin(LED_PIN, LEDC_CHANNEL_0);
}
void loop() {
ledcAnalogWrite(brightness);
brightness += fadeAmount;
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
delay(30);
}

仔细看会发现有一个替代品——ledcAnalogWrite
再仔细看会发现开头有一些看不懂的东西
 
先来说明一下PWM信号的本质。
PWM(pulse-width modulation)脉冲宽度调制,MCU(微控制器)通过对开关器件的通断进行控
制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需的波形。
正弦波先不管是什么(那是初三的知识,有兴趣自行百度)。只要知道PWM是脉冲就OK
代码中提到的占空比是指高电平持续时间占整个周期的比例。
valueMax = 255可以理解为一个周期的长度
仔细看看,就会发现value/valueMax =占空比亮度
而valuemax又是可变的。
在一定程度上岂不是——无限精度的亮度。
至少是可以用小数亮度了吧