ELM327とArduinoとLCD2004でOBDデータ表示

はじめに ELM327とArduinoとLCD2004で車両情報を表示してみました。 ELM327ではTrqueやCar Scannerなどのアプリで色々な車両情報は見れますが、だいたい見る項目は決まってきましたので作ってみました。 アプリより表示のレスポンスが向上しました。 「Arduino ELM327」などでググると、以下のELMduinoのような便利なライブラリも見つかりましたが、今回は使っていません。 PowerBroker2/ELMduino: Arduino OBD-II Bluetooth Scanner Interface Library for Car Hacking Projects 使ったもの ELM327 v1.5 Arduino UNO R2 Arduino Pro mini互換品 ATMega328,16MHz,5V LCD2004とI2Cアダプタ こちらと同じもの → Arduino I2C LCD2004 HelloWorld | atooshi-note ELM327殻割り 基板は3段構成になっていて一番上の青い基板はBluetooth Module(BTM)です。 BTMのチップ印字消されていますが、いろいろググってみるとHC-05のコンパチ?っぽそうです。 モジュールは3.3Vで駆動されていますが、typは3.6~6Vらしいですね。 RT,TX,3.3V,GND,5Vは以下の位置関係のようです。 参考 アナログタコメータをつくる(1) OBD2スキャナ ArduinoとELM327でOBD取得する 接続 ELM327はスマホで動作確認はできていますので、PCとシリアル通信してみます。 USB-TTLデバイスを用意して、以下のように接続します。 ELM327 USB-TTL 5V 5V GND GND TX RX RX TX 通常は定番のFTDIの石を使うと思いますが、持っていないのでCH32V003用に持っているWCH-LinkEを使いました。 COMポートとして認識されるデバイスなら通信できそうです。 Arduino UNO R2のUSB-シリアル変換部分も同じように使うことができます。その場合、以下のように接続します。 ArduinoのTX(pin1)はUSB-シリアル変換部分のRXに、RX(pin0)はTXに繋がっているので、クロス接続にはしません。 以下↓にも記載しています。 NCP-HG100 を 楽天モバイル Band3 に固定する | atooshi-note ...

2025/02/08 · Last updated on 2025/03/28 · 8 min · 1582 words

Arduino I2C LCD2004 LiquidCrystal_I2C.h不使用

はじめに LiquidCrystal_I2C.hを使わず、LCD2004でHello Worldしました。 前回記事では、LiquidCrystal_I2C.hを使用してLCDを制御しました。 LCD2004やI2Cアダプタについては前回記事を御覧ください。同じものを使用します。結線も同じです。 Arduino I2C LCD2004 HelloWorld | atooshi-note ArduinoでLCDを制御する例を調べるとLiquidCrystal_I2C.hを使った記事がたくさんヒットしますが、LiquidCrystal_I2C.hを使わない例はあまり見かけませんでした。 RaspberrypiやPICやSTM32で駆動している例はそこそこ見つかりました。 気をつける点(自分めも) LiquidCrystal_I2C.hを使わない例としてはACM1602NIを駆動している例がありました。これもI2C接続ですが、LCDモジュールとI2Cアダプタがセットになっています。今回私が使用しているのはLCDとI2Cアダプタ(PCF8574T)が別で接続したものですのでプログラムそのままでは動きません。 以下はLiquidCrystal_I2C.hがいい感じにやってくれていますが、自分で組むときに気をつけた点です。 適切なディレイが必要 初期化手順が決まっている 4bitモードで制御する enable信号のL→H→Lは0.22us以上あける PCF8574TとLCD2004の結線 LCD DB7 DB6 DB5 DB4 バックライトのトランジスタのGate E R/W RS PCF8574T P7 P6 P5 P4 P3 P2 P1 P0 プログラム /* wire.h使用(i2c) #include <LiquidCrystal_I2C.h>は不使用 */ #include <Wire.h> #define lcdaddr 0x27 #define lcdEN 0b00000100 // Enable #define lcdBL 0b00001000 // Back light ON #define setDDRAMaddr 0b10000000 // Set DDRAM Address #define setRS 0b00000001 // RS=1 #define unsetRS 0b00000000 // RS=0 void lcdinit() { // 一旦8bitモードに設定(3回繰り返す) // 1回目 lcdwrite0(0x30,unsetRS); // Funcition Set DL=1:8bitバス delay(5); // Wait for more than 4.1 ms // 2回目 lcdwrite0(0x30,unsetRS); delayMicroseconds(150); // Wait for more than 100 µs // 3回目 lcdwrite0(0x30,unsetRS); delayMicroseconds(100); // Wait for more than 40 µs lcdwrite0(0x20,unsetRS); // 4bitモードに設定 Funcition Set DL=0:4bitバス lcdwrite(0x28,unsetRS); // 2行表示モードに設定 Funcition Set DL=0:4bitバス,Set N=1:2桁表示 lcdwrite(0x0F,unsetRS); // 表示ON/OFF D=1:文字表示ON,C=1:下線カーソルON,B=1:ブロックカーソルON lcdwrite(0x06,unsetRS); // エントリモードセット I/D=1:インクリメント lcdwrite(0x01,unsetRS); // 表示クリア lcdwrite(0x02,unsetRS); // カーソルホーム } // 8bit用 void lcdwrite0(byte bits,byte mode){ i2cwrite(bits | mode); } // 4bit用 void lcdwrite(byte bits,byte mode){ i2cwrite((bits & 0xF0) | mode); // 上位4bit i2cwrite(((bits << 4) & 0xF0) | mode); // 下位4bit } void i2cwrite(byte val){ Wire.beginTransmission(lcdaddr); Wire.write(val | lcdBL); delayMicroseconds(1); // 0.22us以上 Wire.write(val | lcdBL | lcdEN); delayMicroseconds(1); // 0.22us以上 Wire.write(val | lcdBL); Wire.endTransmission(); delayMicroseconds(100); // Wait for more than 40 µs とは言いつつ50usec待ちでは動かない 100usecぐらい余裕を持っておく } // row:行 col:列 void setCursor(int row, int col){ int row_offsets[] = {0x00, 0x40, 0x14, 0x54}; // 0から数え始め lcdwrite((col + row_offsets[row]) | setDDRAMaddr,unsetRS); } void lcdText(String s){ for(int i = 0; i < s.length(); i++){ lcdwrite(s.charAt(i),setRS); } } void setup() { delay(50); // Wait for more than 15 ms after VCC rises to 4.5 V Wire.begin(); lcdinit(); setCursor(0,0); // カーソルを0行目0列目に移動 lcdwrite(0x30,setRS); // 数字の0を出力 HD44780 Table 4 Correspondence between Character Codes and Character Patterns (ROM Code: A00) setCursor(1,1); lcdwrite(0x31,setRS); // 数字の1を出力 setCursor(2,2); lcdText("2_hello world!"); } void loop() { setCursor(3,0); lcdText("3_Hello World!"); delay(1000); setCursor(3,0); lcdText("3_World!"); delay(1000); } 結果 ...

2025/02/04 · Last updated on 2025/03/13 · 2 min · 325 words

Arduino I2C LCD2004 HelloWorld

