ESP8266 I2C LCD 列出 AP

最近在試著用純 ESP8266 實驗一些 arduino 能用的功能,I2c、EEPROM、ADC..這篇紀錄一下,雖然很無腦的就可以 i2c,只是還是比 arudino 要多查一些資料。﹍。


P1100401

Arduino 會用的模組裡面有一個 16×2 的 LCD,原始是有十六隻腳,實際在實驗的時候會覺得很煩,要插一堆腳,可以透過 I2C 的模組轉接成只需要除了正負電外只需要兩隻腳 SDA SCL 的 I2C 讓開發板跟 LCD 通訊。

實際上去找教學很容易就可以用 LiquidCrystal_I2C 跟 arduino 很簡單的在 LCD 印出字了。

ESP12

在 ESP8266 上面要注意的是,是用哪個封裝,像 ESP01 只有兩個 GPIO(GPIO0、GPIO2),所以就是接那兩個,像我是用 ESP-12 ,就是用 GPIO04(SDA)、GPIO05(SCL) 如上圖,其實我測試板上標示的資訊的兩隻腳是寫顛倒過來的耶,需要交叉測試確認一下。然後 LCD 需要供應 5v 的電,就要跟 ESP8266 的電源分開,我是用 CP2102 分別供 3.3v 給 ESP8266 供 5v 給 LCD。

順便一提在光華買 CP2102 USB to TTL 跟在拍賣上買的價差五倍有吧!-_-

然後要測試好位址是 0x20 or 0x27,好像都會先跑一個掃描的程式,我是先在 arduino 上快速測過,就知道是 0x20 了,然後就能印字了=_=。
P1100403

這個東西能做的無用應用就是,粉絲團的讚數顯示器吧,好像也有人在賣木製外殼精美的版本,只用這兩幾個零件做出來應該算蠻輕巧的了。

以下範例練習把 ESP8266 設成 Station 模式,掃描附近所有 AP 並把 SSID 顯示在 LCD 上,酷八!


#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include "ESP8266WiFi.h"
LiquidCrystal_I2C lcd(0x20, 16, 2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd 

  Serial.begin(9600);
  WiFi.mode(WIFI_STA);
  lcd.backlight();
  lcd.print("//mlwmlw.org");
  lcd.setCursor(0,1);
  lcd.print("ESP8266!!");
}

void loop()
{
  int n = WiFi.scanNetworks();
  delay(3000);
  if (n == 0)
    Serial.println("no networks found");
  else
  {
    Serial.print(n);
    Serial.println(" networks found");
    for (int i = 0; i < n; ++i)
    {
      // Print SSID and RSSI for each network found
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print(i);
      lcd.print(".");
      lcd.print(WiFi.SSID(i));
      Serial.print(WiFi.SSID(i));
      Serial.print(" (");
      Serial.print(WiFi.RSSI(i));
      Serial.print(")");
      Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*");
      delay(1500);
    }
  }
  delay(5000);
}

文件:http://arduino.esp8266.com/versions/1.6.5-947-g39819f0/doc/reference.html
範例來源:wifi scan

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *