分类
Arduino 兼容扩展板

KE0121 micro bit 传感器扩展板

KE0121 (3)

1、概述

micro bit是一款由英国广播电视公司为青少年编程教育设计的入门级开发板。它支持微软开发的PXT图形化编程界面,无需额外下载编译器,可以在Windows,macOS, IOS, 安卓等多种操作系统下使用。

为了方便micro bit 开发板和其他传感器、模块接线,我么特别设计了这款扩展板。扩展板上集成了一个电源模块可以直接对micro BIT 板供电,也可以增加板的带负载能力。同时它还将micro BIT 板上IO口以舵机线序形式(G V S)扩展出来,还特设I2C通信接口、串口通信接口、SPI通信接口,方便各种通信。

2、规格参数

输入电压:DC 5-9V

输出电压:DC 3.3V

3、接线图

KE0121 micro bit 传感器扩展板

分类
Arduino 兼容扩展板

KE0120 micro bit 原型扩展板V1,含小面包板

KE0120 (1)

1、说明

micro bit 原型扩展板V1是专为Micro bit主板设计。它把micro bit的所有引脚都以排母的接口方式引出来,方便使用micro bit 搭建电路。

扩展板上有若干个圆形焊盘孔,并包含一块400孔面包板。不仅可以在面包板上搭建试验电路,方便修改。也可把搭好的试验电路直接焊接在扩展板的小万能板上,通过杜邦线与排母连接,和拓展板组成一个整体设计,非常方便。是叠加电路原型的绝佳选择。

板上集成了一个电源模块可以直接对micro BIT 板供电,也可以增加板的带负载能力。

2、特征

电源输入:DC 5-9V

输出电压:3.3V

Micro bit系列兼容,即插即用

标识精准,外观简单

精致面包板 可拆可粘贴 简单方便

3、接线图

KE0120 micro bit 原型扩展板V1,含小面包板

分类
Arduino 兼容扩展板

KE0119 Keyes 红绿灯模块(焊盘孔) 红色 环保

1、说明

在我们学习单片机过程中,我们经常会用红绿黄3个LED外接电路来模拟路边的红绿灯闪烁。因此我们特别设计了这款模块,模块上自带了红黄绿3个LED灯,接线方便。模块完全兼容Arduino单片机和树莓派系统。

2、技术参数

工作电压:DC 3.3-5v

接口: 数字口

尺寸:45*28*11mm

重量:3.5g

3、接线图

4、测试代码

int redled =5; //定义红灯接口

int yellowled =4; //定义黄灯接口

int greenled =3; //定义绿灯接口

void setup()

{

pinMode(redled, OUTPUT);// 设置为输出

pinMode(yellowled, OUTPUT); // 设置为输出

pinMode(greenled, OUTPUT); // 设置为输出

}

void loop()

{

digitalWrite(greenled, HIGH);//// 绿灯亮起

delay(5000);// 延迟5秒

digitalWrite(greenled, LOW); // 关闭绿灯

for(int i=0;i<3;i++)// 黄灯闪烁3次

{

delay(500);// 延迟0.5秒

digitalWrite(yellowled, HIGH);// 打开黄灯

delay(500);// 延迟0.5秒

digitalWrite(yellowled, LOW);// 关闭黄灯

delay(500);//延迟0.5秒

}

digitalWrite(redled, HIGH);// 打开红灯

delay(5000);//延迟5秒

digitalWrite(redled, LOW);// 关闭红灯

}

5、实验结果

上传代码成功,上电后,模块上3个LED自动模拟交通灯运行。

分类
Arduino 兼容扩展板 Arduino系列

KE1001 Keyes brick shield 传感器扩展板 防反插白色端子

ke1001-1

1.概述

当我们在做DIY实验时,我们经常会利用UNO R3控制板和其他传感器/模块搭配使用。为了方便接线,我们的最新一版传感器/模块使用了间距为2.54mm防反接口。为了兼容最新一版传感器/模块接口,我们特别设计了这一款扩展板。使用时,我们只需要将扩展板堆叠在UNO R3控制板上,利用一个特定接线连接传感器/模块。接线简单方便,由于是防反接口,线序固定,将不会再出现控制板连接传感器/模块时,因线序接反,导致烧坏传感器/模块现象。