はじめに 20桁×4行のLCD LCD2004をArduinoで制御してHelloWorldしました。 検索するとよくヒットするLiquidCrystal_I2C.hを使用するタイプです。 使ったもの LCD2004 I2Cアダプタ(PCF8574T) Arduino UNO R2 LCD2004 アリエクで以下のLCDを1500円程度で購入しました。I2Cアダプタ付きです。 ビッグサイズを謳っており、iPhone12miniと同じくらいのサイズです。 https://ja.aliexpress.com/item/1005007298503814.html LCDの制御ICは商品説明に hd44780,st7066,eqvチップ とあるので、業界標準になっている日立の超ロングセラー液晶コントローラーであるHD44780の互換ICが載っていると思われます。 I2CアダプタとLCDははんだ付けされておらず、別々で届きました。 LCDは18pinで以下のピンアサインになっています。 I2Cアダプタは16pinなので、pin1から合わせて、pin17,18がNCとなります。 I2Cアダプタ基板の表面しかパターンを追えてませんが、おそらく回路は以下記事と同じと思われます。 PCF8574Tを使ったLCD制御 DB0 から DB3は未接続で、DB4 から DB7は繋がっているため4bitモードだと思われます。 I2Cアダプタ(PCF8574T) PCF8574TはI2C接続のI/Oエキスパンダです。 青いポテンショメーター下のA0,A1,A2の空きランドでI2Cのスレーブアドレスを決定しますが、デフォルトでは3つとも開放なのでアドレスは0x27となります。 PCF8574Tのデータシートの7.1.1 Address mapsをみるとI2Cアドレス(A0から6の7bit)のA0,A1,A2がHIGH(開放でVDDとなりHIGH)となり、7-bit hexadecimal address without R/Wが27h(=0x27)となることがわかります。A3~6のbitは固定です。 Arduino IDEのスケッチ例-Wire-i2c_scanner.inoを使用して、アドレスが0x27であることが確認できました。 他のデバイス(STM32など)はアドレスはR/Wも含めた8bitで送信しますが、ArduinoはR/Wを含めず7bitです。Wire.hがそのようになっています。(LiquidCrystal_I2C.hではWire.hを使用しています) また、I2Cは信号線のプルアップが必要ですが、Wire.hでは内部プルアップしてくれるので外付け抵抗が不要です。 なので、ただ線をつなぐだけでOKです。 接続 ArduinoとI2Cアダプタを4本接続するだけです。 Arduino UNO R2 I2Cアダプタ A4(SDA) SDA A5(SCL) SCL 5V VCC GND GND プログラム 色々書きましたが、LiquidCrystal_I2C.hを使う場合は細かいことは意識することなく表示することができます。(LiquidCrystal_I2C.hがいい感じにやってくれます) ...

2025/01/27 · Last updated on 2025/03/14 · 1 min · 126 words

ch32v003fun CH32V003F4P6 シリアル通信

