Mikrokontroler dan bahasa pemrograman mana yang harus saya gunakan untuk tampilan cuaca yang didukung Internet?

11

Saya seorang pemula di IoT dan ingin memulai karir saya di IoT. Ketika saya mencari di Google untuk startup di IoT, saya menemukan banyak blog. Dan saya menemukan bahasa yang digunakan dalam IoT seperti C #, Java, Node.js, dan mikrokontroler seperti Arduino, Raspberry Pi, Intel, Netduino, dll.

Karena saya baru mengenal IoT, saya tidak tahu bahasa mana yang terbaik dan mikrokontroler mana yang saya gunakan untuk startup?

Untuk startup dasar yang saya katakan, saya ingin membuat perangkat yang memiliki tampilan yang menunjukkan cuaca untuk lokasi yang diberikan dari ponsel saya. Jadi ini bisa menjadi contoh yang baik untuk startup yang mencakup perangkat keras, Internet dan perangkat lunak.

Perangkat akan bertenaga baterai, layar digital kecil dan ya pembatasan biaya.

Mikrokontroler dan bahasa apa yang harus saya gunakan yang memenuhi persyaratan saya untuk menunjukkan cuaca?

Jigarb1992
sumber
1
Ini sepertinya pertanyaan yang jauh lebih baik daripada pertanyaan Anda sebelumnya; jauh lebih fokus pada kasus penggunaan tertentu. Jadi kami dapat memberikan jawaban yang baik, berikut beberapa pertanyaan: apakah perangkat Anda bertenaga listrik atau bertenaga baterai? Seberapa besar tampilan yang Anda inginkan? Apakah ada batasan biaya?
Aurora0001
2
Juga, untuk memilih mikrokontroler, jawaban ini benar-benar fantastis.
Aurora0001
1
Terima kasih @ Aurora0001 Saya telah menambahkan lebih detail saat Anda berkomentar, silakan cek.
Jigarb1992
1
Memilih nits: Arduino adalah mikrokontroler. Pi adalah komputer penuh, hal-hal seperti Pis dan Beaglebones dan Gumstix biasanya disebut "komputer papan tunggal" (SBC) atau "komputer-modul" (COM). Tidak seperti Pi, Arduino tidak menjalankan OS - Arduino hanyalah Atmel ATmega ?? 8 pada papan kecil yang mudah digunakan yang dilengkapi dengan IDE yang nyaman. Pi adalah komputer aktual dengan inti mikroprosesor ARM Cortex-A53. Anda dapat menggunakan, misalnya, Pi untuk melakukan semua jaringan dan menampilkan output dan kontrol yang kompleks dengan Arduino untuk melakukan pekerjaan sederhana seperti tombol baca, tag RFID atau sesuatu.
Jason C
1
Perangkat bertenaga baterai: maksud Anda seperti jam tangan pintar / pintar (baterai Li, hidup beberapa hari di antara pengisian ulang), atau seperti jam (AA tidak dapat diisi ulang, hidup beberapa bulan)? Itu akan mendorong desain Anda dan sangat membatasi opsi Anda jika Anda memilih yang terakhir.
pjc50

Jawaban:

5

Secara pribadi, saya akan memilih Raspberry Pi 3B untuk ini, meskipun mungkin jauh lebih kuat daripada yang Anda butuhkan. Alasan saya menyarankan ini adalah:

  • Ini memiliki LAN Nirkabel 802.11 b / g / n internal, jadi Anda akan dapat menghubungkannya ke jaringan Wi-Fi daripada dengan kabel Ethernet

  • Ini juga mendukung Bluetooth, jadi Anda mungkin dapat terhubung ke ponsel melalui itu.

Anda juga akan memerlukan unit layar, dan, mudahnya, ada beberapa tampilan yang dirancang untuk Raspberry Pi, seperti layar sentuh 4DPI-32 ini . Anda seharusnya dapat menempatkan layar secara langsung ke header 40-pin:

40 Pin Yayasan Raspberry Pi , CC BY-SA 4.0 . Saya sadar ini secara teknis adalah Pi 2B, tetapi GPIO adalah sama pada 3B.

Adapun aspek pemrograman dalam kasus ini, yang perlu Anda lakukan adalah mengambil cuaca dari suatu API di suatu tempat, dan menampilkannya di layar sebagai program GUI. Layar hanya berfungsi seperti output HDMI untuk Pi, jadi Anda tidak perlu melakukan sesuatu yang istimewa. Untuk Python, Anda dapat menggunakan Tkinter untuk membuat UI dasar, atau Anda bahkan dapat memilih untuk menulis aplikasi web dalam HTML / CSS / JS, tergantung pada apa yang Anda sukai. Anda bisa menggunakan OpenWeatherMap API secara gratis; dokumentasi tersebut ditautkan untuk setiap titik akhir API.

Pada titik ini, itu terserah Anda. Bahasa terbaik di sini adalah bahasa yang paling nyaman bagi Anda. Jika Anda suka AngularJS, cukup buat halaman HTML, ambil cuaca dengan Angular (atau gunakan perpustakaan seperti ini untuk membantu Anda) dan tampilkan menggunakan beberapa CSS untuk membuatnya terlihat bagus.

Untuk benar-benar mendapatkan lokasi, saya menduga akan lebih mudah untuk hanya mengizinkan pengguna untuk mengetikkan lokasi mereka di layar sentuh Pi. Mengirim lokasi ponsel Anda mungkin sedikit lebih sulit, meskipun Anda mungkin dapat menemukan sesuatu jika Anda banyak meneliti.

Untuk penggunaan baterai, pertanyaan tentang Raspberry Pi Stack Exchange ini layak dibaca.

Aurora0001
sumber
1
Harus pasang Kit Vilros Pi , yang bekerja langsung di luar kotak dan menghemat satu ton pengaturan awal yang mengganggu. Juga di luar topik tetapi untuk debugging saya menemukan ini (dan versi kasarnya jika Anda mencari situs) sangat berguna. Mahal untuk penggunaan tunggal tetapi sepadan jika Anda menggunakannya sepanjang waktu. Berfungsi dengan baik dengan adaptor HDMI -> VGA.
Jason C
1
Tidak. Pertama karena ketergantungan pada kartu SD yang rapuh, kedua karena Anda tidak bisa benar-benar masuk ke manufaktur dalam jumlah sedang. Pi mungkin memberi Anda bukti konsep, tetapi Anda harus mendesain ulang sesuatu yang benar-benar dapat Anda gunakan dalam suatu produk. Lebih lanjut, ini pada dasarnya non-starter lengkap untuk daya baterai dalam penggunaan serius.
Chris Stratton
@ ChrisStratton: Untuk pemula seperti OP, RPi sepertinya merupakan pilihan yang layak menurut saya. Ya, untuk produksi skala besar, ini tidak ideal, tetapi saya fokus pada penyediaan ide yang mudah diakses dan dimodifikasi; POC adalah persis apa yang dibutuhkan di sini. Saya tidak berpikir kartu SD benar-benar menjadi perhatian besar baik untuk pengaturan hobi; dalam produksi massal ceritanya berbeda tetapi untuk titik awal, saya pikir ini harus bekerja dengan cukup baik. Saya terbuka untuk semua saran untuk pendekatan yang lebih baik.
Aurora0001
Bahkan terlepas dari cara masalah-masalah itu membuatnya tidak layak dalam suatu produk, persyaratan daya baterai poster mengesampingkannya sejak awal. Karena pi adalah arsitektur set-to-box tanpa manajemen daya seluler, Anda tidak akan mendapatkan lebih dari beberapa jam dari baterai yang masuk akal.
Chris Stratton
10

The Onion Omega 2 klaim untuk menjadi komputer Linux terkecil di dunia. Klaim itu mungkin tidak sepenuhnya benar (lihat vocore2 di bawah ini, misalnya) tetapi dalam pengalaman saya itu harus dalam 3 terkecil. Biaya hanya $ 5, built-in wifi, dirancang dengan IoT khusus dalam pikiran. Memiliki beberapa perisai yang tersedia di situs web mereka . Produk baru, tampaknya memiliki komunitas yang kuat dan aktif. Pendukung Kickstarter mendapatkan perangkat. Layak dicoba.

Juga, seperti yang ditunjukkan dalam komentar, periksa vocore2 , yang sebenarnya tampaknya lebih kecil dari Bawang, dan lebih murah seharga $ 4. Saat ini sedang didanai di IndieGoGo dan perkiraan tanggal pengiriman adalah Februari 2017 (bulan depan pada saat penulisan ini). Juga terlihat memiliki berbagai macam dermaga yang tersedia, dan memiliki router wifi built-in, yang agak keren.

Saya baru saja menemukan itu beberapa hari yang lalu dan tidak memiliki pengalaman dengan mereka. Catatan, bagaimanapun, karena kebaruan mereka, beberapa paket Linux Anda dapat digunakan untuk menggunakan mungkin tidak tersedia belum (misalnya, saya tahu benar bahwa pada saat ini menulis paket gstreamer tidak tersedia pada Onion namun, Anda harus membangun dari sumber, meskipun gstreamer tidak relevan untuk Anda).

Singkatnya, seperti jawaban yang lain katakan, Pi adalah perangkat biaya rendah yang bagus. Jangan lupakan Raspberry Pi Zero , komputer kecil seharga $ 5 lainnya di sepanjang garis Bawang. Ini tidak memiliki semua port yang dimiliki oleh Pi yang lebih besar tetapi jika Anda tidak keberatan, atau jika Anda hanya ingin menggunakan 3 untuk pengembangan dan Nol untuk ukurannya dalam produk akhir, itu adalah pilihan lain yang patut dipertimbangkan.

Perangkat lain, beberapa mahal, termasuk:

  • BeagleBone Black (ini adalah satu-satunya alternatif Pi yang saya pertimbangkan dengan serius karena biayanya yang rendah).
  • Gumstix ($$$, tetapi kami menggunakan ini sepanjang waktu dalam proyek untuk ukuran mereka)
  • Udoo ($$$ tapi bungkus pukulan)
  • Toradex Colibri (Agak sulit untuk dikerjakan tetapi kami sering menggunakan ini, juga, spesifikasi yang lebih baik daripada Gumstix, dan memiliki opsi untuk menjalankan Windows CE dengan fitur boot instan jika Anda lebih suka Windows toolchain dan hampir tidak ada waktu boot ).

Juga perhatikan bahwa Vilros membuat beberapa starter kit Pi yang luar biasa (lebih murah di Amazon) yang dikemas dengan OS, Wifi yang berfungsi, heat sink, case, bekerja langsung di luar kotak dan menghemat satu ton pekerjaan pengaturan yang kasar. Juga layak untuk dicoba jika Anda memilih rute Pi. Vilros juga digunakan untuk membuat starter kit Beaglebone, yang sepertinya tidak lagi tersedia di situs mereka tetapi jika Anda mencari Newegg / Amazon / etc. Anda masih dapat menemukan stok yang tersedia.


Ngomong-ngomong, Arduino (atau mikrokontroler lain, berbeda dengan komputer papan tunggal yang tercantum di atas) dengan sendirinya mungkin bukan yang Anda inginkan di sini. Arduino hanyalah Atmel ATmega168 / 328. Itu tidak menjalankan OS dan tidak benar-benar melakukan apa pun selain persis apa yang Anda perintahkan. Jadi misalnya, untuk jaringan Anda memerlukan perisai ethernet, yang dikirimkan dengan pustaka kontrol ethernet penuh yang saya percaya menyediakan tumpukan TCP dan UDP (saya tidak pernah menggunakannya, hanya menelusuri situs mereka) dan tentu saja membutuhkan banyak ruang kode terbatas.

Maka Anda harus membangun klien cuaca Anda dan semuanya di atas itu, dan Anda harus melakukan semuanya dalam 32KB atau kurang. Ini rasa pengembangan yang berbeda dari melakukan pengembangan Linux / Windows di Pi / Beaglebone / Gumstix / Colibri / etc. Agak di luar lingkup jawaban ini.

Apa Arduino adalah baik untuk di sini adalah sebagai add-on untuk sistem utama Anda untuk melakukan hal-hal antarmuka perangkat keras, seperti sensor membaca tekanan, tombol, kontrol dasar elemen elektronik, hal semacam itu.

Pengembangan sistem tertanam adalah binatang yang sama sekali berbeda dari pengembangan desktop yang akan Anda lakukan pada Pi, dan saya benar-benar tidak akan merekomendasikan mencoba melakukan ini dengan Arduino sendirian, terutama tanpa pengalaman.