为方便接线,扩展板上接口都带有丝印。3pin接口丝印一般为G V S,其中扩展板上所有的G代表GND,V代表VCC(5V)接口,S代表接口上方的数字口/模拟口。4pin/5pin接口左面都有对应接口丝印。扩展板上两边还自带间距为2.54mm的排母接口,接线顺序和UNO R3板的排母接口的线序一致。同时扩展板上自带一个复位按键,1个复位按键指示灯(D2),1个电源指示灯(D1)。

为了方便将扩展板固定在其他设备,扩展板只带两个直径为3mm的定位孔大小。

2.规格参数

兼容:UNO R3控制板

接口:间距为2.54mm 3pin防反接口

定位孔大小:直径为3mm

尺寸:68*55*21mm

重量:26g

3.接口说明

KE1001-7(1)

4.使用方法

KE1001-6

分类
Arduino 兼容扩展板 Arduino系列

KE0156 keyes W5500网络扩展板 红色环保

KE0156-1

1.说明

keyes W5500网络扩展板板载以W5500为核心的网络模块,可以使成为简单的Web服务器或者通过网络控制读写的数字和模拟接口等网络应用。它可以同时兼容 keyes UNO R3 开发板和keyes 2560 R3 开发板。

使用时,我们可在控制板上上传对应程序,实现一个简单Web服务器。 同时该扩展板还支持mini SD卡(TF卡,最大支持内存为1G)读写。这个扩展板采用了可堆叠的设计,可直接插到控制板上,同时我们的其他扩展板也可以插在这个扩展板上。

扩展板还自带4个直接为3mm的固定孔,方便固定到其他设备。

2.技术参数

输入电压:DC 5V

工作电压:DC 3.3V

工作电流:380mA左右

最大功率:3W

工作温度:-55℃~+75℃

网络变压器接口类型:RJ-45接口

排母间距:2.54mm

固定孔直径:3mm

尺寸:69*53*28mm

重量:24.5g

mini SD卡(TF卡)大小:最大1G

TF卡座采用的是自弹出式的

W5500全硬件TCP/IP协议栈网络芯片

支持高速SPI总线(SPI模式0,3)

支持硬件TCP/IP协议:TCP,UDP,ICMP,IPv4ARP,IGMP,PPPoE

内嵌10/100Mbps以太网物理层

支持自动应答(全双工/半双工模式)

多种指示灯信号输出(全/半双工)

支持8个独立的端口同时连接

内部32K字节存储器作TX/RX缓存

支持休眠模式和网络唤醒

3.3V工作电压,I/O口可承受5v电压

极小巧的48P/N LQFP无铅封装

3.测试代码

注意:上传代码之前,必须将对应的库文件放置到安装Arduino IDE的库文件 文件夹中。

代码A

#include <SPI.h>

#include <Ethernet55.h>

// set MAC address

#if defined(WIZ550io_WITH_MACADDRESS) // Use assigned MAC address of WIZ550io

;

#else

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

#endif

void setup()

{

Serial.begin(9600);

if (Ethernet.begin(mac) == 0)

{

Serial.println(“Failed to configure Ethernet using DHCP”);

// connection fails, stop program run.

for(;;);

}

// print out your local IP address

Serial.print(“My IP address: “);

for (byte thisByte = 0; thisByte < 4; thisByte++)

{

// print out four byte IP address

Serial.print(Ethernet.localIP()[thisByte], DEC);

Serial.print(“.”);

}

Serial.println();

}

void loop()

{

}

代码B

//in testing, check IP address of reticle through GET_IP routine

//for example, the tested IP address is 192.168.1.113

//namely intranet address allocated to testing reticle

#include <SdFat.h>

#include <SdFatUtil.h>

#include <Ethernet55.h>

#include <SPI.h>

/************ ETHERNET STUFF ************/

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //MAC address

byte ip[] = { 192, 168, 1, 126 }; //IP address

EthernetServer server(80);

/************ SDCARD STUFF ************/

Sd2Card card;

SdVolume volume;

SdFile root;

SdFile file;

// store error strings in flash to save RAM

#define error(s) error_P(PSTR(s))

void error_P(const char* str) {

PgmPrint(“error: “);

SerialPrintln_P(str);

if (card.errorCode()) {

PgmPrint(“SD error: “);

Serial.print(card.errorCode(), HEX);

Serial.print(‘,’);

Serial.println(card.errorData(), HEX);

}

while(1);

}

void setup() {

Serial.begin(9600);

PgmPrint(“Free RAM: “);

Serial.println(FreeRam());

// initialize the SD card at SPI_HALF_SPEED to avoid bus errors with

// breadboards. use SPI_FULL_SPEED for better performance.

pinMode(10, OUTPUT); // set the SS pin as an output (necessary!)

digitalWrite(10, HIGH); // but turn off the W5500 chip!

if (!card.init(SPI_HALF_SPEED, 4)) error(“card.init failed!”);

// initialize a FAT volume

if (!volume.init(&card)) error(“vol.init failed!”);

PgmPrint(“Volume is FAT”);

Serial.println(volume.fatType(),DEC);

Serial.println();

if (!root.openRoot(&volume)) error(“openRoot failed”);

// list file in root with date and size

PgmPrintln(“Files found in root:”);

root.ls(LS_DATE | LS_SIZE);

Serial.println();

// Recursive list of all directories

PgmPrintln(“Files found in all dirs:”);

root.ls(LS_R);

Serial.println();

PgmPrintln(“Done”);

// Debugging complete, we start the server!

Ethernet.begin(mac, ip);

server.begin();

}

void ListFiles(EthernetClient client, uint8_t flags) {

// This code is just copied from SdFile.cpp in the SDFat library

// and tweaked to print to the client output in html!

dir_t p;

root.rewind();

client.println(“<ul>”);

while (root.readDir(&p) > 0) {

// done if past last used entry

if (p.name[0] == DIR_NAME_FREE) break;

// skip deleted entry and entries for . and ..

if (p.name[0] == DIR_NAME_DELETED || p.name[0] == ‘.’) continue;

// only list subdirectories and files

if (!DIR_IS_FILE_OR_SUBDIR(&p)) continue;

// print any indent spaces

client.print(“<li><a href=\””);

for (uint8_t i = 0; i < 11; i++) {

if (p.name[i] == ‘ ‘) continue;

if (i == 8) {

client.print(‘.’);

}

client.print((char)p.name[i]);

}

client.print(“\”>”);

// print file name with possible blank fill

for (uint8_t i = 0; i < 11; i++) {

if (p.name[i] == ‘ ‘) continue;

if (i == 8) {

client.print(‘.’);

}

client.print((char)p.name[i]);

}

client.print(“</a>”);

if (DIR_IS_SUBDIR(&p)) {

client.print(‘/’);

}

// print modify date/time if requested

if (flags & LS_DATE) {

root.printFatDate(p.lastWriteDate);

client.print(‘ ‘);

root.printFatTime(p.lastWriteTime);

}

// print size if requested

if (!DIR_IS_SUBDIR(&p) && (flags & LS_SIZE)) {

client.print(‘ ‘);

client.print(p.fileSize);

}

client.println(“</li>”);

}

client.println(“</ul>”);

}

// How big our line buffer should be. 100 is plenty!

#define BUFSIZ 100

void loop()

