튜토리얼 영상
NodeMCU 회로 구성
NodeMCU를 이용해 다음과 같이 회로를 구성한다. 센서 역할을 하는 가변저항을 연결한다. 
스프레드시트 연결
구글 스프레드시트를 만들고, 도구메뉴 스크립트 편집기에서 다음과 같이 스크립트를 추가한다.
function doGet(e) 
{
  var mo = e.parameter.func;
  if(mo == "addData")
  {
    var stat = add_data(e);
    if(stat == 1)
    {
      var result = 
      {
        status : true
      };
      return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
    }
  }
}
function add_data(e)
{
  var sheet = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/182EnOR4vF5eVs4wGD-zOn7pKy_6BMpED8ApjIGh0C9Q/edit#gid=0');
  var lastVal = sheet.getRange("A1:A").getValues();
  var id = lastVal.filter(String).lenght;
  var CurrentDate = new Date();
  var Date_ = Utilities.formatDate(CurrentDate, "IST", "dd/MM/YYYY");
  var Time_ = Utilities.formatDate(CurrentDate, "IST", "HH:mm:ss");
  sheet.appendRow([id, Date_, Time_, e.parameter.val]);
  return 1;
}
게시>웹 앱으로 배포 메뉴를 실행하고, 모두 접근 가능한 권한으로 배포한다.NodeMCU 코딩
NodeMCU에 다음과 같이 코딩한다. 단, 코드에서 url 은 앞서 배포된 웹 앱 링크 주소로 변경해야 한다.
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
const char *ssid = "SERVER NAME"; 
const char *password = "SERVER PASSWORD";  
const char* host = "script.google.com"; 
const char* fingerprint = "89 ff f4 0f 4d 98 09 ed e3 ef 95 f2 8a af af 22 89 08 ac 03";
String url;
void setup() 
{
  Serial.begin(115200);
  delay(100);
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  
  WiFi.begin(ssid, password); 
  while (WiFi.status() != WL_CONNECTED) 
  {
    delay(500);
    Serial.print(".");
  }
 
  Serial.println("");
  Serial.println("WiFi connected");  
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  Serial.print("Netmask: ");
  Serial.println(WiFi.subnetMask());
  Serial.print("Gateway: ");
  Serial.println(WiFi.gatewayIP());
}
void loop() 
{
  Serial.print("connecting to ");
  Serial.println(host);
 
  WiFiClientSecure client;
  const int httpPort = 443;
  if (!client.connect(host, httpPort)) 
  {
    Serial.println("connection failed");
    return;
  }
  float t = analogRead(A0);
  
  url = "/macros/s/AKfycbyvGjcryd7c5uNeX6dkleZhmjDKyTrs1L9Lf3kWlPhTZDn9JPrH/exec?func=addData&val="+ String(t);
  Serial.print("Requesting URL: ");
  Serial.println(url);
  
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" + 
               "Connection: close\r\n\r\n");
  delay(500);
  String section="header";
  while(client.available())
  {
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
  Serial.println();
  Serial.println("closing connection");
  delay(6000);
}
코드를 업로드하여 실행하면, 약 6초마다 NodeMCU에서 읽은 데이터가 스프레드시트에 업데이트되는 것을 확인할 수 있다.레퍼런스

계속 접속불능이 뜨는데요, 이유를 알수가 없습니다.
답글삭제SSID, PWD, 네트워크, 회로 연결 등을 차례대로 체크해 보시면 원인 알 수 있을 겁니다.
삭제안녕하세요? 한글을 데이터로 넘기고 싶은데, 깨지네요.
답글삭제중간에 charset=UTF-8을 넣어 보내 봐도 소용 없는데 혹시 방법을 아시는지요?
아니면, Post로 하면, default UTF-8 이므로 Post로 보내도 될것 같은데, 서버에서 Post로도 받는지요? post인 경우 위 코드들을 어떻게 수정 해 줘야 할지요?
한글을 넘기고 싶은데, 안되네요
아두이노에서 서버로 한글을 넘기는 지, 아니면, 반대의 경우인지를 몰라서, 일단 관련된 링크 남깁니다.
삭제https://practicalarduinoc.blogspot.com/2019/10/unicode-output-from-arduino.html