1. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ° ΠΏΠΎΠ²Π΅ΡΡΠΊΠ΅ Π΄Π½Ρ ΡΡΠΎΡΠ»Π° Π·Π°Π΄Π°ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ° nrf52832 Ρ Π΄Π²ΡΠΌΡ ΠΏΠΎΠ»ΡΠΌΠΎΡΡΠΎΠ²ΡΠΌΠΈ ΠΊΠΈΡΠ°ΠΉΡΠΊΠΈΠΌΠΈ ΡΠ΅Π½Π·ΠΎΠ΄Π°ΡΡΠΈΠΊΠ°ΠΌΠΈ.
ΠΠ°Π΄Π°ΡΠ° ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ Π½Π΅ ΠΏΡΠΎΡΡΠΎΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ΠΌ ΠΊΠ°ΠΊΠΎΠΉ β Π»ΠΈΠ±ΠΎ Π²Π½ΡΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠ΅ΡΠΎΡΡΠ½Π΅Π΅, ΡΡΠΎ Β«ΠΊΠΎΡΠ΅Π½Ρ Π·Π»Π°Β» Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ°ΠΌΠΎΠΌ SDK ΠΎΡ Nordic Semiconductor β ΡΡΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΉ, Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΡΡΡ ΠΈ Π·Π°ΠΏΡΡΠ°Π½Π½ΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°. ΠΡΠΈΡΠ»ΠΎΡΡ ΠΏΠΈΡΠ°ΡΡ Π²ΡΠ΅ Ρ Π½ΡΠ»Ρ.
Π― Π΄ΡΠΌΠ°Ρ ΡΡΠ° ΡΠ΅ΠΌΠ° Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π°ΠΊΡΡΠ°Π»ΡΠ½Π° ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ BLE ΡΡΠ΅ΠΊΠΎΠΌ ΠΈ ΡΠ΅Π»ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ βΠ²ΠΊΡΡΠ½ΡΡΠ΅ΠΊβ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ½Π΅ΡΠ³ΠΎΡΠ±Π΅ΡΠ΅ΠΆΠ΅Π½ΠΈΡ. ΠΠΎ Π² ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΡΡ ΡΠ°ΡΡΡ Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠ³Π»ΡΠ±Π»ΡΡΡΡΡ Π½Π΅ Π±ΡΠ΄Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π΅ΠΌΠ°Π»ΠΎ ΡΡΠ°ΡΠ΅ΠΉ.
2. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΠ΅Π»Π΅Π·ΠΎ:
- Adafruit Feather nRF52 Bluefruit LE (ΡΠΎ ΡΡΠΎ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ ΠΏΠΎΠ΄ ΡΡΠΊΠΎΠΉ)
- ΠΠ¦Π HX711
- ΠΠΈΡΠ°ΠΉΡΠΊΠΈΠ΅ ΡΠ΅Π½Π·ΠΎΠ΄Π°ΡΡΠΈΠΊΠΈ 2 ΡΡ. (50Ρ 2 ΠΊΠ³)
- ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΡΠΎΡ ST-LINK V2
Π‘ΠΎΡΡ:
- IDE VSCODE
- NRF SDK 16
- OpenOCD
- ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΡΠΎΡ ST-LINK V2
ΠΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄ΡΠ°ΠΌΠ°Π½ΠΈΡΡ Makefile (ΡΠΊΠ°Π·Π°ΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π°ΡΠ΅Π³ΠΎ SDK).
3. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°
ΠΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ GPIOTE ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠ΅ΠΉ ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π·Π°Π΄Π°Ρ ΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ PPI ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΈ Π² Π΄ΡΡΠ³ΡΡ Π±Π΅Π· ΡΡΠ°ΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
ret_code_t err_code;
err_code = nrf_drv_gpiote_out_init(PD_SCK, &config);//Π½Π°ΡΡΡΠ°Π΅Π²Π°Π΅ΠΌ Π½Π° Π²ΡΡ
ΠΎΠ΄
nrf_drv_gpiote_out_config_t config = GPIOTE_CONFIG_OUT_TASK_TOGGLE(false);//Π±ΡΠ΄Π΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π΅ΡΠ³ΠΈΠ²Π°ΡΡ ΠΏΠΈΠ½ Π΄Π»Ρ ΠΈΠΌΠΏΡΠ»ΡΡΠ°
err_code = nrf_drv_gpiote_out_init(PD_SCK, &config);//Π½Π°ΡΡΡΠ°Π΅Π²Π°Π΅ΠΌ Π½Π° Π²ΡΡ
ΠΎΠ΄
ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Π»ΠΈΠ½ΠΈΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ PD_SCL Π½Π° Π²ΡΡ ΠΎΠ΄ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ 10 ΠΌΠΊΡ.
nrf_drv_gpiote_in_config_t gpiote_config = GPIOTE_CONFIG_IN_SENSE_HITOLO(false);// ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ ΡΡΠΎΠ²Π½Ρ Ρ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ Π½Π° Π½ΠΈΠ·ΠΊΠΈΠΉ
nrf_gpio_cfg_input(DOUT, NRF_GPIO_PIN_NOPULL);// Π½Π° Π²Ρ
ΠΎΠ΄ Π±Π΅Π· ΠΏΠΎΠ΄ΡΡΠΆΠΊΠΈ
err_code = nrf_drv_gpiote_in_init(DOUT, &gpiote_config, gpiote_evt_handler);
static void gpiote_evt_handler(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action)
{
nrf_drv_gpiote_in_event_disable(DOUT);//ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅
nrf_drv_timer_enable(&m_timer0);//Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠΌΠ΅Ρ
}
ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Π»ΠΈΠ½ΠΈΡ Π΄Π°Π½Π½ΡΡ DOUT Π΄Π»Ρ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ HX711, ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ°ΠΉΠΌΠ΅Ρ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΠΈΡ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ PD_SCL .
err_code = nrf_drv_ppi_channel_alloc(&m_ppi_channel1);
APP_ERROR_CHECK(err_code);
err_code = nrf_drv_ppi_channel_assign(m_ppi_channel1, nrf_drv_timer_event_address_get(&m_timer0, NRF_TIMER_EVENT_COMPARE0), nrf_drv_gpiote_out_task_addr_get(PD_SCK));// ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠΌΠ΅Ρ ΠΊ Π²ΡΡ
ΠΎΠ΄Ρ
APP_ERROR_CHECK(err_code);
err_code = nrf_drv_ppi_channel_enable(m_ppi_channel1);// Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΊΠ°Π½Π°Π»
APP_ERROR_CHECK(err_code);
nrf_drv_gpiote_out_task_enable(PD_SCK);
// Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ gpiote
ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ PPI ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ ΠΊΠΎΠΌΠΌΡΡΠΈΡΡΠ΅ΠΌ Π½Π°Ρ ΡΠ°ΠΉΠΌΠ΅Ρ ΠΊ Π²ΡΡ ΠΎΠ΄Ρ PD_SCL, Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ 10ΠΌΠΊΡ ΠΏΡΠΈ Π½Π°ΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ GPIOTE ΠΌΠΎΠ΄ΡΠ»Ρ.
nrf_drv_timer_config_t timer_cfg = NRF_DRV_TIMER_DEFAULT_CONFIG;// ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
timer_cfg.frequency = NRF_TIMER_FREQ_1MHz;// ΡΠ°ΠΊΡΠΈΡΡΠ΅ΠΌ Π½Π° ΡΠ°ΡΡΠΎΡΠ΅ 1ΠΠ³Ρ
ret_code_t err_code = nrf_drv_timer_init(&m_timer0, &timer_cfg, timer0_event_handler);
APP_ERROR_CHECK(err_code);
nrf_drv_timer_extended_compare(&m_timer0,
NRF_TIMER_CC_CHANNEL0,
nrf_drv_timer_us_to_ticks(&m_timer0,
10),
NRF_TIMER_SHORT_COMPARE0_CLEAR_MASK,
true);// ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠ°ΠΉΠΌΠ΅Ρ ΠΈ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ.
if(m_counter%2 != 0 && m_counter<=48){
buffer <<= 1;// ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΡΠΈΡΠ°Π½Π½ΡΡ
Π΄Π°Π½ΡΡ
c_counter++;// ΡΡΠ΅ΡΡΠΈΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ²
if(nrf_gpio_pin_read(DOUT))buffer++;//ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π²Ρ
ΠΎΠ΄Π°
}
Π‘Π°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΠ°. ΠΠ΅ΡΠΈΠΎΠ΄ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 20 ΠΌΠΊΡ. ΠΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ Π½Π΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΈΠΌΠΏΡΠ»ΡΡΡ (ΠΏΠΎ Π²ΠΎΡΡ ΠΎΠ΄ΡΡΠ΅ΠΌΡ ΡΡΠΎΠ½ΡΡ) ΠΈ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 24, Π° ΡΠΎΠ±ΡΡΠΈΠΉ β 48. ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½Π΅ΡΠ΅ΡΠ½ΠΎΠΌ ΡΠΎΠ±ΡΡΠΈΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ DOUT
ΠΠ· Π΄Π°ΡΠ°ΡΠΈΡΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 25, ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΡ ΡΡΠΈΠ»Π΅Π½ΠΈΡ 128 (Π² ΠΊΠΎΠ΄Π΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» 25 ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ²), ΡΡΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ 50 ΡΠΎΠ±ΡΡΠΈΡΠΌ ΡΠ°ΠΉΠΌΠ΅ΡΠ°, ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ° Π΄Π°Π½Π½ΡΡ .
++m_counter;// ΡΡΠ΅ΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ
if(m_counter==50){
nrf_drv_timer_disable(&m_timer0);// ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠΌΠ΅Ρ
m_simple_timer_state = SIMPLE_TIMER_STATE_STOPPED;//
buffer = buffer ^ 0x800000;
hx711_stop();//jΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ hx711
}
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠΌΠ΅Ρ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ (ΠΏΠΎ Π΄Π°ΡΠ°ΡΠΈΡΡ) ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌ HX711 Π² ΡΠ΅ΠΆΠΈΠΌ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΡΠ½Π΅ΡΠ³ΠΎΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ.
static void repeated_timer_handler(void * p_context)
{
nrf_drv_gpiote_out_toggle(LED_2);
if(m_simple_timer_state == SIMPLE_TIMER_STATE_STOPPED){
hx711_start();// Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ hx711
nrf_drv_gpiote_out_toggle(LED_1);
m_simple_timer_state = SIMPLE_TIMER_STATE_STARTED;
}
}
/**@brief Create timers.
*/
static void create_timers()
{
ret_code_t err_code;
// Create timers
err_code = app_timer_create(&m_repeated_timer_id,
APP_TIMER_MODE_REPEATED,
repeated_timer_handler);
APP_ERROR_CHECK(err_code);
}
ΠΠΆΠΈΠ΄Π°Π΅ΠΌ ΡΠΎΠ±ΡΡΠΈΡ ΠΎΡ RTC ΡΠ°ΠΉΠΌΠ΅ΡΠ° Ρ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠΌ Π² 10 Ρ (ΡΡΡ ΡΠΆΠ΅ Π½Π° Π²Π°ΡΠ΅ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅) Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ HX711, Π²ΡΠ·ΡΠ²Π°Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π»ΠΈΠ½ΠΈΠΈ DOUT.
ΠΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ, Π»ΠΎΠ³ΠΈ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΡΠ΅ΡΠ΅Π· UART (baud rate 115200, TX β 6 ΠΏΠΈΠ½, RX β 8 ΠΏΠΈΠ½) Π²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² sdk_config.h
ΠΡΠ²ΠΎΠ΄Ρ
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π²ΡΠ΅ΠΌ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π½Π°Π΄Π΅ΡΡΡ ΡΡΠ° ΡΡΠ°ΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈ ΡΠΎΠΊΡΠ°ΡΠΈΡ Π΄ΡΠ°Π³ΠΎΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΏΠΎΠΈΡΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². Π₯ΠΎΡΡ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Nordic Π² ΡΠ²ΠΎΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ½Π΅ΡΠ³ΠΎΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ.
P.S.
ΠΡΠΎΠ΅ΠΊΡ Π΅ΡΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΡΡΠ° ΡΠ΅ΠΌΠ° Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΎΠΏΠΈΡΠ°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠΈ Π΄Π°ΡΡΠΈΠΊΠΎΠ² Π²Π΅ΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ BLE ΡΡΠ΅ΠΊΠ°.
ΠΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ
ΠΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ° -
ΠΠ°ΡΠ°ΡΠΈΡ Π½Π° HX711 Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ -
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΠ΅Π½Π·ΠΎΠ΄Π°ΡΡΠΈΠΊΠΎΠ²
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com