{

char clientline[BUFSIZ];

int index = 0;

EthernetClient client = server.available();

if (client) {

// an http request ends with a blank line

boolean current_line_is_blank = true;

// reset the input buffer

index = 0;

while (client.connected()) {

if (client.available()) {

char c = client.read();

// If it isn’t a new line, add the character to the buffer

if (c != ‘\n’ && c != ‘\r’) {

clientline[index] = c;

index++;

// are we too big for the buffer? start tossing out data

if (index >= BUFSIZ)

index = BUFSIZ -1;

// continue to read more data!

continue;

}

// got a \n or \r new line, which means the string is done

clientline[index] = 0;

// Print it out for debugging

Serial.println(clientline);

// Look for substring such as a request to get the root file

if (strstr(clientline, “GET / “) != 0) {

// send a standard http response header

client.println(“HTTP/1.1 200 OK”);

client.println(“Content-Type: text/html”);

client.println();

// print all the files, use a helper to keep it clean

client.println(“<h2>Files:</h2>”);

ListFiles(client, LS_SIZE);

} else if (strstr(clientline, “GET /”) != 0) {

// this time no space after the /, so a sub-file!

char *filename;

filename = clientline + 5; // look after the “GET /” (5 chars)

// a little trick, look for the ” HTTP/1.1″ string and

// turn the first character of the substring into a 0 to clear it out.

(strstr(clientline, ” HTTP”))[0] = 0;

// print the file we want

Serial.println(filename);

if (! file.open(&root, filename, O_READ)) {

client.println(“HTTP/1.1 404 Not Found”);

client.println(“Content-Type: text/html”);

client.println();

client.println(“<h2>File Not Found!</h2>”);

break;

}

Serial.println(“Opened!”);

client.println(“HTTP/1.1 200 OK”);

client.println(“Content-Type: text/plain”);

client.println();

int16_t c;

while ((c = file.read()) > 0) {

// uncomment the serial to debug (slow!)

//Serial.print((char)c);

client.print((char)c);

}

file.close();

} else {

// everything else is a 404

client.println(“HTTP/1.1 404 Not Found”);

client.println(“Content-Type: text/html”);

client.println();

client.println(“<h2>File Not Found!</h2>”);

}

break;

}

}

// give the web browser time to receive the data

delay(1);

client.stop();

}

}

代码C

#include <SPI.h>

#include <Ethernet55.h>

// Enter a MAC address and IP address for your controller below.

// The IP address will be dependent on your local network:

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress ip(192,168,1,126);//modifying according your own IP

// Initialize the Ethernet server library

// with the IP address and port you want to use

// (port 80 is default for HTTP):

EthernetServer server(80);

void setup() {

// Open serial communications and wait for port to open:

Serial.begin(9600);

while (!Serial) {

; // wait for serial port to connect. Needed for Leonardo only

}

// start the Ethernet connection and the server:

Ethernet.begin(mac, ip);

server.begin();

Serial.print(“server is at “);

Serial.println(Ethernet.localIP());

}

void loop() {

// listen for incoming clients

EthernetClient client = server.available();

if (client) {

Serial.println(“new client”);

// an http request ends with a blank line

boolean currentLineIsBlank = true;

while (client.connected()) {

if (client.available()) {

char c = client.read();

Serial.write(c);

// if you’ve gotten to the end of the line (received a newline

// character) and the line is blank, the http request has ended,

// so you can send a reply

if (c == ‘\n’ && currentLineIsBlank) {

// send a standard http response header

client.println(“HTTP/1.1 200 OK”);

client.println(“Content-Type: text/html”);

client.println(“Connection: close”); // the connection will be closed after completion

//of the response

client.println(“Refresh: 1”); // refresh the page automatically every 1 sec

client.println();

client.println(“<!DOCTYPE HTML>”);

client.println(“<html>”);

// output the value of each analog input pin

for (int analogChannel = 0; analogChannel < 6; analogChannel++) {

int sensorReading = analogRead(analogChannel);

client.print(“analog input “);

client.print(analogChannel);

client.print(” is “);

client.print(sensorReading);

client.println(“<br />”);

}

client.println(“</html>”);

break;

}

if (c == ‘\n’) {

// you’re starting a new line

currentLineIsBlank = true;

}

else if (c != ‘\r’) {

// you’ve gotten a character on the current line

currentLineIsBlank = false;

}

}

}

// give the web browser time to receive the data

delay(1);

// close the connection:

client.stop();

Serial.println(“client disonnected”);

}

}

4.测试结果

特别注意:我们测试时用的是1.5.6版本的IDE,其他版本IDE可能不兼容。

1. 测试前,应先将用到的库文件放至相应的IDE库目录下面。

2. 测试时,利用方形接口USB线将控制板连接的电脑上 。将扩展板堆叠在控

制板上,在扩展板的网络变压器接口连接对应网线,将mini SD卡(TF卡)

插在扩展板TF卡座。

  1. 上传代码A,上传完成后,打开串口监视器,设置波特率为9600,按下复

位按键,就可以看到相应的网络IP地址,为192.168.1.126,如下图。

4.再将上传代码B,代码B中的IP地址应当更改为上传代码A获取到的IP

地址。上传成功,上电后,在浏览器地址栏输入获取的IP地址后,能在网

页中显示当前SD卡中的内容。

5.再将上传代码C,代码C中的IP地址应当更改为上传代码A获取到的IP

地址。上传成功,上电后,在浏览器地址栏输入获取的IP地址后,能在网

页中显示UNO板上A0-A5读取的6个模拟值,每隔1秒刷新1次。

5.相关资料链接

https://pan.baidu.com/s/1uwOH9FHaYxLI83pK13OfWA

提取码:tife

分类
Arduino 兼容扩展板 Arduino系列

KE0154 keyes IIC接口转换扩展板 红色环保

KE0154-1

1.说明

这是一个I2C接口转换扩展板。当单片机和其他传感器模块通信时,需要用到I2C通信方式,并且可以通过更改地址同时和多个传感器模块进行I2C通信。一般单片机就只是引出一个I2C通信接口,很不方便,有了这个扩展板,就能解决这个麻烦。它将I2C通信端口利用间距为2.54mm的4pin排针引出,共引出10个通信端口,保证单片机可以同时和9个传感器模块进行I2C通信。

2.技术参数

工作电压: DC 5V

通信方式: I2C通信

排针间距:2.54mm

尺寸:50*40 *12mm

重量:9.2g

3.使用方法

我们利用UNO R3板和扩展板控制8个KE2058 Keyes brick 8X8点阵模块(可选地址)显示不同图案,结果如下图。

KE0154-6

分类
Arduino 兼容扩展板 Arduino系列

KE0153 keyes ESP32-IO扩展板 红色环保

KE0153-1

1.说明

keyes ESP32-IO扩展板是一款为了兼容keyes ESP32 Core board (KE0162)而设计的扩展板。该扩展板将keyes ESP32 Core board 所有引脚连接利用间距为2.54mm的排针引出。为了方便连接其它传感器,扩展上还自带2排间距为2.54排针,用于给外接传感器/模块提供DC 3.3V电压供电。

同时,为了方便给keyes ESP32 Core board供电,控制板上还设计了供电电路。使用时,只需要在黑色DC头上输入DC 7-12V电压,就可以给keyes ESP32 Core board供电。并且扩展板上还自带1个拨码开关,用于控制电源开关。

2.技术参数

供电电压:DC 7-12V

工作电流:60mA

最大功率:0.3W

工作温度:-25℃到+65℃

尺寸:67*50*15mm

重量: 23.4g

环保属性:ROHS

3.接口和主要元件说明

KE0153-6(1)

4.连接示例

KE0153-5

分类
Arduino 兼容扩展板 Arduino系列

KE0010 Keyes SIM800C for arduino 红色 环保

Keyes SIM800C for arduino

2

  1. 概述

这是我们公司研发的一款GPRS/GSM Arduino扩展板。它作频率为EGSM 900MHz/DCS 1800MHz和GSM850 MHz/PCS 1900MHz,是集GPRS、DTMF等功能于一身的shield模块。它支持DTMF,当使能了DTMF功能后,就能将在通话过程中按下的按键转换成字符反馈回来,可以用来做远程控制。

它是通过AT指令来控制的,您能直接通过电脑串口和Arduino主板来启动它的功能。这款SIM800C GPRS Shield板内嵌有SIMCom公司的SIM800H芯片,具有良好的稳定性。

  1. 技术规格

供电电源<Vin>:6-12V

低功耗模式下:sleep模式下的电流为0.7mA

