2022年2月3日木曜日

espr2➃ sdc! rtc! dht11!, i2c-bme280/lcd,Portal, IDEsetting/SoftAp

ーーーーーーーsdc−−−−−−−−−−−

ESP8266でSPI通信する - Qiita? のピン配置でvccはvout(5V仕様にて) uno用の

サンプルスケッチ sd/readwrite.inoのSD.begin(4)をbegin(15)に変えて成功

CLKIO14defaultesp8266
MISOIO12defaultesp8266
MOSIIO13defaultesp8266
CSIO15defaultesp8266

--------rtc---------------------------------------------------------

ESPr Developerを使って、温度を測定し、サーバー上のSQLiteファイルに記録してみる | KatsEye (kats-eye.net) を参考に vccはvoutよりもらう(5V駆動にて)

esp32のRTC用のスケッチに Wire.begin(12,14) // SDA,SCL を加えて成功

------------dht11-----------------------------

ESP8266とDHT11とAmbientを使って部屋の温度と湿度をグラフ化 - Qiita

ambientのつかいかたまで載っている 良品サイト

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

ESP8266 with BME280 using Arduino IDE (Pressure, Temperature, Humidity) | Random Nerd Tutorials sda4,scl5をカスケードしてbme は3v、

lcdはVoutでとり(あとで3V3にしておいた、安全のため、字はうすくなるが)

Gndは共通として以下のコードで成功

#include <Wire.h> 

#include <LiquidCrystal_I2C.h>

#include <Adafruit_Sensor.h>

#include <Adafruit_BME280.h>

LiquidCrystal_I2C lcd(0x27,20,4); // 手持ちの20文字4行のディスプレイの設定

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // I2C

unsigned long delayTime;

void setup()

{   Serial.begin(9600);

  Serial.println(F("BME280 test"));

  bool status;

  // default settings

  // (you can also pass in a Wire library object like &Wire2)

  status = bme.begin(0x76);  

  if (!status) {

    Serial.println("Could not find a valid BME280 sensor, check wiring!");

    while (1);

  }

  Serial.println("-- Default Test --");

  delayTime = 1000;             

  // initialize the lcd 

  lcd.init(); // Print a message to the LCD.

  lcd.backlight();

  lcd.setCursor(3,0);

  lcd.print("Hello, world!");

  lcd.setCursor(2,1);

  lcd.print("Ywrobot Arduino!");

   lcd.setCursor(1,2);

  lcd.print("Arduino LCM IIC 2004");

   lcd.setCursor(0,3);

  lcd.print("Power By Ec-yuan!");

 Serial.println();

  }

void loop()

  printValues();

  delay(delayTime);

  lcd.clear();

  lcd.setCursor(0,0);

  lcd.print("Temp *C= ");

  lcd.print(bme.readTemperature());

  lcd.setCursor(0,1);

  lcd.print("Press\ KhPa= ");

  lcd.print(bme.readPressure() / 100000.0F);

  lcd.setCursor(0,2);

  lcd.print("Humid %= ");

  lcd.print(bme.readHumidity());

  lcd.setCursor(0,3);

  lcd.print("Alti m= ");

  lcdf.print(bme.readAltitude(SEALEVELPRESSURE_HPA));

  }

void printValues() {

  Serial.print("Temperature = ");

  Serial.print(bme.readTemperature());

  Serial.println(" *C");

  

  // Convert temperature to Fahrenheit

    /*Serial.print("Temperature = ");

  Serial.print(1.8 * bme.readTemperature() + 32);

  Serial.println(" *F");*/

  

  Serial.print("Pressure = ");

  Serial.print(bme.readPressure() / 100.0F);

  Serial.println(" hPa");


  Serial.print("Approx. Altitude = ");

  Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));

  Serial.println(" m");


  Serial.print("Humidity = ");

  Serial.print(bme.readHumidity());

  Serial.println(" %");


  Serial.println();

}

------------------portal site--------------------------------------------------

https://kats-eye.net/info/category/espr-developer/page/15/

--------------softAp of esp8266 ----------------------------

 https://www.mgo-tec.com/esp8266-board-install01-htmlを参考にした

(「Arduino実用入門」の設定でも動いたが)


以下が一番実用的かも ただしIPアドレスが後付けなのでシリアルモニタ必須
#include <ESP8266WiFi.h>
#include <WiFiClient.h> 
#include <ESP8266WebServer.h>

/* ESPR 自身をAP(アクセスポイント)とする接続 */
const char *ssid = "ESPR";                    // APモード:自身のSSID
const char *password = "ESPR0001";            // APモード:自身のパスワード

ESP8266WebServer server(80);               // WEBサーバーポート(80番)
const int led = 13;                           // LED用出力端子番号

/* ブラウザに表示するボタンなど html でString form = に続いて表記  */
// LEDオフ時のHTML
String form_off ="<html><head><meta name=viewport content=width=100></head>"
"<p>SW OFF</p>"
"<form action=ON><input type='submit' value='ON' style='background-color:khaki; color:white;'></form>"
"<form action=OF><input type='submit' value='OFF' style='background-color:blue; color:white;'></form>"
"</html>";

// LEDオン時のHTML
String form_on ="<html><head><meta name=viewport content=width=200></head>"
"<p>SW ON</p>"
"<form action=ON><input type='submit' value='ON' style='background-color:red; color:yellow;'></form>"
"<form action=OF><input type='submit' value='OFF' style='background-color:lightgray; color:gray;'></form>"
"</html>";