Jason C
sumber
1
vocore2 lebih kecil dan lebih murah saat ini ($ 4) saat masih menjalankan OpenWRT (Linux)
Matija Nalis
2
Apa cerita open source dengan yang ini?
Sean Houlihane
@SeanHoulihane Pertanyaan bagus. Saya akan melihat apakah saya bisa mengetahuinya, halaman Kickstarter dan halaman rumah mereka kurang dalam hal ini. Saya sebenarnya sedikit jengkel dengan klaim "terkecil di dunia" orang Bawang setelah komentar vore2 Matija di atas, tapi mungkin mereka dapat menebus diri mereka sendiri (di mata saya yang rendah hati) dengan arsitektur terbuka.
Jason C
3
Ingat, orang dapat mengklaim apa pun di Kickstarter ...
Sean Houlihane
@SeanHoulihane Oh man, jangan tidak bisa saya mulai pada saya kata-kata kasar Kickstarter kebencian, heh. Tolak, tahan ... Tetap saja, Kickstarter mengklaim dan mengesampingkan Keterbukaan, baik Omega maupun vokalnya adalah perangkat baru yang cukup keren. Dan kami memiliki RPi Zero juga di bagian depan berbiaya rendah.
Jason C
6

Saya menyarankan pendekatan langkah demi langkah untuk mencari tahu bahasa dan pengontrol apa yang harus Anda gunakan. Mikrokontroler yang Anda butuhkan akan tergantung pada tugas yang Anda inginkan. Secara teoritis tugas tersebut akan mengatur beberapa persyaratan yang akan dipenuhi oleh mikrokontroler yang sesuai, jadi Anda harus memilih mikrokontroler dengan persyaratan ini.

  1. Tentukan kisah pengguna untuk perangkat. Apa yang Anda harapkan darinya? Apa yang Anda inginkan?

    Dalam kasus Anda, itu sudah ditentukan oleh Anda:

    Perangkat bertenaga baterai yang seharusnya dapat menerima input dari ponsel pintar dan menampilkan informasi cuaca dari lokasi yang diminta pada tampilan sendiri.

  2. Sekarang langkah 1. memberi Anda sesuatu untuk memulai. Anda dapat memutuskan perangkat keras apa yang Anda butuhkan pada level diagram blok.

    Anda tentu akan memerlukan tampilan dan mungkin modul WiFi atau Bluetooth untuk berkomunikasi dengan ponsel Anda. Mengakses basis data cuaca global mungkin akan memerlukan koneksi Internet. Anda harus mengontrol keduanya dengan modul MCU atau WiFi (Anda memerlukan Internet sehingga Anda dapat mengecualikan Bluetooth) harus dapat mengontrol tampilan dan menjalankan perangkat lunak Anda.

  3. Anda dapat mulai mencari bagian-bagian tertentu. Anda dapat mulai dengan memutuskan baterai apa yang akan Anda gunakan, sehingga Anda dapat mempertimbangkan konsumsi daya dari komponen potensial Anda. Saya telah menyimpulkan proses umum untuk memilih MCU di salah satu jawaban saya sebelumnya . Pada dasarnya hal yang sama harus dilakukan di sini. Cari tampilan yang murah, mungkin akan menggunakan antarmuka SPI atau I2C untuk komunikasi. Kemudian Anda dapat mencari modul Wifi dengan SPI / I2C dan memiliki MCU terintegrasi atau MCU terpisah dan modul WiFi. Modul WiFi individu mungkin akan menggunakan UART untuk berkomunikasi sehingga MCU individu harus memilikinya di sepanjang SPI / I2C.

  4. Adapun bahasa. Kebanyakan mikrokontroler akan membatasi kemungkinan Anda di bidang ini. Dalam sebagian besar kasus, pilihan Anda adalah C, C ++ atau Assembly, secara tegas berbicara tentang mikrokontroler di sini dan bukan komputer papan tunggal.

    Jika Anda memutuskan untuk menggunakan BeagleBone atau Raspberry yang dapat menjalankan Linux atau OS canggih lainnya, maka saya katakan bahwa bahasa terbaik adalah bahasa yang Anda tahu paling baik, tentu saja ia harus mampu menangani tugas tersebut. ( Anda dapat menjalankan Java pada RPi jika mau. )

    Membuka soket ke layanan data cuaca global dapat dilakukan dalam C, C # atau Python juga. Akan sedikit lebih sulit untuk memproses JSON dengan C tetapi tentu saja mungkin.

