笔者补修:本来在老博客中,这是分开的两篇文章,鉴于两篇文章过于浪费读者时间且知识浅显,特此合并一篇文章,希望大家读得开心,看的开心,感受我那时候的simple和naive。

记于2026.1.20

年轻人的第一块Arduino开发板

chi的小板子

这里主要记录chi捣鼓他的第一块Arduino开发板的一些小事和注意事项(x

因为chi没有钱钱,所以退其次而求之,买了个国产Arduino小板,虽然还是很贵,要28呜呜呜

如果你是有意的,那么你又蠢又坏;如果你是无意的,那么你就很幼稚 —— 张莉莉

声明:这里引用的话属实,本人不对此发表任何看法。

显然NBFLS进入了高一下学期,马上就要四门学考,学业压力变大,板板也只能回家玩(悲

所以更新什么的不要催啦(

0x01 拿到板子

拿到板子第一件事是做什么?当然是拆开啦(x

chi的小板子

这是我拿到的板子,花掉了我28大洋(全恼

因为人比较傻,买的是39套件,根本没有传感器(全恼

这怎么玩啊 rnm,退钱!

0x02 安装驱动

如果你买的是国产小板子,需要去找卖家要驱动,否则没法用(x

如果你有钱,买的是Arduino意大利原产板,就不需要这一步啦

windows无脑.exe即可(x

0x03 下载安装arduino IDE

https://www.arduino.cc/en/software 链接自取 不想做保姆式教程了

我买的这个小板子是兼容UNO的,驱动装好之后打开设备管理器看一下连接的串口,在Arduino IDE里面选择串口和板子就行了。

0x04 Start Coding!

这个是基本的代码:

void setup() // setup函数 顾名思义 拿来做初始工作的
{

}

void loop() // loop函数里面是循环做的事情
{

}

这个是写Hello World的代码:

void setup()
{
 Serial.begin(9600); // 设定串口波特率为9600 后面在Serial Monitor里面就要使用这个波特率和板板通信
}

void loop()
{
 Serial.println("Hello world!");\t// 串口输出Hello world!
 delay(1000);\t// 延时1s 相当于sleep
}

你可以打开Tools -> Serial Monitor观察板子给你发送的内容。当然,Ctrl+Shift+M也可以食用~

这个代码 与 浙教版《信息技术》选择性必修六 (它上面实现的是基于micro:bit的 但是看了下人家都把micro:bit当微电脑 而且套件比arduino不知道贵了多少倍(全恼)) 3.2 开源硬件编程基础 例一 “闪烁的小星星” 有异曲同工之妙

#define led 2 //定义数字IO 2[就是DIGITIAL 2]的名字为led

void setup()//初始化部分
{
 pinMode(led,OUTPUT);//定义led引脚为输出模式
}

void loop()
{
 digitalWrite(led,LOW);//led引脚输出低电平,点亮led
 delay(100);//延时100ms
 digitalWrite(led,HIGH);//led引脚输出高电平,熄灭led
 delay(100);//延时100ms
}

在烧录好之前使用公转母杜邦线一头插3.3V一头插LED灯的长边,另一个一头插输出2,另一头插LED灯的短边。然后就可以食用啦~

0x05 食用I2C

Arduino UNO的I2C口分别是:A4(SDA) A5(SCL) 要使用I2C的只能接这两个口啦

因为自己买了个I2C版小LCD显示屏回来,所以就拿来玩玩I2C

我们这里使用Arduino自带库让LCD显示 LCD模块编号1602 电压5V

我们首先要把SDA插到A4 SCL插到A5 然后就是 GND接地 VCC接5V 啦

然后就 start coding 啦~

接上之后你就会发现LCD屏会亮 但并没有任何信息

然后就是coding啦

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
 
LiquidCrystal_I2C lcd(0x27,16,2); //配置LCD地址及行列
// lcd地址默认为0x27 具体看你买的商家提供内容 
void setup()
{
 lcd.init(); //初始化LCD
 lcd.backlight(); //打开背光
 Serial.begin(9600);
}
 
void loop()
{
 lcd.setCursor(0,0);//设置显示位置
 lcd.print("Hello World!");
}

LCD会显示Hello World的(

0x06 UART

众所周知就是Serial啦~

Arduino的默认波特率为9600,这点要注意(

只要把TXRXRXTXGND互插就能玩啦(

Serial.begin([Baudrate]) 用于setup函数中

Serial.print/printlnm([Text]) 输出串口

0x07 模拟数据

Arduino的模拟数据口是A0-A3(A4A5已经被占用成SCLSDA)

这里用模拟版温度传感器写一段小代码(

analogRead([PIN])读取模拟PIN值(

#include <math.h>
#define TEMP 0 //针脚A0
double Thermister(int RawADC) { //温度转换函数
 double Temp;
 Temp = log(((10240000/RawADC) - 10000));
 Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );
 Temp = Temp - 273.15; // Convert Kelvin to Celcius
 return Temp;
}
void setup() {
 // put your setup code here, to run once:
 // pinMode(TEMP, INPUT);
 Serial.begin(9600);
}

void loop() {
 // put your main code here, to run repeatedly:
 Serial.println(Thermister(analogRead(0))); // 读取摄氏度值
 delay(500);
}

0x08 小坑

如果出现编译错误的话,Arduino Nano换个处理器(在Tools->Processor里面)(ATmel Amega 168P,默认328P,甚至还有Old Bootloader 建议逐个尝试)

在编译的时候也必须记住 RX(D0) TX(D1) 口在编译的时候不能占用,否则也没办法编译成功!!!

不要跑死循环!!!(delay没加的那种)

0x09 小结

这些仅仅是chi玩电子垃圾的开始(

下一期:年轻人的第一块WIFI/蓝牙模块(

年轻人的第一块WiFi/蓝牙模块

这里主要记录chi捣鼓他的第一块ESP8266和ESP32小板的一些小事和注意事项(x

最近补了点货,买了传感器来了,当然还有ESP32啦~(

chi的100,没力(悲

最近的一个好消息:昨天把“主板坏了”的笔记本修好了,合张影。

rnm修电脑的,退钱!!!还好没有换主板。

其实笔记本只是LVDS接口接触不良导致电脑屏幕没亮而已(全恼(因为我换过屏幕)

然后就速速把台式机里面的nvme拆下来给笔记本用了,之后这台笔记本会黑果(

好了唠嗑结束 进入正文啦(

0x01 开玩

众所周知ESP8266和ESP32是国产板!!!感动中国!!!

ESP8266和ESP32造价低廉(我买的ESP8266要12CNY,ESP32要22CNY),还支持WiFi和蓝牙(ESP32),支持arduino IDE,但是Arduino IDE默认不提供ESP8266和ESP32的板子,需要我们自行安装下载。

打开Arduino IDE -> Perferences -> Additional Board URLs 添加以下的开发板包链接:

https://arduino.esp8266.com/stable/package_esp8266com_index.json
https://githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

如果ghusercontent无法访问 可以把域名调整到 ghraw.chicdn.cn

然后在Boards Manager中搜索ESP8266ESP32就可以安装了~

ESP32和ESP8266板的文件都是从gh下下来的,如果嫌慢,请自行使用魔法。

0x02 亮起来吧,LED

如何测试一个ESP8266/ESP32模块呢,当然是测试LED啦~

这是测试代码:

#define lcd 2
void setup () {
 pinMode(lcd, OUTPUT);
}
void loop () {
 writeDigital(lcd, HIGH);
 delay(100);
 writeDigital(lcd, LOW);
}

亮瞎你的眼

0x03 跑起来吧,Web服务器!

那怎么开个服务器呢(

这是例程:

ESP8266用这个:

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

#define AP_ssid "WIFINAme" //这里改成你的设备当前环境下要连接的接入点名字
#define password "passw0rd" //这里改成你的设备当前环境下要连接的接入点密码

ESP8266WebServer server(80); //创建Web服务器 80端口监听
 
int i = 0; //用来判定连接是否超时的累加量

void homepage () {
 Server.send(200, "text/html;charset=utf8", "<h1>小黑子食不食油饼</h1><hr/><p>Powered by <a href=\\"https:\\/\\/\\im.chihuo2104.dev/\\" target=\\"_blank\\">chihuo2104</a>.All rights reserved&copy;2018-2023.<br/>Served by ESP32.");
}

void setup() {
 Serial.begin(9600); // 启动串口通讯,波特率设置为9600
 Serial.println("Start Connection");
 
 //调用 WiFi.begin()函数,开始连接接入点
 WiFi.begin(AP_ssid, password);
 Serial.print("Connecting to");
 Serial.print(AP_ssid);
 
 //这里的循环用来判断是否连接成功的。连接过程中每隔500毫秒会检查一次是否连接成功,,并打一个点表示正在连接中
 //连接成功后会给出提示,但是若60秒后还是没有连接上,则会提示超时
 while (WiFi.status() != WL_CONNECTED) {
 i++;
 delay(500);
 Serial.print(".");
 if (i > 120) { //60秒后如果还是连接不上,就判定为连接超时
 Serial.print("Connect Failed!");
 break;
 }
 }
 
 Serial.println("Connect Successful!");
 
 Serial.print("IP Address: ");
 Serial.println(WiFi.localIP());
 
 //初始化WebServer
 server.on("/", homepage);
 server.begin();
 Serial.println("HTTP server started");
}
 
void loop() {
 server.handleClient(); //没有这个Web服务器无法提供服务~
}

ESP32用这个:

#include <WiFi.h>
#include <WebServer.h>
WebServer Server(80);

void homeRoute () {
 Server.send(200, "text/html;charset=utf8", "<h1>小黑子食不食油饼</h1><hr/><p>Powered by <a href=\\"https:\\/\\/\\im.chihuo2104.dev/\\" target=\\"_blank\\">chihuo2104</a>.All rights reserved&copy;2018-2023.<br/>Served by ESP32.");
}

void setup()
{
 WiFi.begin("wifiname", "password"); //连接wifi名称和密码
 while (WiFi.status() != WL_CONNECTED)
 {
 delay(500);
 Serial.println("Connecting to WiFi..");
 }
 Serial.println("Connect success.");
 Serial.println(WiFi.localIP()); //打印出服务器的IP
 Server.on("/", homeRoute);
 Server.begin();
}

void loop()
{
 Server.handleClient();
}

效果是这样的:

0x04 跑起来吧,Bluetooth!

ESP32是支持蓝牙的,我们可以通过蓝牙和它进行串口通讯~

这是回声例程:

#include <BluetoothSerial.h>

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled!
#endif

BluetoothSerial btSerial;

void setup()
{
 btSerial.begin("esp32"); //将作为esp32设备被发现
}

void loop ()
{
 if (btSerial.available()) {//有没有内容
 btSerial.write(btSerial.read());//返回读取的内容
 }
}

这时候我们可以打开手机/电脑来连接蓝牙,进行串口调试:

0x05 小点

烧录出现错误请保持冷静,多次刷写肯定能成功(

下一篇:不知道欸