温度ã»ã³ãµã¼ãS-5851Aãã®è¨æ¸¬å¤ãESP8266ã§Ambientã«éä¿¡ãã
ç§æé»åã§è²©å£²ããã¦ãããS-5851A使ç¨2ã¯ã¤ã¤ãã¸ã¿ã«æ¸©åº¦ã»ã³ãµã¢ã¸ã¥ã¼ã«ã ã§è¨æ¸¬ãã温度ããAmbientãã«éä¿¡ãã¦ã°ã©ãåãã¦ã¿ã¾ããã
ã¯ããã«
ESP8266ã®ã¹ã±ããã®æ¸ãè¾¼ã¿æé ãªã©ã¯è¨è¼ãã¦ãã¾ãããåãã¦ä½¿ç¨ããå ´åã¯æ¬¡ã®è¨äºãããããã§ãã
- ESPr Developer ( ESP-WROOM-02 éçºãã¼ã )ã®ä½¿ãæ¹ãã¶ãã¨ç´¹ä» | mgo-tecé»åå·¥ä½
- ESP8266, ESP-WROOM-02, ESPr Developer ãã©ãã«ã·ã¥ã¼ãã£ã³ã°ã¾ã¨ã | mgo-tecé»åå·¥ä½
Ambientã®ç»é²æé ãªã©ã¯è¨è¼ãã¦ãã¾ãããå ¬å¼ã®æé ãåèã«ãã¦ãã ããã
使ç¨ããç©
- S-5851A使ç¨2ã¯ã¤ã¤ãã¸ã¿ã«æ¸©åº¦ã»ã³ãµã¢ã¸ã¥ã¼ã« (ç§æé»å)
- ESPr Developer (ã¹ã¤ãããµã¤ã¨ã³ã¹, Amazon.co.jp)
- æµæå¨
- 10kΩ x 2å
- 200Ω x 2å (500Ω以ä¸ã§ããã°ä»ã®æµæå¤ã§ããã)
- ã³ã³ãã³ãµ
- 0.1μF x 1å
- ã¸ã£ã³ãç·
使ç¨ããã½ããã¦ã§ã¢ãWebãµã¼ãã¹
ãS-5851A使ç¨2ã¯ã¤ã¤ãã¸ã¿ã«æ¸©åº¦ã»ã³ãµã¢ã¸ã¥ã¼ã«ãã«ã¤ãã¦
SII Semiconductor社ã®S-5851Aã¨ãã温度ã»ã³ãµã¼ããã¬ãããã¼ãã§æ±ããããã«å®è£ ãããã¢ã¸ã¥ã¼ã«ã§ããä¾¡æ ¼ã100ååå¾ã¨ãæé ã§ãã
S-5851ã®ç«¯åããã¬ãããã¼ãã«åãããã«ãããå¤æããã¦ããã ããªã®ã§ã次ã®ãããªé ç·ãè¡ãå¿ è¦ãããããã®è¨äºã«ä¾ãè¨è¼ãã¦ãã¾ãã
- I2Céä¿¡ã®SDAãSCLã®ãã«ã¢ããæµæ
- S-5851Aç¹æã®I2Cã¢ãã¬ã¹è¨å®ç¨ã®ãã³ã®é ç·
æµæå¨ã®æµæå¤ãã³ã³ãã³ãµã®å®¹éå¤ã¯ä¸è¨ã®ãã¼ã¿ã·ã¼ããåèã«ãã¾ããã
- è±èª: http://datasheet.sii-ic.com/en/temperature_sensor/S5851A_E.pdf
- æ¥æ¬èª: http://datasheet.sii-ic.com/jp/temperature_sensor/S5851A_J.pdf
ãESPr Developerãã«ã¤ãã¦
ã¹ã¤ãããµã¤ã¨ã³ã¹ç¤¾ã販売ãã¦ããESP8266(ESP-WROOM-02)ã®éçºç¨ãã¼ãã§ãã
ãã®è¨äºã§ESP8266ã¨è¨è¿°ãã¦ããç®æã¯ESPr Developer以å¤ã®ãã¼ãã§ãåæ§ã«åèã«ãã¦ããããã¨æãã¾ãã
é ç·ãã
1. é»æºã¾ããã®é ç·
ESP8266ã®3.3Vã®ãã³ã¨ãã¬ãããã¼ãã®+ã®ã©ã¤ã³ãæ¥ç¶ãGNDã®ãã³ã¨-ã®ã©ã¤ã³ãæ¥ç¶ãã¾ããS-5851ãã¡ãããã¨ç½®ãã¦ããã¾ãã
2. S-5851Aã¨é»æºã¾ããã®é ç·
S-5851Aã®ãã³ãæ¥ç¶ãã¾ãã
S-5851Aã®ãã³ã®å称ã¯æ¬¡ã®ããã«ãªã£ã¦ãã¾ãã
ãã®æç¹ã§ã®ãã³ãã¨ã®æ¥ç¶å ã¯ä»¥ä¸ã§ãã
S-5851Aã®ãã³ | æ¥ç¶å | åè |
---|---|---|
VDD | 3.3Vã¨GND | 3.3Vã«ã¯ã¸ã£ã³ãç·ã使ç¨ãã¦æ¥ç¶ãGNDã«ã¯ã³ã³ãã³ãµ(1μF)ã使ç¨ãã¦æ¥ç¶ |
VSS | GND | ã¸ã£ã³ãç·ã使ç¨ãã¦æ¥ç¶ |
SDA | 3.3V | æµæå¨(10kΩ)ã使ç¨ãã¦æ¥ç¶ |
SCL | 3.3V | æµæå¨(10kΩ)ã使ç¨ãã¦æ¥ç¶ |
AD0 | GND | æµæå¨(200Ω)ã使ç¨ãã¦æ¥ç¶ |
AD1 | GND | æµæå¨(200Ω)ã使ç¨ãã¦æ¥ç¶ |
3. ãããã«SDAã¨SCLã®é ç·
次ã®ããã«S-5851Aã®SDAã¨SCLãã³ãESP8266ã«æ¥ç¶ãã¾ãã
SDAã¨SCLãã³ã«ã¤ãã¦ãS-5851Aã¨ESP8266ã®ãã³ã®å¯¾å¿ã¯ä»¥ä¸ã§ãã
S-5851Aã®ãã³ | ESP8266 |
---|---|
SDA | IO14 |
SCL | IO15 |
è¨æ¸¬å¤ãèªã¿åã£ã¦ã¿ã
1. S-5851Aã®ã©ã¤ãã©ãªãã¤ã³ã¹ãã¼ã«
Arduino IDEã«S-5851Aã®ã©ã¤ãã©ãªãã¤ã³ã¹ãã¼ã«ãã¾ãã
次ã®ãªã³ã¯ããææ°çã®zipãã¡ã¤ã«ããã¦ã³ãã¼ããã¦æåã§ã¤ã³ã¹ãã¼ã«ãããã
Arduino IDEã®ã©ã¤ãã©ãªããã¼ã¸ã£ããã¤ã³ã¹ãã¼ã«ãã¦ãã ããã次ã®ããã«ã©ã¤ãã©ãªããã¼ã¸ã£ãã"S5851A"ã§æ¤ç´¢ããã¨è¦ã¤ããã¾ãã
2. ã¹ã±ããã®æ¸ãè¾¼ã¿
次ã®ã¹ã±ãããæ¸ãè¾¼ã¿ã¾ãã
#include <S5851A.h> #include <Wire.h> // I2Cã®ã¢ãã¬ã¹ã0x48ã«è¨å®(AD0ã¨AD1ãã³ã®æ¥ç¶å ã«ãã£ã¦å¤ãã) S5851A sensor(0x48); void setup() { Serial.begin(9600); Wire.begin(); // S-5851Aã®ãªã»ãã if (!sensor.resetByGeneralCall()) { // 失æ // é ç·ãééã£ã¦ãããããããªã Serial.println("failed: reset by general call"); while(1) { delay(100); }; } delay(100); } void loop() { // 1ç§ééã§æ¸©åº¦ãåºåãã // S-5851Aãã温度ãèªã¿åã if (sensor.update()) { // 温度ã®ææ°ã®å¤ãåºå(ä¾: 26.0) double tempC = sensor.getTempC(); Serial.println(tempC); } else { // 失æ // é ç·ãééã£ã¦ãããããããªã Serial.println("failed: update"); } delay(1000); }
3. åä½ç¢ºèª
ã·ãªã¢ã«ã¢ãã¿ã«æ¬¡ã®ããã«åºåããã¦ããã°é ç·ã«ãåé¡ããã¾ããã
身è¿ã«ããé»åæè¨ãªã©ã«è¡¨ç¤ºããã¦ãã室温ã¨æ¯è¼ãã¦ã¿ã¦ãã ãããç§ãèªå®¤ã§ä½¿ç¨ãã¦ããã»ã¤ã³ã¼ã®æè¨ã®è¡¨ç¤ºããã2âãããã®é«ãã£ãã§ãã
Ambientã«è¨æ¸¬å¤ãéä¿¡ãã
1. ãã£ã¼ãã追å ãã
Ambientã®Myãã£ãã«ã®ãã¼ã¸ã§é©å½ãªãã£ãã«ãä½æãã次ã®ãããªè¨å®ã§ãã£ã¼ãã追å ãã¾ãã
追å ããã¨æ¬¡ã®ãããªãã£ã¼ãã表示ããã¾ããè¨æ¸¬å¤ãéä¿¡ããã¨ããã«æç»ããã¾ãã
2. Ambientã®ã©ã¤ãã©ãªãã¤ã³ã¹ãã¼ã«
Arduino IDEã«Ambientã®ã©ã¤ãã©ãªãã¤ã³ã¹ãã¼ã«ãã¾ãã
ã©ã¤ãã©ãªã®ã¤ã³ã¹ãã¼ã«æ¹æ³ã¯æ¬¡ã®è¨äºã®éä¸ã§è©³ãã解説ããã¦ãã¾ãã
3. ã¹ã±ããã®æ¸ãè¾¼ã¿
次ã®ã¹ã±ããã®ãSSIDããããã¹ã¯ã¼ãããããã£ãã«IDãããã©ã¤ããã¼ããå¤æ´ãã¦ãããESP8266ã«æ¸ãè¾¼ãã§ãã ããã
#include <Wire.h> #include <ESP8266WiFi.h> #include <Ambient.h> #include <S5851A.h> // ESP8266ãæ¥ç¶ããWi-Fiã¢ã¯ã»ã¹ãã¤ã³ãã®è¨å® const char* ssid = "SSID"; const char* password = "ãã¹ã¯ã¼ã"; // Ambientã®ãã£ãã«è¨å® unsigned int channelId = ãã£ãã«ID; const char* writeKey = "ã©ã¤ããã¼"; S5851A sensor(0x48); WiFiClient client; Ambient ambient; void setup() { Serial.begin(9600); Wire.begin(); if (!sensor.resetByGeneralCall()) { Serial.println("failed: reset by general call"); while(1) { delay(1); }; } delay(100); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.println("."); } Serial.println("Wi-Fi connected"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); ambient.begin(channelId, writeKey, &client); } void loop() { // 10ç§ééã§æ¸©åº¦ãAmbientã«éä¿¡ if (sensor.update()) { double tempC = sensor.getTempC(); Serial.println(tempC); ambient.set(1, tempC); ambient.send(); } else { // é信失æ // é ç·ãééã£ã¦ãããããããªã Serial.println("failed: update"); } delay(10000); }
4. åä½ç¢ºèª
1åã»ã©å¾ ã£ã¦ããAmbientã®ãã£ã¼ãã®ãã¼ã¸ã表示ããã¨æ¬¡ã®ããã«ã°ã©ãã確èªã§ãã¾ãã