Berbicara tentang biaya secara umum. Pilihan terbaik adalah mencari perangkat layar berkemampuan WiFi, akan ada banyak hasil dan kebanyakan dari mereka akan menggunakan perangkat keras yang sama, dan mungkin ini yang termurah.


Anda dapat menggunakan modul WiFi ESP8266 yang kompatibel dengan Arduino untuk terhubung ke internet dan antarmuka layar. Ini akan membutuhkan banyak mengutak-atik daripada Raspberry Pi akan tetapi akan lebih murah.

Berikut ini adalah proyek Hackaday tentang tampilan ESP8266 + OLED .

Bence Kaulics
sumber
2
Rincian prosesnya bagus. Micropython tersedia untuk banyak papan kecil, mungkin salah satu faktor yang perlu dipertimbangkan adalah ekosistem papan, dan jika ada perpustakaan open source (meskipun vendor MCU sering menyediakan perpustakaan yang baik juga).
Sean Houlihane
6

Membuat startup bukan tentang apa yang dapat Anda lakukan dengan teknologi dan bahkan tentang produk. Untuk startup yang sukses yang dapat memikat VC, Anda harus terlebih dahulu memikirkan pasar yang akan Anda layani. Tetapi memikirkan pasar yang akan Anda layani tidak cukup. Anda harus memiliki data nyata tentang pasar. Ini bukan hanya tentang sesuatu yang masuk akal bagi Anda. Menciptakan suatu produk dan kemudian mengikatnya untuk menjualnya bukanlah pendekatan yang berhasil dan itulah akhir dari kebanyakan startup yang gagal. Pasar adalah KEBUTUHAN NYATA. Ketika Anda membuat sebuah produk, buatlah itu untuk mengatasi Pasar tertentu. Inilah yang membuat produk yang sukses, produk yang menjual sendiri karena orang sudah mencarinya. VC hanya berinvestasi pada startup yang memiliki produk seperti itu terutama jika mereka sudah menjual.

Untuk memilih teknologi untuk mengembangkan produk Anda terlebih dahulu, Anda perlu tahu apa yang perlu dilakukan produk Anda, beginilah cara memecahkan masalah di Pasar yang dipilih. Kemudian lihat apa yang calon pelanggan bersedia membayar untuk itu. Kemudian pilih teknologi yang memungkinkan waktu-ke-pasar tercepat dengan tetap menjaga biaya sesuai anggaran. Kemudian outsourcing pengembangan atau mendapatkan pasangan yang bisa melakukannya dan bersedia bekerja sama dengan Anda. Bagikan keuntungan 50/50 dengan pasangan Anda. Kemudian ketika Anda memiliki prototipe, mulailah menyusun rencana bisnis Anda dan ingat bahwa Anda hanya dapat memikat VC jika Anda menunjukkan kepada mereka bagaimana mereka dapat menghasilkan uang.

Jika Anda perlu menurunkan biaya produk Anda untuk produksi massal, Anda dapat menggunakan bahasa tingkat yang lebih rendah dan pengontrol mikro yang kurang banyak akal seperti Microchip PIC atau Silicon Labs EFM dengan ASM / C / C ++. Jika produk tidak akan diproduksi massal (100k +) gunakan bahasa tingkat yang lebih tinggi dan pengontrol mikro yang lebih banyak akal, seperti Micro Python atau Lua dengan ARM32 MIPS, atau bahkan Linux dengan ARM32 / 64. Ini menghemat biaya pengembangan tetapi meningkatkan harga perangkat keras. Ingat, harga produk bukan hanya PCB dengan komponen; pengembangan, perumahan, pengepakan, dan segala hal lain yang diperlukan untuk menjual produk harus dikenai biaya. Masukkan itu dalam rencana bisnis. Dan jangan pergi ke VC dengan Arduino atau Raspberry pi atau Bawang atau apa pun yang terlihat seperti gadget penghobi,

Mulai dari atas, bukan ke bawah, dan yang terbaik dari keberuntungan.

555
sumber
Itu benar-benar membuat rasa pemasaran yang lengkap. Terima kasih :)
Jigarb1992