ESP8266 Wifi With Arduino Uno and Nano

Ứng dụng Arduino trong điều khiển thiết bị điện, điện tử.
Xêm thêm tại: http://kythuatvatlieu.org/magazine/arduino.html
Post Reply
User avatar
Gmail
Posts: 60
Joined: 09 Jan 2017, 21:42
Location: Hà Thành

ESP8266 Wifi With Arduino Uno and Nano

Post by Gmail » 10 Feb 2017, 14:45

Tham khảo từ:
https://blogs.msdn.microsoft.com/abhina ... -and-nano/
If you are trying to add Wifi connectivity to an existing Arduino project or have serious aspirations for developing a Internet of Things (IoT) solution, Arduino + ESP8266 wifi module is one of the top choices. Especially the Nano because it is super cheap (<$3) and is very small in size. Using some sort of web-server directly on ESP8266 (e.g. via Lua) doesn’t cut it due to the lack of IO pins on ESP8266. You can get a full IoT node out at under $12 with a few sensors, Arduino Nano and a ESP9266 module (excluding the power supply).
Khi bạn sử dụng bộ kết nối Wifi thông qua một dự án Arduino hoặc phát triển thiết bị IoT, Arduino + modun wifi ESP8266 là một lựa chọn tốt. Đặc biệt là sử dụng Arduino Nano có giá rẻ (< 3$) và có kích thước đủ nhỏ. Việc sử dụng máy chủ Web trực tiếp trên ESP8266 (ví dụ thông qua Lua) không bị giảm hiệu năng cho dù nó không có các chân vào ra IO. Bạn có thể có 1 bộ IoT đầy đủ với giá dưới 12$ kết hợp 1 số cảm biến, Arduino nano và modun ESP8266 (kể cả bộ cấp nguồn).

