2018-11-12 21:57:27 m0_37738838 阅读数 14925
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    1422 人正在学习 去看看 王全

硬件要求:
1.esp8266-01模块 1-n个
2.双头杜邦线若干
3.arduino uno开发板或者同类开发板。
软件要求:
1.arduino ide

安装ESP8266开发板软件包
使用1.6.4及以上版本的Arduino, 打开Arduino IDE,打开 文件->首选项 在 附加开发板管理器网址 一栏写入:
http://arduino.esp8266.com/package_esp8266com_index.json

http://arduino.esp8266.com/stable/package_esp8266com_index.json

添加完以后点击 好。
做完这步以后重启Arduino IDE,然后依次点击 工具->开发板->开发板管理 搜索框输入esp,然后能找到类似’esp8266 by ESP8266 Community’,点击并安装。

方式一:
安装完后重启Arduino IDE,然后依次点击 工具->开发板->NodeMCU 1.0 (ESP-12E Module),接着按照下面的信息在工具栏找到对应项进行配置
Upload Using: Serial
CPU Frequency: 80 MHz
Flash Size: 4M (3M SPIFFS)
Upload Speed: 115200
Port: 对应的USB 端口 (当你一将Arduino连接电脑时,在设备管理器中会冒出端口号)
其他的设置就按照默认的选择不变

在这里插入图片描述

方式二:
点击 工具->开发板->Generic ESP8266 Module,接着按照下面的信息在工具栏找到对应项进行配置

  • Flash Mode: DIO(部分运行模式是DOUT)
  • Flash Frequency: 40 MHz
  • Upload Using: Serial
  • CPU Frequency: 80 MHz
  • Flash Size: 4M (1M SPIFFS)
  • Upload Speed: 115200
  • Port: 对应的USB 端口 (当你一将Arduino连接电脑时,在设备管理器中会冒出端口号)
  • Debug port “Serial”
  • Programmer: AVRISP mkll
    其他的设置就按照默认的选择不变
    在这里插入图片描述

图6-1 开发板配置

连接烧写
移除了ATmega芯片的Arduino开发板做为固件烧写工具

在这里插入图片描述

图6-2 ESP8266电路
8266对应的针脚如上所示。

烧录模式下:
将UTXD接到串口模块的TX上,
CH_PD和VCC接3.3V
GND和GPIO0接GND
其余脚无视即可。
注意,这里烧录模式,如果要工作的话请将GPIO0脚悬空,即断开,否则设备不会正常工作!

点击上传,将ESP8266模块程序设计中的程序烧录进8266芯片中,烧录时模块和8266上的蓝灯会狂闪一阵,编译速度会比arduino慢一些,耐心等待。

当看到Arduino IDE底部提示“上传结束”的信息,这时候把GPIO0拔掉,然后代码就会开始运行。

在这里我们配置8266模块连接的WiFi,WiFi名是test,密码是12345678,连接服务器IP是183.230.40.33,端口是80。我们这连接的IP就是OneNET平台,为后续基于arduino开发物联网作品做准备

下载时可能出现的问题:
1.下载出错,可能是供电问题,或者是串口模块数据传输有问题
2.卡着不动,重启一下8266,烧写模式时GPIO0接地。
3.正确的下载的情况是ide通知栏是一串小点在增加,最后显示下载成功

程序下载:https://download.csdn.net/download/m0_37738838/10780723

ESP8266模块程序设计:


#include <ESP8266WiFi.h>

const char *ssid     = "test";//这里写入网络的ssid
const char *password = "12345678";//wifi密码
const char *host = "183.230.40.33";//修改为Server服务端的IP,即你电脑的IP,确保在同一网络之下。

WiFiClient client;
const int tcpPort = 80;//修改为你建立的Server服务端的端口号,此端口号是创建服务器时指定的。


void setup()
{
    Serial.begin(115200);    
    pinMode(led,OUTPUT);
    delay(10);
    Serial.println();
    Serial.print("Connecting to ");//会通过usb转tll模块发送到电脑,通过ide集成的串口监视器可以获取数据。
    Serial.println(ssid);

    WiFi.begin(ssid, password);//启动

     //在这里检测是否成功连接到目标网络,未连接则阻塞。
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(500);
    }

 //几句提示
    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
    
}


