Rumah > hujung hadapan web > tutorial js > Memaparkan API Web di LCD Arduino menggunakan Node.js

Memaparkan API Web di LCD Arduino menggunakan Node.js

Christopher Nolan
Lepaskan: 2025-02-20 08:24:11
asal
333 orang telah melayarinya

Memaparkan API Web di LCD Arduino menggunakan Node.js

Takeaways Key

    Artikel ini menerangkan cara memaparkan data dari API web pada LCD Arduino menggunakan Node.js. Penulis menggunakan contoh cabutan hadiah rawak di IoT Sydney Meetup, di mana persediaan LCD Arduino menarik dalam maklumat RSVP Event Meetup.com dan secara rawak memilih ahli.
  • Penulis menggunakan Node.js untuk membuat skrip yang membuat permintaan HTTP ke API Meetup, mengasingkan data JSON yang dikembalikan, dan memaparkan nama ahli yang dipilih secara rawak pada LCD Arduino. Penulis juga menyediakan panduan langkah demi langkah mengenai cara menubuhkan pelayan Node.js, membuat permintaan HTTP, dan mengendalikan data yang dikembalikan.
  • Penulis menyebut bahawa perpustakaan Johnny-Five digunakan untuk mengawal Arduino melalui Node.js, dan modul permintaan digunakan untuk membuat permintaan HTTP dari pelayan Node.js ke API Meetup. Perpustakaan underscore digunakan untuk menghuraikan data JSON yang dikembalikan.
  • Penulis menyimpulkan dengan mencadangkan penggunaan potensi lain untuk persediaan ini, seperti memaparkan mesej yang menyeramkan, menyimpan tab pada skor playoff NBA, atau sebarang data lain yang diambil dari API Web. Penulis juga menggalakkan pembaca untuk berkongsi projek mereka sendiri berdasarkan kod ini.
LCDS. Mereka menyeronokkan. Ia adalah salah satu cara yang paling keren untuk membawa suara ke Arduino anda kerana ia bercakap melalui teks bercahaya. Dalam artikel ini, kami akan meneroka cara membawa data dari API web dan memaparkannya pada LCD Arduino anda menggunakan Node.js.

pertemuan kegemaran saya setiap bulan di Sydney adalah pertemuan IoT Sydney. Ia adalah pertemuan yang hebat (anda harus datang!). Pada akhir setiap pertemuan, terdapat cabutan hadiah rawak bagi mereka yang rsvped. Saya fikir ia adalah masa bahawa ini telah dilakukan dalam gaya IoT yang benar, jadi saya menyusun LCD Arduino cepat yang ditubuhkan yang menarik dalam maklumat RSVP Event Meetup.com dan kemudian secara rawak memilih ahli bertuah. Fikir ia mungkin kejutan dan lebih mudah daripada menarik nama keluar dari topi!

Ia juga jatuh dengan kemas dengan siri artikel Internet of Things semasa yang saya tulis di sini di SitePoint. Saya meneroka banyak kemungkinan IoT di luar sana dengan pelbagai peranti. Minggu lalu, saya melihat menggunakan data IoT dalam enjin permainan Unity dan sebelum itu, saya melihat bagaimana untuk menarik data dari tulang rahang.

mari kita mulakan!

lakaran arduino anda

lakaran yang akan kami gunakan untuk contoh ini kelihatan seperti:

Memaparkan API Web di LCD Arduino menggunakan Node.js Ia adalah versi yang sedikit diubahsuai dari yang anda dapati dalam kit pencipta Sparkfun. Terdapat variasi lain lakaran LCD yang anda akan dapati dalam talian yang menyusun semula bagaimana keadaan disambungkan tetapi akan berfungsi dengan cara yang sama. Anda mungkin hanya perlu menyesuaikan pin mana yang anda tentukan dalam JavaScript di bawah.

kod JavaScript kami

Dalam fail JavaScript Node.js kami, kami termasuk yang berikut:

