Dashboard sketch

Dashboard sketch

Keep the old integrated motherboard Bluetooth adapter disabled, and allow the new USB Bluetooth dongle to work normally.
In my case:
USB\VID_0BDA&PID_8922\00E04C885A01USB\VID_2357&PID_0604\0CEF154771C0Windows can disable a specific Plug and Play device by device instance ID, and Group Policy can block installation by hardware ID and device instance ID, including devices that are already installed.
Use this command to list Bluetooth devices:
Get-PnpDevice -Class Bluetooth | Format-Table Status,Class,FriendlyName,InstanceId -Auto
Get-PnpDevice shows the device names and their instance IDs, which is what you need to target the exact old adapter.
Look for the entries named:
Generic Bluetooth AdapterIn my case, the two radios were:
USB\VID_0BDA&PID_8922\00E04C885A01
USB\VID_2357&PID_0604\0CEF154771C0
Do not confuse these with the many BTHLE..., Microsoft Bluetooth Enumerator, Generic Access Profile, or Device Information Service entries. Those are usually child devices or Bluetooth services, not the main radio.
Before disabling the old one, unplug the new USB Bluetooth dongle.
This avoids confusion while locking down the internal adapter.
Run this in PowerShell as Administrator:
Disable-PnpDevice -InstanceId "USB\VID_0BDA&PID_8922\00E04C885A01" -Confirm:$false
Disable-PnpDevice is the built-in Microsoft PowerShell cmdlet for disabling a PnP device, and it requires administrator rights.
Then verify it:
Get-PnpDevice -PresentOnly | Where-Object {$_.InstanceId -like "USB\VID_0BDA&PID_8922*"} | Format-List FriendlyName,Status,InstanceId
A result like Status : Error is acceptable here if the goal is to stop the integrated Bluetooth radio from functioning.
Open:
gpedit.msc
Go to:
Computer Configuration > Administrative Templates > System > Device Installation > Device Installation Restrictions
Enable these policies:
Set to Enabled and add:
USB\VID_0BDA&PID_8922
Set to Enabled and add:
USB\VID_0BDA&PID_8922\00E04C885A01
Set to Enabled
Set to Disabled
Microsoft documents these device installation restriction policies, including blocking by hardware ID, blocking by instance ID, and applying the restriction to already installed devices. Prevent policies take precedence by default.
Open Command Prompt as Administrator and run:
gpupdate /force
Restart Windows with the TP-Link dongle still removed.
After reboot, run:
Get-PnpDevice -PresentOnly | Where-Object {$_.InstanceId -like "USB\VID_0BDA&PID_8922*"} | Format-List FriendlyName,Status,InstanceId
If the old Realtek still shows as broken, disabled, or not functioning, that is fine.
If it comes back with a different full instance ID, keep the hardware ID block and add the new full instance ID to the instance-ID restriction list too. A device instance ID uniquely identifies a specific device node in Windows.
Now reconnect the TP-Link adapter.
Then check both adapters:
Get-PnpDevice -PresentOnly | Where-Object {$_.InstanceId -like "USB\VID_0BDA&PID_8922*" -or $_.InstanceId -like "USB\VID_2357&PID_0604*"} | Format-Table Status,FriendlyName,InstanceId -Auto
Expected good result:
Error Generic Bluetooth Adapter USB\VID_0BDA&PID_8922\...
OK Generic Bluetooth Adapter USB\VID_2357&PID_0604\...
Open Command Prompt as Administrator and run:
pnputil /disable-device "USB\VID_0BDA&PID_8922\00E04C885A01"
Microsoft documents pnputil as a built-in Windows tool, and /disable-device is the supported command for disabling a device by instance ID.
Then reboot and check again.
For integrated motherboard hardware, uninstalling often does not stick across reboot because Windows re-detects the hardware and recreates it.
Do not block Bluetooth by class or by a broad rule, or you may accidentally block the new USB dongle too.
Only block the exact old device using:
USB\VID_0BDA&PID_8922
USB\VID_0BDA&PID_8922\00E04C885A01
Windows treats hardware IDs and instance IDs differently, and the instance ID is the exact per-device identifier.
That is normal. Many internal Wi-Fi/Bluetooth combo modules expose the Bluetooth side over an internal USB connection.
Get-PnpDevice -Class Bluetooth | Format-Table Status,Class,FriendlyName,InstanceId -Auto
Disable-PnpDevice -InstanceId "USB\VID_0BDA&PID_8922\00E04C885A01" -Confirm:$false
Get-PnpDevice -PresentOnly | Where-Object {$_.InstanceId -like "USB\VID_0BDA&PID_8922*"} | Format-List FriendlyName,Status,InstanceId
Get-PnpDevice -PresentOnly | Where-Object {$_.InstanceId -like "USB\VID_0BDA&PID_8922*" -or $_.InstanceId -like "USB\VID_2357&PID_0604*"} | Format-Table Status,FriendlyName,InstanceId -Auto
pnputil /disable-device "USB\VID_0BDA&PID_8922\00E04C885A01"
gpupdate /force
USB\VID_0BDA&PID_8922
USB\VID_0BDA&PID_8922\00E04C885A01
Good final state:
That means Windows is using the new USB Bluetooth adapter and not the old motherboard one.
FreshRSS
anythingLLM
Darkmoon Fair crafting reagents

leatherwork lure locations MIDNIGHT
/way Voidstorm 54, 65 /way Eversong Woods:Quel'Thalas 42, 79.94 /way Zul'Aman 48, 54 /way Harandar 66.2, 48.2 /way #2405 43.24 82.83 Great Lure
....



...


Π‘Π»Π΅Π΄ Π΄ΠΎΡΡΠ° ΡΠΎΠ²Π΅Π½Π΅ ΠΈΠ· google ΠΏΠΎ ΡΠ΅ΠΌΠ°ΡΠ°, ΠΈ Π΅ΡΠΊΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° ΠΎΠΏΠΈΡΠ° Π½Π° ΠΊΠ°ΠΊΠ²ΠΈ Π»ΠΈ Π½Π΅ Ρ ΠΎΡΠ°, Π½Π°ΠΉ-Π½Π°ΠΊΡΠ°Ρ ΡΡΠΏΡΡ ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°ΠΌΠ΅ Π²ΡΠΏΡΠΎΡΠ½ΠΎΡΠΎ TFT-Π΄ΠΈΡΠΏΠ»Π΅ΠΉΡΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ. "ΠΠ»ΡΡΡΡ Π·Π° ΠΏΠ°Π»Π°ΡΠΊΠ°ΡΠ°" ΡΠ΅ ΠΎΠΊΠ°Π·Π° level-shifter-Π° CD4050BE. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Ρ ΡΠ΅Π·ΠΈΡΡΠΎΡΠ½ΠΈ Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ ΠΎΠΏΠΈΡΠΈΡΠ΅ Π±ΡΡ Π° Π±Π΅Π·ΡΡΠΏΠ΅ΡΠ½ΠΈ. ΠΡΠΎΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΊΠ°ΠΊΡΠΎ Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π·Π° ΠΡΠ΄ΡΠΈΠ½ΠΎ Π±Π΅ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ°ΡΠ° ΠΈ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. Π’ΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° ΡΠ΅ ΡΡΠΎΠ±ΡΠ°Π·ΡΠ²Π° ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° Nano, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΡ Π·Π° ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΎΡ Π΄Π° ΡΠ΅ΡΠ΅ΠΌ Mega Π΅ Π΄ΠΎΡΡΠ° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠ°. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, Ρ ΠΊΠΎΡΡΠΎ ΡΡΠΏΡΡ ΠΌΠ΅ Π΄Π° Π½Π°ΠΊΠ°ΡΠ°ΠΌΠ΅ Π΄ΠΈΡΠΏΠ»Π΅ΡΡ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΠΏΡΠ΅ΡΡΡΠΏΡΠ½ΠΎ ΡΠ΅Π΄ΡΡΠΈΡΠ°Π½Π΅ Π·Π°Π΅ΠΌΠ°ΡΠ΅ Π½Π°Π΄ 70% ΠΎΡ ΠΏΠ°ΠΌΠ΅ΡΡΠ°. Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΡΠ΅ ΡΠΏΡΡΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΡΠΎ ΠΊΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Π³ΡΠ°ΡΠΈΡΠ΅Π½ ΡΠ΅ΡΡ + Π΄Π²Π΅ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½ΡΠΆΠ½ΠΈ Π·Π° Π½Π΅Π³ΠΎ - ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π·Π°Π΅ΡΠ° Π² Nano ΡΠ΅ ΡΠ²Π΅Π΄Π΅ Π΄ΠΎ 50%.
ΠΠΈΡΠΏΠ»Π΅ΡΡ Ρ ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Ρ ΠΌΠ΅ Π΅ ΡΠ»Π΅Π΄Π½ΠΈΡΡ:


ΠΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΈΠ½ΠΎΠ²Π΅ΡΠ΅:
ΠΠΈΠ½ | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ -------------- (1) - Vcc (2) - Gnd (3) - CS (4) - RESET (5) - D/C (6) - MOSI (7) - SCK (8) - LED (9) - MISO
TFT-ΡΠΎ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π΄ΠΈΡΠΏΠ»Π΅ΠΈ ΡΠ°Π±ΠΎΡΠΈ Π½Π° 3.3v - ΠΊΠ°ΠΊΡΠΎ ΠΊΠ°ΡΠΎ Π·Π°Ρ ΡΠ°Π½Π²Π°Π½Π΅, ΡΠ°ΠΊΠ° ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΌΡ ΡΠΈΠ³Π½Π°Π»ΠΈ. ΠΠ° ΡΠ΅Π»ΡΠ° Π±Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π½ΡΠΊΠ°ΠΊΡΠ² level-shifting ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΊΠ°ΠΊΡΠΎ Nano, ΡΠ°ΠΊΠ° ΠΈ Uno, ΠΈ MEGA ΡΠ°Π±ΠΎΡΡΡ Π½Π° 5v. EΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡ Π²Π°ΡΠΈΠ°Π½Ρ Ρ ΠΊΠΎΠΉΡΠΎ ΠΈΠΌΠ°Ρ ΠΌΠ΅ ΡΡΠΏΠ΅Ρ Π±Π΅ Ρ CD4050BE.
ΠΡΠΎ ΠΈ ΡΡΠ»ΠΎΡΡΠ½Π°ΡΠ° ΡΡ Π΅ΠΌΠ° Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅Ρ ΠΊΡΠΌ Arduino Nano ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ CD4050BE, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° LED ΠΏΠΎΠ΄ΡΡΠ²Π΅ΡΠΊΠ°ΡΠ°. ΠΠ° ΡΠ»Π΅ΡΠ½Π΅Π½ΠΈΠ΅ ΡΠ΅ Π³ΠΎ Π½Π°ΡΠΈΡΠ°ΠΌΠ΅ tft-driver:


Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° Arduino Nano ΠΊΡΠΌ tft-driver-Π°:
ΠΏΠΈΠ½ | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ (ΠΏΠΈΠ½ΠΎΠ²Π΅ Π½Π° tft-driver, ΠΊΠΎΠ½Π΅ΠΊΡΠΎΡ SV2/PLC) ------------------------- 3.3v - (1) Vcc GND - (2) Gnd D10 - (3) CS D4 - (4) RST (RESET) D11 - (5) MOSI D7 - (6) LED D13 - (7) SCK D9 - (8) DC D12 - (9) MISO
ΠΠ°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠΌΠ½ΠΈ, ΡΠ΅ MOSI, MISO ΠΈ SCK ΡΠ° ΡΠΈΠΊΡΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΡΠΎ ΠΏΠΈΠ½ΠΎΠ²Π΅, Π·Π° Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ hardware-Π½ΠΎ SPI, ΡΠ΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈ. ΠΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ (RST, LED, DC, CS) ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΈ Π½Π° Π΄ΡΡΠ³ΠΈ ΠΏΠΈΠ½ΠΎΠ²Π΅ ΠΎΡ Π³ΠΎΡΠ΅-ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΡΠ΅, Π½ΠΎ ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΎΡΡΠ°Π·Π΅Π½Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈΡ ΠΊΠΎΠ΄.
ΠΠ°ΡΠΈΠ½ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π² ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΎΡ Π½Π°Ρ ΡΡ Π΅ΠΌΠ° Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅:
#include < SPI.h >
#include < Adafruit_GFX.h >
#include < Adafruit_ILI9341.h >
// TFT Π΄ΠΈΡΠΏΠ»Π΅ΡΡ ΠΈ ΡΠ»ΠΎΡΡΡ Π·Π° SD ΠΊΠ°ΡΡΠΈ ΠΏΠΎΠ΄Π΅Π»ΡΡ Ρ
Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈΡΡ SPI ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
// Π₯Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈΡΠ΅ SPI-ΠΏΠΈΠ½ΠΎΠ²Π΅ ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΌΠΎΠ΄Π΅Π» Arduino ΠΈ Π½Π΅ ΠΌΠΎΠ³Π°Ρ
// Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½ΡΠ½ΠΈ Ρ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ.
// ΠΠ° Uno, Nano, Duemilanove ΠΈ Ρ.Π½. :
// ΠΏΠΈΠ½ 11 = MOSI, ΠΏΠΈΠ½ 12 = MISO, ΠΏΠΈΠ½ 13 = SCK.
// ΠΠ° MEGA:
// ΠΏΠΈΠ½ 51 = MOSI, ΠΏΠΈΠ½ 50 = MISO, ΠΏΠΈΠ½ 52 = SCK.
#define TFT_RST 4
#define TFT_LED 7
#define TFT_DC 9
#define TFT_CS 10
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
void setup() {
//ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ Π΄Π²Π° ΡΠ΅Π΄Π° ΡΠ° Π·Π° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠ²Π΅ΡΠ»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΅ΠΊΡΠ°Π½Π°
pinMode(TFT_LED,OUTPUT);
digitalWrite(TFT_LED,HIGH);
tft.begin();
}
void loop(void) {
for(uint8_t rotation=0; rotation<4; rotation++) {
tft.setRotation(rotation);
tft.fillScreen(ILI9341_BLACK);
tft.setCursor(0, 0);
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(1);
tft.println("Hello World!");
tft.setTextColor(ILI9341_YELLOW); tft.setTextSize(2);
tft.println(9999.99);
tft.setTextColor(ILI9341_RED); tft.setTextSize(3);
tft.println(0xDEADBEEF, HEX);
tft.println();
tft.setTextColor(ILI9341_GREEN);
tft.setTextSize(5);
tft.println("Test 1");
tft.setTextSize(2);
tft.println("Test 2");
tft.setTextSize(1);
tft.println("Test 3");
tft.println("Test 4");
tft.println("Test text line 5");
delay(1000);
}
}
ΠΡΠΎ Π³ΠΈ ΠΈ Π΄Π²Π΅ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅: ILI9341.zip
ΠΠΈΠ½ΠΊ ΠΊΡΠΌ Π²ΠΈΠ΄Π΅ΠΎ Π΄Π΅ΠΌΠΎ: https://youtu.be/xMLieysoa3c?si=W1qnoyaa-xkL8Cxt
NRF24L01 ΡΠ΅ Π·Π°Ρ ΡΠ°Π½Π²Π° Ρ 3.3v. ΠΠ΄Π½Π° ΠΎΡ Ρ ΡΠ±Π°Π²ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈ Π½Π° ΡΠ΅Π·ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π΅, ΡΠ΅ Π½ΠΈΠ²Π°ΡΠ° Π½Π° ΡΠΈΠ³Π½Π°Π»ΠΈΡΠ΅ Π·Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ Ρ ΠΡΠ΄ΡΠΈΠ½ΠΎ ΡΠ°Π±ΠΎΡΡΡ ΠΊΠ°ΠΊΡΠΎ Π½Π° 3.3v, ΡΠ°ΠΊΠ° ΠΈ Π½Π° 5v, Π·Π° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ WiFi ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ ESP8266, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΡΠ°ΠΌΠΎ Π½Π° 3.3v. ΠΡΠΈ ΠΏΡΡΠ²ΠΈΡΠ΅ ΠΎΠΏΠΈΡΠΈ Π·Π° ΠΏΠΎΠ΄ΠΊΠ°ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²Π° nRF ΠΌΠΎΠ΄ΡΠ»Π° ΠΈΠ»ΠΈ Π½Π΅ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠ²Π° Π²ΡΡΠ·ΠΊΠ°, ΠΈΠ»ΠΈ Π² Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ Π±Π΅ΡΠ΅ ΡΠ°ΠΌΠΎ Π² Π΅Π΄Π½Π°ΡΠ° ΠΏΠΎΡΠΎΠΊΠ°. ΠΠ΄ΠΈΠ½ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΡ Π·Π°Ρ ΡΠ°Π½Π²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ - Π½ΡΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ»Π·Π²Π° ΠΊΠΎΠ½Π΄Π΅Π½Π·Π°ΡΠΎΡ ΠΊΠ°ΡΠΎ ΡΠΈΠ»ΡΡΡ. ΠΠ° ΡΠ΅Π»ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Vcc (3.3v) ΠΈ Gnd ΡΠ²ΡΡΠ·Π°Ρ Π΅Π΄ΠΈΠ½ ΠΊΠΎΠ½Π΄Π΅Π½Π·Π°ΡΠΎΡ 47Β΅f. ΠΠ΅ΡΠΎΡΡΠ½ΠΎ ΡΠ΅ Π΅ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ»Π·Π²Π° ΠΎΡΠ΄Π΅Π»Π½ΠΎ Π·Π°Ρ ΡΠ°Π½Π²Π°Π½Π΅ Ρ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ.

Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ Π·Π°Ρ ΡΠ°Π½ΠΈΡ ΠΌΠ΅ nRF24L01 ΠΌΠΎΠ΄ΡΠ»Π°, Π²ΡΠ΅ΠΌΠ΅ Π΅ Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΠΌ ΠΈ ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΠΏΠΈΠ½ΠΎΠ²Π΅ ΠΊΡΠΌ ΠΡΠ΄ΡΠΈΠ½ΠΎ-ΡΠΎ.

ΠΠΎΠΌΠ΅ΡΠ°ΡΠΈΡ Π½Π° ΠΏΠΈΠ½ΠΎΠ²Π΅ΡΠ΅ Π½Π° nRF24L01:
1 GND 2 VCC 3 CE 4 CSN 5 SCK 6 MOSI 7 MISO 8 IRQ
ΠΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Arduino Nano:
nRF24L01 | Nano ---------------- (GND) 1 Gnd (VCC) 2 3.3v (CE) 3 D9 (CSN) 4 D10 (SCK) 5 D13 (MOSI) 6 D11 (MISO) 7 D12 (IRQ) 8 ΠΠ΅ ΡΠ΅ ΠΏΠΎΠ»Π·Π²Π°
ΠΠΊΠΎ ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Arduino Mega:
nRF24L01 | Mega ---------------- (GND) 1 Gnd (VCC) 2 3.3v (CE) 3 D8 (CSN) 4 D7 (SCK) 5 D52 (MOSI) 6 D51 (MISO) 7 D50 (IRQ) 8 ΠΠ΅ ΡΠ΅ ΠΏΠΎΠ»Π·Π²Π°
ΠΠ΄Π²Π° ΡΠ΅Π΄ Π½Π° ΡΠΎΡΡΡΠ΅ΡΠ°. ΠΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° NF24L01 (download).
ΠΠ΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ:
// ΠΠ΅ΠΊΠ»Π°ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ ΠΈ ΠΏΠΈΠ½ΠΎΠ²Π΅
#define CE_PIN 9 //ΠΠ° MEGA ΠΏΠΈΠ½ 8
#define CSN_PIN 10 //ΠΠ° MEGA ΠΏΠΈΠ½ 7
// ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: "LL" Π² ΠΊΡΠ°ΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΡΠ° Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π·Π° ΡΠΈΠΏ "LongLong"
const uint64_t pipe = 0x0102030405LL; // ΠΠ΅ΡΠΈΠ½ΠΈΡΠΈΡ Π½Π° Π°Π΄ΡΠ΅Ρ Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡ
// ΠΠ΅ΠΊΠ»Π°ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ
RF24 radio(CE_PIN, CSN_PIN); // Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π΄ΠΈΠΎ-ΠΎΠ±Π΅ΠΊΡ
void setup()
{
Serial.begin(9600);
//ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ°Π΄ΠΈΠΎ ΠΎΠ±Π΅ΠΊΡΠ° ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ΡΠΎ ΠΌΡ Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΏΡΠΈΠ΅ΠΌΠ°Π½Π΅
radio.begin();
radio.openReadingPipe(1, pipe);
radio.startListening();
}
ΠΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅ΡΠ΅Π½ Loop():
int ccTest = 0;
void loop()
{
String recievedData = NRF24Listener(); //ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠΎΠΈ Π² loop-Π°(ΡΠ»ΡΡΠ°ΠΌΠ΅ Π·Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Ρ Π΄Π°Π½Π½ΠΈ)
if (recievedData != "") //ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π΄Π°Π»ΠΈ ΠΈΠΌΠ° ΠΏΡΠΈΠ΅Ρ ΠΏΠ°ΠΊΠ΅Ρ Ρ Π΄Π°Π½Π½ΠΈ
{
//Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΡΠ°Π΄ΠΈΠΎΡΠΎ (Π² ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° recievedData)
Serial.println(recievedData);
}
//ΠΏΡΠΈΠΌΠ΅ΡΠ½Π° ΡΠΈΡΡΠ°ΡΠΈΡ Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ Ρ Π΄Π°Π½Π½ΠΈ
ccTest++;
if (ccTest == 9999)
{
sendDataPacket(String(ccTest)); //ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ ΠΏΠ°ΠΊΠ΅Ρ Ρ Π΄Π°Π½Π½ΠΈ ΠΏΡΠΈ ccTest ΡΠ°Π²Π½o Π½Π° 9999
ccTest = 0;
}
//ΠΊΡΠ°ΠΉ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ° Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ Ρ Π΄Π°Π½Π½ΠΈ
}
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΈΠ·ΡΠ°ΡΠ°Π½Π΅ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ:
void sendDataPacket(String dataToSend) //ΡΡΠΊΡΠΈΡ Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ Π΄Π°Π½Π½ΠΈ
{
radio.stopListening();
Serial.println("Tx:" + dataToSend;
int str_len = dataToSend.length() + 1;
char text[str_len];
dataToSend.toCharArray(text, str_len);
radio.openWritingPipe(pipe);
radio.write(&text, sizeof(text));
delay(10);
radio.openReadingPipe(1, pipe);
radio.openReadingPipe(0, 0ULL);
radio.startListening();
}
String NRF24Listener()
{
String result = "";
if ( radio.available() )
{
// Π§Π΅ΡΠ΅ΠΌ Π΄ΠΎΠΊΠ°ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ΅Π»ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
bool done = false;
while (!done)
{
// Fetch the data payload
char text[32] = {0};
done = radio.read(&text, sizeof(text));
result = text;
}
}
}