void loop()
{
    while (!client.connected())//若未连接到服务端,则客户端进行连接。
    {
        if (!client.connect(host, tcpPort))//实际上这一步就在连接服务端,如果连接上,该函数返回true
        {
            Serial.println("connection....");
            delay(500);

        }
    }

    while (client.available())//available()表示是否可以获取到数据
    {
      //控制led
//        char val = client.read();//read()表示从网络中读取数据。
//        if(val=='a'){//pc端发送a和b来控制
//           digitalWrite(led, LOW);
//        }
//        if(val=='b')
//        {
//            digitalWrite(led, HIGH);
//        }

      //透传数据
      uint8_t c = client.read();
      Serial.write(c);

    }
 if (Serial.available())//串口读取到的转发到wifi,因为串口是一位一位的发送所以在这里缓存完再发送
  {
      delay(50);//加50ms延迟 保证串口字符接收完毕
      size_t counti = Serial.available();//串口缓冲器 返回的是缓冲区准确的可读字节数
      uint8_t sbuf[counti];
      Serial.readBytes(sbuf, counti);//从串口读取指定长度counti的字符到缓存数组sbuf。
      delay(50);//加50ms延迟 保证缓存完毕
      client.write(sbuf, counti);

  }



}


最后客户端视频:https://v.youku.com/v_show/id_XMzk2NTE5MTk5Mg==.html?spm=a2h3j.8428770.3416059.1

esp8266便携式远程开关:https://blog.csdn.net/m0_37738838/article/details/89396244

本人对创客文化非常喜爱,利用Arduino业余时间制作了一个基于Arduino和OneNet的环境监测小作品,希望能够对有相似想法的朋友有所帮助,QQ交流群:247620001 验证信息:Arduino 欢迎跟大家一起交流学习

2017-09-10 12:18:04 qq_36373500 阅读数 4854
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    1422 人正在学习 去看看 王全

1、买了了nano还没用就用 avrisp烧录器给烧了其他程序,仅仅是的avr单片机了;

2、将他恢复成Arduino nano吧。


在Arduino软件安装目录中的hardware\arduino中。此文件夹下的“boards.txt”文件很重要,

打开文件,找到自己对应的Arduino版本,因为我的是“Arduino naon”,


打开boards.txt文件找到nano部分。



配置熔丝位,烧写就可以了 又回来了


贴图看不见了。

2019-04-14 06:14:15 wolaiyeptx 阅读数 3699
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    1422 人正在学习 去看看 王全

1. ESP8266烧录AT固件

1.1 烧录软件下载

登录乐鑫官网下载地址,下载Flash 下载工具

1.2 烧录AT固件

首先,点击安信可AT固件下载地址,下载出厂默认 AT 固件。
然后打开Flash Download Tools,点击Download ESP8266,如图所示:
在这里插入图片描述
在COM处选择端口号,点击START连接。此时,DETECTED INFO会显示连接的ESP8266硬件信息,包括晶振频率和Flash Size。选择DoNotChgBin,并选择下载的AT固件文件,设置地址为0x00000,设置其余参数和ESP8266信号一致。点击ERASE清空FLASH,点击START开始写入直到完成。

2. ESP8266 AT指令

AT指令 第二列
AT+CWMODE=2 开启 AP 模式
AT+CWSAP=“ESP8266”,“0123456789”,11,0 设置模块的 wifi 和密码
AT+CIPSERVER=1,8899 设置模块服务器端口
AT+CIPSEND=0,11 进入数据发送模式为11个字节
AT+CWMODE=1 设置模组为STA模式
AT+CWLAP 查询附近 WIFI
AT+CWJAP=“123123”,“12345678” 连接 WIFI
AT+CIFSR 查看路由器分配给模组的IP地址
AT+CIPMUX=0 打开单连接
AT+CIPMUX=1 打开多连接
AT+CIPMODE=1 设置透传模式
AT+CIPSTART=“TCP”,“192.168.43.104”,8899 连接手机端建立的TCP服务器
AT+CIPSEND 开始发送数据
+++ 注意退出透传,直接发送。取消发送新行
AT+CIPSTART=0,“UDP”,“255.255.255.255”,50000,1000, 0 是建立 UDP 连接,其中手机 UDP server 设置 50000,UDP client 设置的端口 1000
AT+CIPSTART=“UDP”,“192.168.43.104”,5000,2000,0 连接网络调试助手UDP的IP和端口
  • 注意透传只能在单连接模式下进行,所以在建立连接之前一定要用(AT+CIPMUX=0设置单连接),但是模块处于服务器模式下时,必须要多链接,由于冲突,所以模块开启服务器模式不能做 TCP透传!