<span>var express = require('express'),
</span>	app <span>= express(),
</span>	server <span>= require('http').<span>Server</span>(app),
</span>	port <span>= 5000,
</span>	five <span>= require('johnny-five'),
</span>	request <span>= require('request'),
</span>	_ <span>= require('underscore'),
</span>	board <span>= new five<span>.Board</span>(),
</span>	lcd<span>;
</span>
board<span>.on('ready', function() {
</span>	lcd <span>= new five<span>.LCD</span>({
</span>		<span>pins: [12, 11, 5, 4, 3, 2],
</span>		<span>rows: 2,
</span>		<span>cols: 16
</span>	<span>});
</span>
	<span>this.repl.inject({
</span>		<span>lcd: lcd
</span>	<span>});
</span><span>});
</span>
app<span>.get('/chooseMember/:event_id', function(req<span>, resp</span>) {
</span>	<span>request({
</span>		<span>url: 'https://api.meetup.com/2/rsvps?key=474cc9332345ea7d7e135f50653c&event_id='+req.params.event_id,
</span>		<span>json: true
</span>	<span>}, function(error<span>, response, body</span>) {
</span>		<span>var members = _.pluck(body.results, 'member'),
</span>			randomMember <span>= members[_.random(members.length - 1)];
</span>		
		resp<span>.json(randomMember);
</span>
		<span>console.log(randomMember.name);
</span>
		lcd<span>.clear().print(randomMember.name);
</span>	<span>});
</span><span>});
</span>
server<span>.listen(port, function() {
</span>  <span>console.log('Listening on ' + port);
</span><span>});</span>
Salin selepas log masuk
Salin selepas log masuk

menetapkan langkah demi langkah demi langkah

Jika anda cukup dipertikaikan ke dalam node.js, kebanyakan kod itu akan masuk akal kepada anda. Saya akan menerangkan setiap bit hanya untuk memastikan semua orang berada di halaman yang sama dan memberikan bimbingan di sepanjang jalan pada apa sahaja yang perlu kita sediakan.

Untuk memulakan, kami menyediakan pembolehubah pelayan ekspres kami sebagai persediaan untuk menjalankan pelayan localhost pada port 5000:

<span>var express = require('express'),
</span>	app <span>= express(),
</span>	server <span>= require('http').<span>Server</span>(app),
</span>	port <span>= 5000,</span>
Salin selepas log masuk
Salin selepas log masuk

Kami kemudian mendapat perkara yang agak penting untuk dimasukkan, Johnny-Five. Ini adalah perpustakaan NPM yang memberi kita akses kepada fungsi yang kita perlukan untuk mengawal arduino kita melalui node.js.

five <span>= require('johnny-five'),</span>
Salin selepas log masuk
Salin selepas log masuk

Selepas itu, kami termasuk modul permintaan. Kami akan menggunakan ini untuk membuat permintaan HTTP dari pelayan Node.js kami ke API Meetup.

request <span>= require('request'),</span>
Salin selepas log masuk
Salin selepas log masuk

Untuk menjaga perkara yang sangat bersih dan mudah, kami akan menggunakan garis bawah untuk melalui array data.

_ <span>= require('underscore'),</span>
Salin selepas log masuk
Salin selepas log masuk

Dua pembolehubah terakhir adalah pembolehubah papan dan LCD yang akan kami gunakan untuk menyimpan objek Arduino yang dibuat oleh Johnny-Five.

board <span>= new five<span>.Board</span>(),
</span>	lcd<span>;</span>
Salin selepas log masuk
Salin selepas log masuk

Kami mulakan dengan menunggu papan Arduino kami bersedia untuk mengakses, Johnny-Five menghantar acara "siap" apabila lembaga kami bersedia untuk pergi.

board<span>.on('ready', function() {</span>
Salin selepas log masuk
Salin selepas log masuk

Setelah papan kami bersedia untuk pergi, kami membiarkan Johnny-Five tahu apa jenis LCD yang kami telah dihubungkan. Kami menentukan pin dari atas ke bawah dalam array:

Memaparkan API Web di LCD Arduino menggunakan Node.js

Kami juga menentukan berapa banyak baris dan lajur LCD kami. Dalam kes saya ia adalah 2 × 16 LCD. Semua ini kelihatan seperti:

lcd <span>= new five<span>.LCD</span>({
</span>	<span>pins: [12, 11, 5, 4, 3, 2],
</span>	<span>rows: 2,
</span>	<span>cols: 16
</span><span>});</span>
Salin selepas log masuk
Salin selepas log masuk

maka kami mempunyai kod yang pilihan (tetapi berguna untuk disertakan) yang akan membolehkan kami mengakses fungsi LCD dari baris arahan kami kerana ia sedang berjalan (saya akan menunjukkan ini dalam tindakan kemudian dalam artikel):

<span>this.repl.inject({
</span>	<span>lcd: lcd
</span><span>});</span>
Salin selepas log masuk

Kemudian, kami mempunyai satu dan hanya mendapatkan permintaan yang telah kami sediakan. Dalam permintaan ini, kami menjangkakan ID acara dalam URL. Sebagai contoh: http: // localhost: 5000/choosemember/221960710. ID Acara adalah yang anda akan dapati di bar alamat apabila anda melawat halaman acara:

Memaparkan API Web di LCD Arduino menggunakan Node.js

Permintaan GET kami mencari ID ini kelihatan seperti:

app<span>.get('/chooseMember/:event_id', function(req<span>, resp</span>) {</span>
Salin selepas log masuk

maka kita sampai ke sedikit kod kompleks! Permintaan HTTP sebenar kami ke API Meetup. Kami mengakses ini melalui fungsi permintaan. Kami lulus dalam dua perkara di sini, pilihan HTTP kami untuk permintaan dan fungsi panggil balik kami.

Pilihan untuk panggilan HTTP kami mengandungi URL kami dan Boolean untuk membiarkan permintaan mengetahui kami menjangkakan objek JSON kembali. Ini kelihatan seperti:

<span>request({
</span>	<span>url: 'https://api.meetup.com/2/rsvps?key=089cc9874628ealkjh27dkb50653s&event_id='+req.params.event_id,
</span>	<span>json: true
</span><span>}</span>
Salin selepas log masuk

pemerhati yang berminat akan perasan kami lulus dalam ID acara kami dari rentetan URL ke dalam url permintaan menggunakan req.params.event_id. Walau bagaimanapun terdapat satu lagi watak di sana yang saya tidak jelaskan. Untuk mengakses API Meetup, anda memerlukan kunci API. Anda boleh menemui salah satu daripada ini di https://secure.meetup.com/meetup_api/key/:

Memaparkan API Web di LCD Arduino menggunakan Node.js

Akhirnya, kami mempunyai fungsi panggil balik kami yang menggunakan data JSON yang dikembalikan. Saya telah menyimpannya dengan mudah dan tanpa pengendalian kesilapan, namun jika ini adalah penciptaan tahap pengeluaran yang serius - tambahkan cek untuk pembolehubah ralat.

output JSON yang panggil balik akan kembali dalam pembolehubah badan kita kelihatan seperti begitu:

<span>var express = require('express'),
</span>	app <span>= express(),
</span>	server <span>= require('http').<span>Server</span>(app),
</span>	port <span>= 5000,
</span>	five <span>= require('johnny-five'),
</span>	request <span>= require('request'),
</span>	_ <span>= require('underscore'),
</span>	board <span>= new five<span>.Board</span>(),
</span>	lcd<span>;
</span>
board<span>.on('ready', function() {
</span>	lcd <span>= new five<span>.LCD</span>({
</span>		<span>pins: [12, 11, 5, 4, 3, 2],
</span>		<span>rows: 2,
</span>		<span>cols: 16
</span>	<span>});
</span>
	<span>this.repl.inject({
</span>		<span>lcd: lcd
</span>	<span>});
</span><span>});
</span>
app<span>.get('/chooseMember/:event_id', function(req<span>, resp</span>) {
</span>	<span>request({
</span>		<span>url: 'https://api.meetup.com/2/rsvps?key=474cc9332345ea7d7e135f50653c&event_id='+req.params.event_id,
</span>		<span>json: true
</span>	<span>}, function(error<span>, response, body</span>) {
</span>		<span>var members = _.pluck(body.results, 'member'),
</span>			randomMember <span>= members[_.random(members.length - 1)];
</span>		
		resp<span>.json(randomMember);
</span>
		<span>console.log(randomMember.name);
</span>
		lcd<span>.clear().print(randomMember.name);
</span>	<span>});
</span><span>});
</span>
server<span>.listen(port, function() {
</span>  <span>console.log('Listening on ' + port);
</span><span>});</span>
Salin selepas log masuk
Salin selepas log masuk

Kami menyaring banyak perkara itu dengan menggunakan fungsi _.pluck () dalam garis bawah. Ini akan membantu kami memberi tumpuan kepada sedikit API kami - ahli -ahli yang rsvped. Fungsi _.pluck () melalui array hasil dan hanya mengambil maklumat ahli dari setiap satu.

<span>var express = require('express'),
</span>	app <span>= express(),
</span>	server <span>= require('http').<span>Server</span>(app),
</span>	port <span>= 5000,</span>
Salin selepas log masuk
Salin selepas log masuk

Kemudian, kami menggunakan fungsi underscore _.members () untuk secara rawak memilih ahli dari array yang dihasilkan.

five <span>= require('johnny-five'),</span>
Salin selepas log masuk
Salin selepas log masuk

kami mengembalikan data itu melalui pelayan Express kami sebagai respons JSON untuk permintaan GET dan log nama di konsol kami supaya kami dapat melihat siapa yang dipilih:

request <span>= require('request'),</span>
Salin selepas log masuk
Salin selepas log masuk

Kemudian kami menggunakan objek LCD Johnny-Five yang kami buat sebelum ini untuk mencetak nama ahli ke LCD kami. Kami mulakan dengan menggunakan lcd.clear () untuk membersihkan LCD apa -apa yang sedang di atasnya dan kemudian gunakan lcd.print () untuk mencetak watak nama.

_ <span>= require('underscore'),</span>
Salin selepas log masuk
Salin selepas log masuk

Anda akan melihat apabila anda menjalankan ini bahawa beberapa nama panjang akan dipotong, bukannya membungkus ke baris lain. Jika anda ingin membungkus perkara ke baris kedua, cuba memisahkan Randommember.Name anda menjadi dua rentetan 16 aksara, cetak rentetan pertama dan kemudian gunakan LCD.Cursor (1, 0); untuk bergerak ke baris kedua sebelum mencetak yang kedua. Dalam kes saya, ia tidak diperlukan kerana semua yang kita perlukan adalah untuk dapat memberitahu namanya yang ditarik - beberapa watak yang hilang biasanya tidak akan menyebabkan masalah di sini.

Mendapatkan yang berjalan di Arduino anda

Kami mempunyai kod Node.js kami siap. Sekarang, sambungkan Arduino anda dan pastikan anda mendapat lakaran standardFirmata yang dimuat naik di atasnya:

Memaparkan API Web di LCD Arduino menggunakan Node.js

Kami juga perlu memastikan kami mempunyai semua kebergantungan yang disusun. Fail pakej.json saya kelihatan seperti:

board <span>= new five<span>.Board</span>(),
</span>	lcd<span>;</span>
Salin selepas log masuk
Salin selepas log masuk

Jangan ragu untuk menyesuaikan diri dengan projek anda sendiri, perkara utama yang anda mahukan adalah kebergantungan tersebut.

Kemudian sebaik sahaja anda mempunyai fail pakej.json yang disusun, buka konsol anda dan pergi ke lokasi kod anda. Jalankan arahan yang indah ini:

board<span>.on('ready', function() {</span>
Salin selepas log masuk
Salin selepas log masuk

diikuti oleh yang satu ini:

lcd <span>= new five<span>.LCD</span>({
</span>	<span>pins: [12, 11, 5, 4, 3, 2],
</span>	<span>rows: 2,
</span>	<span>cols: 16
</span><span>});</span>
Salin selepas log masuk
Salin selepas log masuk

Dengan berjalannya, anda kini boleh pergi ke http: // localhost: 5000/choosemember/221960710 (Gantikan ID acara anda sendiri) dan anda akan mempunyai RSVP rawak muncul sebagai hasilnya:

Memaparkan API Web di LCD Arduino menggunakan Node.js

Jika anda menjalankannya lagi, RSVP baru akan muncul. Sekiranya semuanya berjalan lancar, nama -nama ini sepatutnya muncul di LCD Arduino anda!

Memaparkan API Web di LCD Arduino menggunakan Node.js

perkara repl yang kita nyatakan

kami memasukkan sedikit kod yang mengatakan this.repl.Inject dalam pelayan Node.js kami lebih awal. Apa ini membolehkan anda menjalankan arahan dari dalam terminal sementara pelayan Node.js anda sedang berjalan untuk menetapkan apa yang dipaparkan pada skrin LCD:

Memaparkan API Web di LCD Arduino menggunakan Node.js

Jika kita menaip dalam lcd.print () kita boleh mendapatkan beberapa sihir yang berlaku:

Memaparkan API Web di LCD Arduino menggunakan Node.js

baik ... mesej kami hampir sesuai sekurang -kurangnya!

Memaparkan API Web di LCD Arduino menggunakan Node.js

Kesimpulan

Kami telah berjaya mendapat ahli yang dipilih secara rawak dari kumpulan acara yang terdapat di LCD kami! Idea yang sama ini boleh digunakan untuk sebilangan API lain di luar sana, hanya menyesuaikan panggilan permintaan dan bagaimana anda mengendalikan data. Tinggalkan mesej yang menyeramkan pada LCD untuk rakan serumah, simpan tab pada skor playoff NBA terkini atau apa sahaja yang menarik minat anda!

membuat sesuatu yang menyeronokkan berdasarkan kod ini? Tinggalkan nota dalam komen dan kongsi di sekitar, saya suka melihatnya!

Soalan Lazim (Soalan Lazim) Mengenai API Web di Arduino LCD

Bagaimana saya boleh menyambungkan LCD Arduino saya ke Internet?

Menghubungkan LCD Arduino anda ke Internet memerlukan modul Wi-Fi seperti ESP8266. Modul ini membolehkan Arduino anda menyambung ke rangkaian Wi-Fi dan membuat permintaan data mudah menggunakan HTTP. Anda perlu menyambungkan ESP8266 ke papan Arduino anda menggunakan antara muka SPI. Setelah disambungkan, anda boleh menggunakan perpustakaan ESP8266Wifi untuk menguruskan sambungan Wi-Fi dan perpustakaan ESP8266HTTPCLIENT untuk membuat permintaan HTTP. (Antara Muka Pengaturcaraan Aplikasi) adalah satu set peraturan yang membolehkan aplikasi perisian yang berbeza untuk berkomunikasi antara satu sama lain. Dalam konteks Arduino LCD, API digunakan untuk mengambil data dari Internet. Data ini boleh menjadi apa -apa dari kemas kini cuaca, harga saham, atau data tersuai anda sendiri. API mengambil data ini dan menghantarnya ke papan Arduino anda, yang kemudiannya memaparkannya pada LCD. API di LCD Arduino anda melibatkan beberapa langkah. Pertama, anda perlu menyambungkan Arduino anda ke Internet menggunakan modul Wi-Fi. Kemudian, anda perlu membuat permintaan ke API menggunakan protokol HTTP. API akan bertindak balas dengan data yang diminta, yang kemudiannya anda boleh menghuraikan dan memaparkan pada LCD anda. Perpustakaan LiquidCrystal boleh digunakan untuk menguruskan paparan LCD.

Bolehkah saya menggunakan API dengan LCD Arduino saya? Walau bagaimanapun, perlu diingat bahawa sesetengah API mungkin memerlukan pengesahan, yang boleh menjadi lebih kompleks untuk ditubuhkan. Juga, data yang dikembalikan oleh API perlu berada dalam format yang boleh difahami oleh Arduino anda, biasanya JSON atau XML. 🎜> Mengemas kini data pada LCD Arduino anda secara real-time memerlukan membuat permintaan tetap ke API. Anda boleh menggunakan fungsi Kelewatan () untuk menjeda pelaksanaan program anda untuk jangka masa tertentu. Sebagai contoh, jika anda ingin mengemas kini data setiap minit, anda boleh menambah kelewatan (60000) pada akhir fungsi gelung () anda. Ini akan menjeda program untuk 60000 milisaat, atau satu minit, sebelum lelaran seterusnya gelung. Banyak kemungkinan, terdapat beberapa batasan. Pertama, papan Arduino mempunyai ingatan terhad, yang boleh menjadi masalah apabila berurusan dengan sejumlah besar data. Kedua, tidak semua API bebas untuk digunakan, dan ada yang mungkin mempunyai had penggunaan. Akhirnya, membuat permintaan HTTP dan data parsing boleh menjadi rumit dan memerlukan pemahaman yang baik tentang pengaturcaraan dan rangkaian. Komponen Arduino yang boleh menyambung ke Internet. Ini termasuk bukan sahaja LCD tetapi juga LED, motor, dan sensor lain. Prosesnya adalah sama: Arduino membuat permintaan kepada API, menerima data, dan menggunakan data ini untuk mengawal komponen. > Masalah penyelesaian masalah dengan LCD Arduino dan API anda boleh mencabar, tetapi ada beberapa perkara yang boleh anda lakukan. Pertama, periksa pendawaian anda dan pastikan Arduino anda disambungkan dengan betul ke Internet. Kedua, gunakan monitor siri untuk debug kod anda dan lihat jawapan dari API. Akhirnya, periksa dokumentasi API untuk sebarang keperluan atau batasan tertentu. Menggunakan Arduino LCD dan API, anda boleh membuat pelbagai projek. Sebagai contoh, anda boleh membuat stesen cuaca yang memaparkan data cuaca masa nyata, ticker saham yang menunjukkan harga saham terkini, atau sistem automasi rumah yang mengawal peranti anda berdasarkan data dari Internet.

Apakah beberapa sumber yang baik untuk mengetahui lebih lanjut mengenai menggunakan API dengan Arduino? Laman web dan forum rasmi Arduino adalah tempat yang bagus untuk bermula. Terdapat juga banyak tutorial dan kursus dalam talian yang terdapat di laman web seperti YouTube, Udacity, dan Coursera. Akhirnya, buku -buku seperti "Pemrograman Arduino: Bermula dengan Sketsa" oleh Simon Monk memberikan pengenalan yang komprehensif kepada pengaturcaraan Arduino, termasuk menggunakan API.

Atas ialah kandungan terperinci Memaparkan API Web di LCD Arduino menggunakan Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan