Tautkan Digital Lab NR05 ke Internet of Things



Dalam artikel ini, kami akan menunjukkan bagaimana, berdasarkan pada kit Laboratorium Digital NR05, untuk merakit perangkat yang mengumpulkan data dari sensor suhu dan mengirimkannya ke situs khusus untuk menyimpan dan memproses data tersebut.

Seperti yang telah kami berulang kali catat, kit Laboratorium Digital dari seri Alphabet of Electronics Engineer dimaksudkan tidak hanya untuk mengajarkan prinsip-prinsip pemrograman mikrokontroler dan merancang perangkat elektronik berdasarkan pada mereka, tetapi juga untuk membuat perangkat yang benar-benar selesai dan bermanfaat. Dalam proyek kami, kami akan menggunakan ThingSpeak, sebuah platform terbuka untuk proyek-proyek berdasarkan konsep Internet of Things. Platform ini dirancang untuk mengumpulkan dan memproses data dari berbagai sensor. Fitur utama ThingSpeak adalah:
- pengumpulan data waktu nyata;
- pengolahan data matematika dan statistik;
- visualisasi data.

Platform ThingSpeak memiliki API (Application Programming Interface) yang dikembangkan - antarmuka antara situs dan aplikasi Anda, yang tidak hanya memungkinkan Anda mengirim, menyimpan, dan mengakses data, tetapi juga menyediakan berbagai metode statistik untuk memprosesnya. Sebagai contoh, kami akan mempertimbangkan satu saluran untuk mengumpulkan data, secara total, platform menyediakan hingga 8 saluran untuk setiap pengguna. Dengan data masing-masing saluran, Anda dapat melakukan tindakan terpisah dan menggunakan hasilnya sesuai kebijaksanaan Anda.

Untuk mengakses Internet, kita akan menggunakan modul Wi-Fi berdasarkan chip ESP8266 dengan AT-firmware versi 0.21 . Chip populer ini berfungsi sebagai dasar untuk membangun sejumlah besar modul yang berbeda secara fisik dalam jumlah output, jenis antena, antarmuka USB dan fitur tambahan. Pada prinsipnya, perangkat apa pun yang dibangun berdasarkan ESP8266 adalah perangkat mandiri yang dapat dihubungkan dengan sensor eksternal, tetapi ini merupakan subjek pertimbangan terpisah. Dalam hal ini, kami menggunakan modul hanya sebagai perangkat untuk akses Internet nirkabel, dan kami akan menggunakannya untuk menghubungkan ke titik akses apa pun dan mentransfer data ke ThingSpeak. Daftar semua perintah firmware AT untuk membandingkannya dengan program Arduino dapat ditemukan di sini .

Beberapa kata harus dikatakan tentang cara memeriksa versi firmware dan cara memutakhirkan modul jika versi tidak cocok. Untuk melakukan ini, sambungkan modul ke adaptor USB-UART, misalnya BM8051, dan keluarkan perintah AT + GMR. Jika versi firmware ditampilkan sebagai 0021, maka semuanya beres. Jika tidak, maka ada dua cara: ubah program untuk Arduino sesuai dengan kemungkinan ketidaksesuaian format perintah, atau reflash modul. ESP8266 masalah kilat berpura-pura menjadi artikel yang terpisah, jadi di sini kami tidak akan mempertimbangkannya, tetapi kami menyarankan Anda untuk merujuk ke materi yang diterbitkan di situs dan forum khusus yang didedikasikan untuk modul ini. Sebagai sensor suhu, kami menggunakan sensor DS18B20 yang termasuk dalam kit NR05. Kit tutorial berisi bab tentang menghubungkan dan menggunakan sensor ini, serta contoh pemrograman tentang membaca dan menampilkan pengukuran suhu. Sensor terhubung ke kontak berlabel yang sesuai pada papan ekspansi kit NR05.