//模块通过数据外网透传
AT+CWMODE=3                        设置 AP 和 STA 共存模式
AT+CWLAP                            查询附近 WIFI
AT+CWJAP="HUAWEI-C4VTTJ","1234567890"           连接 wifi
AT+CIPMUX=0                          设置单连接
AT+CIPMODE=1                        设置透传模式
AT+CIPSTART="TCP","115.29.109.104",6602    连接外网服务器,请参考下面网址
AT+CIPSEND

3. Arduino UNO 串口连接方式

Arduino UNOESP8266D2-TXD3-RX5V-Vin3.3V-3.3VGND-GNDArduino UNOESP8266
  • D2、D3为arduino设置的软串口RX和TX。

4. Arduino UNO与ESP8266-12f串口连接

Arduino IDE官网下载连接,Arduino UNO端程序如下:

#include <SoftwareSerial.h>

#define DEBUG true

SoftwareSerial esp8266(2,3); // make RX Arduino line is pin 2, make TX Arduino line is pin 3.
                             // This means that you need to connect the TX line from the esp to the Arduino's pin 2
                             // and the RX line from the esp to the Arduino's pin 3
void setup()
{
  Serial.begin(9600);
  esp8266.begin(9600); // your esp's baud rate might be different

  pinMode(11,OUTPUT);
  digitalWrite(11,LOW);

  pinMode(12,OUTPUT);
  digitalWrite(12,LOW);

  pinMode(13,OUTPUT);
  digitalWrite(13,LOW);

  sendCommand("AT+RST\r\n",2000,DEBUG); // reset module
  setAP("ESP8266","w12345678");
  Serial.println("Server Ready");
}

void loop()
{
  if(esp8266.available()) // check if the esp is sending a message 
  {
    if(esp8266.find("+IPD,"))
    {
     delay(1000); // wait for the serial buffer to fill up (read all the serial data)
     // get the connection id so that we can then disconnect
     int connectionId = esp8266.read()-48; // subtract 48 because the read() function returns 
                                           // the ASCII decimal value and 0 (the first decimal number) starts at 48

     esp8266.find("pin="); // advance cursor to "pin="

     int pinNumber = (esp8266.read()-48); // get first number i.e. if the pin 13 then the 1st number is 1
     int secondNumber = (esp8266.read()-48);
     if(secondNumber>=0 && secondNumber<=9)
     {
      pinNumber*=10;
      pinNumber +=secondNumber; // get second number, i.e. if the pin number is 13 then the 2nd number is 3, then add to the first number
     }

     digitalWrite(pinNumber, !digitalRead(pinNumber)); // toggle pin    

     // build string that is send back to device that is requesting pin toggle
     String content;
     content = "Pin ";
     content += pinNumber;
     content += " is ";

     if(digitalRead(pinNumber))
     {
       content += "ON";
     }
     else
     {
       content += "OFF";
     }

     sendHTTPResponse(connectionId,content);

     // make close command
     String closeCommand = "AT+CIPCLOSE="; 
     closeCommand+=connectionId; // append connection id
     closeCommand+="\r\n";

     sendCommand(closeCommand,1000,DEBUG); // close connection
    }
  }
}

void setAP(String wifi,String passwd)
{
    sendCommand("AT+CWMODE=2\r\n",1000,DEBUG); // 开启 AP 模式
    sendCommand("AT+CWSAP=\""+wifi+"\",\""+passwd+"\",11,0\r\n",3000,DEBUG);
}

void setSTA(String wifi,String passwd)
{
    sendCommand("AT+CWMODE=1\r\n",1000,DEBUG); // 开启 STA 模式
    sendCommand("AT+CWJAP=\""+wifi+"\",\""+passwd+"\"\r\n",3000,DEBUG);
    delay(10000);
    sendCommand("AT+CIFSR\r\n",1000,DEBUG); // get ip address
    sendCommand("AT+CIPMUX=1\r\n",1000,DEBUG); // configure for multiple connections
    sendCommand("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // turn on server on port 80
}

/*
* Name: sendData
* Description: Function used to send data to ESP8266.
* Params: command - the data/command to send; timeout - the time to wait for a response; debug - print to Serial window?(true = yes, false = no)
* Returns: The response from the esp8266 (if there is a reponse)
*/
String sendData(String command, const int timeout, boolean debug)
{
    String response = "";

    int dataSize = command.length();
    char data[dataSize];
    command.toCharArray(data,dataSize);

    esp8266.write(data,dataSize); // send the read character to the esp8266
    if(debug)
    {
      Serial.println("\r\n====== HTTP Response From Arduino ======");
      Serial.write(data,dataSize);
      Serial.println("\r\n========================================");
    }

    long int time = millis();

    while( (time+timeout) > millis())
    {
      while(esp8266.available())
      {

        // The esp has data so display its output to the serial window 
        char c = esp8266.read(); // read the next character.
        response+=c;
      }  
    }

    if(debug)
    {
      Serial.print(response);
    }

    return response;
}

/*
* Name: sendHTTPResponse
* Description: Function that sends HTTP 200, HTML UTF-8 response
*/
void sendHTTPResponse(int connectionId, String content)
{

     // build HTTP response
     String httpResponse;
     String httpHeader;
     // HTTP Header
     httpHeader = "HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=UTF-8\r\n"; 
     httpHeader += "Content-Length: ";
     httpHeader += content.length();
     httpHeader += "\r\n";
     httpHeader +="Connection: close\r\n\r\n";
     httpResponse = httpHeader + content + " "; // There is a bug in this code: the last character of "content" is not sent, I cheated by adding this extra space
     sendCIPData(connectionId,httpResponse);
}

/*
* Name: sendCIPDATA
* Description: sends a CIPSEND=<connectionId>,<data> command
*
*/
void sendCIPData(int connectionId, String data)
{
   String cipSend = "AT+CIPSEND=";
   cipSend += connectionId;
   cipSend += ",";
   cipSend +=data.length();
   cipSend +="\r\n";
   sendCommand(cipSend,1000,DEBUG);
   sendData(data,1000,DEBUG);
}

/*
* Name: sendCommand
* Description: Function used to send data to ESP8266.
* Params: command - the data/command to send; timeout - the time to wait for a response; debug - print to Serial window?(true = yes, false = no)
* Returns: The response from the esp8266 (if there is a reponse)
*/
String sendCommand(String command, const int timeout, boolean debug)
{
    String response = "";

    esp8266.print(command); // send the read character to the esp8266

    long int time = millis();

    while( (time+timeout) > millis())
    {
      while(esp8266.available())
      {

        // The esp has data so display its output to the serial window 
        char c = esp8266.read(); // read the next character.
        response+=c;
      }  
    }

    if(debug)
    {
      Serial.print(response);
    }

    return response;
}

5. 串口调试

打开Arduino IDE串口调试工具—>串口监视器,无需调试,静静地看着就好了。
在这里插入图片描述

2016-09-01 16:41:32 github_35160620 阅读数 19453
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    1422 人正在学习 去看看 王全

Ubuntu/Linux 系统下,如何给Arduino板子烧写程序

使用的虚拟机软件:VMware 11
我的Ubuntu系统:Ubuntu 14.04.10 TLS
Arduino 软件的版本:Arduino 1.6.11
Arduino 板子的型号:Arduino UNO R3

Step 0 . 来到 VMware 虚拟机里的Ubuntu 系统的界面。

Step 1 . Arduino 板子通过USB线插到电脑上。

Step 2 . 在终端中执行下面的命令,来启动 Arduino 软件。

arduino

Step 3 . 随便打开一个程序。我们以 Blink 程序为例,打开它:

这里写图片描述

Step 4 . 选择 板卡型号

这里写图片描述

Step 5 . 选择当前 端口号

这里写图片描述

你可以看到:Arduino 软件右下角有当前被选中的端口号和被选中的Arduino板卡的信息。

这里写图片描述

Step 6 . 给端口添加权限。

如果,这时你给 Arduino 开发板下载程序,发现下载出错。原因就是没有给端口添加权限。

这里写图片描述

输出的 error 提示:

avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied

在终端中执行下面的命令,来给当前选中的端口添加权限。

sudo chmod 777 /dev/ttyACM0

端口号都在/dev/ 目录里面。执行下面的命令可以查看:

cd /dev/
ls

输出 如下图所示:

这里写图片描述


注意: 如果你将Arduino 板子插到电脑上了,但是在/dev/ 目录里面没有在到类似 ttyACM0 这样的端口号。
解决办法,将Arduino板子从电脑的USB口拔出,将当前屏幕界面切换到VMware 虚拟机里的Ubuntu 系统的界面,这时,再将Arduino 板子插到电脑上。你就可以在/dev/路径里面找到类似 ttyACM0 这样的端口号了。

Step 7 . 点击 编译 按钮

这里写图片描述

Step 8 . 点击 上传 按钮

这里写图片描述

其实,可以不用点击 编译 按钮,直接点击 上传 按钮就可以。因为点击完 上传 按钮后,它会再编译一遍,在将程序烧写到板子上。

现在提示 Done uploading,表示程序已经成功烧写到板子里面。

这里写图片描述

搞定

2019-10-31 16:54:49 sudaroot 阅读数 390
  • 少儿编程:Scratch中的Arduino开发

    本门课程将介绍如何以Scratch的编程方式进行Arduino开发(需购买硬件,详情可以参考教程内容)。 课程包含16个小模块的调用,并以案例形式发散思维,对应生活中随处可见的场景。(如红绿灯、楼道声控开灯,火焰报警、电动车碰撞报警、触摸传感器开启灯/风扇、高温开启风扇、天黑打开路灯,厕所冲水设备等) 每节正式课程包含连接硬件和代码编写两个环节,如果是孩子学习,请家长做好监督看护工作。 我相信,编程对孩子的思维培养和好奇心的激发是确实存在益处的,希望每一个观众能够有所收获。 课程适合人群:对编程感兴趣的青少年;有意培养子女编程兴趣的家长;有意从事少儿编程相关工作的朋友。

    1422 人正在学习 去看看 王全

学习ESP32前先必需了解一下Arduino

Arduino是指开源硬件。在以前开源一般指的是软件(源码公开),后来随着发展出现了开源硬件,开源硬件有了以后大家就可以在开源硬件上做出一些兼容。

官方学习参考网址:https://www.arduino.cc/reference/en/

 

硬件介绍:

SP-WROOM-32 是一款通用型 Wi-Fi+BT+BLE MCU 模组,功能强大,用途广泛,可以用于低功耗传感器网络 和要求极高的任务,例如语音编码、音频流和 MP3 解码等。

 

此款模组的核心是 ESP32-D0WDQ6 芯片 *,具有可扩展、自适应的特点。两个 CPU 核可以被单独控制或上电。 时钟频率的调节范围为 80 MHz 到 240 MHz。用户可以切断 CPU 的电源,利用低功耗协处理器来不断地监测外 设的状态变化或某些模拟量是否超出阈值。ESP32 还集成了丰富的外设,包括电容式触摸传感器、霍尔传感器、 低噪声传感放大器,SD 卡接口、以太网接口、高速 SDIO / SPI、UART、I2S 和 I2C 等。

 

 

CPU 和内存

ESP32-D0WDQ6 内置两个低功耗 Xtensa® 32-bit LX6 MCU。片上存储包括:

• 448 KB 的 ROM,用于程序启动和内核功能调用。

• 用于数据和指令存储的 520 KB 片上 SRAM。

• RTC 中 8 KB 的 SRAM,即 RTC 慢速存储器,可以在 Deep-sleep 模式下被协处理器访问。

• RTC 中 8 KB 的 SRAM,即 RTC 快速存储器,可以在 Deep-sleep 模式下 RTC 启动时用于数据存储以及 被主 CPU 访问。

• 1 kbit 的 eFuse,其中 256 bit 为系统专用(MAC 地址和芯片设置);其余 768 bit 保留给用户应用,这些 应用包括 Flash 加密和芯片 ID。

• ESP-WROOM-32集成了4MB的SPIFlash

 

 

 

安装Arduino环境:

官网下载:https://www.arduino.cc/en/Main/Software

默认安装即可。

 

把下载的开发板资料解压到C:\Program Files (x86)\Arduino\hardware中。

 

烧录例程:打开Arduino软件,把板子通过USB线连接到电脑。

设置好开发板信息和下载的串口和波特率。

 

选择例程

 

编译一下

 

上传程序。上传前,先把boot按键按着或者G0引脚接地,再点击上传程序, 直到程序下载完成才释放按键或者G0。完成后按下RST按键复位。

或者,先按住boot键再按RST键复位,即可进入下载模式。

 

打开串口监控窗口。

 

初识Arduino

阅读数 572

S4A连接Arduino

阅读数 1203

没有更多推荐了,返回首页