はじめに シリアル通信を試しました 注意点 SWIOだけではシリアル通信できません。 WCH-LinkEのRXとCH32V003F4P6のUTX(pin2,PD5)を接続する必要があります。 接続 3.3V GND SWIO(PD1) TX(PD5)の4本です。 プログラム サンプルがほぼそのままで動作しました。楽〜 C:\Users\USERNAME\Downloads\ch32v003fun\examples\uart_tx_dma\uart_tx_dma.c ch32v003funをWindowsに構築しCH32V003F4P6でLチカ | atooshi-noteでch32v003funをダウンロードした場所と同じです。 接続してポートを認識しており(COM7でした)、teratermで通信を確認しました。 /* * This example uses DMA for the UART to transfer the "Hello World!\r\n" string * once per second. Connect a UART Rx pin to D5, flash the example, setup your * uart for 115200n1 and the messages should appear シリアル通信のチェック */ #include "ch32v003fun.h" // Set UART baud rate here #define UART_BR 115200 // LED on D6 (nanoCH32V003 board) // #define LED_PIN 6 #define LED_PIN 4 // ch32v003f4p6のdevelopmetboard // DMA transfer completion interrupt. It will fire when the DMA transfer is // complete. We use it just to blink the LED __attribute__((interrupt)) __attribute__((section(".srodata"))) void DMA1_Channel4_IRQHandler(void) { // Clear flag DMA1->INTFCR |= DMA_CTCIF4; // Blink LED GPIOD->OUTDR ^= 1<<LED_PIN; } static void led_setup(void) { RCC->APB2PCENR = RCC_APB2Periph_GPIOD; GPIOD->CFGLR = ((GPIO_CNF_IN_PUPD)<<(4*1)) | // Keep SWIO enabled. (GPIO_Speed_2MHz | GPIO_CNF_OUT_PP)<<(4*LED_PIN); // LED ON GPIOD->BSHR = 1<<LED_PIN; } static void uart_setup(void) { // Enable UART and GPIOD RCC->APB2PCENR |= RCC_APB2Periph_GPIOD | RCC_APB2Periph_USART1; // Push-Pull, 10MHz Output on D5, with AutoFunction GPIOD->CFGLR = (GPIOD->CFGLR & ~(0xF<<(4*5))) | ((GPIO_Speed_10MHz | GPIO_CNF_OUT_PP_AF)<<(4*5)); // Setup UART for Tx 8n1 USART1->CTLR1 = USART_WordLength_8b | USART_Parity_No | USART_Mode_Tx; USART1->CTLR2 = USART_StopBits_1; // Enable Tx DMA event USART1->CTLR3 = USART_DMAReq_Tx; // Set baud rate and enable UART USART1->BRR = ((FUNCONF_SYSTEM_CORE_CLOCK) + (UART_BR)/2) / (UART_BR); USART1->CTLR1 |= CTLR1_UE_Set; } static void dma_uart_setup(void) { // Enable DMA peripheral RCC->AHBPCENR = RCC_AHBPeriph_SRAM | RCC_AHBPeriph_DMA1; // Disable channel just in case there is a transfer in progress DMA1_Channel4->CFGR &= ~DMA_CFGR1_EN; // USART1 TX uses DMA channel 4 DMA1_Channel4->PADDR = (uint32_t)&USART1->DATAR; // MEM2MEM: 0 (memory to peripheral) // PL: 0 (low priority since UART is a relatively slow peripheral) // MSIZE/PSIZE: 0 (8-bit) // MINC: 1 (increase memory address) // CIRC: 0 (one shot) // DIR: 1 (read from memory) // TEIE: 0 (no tx error interrupt) // HTIE: 0 (no half tx interrupt) // TCIE: 1 (transmission complete interrupt enable) // EN: 0 (do not enable DMA yet) DMA1_Channel4->CFGR = DMA_CFGR1_MINC | DMA_CFGR1_DIR | DMA_CFGR1_TCIE; // Enable channel 4 interrupts NVIC_EnableIRQ(DMA1_Channel4_IRQn); } static void dma_uart_tx(const void *data, uint32_t len) { // Disable DMA channel (just in case a transfer is pending) DMA1_Channel4->CFGR &= ~DMA_CFGR1_EN; // Set transfer length and source address DMA1_Channel4->CNTR = len; DMA1_Channel4->MADDR = (uint32_t)data; // Enable DMA channel to start the transfer DMA1_Channel4->CFGR |= DMA_CFGR1_EN; } int main(void) { static const char message[] = "Hello World!!!\r\n"; SystemInit(); led_setup(); uart_setup(); dma_uart_setup(); while (1) { dma_uart_tx(message, sizeof(message) - 1); Delay_Ms(1000); } } 参考 CH32V003をArduinoで使う: DJ HIGO オフィシャルブログ ...

2025/01/16 · Last updated on 2025/03/14 · 2 min · 421 words

ソリオMA15S ELM327 複数PID同時問い合わせ

はじめに ELM327は複数PIDを同時に扱うことができ、時短になります。 車両が対応していれば、最大6byte(6個)のpidを同時に問い合わせ可能です。 ソリオは対応してる様です。 返答データが6byte以上だと、ELM327 データシートのMultiline Responses (p44/82)に記載があるように複数行で返ってきます。 使用したもの ELM327 v1.5 結果 PIDを一つずつ増やしていき、挙動を確認しました。 PID 1byte(1種類)(通常) > 0105 41 05 7A 送信 : 0x05 (Engine coolant temperature) 回答 : 0x7A 0x7A = 0d122 値 : 122 - 40 = 82℃ PID 2byte(2種類) > 01050c 41 05 7A 0C 0A 16 順番は service(01) PID1(05) PID1のdata(7A) PID2(0C) PID2のdata1(0A) PID2のdata2(16) PID1 : 0x05 PID2 送信 : 0x0c (Engine speed) 回答 : 0x0A16 0x0A = 0d10 0x16 = 0d22 値 : (256 * 10 + 22) / 4 = 645rpm PID 3byte(3種類) ...

2025/01/12 · Last updated on 2025/03/14 · 2 min · 332 words

ch32v003funをWindowsに構築しCH32V003F4P6でLチカ

はじめに ch32v003funの環境をWindowsに構築したメモです。 Installation · cnlohr/ch32fun Wikiの通りにやれば良いのですが、自分のまとめをしました。 環境 Windows10 CH32V003F4P6 Development board 詳細はアリエクで買ったCH32V003F4P6 Development board | atooshi-noteに記載 WCH-LinkE version 2.15 構築 githubからch32v003funを好きなフォルダにダウンロードします。 cnlohr/ch32fun: Open source minimal stack for the ch32 line of WCH processors, including the ch32v003, a 10¢ 48 MHz RISC-V Microcontroller - as well as many other chips within the ch32v/x line. 私は、C:\Users\USERNAME\Downloads\ch32v003funにgit cloneしました。 gccインストール Prebuilt GNU toolchain for RISC-Vから、risc-v-gcc10.1.0.exe (22 MB) をダウンロード、イントールします。 インストール先:C:\SysGCC The minichlink.exe file is already ready to go in the minichlink folder. ...

2025/01/06 · Last updated on 2025/03/14 · 3 min · 445 words

アリエクで買ったCH32V003F4P6 Development board

はじめに アリエクで買ったCH32V003F4P6 Development boardのメモです。 適当に買ってあったのですが、使う時に回路図がわからず調べました。 WCH-LinkEとDevelopment boardのセットで1000円ほどで買いました。以下です。 https://ja.aliexpress.com/item/1005005834050641.html Development board単体なら300円くらいです。 商品ページには回路図が載っていないのですが、一番下にドキュメントの記載がありました。 ドキュメント start [ICBbuy] 回路図 回路図は以下です。 developmentboard:ch32v003 [ICBbuy] LEDが2つ載ってますが、一つは電源投入で点灯するLED(PWR)です。 もう一つはLチカ確認用(D1)なのですが、PD4に接続されています。 以上:)

2025/01/06 · Last updated on 2025/03/14 · 1 min · 21 words

ArduinoでOBDをシミュレートしてELM327とつなぐ

はじめに 車両のOBDでデータを取りたいと思っていますが、車両で開発は大変なのでArduinoで車両をシミュレートする環境を作りました。 参考 以下を参考にさせていただきました。ありがとうございます。 環境 windows Arduino nano互換機 MCP_CAN_lib v1.5.1 ELM327 v2.1 MCP2515モジュール Car Scanner(Androidアプリ) OBDケーブル Arduino nano互換機 について 久々に使ったので、最初書き込みができなくて困りました。 IDEでOld Bootloaderを選択します。 MCP2515モジュール について Amazonで3個セット安いやつです。 KKHMF 3個 MCP2515 CAN バス モジュール TJA1050 SPI レシーバー Arduino AVR MCU ARM に対応 不良が混じっていることが多いみたいなのでモジュールを2つ使って動作確認をしました。 こちらは以下を参考にして動作確認をしました。ありがとうございます。 OBDケーブル について 以下を使用しました。 LoongGate OBD - II 16ピンオープンプラグワイヤを終了するには - OBD2 16ピンラウンド延長コネクタ診断ケーブル - 0.3メートル レビューには商品袋に記載のピンアサインと実際のピンアサインは違うとあったのでテスターチェックしましたが、商品袋に記載の通りでした。なのでGreen - CAN-H,Green/White - CAN-Lで接続しています。 Pin Color Function 4 Orange Chassis GND 5 Light blue Signal GND 6 Green CAN high 14 Green/white CAN low 16 Red 12V ...