// 初回送信(LEDオフ時のHTML送信)
void handleRoot() {
    digitalWrite(led, 0);
    server.send(200, "text/html",form_off);
    Serial.println("OFF");
}

// LEDオン時のHTML送信
void LedOn(){
    digitalWrite(led, 1);
    server.send(200, "text/html", form_on);
    Serial.println("ON");
}

// LEDオフ時のHTML送信
void LedOff(){
    digitalWrite(led, 0);
    server.send(200, "text/html", form_off);
    Serial.println("OFF");
}

// 初回設定
void setup() {
    pinMode(led,OUTPUT);
    digitalWrite(led, 0);
    delay(1000);
    
    Serial.begin(115200);
    Serial.println();
    Serial.print("Configuring access point...");

    WiFi.softAP(ssid, password);             // APモード SSID/パスワード設定
    delay(1000);
    IPAddress myIP = WiFi.softAPIP();      // IPアドレス取得
    
    Serial.print("AP IP address: ");
    Serial.println(myIP);
    
    server.on("/", handleRoot);
    server.on("/ON", LedOn);
    server.on("/OF", LedOff);
    server.begin();
    
    Serial.println("HTTP server started");
}

// 連続処理
void loop() {
    server.handleClient();
}

https://iot.keicode.com/esp8266/esp8266-ap.phpでソフトアクセスポイントの記載あり

この方式の利点は、最初にIPアドレスを固定できることだ

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

#define WIFI_SSID "適当でいい"
#define WIFI_PWD "適当でいい"

ESP8266WebServer server( 80 );
IPAddress ip( 192, 168, 10, 1 );
IPAddress subnet( 255, 255, 255, 0 );

void setup() {

  WiFi.mode(WIFI_AP);
  WiFi.softAPConfig(ip, ip, subnet);  
  WiFi.softAP(WIFI_SSID, WIFI_PWD);

  server.on("/", [](){
    server.send(
      200, 
      "text/html", 
      "<h1>Hello! Web Server!</h1>");
  });

  server.begin();
}

void loop() {
  server.handleClient();
}
ーーーーーーーーーー両者をあわせるとーーーーーーーーーーーー決定版ーーーー
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

/* ESPR 自身をAP(アクセスポイント)とする接続 */
const char *ssid = "ESPR";                    // APモード:自身のSSID
const char *password = "ESPR0001";            // APモード:自身のパスワード
IPAddress ip(192,168,10,1); //added code
IPAddress subnet(255,255,255,0); // added code
ESP8266WebServer server(80);               // WEBサーバーポート(80番)
const int led = 13;                           // LED用出力端子番号

/* ブラウザに表示するボタンなど html でString form = に続いて表記  */
// LEDオフ時のHTML
String form_off ="<html><head><meta name=viewport content=width=100></head>"
"<p>SW OFF</p>"
"<form action=ON><input type='submit' value='ON' style='background-color:khaki; color:white;'></form>"
"<form action=OF><input type='submit' value='OFF' style='background-color:blue; color:white;'></form>"
"</html>";

// LEDオン時のHTML
String form_on ="<html><head><meta name=viewport content=width=200></head>"
"<p>SW ON</p>"
"<form action=ON><input type='submit' value='ON' style='background-color:red; color:yellow;'></form>"
"<form action=OF><input type='submit' value='OFF' style='background-color:lightgray; color:gray;'></form>"
"</html>";

// 初回送信(LEDオフ時のHTML送信)
void handleRoot() {
    digitalWrite(led, 0);
    server.send(200, "text/html",form_off);
    Serial.println("OFF");
}

// LEDオン時のHTML送信
void LedOn(){
    digitalWrite(led, 1);
    server.send(200, "text/html", form_on);
    Serial.println("ON");
}

// LEDオフ時のHTML送信
void LedOff(){
    digitalWrite(led, 0);
    server.send(200, "text/html", form_off);
    Serial.println("OFF");
}

// 初回設定
void setup() {
    pinMode(led,OUTPUT);
    digitalWrite(led, 0);
    delay(1000);
   
    Serial.begin(115200);
    Serial.println();
    Serial.print("Configuring access point...");

    WiFi.mode(WIFI_AP);  // added code
    WiFi.softAPConfig(ip,ip,subnet); // added code
    WiFi.softAP(ssid, password);             // APモード SSID/パスワード設定
    delay(1000);
   // IPAddress myIP = WiFi.softAPIP();      // added codeにてIPアドレス取得は不要となる
    //Serial.print("AP IP address: ");
    //Serial.println(myIP);
   
    server.on("/", handleRoot);
    server.on("/ON", LedOn);
    server.on("/OF", LedOff);
    server.begin();
   
    Serial.println("HTTP server started");
}

// 連続処理
void loop() {
    server.handleClient();
}

------------  soft access あれこれ ----------------------------------
ESPr Developerをアクセスポイントにして接続する | KatsEye (kats-eye.net)
これが一番実用的だった
Raspberry Pi Pico MicroPython シリアル通信(UART) テスト - JH7UBCブログ (goo.ne.jp)
これをつかうとラズピコにWifi機能がつけられる
Raspberry Pi Picoに無線機能を付けてみました - 自由に工作中 (hatenablog.com)
これが上の発展形で最終形 ソフトアクセスポイントのipを自由に設定できるノウハウ込み
ちなみに、単体使用のためのバッテリはVINをつかう
http://kujiraiken.sit.ac.jp/blog/2019/06/esp-wroom-02-with-battery/ に詳しい
DCモータ作動であれば単三x3は欲しい

0 件のコメント:

コメントを投稿