Sebagai modul berdasarkan ESP8266, Anda dapat menggunakan beberapa perangkat dari kisaran Master Kit: MP8266-01 , MP8266-03 , MP8266-07 , MP8266-12E , serta MP3508 . Perangkat terakhir adalah papan pengembang dan "diisi" dengan maksimal. Tidak memerlukan stabilizer 3.3V tambahan dan adaptor USB-UART untuk pemrograman - semua ini sudah tersedia.

Untuk modul yang tersisa, adaptor USB-UART mungkin diperlukan untuk flashing jika perlu, tetapi stabilizer 3.3V (misalnya AMS1117) akan diperlukan untuk memastikan, karena sumber tegangan ini di papan Arduino Nano yang termasuk dalam kit NR05 tidak menyediakan arus yang diperlukan untuk catu daya ESP8266.

Bagaimanapun, dalam proyek selesai, kami hanya menggunakan empat output ESP: power, ground, dan RX dan TX untuk berkomunikasi dengan Arduino.

Algoritma umum dari program untuk Arduino adalah sebagai berikut:
- periksa kesiapan ESP;
- jika siap, sambungkan ke titik akses;

(tindakan lebih lanjut diulangi satu menit sekali):
- kami membaca data dari sensor suhu;
- menampilkan suhu saat ini pada indikator kartu ekspansi;
- membuat koneksi ke situs web thingspeak.com;
- Mentransfer suhu saat ini ke saluran yang sesuai dari situs.

Soal teorinya, mungkin cukup. Mari kita lanjutkan berlatih.

Pertama, daftar gratis di thingspeak.com dan dapatkan kunci API sebagai hasil pendaftaran, yang harus digunakan saat mentransfer data ke saluran. Antarmuka situs berubah, sehingga deskripsi kami mungkin sedikit tidak konsisten dalam hal apa yang terlihat di browser. Tetapi secara umum, antarmuka adalah intuitif, jadi seharusnya tidak ada masalah serius saat mendaftar dan membuat saluran baru.
Jadi, setelah mendaftar, buat saluran baru: Channels-My Channels-New Channel. Saluran harus diberi nama dan uraian singkat, serta saluran bisa Privat dan Publik, pilih sendiri. Setelah membuat saluran, Anda dapat melihat kunci API yang diinginkan, kami membutuhkan Kunci Tulis API untuk menulis data ke saluran.

Anda dapat menguji rekaman data dengan memasukkan baris berikut di baris browser:api.thingspeak.com/update?key=yourAPIkey&field1=0
Karakter terakhir dalam string (0) dapat berupa nilai apa pun, itu akan ditulis ke saluran. Setelah menekan Enter, situs akan merespons dengan angka yang sesuai dengan jumlah nilai yang direkam dalam saluran. Perlu diingat bahwa interval minimum antara rekaman adalah 15 detik. Sekarang Anda dapat mentransfer data, membentuk garis serupa di Arduino dan mentransmisikannya menggunakan ESP8266 ke saluran kami.

Diagram koneksi elemen disajikan pada gambar berikut:



Kami menggunakan modul MP8266-07, jadi kami membutuhkan stabilizer dan kapasitor. Juga, untuk pengoperasian modul yang benar, perlu menghubungkan pin GPIO15 ke ground, dan pin CH_PD (pemilihan chip) dengan daya 3.3V. Modul ini dengan yakin menghubungkan bahkan antena internal ke titik akses yang terletak di ruangan yang berdekatan pada jarak sekitar 20 meter.

Daftar sketsa untuk Arduino dengan komentar terperinci:
//
#include <DallasTemperature.h>
#include <OneWire.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
// ,
unsigned long pauseTime = 60000;
//
unsigned long currentTime;
unsigned long previousTime = 0;
// D10 D18B20
// ONE WIRE
#define ONE_WIRE_BUS 10
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// WiFi
#define SSID «»
#define PASS «»
// IP thingspeak.com
#define IP «184.106.153.149»
// GET API thingspeak.com
String GET = «GET /update?key=API&field1=»;
// ESP8266
// AT- ;
// ( AT- v0.21 SDK 0.9.5
// esp8266.ru/esp8266-sdk-0-9-5-v0-21 )
SoftwareSerial esp(11, 12); // RX, TX
// LCD-
LiquidCrystal lcd(A1, A2, A3, 2, 4, 7);

void setup()
{
// :
esp.begin(9600); // - ESP8266 9600
Serial.begin(9600); // - COM- ( )
sensors.begin(); //
lcd.begin(16, 2); // LCD-
lcd.clear();
// ESP8266 AT
Send(«AT»);
delay(1000);
// OK,
if(esp.find(«OK»)){
Serial.println(«ESP8266 Ready: OK»);
connectWiFi();
previousTime = millis() + 2*pauseTime;
}
}

void loop(){
currentTime = millis();
if(currentTime — previousTime > pauseTime) {
//
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
//
char buffer[10];
String temp = dtostrf(tempC, 4, 1, buffer);
// thingspeak.com
updateData(temp);
lcd.setCursor(0,0);
lcd.print(temp);
lcd.print("\xDF"«C»); // \xDF —
previousTime = currentTime;
}
}

// ESP8266 thingspeak.com
void updateData(String data){
// thingspeak.com
String cmd = «AT+CIPSTART=\»TCP\",\"";
cmd += IP;
cmd += "\",80";
Send(cmd);
delay(3000);
if(esp.find(«OK»))
Serial.println(«CONNECT TO IP: OK»);
else
Serial.println(«CONNECT TO IP: Error»);
//
cmd = GET;
cmd += data;
cmd += "\r\n";
esp.print(«AT+CIPSEND=»);
esp.println(cmd.length());
// ESP8266
if(esp.find(">")){
Serial.print(">");
//
esp.print(cmd);
Serial.print(cmd);
if(esp.find(«OK»)) Serial.println(«DATA SEND: OK»);
else Serial.println(«DATA SEND: Error»);
}
else{
Send(«AT+CIPCLOSE»);
if(esp.find(«OK»)) Serial.println(«CONNECTION FOR IP CLOSE: OK»);
else Serial.println(«CONNECTION FOR IP CLOSE: Error»);
}
Serial.println();
}

// ESP8266
void Send(String cmd){
Serial.print(«SEND TO ESP8266: „);
esp.println(cmd);
Serial.println(cmd);
}

// WiFi
boolean connectWiFi(){
esp.println(“AT+CWMODE=1»);
delay(2000);
String cmd=«AT+CWJAP=\»";
cmd+=SSID;
cmd+="\",\"";
cmd+=PASS;
cmd+="\"";
Send(cmd);
delay(5000);
if(esp.find(«OK»)){
Serial.println(«CONNECT TO WIFI: OK»);
return true;
}
else{
Serial.println(«CONNECT TO WIFI: Error»);
return false;
}
}


Semua elemen dirakit, program diluncurkan:



Dan inilah hasil pengukuran di situs seperti:



Grafik pertama menampilkan perubahan suhu dari waktu ke waktu, dan yang kedua adalah histogram yang dibuat oleh alat visualisasi berbasis MatLab yang dibangun ke dalam ThingSpeak yang menampilkan berapa kali dalam 24 jam terakhir. setiap nilai suhu diukur. Di situs tersebut, histogram seperti itu disebut "variasi suhu", istilah Rusia terdekat adalah fluktuasi suhu.

Dengan demikian, menggunakan suite Laboratorium Digital dalam kombinasi dengan layanan yang disediakan oleh platform ThingSpeak, dimungkinkan untuk mengumpulkan dan memproses data dari berbagai sensor dalam maksimal delapan saluran. Misalnya, menggunakan sirkuit voltmeter empat saluran yang dijelaskan dalam artikel sebelumnya, Anda dapat memantau kondisi baterai atau panel surya, saat menerima informasi cuaca di tempat pemasangan.

Source: https://habr.com/ru/post/id394357/


All Articles