2026年8月14日金曜日

platformIO esp8266 led-control-server

ini are as follows, and the code is as follows:

[env:d1_wroom_02]
platform = espressif8266
board = d1_wroom_02
framework = arduino
monitor_speed = 115200

#include <Arduino.h>

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

#define WIFI_SSID "Pikara2-91d8e4"
#define WIFI_PWD ""

#define LED_PIN 16 // GPIO16 (D0)

ESP8266WebServer server(80);
// HTML fetchでget reqできた
const char HTML[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>LED Control</title>
<script>
function ledOn() {
fetch("/led/on");
}

function ledOff() {
fetch("/led/off");
}
</script>
</head>
<body>
<h1>NodeMCU LED Control</h1>
<button onclick="ledOn()">LED ON</button>
<button onclick="ledOff()">LED OFF</button>
</body>
</html>
)rawliteral";


// GET /led/on
void handleLedOn()
{
digitalWrite(LED_PIN, HIGH);
Serial.println("GET /led/on");
server.send(200, "text/plain", "LED ON");
}


// GET /led/off
void handleLedOff()
{
digitalWrite(LED_PIN, LOW);
Serial.println("GET /led/off");
server.send(200, "text/plain", "LED OFF");
}


// GET /
void handleRoot()
{
server.send_P(200, "text/html", HTML);
}


void setup()
{
Serial.begin(115200);

pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW); // 最初はオフで

// WiFi接続
WiFi.begin(WIFI_SSID, WIFI_PWD);

Serial.print("WiFi connecting");

while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}

Serial.println();
Serial.println("Connected!");

Serial.print("IP Address: ");
Serial.println(WiFi.localIP());

// URL登録
server.on("/", HTTP_GET, handleRoot);
server.on("/led/on", HTTP_GET, handleLedOn);
server.on("/led/off", HTTP_GET, handleLedOff);

server.begin();

Serial.println("Web server started");
}


void loop()
{
server.handleClient();
}


2026年8月13日木曜日

pico-sdk and pico-sdk-examples ウブンツで成功

https://zenn.dev/askua/articles/05e143091c150c :: tinygo for pico

 https://gihyo.jp/admin/serial/01/ubuntu-recipe/0684 :: pico-sdk and pico-sdk-examples


2026年8月10日月曜日

Arduino UnoでSPI通信 温度センサADT7310

https://independence-sys.net/main/?p=3804 より参照
Arduino Unoとは以下のように接続します。
ADT7310 – Arduino 3.3vでもうごくのでラズピコでもOK
CS – Pin10 SS(CS)     chip select マイナス論理
SDI – Pin11 MOSI      sdi:   serial data in
SDO – Pin12 MISO sdo: serial data out
SCL – Pin13 SCK        scl:   serial clock line
VDD – 5V
GND – GND
Arduino UnoのMISO(Master In Slave Out)端子は、SPI通信でセンサー(スレーブ)からデータを受け取る(読み込む)ための入力端子 MOSIはMaster Out Slave Inの略で、
Arduino(マスター)からセンサや周辺機器(スレーブ)へデータを送信(出力)するための端子です。つまりtx,rxのようなクロス結合となっている。I2CはDaisy Chainで全然ちがう。

#include <SPI.h>
 
/*
 * ADT7310での温度データ取得
 * ADT7310 - Arduino
 *  CS  - Pin10 SS(CS)
 *  SDI - Pin11 MOSI
 *  SDO - Pin12 MISO
 *  SCL - Pin13 SCK
 *  VDD - 5V
 *  GND - GND
 */
 
int SSPin = 10; // Pin10をSS
  
// 初期化
void setup(void) {
  pinMode(SSPin, OUTPUT);
  Serial.begin(9600);
  // 以下の3行は呪文やな
  SPI.setBitOrder(MSBFIRST);  //最上位ビット(MSB)から送信
  SPI.setClockDivider(SPI_CLOCK_DIV128); //通信速度を遅く設定
  SPI.setDataMode(SPI_MODE0); //CPOL(クロック極性):0 CPHA(クロックフェーズ):0
 
  SPI.begin();
  
  SetSSPin(LOW); // マイナス論理、0の間だけ通信可能となる
// 本プログラムではループしつづけるのでSetSSPin(High)は不要
 
  //ソフトウェアリセット
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
     
  SPI.transfer(0x54);    // 測定開始(continuously read)
  delay(500);            // 仕様上は、240msで開始
}
  
// メインループ
void loop(void) {
  uint16_t uiVal;
  float fVal;
  int iVal;
  
  uiVal = (uint16_t)SPI.transfer(0) << 8;  // AD変換値 上位
  uiVal |= SPI.transfer(0);                // AD変換値 下位
 
  uiVal >>= 3;                          // シフトで13bit化  
  //uiVal = 0x1fff; //確認テスト用
  
  if(uiVal & 0x1000) {               // 13ビットで符号判定
    iVal = uiVal - 0x2000;         // マイナスの時 (10進数で8192)
  }
  else{
    iVal = uiVal;                 //プラスの時
  }
   
  fVal = (float)iVal / 16.0;           // 温度換算(摂氏)
  Serial.println(fVal, 4);             // シリアル送信
   
  delay(5000);          //例として5秒待つ
}
 
/*
 * SSピンの設定
 * Lowでマスタからの通信が有効(セレクト)
 * (Highではマスタから通信出来ない(無視される)セレクト解除の状態)
 */
void SetSSPin(int val)
{
    digitalWrite(SSPin, val);
}