今回は、マニアックを極めた内容です。

ARM-Firstのボード用に、ちょっと凝ったWebサーバーのサンプルコードを作ってみました。

ボード上に載っている気圧・温度のセンサーチップ※からデータを読み出して、ブラウザーから閲覧できる様なコードです。

 

せっかくなので気圧の単位について

圧力の大きさとしては、かつてのミリバール (英: millibar、mbar) すなわち1/1000バールと等しい。

標準大気圧は、

  • 1 気圧(標準大気圧)(atm)
  • = 1.01325 bar
  • = 1013.25 mbar
  • = 1013.25 hPa
  • = 101325 Pa

と定義されています。

ミリ:m右差し1/1000

ヘクト:h右差し100

Pa:パスカル

 

キロ キロ と ヘクト 出(da)掛けた メートルが デシ に追われて センチ ミリ ミリ

上差しなんか懐かしいですね。突然思い出しました。

メートル法などの単位を、覚える「暗唱ことば」です。

暗唱の言葉に出てくるのは、「k、h、da、m、d、c、m」ですね。OK

da(10)とかd(1/10)ってほぼ、使いませんね。

 

※ STマイクロエレクトロニクス LPS22HB

下差しRakuten MiniからWi-Fi経由でブラウズしている様子

/************************************************************************
*   
*  FILE              :Web_Server_Test091.c 
*  DATE             :2021/2/18
*  DESCRIPTION :ARM-First DEMO PROGRAM Press. & Temp.  
*  CPU TYPE      :STM32F405 & ESP8266 w/AT command
*  AUTHOR         :jk1brk
*  NOTE             :Under construction 
*  
************************************************************************/
#include <time.h>
#include <Wire.h>                           // I2C lib. header file
#include <LiquidCrystal.h>
const int rs = PA4, en = PB11, d4 = PC13, d5 = PB8, d6 = PB12, d7 = PC7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
String lcddata[2] = {"",""};

void temp_calc(char *p, char *t) ;            //
void web_server(char *strp, char *strt);    //
void get2str(char *buf);
void lcdprint(String data);
String atout(String data);  
void initWiFi();
uint8_t i2c_mem_write(uint8_t reg, uint8_t addr, uint8_t data);
uint8_t i2c_mem_read(uint8_t count, uint8_t addr, uint8_t reg, uint8_t * buf);
  
String title = "Web Server Test";

void setup() {
  // put your setup code here, to run once:
  delay(1000);
  Serial.begin(115200);
  Wire.begin();             // Start the I2C driver for codec register setup
  lcd.begin(16, 2);
  delay(100);  
  initWiFi();
  // set up web server
  atout("AT+CIPMUX=1");                      
  atout("AT+CIPSERVER=1,80");
  // opening message on LCD
  lcdprint("PRESS & TEMP");           
}

void loop() {
  // put your main code here, to run repeatedly:
  char strp[16];            // Pressure data save area
  char strt[16];            // Temperature data save area

  Serial.println("*****");
  temp_calc(strp, strt);
  web_server(strp, strt);
}
 

ここで使用した各関数は、追々紹介します。

 

TBC

 

【参考記事】