2020年02月22日

おすすめMakerプロジェクトサイト

今回は電子工作やモノづくりのヒントや種を見つける際に便利なサイトを紹介します。

■電子工作系プロジェクトサイト

■ハイレベルな電子工作系プロジェクトサイト

■メカ・ハードウェア系プロジェクトサイト

■日本のモノづくり紹介サイト

■海外電子部品CtoCサイト

■3Dプリント向けの3Dデータサイト

■電子部品販売サイト Digikey 新製品情報

■電子部品販売サイト Mouser 新製品情報

時間がある時に見ているとモノづくりのモチベーションが上がるサイトばかりです。単に情報収集だけでなく、応用や関連情報を探すのにも非常に役立ちます。
posted by Crescent at 00:00| Comment(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする

2020年02月15日

組込ビデオコントローラBT817

以前に組込ビデオコントローラを紹介してから、実際にDigital Video Shieldとして製品化しました。Digital Video Shieldでは汎用性を考え、BT816を選定しました。先日、BridgetekからBT817が発表されました。

発表資料によるとBT817はBT815/816の後継機種で下記のような特徴があるようです。

・BT815/816互換性有
・24bit 最大解像度1280x800
・BT815/816に比べてパフォーマンスが50%向上
・四角以外のLCDにも対応

最大解像度がBT815/816の800x600から拡大したことは魅力的ですが、HD対応でないのは少し残念です。HD対応であれば、後継版Digital Video Shieldも検討したのですが。一旦様子見というところです。少しニッチな組込ビデオコントローラという市場で毎年のように新しいビデオコントローラが発売されるのは頼もしい限りです。今後のHD対応に期待したいと思います。

posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2020年02月08日

UART割込み有効確認

STM32マイコンのシリアルUART受信の割込みについて少し紹介します。

STM32マイコンのHALライブラリを使用してUART受信をする場合は割込みHAL_UART_Receive_ITか、DMA受信転送HAL_UART_Receive_DMAのどちらかを多く使用します。

HAL_UART_Receiveを使用しない理由として、ブロッキング処理のためUART受信するまで他の処理が停止してしまいます。
一方、HAL_UART_Receive_IT、HAL_UART_Receive_DMAはノンブロッキング処理のため、他の処理をさせて、受信したときor受信後にのみ処理を走らせることができます。ノンブロッキング処理のUART受信処理をする場合は事前にHAL_UART_Receive_IT、HAL_UART_Receive_DMAを実行し、割込みを有効化する必要があります。受信するとHAL_UART_RxCpltCallback関数が呼び出されます。


ここで事前にHAL_UART_Receive_IT、HAL_UART_Receive_DMAを実行する際に注意すべきポイントがあります。別の処理で既に実行されていて、割込みが有効化されている場合に再度、実行するとエラーが発生します。エラーを避けるためにはUART割込み有効か確認して無効の場合にのみ実行するような処理が必要です。今回はその割込み有効確認の関数を紹介します。

■割込みHAL_UART_Receive_ITの場合

uint32_t UART_IsEnabledIT_RX(UART_HandleTypeDef *huart){
 #if defined(USART_CR1_FIFOEN)
  return ((READ_BIT(huart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE) == (USART_CR1_RXNEIE_RXFNEIE)) ? 1U : 0U);
 #else
  return ((READ_BIT(huart->Instance->CR1, USART_CR1_RXNEIE) == (USART_CR1_RXNEIE)) ? 1U : 0U);
 #endif
}

■DMA転送の場合
uint32_t UART_IsEnabledDMA_RX(UART_HandleTypeDef *huart){
 return (READ_BIT(huart->CR3, USART_CR3_DMAR) == (USART_CR3_DMAR));
}

上記の事前に確認して、すでに有効な場合は割込み有効化処理をしないといったことができるようになります。
posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2020年02月01日

Node-Redを用いた赤外線グリッドセンサ制御と可視化

前回紹介したNode-RedからのI2Cデバイス制御する方法に続いて、応用例を紹介します。

Node-Redはノードを結び付けてフローを作成してプログラミングできる他にNode-Red-dashboardを使用することで簡易的にUIを作って可視化することも簡単にできます。

今回はPanasonic製 赤外線グリッドセンサAMG8833とUSB-I2C変換アダプタを使用して取得したデータをNode-Red-dashboardで可視化してみました。Node-Red-dashboardに加えてNode-Red-ui-heatmapを追加しています。

Panasonic製 赤外線グリッドセンサAMG8833は8x8の赤外線アレイセンサです。画素は粗いものの比較的低価格で非接触でサーモカメラを実現できます。

Node-Redのフローは下記のように作成してみました。

Node-Red_AMG8833.png

全体のコードはこちらにアップしています。



指を横向きに近づけると下記のように温度変化を取得することができました。

AMG8833_finger.jpg


赤外線センサなので物の材質によって放射率が異なるため、接触温度計に比べると温度精度は期待できません。ただ、非接触で温度をざっくり測定できるのはやはり面白いセンサだと思いました。

Node-Red-dashboardはチャート(折れ線グラフ)、ゲージなど様々なUIが用意されているため、センサデータの可視化も容易に実現できます。他にもボタンやスイッチといったUIも用意されているので、USB-I2C変換アダプタと組み合わせた応用例を紹介したいと思います。

※追記
USB-I2C変換アダプタで使用しているSC18IM700のFIFOは16byteですが、16byteを超えるデータを要求して受信することができました。順次シリアルでデータを送信する仕様なようです。ただ、通信設定やデバイスによって受信できない場合もあると思われます。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2020年01月25日

Node-RedからのI2Cデバイス制御

今回はNode-RedからのI2Cデバイス制御する方法を紹介します。

Node-Redからセンサ等のI2Cデバイスを制御する場合、SBC(Raspberrypi等)にNode-Redをインストールして専用のノード(BME280VL53L0)でI2Cデバイスにアクセスすることが一般的です。他の方法としてArduinoを経由する方法などもあります。

専用ノードの場合はNode-Redを実行するハードウェアに依存するため、WindowsやMacではそのままのノードが使えません。

先日紹介したUSB-I2C変換アダプタを使用するとハードウェアの依存度を下げることができます。USB-I2C変換アダプタはシリアルCOMポートとして認識されるため、Node-Redのシリアルポートノードを使用することでSBC(Raspberrypi等)の他、WindowsやMacでもそのまま同じノード、フローを使用することができます。

なお、Node-RedのシリアルポートノードをWindowsで使用するためにはオンプレミス版Node-Redを使用する必要があります。こちらの記事を参考にしてください。



USB-I2C変換アダプタを使用してI2C接続タイプのLCDのAQM1602をNode-Redから制御してみました。



Node-Red_AQM1602.jpg

実際のNode-Redフローはこちらで公開しています。


I2CLCD.JPG

任意の文字列が表示できました。


また、I2Cデバイスのアドレスを取得してデバイス検索するコードも作成してみました。I2Cデバイスと通信できない場合にデバイスの動作確認やアドレスの確認として非常に便利です。

Node-Red_I2Cdevicesearch.jpg

実際のNode-Redフローはこちらで公開しています。

USB-I2C変換アダプタの応用例を今後、紹介してみたいと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする