제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
| ||||
|
이 프로젝트를 통해 MKR1000으로 데이터를 처리하고 해당 데이터를 WiFi를 통해 클라우드의 Google 스프레드시트로 보낼 수 있습니다. 이 프로젝트는 신용 카드 가입이나 독점 블랙박스 API를 사용하지 않고도 수행할 수 있습니다. 이 특정 예에서는 저렴하고 유비쿼터스한 DHT11 환경 센서를 사용하지만 원하는 센서나 장치에 대해 포함된 Arduino 코드를 쉽게 변경할 수 있습니다. 이 프로젝트는 그래픽 차트 작성을 위해 DHT11 데이터를 Thingspeak.com에 업로드하는 관련 프로젝트 중 하나와 스케치에서 쉽게 결합할 수 있다는 점을 지적하는 것이 좋습니다.
이것은 네 부분 중 첫 번째 부분입니다. 프로젝트의 첫 번째 부분에서는 포함된 Google 앱 스크립트 코드를 사용하여 Wi-Fi 데이터를 허용하도록 자체 Google 시트를 설정하고 구성합니다.
1부:Google 시트 생성 및 배포
1. 무료 Google 이메일이 없다면 가입하십시오.
2. 무료 Google 계정에 로그인하고 새 "Google 시트"를 만듭니다. 이 스프레드시트는 WiFi를 통해 DHT의 센서 값으로 채워집니다. 이 시점에서 스프레드시트 URL 키를 복사하고 저장해야 합니다. 이 키는 새 스프레드시트의 "/d/"와 "/edit" 사이의 URL에 나열됩니다(파란색 원 참조).
3. 스프레드시트의 이름을 "환경 데이터"와 같이 원래 이름으로 지정합니다. 이제 데이터를 처리하고 스프레드시트를 올바르게 채울 Google 앱 스크립트(JavaScript와 유사)를 만들어야 합니다. Google App Script를 삽입하기 위해 먼저 스프레드시트에서 스크립트 편집기로 이동합니다.
도구 →스크립트 편집기
이제 Google Script Editor 페이지가 나타납니다. 이제 Gscript의 이름을 "My Environmental GScript"와 같이 독창적인 이름으로 지정할 수 있습니다. 이 시점에서 스크립트 편집기 페이지에서 할 일이 4가지 남았습니다.
A) 포함된 Google 스크립트 코드를 복사하여 편집기에 붙여넣습니다.
B) 이전에 저장한 스프레드시트 URL 키(2단계)를 복사하여 Google Script 코드의 올바른 줄(따옴표 사이)에 붙여넣습니다. 여기서
<사전><코드>var 아이디 =' '; // 스프레드시트 IDC) 스크립트 저장:파일→모두 저장
D) 웹 앱으로 배포:게시-→ 웹 앱으로 배포…
4. Google 시트 설정을 위한 마지막 단계에는 웹 배포 매개변수 구성이 포함됩니다. 이 모든 필드를 올바르게 설정하는 것이 중요합니다. 4개의 필드를 모두 정확하게 설정하지 않으면 스프레드시트가 제대로 작동하지 않습니다.
필드 1) "현재 웹 앱 URL: 복사 및 저장 " 방금 생성된 것이므로 나중에 PushingBox에서 API를 구성할 때 필요합니다.
필드 2) 프로젝트 버전을 "new로 저장 " 각 반복에서 작성하는 각 스크립트 개정에 대해 새 프로젝트 버전을 만들지 않으면(수정을 수행하기로 결정한 경우) 스크립트 개정이 웹에서 업데이트되지 않는다는 점에 유의하는 것이 중요합니다. 이는 직관적이지 않고 무시하기 쉽지만 현재 Google에서 이 시스템을 구성한 방식입니다.
필드 3) “다음으로 앱 실행
:
<코드> 코드> " "me(여기에 Gmail)
로 설정하세요. ".
필드 4) “앱에 대한 액세스 권한이 있는 사용자
:
" 이것을 "모든 사람, 심지어 익명
으로 설정 ."
2부:PushingBox 구성
Pushingbox.com은 DHT 데이터가 Google 스프레드시트에 적합하도록 하는 간단하고 무료이며 쉬운 API 중개자 역할을 합니다. PushingBox API 중개자를 사용해야 하는 것은 HTTP 전송 데이터를 Google 호환 HTTPS 암호화 데이터로 변환하는 것입니다. 표준 요구 사항을 충족하기 위해 간단한 암호화 알고리즘을 만들 수 있지만 PushingBox를 사용하는 것이 더 쉽고 하루에 최대 1,000개의 요청이 무료로 제공됩니다. 또한 자체 매개변수를 입력할 수 있지만 사용자 지정에 대한 제어가 거의 없고 기능이 실제로 어떻게 작동하는지 전혀 알 수 없는 "블랙 박스" API를 처리할 필요가 없습니다. 다음은 데이터와 함께 작동하도록 Pushingbox를 구성하는 단계입니다.
1. Gmail을 사용하여 PushingBox 계정을 만드십시오.
2. 상단의 "내 서비스"를 클릭하십시오.
3. "내 서비스"에서 "서비스 추가" 상자로 이동하여 "서비스 추가"를 클릭합니다.
4. 생성하려는 서비스는 서비스 목록의 마지막 항목이며 이름은 ”CustomURL,
입니다. 나만의 서비스를 설정하세요!
". 이제 이 CustomUrl 서비스를 선택하십시오.
5. 상자가 열리고 세 가지 항목을 요구합니다. 아래와 같이 작성하고 제출을 누르십시오.
CustomURL 구성의 이름:
루트 URL: 이 URL은 으로 시작합니다. https://script.google.com... 1부에서 저장한 Google 스크립트 주소입니다.
방법:
6. 서비스를 제출한 후 이제 서비스에 대한 시나리오를 생성해야 합니다. 이렇게 하려면 페이지 상단의 "내 시나리오"를 선택하십시오.
7. "시나리오 생성 또는 장치 추가" 상자에 시나리오에 적절한 이름을 입력합니다. 서비스 이름을 지정한 후 오른쪽에 있는 "추가" 버튼을 클릭하십시오.
8. 이제 "시나리오에 대한 작업 추가"를 요청합니다. 이제 이전 단계에서 생성한 서비스 이름 옆에 나열된 "이 서비스에 작업 추가" 버튼을 선택해야 합니다. 이렇게 하면 새 시나리오가 새 서비스에 할당됩니다.
9. "Get" 또는 "Post" 방법을 묻는 데이터 상자가 열립니다(직관에 반하는 것처럼 보이지만 Get 방법을 사용합니다). 모든 DHT 데이터(5개 데이터 포인트)를 Google 시트에 기록하려면 Google App Script에 나열된 변수 이름을 Arduino 스케치에 나열된 이름에 연결해야 합니다. Pushingbox API에서 이름 형식을 올바르게 지정하면 이 연결 작업이 완료됩니다. 다음 문자열을 복사하여 상자에 붙여넣습니다.
?humidityData=$humidityData$&celData=$celData$&fehrData=$fehrData$&hicData=$hicData$&hifData=$hifData$
참고: 문은 " 으로 시작합니다. ? "은 "GET"을 나타냅니다.
결과는 다음과 같아야 하지만 고유한 시나리오 이름과 장치 ID 번호가 있어야 합니다.
"DeviceID" 문자열을 복사해야 합니다. 다음 단계의 예비 테스트와 4부의 Arduino 스케치에 모두 필요합니다.
3. API 테스트
웹을 통해 DHT의 데이터를 전송하도록 MKR1000을 프로그래밍하는 마지막 단계로 넘어가기 전에 지금까지 수행한 모든 작업이 올바른지 테스트하는 것이 도움이 될 것입니다. 하드웨어 부분이 완료될 때까지 기다리면 오류의 원인을 추적하기가 더 어려울 수 있습니다. 다행히 지금까지 코드를 테스트하는 간단한 방법이 있습니다. 하드 코딩된 의사 데이터를 웹 브라우저 주소 표시줄에 직접 입력하고 Google 시트가 올바르게 업데이트되고 있는지 확인할 수 있습니다. 다음은 브라우저 주소 표시줄에 복사하여 붙여넣을 수 있는 항목의 예입니다.
http://api.pushingbox.com/pushingbox?devid=(YOUR-DEVID-HERE)&humidityData=33&celData=44&fehrData=111&hicData=22&hifData=77
원하는 경우 후속 행에 대해 다른 값을 사용하여 새로운 가짜 데이터를 다시 입력할 수도 있지만, Pushingbox에서 하루에 1,000개만 요청하므로 미쳐버리지 마십시오! 이 절차로 스프레드시트가 업데이트되지 않은 경우 파트 4를 시도하기 전에 이 지침의 파트 1-3에서 오류가 있는지 검토하십시오.
파트 4
일부 하드 코딩된 의사 데이터를 브라우저에서 Google 시트로 직접 푸시할 수 있는지 확인한 후 이제 Wi-Fi를 통해 Pushingbox를 통해 MKR1000에서 Google 시트로 데이터를 직접 보내는 다음 단계를 수행할 준비가 된 것입니다. 포함된 Arduino 스케치를 MKR1000에 업로드하고 실행하기 전에 다음 세 단계를 완료해야 합니다.
하드웨어
1. MKR1000을 DHT에 연결하기:이것은 특히 MKR1000을 사용하는 경우에 간단한 작업입니다. 5v로 표시된 MKR1000에서 사용할 수 있는 5V로 DHT에 전원을 공급하는 것이 좋습니다. 아마도 DHT는 3.3v에서 작동할 수 있지만 더 낮은 전압에서 신뢰할 수 있는 DHT 판독값을 찾지 못했습니다. DHT에서 MKR1000으로 데이터를 입력하기 위해 여러 핀을 사용할 수 있지만 제 스케치에서는 핀 5를 사용합니다. 핀 D5에 매핑되는 항목 보드 상단의 MKR1000에 있습니다.
소프트웨어(1)
2. MKR1000과 함께 작동하도록 Arduino IDE를 설정하는 몇 가지 단계가 있습니다. 이 단계에는 두 개의 라이브러리를 다운로드하고 올바른 MRK1000 보드 패키지(도구-->보드-->보드 관리자)를 사용하여 Arduino IDE(1.6.4 이상)를 구성하는 작업이 포함됩니다. 많은 분들이 필요한 모든 소프트웨어를 이미 설치하셨을 것입니다. 그렇지 않은 분들을 위해 필요한 라이브러리와 MKR1000 보드 지원 패키지를 검색할 수 있는 링크가 아래에 있습니다. 또한 최신 MKR1000 보드 지원 패키지가 제대로 작동하지 않아 이전 버전의 MKR1000 보드 패키지를 사용해야 했습니다. 나는 당신이 이 글을 읽을 때 이 문제가 해결되기를 바랍니다.
https://www.arduino.cc/en/Reference/WiFi101
스케치에 필요한 두 개의 라이브러리:
<울>소프트웨어(2)
3. 이제 프로젝트의 마지막 단계를 위한 준비가 되었습니다. 포함된 Arduino 스케치를 복사하여 붙여넣고 장치에 맞게 사용자 정의한 다음 스케치를 MKR1000에 업로드해야 합니다. 스케치는 또한 9600 보드에서 직렬 출력을 중계하므로 WiFi를 통해 전송되는 데이터를 모니터링할 수 있습니다. 사용자 정의해야 하는 Arduino 스케치의 세 가지 필드는 다음과 같습니다.
A) WiFi 이름
B) WiFi 비밀번호
다) 귀하의 푸싱박스 기기 ID(분할)
그게 다야, 당신은 끝났어! 모든 것이 올바르게 완료되면 출력이 아래 그림과 같이 보일 것입니다.
이 프로젝트가 구축된 대부분의 소프트웨어 구성 요소를 구축한 모든 사람들에게 감사합니다. 적절한 속성을 위해 코드 주석에 이름을 나열했습니다. 자신만의 마법을 만드는 데 필요한 이 프로젝트의 모든 부분을 자유롭게 사용하십시오.
-SDB
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">//--------------------- --------------------------//이 스케치는 Adafruit DHT 센서와 dht.h 라이브러리용 tdicola에서 결합됩니다.// https://learn .adafruit.com/dht/overview// https://gist.github.com/teos0009/acad7d1e54b97f4b2a88//other 작성자 Arduino 및 관련 Google Script://Aditya Riska Putra//Ahmed Reza Rafsanzani//Ryan Eko Saputro// 참조:http://jarkomdityaz.appspot.com/////ELINS UGM////MKR1000용 Hackster.io 프로젝트 수정 // Stephen Borsay(Portland, OR, USA)//Since Arduino https를 사용할 수 없습니다. //Google 스크립트(https 사용)를 실행하려면 Pushingbox API(http 사용)를 사용해야 합니다. 또는 Ivan의 SecureWifi 암호화를 사용합니다.#include#include "DHT.h#define DHTPIN 5 // 어떤 핀에 연결했는지, pin1은 끝에서 5번째 핀입니다.// 사용 중인 DHT 센서 유형의 주석 처리를 제거합니다. !#define DHTTYPE DHT11 // DHT 11//#define DHTTYPE DHT21 // DHT 21//#define DHTTYPE DHT22 // DHT 22DHT dht(DHTPIN,DHTTYPE);const char WEBSITE[] ="api.pushingbox.com"; //pushingbox API serverconst String devid ="YOUR_DEVICEID"; //우리 시나리오에 대한 Pushingbox의 장치 ID char* MY_SSID ="YOUR SSID";const char* MY_PWD ="YOUR WiFi PASSWORD";int status =WL_IDLE_STATUS;// DNS를 사용하지 않으려면(그리고 스케치를 줄이세요) size)// server://IPAddress의 이름 대신 숫자 IP를 사용하십시오. server(74,125,232,128); // Google의 숫자 IP(DNS 없음)void setup() { //시리얼을 초기화하고 포트가 열릴 때까지 기다립니다. Serial.begin(9600); 동안 (! 직렬) {; // 직렬 포트가 연결될 때까지 기다립니다. 기본 USB 포트에만 필요 } // 쉴드가 있는지 확인:if (WiFi.status() ==WL_NO_SHIELD) { Serial.println("WiFi shield not present"); // 계속하지 않음:while(true); } // Wifi 네트워크 연결 시도:while (status !=WL_CONNECTED) { Serial.print("Attempting to connect to SSID:"); Serial.println(MY_SSID); //WPA/WPA2 네트워크에 연결합니다. 개방형/WEP 네트워크를 사용하는 경우 이 줄을 변경합니다. status =WiFi.begin(MY_SSID, MY_PWD); // 연결을 위해 10초 대기:delay(10000); } Serial.println("와이파이에 연결되었습니다"); printWifiStatus(); }void loop() { // 측정 사이를 기다립니다. 지연(10000); //플로트 사용을 선호하지만 패키지 크기 또는 부동 소수점 변환이 작동하지 않습니다. //문자열 함수 또는 부동 소수점 변환 기능으로 향후 수정될 예정입니다. int HumidityData =dht.readHumidity(); // 온도를 섭씨로 읽습니다(기본값) int celData =dht.readTemperature(); // 온도를 화씨로 읽습니다(isFahrenheit =true) int fehrData =dht.readTemperature(true); // 읽기가 실패했는지 확인하고 일찍 종료합니다(다시 시도하기 위해). if (isnan(humidityData) || isnan(celData) || isnan(fehrData)) { Serial.println("DHT 센서에서 읽지 못했습니다!"); 반품; } // 화씨로 열 지수를 계산합니다(기본값) int hifData =dht.computeHeatIndex(fehrData, 습도데이터); // 섭씨로 열 지수 계산(isFahreheit =false) int hicData =dht.computeHeatIndex(celData, 습도Data, false); Serial.print("습도:"); Serial.print(습도 데이터); Serial.print(" %\t"); Serial.print("온도:"); Serial.print(celData); Serial.print(" *C "); Serial.print(fehrData); Serial.print(" *F\t"); Serial.print("열지수:"); Serial.print(hicData); Serial.print(" *C "); Serial.print(hifData); Serial.println(" *F\n");Serial.println("\n서버로 데이터 보내기..."); // 연결되면 serial:WiFiClient 클라이언트를 통해 다시 보고합니다. //WiFi 개체 인스턴스화, 여기에서 범위 지정 가능 devid + "&humidityData=" + (문자열) 습도데이터 + "&celData=" + (문자열) celData + "&fehrData=" + (문자열) fehrData + "&hicData=" + (문자열) hicData + "&hifData=" + (문자열) 하이데이터 ); // HTTP 1.1은 지속적인 연결을 제공하여 일괄 요청을 허용합니다. // 또는 출력 버퍼로 파이프라인됩니다. client.println(" HTTP/1.1"); client.print("호스트:"); client.println(웹사이트); client.println("사용자 에이전트:MKR1000/1.0"); //MKR1000의 경우 esp8266과 달리 연결을 닫지 마십시오. client.println(); Serial.println("\n데이터 전송"); }}void printWifiStatus() { // 연결된 네트워크의 SSID를 인쇄합니다. Serial.print("SSID:"); Serial.println(WiFi.SSID()); // WiFi 실드의 IP 주소를 인쇄합니다. IPAddress ip =WiFi.localIP(); Serial.print("IP 주소:"); 직렬.println(ip); // 수신된 신호 강도를 출력합니다. long rssi =WiFi.RSSI(); Serial.print("신호 강도(RSSI):"); Serial.print(rssi); Serial.println("dBm");}
//--------------------------를 사용하고 있습니다. ----------------------//Mogsdad@Stackoverflow에 의해 원래 게시됨//jarkomdityaz.appspot.com용으로 수정됨//Stephen Borsay가 Hackster.io용으로 수정함// -----------------------------------------------/*가져 오기 쿼리 요청:https://script.google.com/macros/s//exec?celData=data_here----------------------- ----------------------------------------------- GScript, PushingBox 및 Arduino/ESP8266 변수 순서:humidityDatcelDatafehrDatahicDatahifData---------------------------------------- -----------*//* 스프레드시트 API 사용 */function doGet(e) { Logger.log( JSON.stringify(e) ); // 매개변수 보기 var result ='Ok'; // 성공으로 가정 if (e.parameter ==undefined) { result ='매개변수 없음'; } else { var id =' PushingBox URL 문자열(HTTPS 글루용)HTML
이것은 정확히 동일한 이름으로 Google 스프레드시트로 전송되는 Arduino/MKR1000 변수 이름을 연결하는 문자열입니다. PushingBox를 보안으로 사용하여 중개자 RESTfully.?humidityData=$humidityData$&celData=$celData$&fehrData=$fehrData$&hicData=$hicData$&hifData=$hifData$섹션>맞춤형 부품 및 인클로저
기타 데이터
기타 무선https://github.com/sborsay/Arduino_Wireless회로도
형세
제조공정
이 Arduino 자습서에서는 Arduino 보드와 처리 개발 환경을 사용하여 이 멋진 레이더를 만드는 방법을 보여 드리겠습니다. 자세한 내용은 다음 동영상을 보거나 아래에 작성된 튜토리얼을 참조하세요. 개요 이 Arduino 프로젝트에 필요한 것은 물체를 감지하기 위한 초음파 센서, 센서를 회전시키기 위한 작은 취미 생활자 서보 모터 및 이를 제어하기 위한 Arduino 보드뿐입니다. 다음 동영상을 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다.[/column] 이 Arduino 프로젝트에 필요한 구성요소 다음 사이트에서
Arduino 직렬:Arduino를 통한 직렬 통신 직렬 통신의 배경: 마이크로 컨트롤러 또는 마이크로 프로세서가 외부 세계와 통신해야 할 때 데이터를 8비트 패킷 형태로 제공하므로 한 시스템이 다른 시스템과 통신해야 하는 경우 총 8선 케이블이 사용되며 항상 그런 것은 아닙니다. 장거리 여행 시 신호가 왜곡되기 때문에 실용적인 솔루션입니다. 그것은 또한 8선 묶음의 높은 비용 때문에 비싸다 이 프로토콜은 새로운 프로토콜의 필요성이 각성된 이후에 병렬 통신으로 명명되었으며 설계자는 직렬 프로토콜로 명명된 새로운 프로토콜을 도입하여