1. ΠΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ° Π΄Π½Π΅Π²Π΅Π½ ΡΠ΅Π΄ Π±Π΅ΡΠ΅ Π·Π°Π΄Π°ΡΠ°ΡΠ° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π΅Π½ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π·Π° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ° nrf52832 Ρ Π΄Π²Π° ΠΏΠΎΠ»ΡΠΌΠΎΡΡΠΎΠ²ΠΈ ΠΊΠΈΡΠ°ΠΉΡΠΊΠΈ ΡΠ΅Π½Π·ΠΎΠ΄Π°ΡΡΠΈΠΊΠ°.
ΠΠ°Π΄Π°ΡΠ°ΡΠ° ΡΠ΅ ΠΎΠΊΠ°Π·Π° Π½Π΅Π»Π΅ΠΊΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π±ΡΡ ΠΈΠ·ΠΏΡΠ°Π²Π΅Π½ ΠΏΡΠ΅Π΄ Π»ΠΈΠΏΡΠ° Π½Π° ΠΊΠ°ΠΊΠ²Π°ΡΠΎ ΠΈ Π΄Π° Π΅ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠΎ-Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π΅ βΠΊΠΎΡΠ΅Π½ΡΡ Π½Π° Π·Π»ΠΎΡΠΎβ Π΄Π° Π΅ Π² SDK ΠΎΡ ΡΠ°ΠΌΠΈΡ Nordic Semiconductor - ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅, Π½ΡΠΊΠΎΠΈ ΠΈΠ·Π»ΠΈΡΡΡΠΈ ΠΈ ΠΎΠ±ΡΡΠΊΠ²Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ. Π’ΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ° Π²ΡΠΈΡΠΊΠΎ ΠΎΡ Π½ΡΠ»Π°ΡΠ°.
ΠΠΈΡΠ»Ρ, ΡΠ΅ ΡΠ°Π·ΠΈ ΡΠ΅ΠΌΠ° Π΅ Π΄ΠΎΡΡΠ° Π°ΠΊΡΡΠ°Π»Π½Π° Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ°ΠΊΡΠ°, ΡΠ΅ ΡΠΎΠ·ΠΈ ΡΠΈΠΏ ΠΈΠΌΠ° BLE ΡΡΠ΅ΠΊ ΠΈ ΡΡΠ» Π½Π°Π±ΠΎΡ ΠΎΡ βΠ΅ΠΊΡΡΡΠΈβ Π·Π° Π΅Π½Π΅ΡΠ³ΠΎΡΠΏΠ΅ΡΡΡΠ²Π°Ρ ΡΠ΅ΠΆΠΈΠΌ. ΠΠΎ Π½ΡΠΌΠ° Π΄Π° Π½Π°Π²Π»ΠΈΠ·Π°ΠΌ ΡΠ²ΡΡΠ΄Π΅ Π΄ΡΠ»Π±ΠΎΠΊΠΎ Π² ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠ°ΡΠ° ΡΠ°ΡΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠΎ ΡΠ°Π·ΠΈ ΡΠ΅ΠΌΠ° ΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΈ.
2. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΠ΅Π»ΡΠ·ΠΎ:
- Adafruit Feather nRF52 Bluefruit LE (ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΠΎΠΊΠ°Π·Π° ΠΏΠΎΠ΄ ΡΡΠΊΠ°)
- HX711 ADC
- ΠΠΈΡΠ°ΠΉΡΠΊΠΈ ΡΠ΅Π½Π·ΠΎΠ΄Π°ΡΡΠΈΡΠΈ 2Π±Ρ. (50x2 ΠΊΠ³)
- ΠΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠΎΡ 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 ΞΌs.
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 ΞΌs, ΠΊΠΎΠ³Π°ΡΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ½Π΅ ΡΡΠ±ΠΈΡΠΈΠ΅ Π·Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅, ΠΈ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π²ΠΊΠ»ΡΡΠ²Π°ΠΌΠ΅ ΠΌΠΎΠ΄ΡΠ»Π° 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 ΞΌs. ΠΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°ΠΌΠ΅ ΡΠ΅ ΠΎΡ Π½Π΅ΡΠ΅ΡΠ½ΠΈ ΠΈΠΌΠΏΡΠ»ΡΠΈ (ΠΏΠΎ Π½Π°ΡΠ°ΡΡΠ²Π°ΡΠΈΡ ΡΡΠΎΠ½Ρ) ΠΈ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, ΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΡ Π±ΡΠΎΠΉ Π΅ Π½Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 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 s (ΡΠΎΠ²Π° Π΅ ΠΏΠΎ Π²Π°ΡΠ° ΠΏΡΠ΅ΡΠ΅Π½ΠΊΠ°) ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ HX711 Π² ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠ°, ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π°ΠΉΠΊΠΈ ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½Π΅ Π½Π° Π»ΠΈΠ½ΠΈΡΡΠ° DOUT.
ΠΠΌΠ° ΠΎΡΠ΅ Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ°, ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΠ΅ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Ρ ΡΡΠ΅Π· UART (ΡΠΊΠΎΡΠΎΡΡ Π½Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ 115200, TX - 6 ΠΏΠΈΠ½Π°, RX - 8 ΠΏΠΈΠ½Π°) Π²ΡΠΈΡΠΊΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ° Π² sdk_config.h
ΠΠ°Π½Π½ΠΈ
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π½Π° Π²ΡΠΈΡΠΊΠΈ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΡΠΎ, Π½Π°Π΄ΡΠ²Π°ΠΌ ΡΠ΅ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ ΡΠ΅Π½Π½ΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΊΠ°ΠΌ Π΄Π° ΠΊΠ°ΠΆΠ°, ΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ Nordic ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, Π΅ Π΄ΠΎΡΡΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° Π΅Π½Π΅ΡΠ³ΠΈΠΉΠ½Π°ΡΠ° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡ.
PS
ΠΡΠΎΠ΅ΠΊΡΡΡ Π²ΡΠ΅ ΠΎΡΠ΅ Π΅ Π² ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ Π°ΠΊΠΎ ΡΠ°Π·ΠΈ ΡΠ΅ΠΌΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΈΠ½ΡΠ΅ΡΠ΅Ρ, Π² ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΠΌ Π΄Π° ΠΎΠΏΠΈΡΠ° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° Π·Π° ΠΊΠ°Π»ΠΈΠ±ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π½Π·ΠΎΡΠΈ Π·Π° ΡΠ΅Π³Π»ΠΎ, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° BLE ΡΡΠ΅ΠΊΠ°.
ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ
ΠΠΎΠ΄ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° -
ΠΠΈΡΡ Ρ Π΄Π°Π½Π½ΠΈ Π·Π° HX711 Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ Π΅Π·ΠΈΠΊ -
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΠ΅Π½Π·ΠΎΠ΄Π°ΡΡΠΈΡΠΈ
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com