2024/12/26 · Last updated on 2025/02/07 · 1 min · 150 words

ヘルシオAX-L1をArduinoで改造

中古のヘルシオAX-L1をメルカリで500円でゲットしました。 油汚れまくり、板金ボコボコ、プラパーツバキバキでしたが、壊れてなく(?)ラッキーな買い物でした。 しかし、使いづらいのがノブ 回すのですが、狙った番号にならない。通り過ぎちゃう。 なので、Arduinoで改造しました。 普段使うのは自動温めの3番,手動温めの29番なので、それを一瞬でできるようにプッシュスイッチをつけました。 ポチッとすると3番,29番になるような感じです。 ノブはロータリーエンコーダなので、パルス信号が出ています。 ポチった時にArduinoからパルス信号をだしてノブを模擬します。 3番がノブ3回転分なら、Arduinoから3回転分のパルスを出します。 いざヘルシオを開封 ノブの波形を見てみます。 適当に線を伸ばして 波形はしっかり2相ズレて出力されています。 回さないと3.3Vだったのでプルアップされています。 ノブ、スイッチの両方で動作するような回路にします。 といってもダイオードを入れただけです。 ダイオードのアノード側はヘルシオのロータリーエンコーダに並列に接続します。 スイッチを接続したポートはArduinoの内部プルアップとしました。 一応シミュレーションで見てみると大丈夫そうです。 スイッチを押してロータリーエンコーダを回していない時は、ダイオードが導通するためスイッチのプルアップ抵抗とロータリーエンコーダのプルアップ抵抗の両方から電流が流れます。 プルアップ抵抗が同値なら2倍の電流が流れますが、抵抗値はおそらく数kΩで電流は大した事ないので問題ないと思います。 ちなみにシミュレーション上の電圧などの定数は動作を見るためだけだったので適当です。 回路図はkicadで書きました。 githubにあげました。 atooshi-note/AX-L1 Arduinoのプログラムもgithubにあげてあります。 スイッチは以下の4つ実装します。 ノブ左1回転(left)、自動温め(atatame)、手動温め(syudou)、ノブ右1回転(right) 手動温めは29番で29回転は多いので後ろから数えています。 ノブ左1回転(left) 自動温め(atatame) 手動温め(syudou) ノブ右1回転(right) 動作が確認できたので、きれいに付けて ブレッドボードで最終動作確認して 基板に実装して固定。むき出し 便利!! 以上

2024/03/23 · Last updated on 2025/02/05 · 1 min · 39 words

にゃんCAM再構築