低电量消耗(100mA@7V-GSM模式)

四频 850/900/1800/1900MHz

GPRS multi-slot class 1~12

GPRS mobile station class B

采用GSM phase 2/2+标准

Class 4 (2 W @ 850/900 MHz)

Class 1 (1 W @ 1800/1900MHz)

通过AT指令控制

USB/Arduino控制开关

串口波特率自适应

支持DTMF

LED指示灯能显示电源供应状态,网络状态和工作模式

大小:81*53mm

  1. 测试代码

#include <SoftwareSerial.h>

SoftwareSerial SIM800C(7, 8); // 设置软件串口PIN

//SIM800C开启或按住S2键2S

void SIM800C_Start()

{

digitalWrite(9, HIGH);

delay(2000);

digitalWrite(9, LOW);

delay(5000);

}

void Call_Phone()

{

SIM800C.println(“ATD15912345678;”); // 将ATD后面的数字更改为要拨打的电话号码

delay(100);

SIM800C.println(“ATD15912345678;”);

delay(30000); // wait for 30 seconds…

SIM800C.println(“ATH”); // 挂机

}

void setup()

{

pinMode(9, OUTPUT);

SIM800C.begin(19200); //设置波特率

 

SIM800C_Start();

delay(20000); // 等待SIM800C开启

}

void loop()

{

Call_Phone();

do

{

 

}

while(1);

}

  1. 实验结果

先将SIM卡插入SIM卡槽内,耳塞插入音频插座内,将扩展板与控制板对插,拨动扩展板拨码开关到ARDUINO位置,控制板DC座接入9V外接电源,电源同时给控制板和扩展板供电。PWR LED灯亮起。

将测试代码上传到控制板后,等待一定时间或者直接按S2按键后,STA灯亮起,NET灯由快闪变成大概3S时间闪烁,此时表示SIM800C模块连接上网络。再等待一定时间,则能听到被呼叫的电话响起,接听电话后,此时通过模块能与被呼叫电话通话,且音质清晰,响亮。

特别注意:如果扩展板拨码开关拨到EXTERN时,控制板和扩展板需要同时供电,控制板供电电压为DC 7-12V,控制供电电压为DC 9V。

分类
Arduino 兼容扩展板 Arduino系列

KE0009 keyes MEGA 2560 传感器扩展板 红色 环保

MEGA 2560 传感器扩展板

KE0009 (1)

  1. 概述

MEGA 2560 传感器扩展板是与ARDUINO 2560 R3 开发板配合使用的扩展板,它能够很容易地将一些常用的传感器连接起来。它不仅将全部数字与模拟接口以舵机线序形式扩展出来,还特设串口通信接口、IIC通信接口、SPI信接口等接口,独立扩出更加易用方便。它真正意义上的将电路简化一款传感器仅需要一种通用3P传感器连接线,即可完成电路连接。

  1. 特点

自带1个蓝色接线柱可以给传感器和mega 2560控制板供电

VCC电压为DC 5V

自带1个D13指示灯(D13高电平,亮起)

自带1个电源指示灯

自带1个复位按键

自带1个NRF24L01接口

自带1个ICSP接口

自带1个SPI通信接口

自带1个I2C通信接口

将数字口、模拟口进行扩展(扩展成GND VCC 信号端)

  1. 引脚说明

画板 3 副本 2导航(1)

  1. 原理图
分类
Arduino 兼容扩展板 Arduino系列

KE0008 keyes MEGA 2560 原型扩展板 红色 环保

MEGA 2560 原型扩展板

KE0008 (1)

  1. 概述

MEGA 2560 原型扩展板是与ARDUINO 2560 R3 开发板配合使用的扩展板,用来搭建电路原型,可以直接在板子上焊接元件,也可以通过上面的迷你面包板连接电路。面包板与电路板之间通过双面胶连接,售出时面包板与电路板是分离的。

MEGA 2560 原型扩展板上带两个LED和两个按钮电路,可以直接使用,全部引脚和电源均已引出,非常适合和Arduino配合构建电路原型。