adafruit

Activity

Stars and mentions · Last 30 days, Oct 6 – Nov 4

GitHub stars8
Mentions9
01234Oct 6Oct 20Nov 4
UTC days · repositories adafruit owns3 repositories

Top repositories

adafruit’s repositories ranked by new stars, as on trending.

Loading

Contributes to

Repositories outside adafruit’s account where adafruit opened or reviewed pull requests in the past 365 days.

Who noticed adafruit

Everyone who starred or forked adafruit’s repositories since the archive began in 2011.

Notable accounts

Ordered by the stars their own repositories have received.

Biggest fans

Accounts that starred the most of these repositories.

Breakout weeks

Each repository’s best week of new stars, with the release published around it.

Mentions

8posts
Nov 50 posts
  1. Continuing with the NAND Flash connected to the Raspberry Pico. There is a good example code from Adafruit for thr RP2040 to transform it into a USB mass storage device, using the Adafruit Tiny USB stack. The example code is running from SRAM (8kByte to be exact). The code can be found here: github.com/adafruit/Adafruit_TinyUSB_Arduino/blob… The idea is to simply rewrite the code to use my NAND Flash.

    1 comment
  2. MDBT50Q-1MV2を基板に直載せしてZMKを動かす:自作の基板定義で押さえた7つのポイント(ZMK v0.3) この記事について 自作キーボード「Ashiyu mini(足湯ミニ)」を設計しています。Pro Micro 型のコントローラー(nice!nano など)は使わず、無線モジュール MDBT50Q-1MV2(中身は nRF52840)を基板に直接載せました。 そのため、ZMK に用意されている「シールド」ではなく、基板そのものの定義(ボード定義)を自分で書く必要がありました。この記事は、その基板定義で押さえたポイントと、GitHub Actions でファームウェアのビルドが通るまでの記録です。 ! この記事を書いた時点では、基板はまだ届いていません(2026年10月に発注)。ビルドは通っていますが、実機での動作は未確認です。「未確認」と書いた所は、届いてから続編で報告します。 Ashiyu mini の概要 項目 内容 キー 67 個(F の段なし、日本語配列の記号キーあり) 接続 Bluetooth(接続先 3 つ)、USB ポインティング 中央にトラックパッド(Azoteq TPS65)。NUM ボタンでテンキーに切り替え その他 ダイヤル 2 個、キーのバックライト、状態表示 LED 電池 LiPo 3400 mAh(トラックパッドの下) 厚さ 平らな底板で机から上面まで 11.4 mm ファームウェア ZMK v0.3(専用の基板定義 ashiyu_mini) なぜ直載せにしたのか 理由は 2 つです。 薄くしたかった:Pro Micro 型のボードを使うと、ボードとピンヘッダの分だけ高くなります。 ピンが足りなかった:キー行列(6 行 × 12 列)に加えて、トラックパッドの I²C、状態表示 LED 用の 6 本、バックライト、ダイヤル 2 個(回転と押し込み)、RESET と BOOT のスイッチを使います。Pro Micro 型のボードでは、出ているピンが足りません。 代わりに、ボード定義を一から書くことになります。ここからがその中身です。 ファイル構成(ZMK v0.3 の形式) firmware/ boards/arm/ashiyu_mini/ ashiyu_mini.dts … ピン、キー行列、LED、電池、フラッシュの区割り ashiyu_mini-pinctrl.dtsi … I²C と PWM のピン ashiyu_mini-layout.dtsi … キーの物理配置(ZMK Studio が使う) ashiyu_mini_defconfig … 基板の既定の設定 Kconfig.board / Kconfig.defconfig board.c … 初回起動時の電圧設定など board.cmake / pre_dt_board.cmake zephyr/module.yml … このリポジトリを Zephyr のモジュールとして読ませる config/ west.yml / build.yaml / ashiyu_mini.conf / ashiyu_mini.keymap zephyr/module.yml で、基板定義とドライバーの置き場所を Zephyr に教えます。 zephyr/module.yml name: ashiyu_mini build: cmake: firmware kconfig: firmware/Kconfig settings: board_root: firmware dts_root: firmware ! ZMK の開発版は、新しい基板定義の形式(Zephyr の HWMv2)に移っています。この記事のファイル配置は ZMK v0.3(Zephyr 3.5)向けの古い形式なので、west.yml で ZMK を v0.3 に固定しています。新しい ZMK に上げるときは、基板定義の作り直しが必要です。 config/west.yml manifest: remotes: - name: zmkfirmware url-base: github.com/zmkfirmware projects: - name: zmk remote: zmkfirmware revision: v0.3 import: app/west.yml self: path: config ポイント1:VDD が 1.8 V のままになる(REGOUT0) いちばんハマりやすい所だと思います。 MDBT50Q に電池や USB の電源を VDDH から入れる「高電圧モード」では、チップ内部のレギュレーターが VDD を作ります。ところが工場出荷のままだと、VDD は 1.8 V しか出ません。3.3 V 前提の LED、トラックパッド、I²C のプルアップは、このままでは正しく動きません。 そこで、最初の起動で UICR の REGOUT0 に 3.3 V を書き込み、1 回だけ再起動するコードを board.c に入れました(Zephyr の nrf52840dongle の基板定義と同じ考え方です。あちらは 3.0 V)。 firmware/boards/arm/ashiyu_mini/board.c(抜粋) static int ashiyu_board_init(void) { /* 高電圧モードで動いていて、かつ REGOUT0 が初期値(1.8 V)のときだけ */ if ((nrf_power_mainregstatus_get(NRF_POWER) == NRF_POWER_MAINREGSTATUS_HIGH) && ((NRF_UICR->REGOUT0 & UICR_REGOUT0_VOUT_Msk) == (UICR_REGOUT0_VOUT_DEFAULT << UICR_REGOUT0_VOUT_Pos))) { NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Wen << NVMC_CONFIG_WEN_Pos; while (NRF_NVMC->READY == NVMC_READY_READY_Busy) {} NRF_UICR->REGOUT0 = (NRF_UICR->REGOUT0 & ~((uint32_t)UICR_REGOUT0_VOUT_Msk)) | (UICR_REGOUT0_VOUT_3V3 << UICR_REGOUT0_VOUT_Pos); NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Ren << NVMC_CONFIG_WEN_Pos; while (NRF_NVMC->READY == NVMC_READY_READY_Busy) {} NVIC_SystemReset(); /* 新しい VDD はリセット後に反映される */ } return 0; } SYS_INIT(ashiyu_board_init, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); 2 回目以降の起動では条件に当たらないので、何もしません。 ポイント2:32 kHz の水晶を載せない ピンを 1 本でも多く使いたかったので、32 kHz 水晶用のピン(P0.00 / P0.01)をキー行列の行に使いました。水晶が無いので、内部の RC 発振器を使う設定にします。 firmware/boards/arm/ashiyu_mini/ashiyu_mini_defconfig(抜粋) CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y ポイント3:NFC のピンと RESET のピン(UICR) P0.09 / P0.10 は、初期状態では NFC 用です。P0.09 をキー行列の列に使うため、普通の GPIO に切り替えます。 P0.18 は、背面の RESET スイッチにつなぎました。RESET ピンとして使う設定にします。 firmware/boards/arm/ashiyu_mini/ashiyu_mini.dts(抜粋) &uicr { nfct-pins-as-gpios; gpio-as-nreset; }; ポイント4:フラッシュの区割りはブートローダーに合わせる 秋月電子の MDBT50Q-1MV2(通販コード 117928)は、ブートローダー書き込み済みとして販売されています。中身は Adafruit nRF52 Bootloader と SoftDevice S140 6.1.1 という想定で、nice!nano と同じ区割りにしました。 区画 開始アドレス 大きさ 中身 sd_partition 0x00000 0x26000 SoftDevice(Bluetooth の土台) code_partition 0x26000 0xC6000 ZMK 本体(uf2 で書き込む部分) storage_partition 0xEC000 0x08000 設定の保存(接続先など) boot_partition 0xF4000 0x0C000 ブートローダー ! モジュールに実際に入っているブートローダーの版は、届いてから USB ドライブの INFO_UF2.TXT で確認します(未確認)。版が違った場合に備えて、SWD 端子(基板の TP1〜4)からブートローダーを書き直せるようにしてあります。 ポイント5:ブートローダーが読むボタンのピン Adafruit のブートローダー(pca10056 用のビルド)は、P0.11 を DFU ボタンとして読みます。そこで、背面の BOOT スイッチを P0.11 につなぎました。また、同じブートローダーが P0.12 も OTA 用の DFU ボタンとして読むので、P0.12 には何もつないでいません。 ポイント6:キー行列とダイヤルの押し込みを 1 つにまとめる ダイヤルの押し込みスイッチは、キー行列には入れず、GND に落ちる個別の GPIO にしました。zmk,kscan-composite で、キー行列(6 行 × 12 列)と個別 GPIO を 1 つのキースキャンにまとめ、ダイヤルを「7 行目」として扱っています。 firmware/boards/arm/ashiyu_mini/ashiyu_mini.dts(抜粋) kscan0: kscan0 { compatible = "zmk,kscan-composite"; rows = <7>; columns = <12>; wakeup-source; matrix { kscan = <&kscan_matrix>; }; dials { kscan = <&kscan_dials>; row-offset = <6>; }; }; ポイント7:ZMK Studio に対応させる ZMK Studio は、ブラウザー(zmk.studio )からキーの割り当てを変えられる ZMK 公式の仕組みです。対応させるために、次の 4 つを入れました。 物理配置(physical layout):各キーの位置と大きさ。chosen に zmk,physical-layout を指定します。Ashiyu mini では、キーの中心座標を書いた JSON から、Python スクリプトで ashiyu_mini-layout.dtsi を生成しています。 CONFIG_ZMK_STUDIO=y(config/ashiyu_mini.conf) snippet studio-rpc-usb-uart(USB でつなぐため。config/build.yaml) キーマップに &studio_unlock(Ashiyu mini では Fn+S。鍵を開けないと変更できません) config/build.yaml include: - board: ashiyu_mini snippet: studio-rpc-usb-uart 注意点もまとめておきます。 Studio で変えられるのは、キーの割り当てとレイヤー名です。コンボ、マクロの中身、長押しの時間、ダイヤルの割り当ては、今のところ .keymap を直してビルドし直します。 Bluetooth でつなぐ場合、ブラウザー版が使えるのは Linux だけです(Windows と Mac は専用アプリ)。ふだんは USB でつなぐのが確実です。 一度 Studio で保存すると、あとで .keymap を直して書き込んでも、Studio の内容が優先されます。.keymap の内容に戻すには、Studio の「Restore Stock Settings」を使います。 ! ZMK v0.3 のファームウェアと、今の zmk.studio がつながるかは未確認です。届いたら続編で報告します。 おまけ:深いスリープ中のダイヤルの電流 ダイヤルの A / B ピンは、内部のプルアップを使っています。ダイヤルが止まった位置で接点が閉じていると、深いスリープ中でも電流が流れ続けます(2 個で最大約 1 mA の見積もり)。 ZMK v0.3 のダイヤル用ドライバーには省電力の仕組みが無いので、board.c に小さなデバイスを作りました。ZMK が深いスリープに入る直前(SUSPEND)に、4 本のピンを切断してプルアップを外します。止まった位置で接点が開く品なら不要ですが、データシートに書かれていなかったので、念のため入れています(実際に閉じるかは、届いてからテスターで確認します)。 ビルド:GitHub Actions で 3 種類を作っておく 到着後に問題を切り分けやすいように、CI で 3 種類のファームウェアを作っています。 種類 中身 使いどころ 通常版 ZMK Studio(USB)入り ふだん使う USB ログ版 動作の記録を USB シリアルに出す 動かないときの調査 キーだけ版 トラックパッドのドライバーを外す(overlay で無効化) 最初の動作確認。トラックパッドをつなぐ前に、キー・ダイヤル・LED を確かめる ひとつハマった点があります。このリポジトリ自体を Zephyr のモジュールにしているため、リポジトリの中で west init すると、取得した Zephyr と zephyr/module.yml がぶつかりました。そこで、config/ だけを別のディレクトリにコピーして west init し、ビルドのときに -DZMK_EXTRA_MODULES でリポジトリを読ませています。 .github/workflows/zmk.yml(抜粋) - name: West build (ashiyu_mini, with ZMK Studio over USB and BLE) run: | cd /tmp/zmk-config west build -s zmk/app -d /tmp/build -b ashiyu_mini -S studio-rpc-usb-uart -- \ -DZMK_CONFIG=/tmp/zmk-config/config -DZMK_EXTRA_MODULES="${GITHUB_WORKSPACE}" できた .uf2 は、専用のブランチ(zmk-results)に置くようにしました。ビルドの記録も一緒に置くので、失敗したときに原因を git から読めます。 まだ確かめていないこと 秋月のモジュールに入っているブートローダーの版 ZMK Studio が今の Web アプリとつながるか ダイヤルが 1 クリックで 1 回動くか、止まった位置で接点が閉じるか 状態表示 LED の点き方、トラックパッドの向きと速さ 電池がどのくらい持つか 次回 基板が届いたら、次の順で進めて報告します。 無線モジュール(U1)をホットプレートで取り付ける(低温はんだ) 「キーだけ版」を書き込んで、キーとダイヤルを確認 ZMK Studio につながるか試す クレジット キー配列とケースの形状は、Salicylic_acid3 さんの ClickBoard と ACC Keycaps を元にしています(CC BY-NC 4.0)。 MDBT50Q のフットプリントは、Adafruit ItsyBitsy nRF52840 Express の基板データ(CC BY-SA)を元にしています。 基板定義のファイルは MIT ライセンスです。 参考 ZMK Studio(ZMK 公式ドキュメント) Adafruit nRF52 Bootloader

  3. Turn your Cytron MOTION 2350 Pro into a standalone air quality monitor with BleuIO and CircuitPython! In this tutorial we will use CircuitPython to turn a Cytron MOTION 2350 Pro into a HibouAir scanner. The board’s RP2350 has no Bluetooth radio of its own. A BleuIO dongle in the board’s USB-A host port provides Bluetooth Low Energy, and a short CircuitPython program talks to it with ordinary AT commands. The program scans for air quality monitoring device HibouAir advertisements, decodes them, and keeps the latest readings in global variables. One of them, the PM10 value from a HibouAir PM sensor, is ready to be used by the rest of your program. As an example, the program turns a hobby servo on one of the board’s servo ports into an analog PM10 gauge. Everything runs on the board. No computer is needed once the code is in place, and the HibouAir sensors do not need to be paired. Requirements ------------ Hardware - Cytron MOTION 2350 Pro - BleuIO USB dongle. This tutorial was tested with a BleuIO Pro, firmware 1.0.7.1. - One or more HibouAir air quality sensors. A HibouAir PM sensor is needed for the PM10 value. - A USB-C data cable between the board and your computer - Optional: a hobby servo for the PM10 gauge Software - CircuitPython 10.x for the Cytron MOTION 2350 Pro, from circuitpython.org. The tutorial uses 10.3.1. - Two libraries from the Adafruit CircuitPython Library Bundle for version 10.x, copied into the lib folder on the CIRCUITPY drive: - asyncio (the whole folder) - adafruit_ticks.mpy, which asyncio needs With circup installed on your computer, one command copies both: circup install asyncio Everything else the program uses is built into CircuitPython: usb_host, usb.core, json, binascii, microcontroller, pwmio and time. The servo is driven with pwmio directly, so it needs no extra library. No boot.py is needed. What Does This Project Do? -------------------------- 1. The board becomes a USB host The MOTION 2350 Pro’s USB-A port is driven by the RP2350’s PIO. CircuitPython starts it with usb_host.Port on GPIO24 and GPIO25. The board definition has no named pins for this port, so the program uses the raw pins. 2. CircuitPython finds BleuIO The program waits until a device with vendor ID 0x2DCF and product ID 0x6002 appears, which is BleuIO. It selects the dongle’s configuration and sets DTR and RTS, so that BleuIO starts sending its output. 3. The dongle is brought into a known state BleuIO remembers what it was doing, so a scan from an earlier run may still be going. The program first sends Ctrl-C three times to stop it. It then throws away everything the dongle sends until it has been quiet for 0.3 seconds. After that it sends: - ATE0, which turns echo off - ATV1, which turns verbose mode on, so every reply is one line of JSON 4. BleuIO scans for HibouAir only AT+FINDSCANDATA=FF5B07 This reports only advertisements that contain FF5B07. FF is the AD type for manufacturer-specific data, and 5B 07 is HibouAir’s company ID, 0x075B, as it appears in the packet. Each result arrives as a line such as: {"SF":127,"addr":"D9:63:8F:8E:01:0D","type":0,"data":"0201061BFF5B070504220095AE009627CF00AC014200000000000000019902"} 5. The board decodes the advertisement The program walks the advertisement’s AD structures until it finds the HibouAir manufacturer data. This works whether or not the flags field comes first. Counting from the company ID, the sensor beacon (beacon type 0x05) holds: | Offset | Field | Format | | :--- | :--- | :--- | | 2 | Beacon type | 0x05 for sensor readings | | 3 | Board type | 0x03 is the PM sensor | | 4–6 | Sensor ID | as shown in the HibouAir app, e.g. 22026A | | 9 | Pressure | 16-bit little-endian, tenths of hPa | | 11 | Temperature | 16-bit little-endian, signed, tenths of °C | | 13 | Humidity | 16-bit little-endian, tenths of %rh | | 17 | PM1.0 | 16-bit little-endian, tenths of µg/m³ | | 19 | PM2.5 | 16-bit little-endian, tenths of µg/m³ | | 21 | PM10 | 16-bit little-endian, tenths of µg/m³ | | 23 | CO2 | 16-bit big-endian, ppm | 6. The readings are kept in global variables - pm10: the latest PM10 value in µg/m³, or None until a PM sensor has been heard - pm10_sensor: the ID of the sensor it came from - pm10_time: time.monotonic() when it arrived, so that a stale value can be recognised - sensors: a dictionary with everything the last beacon of every HibouAir sensor said, keyed by sensor ID If you have more than one PM sensor, set PM_SENSOR_ID to the one pm10 should follow. If nothing has been heard for 15 seconds, the program starts the scan again. Showing PM10 on a Servo Gauge ----------------------------- The MOTION 2350 Pro has eight servo ports, on GP0 to GP7, each with a PWM channel of its own. The program drives a servo on GP0 as a needle: 0 µg/m³ at 0 degrees, and 100 µg/m³ or more at 180 degrees. With that full scale, the PM10 limits the HibouAir app uses fall at simple angles. That is where to draw the bands on a paper scale behind the servo arm: | PM10 | Level | Needle | | :--- | :--- | :--- | | 0–20 µg/m³ | Good | 0–36° | | 20–50 µg/m³ | Fair | 36–90° | | 50–100 µg/m³ | Poor | 90–180° | | 100 µg/m³ and above | Bad | 180° | The gauge is its own asyncio task, beside the reader and the command logic: - It sends a 50 Hz servo signal, from 500 µs at 0 degrees to 2500 µs at 180. - It moves the needle 2 degrees every 20 ms, so the arm swings to a new reading instead of jumping. - At start it sweeps once across the whole scale. A servo that is not connected is then noticed at once, instead of being taken for clean air. - Once the needle has been still for half a second, the pulses stop. A servo told to hold a position holds it actively, and at 0 degrees, the commonest reading of all, it pushes against its end stop and hums. Without pulses an ordinary hobby servo goes quiet and stays where it is. - The pulses start again when a new reading moves the needle by at least one degree, so readings of 0.0 and 0.1 µg/m³ taking turns do not wake it. Connect the servo to the GP0 servo header, matching the servo cable to the markings next to the header. Check Cytron’s datasheet for how the servo ports are supplied before connecting a larger servo. The settings are at the top of code.py: - SERVO_PIN: the port, board.GP0 to board.GP7 - PM10_FULL_SCALE: the PM10 value at 180 degrees - SERVO_MIN_US and SERVO_MAX_US: the pulse widths at the ends. Narrow them if your servo strains at its end stops. - SERVO_STEP_DEG: how fast the needle moves - SERVO_REST_S and SERVO_DEADBAND_DEG: how long the needle is still before it rests, and how far a reading must move it to wake it The board’s four DC motor drivers, on GP8 to GP15 (board.M1A to board.M4B in CircuitPython), would suit a different use of the same value, such as running a fan faster as PM10 rises. Why the Flush After Ctrl-C Matters ---------------------------------- Ctrl-C stops the scan, but whatever BleuIO had already queued still arrives afterwards. Often the last piece is a line cut off in the middle, sometimes with a byte that is not valid UTF-8. In early versions of this program, a reader that tried to decode that line before removing it from its buffer stuck on it. Every later piece of data was appended behind the same broken line, and the program heard nothing more, in about half of all restarts. The program now does two things: - It removes each line from the buffer before decoding it, so a broken line costs that line only. - It discards everything until the dongle has been quiet before sending the next command. With both in place, the start-up worked every time in repeated tests, whether the dongle was fresh (echo on, verbose off) or left in verbose mode by an earlier run. How to Run the Project ---------------------- Step 1: Install CircuitPython Download the CircuitPython UF2 for the Cytron MOTION 2350 Pro and put the board into its UF2 bootloader mode. On RP2350 boards this is done by holding BOOT while pressing RESET, or while connecting the USB cable. Copy the UF2 to the RP2350 drive that appears. The board restarts as a drive named CIRCUITPY. Step 2: Add the libraries Run circup install asyncio, or copy the asyncio folder and adafruit_ticks.mpy from the library bundle into CIRCUITPY/lib. Step 3: Copy the program Save the code at the end of this post as code.py on the CIRCUITPY drive. CircuitPython starts it as soon as the file is saved. Step 4: Connect BleuIO Insert the BleuIO dongle into the board’s USB-A port. Do not connect BleuIO to the computer for this setup. Step 5: Connect the servo (optional) Plug the servo into the GP0 servo header. It sweeps once from 0 to 180 degrees and back when the program starts, then follows PM10, and goes quiet whenever the needle is still. Step 6: Watch the serial console Open the board’s serial console at 115200 baud. Use Mu, Thonny or the CircuitPython web workflow, or on macOS and Linux: screen /dev/cu.usbmodem2101 115200 The device name differs from computer to computer. If the console shows raw REPL; CTRL-B to exit, an editor has left it in raw REPL mode: press Ctrl-B, then Ctrl-D to start code.py. Expected Output --------------- BleuIO dongle found! (0x2dcf:0x6002) CDC Control Lines (DTR/RTS) enabled. Starting background USB reader task... Starting the HibouAir scan... [Sending]: ATE0 [Sending]: ATV1 [Sending]: AT+FINDSCANDATA=FF5B07 [HibouAir 22026A] PM10 0.1 ug/m3 PM2.5 0.1 PM1 0.0 21.8 C [HibouAir 22008C] board 0x04, 21.5 C, 39.8 %rh, CO2 459 ppm [HibouAir 220095] board 0x04, 20.8 C, 42.9 %rh, CO2 411 ppm [HibouAir 22005A] board 0x04, 19.6 C, 44.2 %rh, CO2 721 ppm [HibouAir 220265] board 0x09, 19.8 C, 45.5 %rh, CO2 533 ppm Every HibouAir sensor in range appears with its ID. Lines from the PM sensor show the particle readings; the others show temperature, humidity and CO2. Each new PM line also updates pm10. The Code -------- Source code is available to download from smart-sensor-devices-ab/hibouair-with-circuitpython This project is a practical example of how BleuIO can bring Bluetooth Low Energy connectivity to development boards without built-in Bluetooth support. Using the Cytron MOTION 2350 Pro and CircuitPython, we demonstrated how to scan for HibouAir sensors, read real-time data, and use that data to control a servo motor. The complete source code is available for developers to explore, modify, and integrate into their own projects. Whether you’re building sensor monitoring systems, automation solutions, or custom IoT applications, this example provides a starting point for using BleuIO with compatible development boards.

  4. CircuitPython 这个入门方式挺讨喜:在支持 USB 文件工作流的板子上,直接编辑 CIRCUITPY 盘里的 code.xn--py,-bm0et1kmrcg7u7g9evszae3e. 想做小装置,又不想一开始就折腾编译环境,可以从这里入手。 adafruit/circuitpython t.co

    23 views
  5. AdafruitのLCDライブラリに対する4年後しの変更要望が受理されて公開された これにより番号が127を超えるGPIOピンでもライブラリを使える github.com/adafruit/Adafruit_ILI9341/releases/tag…

    1 like · 9 views
  6. YouTube · · YouTube description · Brincando com Ideias · adafruit/Adafruit_SSD1306

    Casa Inteligente do Zero: Display OLED no ESP32 com Ícones e Dados do HAOS! | TM2 #27 🖥️ Neste episódio, você vai aprender a usar um display OLED I2C com o ESP32 para exibir dados da sua automação com ícones — integrado ao Home Assistant via MQTT! O OLED tem resolução muito superior ao LCD — imagem mais nítida, menor e sem necessidade de retroiluminação. E o resultado visual é muito mais bonito para a sua casa inteligente! Neste episódio você vai aprender: ✅ Como montar o circuito do display OLED I2C com ESP32 ✅ Como usar o I2C Scanner para encontrar o endereço do display ✅ Como explorar os ícones disponíveis na biblioteca ✅ Como testar o display OLED e entender sua resolução ✅ Como programar o ESP32 para capturar temperatura e umidade via MQTT do Home Assistant e exibir no display com ícones 📂 Sketches do vídeo (GitHub): 👉 canalBrincandoComIdeias/Q1164 Esta é a vigésima sétima aula da série Tutorial Maker II: do zero até uma casa inteligente completa com ESP32, MQTT, automações e Inteligência Artificial — tudo explicado do jeito BKI! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📚 QUER APRENDER ARDUINO E ESP32 DO ZERO? Acesse o Clube do Arduino — cursos completos, projetos práticos e uma comunidade incrível de makers: 👉 clubedoarduino.net ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🔗 LINKS ÚTEIS Sketches do vídeo: canalBrincandoComIdeias/Q1164 Home Assistant: home-assistant.io Biblioteca Adafruit SSD1306: adafruit/Adafruit_SSD1306 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🤝 REALIZAÇÃO E PATROCÍNIO Este projeto é patrocinado pela Petrobras por meio do Programa Tutorial Maker II. 🌐 petrobras.com.br ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ #DisplayOLED #I2C #ESP32 #HomeAssistant #CasaInteligente #Arduino #TutorialMaker #tutorialmaker [en-US] Smart Home from Scratch: OLED Display on ESP32 with Icons and HAOS Data! | TM2 #27 🖥️ In this episode, you'll learn how to use an I2C OLED display with the ESP32 to display your home automation data with icons — integrated with Home Assistant via MQTT! OLED has a much higher resolution than LCD — a sharper, smaller image, and no need for backlighting. And the visual result is much more beautiful for your smart home! In this episode you will learn: ✅ How to assemble the I2C OLED display circuit with ESP32 ✅ How to use the I2C Scanner to find the display address ✅ How to explore the icons available in the library ✅ How to test the OLED display and understand its resolution ✅ How to program the ESP32 to capture temperature and humidity via MQTT from Home Assistant and display it on the screen with icons 📂 Sketches from the video (GitHub): 👉 canalBrincandoComIdeias/Q1164 This is the twenty-seventh lesson in the Tutorial Maker II series: from zero to a complete smart home with ESP32, MQTT, automations and Artificial Intelligence — all explained the BKI way! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📚 WANT TO LEARN ARDUINO AND ESP32 FROM SCRATCH? Access the Arduino Club — complete courses, practical projects, and an incredible community of makers: 👉 clubedoarduino.net ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🔗 USEFUL LINKS Video sketches: canalBrincandoComIdeias/Q1164 Home Assistant: home-assistant.io Adafruit SSD1306 Library: adafruit/Adafruit_SSD1306 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🤝 PROJECT PRODUCTION AND SPONSORSHIP This project is sponsored by Petrobras through the Tutorial Maker II Program. 🌐 petrobras.com.br ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ #DisplayOLED #I2C #ESP32 #HomeAssistant #CasaInteligente #Arduino #TutorialMaker #tutorialmaker [es-US] Casa Inteligente desde cero: Pantalla OLED en ESP32 con iconos y datos de HAOS! | TM2 #27 🖥️ En este episodio, aprenderás a usar una pantalla OLED I2C con el ESP32 para mostrar los datos de tu domótica con iconos, ¡integrada con Home Assistant mediante MQTT! La resolución OLED es mucho mayor que la LCD: una imagen más nítida y compacta, sin necesidad de retroiluminación. ¡Y el resultado visual es mucho más atractivo para tu hogar inteligente! En este episodio aprenderás: ✅ Cómo ensamblar el circuito de la pantalla OLED I2C con ESP32 ✅ Cómo usar el escáner I2C para encontrar la dirección de la pantalla ✅ Cómo explorar los iconos disponibles en la biblioteca ✅ Cómo probar la pantalla OLED y comprender su resolución ✅ Cómo programar el ESP32 para capturar la temperatura y la humedad mediante MQTT desde Home Assistant y mostrarlas en la pantalla con iconos 📂 Bocetos del video (GitHub): 👉 canalBrincandoComIdeias/Q1164 Esta es la vigésimo séptima lección de la serie Tutorial Maker II: desde cero hasta un hogar inteligente completo con ESP32, MQTT, automatizaciones e Inteligencia Artificial, ¡todo explicado al estilo BKI! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📚 ¿QUIERES APRENDER ARDUINO Y ESP32 DESDE CERO? Accede al Club Arduino: cursos completos, proyectos prácticos y una increíble comunidad de creadores: 👉 clubedoarduino.net ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🔗 ENLACES ÚTILES Videos: canalBrincandoComIdeias/Q1164 Home Assistant: home-assistant.io Librería Adafruit SSD1306: adafruit/Adafruit_SSD1306 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🤝 PRODUCCIÓN Y PATROCINIO DEL PROYECTO Este proyecto está patrocinado por Petrobras a través del Programa Tutorial Maker II. 🌐 petrobras.com.br ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ #DisplayOLED #I2C #ESP32 #HomeAssistant #CasaInteligente #Arduino #TutorialMaker #tutorialmaker

    120 likes · 3 comments · 11,579 views
  7. DS3231 / RTClib 2.1.4: log lostPower() before adjust(), which clears OSF. After a backup-power test, read OSF and compare elapsed time before setting the clock again. Verify I2C transfers separately; lostPower() only returns a flag. github.com/adafruit/RTClib/blob/5298434167b770c46… t.co

    41 views
  8. 4 encoder board, I would like to make a custom version, is the firmware available? It is nice that the board is on github , but you can't really modify it without firmware for the MCU. All i want to do is change the encoder spacing.

    3 points · 2 comments

Achievements

Awards earned by the repositories adafruit owns. Select an award to embed its badge.

No awards yet

Repositories earn awards by reaching the top three in a completed trending day or week.

A repository earns an award for finishing first, second or third in a completed trending day or week, ranked by new stars, new forks or pull request authors. Awards follow a repository through renames and transfers and count toward its current owner. Weeks run Monday to Sunday, UTC.