ことの経緯 以前、raspberry piにて猫カメラ(にゃんCAM)を構築しました。 普段はTapoを使っていたので全然出番が無かったのですが、久々に起動しようとしたら起動を繰り返す変な動作をしていました(デスクトップ表示→左上にアンダーバー点滅→再起動の繰り返し) 直そうと適当にやっていたらSDカードを割ってしまいました(物理的に)。 というわけで、再構築しようとしたのですが環境が変わってつまずいたので新たに記事にしました。 教訓 SDカードは色んな意味ですぐ死ぬ。クローンを作っておくこと ハード raspberry pi 3B(3B+ではない) 32GBのSDカード 5.1V出力のACアダプタ これはlow voltage errorの対策です 機能、ファイルの置き場など OpenCVでUSBカメラ(webカメラ等)2台を制御し、30分ごとにLINEで撮影画像を送信します 2台用でプログラムを書いてあるため、2台以外(1台or3台〜)ではプログラムがエラーになり、動作しません。(具体的にはプログラムエラー→再起動のループ)) 1台分にコメントアウトすれば1台でも動作します saikidou.serviceとsaikidou.timerによってラズパイを定期再起動させますが、ラズパイの安定性向上やUSBが死んでカメラが認識しなくなることが偶にあり、それを復帰させるために実施します USBが死ぬ(例えば、カメラが1台しか繋がってないような状態になります)と上記した通りnyancam.pyがエラーになり、nyancam.serviceによってプログラムの再起動を繰り返しますが、少なくとも定期再起動のタイミング(6時間ごと)で復帰するため長期にカメラが機能しなくなることはなくなります 死亡したときはプログラムの再起動が繰り返されるため、USBカメラのLEDが点滅します(LEDは撮影時に点灯) ラズパイのそばで対応できるなら再起動を待たずともUSBの抜き差しで再認識します(USBが復帰し、nyancam.serviceによる再起動でカメラが2台認識します) GPIO26に接続したスイッチを単押しするとテスト撮影、5秒以上長押しするとラズパイをシャットダウンします Filename Path Note nyancam.py /home/USERNAME/Desktop/ プログラム本体 nyancam.service /lib/systemd/system/ nyancam.pyを自動起動する エラー時にnyancam.pyを再起動する saikidou.service /lib/systemd/system/ ラズパイを定期再起動する saikidou.timer lib/systemd/system/ saikidou.serviceとセット githubにあげてあります プログラムの実行結果 nyancam.pyを実行した結果例を載せます カメラ検索でワーニングが出ますが、動作に問題ないためそのままにしています。 camera number 0 Find! [ WARN:0] global /tmp/pip-wheel-a8gfdc_n/opencv-python_13563f08137a4b20bc4dfee05bcbf854/opencv/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video1): can't open camera by index camera number 1 None camera number 2 Find! [ WARN:0] global /tmp/pip-wheel-a8gfdc_n/opencv-python_13563f08137a4b20bc4dfee05bcbf854/opencv/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video3): can't open camera by index camera number 3 None [ WARN:0] global /tmp/pip-wheel-a8gfdc_n/opencv-python_13563f08137a4b20bc4dfee05bcbf854/opencv/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video4): can't open camera by index camera number 4 None [ WARN:0] global /tmp/pip-wheel-a8gfdc_n/opencv-python_13563f08137a4b20bc4dfee05bcbf854/opencv/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video5): can't open camera by index camera number 5 None [ WARN:0] global /tmp/pip-wheel-a8gfdc_n/opencv-python_13563f08137a4b20bc4dfee05bcbf854/opencv/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video6): can't open camera by index camera number 6 None [ WARN:0] global /tmp/pip-wheel-a8gfdc_n/opencv-python_13563f08137a4b20bc4dfee05bcbf854/opencv/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video7): can't open camera by index camera number 7 None [ WARN:0] global /tmp/pip-wheel-a8gfdc_n/opencv-python_13563f08137a4b20bc4dfee05bcbf854/opencv/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video8): can't open camera by index camera number 8 None [ WARN:0] global /tmp/pip-wheel-a8gfdc_n/opencv-python_13563f08137a4b20bc4dfee05bcbf854/opencv/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video9): can't open camera by index camera number 9 None 接続されているカメラは 2 台です カメラ0 : 0 番 カメラ1 : 2 番 CamNum0 : 0 CamNum1 : 2 ### にゃんCAM 起動 ### rev:7 30.0分ごとに撮影しまーす! 接続カメラ : 2 台 2023-09-09 11:38:42.525746 カメラ0 うp残 : 46 / 50 カメラ1 3BはUSBブートがめんどいらしい SDカードを割ってしまったので、もっと(物理的に)丈夫なUSBメモリでbootさせることを考えました しかし、3B+はデフォルトでUSBブートができるのですが、3Bはできないようです 正確には色々変更すればできるようですが面倒なので見送りました ...

2023/09/07 · Last updated on 2023/09/23 · 3 min · 576 words