Inspite of a plethora of posts online it turned out to be very hard for me to get this to combination to work. I spent atleast 3-4 days until I actually got this right. The main problem I see is that a lot of the solutions online are actually down-right incorrect, not-recommended or for other similar boards (e.g. Arduino Mega). Also there are a few gotchas that were not commonly called out. Before I start let me get all of those out of the way.
  1. Arduino Uno/Nano is very different from say Mega which can supply more current and have different number of UART. The steps to make a Uno and Nano work is different from them.
    Arduino Uno/Nano có điểm khác so với Arduino mega nhờ có bộ cấp nguồn có dòng cao hơn và UART khác biệt. Các bước sau đây tạo cho ta thấy Uno và Nano khác biệt với Arduino Mega.
  2. Power Supply - Nguồn cấp
      • ESP8266 is powered by 3.3V and NOT 5V. So you cannot have a common power supply between Arduino and ESP8266.
        ESP8266 được cấp nguồn 3.3V. Vì thế không thể dùng chung nguồn cấp chung giữa Arduino và ESP8266.
      • ESP8266 draws way more current (200mA) then it can be supplied by the 3.3v pin on the Uno/Nano. Don’t even try them, I don’t buy anyone who claims to have done this. Maybe they have some other high power variant of Arduino (Mega??) that can do this.
        ESP8266 sử dụng nguồn với dòng lớn (200 mA) từ nguồn 3.3V, nguồn này có thể dùng được từ nguồn 3.3V có sẵn của Uno/Nano. Tuy nhiên, đừng nên sử dụng nguồn cấp này.
        So you either use a 3.3v 1A power supply to ESP8266 with common ground with the 5V powering Arduino, or you use a step down 5v to 3.3v (e.g. like here).
        Vì thế phải sử dụng một nguồn cấp phụ 3.3V 1A để cấp nguồn cho ESP8266 và chung dây mát với nguồn 5V cấp cho Arduino, hoặc bạn sử dụng 1 bộ hạ áp từ 5V xuống 3.3V (chẳng hạn như ví dụ dưới đây)
    • Arduino <-> ESP8266
      Kết nối và giao tiếp Arduino <-> ESP8266
      • All the ESP8266 I bought came with the UART serial IO speed (BAUD) set to 115200. Now the problem is that Uno/Nano has only one HW serial, which is set to be used for communicating with the PC over USB with which you are debugging. You can use any other two IO pins to talk to the ESP8266 using SoftwareSerial, but it does not support that high a BAUD speed. If you try 115200 to communicate with Arduino <-> ESP8266 you will get garbage. A lot of articles online show a setup with Arduino Mega which does have two HW serial IO using which you can easily get 115200 and more. So you need to dial the ESP8266 settings to move the communication speed to a more manageable BAUD of 9600.
        Các bộ ESP8266 mua về có cổng giao tiếp UART IO có tốc độ (BAUD) là 115200. Vấn đề là Uno/Nano chỉ có một cổng giao tiếp nối tiếp HW, được thiết lập để giao tiếp với PC qua cổng USB với mục đích gỡ rối. Bạn có thể sử dụng 2 chân IO bất kỳ để giao tiếp với ESP8266 thông qua thư viện SoftwareSerial, nhưng nó lại không hỗ trợ tốc độ BAUD cao. Nếu bạn thử giao tiếp 115200 giữa Arduino <--> ESP8266 bạn sẽ nhận được thông tin rác. Có nhiều bài viết trên mạng hướng dẫn thiết lập cho Arduino mega sử dụng 2 cổng IO HW và dễ dàng có được tốc độ 115200 hoặc cao hơn. Vì vậy, để giao tiếp cần thiết lập ESP8266 chuyển tốc độ giao tiếp về tốc độ BAUD 9600.
      • Arduino IO pins have 5V and ESP8266 accepts 3.3 v (max 3.6). I have seen people directly connect the pins but you are over driving the ESP8266. If it doesn’t burn out immediately (the cheaper ones does), it will burn out soon. I suggest you use a voltage divider using simple resistor to have Arduino transmission (TX) drive ESP8266 receive (RX).
        Các chân IO Arduino dùng 5V còn ESP8266 sủ dụng 3.3V (tối đa 3.6V). Một số người cối các chân này thẳng cho ESP8266. Thường thì nó cháy ngay tức thì (một số chip rẻ tiền có thể bị cháy ngay), nhưng rồi thì cũng sẽ bị cháy sau đó. Bạn nên sử dụng một bộ chia bằng điện trở kết nối Arduino chân chuyển vận TX với đầu nhận ESP8266 RX.
      • For some strange reason D2/D3 pins on Arduino Nano didn’t work for me for the communicating with ESP8266. I have no explanation for this and it happened on two separate Nano. The Arduino would just read a whole bunch of garbage character. So I had to move to the pins 8/9.
        Có điểm kỳ lạ là chân D2/D3 không làm việc khi giao tiếp với ESP8266. Và cũng chưa có giải thích nào hợp lý cả. Arduino chỉ việc đọc vào 1 đống dữ liệu rác. Vì thế nên chọn các chân 8 và 9.
      • In spite of whatever I did, garbage characters would still come in sometimes. So I wrote a small filter code to ignore them
    Kết nối qua USB:
    Things you need
    1. ESP8266
    2. Arduino Nano
    3. Power supply 5v and 3.3v
    4. Resistors 1K, 2.2K, 10K
    5. FTDI USB to serial TTL adapter
    8865.image_36686F40.png
    8865.image_36686F40.png (103.28 KiB) Viewed 1267 times

    Code: Select all

    #include <SoftwareSerial.h>
    SoftwareSerial softSerial(8, 9); // RX, TX
    
    void setup() 
    {
      uint32_t baud = 9600;
      Serial.begin(baud);
      softSerial.begin(baud);
      Serial.print("SETUP!! @");
      Serial.println(baud);
    }
    
    void loop() 
    {
        while(softSerial.available() > 0) 
        {
          char a = softSerial.read();
          if(a == '\0')
            continue;
          if(a != '\r' && a != '\n' && (a < 32))
            continue;
          Serial.print(a);
        }
        
        while(Serial.available() > 0)
        {
          char a = Serial.read();
          Serial.write(a);
          softSerial.write(a);
        }
    }
    kết nối với Arduino nano
    0385.image_714FA209.png
    0385.image_714FA209.png (272.29 KiB) Viewed 1267 times
    ======================================
    Kết nối Internet
    http://kythuatvatlieu.org/magazine/ardu ... u-web.html

    http://kythuatvatlieu.org/magazine/ardu ... -nhan.html

    Code tham khảo từ:
    http://www.instructables.com/id/IoT-Bas ... /?ALLSTEPS

    Tạo tài khoản lưu trữ tại https://thingspeak.com/ (chú ý PWD phải có 1 little letter và 1 upper letter)


    Post Reply